본문 바로가기

CS study

(51)
클래스로더(ClassLoader)정리 클래스로더 클래스 로더는 JVM 내로 클래스 파일(*.class)을 동적으로 로드하고, 링크를 통해 배치하는 작업을 수행하는 모듈이다. 컴파일 단계 : complier에 의해 .class 바이트코드로 파일이 변환된다. 런타임 단계 : 런타임(bytecode를 실행할 때) 이 .class 파일을 로드하고 링크한다. 즉, 런타임 단계에서 로드된 바이트 코드(.class)들을 엮어서 JVM의 메모리 영역인 Runtime Data Areas에 배치한다. 클래스를 메모리에 올리는 로딩 기능은 한번에 메모리에 올리지 않고, 어플리케이션에서 필요한 경우 동적으로 메모리에 적재하게 된다. 클래스 파일의 로딩 순서 JVM에서 클래스를 로드하고 실행하는 과정은 크게 로딩(Loading), 링크(Linking), 초기화(I..
함수형 프로그래밍 패러다임 Lambda와 Stream을 다루면서, 이것을 잘 활용할 수 있는 함수형 프로그래밍의 개념도 같이 정리해보고자 한다. https://csg1353.tistory.com/213 람다(Lambda)식의 정의와 함수형 인터페이스 https://www.youtube.com/watch?v=4ZtKiSvZNu4 먼저 해당 포스팅은 다음 유튜브 설명을 참조했음을 미리 밝힌다. 이해에 큰 도움이 되니 확인해보길 권장한다. 기초 개념 자바에서 람다 표현식과 스트림 API는 csg1353.tistory.com https://csg1353.tistory.com/214 함수형 프로그래밍이 뭔가요? 사전적 개념 함수형 프로그래밍(Functional Programming, FP)은 프로그래밍 패러다임 중 하나로, 계산을 수학적 ..
람다(Lambda)식의 정의와 함수형 인터페이스, 메서드 참조 https://www.youtube.com/watch?v=4ZtKiSvZNu4 먼저 해당 포스팅은 다음 유튜브 설명을 참조했음을 미리 밝힌다. 이해에 큰 도움이 되니 먼저 확인해보길 권장한다. 이후 시간이 된다면 스트림 포스팅 역시 확인하면 도움이 될 것이다. https://csg1353.tistory.com/214 기초 개념 자바에서 람다 표현식과 스트림 API는 코드를 더 간결하고 명료하게 만들어주는 강력한 기능이다. 람다 표현식은 익명 함수의 한 형태로, 간결한 방식으로 메소드를 전달할 수 있는 기능을 제공한다. 스트림 API는 데이터 컬렉션을 선언적으로 처리할 수 있도록 해주며, 람다 표현식과 함께 사용될 때 더욱 효과적이다. 람다(Lambda) 메서드를 하나의 식으로 표현한 것 람다 (lambd..
[HikariCP][DataSource]HikariDataSource/HikariPool, 그리고 동작 과정 HikariDataSource와 HikariPool HikariDataSource HikariDataSource는 DataSource 구현체이다. HikariCP를 사용하여 DataSource를 구현할 경우, 구체적인 구현체는 이 클래스가 된다. 이렇게 구현되어, Bean 인스턴스에 들어가 관리되는 것이다. 애플리케이션의 Config를 담당하기도 한다. application.properties 또는 application.yml 파일에 커넥션 풀 관련 설정(최대 커넥션 개수, 최소 유휴 커넥션 개수 등)을 지정할 때, 이 설정들은 com.zaxxer.hikari.HikariDataSource 인스턴스를 통해 관리된다. HikariDataSource 인스턴스는 HikariCP 커넥션 풀의 구성과 상태 관리를..
[DataSource]HikariCP DataSource 연동 과정 및 구현체 https://www.javadoc.io/doc/com.zaxxer/HikariCP/latest/com.zaxxer.hikari/com/zaxxer/hikari/package-summary.html com.zaxxer.hikari package summary - HikariCP 5.1.0 javadoc Latest version of com.zaxxer:HikariCP https://javadoc.io/doc/com.zaxxer/HikariCP Current version 5.1.0 https://javadoc.io/doc/com.zaxxer/HikariCP/5.1.0 package-list path (used for javadoc generation -link option) https://javadoc..
[디자인 패턴]프록시(Proxy) 패턴 설명과 예시 https://refactoring.guru/ko/design-patterns/proxy 프록시 패턴 / 디자인 패턴들 / 구조 패턴 프록시 패턴 다음 이름으로도 불립니다: Proxy 의도 프록시는 다른 객체에 대한 대체 또는 자리표시자를 제공할 수 있는 구조 디자인 패턴입니다. 프록시는 원래 객체 refactoring.guru 개요 프록시 패턴은 구조 패턴의 하나로, 어떤 객체에 대한 접근을 제어하는 대리인(프록시) 객체를 두어 직접적인 접근을 방지하는 패턴이다. 이 패턴은 실제 서비스 객체의 참조를 감싸는 프록시 객체를 생성하여, 클라이언트가 서비스 객체에 접근할 때 프록시 객체를 통해 간접적으로 접근하게 만든다. 프록시 패턴은 접근 제어, 비용이 많이 드는 연산의 지연 실행, 원격 객체의 접근 등 ..
3주차 - 랜덤I/O, 순차 I/O와 인덱스, B+Tree, B-Tree 질문 1. 랜덤 I/O와 순차 I/O에 대해서 설명해주세요. 랜덤 I/O vs 순차 I/O 랜덤 I/O는 디스크에서 비연속적인 위치에 있는 데이터를 읽는 방식이며, 순차 I/O는 데이터를 연속적인 순서로 읽는 방식이다. - 당연하게도 순차 I/O가 더 빠르다. (디스크 상의 연속적인 위치에 저장) - 데이터베이스 시스템에서는 종종 랜덤 I/O가 필요하다. 데이터베이스에는 다양한 쿼리가 수행되며, 이 쿼리들은 테이블의 여러 위치에 저장된 데이터를 요구하기 때문. 특히 인덱스 검색이나 특정 조건에 맞는 레코드 검색과 같은 작업에서 랜덤 I/O가 필수적이다. - 인덱스 레인지 스캔은 데이터를 읽기 위해 주로 랜덤 I/O를 사용하며, 풀 테이블 스캔은 순차 I/O를 사용한다. 2. 인덱스에 대해서 설명해주세요...
DataBase 2주차 정리 - SQL, DDL, DML, DCL, JOIN, 쿼리 순서 질문 1. SQL에 대해서 설명해주세요. C언어와 같은 프로그래밍 언어와 어떤차이가 있나요? 특정 어휘와 특정 구문을 갖는 프로그래밍 언어의 정의를 고려하면 SQL은 프로그래밍 언어라고 할 수 있다. 그러나 범용 사용이 가능한 GPL(General Purpose Language)보다는 실제로는 DSL(Domain-Specific Language) 에 가깝다. SQL은 데이터베이스 관리 및 데이터 조작을 위해 설계된 특수 목적 언어(Domain-Specific Language, DSL)이다. 이 언어는 데이터를 저장, 검색, 수정, 삭제하는 등의 기능을 제공한다. SQL과 DSL SQL은 프로그래밍 언어의 일반적 정의에 부합한다. 특정 어휘와 구문을 사용하며, 명령을 실행할 수 있기 때문이다. 그러나 일반..