본문 바로가기

분류 전체보기56

[Java] ExecutorService, ScheduledExecutorService, and Future Java에서 ExecutorService는 스레드를 사용하여 작업을 비동기적으로 실행하는 방법을 제공합니다. ExecutorService를 상속하는 ScheduledExecutorService는 지정된 시간, 고정된 속도 또는 고정된 지연으로 실행되도록 작업을 예약하는 메서드를 제공합니다. Future는 비동기 작업의 결과를 나타내며 작업의 상태를 확인하거나 필요한 경우 취소할 수 있습니다. 요 세 녀석을 자세하게 살펴보도록 하겠습니다. ExecutorService Java에서 스레드는 운영 체제의 리소스인 시스템 수준 스레드에 매핑됩니다. 스레드를 제어할 수 없을 정도로 많이 생성하면 이러한 리소스가 빠르게 부족해질 수 있습니다. Java에서는 Executor framework가 thread pool을.. 2023. 3. 7.
[회고] 한 달간의 TIL(Today I Learnd) 회고 TIL(Today I Learnd) 첫 회고, 블로그와 git을 통해서 개발자들이 하루하루 배운것을 기록하고 올리는 TIL(Today I Learnd)것이 있다는것을 알고 잇었지만 실천할 생각이 없었다. 하지만 2월 5일 첫 커밋을 시작으로 한 달간 평일 20일 동안의 20개의 학습한 것을 올리는 것을 목표로 크고 작은 학습한 것들을 git repository에 올리는 TIL(Today I learnd)을 시작해보았다. 한 달 하고 무슨 회고냐! 라고 할 수도 있지만.. 한 달이 반년이 되고 반년이 일 년이 되기 때문에 우선 첫 한 달 정도 TIL을 지속한 회고 및 후기를 남겨보려고 한다. https://github.com/christopher3810/TIL GitHub - christopher3810/.. 2023. 3. 4.
[Java] Thread 라이프 사이클과 스레드 우선순위로 보는 데몬스레드와 비데몬 스레드 Java Thread(스레드) 라이프사이클(life cycle)을 간단하게 확인하고, Thread(스레드) 우선순위로 데몬스레드(Demon Thread)와 비데몬 스레드(non demon thread or user thread)에 대해서 알아보는 시간을 갖도록 하겠습니다. Concurrent Programming Concurrent Programming은 여러 작업이 동시에 실행되는 환경에서 프로그램이 제대로 동작하도록 하는 프로그래밍 기법입니다. 이러한 환경에서는 다른 작업들과 자원들과의 경합이 발생할 수 있으며, 이를 해결하기 위해 스레드 동기화와 같은 기술이 사용됩니다. Thread Java에서 프로세스는 컴퓨터 시스템에서 실행되는 프로그램의 인스턴스입니다. 각 프로세스에는 고유한 메모리 공간, 시.. 2023. 3. 1.
[Docker] 그래서 도커(Docker)랑 컨테이너(Container)가 뭐냐구요 도커(Docker), 컨테이너(Container)는 무엇일까요? 도커(Docker) 등장 배경과 컨테이너(Container) 환경의 발달 과정 그리고 기존 가상화 방식과 컨테이너(Container) 기반 가상화 방식의 차이점과 운영방식등을 알아보도록 하겠습니다. Docker의 배경 Docker는 2013년에 dotCloud의 Solomon Hykes와 그의 팀에 의해 그의 팀에 의해 2013년 PyCon에서 (The future of Linux Containers) 처음 데모 되었습니다. 출시 전 오클랜드 항구에 들어오는 모든 컨테이너 선박을 볼 수 있었고 “한 서버에서 다른 서버로 앱을 옮기는 것보다 지구 반대편에서 자동차를 배송하는 것이 더 쉽다” 는 사실이 해결해야 할 문제처럼 보였다고 합니다. 이.. 2023. 2. 26.
[Git]Merge vs Rebase Rebase를 중점으로 봐보자 git base ci/cd tool 들은 커밋 또는 브랜치의 변경 사항을 다른 브랜치나 커밋에 반영할 수 있도록 지원하는데 이를 보통 Merge와 Rebase라고 한다. 여기서 한가지 의문점이 생길 수 있는데 왜 굳이 Merge와 Rebase 2개의 방법을 제공하는 걸까? Merge와 Rebase를 Rebase를 중점으로 알아보도록 하자. 하지만 짤은 Conflict 나는 개판 Merge 짤이다 😱😱😱😱😱😱😱😱😱😱 Merge 전제 main 브랜치로 부터 Feature 브랜치를 따고 3가지 커밋이 이루어져 있다 main 브랜치는 Feature 브랜치가 따진 이후 2번의 커밋이 이루어져 있는 상황이다. git checkout feature git merge maian //or git merge feature.. 2023. 2. 25.
[Java] Java14 레코드(Record)를 알아보자 Java 8 , 11 버전만 사용하다 보니 이후 버전에 추가된 것들에 대해서 학습을 하려고 합니다. Java 14에서 추가된 레코드(Record)에 대해서 레코드의 목적, 자동생성 항목 등 레코드의 기본 사항에 대해 살펴보고 제약사항은 또 어떤 부분이 있는지 알아보도록 하겠습니다. baeldung에 상당 부분 잘 정리가 되어있기 때문에 해당글을 대부분 참조하였으며 추가적인 정보를 더해 글을 작성했습니다. 객체 간에 변경 불가능한 데이터를 전달 시 Java 14 이전에는 boilerplate field와 메서드가 포함된 클래스를 생성해야 했기 때문에 사소한 실수가 발생하거나, 의도가 혼동되기 쉬웠습니다. Java 14가 출시되면서 이제 레코드를 사용하여 이러한 문제를 해결할 수 있습니다. 레코드는 Java.. 2023. 2. 19.