[Inner Circle] 패스트캠퍼스 4기 - 2번째 프로젝트
2025. 6. 28. 18:24
잡담
안녕하세요, 어느덧 6월말이네요.패스트캠퍼스에 참여한지도 어느덧 3주차입니다. 첫번째 프로젝트 이후 두번째 프로젝트는 오픈소스 라이브러리 만들기가 주어졌습니다. 라이브러리 만들기에 앞서 유의사항 모듈화, 의존성 없애기(spring 의존성 최소화)이 라이브러리가 '자동화'인지 '편의성' 인지에 따라 달라진다.또한 라이브러리를 버전업을 했을때 문제점 등을 고려해야한다 라고 말씀해주셨어요 자바 21을 사용해서 라이브러리 만들때 문제점 Java 21은 새로운 문법과 JVM 바이트코드 변경 포함 되어서 기존의 사용자 혹은 일부 빌드 와 호환 되지 않는 문제점이 있습니다.또한 kafka 혹은 elasticsearch 와 같은 주요 오픈소스와의 호환이 괜찮은 자바 17 혹은 11로 하는것을 추천하더라고요. 제..
TIL - 2번째
2024. 11. 3. 18:35
카테고리 없음
https://www.acmicpc.net/problem/31562 오늘은 백준 에서 31562 전주 듣고 노래 맞히기 에 대해서 진행해보도록하겠습니다. 문제 :윤수와 정환은 「전주 듣고 노래 맞히기」라는 게임을 할 예정이다. 「전주 듣고 노래 맞히기」는 주어진 노래의 전주를 듣고 먼저 제목을 맞히는 사람이 점수를 얻어 최종적으로 점수가 더 많은 사람이 이기는 게임이다. 절대 음감을 가진 윤수는 노래의 첫 네 음만 듣고도 어떤 노래든 바로 맞힐 수 있다. 따라서, 정환은 윤수를 이기기 위해 첫 세 음만으로 노래를 맞히게 해주는 프로그램을 만들려고 한다. 우선 정환이 알고 있는 노래 제목, 음이름 등을 데이터로 만든 뒤 프로그램을 구현하기 시작했다. 예를 들어, 다음은 TwinkleStar(반짝반짝 작은 ..
static 과 JVM 메모리 모델을 이해해보자!
2024. 9. 1. 00:13
Language/Java
객체지향 프로그래밍 시작하기Static 과 메모리의 관계를 알아보도록 해보자이 글의 목표는 static 키워드와 메모리 관계에 있어서 이해를 돕고자 또한, JVM 에 사용하는 메모리 모델을 통해 자바 프로그래임이 어떤식으로 동작하는지에 대한 원리를 학습하는것을 목표로 합니다. 1. static 과 메모리의 관계2. static 멤버 들의 접근 방법3. private 생성자와 static과의 관계4. JVM 이 상요하는 메모리 영역5. class, object, instance의 상호관계 1. static 과 메모리의 관계메인(시작) 클래스는 왜 객체 생성(new)없이 실행이 되나요?public class StaticTest { public static void main(String[] args) {..
N+1 문제 해결: Java 백엔드 개발자를 위한 데이터베이스 쿼리 최적화
2024. 6. 5. 17:57
DB
오늘은 JPA N+1의 문제 해결에 대해서 글을 공유해드리려고 합니다. * Java 백엔드 개발자를 위한 데이터베이스 쿼리 최적화에 적합한 내용입니다.개발자가 직면하는 가장 일반적인 성능 병목 현상 중 하나가 N+1입니다. 애플리케이션이 단 한 번의 쿼리로 동일한 결과를 얻을 수 있는데도 N+1번의 데이터베이스 쿼리를 수행할 때 발생합니다. 과도한 데이터베이스 Hit는 느린 응답 시간, 높은 서버 부하, 열약한 사용자 경험으로 이어질 수 있습니다. 원인을 함께 파악해 보고 개발자가 이러한 문제를 어떻게 완화할지에 대해서 다양한 전략과 기법에 대해서 적어보겠습니다.앞서, N+1 문제가 무엇인지 알아보도록 하겠습니다.N+1 문제란 무엇인가?애플리케이션이 개체목록(예시: 제품, 사용자 또는 게시물 목록)을 가..
스트림 Stream 을 사용하는 이유 - Modern Java in Action
2023. 10. 2. 20:43
Language/Java
자바 8은 데이터베이스 질의 언어에서 표현식을 처리하는 것처럼 병렬 연산을 지원하는 스트림이라는 새로운 API 를 제공한다. 데이터베이스 질의 언어에서 고수준 언어로 원하는 동작을 표현하면, 구현(자바에서는 스트림 라이브러리가 이 역할을 수행) 에서 최적의 저수준 실행 방법을 선택하는 방식으로 동작한다. 즉, 스트림을 이용하면 에러를 자주 일이키며 멀티코어 CPU 를 이용하는 것보다 비용이 훨씬 비싼 키워드 synchronized를 사용하지 않아도 된다. 더보기 멀티코어 CPU의 각 코어는 별도의 캐시(빠른 메모리) 를 포함하고 있다. 락을 사용하면 이러한 캐시가 동기화되어야 하므로 속도가 느린 캐시 일관성 프로토콜 인터코어 통신이 이루어진다. 조금 다른 관점에서 보면 결국 자바8에 추가된 스트림 API..