우리가 개발하는 WAS는 여러 개의 스레드가 동작하도록 되어 있다. 그래서 synchronized를 자주 사용한다. 하지만 synchonized를 쓴다고 무조건 안정적인 것은 아니며, 성능에 영향을 미치는 부분도 있다. 자바에서 스레드는 어떻게 사용하나? 프로세스와 스레드 클래스를 하나 수행시키거나 WAS를 기동 하면 서버에 자바 프로세스가 하나 생성된다. 하나가 생성되는지 여러 개가 생성되는지는 윈도우, 리눅스, 유닉스의 프로세스를 조회해 보면 확인 가능하다. 하나의 프로세스에는 여러 개의 스레드가 생성된다. 단일 스레드가 생성되어 종료될 수도 있고, 여러 개의 스레드가 생성되어 수행될 수도 있다. 그러므로 프로세스와 스레드의 관계는 1:N 관계라고 보면 된다. 스레드는 다른 말로 Light Weigh..
자바 프로그래밍에서 성능을 향상하는 방법은 여러 가지가 있다. 그중에서 한 가지는 static을 사용하는 것이다. 하지만 잘 모르고 statis을 사용하다가는 시스템이 더 느려지거나, 오류를 내뿜는 시스템이 될 수도 있다. static의 특징 자바에서 static으로 지정했다면, 해당 메서드나 변수는 정적이다. public class VariableTypes { int instance Variable; static int classVariable; public void method(int parameter) { int localVariable; } } 여기서 static으로 선언한 classVariable은 클래스 변수라고 한다. 왜냐하면 그 변수는 '객체의 변수'가 되는 것이 아니라 '클래스의 변수'가..
어떤 프로그래밍을 하든 반복 구분 사용은 기본 중의 기본이다. 이 반복 구문도 잘만 사용하면 성능 향상을 가져올 수 있다. 반복 구문에서의 속도는? 자바에서 사용하는 반복 구문은 세 가지이다. for do-while while 일반적으로 for문을 많이 사용한다. while문은 잘못하면 무한 루프에 빠질 수 있으므로 되도록이면 for문을 사용하기를 권장한다. JDK 5.0 이전에는 for 구문을 다음과 같이 사용하였다. 여기서 list는 값이 들어있는 ArrayList이다. for(int loop=0; loop
Map 클래스 중 무엇이 가장 빠를까? Map 관련 클래스들의 성능을 비교해 보기 위해 아래와 같이 JMH 테스트 코드를 만들었다. 데이터를 담을 때 얼마나 시간 차이가 발생하는지 확인해 보자. @State(Scope.Thread) @BenchmarkMode({Mode.AverageTime}) @OutputTimeUnit(TimeUnit.MILLISECONDS) public class MapGet { int LOOP_COUNT = 1000; Map hashMap; Map hashTable; Map treeMap; Map linkedHashMap; int[] keys; @Setup(Level.Trial) public void setUp() { if (keys == null || keys.length != ..
List 클래스 중 무엇이 가장 빠를까? List 관련 클래스들의 성능을 비교해 보기 위해 아래와 같이 JMH 테스트 코드를 만들었다. 데이터를 담을 때 얼마나 시간 차이가 발생하는지 확인해 보자. @State(Scope.Thread) @BenchmarkMode({Mode.AverageTime}) @OutputTimeUnit(TimeUnit.MILLISECONDS) public class ListAdd { int LOOP_COUNT = 1000; List arrayList; List vector; List linkedList; @Benchmark public void addArrayList() { arrayList = new ArrayList(); for (int loop = 0; loop < LOOP_..
JMH 툴을 통해 Collection 관련 객체에 대해 성능 테스트를 진행 해보자.JMH 툴 설치가 아직 안되신 분들은 JMH 설치 설치 및 설정 방법 글을 참고 하기 바란다.[엔지니어링/성능과 튜닝] - [성능과 튜닝] JMH 설치 및 설정 방법 Set 클래스 중 무엇이 가장 빠를까?Set 관련 클래스들의 성능을 비교해 보기 위해 아래와 같이 JMH 테스트 코드를 만들었다.데이터를 담을 때 얼마나 시간 차이가 발생하는지 확인해 보자. @State(Scope.Thread) @BenchmarkMode({Mode.AverageTime}) @OutputTimeUnit(TimeUnit.MILLISECONDS) public class SetAdd { int LOOP_CONUT = 1000; Set set; Str..
모든 개발자가 알면서도 지키지 않는 것이 있다. 바로 문자열 관련 부분이다. String 클래스는 잘 사용하면 상관이 없지만, 잘못 사용하면 메모리에 많은 영향을 준다.String이 GC에 영향을 주는 것은 확실하다. 하지만, 이것만 고친다고 메모리가 효율적으로 사용된다는 것은 아니다. 성능 개선에 있어 작은 부분이지만 기본적인 성능 개선부터 유념하자는 의미이다. StringBuffer 클래스와 StringBuilder 클래스문자열을 만드는 클래스는 String, StringBuffer, StringBuilder가 가장 많이 사용된다. StringBuffer 클래스는 JDK 5.0에서 새로 추가되었다. StringBuffer 클래스나 StringBuilder 클래스가 제공하는 메서드와 동일하다. 차이점은..
시스템의 성능이 느릴 때 가장 먼저 해야 하는 작업은 병목 지점을 파악하는 것이다. System 클래스자바를 처음 배울 때부터 아무 생각 없이 쓰는 클래스가 있다. 다름 아닌 System 클래스다. 모든 System 클래스의 메서드는 static으로 되어 있고, 그 안에서 생성된 in, out, err와 같은 객체들도 static으로 선언되어 있으며, 생성자(Constructor)도 없다.System 클래스에서 알아두면 매우 유용한 메서드에는 어떤 것들이 있는지 알아보자.자바의 JVM에서 사용할 수 있는 설정은 크게 두 가지로 나뉜다. 하나는 속성(Property) 값이고, 다른 하나는 환경(Environment) 값이다. 속성은 JVM에서 지정된 값 들이고, 환경은 장비(서버)에 지정되어 있는 값 들이..
J2EE 디자인 패턴에 대해 간단히 알아보자.위 그림은 사용자의 요청에 처리되는 순서로 생각하면서 위에서부터 아래로 보면 된다. 가장 윗부분은 프레젠테이션 티어이고, 중간 부분은 비즈니스 티어, 하단 부분은 인테그레이션 티어다. 위로 갈수록 화면에 가깝고, 아래로 갈수록 DB와 같은 저장소에 가깝다. Intercepting Filter 패턴요청 타입에 따라 다른 처리를 하기 위한 패턴이다.Front Controller 패턴요청 전후에 처리하기 위한 컨트롤러를 지정하는 패턴이다.View Helper 패턴프레젠테이션 로직과 상관 없는 비즈니스 로직을 헬퍼로 지정하는 패턴이다.Composite View 패턴최소 단위의 하위 컴포넌트를 분리하여 화면을 구성하는 패턴이다.Service to Worker 패턴Fro..
- 회고
- 경력관리
- spring
- 성능분석
- Java
- 자바스크립트
- 제주도 3박4일 일정
- Collection
- 리눅스 명령어
- 제주도 여행
- 자바
- SQL
- 정렬 알고리즘
- 프로그래머
- javascript
- 리액트 16
- Maven
- sort algorithm
- 이직
- 오라클
- Tomcat
- 개발환경
- Eclipse
- React
- effective java
- 소프트웨어공학
- 리액트
- Linux 명령어
- 프로그래머스
- 오라클 내장 함수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |