1. Virtual Thread 소개Virtual Thread는 JDK 21에 정식 Feature로 등록된 경량 스레드로, Java의 동시성 (Concurreny) 처리를 개선하기 위해 OpenJDK의 Project Loom에서 개발되었습니다. 대표적인 경량 스레드로는 Kotlin의 coroutine, Go의 goroutine 등이 있습니다. 이제 Java만으로도 경량 스레드의 이점을 누릴 수 있게 되었고, Virtual Thread는 어떻게 동작하고 얼마나 성능이 좋아졌는지 알아보겠습니다. 2. Thread와 Virtual Thread의 구조Java의 Thread(Platform Thread)는 OS의 Kernel Thread와 1:1 관계로 매핑되어 동작하는 구조입니다.이러한 구조는 Java에서 생성..
1. 데이터 백업 (mongodump)MongoDB 데이터를 백업하려면 mongodump 명령어를 사용합니다.기본 백업mongodump --host 127.0.0.1 --port 27017/dump 디렉토리에 DB별로 BSON 파일 형태로 백업됩니다.백업 경로 지정mongodump --out ~/mongo_backup --host 127.0.0.1 --port 27017인증 정보 추가mongodump --out --host 127.0.0.1 --port 27017 -u -p 특정 데이터베이스 백업mongodump --out --host 127.0.0.1 --port 27017 -u -p --db 특정 컬렉션 백업mongodump --out --host --port 27017 -u -p -..
VM 대신 컨테이너를 사용하는 이유컨테이너는 VM보다 훨씬 가볍다.VM은 전체 운영체제를 포함하지만, 컨테이너는 애플리케이션과 해당 애플리케이션이 필요로 하는 라이브러리와 의존성만 포함한다.따라서 필요한 자원이 적고, 더 빠른 실행 및 확장이 가능하다. 컨테이너는 VM보다 시작 시간이 훨씬 짧다.VM은 운영체제를 부팅하는 시간이 필요하지만, 컨테이너는 거의 즉각적으로 시작할 수 있다. 컨테이너는 이식성이 좋고, 일관된 환경을 보장한다.컨테이너는 애플리케이션과 그 환경을 캡슐화하여 어느 플랫폼에서도 일관된 동작이 가능하다.개발환경, 테스트 환경, 운영 환경 간의 차이가 줄어들고, 다양한 환경에 쉽게 배포가 가능하다. 컨테이너는 VM보다 자원 사용이 효율적이다.컨테이너는 호스트 OS의 커널을 공유하여, 하나..
'24년 8월 14일, 큐텐테크놀로지 퇴사생애 처음 권고사직을 경험했다'24년 7월 8일 위메프 정산 지연 이슈가 시작이었다.오너의 폰지 사기같은 경영으로 회사가 어려움에 처했다.어려운 상황이라고 하지만, 회사는 아무런 내용도 공유하지 않았고대부분의 직원들은 언론보도 내용을 통해 상황이 어떻게 돌아가는지 파악했다.결국 회사는 권고사직 희망자를 받았고, 팀장을 제외한 모든 팀원은 권고사직을 신청했다.'24년 8월 14일 권고사직으로 퇴사했다.개인적인 손해도 컸다7월 급여 지급, 4대보험 미납(월급에서 공제됨)8월 급여 미지급, 4대보험 미납퇴직금 미지급아파트 담보 대출 불가구직시장은 보릿고개경기가 좋지 않아 재취업이 쉽지 않은 분위기다급한 대로 실업급여를 신청함미납 4대보험 중 챙겨야 할 것건강보험, 건보..
Could not open JPA EntityManager for transaction; nested exception is java.util.NoSuchElementException 위 트랜잭션을 만들 수 없다는 오류는 검색을 해보면 DB Connection Pool이 작거나, 접속 정보가 잘못되어 DB 연결에 실패하는 경우 발생할 수 있는데 최근에 이런 경우가 아닌 문제로 오류를 경험하게 되어 기록한다. DB 구성이 쓰기/읽기로 구분되어 있는 환경에서, JPA로 DB 작업을 하고 Annotation으로 쓰기/읽기 DB를 제어한다면 Annotation을 설정의 누락이나 실수로 읽기 DB에 쓰기 작업을 시도하여 같은 오류가 발생할 수 있다. 자신의 소스코드가 읽기 DB에 쓰기 작업을 하고 있지 않은지 확..
실행에 문제가 없던 스프링 프로젝트를 디버깅 모드로 실행했을 때 로딩이 완료되지 못하고 멈추는 현상이 간헐적으로 발생한적이 있다. (특정 로그에서 더이상 진행되지 못함) 해결을 위해 프로젝트 재빌드, 의존성 파일 초기화 등을 했지만 해결되지 않았다. 언제는 이건 인텔리J의 프로젝트 환경 설정이 꼬여서 발생하는 문제라고 생각해서 프로젝트 환경설정을 다시했고 이때는 해결된 기억이 난다. 최근에 문제를 찾았는데 인텔리J 프로젝트의 브레이크포인트의 영향으로 디버그 모드에서 멈추는 것이었다. 디버그 모드 실행 전에 브레이크포인트를 모두 제거 후 실행하면 정상적으로 실행된다.(Windows는 ctrl + shift + F8)
Spring Framework에서 JPA 사용 시 @Transactional(readOnly = true) 애노테이션을 사용하면 트랜잭션을 읽기 전용 모드로 동작시킬 수 있고, 성능 향상을 볼 수 있다. JPA는 기본적으로 엔터티를 영속성 컨텍스트에 관리하게 되고, 영속성 컨텍스트는 변경 감지를 위해 스냅샷 인스턴스를 보관하여 메모리를 사용하게 된다. 엔터티를 조회만 하는 경우 변경 감지와 메모리 사용은 불필요하므로 @Transactional(readOnly = true) 애노테이션을 사용하면 트랜잭션이 읽기 전용 모드로 설정되어 변경 감지할 엔터티를 줄이고 메모리 사용을 줄일 수 있다. @Transactional(readOnly = true) 애노테이션을 사용하면 Spring Data JPA는 Hibe..
- Total
- Today
- Yesterday
- development
- libavformat
- onbeforeunload
- elasticsearch
- Spring
- Rolling-Restart
- JAXB
- HDFS
- JDK21
- springboot
- DATABASE
- oid
- HTTP Live Streaming
- jdk7
- AVIOContext
- springjpa
- DB
- springframework
- JPA
- HLS
- popupWindow
- ffmpeg
- C/C++
- Java
- jdk6
- fluentd
- CentOS
- programmer
- Virtual Thread
- Programming
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |