분류 전체보기
-
Thread 종류 non-daemon, daemon tread non-daemon thread java의 main을 실행했을 때 실행되는 thread daemon thread 위의 non-daemon이 아닌 thread의 작업을 돕는 보조적인 역할을 하는 thread non-daemon thread가 모두 죽으면, daemon thread도 강제적으로 종료된다 garbage collection와 같은 백그라운드 태스크를 실행하며 low priority를 가지고 있습니다. Thread 상태 스레드의 상태는 java.lang.Thread 클래스 내부에 State라는 이름을 가진 Enumerated Types(열거형)으로 선언되어 있습니다. NEW 스레드가 생성되었지만 아직 실행되지 않은 상태 RUNNABLE..
[JAVA] Thread 종류 및 상태Thread 종류 non-daemon, daemon tread non-daemon thread java의 main을 실행했을 때 실행되는 thread daemon thread 위의 non-daemon이 아닌 thread의 작업을 돕는 보조적인 역할을 하는 thread non-daemon thread가 모두 죽으면, daemon thread도 강제적으로 종료된다 garbage collection와 같은 백그라운드 태스크를 실행하며 low priority를 가지고 있습니다. Thread 상태 스레드의 상태는 java.lang.Thread 클래스 내부에 State라는 이름을 가진 Enumerated Types(열거형)으로 선언되어 있습니다. NEW 스레드가 생성되었지만 아직 실행되지 않은 상태 RUNNABLE..
2023.07.08 -
외장 Tomcat을 이용하여서 운영하던 서비스를 Spring Boot에서 제공하는 내장 Tomcat으로 전환하기로 하였다. 그 과정에서 Tomcat server.xml 설정의 Connector 내용을 spring boot 설정으로 옮기게 되었다. 각 설정들의 값들 중에 connection, thread에 해당하는 값들을 살펴보도록 하자. Thread server.tomcat.threads.max: 200 server.tomcat.threads.min-spare: 10 해당 값들은 application.yml에 "server.tomcat.." 설정을 하지 않았을 때의 default값들이다. ( https://docs.spring.io/spring-boot/docs/current/reference/html/..
[Tomcat] connection, thread, keep-alive 설정 살펴보기외장 Tomcat을 이용하여서 운영하던 서비스를 Spring Boot에서 제공하는 내장 Tomcat으로 전환하기로 하였다. 그 과정에서 Tomcat server.xml 설정의 Connector 내용을 spring boot 설정으로 옮기게 되었다. 각 설정들의 값들 중에 connection, thread에 해당하는 값들을 살펴보도록 하자. Thread server.tomcat.threads.max: 200 server.tomcat.threads.min-spare: 10 해당 값들은 application.yml에 "server.tomcat.." 설정을 하지 않았을 때의 default값들이다. ( https://docs.spring.io/spring-boot/docs/current/reference/html/..
2023.07.01 -
서버에 설정을 살펴보던 중에 "java.security.egd" 옵션을 발견하게 되었고, 해당 설정이 어떠한 역할을 하는지 궁금하여 찾아본 내역을 정리해 보자. 정의 jvm 설정 중에 하나로 Java에 "SecureRandom" 클래스를 초기화 하는 방식에 영향을 미치는 옵션이다. 대부분의 설정값은 default값이 존재한다. 해당 default값을 사용하지 않고 따로 설정을 해주었다는 것은 기존에 default값을 사용할 때 어떠한 문제가 발생해서 따로 설정을 해주었을 것이다. default값을 사용하면 어떠한 문제가 발생하는지 찾아보자. java 8 이전에 버전에서는 "/dev/random" 값이 default 값이었다고 한다. 해당 값으로 설정이 되어있으면 Tomcat이 구동 되는데 blocking..
[Java] java.security.egd option서버에 설정을 살펴보던 중에 "java.security.egd" 옵션을 발견하게 되었고, 해당 설정이 어떠한 역할을 하는지 궁금하여 찾아본 내역을 정리해 보자. 정의 jvm 설정 중에 하나로 Java에 "SecureRandom" 클래스를 초기화 하는 방식에 영향을 미치는 옵션이다. 대부분의 설정값은 default값이 존재한다. 해당 default값을 사용하지 않고 따로 설정을 해주었다는 것은 기존에 default값을 사용할 때 어떠한 문제가 발생해서 따로 설정을 해주었을 것이다. default값을 사용하면 어떠한 문제가 발생하는지 찾아보자. java 8 이전에 버전에서는 "/dev/random" 값이 default 값이었다고 한다. 해당 값으로 설정이 되어있으면 Tomcat이 구동 되는데 blocking..
2023.06.28 -
로컬에서 프로젝트를 만들어서 코드를 작성하다가, git repository에 코드를 보관하고 싶은 경우가 종종 있다. 그런 경우에 어떻게 할지 매번 검색을 해서 과정을 진행하였는데 이번 기회에 정리를 해서 머릿속에 넣어 보자. 준비가 필요한 사항 github에 repo 생성 repository url git repo에 연결 이제 git repo에 연결할 디렉터리에서 아래의 단계를 순차적으로 진행 $ git init Initialized empty Git repository in /Users/{usr}/IdeaProjects/study-tdd/.git/ $ git remote -v git remote -v 시 현재 연결된 repo를 확인 할 수 있다. 하지만 현재는 연결된 remote repository가..
[Git] 로컬 프로젝트 remote git 연결로컬에서 프로젝트를 만들어서 코드를 작성하다가, git repository에 코드를 보관하고 싶은 경우가 종종 있다. 그런 경우에 어떻게 할지 매번 검색을 해서 과정을 진행하였는데 이번 기회에 정리를 해서 머릿속에 넣어 보자. 준비가 필요한 사항 github에 repo 생성 repository url git repo에 연결 이제 git repo에 연결할 디렉터리에서 아래의 단계를 순차적으로 진행 $ git init Initialized empty Git repository in /Users/{usr}/IdeaProjects/study-tdd/.git/ $ git remote -v git remote -v 시 현재 연결된 repo를 확인 할 수 있다. 하지만 현재는 연결된 remote repository가..
2023.06.15 -
ThreadLocal이란 ThreadLocal은 JDK 1.2부터 제공된 오래된 클래스입니다. ThreadLocal 클래스를 활용하면 스레드 단위로 로컬 변수를 사용할 수 있기 때문에 마치 전역 변수처럼 여러 메서드에서 활용할 수 있습니다. ThreadLocal 클래스는 thread-local 변수들을 제공합니다. 이 변수들은 각 스레드가 독립적으로 변수의 초기화 된 사본을 가지고 있습니다. ThreadLocal 인스턴스들은 보통 스레드와 상태를 연결하려고 하는 클래스들의 private static 필드들입니다. (예를 들어, 유저 ID 또는 트랜잭션 ID) 제공되는 메서드 set, get, remove - threadLocal의 로컬 변수 조작 withInitial - static 메서드를 이용한 객체..
[Java] ThreadLocal이란ThreadLocal이란 ThreadLocal은 JDK 1.2부터 제공된 오래된 클래스입니다. ThreadLocal 클래스를 활용하면 스레드 단위로 로컬 변수를 사용할 수 있기 때문에 마치 전역 변수처럼 여러 메서드에서 활용할 수 있습니다. ThreadLocal 클래스는 thread-local 변수들을 제공합니다. 이 변수들은 각 스레드가 독립적으로 변수의 초기화 된 사본을 가지고 있습니다. ThreadLocal 인스턴스들은 보통 스레드와 상태를 연결하려고 하는 클래스들의 private static 필드들입니다. (예를 들어, 유저 ID 또는 트랜잭션 ID) 제공되는 메서드 set, get, remove - threadLocal의 로컬 변수 조작 withInitial - static 메서드를 이용한 객체..
2022.11.24 -
서버 모니터링을 하다가, Load Average 수치에 대한 문제가 생겼고 해당 수치가 무엇인지 정확하게 알기 위해서 조사한 내용들을 공유해보도록 하겠습니다. Load average 정의 얼마나 많은 process가 R(Running) 혹은 D(Uninterruptible waiting) 상태인지를 1분, 5분, 15분 마다 평균으로 보여주는 값입니다. R(Running) : CPU에서 실행 중이거나 실행 가능한 상태 즉, run queue에 있는 R상태의 Process들의 개수 D(Uninterruptible waiting) : I/O 대기하는 상태로 다른 어떤 일도 할 수 없는 상태 즉, wait queue에 있는 D상태의 Process들의 개수 Load Average가 높다는 의미는 많은 프로세스가..
[Server] Load Average란서버 모니터링을 하다가, Load Average 수치에 대한 문제가 생겼고 해당 수치가 무엇인지 정확하게 알기 위해서 조사한 내용들을 공유해보도록 하겠습니다. Load average 정의 얼마나 많은 process가 R(Running) 혹은 D(Uninterruptible waiting) 상태인지를 1분, 5분, 15분 마다 평균으로 보여주는 값입니다. R(Running) : CPU에서 실행 중이거나 실행 가능한 상태 즉, run queue에 있는 R상태의 Process들의 개수 D(Uninterruptible waiting) : I/O 대기하는 상태로 다른 어떤 일도 할 수 없는 상태 즉, wait queue에 있는 D상태의 Process들의 개수 Load Average가 높다는 의미는 많은 프로세스가..
2022.11.21 -
MacOS에 Homebrew를 이용해서 Nginx을 설치하는 방법을 정리해보겠습니다. brew에서는 services라는 명령어를 통해서 백그라운드 서비스를 쉽게 관리할 수 있습니다. 설치는 매우 간단합니다. 아래의 명령어를 입력하시면 됩니다. brew install nginx 설치 log의 Summary 내용이 해당 mac에 nginx가 설치된 위치입니다. 추후에 어디 위치에 있는지 확인하고 싶다면, 아래의 명령어를 통해서 위치확인이 가능합니다. 이제 nginx 설치는 완료되었고, nginx 세부 설정을 변경하고 싶다면 nginx 설정에 대한 포스팅을 참고하셔서 설정 파일을 수정하면 됩니다. https://kkang-joo.tistory.com/31 이제 nginx를 실행시켜 보도록 하겠습니다. 위에서 ..
[Mac] brew nginx 설치MacOS에 Homebrew를 이용해서 Nginx을 설치하는 방법을 정리해보겠습니다. brew에서는 services라는 명령어를 통해서 백그라운드 서비스를 쉽게 관리할 수 있습니다. 설치는 매우 간단합니다. 아래의 명령어를 입력하시면 됩니다. brew install nginx 설치 log의 Summary 내용이 해당 mac에 nginx가 설치된 위치입니다. 추후에 어디 위치에 있는지 확인하고 싶다면, 아래의 명령어를 통해서 위치확인이 가능합니다. 이제 nginx 설치는 완료되었고, nginx 세부 설정을 변경하고 싶다면 nginx 설정에 대한 포스팅을 참고하셔서 설정 파일을 수정하면 됩니다. https://kkang-joo.tistory.com/31 이제 nginx를 실행시켜 보도록 하겠습니다. 위에서 ..
2022.11.16 -
Maven은 Dependency를 관리해주는 툴로 POM이라는 XML을 통해서 설정한다. 얼마 전에 다른 사람이 작성한 pom.xml을 보게 되었는데 주석으로 bom이라고 쓰여있는 것을 봐서 오타가 났다보다 생각했는데 후에 찾아보니 BOM이라는 기능이 따로 존재하는 것이었다. BOM ( Bill Of Materials) 자제 명세서 BOM은 특별한 POM의 종류라고 생각하면 될 거 같다. Dependency를 관리하는 것은 유사하지만 한 곳에서 중앙 집중형으로 의존성과 버전을 관리할 수 있게 도와줍니다. BOM을 사용하는 대표적인 장점이 버전 관리입니다. Maven을 사용하다 보면 버전 충돌의 문제를 많이 겪게 됩니다. 이러한 문제를 해결하기 위해서 BOM을 사용합니다. 루트 pom.xml 4.0.0 c..
[Maven] Bom이란(type, scope)Maven은 Dependency를 관리해주는 툴로 POM이라는 XML을 통해서 설정한다. 얼마 전에 다른 사람이 작성한 pom.xml을 보게 되었는데 주석으로 bom이라고 쓰여있는 것을 봐서 오타가 났다보다 생각했는데 후에 찾아보니 BOM이라는 기능이 따로 존재하는 것이었다. BOM ( Bill Of Materials) 자제 명세서 BOM은 특별한 POM의 종류라고 생각하면 될 거 같다. Dependency를 관리하는 것은 유사하지만 한 곳에서 중앙 집중형으로 의존성과 버전을 관리할 수 있게 도와줍니다. BOM을 사용하는 대표적인 장점이 버전 관리입니다. Maven을 사용하다 보면 버전 충돌의 문제를 많이 겪게 됩니다. 이러한 문제를 해결하기 위해서 BOM을 사용합니다. 루트 pom.xml 4.0.0 c..
2022.11.14