목록Programming (58)
Be ready to study forever - 개발자 꿈나무
운영체제의 역할 운영체제는 크게 두가지 역할을 함 1. 하드웨어 컨트롤 - CPU, Memory, Storage, Input & Output device 등을 제어함 2. 응용프로그램에게 리소스(CPU, Memory등)을 할당, 분배함 운영체제의 구조 System Call – 운영체제의 제어 기능을 응용프로그램이나 쉘에서도 사용할 수 있도록 운영체제는 시스템 콜을 제공한다. 원칙적으로 사용자 또는 응용프로그램은 직접 커널에 접근 할 수 없기 때문에 시스템 콜을 사용한다. Library API – 응용프로그램은 다양한 언어로 만들어 져 있다. Java, Python, C등은 다른 언어로 작성 되어 있기 때문에 시스템 콜을 호출하려면 각각의 언어에서 사용할 수 있도록 한번 더 해당 언어로 감싸야 한다. 이렇..
1. build.gradle에 dependancies 추가 dependencies{ //... implementation 'org.springframework.boot:spring-boot-starter-security'//스프링 시큐리티 implementation 'io.jsonwebtoken:jjwt-api:0.10.7'//jjwt runtime 'io.jsonwebtoken:jjwt-impl:0.10.7'//jjwt runtime 'io.jsonwebtoken:jjwt-jackson:0.10.7'//jjwt } 2. JWT를 생성 및 조회할 클래스를 생성한다 추후에 필터나 로그인 후에 발행할 때 사용 public class JwtUtil { private Key key; public JwtUtil(..
1. 동기/ 비동기란? 동기(Synchronized)란 쉽게 설명해서 프로그램이 작성된 순서대로 실행되는 것으로 A, B, C 순서로 함수가 작성되어 있다면 함수는 반드시 A, B, C순서대로 A의 동작이 끝나면 B함수가 실행되고, B가 끝나면 C함수가 동작하는 것을 동기적 실행이라고 할 수 있다. //예제코드 function firstFunction(){ //내용내용 console.log(1); } function secondFunction(){ //내용내용 console.log(2); } function ThirdFunction(){ //내용내용 console.log(3); } firstFunction(); secondFunction(); ThirdFunction(); firstFunction( ) ..
Annotation 주석처럼 프로그램에 별다른 영향을 미치지 않지만 추가적인 정보를 달아 유용한 정보를 제공한다. @interface 와 같은 형태를 하고 있으며 컴파일시에 추가적인 정보를 전달하여 .class 파일에 적용된다. 1. 어노테이션 개요 1.2. 표준 어노테이션 @Override 메서드 앞에 붙어 상속받은 클래스에서 오버라이드를 제대로 했는지 체크해주는 어노테이션이다. 오버라이드한 메서드에 @Override를 붙이면 상속해주는 클래스에 이름이 같은 메서드가 있는지 확인하고 없는경우 오류를 발생시킨다. 오버라이드 할경우 @Override어노테이션이 필수는 아니지만 실수를 줄이기 위해 붙이는 것이 권장된다. @Deprecated 해당 어노테이션은 붙이면 메서드나 프로퍼티가 다른것으로 대체되었으니..
Enums – 열거형 상수관리를 편하게 선언하기 위해서 여러 상수를 정의할 때 사용하면 편리하다. 아래의 그림과 같이 Enum으로 한번에 관리가 가능하며 맴버에 접근할 때에는 Static 프로퍼티처럼 Kind.DIAMOND로 접근할 수 있다. 1.열거형의 조상 – java.lang.Enum 열겨형은 아래의 메소드를 상속받으므로 아래의 메소드를 호출할 수가 있다. 예제 2. 열겨형의 멤버 추가 열겨형의 상수 안에 멤버를 추가해 줄 수 있다. package com.admin.study.admin.model.enumclass; import lombok.AllArgsConstructor; import lombok.Getter; @AllArgsConstructor @Getter public enum ItemSta..
Generics Generics는 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시에 타입체크를 해주는 기능이다. 예를들면 ArrayList는 Object 타입의 모든 클래스를 담을 수 있다. 이런 과정에서 발생할 수 있는 문제는 데이터를 꺼내 올 때 타입이 다른 경우 오류를 낼 수 있는 가능성 이 있기 때문에 ArrayList arrayList = new ArrayList 과 같이 Generics를 활용해서 한가지 타입만 받을 수 있도록 한 것이다. 1. Generics의 선언 위쪽 코드의 경우 발생 할 수 있는 문제는 새 객체를 생성하면 item은 Object클래스이기 때문에 모든 타입의 매개변수를 받을 수 있다. 위에 언급한 것과 같이 이럴 경우 형변환의 문제로 인해 오류 발생 가능..
Collection Framework – Map 1.HashMap HashMap은 Key와 Value가 하나의 데이터(entry)로 묶여 저장되는 특징이 있다. 해싱기법을 사용해서 많은 양의 정보를 검색하는데 성능이 좋다. 키 값은 중복이 불가능 하지만 벨류 값은 중복이 허용된다. 또한, 저장되는 순서가 없는 것이 특징이다. HashMap은 put()메서드로 중복된 키값을 저장하려 하면 기존에 있던 키 값의 벨류 값을 덮어 쓰기하는 방식으로 작동하기 때문에 주의해야 한다. HashMap은 null값을 허용하기 때문에 주의할 것. *HashSet은 add()메서드로 저장하려 할 경우 값을 저장하지 않고 false를 반환함으로써 저장 실패를 알린다. 1.1. HashMap의 Entry HashMap은 Ent..
Collection Framework – Set 1. HashSet HashSet은 Set인터페이스를 구현한 컬렉션이므로 중복이 허용되지 않고 순서 또한 존재하지 않는다. add(Object o)메서드나 addAll(Collection c)메서드는 리턴 값을 boolean으로 하며 중복이 있어 추가되지 않으면 false를 반환한다. HashSet은 저장 순서가 없으므로 저장되는 순서를 원한다면 LinkedHashSet을 활용하면 된다. *HashSet은 내부적으로 HashMap을 이용하여 만들어졌다. 1.1. HashSet 메서드 1.2. HashSet의 과 equals( ), hashCode( ) HashSet의 Add메서드를 사용하여 인스턴스를 추가할 때 인스턴스의 객체에 equals()와 hashC..
컬렉션 프레임워크 컬렉션은 여러 개의 데이터그룹을 의미하면 프레임워크는 표준화된 프로그래밍 방식을 의미한다. 따라서, 컬렉션 프레임워크란 데이터의 집합을 표준화된 방식으로 프로그래밍을 할 수 있게 도와주는 방식으로 jdk 1.2부터 지원됨 1. 컬렉션 프레임워크 핵심 인터페이스 컬렉션 데이터는 크게 3가지의 그룹으로 나뉜다. List, Set, Map List와 Set은 공통되는 부분이 있어 Collection인터페이스를 상속받지만 Map은 그렇지 않다. 아래의 표를 보면 좀더 정확한 상속 구조를 알 수 있다. 1.1 컬렉션 프레임워크 인터페이스 메서드 1.2. List 인터페이스 메서드 1.3. Set 인터페이스 메서드 1.4. Map 인터페이스 메서드 2. ArrayList List인터페스이를 상속받..
4. Math클래스 4.1.Math클래스의 자주 쓰이는 메서드들 5. Wrapper클래스 int double등의 기본형 데이터타입을 때로는 객체로 다뤄야할 때가 있다. 이때 Wrapper클래스를 사용하게 된다. 8개의 기본형타입이 있으므로 Wrapper클래스 역시 8개의 Wrapper클래스가 존재한다. 모든Wrapper크래스들은 equals()와, toString()이 오버라이딩 되어있고 toString()메서드를 사용할 경우 String으로 반한다. 5.1. Wrapper클래스의 종류 5.2. Number클래스 기본형 데이터 타입 중에서 숫자는 모두 Number클래스의 상속을 받는다. 내부적으로는 Number클래스는 추상화 클래스로 내부적으로는 객체가 가지고 있는 값을 기본형으로 변환하는 작업을 한다...