전체 글

모르는 내용 및 아는 내용 모두 꼼꼼히 복습하여 익숙해지는 그 날까지 꾸준히 공부하겠습니다.
JAVA

[Java] Java Shutdown Hook 이란 - System.exit()

Shutdown Hook이란기존 종료 작업 방법자바 애플리케이션을 실행한 후 Ctrl + C 키를 눌러서 종료하는 경우 JVM은 스레드들이 어떤 상황에 있는지에 상관없이 스레드를 강제적으로 종료시키기 때문에 안정적으로 애플리케이션의 종료 작업을 진행할 수 없습니다. 특히, 서버 프로그램의 경우 할당한 자원이나 상태 정보 등을 서버 종료 시에 올바르게 처리해 주어야 하는데, 강제 종료를 통해서는 올바르게 처리할 수 없는 문제가 있습니다. 예를 들어 프로그램이 실행 중에 중요한 데이터를 처리하거나 파일을 열어두고 있는데, 갑자기 종료되면 그 과정이 중단되기 때문에 데이터 손상, 저장되지 않은 정보 등 여러 문제가 발생할 수 있습니다. 이러한 문제를 해결하기 위해서 Shutdown Hook 기능을 사용합니다...

개발 도서/객체 지향의 사실과 오해

[객체 지향] 객체 지향의 사실과 오해 1 장 요약 및 생각 정리 - 역할, 책임, 협력

객체란사용자들이 이용하는 서비스의 기능을 구현하기 위해 현실 세계와 유사한 상태와 행위를 지닌 존재 기능 구현이라는 목표를 위해 다른 객체들과 역할과 책임을 분리하며 협력하는 존재이다. 요청과 응답으로 구성된 협력요청스스로 해결하지 못하는 문제와 마주치면 문제 해결에 도움을 줄 수 있는 대상에게 요청을 합니다.커피 주문 (요청)손님은 캐시어에게 커피를 주문한다.주문을 받은 캐시어는 주문 내역을 바리스타에게 전달한다.응답요청을 받은 대상은 주어진 책임을 다하면서 필요한 지식이나 서비스를 응답합니다.커피 주문 (응답)바리스타는 커피를 제조한 후 캐시어에게 알려주며 응답합니다.캐시어는 주문된 커피를 손님에게 알려주며 응답합니다.✅ 요청과 응답을 통해 다른 사람과 협력이 이루어집니다. 역할과 책임역할이란어떤 협..

JAVA

[Java] 자바 predicate, consumer, supplier, function 이해하기 - 함수형 인터페이스 이해하기

함수형 인터페이스 Descriptor Method명Funcation InterfaceDescriptorMethodPredicateT -> booleantest()ConsumerT -> voidaccept()Supplier() -> Tget()FunctionT -> Rapply() predicate란조건을 표현하는 인터페이스로, 함수형 인터페이스인자를 하나 받아서, 해당 인자가 주어진 조건을 만족하는 여부를 boolean 값으로 반환합니다.특정 조건에 맞는 데이터를 필터링하거나 검사하는 등의 작업에 사용됩니다.컬렉션에서 특정 조건에 맞는 요소를 필터링할 때 사용public interface Predicate { boolean test(T t);}Predicate isEven = (n) -> n % 2 =..

DB/MySQL

[Mysql] Mysql 쿼리 최적화, 성능 최적화 - 기본편

Mysql 쿼리 속도 개선 4 가지SQL 쿼리에 적용된 실행 계획 확인하는 방법 - explainexplain select * from crew 1. select 실행 시 필요한 column만 뽑기많은 필드 값을 불러올수록 데이터베이스는 더 많은 로드를 부담합니다.column 중에 불필요한 값을 가진 필드가 있다면 과감히 제외하고, select 절에 필요한 열만 지정해 불러오는 것이 좋습니다. 2. 조건 부여 시, 기존 DB 값에 별도의 연산을 걸지 않기-- InefficientSELECT m.id, ANY_VALUE(m.title) title, COUNT(r.id) r_count FROM movie m INNER JOIN rating r ON m.id = r.movie_id WHERE FLOOR(r.v..

JAVA

[Java] 자바 추상화 설계 이해하기 - 추상 클래스와 인터페이스 활용

abstract class객체 지향 프로그래밍에서 추상화 작업을 하기 위해 사용하는 클래스이다. 추상화의 의미는 간단하게,해당 구조나 기능을 구체적으로 알지 못해도 (추상적으로) 제공된 구조를 통해 간편하게 사용할 수 있게 해주는 것그러므로 추상 클래스는 “추상화”를 클래스에 접목시킨 것입니다. 내가 생각하는 추상 클래스추상 클래스는 미완성 설계도와 비슷하다.이것이 무슨 뜻이냐면,추상 클래스를 통해 밑그림(추상화)을 그리고 이를 바탕으로 관련된 새로운 객체를 만들 때 주어진 특징(기능)을 알 수 있습니다.abstract class 사용 이유구조적으로 객체를 설계할 수 있음프로그램의 유지보수성이 향상됨확장하는 요구사항에 맞게 간편하게 확장시킬 수 있음abstract class 문법1. 추상 메서드 - ab..

JAVA

[Java] Java of, from, parse 정적 팩토리 메서드 이해하기 - Method Naming Convention

of (static factory)Creates an instance where the factory is primarily validating the input parameters, not converting them. --> of는 주로 입력 매개변수를 변환하지 않고 객체를 바로 생성하는 정적 메서드라고 할 수 있다.class User { private String name; private int age; // private 생성자: 외부에서 직접 호출할 수 없음 private User(String name, int age) { this.name = name; this.age = age; } // of 정적 메서드: public stati..

CS/Database

[Database] 데이터베이스 index, clustered index, non-clustered index 이해하기

Index인덱스 파일은 데이터베이스에서 쿼리 성능을 향상시키기 위해 테이블의 특정 컬럼 값과 해당 행의 위치(Pointer)를 저장합니다.인덱스는 테이블의 데이터를 효율적으로 검색하기 위한 자료구조를 활용합니다. (B-Tree, Hash)Indexed Column Value인덱스가 설정된 컬럼의 실제 값들이 저장됩니다.해당 값을 이용해 데이터베이스가 특정 행을 찾는 데 필요한 정보로 사용합니다.Indexed Column Value: 101, 102, 103, 104, ...Row Pointer인덱스 파일에는 해당 인덱스 키 값이 테이블의 어느 행에 위치하는지에 대한 정보를 나타내는 포인터가 함께 저장됩니다.해당 포인터는 테이블의 실제 데이터 행을 가리킵니다.Indexed Column Value: 101 ..

JAVA

[Java] Java Switch와 if/else 성능 비교 - jump table, lookup table

Enum, int 형을 기준으로 조건문을 작성해야 하는 일이 있었습니다.Java 버전이 업데이트되면서 switch 문이 조금씩 변경되는 것을 확인하고if/else 문과 switch 문의 성능적으로 어떤 차이가 있는지 궁금했습니다.또한 어떤 차이가 있고 어느 상황에서 switch문을 (if-else문) 사용하면 좋은지 정리해보고자 합니다.Switch vs if/elseif-else 문은 조건을 위에서부터 순차적으로 확인합니다.각 조건을 순서대로 검사하기 때문에 조건이 많아지거나 복잡해질수록 성능 저하가 발생할 수 있습니다.switch 문은 조건이 int, char, enum, String 같은 특정 타입일 때 내부적으로 효율적인 분기 처리를 합니다.jump table, lookup table을 사용하여 분..

kylo
오늘도 열심히 - BE