JMH 설치 및 설정 JMH는 JDK를 오픈소스로 제공하는 OpenJDK에서 만든 성능 측정용 라이브러리이다.JMH는 Mercurial이라는 코드 저장소를 사용하기 때문에 Mercurial을 설치해야만 한다. 하단의 URL에 접속하여 각 OS 별 다운로드를 통해 설치한다.https://www.mercurial-scm.org/downloads 정상적으로 설치했다면 원하는 디렉토리에서 다음 명령어를 실행한다. $ hg clone http://hg.openjdk.java.net/code-tools/jmh/ jmh코드 다운로드가 완료되면 다음 명령어를 실행하여 메이븐 빌드를 한다. $ cd jmh $ mvn clean install -DskipTests=true메이븐 빌드가 완료되었으면 메이블 로컬 저장소에 J..
점층적 생성자 패턴(Telescoping Constructor Pattern)생성자 인자에 대해 생각해 본 적이 있는가? 때로는 생성자 인자가 너무 많을 때도 있다. 예를 들어 항목이 20개 쯤 되는 필드를 상상해 보자. 보통의 프로그래머들은 이런 상황에 점층적 생성자 패턴(telescoping constructor pattern)을 적용한다. 필수 인자만 받는 생성자를 하나 정의하고, 선택적 인자를 하나 받는, 둘 받는 인자를 계속해서 추가하는 식으로 생성자를 쌓아 올리듯 추가하는 것이다. 이런 조합 가능성을 다 고려한다면 생성자는 끊임없이 많아지게 된다. 또한, 설정할 필요가 없는 필드에도 인자를 전달해야 하는 경우가 생긴다. NutritionFacts cocaCola = new NutritionFa..
알고리즘 문제는 아닐지라도 실타래를 한 올씩 풀어서 답을 찾는 문제를 풀어보자.이 문제를 만든 사람은 "상대성 이론"으로 유명한 앨버트 아인슈타인(Albert Einstein)이라고 알려져 있는데, 확인된 바는 없다. 사물을 기억할 수 있는 두뇌의 메모리 용량이 특별하게 큰 사람이 아니라면 아마 종이와 연필을 이용해서 논리의 흐름을 하나씩 따라가는 것이 필요할 것이다. 전제서로 색이 다른 5채의 집이 있다.각 집에는 출신 나라가 서로 다른 사람이 살고 있다.각 집주인은 5가지 다른 종류의 음료수를 마시고, 상표가 다른 담배를 피우며, 애완동물을 한 마리씩 키운다.음료, 담배, 동물은 일치하지 않는다. 주어진 정보를 토대로 "금붕어"를 기르는 사람은 누구일까? 조건1. 영국 사람은 빨간 집에서 산다.2. ..
프랙탈(fractal) 구조란 전체의 모습이 작은 부분에서 똑같이 반복되고 있는 경우를 뜻한다."재귀"란 동일한 함수에 대한 호출이 반복되는 것이로, 이진 트리의 모습을 가만히 생각해 보면 그것이 동일한 구조가 반복되는 프랙탈(fractal) 구조을 하고 있음을 알 수 있을 것이다.그런데 이진 트리에서 일부분을 따로 보면 그것이 여전히 이진 트리의 모습을 하고 있기 때문에 이진 트리는 프랙탈(fractal) 구조에 해당한다.말하자면 재귀란 프랙탈(fractal) 구조의 알고리즘적 반영이다.
애자일 매니페스토우리는 스스로 소프트웨어를 개발하고, 다른 사람들이 개발하는 것을 도와주면서 더 나은 소프트웨어 개발 방법들을 찾고 있다. 이 과정에서 우리는 다음과 같은 가치를 중요하게 생각한다. 절차와 도구보다 개성과 화합을방대한 문서 작업보다는 동작하는 소프트웨어를계약 조건에 대한 협상보다는 고객과의 협력을계획을 따르는 것을 넘어서서 변화에 대처하는 것을더 가치있게 여긴다. 좌측의 사항도 가치가 있음을 인정하지만 우리는 우측의 사항에 더 높은 가치를 둔다는 것이다. 애자일 매니페스토의 원칙1. 가치있는 소프트웨어를 일찍, 지속적으로 전달하여 고객을 만족시키는 것을 최우선으로 한다. 2. 개발의 막바지 단계이더라도 고객의 요구사항 변경을 환영한다. 애자일 프로세스들은 변화를 활용하여 고객의 경쟁력을 ..
애자일2001년 2월, 소프트웨어 업계에 영향력이 있는 17명이 유타(Utah)주의 스키 리조트에 모였다. 방대한 문서 작업을 기반으로 하는 소프트웨어 개발 방법론에 어떤 대안이 있을지 토론하기 위한 모임으로 시작되었다.애자일은 단일 개념이 아니다.애자일 원칙과 방법론들은 절차적인 부분과 기술적인 부분의 두 종류로 나눌 수 있다. 애자일 방법론들은 모두 빠르고 짧은 피드백 루프에 대한 것이다. 피드백 주기가 짧으면 문제를 신속하게 파악할 수 있어 상황 파악도, 적응도 빠르다. 애자일은 문제 자체를 해결해 주지는 않는다. 애자일은 문제를 드러나게 한다. 절차적인 관점에서의 애자일애자일 원칙의 절차적인 부분들은 팀과 조직이 어떻게 구성되고 협업해야 하는지에 대한 것들을 규정한다. 팀에 정말로 중요한 것, 비..
static factory method클래스를 통해 객체를 만드는 일반적인 방법은 public으로 선언된 생성자(constructor)를 이용하는 것이다. 그러나 모든 프로그래머가 반드시 알고 있어야 하는 방법이 하나 더 있다. 클래스에 public으로 선언된 정적 팩터리 메서드(static factory method)를 추가하는 것이다.정적 팩터리 메서드(static factory method)는 디자인 패턴 중 팩터리 메서드 개념(Factory Method)과 다르다는 점에 유의하자. public static Boolean valueOf(boolean b) {return b ? Boolean.TRUE : Boolean.FALSE;}위 코드는 실제 Boolean class의 method이다. 장점이름이..
모든 개발자가 알면서도 지키지 않는 것이 있다. 바로 문자열 관련 부분이다. 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에서 지정된 값 들이고, 환경은 장비(서버)에 지정되어 있는 값 들이..
- Java
- 개발환경
- 성능분석
- 경력관리
- 이직
- Collection
- effective java
- 리눅스 명령어
- 제주도 3박4일 일정
- 제주도 여행
- 회고
- Tomcat
- React
- javascript
- sort algorithm
- 프로그래머
- 소프트웨어공학
- SQL
- 오라클 내장 함수
- 프로그래머스
- 자바
- 리액트
- Eclipse
- 정렬 알고리즘
- 오라클
- spring
- Maven
- 자바스크립트
- Linux 명령어
- 리액트 16
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |