일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 컴퓨터구조
- Data Structure
- MSA
- MySQL
- Proxy
- c언어
- 네트워크
- spring webflux
- redis
- react
- JPA
- 자료구조
- 디자인 패턴
- 백준
- OS
- Heap
- Java
- 알고리즘
- mongoDB
- Kafka
- 파이썬
- IT
- Galera Cluster
- C
- 자바
- 운영체제
- design pattern
- JavaScript
- Spring
- Algorithm
- Today
- Total
목록분류 전체보기 (214)
시냅스
JMeter Apache 에서 만든 자바 기반의 오픈소스 부하 및 성능 테스트 툴 web application 및 api, FTP, Database, JMS, LDAP 및 SOAP등 다양한 유형의 서비스를 테스트 할 수 있다. 사용자의 요청에 대한 응답 시간, 처리량 및 성능 지표를 측정할 수 있다. 지원하는 기능 프로토콜 : HTTP, HTTPS, FTP, JDBC, LDAP, JMS, SOAP 등 테스트 계획 : 스레드 그룹, 요청, 사용자 인증 및 요청 변수 등 세밀한 제어 : 스레드 수, 요청률, 대기 시간 및 요청 순서를 제어 리포팅 및 분석 : 결과를 분석하고 그래프, 표, 트리, 요약보고서 등의 형태로 표시 설치 맥 환경에서 설치한다. brew install jmeter brew 를 통해 설..
JMX jmx는 jdk 1.5 부터 포함된 Java 애플리케이션의 모니터링 관리를 위한 표준 API 이다. 애플리케이션의 상태, 성능 및 리소스 사용 등과 같은 정보를 수집하고 이를 모니터링, 관리 및 제어하는 데 사용된다. JMX MBean(Managed Bean) 이라는 개념을 사용하여 모니터링 및 관리할 수 있는 자원을 표현한다. MBean 은 JMX 인프라스트럭처에 등록되며, 클라이언트는 MBean에 대한 요청을 보내어 정보를 얻거나 작업을 수행할 수 있다. MBean Standard MBean 변경이 많지 않은 시스템을 관리하기 위한 MBean이 필요한 경우 사용 Dynamic MBean 애플리케이션이 자주 변경되는 시스템을 관리하기 위한 MBean이 필요한 경우 사용 Model MBean 어떤..
Lock Striping 스레드 동기화는 공유하는 데이터에 대해 데이터 일관성을 보장하기 위해 사용된다. 그러나 스레드 동기화는 성능에 영향을 미치기 때문에 동기화를 최소한으로 유지하면서 스레드 안정성을 보장하는 것이 중요하다. Lock Striping 은 이를 위한 방법 중 하나로 여러 개의 락을 사용하는 대신, 락을 분할하여 동시에 여러 스레드가 접근할 수 있도록 한다. e.g. ConcurrentHashMap에서 특정 노드에 잠금을 거는 것 Lock Striping 은 스레드 경합을 줄이고 락의 사용 빈도를 줄이기 때문에 성능을 향상시킬 수 있다. ConcurrentHashMap 등에서 사용하고 있다. Cf. 락 분할 (Lock spilitting)은 하나의 클래스에서 기능적으로 락을 분리해서 사용..
걸어서 4000만개 데이터가 있는 테이블 8개 속으로... 지금 하고 있는 프로젝트는 전국의 어떤 데이터(대외비임다... )를 관리하고, 맞춰서 GIS 로 개발하는 프로젝트를 하고 있다. 프론트 오피스에서는 데이터들을 지도에 그려주고, 백 오피스에서는 데이터들을 관리 혹은 처리하게 된다. 나는 대체로 백오피스의 업무들을 배당 받았는데, 이미 엑셀 파일을 유저가 업로드 할 수 있게 처리하거나 권한 작업들은 해두었던 상태였다. 그리고 대망의 각 500만개 데이터가 있는 테이블 8개 속으로 걸어들어갔다. 전국의 데이터는 시도 별로 시군구 별로 테이블이 따로 있었고 정렬될 필요가 있었다. 전국의 어떤 데이터가 들어왔을 때, 서울시라고 한다면 다시 서울시 중랑구 까지 분류가 되어 각개 테이블에 적재되었어야 했다...
Synchronized keyword static과 heap을 공유하면서 동시접근이 가능한 resource 에 관하여 race condition 을 회피하기 위해 Java에서 제공하는 키워드 함수에 synchronized 키워드를 붙이거나 (Lock in Synchronized Methods) 함수에 synchronized를 걸면 함수가 포함된 해당 객체(this)에 lock을 거는 것과 동일하다. synchronized block을 만들어 사용할 수 있다. (Synchronized Statements) 필요한 부분만 lock이 걸린다. 객체에 lock을 거는 것은 동일하다. 만약 singleton 객체에 synchronized 키워드를 사용할 경우 synchronized 메소드가 많을 수록 deadlo..
Equals 와 == 의 차이 Primitive type (원시타입) Call by value 주소로 변수 값을 바로 확인하여 계산하기 때문에 == 비교가 가능 Reference type (원시타입 이외 모두) Call by reference 주소값을 참조(포인터) 하여 사용하기 때문에 == 비교를 하게 될 경우 주소값을 비교하게 된다. String을 new (builder, buffer 포함)를 사용하지 않고 리터럴로 생성한 경우 String은 string constant pool 이라는 영역에 속한다. (intern) 같은 값에 한해서는 같은 주소값을 같게 된다. 따라서 == 비교가 가능하다. 이때 객체 내부에 Equals()를 override 하여 객체간 값에 대한 비교를 할 수 있다. Equals..
Annotation Processor 컴파일 단계에서 유저가 정의한 어노테이션의 소스 코드를 분석, 처리하기 위해 사용되는 Hook 자바 컴파일러의 플러그인 일종 컴파일 에러나 컴파일 경고를 만들어 냄 자바 컴파일러에 의해 소스코드(.java) 와 바이트코드(.class)를 내보내기도 한다. annotation processor를 통해서 메소드, 필드 등을 생성, 수정하거나 인터페이스만을 가지고도 구현부를 생성해줄 수 있다. 장정 런타임 전에 컴파일 단계에서 수행되기 때문에 비용이 제로에 가깝다. 리플렉션을 사용하지 않아 런타임 시에 예외를 발생시키지 않는다. Boilerplate code를 생성해준다. 단점 기존 클래스 파일에 소스(AST)를 변경할 때는 일종의 해킹이다. 프로세싱 단계 자바 컴파일러가..
GC stop the world GC를 실행하기 위해 JVM이 애플리케이션의 실행을 멈춤 gc를 실행하는 쓰레드를 제외한 나머지 쓰레드는 작업을 멈춤 어떤 GC 알고리즘을 사용하더라도 꼭 발생 대개의 GC 튜닝은 이 시간을 줄이는 것 가비지 컬렉터의 실행 조건 JVM이 OS로부터 메모리를 부여 받고 프로그램을 실행하다가 메모리가 부족하여 OS에게 추가로 메모리를 요청하는 시점에 실행된다. 혹은 JVM의 idle time에 실행된다. dangling object가 그 대상이다. System.gc() 를 호출해선 안된다. System.gc() 는 garbage collection 을 실행하는 함수 자바에서는 명시적으로 메모리를 지정하여 해제하지 않기 때문에 객체를 null 로 지정하거나 System.gc()..
함수형 프로그래밍 순수함수(pure function)를 조합하고 공유 상태(shared state), 변경 가능한 데이터(mutable data) 및 부작용 (side-effects)를 피하는 기본 원칙에 따라 소프트웨어를 구성하는 프로그래밍 패러다임 절차보다 기능에 초점을 맞춘다. 1급 객체 (first object) 변수나 데이터 구조 안에 넣을 수 있다. 파라미터로 전달할 수 있다. 동적으로 프로퍼티 할당이 가능 리턴값으로 사용할 수 있다. 자바의 경우 함수형 인터페이스를 통해 구현이 가능 순수 함수 (pure function) 순수 함수란 같은 입력에 대해 항상 같은 출력을 반환하는 함수 멀티스레드에서도 안전하고 병렬처리 및 계산도 가능하다. 동일한 입력에 대해 항상 같은 값을 반환한다. 부수효과..
Docker 란 애플리케이션의 실행에 필요한 환경을 하나의 이미지로 모아두고 이미지를 사용하여 다양한 환경에서 애플리케이션 실행 환경을 구축 민 운용하기 위한 오픈소스 플랫폼 인프라 환경을 컨테이너로 관리 애플리케이션 실행에 필요한 모든 파일 및 디렉토리들을 컨테이너로 모은다. 애플리케이션 실행에 필요한 모든 것이 포함된 Docker 이미지를 작성하여 컨테이너를 가동시킨다. 이미지는 Docker가 설치된 환경이라면 어디서든 실행할 수 있는 높은 이식성을 갖게 된다. 기본 기능 3가지 build 애플리케이션의 실행에 필요한 모든 것을 모아 Docker 이미지로 만듬 Docker 명령을 통한 수동 / Dockerfile 작성을 자동으로 이미지를 만들 수 있음 ship Docker hub을 통해 이미지를 받을..