본문 바로가기

분류 전체보기

(12)
데이터 바인딩 양방향 단방향 바인딩 설명 단방향 바인딩은 한 엔티티가 다른 엔티티를 참조하는 것으로, 다른 엔티티는 참조되는 엔티티를 알지 못한다 예를 들어, Author 엔티티가 Book 엔티티를 참조할 때 Author.java @Entity public class Author { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; // 단방향 바인딩 @ManyToOne private Book book; } Book.java @Entity public class Book { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String..
OAuth2 - authorization code grant type 설명 bearer token - 토큰을 소유한 사람에게 액세스 권한을 부여하는 일반적인 토큰 클래스 점선화살표는 redirection을 의미(요청 또는 응답 x) authorization code ≠ access token :access token은 클라이언트가 마지막에 백엔드에서 승인을 받기 위해 필요한 것(단계7) 단계4에서 authorization code 대신에 직접 access token을 주면 단계가 줄어 들 것이라고 생각할 수 있다. OAuth1에서는 단계4에서 access token을 바로 주었다 그것이 " implicit grant type"이다. 하지만 이렇게 해버리면 redirect가 쉽게 intercept될 수 있고 개인이 access token을 쉽게 얻을 수 있기 때문에 authori..
Oauth2 사용자 - Use case를 실행하려는 사람 Client - resource server에게 요청 및 응답 받음 Authorization Server - 사용자와 클라이언트 세부 정보를 관리하고 인증하도록 허용하며 권한 부여 수단으로 사용할 토큰을 제공 Resource Server - Authorization Server에게 Access Token을 부여 받은 Client가 요청을 하여 특정 Use case를 실행하거나 resource에 액세스 권한을 부여 OpenID Connect : OAuth2를 사용 할 때 일부 제약을 적용하여 OAuth2 클라이언트를 구현하는 프로토콜이다. Grant Type : 클라이언트가 토큰을 얻는 과정이다. password grant type과 implicit grant ..
MongoDB cursor 변수 저장해서 쓸 수 있는 기능 ex) var cursor = db.col3.find() 이러면 cursor만 입력해도 db.col3.find()가 실행됨 cursor에도 옵션을 더 붙힐수가 있는데 cursor.next() { _id: ObjectId("64f924f0649ac7e94c04428d"), a: 20 } 이렇게 다음 배열 값이 조회가 가능하다 cursor.toArray toArray는 내가 조회한 배열의 다음값부터 끝값까지 배열 전체를 불러온다 그리고 cursor는 10분이 지나면 자동으로 초기화가 되는데 선언시에 옵션을 주면 이 기능을 비활성화 할 수 있다. ex) var cursor = db.col3.find().noCursorTimeout() replaceOne은 홍길동이라..
프로세스 & 스레드 정리 정적 프로그램(Static Program) : 컴퓨터에서 실행 할 수 있는 파일 윈도우의 *.exe 파이이나 Mac의 *.dmg 파일등을 말 하는데 파일을 실행하지 않은 상태이기 때문에 정적 프로그램 줄여서 프로그램이라고 부른 것이다. 프로세스(Process) : 컴퓨터에서 실행중인 프로그램(동적) 프로세스는 운영체제에 의해 관리되고, 프로그램 실행을 위해 필요한 자원과 실행 상태 정보를 가지고 있다. ※ 특징 독립성: 각 프로세스는 독립된 메모리 공간을 할당받아 실행되며, 다른 프로세스의 영향을 받지 않는다. 이를 통해 한 프로세스의 오류나 비정상적인 종료가 다른 프로세스에 영향을 미치지 않도록 보장된다. 자원 할당: 프로세스는 실행을 위해 CPU 시간, 메모리, 파일, 네트워크 등의 자원을 필요로 함..
유니코드 정리 ASCII는 7비트로 구성된 문자 인코딩 체계로, 초기 컴퓨터 시스템에서 널리 사용되었다. ASCII는 총 128개의 문자를 나타낼 수 있고, 각 문자는 0~127까지의 숫자 코드로 표현된다. ASCII 코드 유니코드 : 컴퓨터에서 문자를 표현하는 국제 표준이다. 유니코드는 ASCII의 확장이고 각 문자마다 고유한 번호를 부여하는 방식으로 동작하는데, 이를 '코드 포인트' 라고 한다. 유니코드는 UTF-8,UTF-16, UTF-32 등의 인코딩 방식이 있다. UTF-8이 가장 널리 사용되는 유니코드 인코딩 방식인데 아스키 코드와의 호환성 및 가변 길이 문자 인코딩의 이점 때문에 인기가 있다. UTF - 8 : 유니코드를 8비트 단위로 나눠서 인코딩한다. ASCII 문자들은 1바이트로, 다른 문자들은 최대..
비트 연산자 정리 &(AND연산자) : 피연산자 양 쪽이 모두 1이어야 1을 얻는다 그 외에는 0을 얻는다. ex) 15 & 21 = 5 |(OR연산자) : 피연산자 중 한쪽이라도 값이 1이면 1을 얻는다 그외에는 0을 얻는다. ex) 15 | 21 = 31 ^(XOR연산자) : 피연산자 값이 서로 다를 때 1을 얻는다. 같을 때는 0을 얻는다. ex) 15^21 = 26 ~(NOT연산자) : 피연산자를 2진수로 표현했을 때 0은 1로, 1은 0으로 바꾼다. ex) ~15 = 240 2 = 25
JDK 와 JRE 정리 JRE = JVM + library Classes JDK = JRE + Developer tools JDK(Java Development Kit) : 개발자가 자바로 개발하는 데 사용되는 SDK 키트 SDK(Software Development Kit : 하드웨어 플랫폼, 운영체제 또는 프로그래밍 언어 제작사가 제공하는 툴이다. bin : 자바 개발, 실행에 필요한 도구와 유틸리티 명령 conf : 여러 종류의 패치 파일 include : 네이티브 코드 프로그래밍에 필요하는 C언어 헤더 파일 jmods : 컴파일된 모듈 파일들 legal : 각 모듈에 대한 저작권과 라이선스 파일 lib : 실행 시간에 필요한 라이브러리 클래스들 javac : 자바 컴파일러로 자바 소스를 바이트 코드로 변환 java : ..
JAVA의 특징 1. 운영체제의 종류에 상관없이 실행이 가능하기 때문에, 운영체제에 따라 프로그램을 전혀 변경하지 않고도 실행이 가능하다. 2. 객체지향개념과 C++의 장점을 채택하고 잘 사용하지않는 부분은 제외시켜서 비교적 배우기 쉽고 이해하기 쉬운 간결한 표현이 가능하게 함. 3. 풍부한 클래스 라이브러리인(Java API)를 통해 프로그래밍에 필요한 요소들을 기본적으로 제공하므로 비교적 짧은 시간에 네트워크 관련 프로그램을 쉽게 개발 할 수있도록 지원한다. 이 클래스 라이브러리만 잘 활용해도 강력한 기능의 자바 프로그램을 작성할 수 있다. 4. '가비지 컬렉터'가 자동적으로 메모리를 관리해주기 때문에 프로그래머가 메모리를 따로 관리 하지 않아도 된다. 그러므로 프로그래머가 보다 프로그래밍에 집중할 수 있게 해준다...
JVM (Java Virtual Machine) 정리 JVM은 말 그대로 자바를 실행하기 위한 가상 기계이다. OS에 의존하지 않도록 하기 위해 만들어졌다. 자바로 작성된 애플리케이션은 모두 JVM에서만 실행되기 때문에, 자바 애플리케이션을 실행하기 위해서는 반드시 JVM이 필요하다. JVM 구조 JVM은 크게 아래 4가지 구성이 있다 Class loader : 자바 바이트 코드가 담긴 클래스들을 해석하고 메모리에 적재하는 컴포넌트 런타임 환경에서 패키지안에 있는 클래스를 동적으로 로드한다. 즉, 한번에 메모리에 모든 클래스를 로드하는게 아닌 필요한 순간에 해당 클래스(.class) 파일을 찾아 메모리에 로딩해주는 역할을 한다. Interpreter : 자바 컴파일러에 의해 변환된 바이트 코드를 읽고 한 줄씩 기계어로 해석하는 역할을 한다. JIT 컴파일러..