2023/09/09 13

[F-Lab 페이백 모각코 64일차] 자바 컴파일 과정

자바 컴파일 과정 소스 작성 컴파일 문법검사 어휘 분석 토근 예약어 자바에서 미리 정의된 키워드들입니다 (예: class, if, while 등) 식별자 변수, 메소드, 클래스 등의 이름입니다. 리터럴 상수 값들입니다 (예: 정수, 실수, 문자열, 불린 값 등) 연산자 수학, 관계, 논리 등의 연산자입니다 (예: +, -, *, /, ==, !=, &&, || 등). 구분자 코드의 구조를 나타내는 문자들입니다 (예: 괄호, 중괄호, 세미콜론 등). 자바 코드 예제: java Copy code public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } 이 코드에서 추출되는 ..

[F-Lab 페이백 모각코 63일차] 클래스 로더 (Class Loader)

Class Loader 계층 구조 부트스트랩 클래스 로더 (Bootstrap Class Loader) 확장 클래스 로더 (Extension Class Loader) 애플리케이션 클래스 로더 (Application Class Loader) 로딩 클래스 로더가 해당 클래스의 바이트코드를 찾아 메모리에 로드합니다. 이 과정에서 클래스 로더 계층 구조를 따르며, 로드된 클래스는 메소드 영역에 저장됩니다. 로딩순서 애플리케이션 클래스 로더 (Application Class Loader) 확장 클래스 로더 (Extension Class Loader →Platform ClassLoader(Java9부터)) 부트스트랩 클래스 로더 (Bootstrap Class Loader) 연결 검증 형식 검사: 클래스 파일의 매직 ..

[F-Lab 페이백 모각코 62일차] SQL join 사용예제 (inner, left, right, outer,full)

Join 별 개념 이미지 아래는 CHATGTP4로 생성한 답안입니다. Q.join 사용 예제에 대해 알려줘 left right outer inner full 경우를 알려줘 ㅎ A. 데이터베이스의 JOIN에 대한 사용 예제를 아래에 작성하였습니다. 이 예제에서는 두 개의 테이블 Employees와 Departments를 사용하며, 각각은 아래와 같은 데이터를 포함하고 있습니다. Employees 테이블: EmployeeID Name DepartmentID 1 Kim 1 2 Lee 2 3 Park NULL 4 Choi 4 Departments 테이블: DepartmentID DepartmentName 1 Sales 2 Marketing 3 HR 5 Engineering INNER JOIN:위의 쿼리는 각 직..

[F-Lab 페이백 모각코 61일차] 소프트웨어 테스팅

소프트웨어 테스팅: 단위/통합/시스템/인수/회귀 1. 단위 테스트 (Unit Testing) 정의: 개별 코드 조각, 함수 또는 메서드와 같은 프로그램의 가장 작은 단위를 테스트합니다. 목적: 코드의 각 부분이 올바르게 작동하는지 확인합니다. 도구: JUnit, NUnit, TestNG 등 2. 통합 테스트 (Integration Testing) 정의: 개별 단위들이 통합될 때 올바르게 작동하는지 확인하는 테스팅입니다. 목적: 모듈 간의 상호작용 문제를 찾아내기 위함입니다. 도구: JUnit, TestNG, Postman (API 테스팅) 등 3. 시스템 테스트 (System Testing) 정의: 완성된 소프트웨어 시스템의 전체 기능과 비기능을 테스트합니다. 목적: 소프트웨어가 전체적으로 요구 사항을 ..

[F-Lab 페이백 모각코 60일차] 토큰 기반 인증: JWT

JWT (JSON Web Token)란? JWT는 JSON Web Token의 약자로, 두 개체 사이에서 정보를 안전하게 전송하기 위한 컴팩트하고 독립적인 방법을 제공하는 표준입니다 (RFC 7519). 주로 인증 및 정보 교환에 사용됩니다. JWT의 구성 JWT는 세 부분으로 구성됩니다: Header (헤더): 토큰의 유형 (JWT) 및 사용된 해싱 알고리즘 (예: HMAC SHA256 또는 RSA)을 포함하는 메타데이터를 담고 있습니다. Payload (페이로드): 실제 토큰의 내용을 포함합니다. 이 부분에는 클레임(claim)이라는 정보 단위가 포함되며, 사용자의 정보나 권한과 같은 것들을 나타냅니다. Signature (서명): 서명은 헤더와 페이로드를 암호화하는데 사용됩니다. 이 서명을 통해 토..

[F-Lab 페이백 모각코 59일차] OAuth2 인증 절차

OAuth 2.0 "OAuth 2.0"은 "Open Authorization 2.0"의 줄임말입니다. Open: 이는 프로토콜이 공개적으로 사용할 수 있다는 것을 의미합니다. 즉, 누구나 이 프로토콜을 사용하여 자신의 서비스나 애플리케이션에 적용할 수 있습니다. Authorization: 인증이 아닌 권한 부여를 의미합니다. OAuth는 사용자 대신 클라이언트가 리소스에 접근할 수 있도록 권한을 부여하는 방식으로 작동합니다. 인증(Authentication)은 사용자의 정체성을 확인하는 과정이며, 권한 부여(Authorization)는 특정 작업을 수행할 수 있는 권한을 부여하는 과정입니다. 2.0: 이는 OAuth 프로토콜의 두 번째 주요 버전임을 나타냅니다. 처음에는 OAuth 1.0이 있었으나 여러..

[F-Lab 페이백 모각코 58일차] 스프링 JPA 영속성 컨텍스트란?

스프링 JPA 영속성 컨텍스트란? 스프링 JPA의 영속성 컨텍스트는 엔터티를 영구 저장하는 환경을 의미합니다. JPA는 데이터베이스와의 통신에서 발생하는 많은 작업과 변환 작업을 담당하며, 이러한 작업들은 대부분 영속성 컨텍스트 내에서 처리됩니다. 영속성 컨텍스트의 주요 특징 및 기능은 다음과 같습니다: 1차 캐시: 영속성 컨텍스트는 내부에 1차 캐시를 가지고 있어서, 데이터베이스에서 데이터를 가져올 때 해당 데이터를 캐시에 저장합니다. 동일한 데이터를 다시 조회하려고 할 때는 캐시에서 가져와서 데이터베이스와의 불필요한 통신을 줄입니다. 영속 상태의 엔터티 관리: 영속성 컨텍스트에 저장된 엔터티는 '영속 상태'에 있습니다. 이 상태의 엔터티는 변경 감지(Dirty Checking) 기능을 통해 엔터티의 ..

[F-Lab 페이백 모각코 57일차] 스프링에서 생성자 주입을 권장하는 이유

스프링에서 생성자 주입을 권장하는 이유 스프링 프레임워크에서 생성자 주입을 권장하는 이유에는 여러 가지가 있습니다. 주요한 이유들은 다음과 같습니다: 불변성(Immutability): 필드 주입이나 세터 주입을 사용하면, 객체가 생성된 후에도 해당 필드의 값이 변경될 가능성이 있습니다. 반면, 생성자 주입을 사용하면 모든 필요한 의존성이 객체 생성 시점에 한 번에 주입되므로, 이후에 변경될 위험이 없습니다. 이러한 불변성은 객체의 안정성을 보장하며, 동시성 이슈를 줄이는 데에도 도움이 됩니다. 의존성 명시적 표현: 생성자의 매개변수로 주입되는 의존성들은 해당 클래스가 정상적으로 동작하기 위해 필요한 의존성들임을 명확히 나타냅니다. 세터나 필드 주입의 경우, 어떤 의존성이 필수적이고 어떤 것이 선택적인지 ..

[F-Lab 페이백 모각코 56일차] (SQL) 관리 구문

DML INSERT: 데이터베이스 테이블에 새로운 레코드를 추가하는 명령어입니다. UPDATE: 데이터베이스 테이블에 있는 기존 레코드를 수정하는 명령어입니다. DELETE: 데이터베이스 테이블에서 레코드를 삭제하는 명령어입니다. MER: 데이터베이스 테이블의 두 개 이상의 레코드를 조인하여 새로운 레코드를 만드는 명령어입니다. TCL: 트랜잭션 제어 언어로, 데이터베이스 트랜잭션을 제어하는 명령어입니다. 트랜잭션의 특징 원자성: 트랜잭션 내의 모든 명령어가 반드시 수행되거나, 모두 수행되지 않아야 합니다. 일관성: 트랜잭션이 실행 전과 실행 후의 상태가 항상 일관성 있어야 합니다. 고립성: 트랜잭션 실행 도중에 다른 트랜잭션의 영향을 받지 않아야 합니다. 지속성: 트랜잭션이 실행을 마친 후에도 그 결과..

[F-Lab 페이백 모각코 55일차] (SQL) SQL 활용

서브쿼리 (Subquery) SELECT 절: 메인 쿼리에서 서브쿼리를 이용하여 특정 값을 조회하는 방법입니다. FROM 절: 서브쿼리를 이용하여 메인 쿼리에서 조회할 데이터를 선택하는 방법입니다. WHERE 절, HAVING 절: 서브쿼리를 이용하여 조건을 만족하는 데이터를 조회하는 방법입니다. 스칼라 서브쿼리(Scalar Subquery): 서브쿼리에서 하나의 값을 반환하는 경우를 말합니다. 인라인 뷰 (Inline View): 서브쿼리를 이용하여 새로운 가상 테이블을 생성하여 메인 쿼리에서 사용하는 방법입니다. 중첩 서브쿼리 (Nested Subquery): 서브쿼리 안에 또 다른 서브쿼리를 중첩하여 사용하는 방법입니다. 뷰 (View) 뷰는 하나 이상의 테이블에서 데이터를 가져와 가상의 테이블을 ..