이번 포스팅은 사내에서 Spring Framework 에 대해 공유하기 위해 Spring Framework 서적을 기반으로 학습하고 이해한 내용을 정리한 포스팅이다. 포스팅에서는 Spring 3 버전대의 내용 기준으로 설명할 예정이다. 사실 전 회사에서 Spring Framework 를 사용했었고 현재 회사는 ruby on rails 를 사용하고 있기 때문에 Spring Framework 에 대해 깊이있게 다룰 생각은 없다. 다만 Spring Framework 가 지향하는 방향이나 핵심원리에 대해서 알고 있어야 다른 Framework 와의 차이점도 비교해볼 수 있고 시야를 넓힐 수 있기 때문에 이를 정리해 보려한다. 스프링 프레임워크란? 우선은 Spring Framework 란 무엇일까 위키에서 검색해봤..
오늘도 저번에 이어서 Effective Java 2/E 의 내용중 일부를 포스팅 한다. 역시나 책에 나온 내용을 바탕으로 내가 이해한 대로 다시 포스팅 하는거라서 저자가 의도한 것과는 다른내용이 있을수도 있다a 책의 내용이 궁금한 사람들은 직접 구입해서 읽어보면 좋을꺼 같다.ㅎ 오늘의 포스팅 내용은 "불필요한 객체는 만들지 말라." 이다. 처음에 이 제목을 보고 '당연한 소리를 하고있어..' 라고 생각했다. 그런데 책에는 크게 신경쓰지않고 제작한 코드에서 불필요한 객체가 생기고 그것이 프로그램의 속도에 영향을 준다는것을 강조하고 있었다. 그러한 실수의 예를 보면 다음과 같다. 다음과 같은 코드에서 isBabyBoomer() 함수가 문제이다. 사용자의 생일 정보와 BabyBoomer 에 태어난 사람인지 아..
요즘 Effective Java 2/E 라는 책을 구입하고 읽고있다. 읽어보면서 다른사람들과 공유하면 좋겠다라는 내용들이 있어서 생각날때마다 하나씩 포스팅 하려고 한다. 책에 나온 내용을 바탕으로 내가 이해한 대로 다시 포스팅 하는거라서 저자가 의도한 것과는 다른내용이 있을수도 있다a 책의 내용이 궁금한 사람들은 직접 구입해서 읽어보면 좋을꺼 같다.ㅎ 오늘의 포스팅 내용은 Builder 패턴이라는 것이다. Builder 패턴은 다음과 같은 모양의 패턴이다. 그렇다면 이러한 Builder 패턴은 어떠한 상황에서 쓰면 좋을까?? 책에서는 Builder 패턴을 다음과 같은 상황에서 쓰라고 추천한다. 상황. 만약 당신이 만드는 클래스 중에 생성자 인자가 많은 클래스가 있다면 생성자대신에 Builder 패턴을 사..
책을보다보니 자바의 리플렉션이라는 주제에 대해서 나왔다. 리플렉션이 뭔가 했더니 JVM에 인스턴스된 객체를 통해서 객체의 원래 클래스가 무엇인지, 어떤 메소드와 변수들을 제공하는지 등 클래스의 정보를 확인할수 있는 방법입니다. 우리가 애용하는 자동완성 기능이 이 방법을 이용해서 제공되는거라고 하더군요...! 또 한 알아낸 메소드나 클래스 변수를 이용하여 실행 또는 수정까지 할 수 있습니다. 책에서는 리플렉션을 통해서 얻을수 있는 정보는 다음과 같다고 설명해줍니다.1.클래스 이름2.클래스의 제어자3.패키지의 정보4.클래스의 부모 클래스5.클래스의 생성자6.클래스의 메소드7. 클래스의 변수8. 클래스의 Annotation 이중에서 우리는 생성자,메소드,변수만을 다뤄볼것입니다. 우선 다음과 같은 클래스가 있다..
이번에는 자바 멀티스레드 환경에서 동기화하는 법에 대해서 알아보겠다. 예전에 C++ 환경에서 멀티스레드 동기화 자료가 있으니 필요하신분들은 그쪽을 확인하시면 되겠다. 우선 동기화가 필요한 이유는 N개의 스레드가 공통자원을 사용할때 문제가 생기기 때문이다. 다음과 같은 코드가 있다고 할때 양쪽 스레드에서 res를 10000번 ++ 증가 시키기 때문에 2개의 쓰레드의 합으로 결과가 20000이 나올것이라 예상했다. 하지만 결과를 보면 우리의 예상과는 다르다. 이러한 값이 나오는 이유는 예를들어 th1이 res가 100인 값을 증가하려고 할 때 동시에 th2도 res 변수를 증가시키려고 할때가 있다. 그러면 사실 두 개의 스레드가 증가시켰으니 102가 되어야 하지만 th1과 th2가 동시에 res변수에 접근했..
앞에 포스팅에서 봤겠지만 MainThread가 종료됬다고해서 그 안에서 동작하던 Thread들은 종료되지 않는다.(http://idea-sketch.tistory.com/admin/entry/post/?id=17) 그래서 이번에는 MainThread가 종료될때 같이 종료되는 Thread를 만들어보자. 방법은 아주아주 * 100 간단하다!! 바로 setDaemon() 을 true로 설정하면 끝! 다음은 예제 코드이다. 실행결과이다. MainThread가 종료되고 난후 더이성 is Running...이 뜨지 않는다. 즉 그 안에서 동작중이던 Thread도 같이 종료되었다~ 누군가에게는 작은도움이 되었기를 바라면서 오늘의 포스팅 끝~
이전 포스팅에서 Thread에 대해서 간단하게 알아봤다면 이번에는 Thread 비정상 종료시 대응하는 방법에 대해 알아보겠다. 물론 나도 책을 보기전까지는 몰랐던 내용이다. -_-; 다음과 같은 코드가 있을때 MainThread가 죽어도 그 안에서 생성한 Thread는 살아서 동작하고 있다. 그럴때 동작중인 Thread를 종료하고 싶으면 Ctrl + C를 이용하면 현재 실행중인 JVM을 종료하면 된다. 그러나 이러한 종료상황은 안에서 동작하던 Thread의 입장에서는 비정상 종료이고 예기치 못한 결과를 얻을 수도 있다. (ex. 파일 저장중 강제종료로 인한 파일손상등...) 따라서 프로그램 실행중 종료가 요청되면 종료전에 필요한 수행작업을 꼭 하고 종료되어야 한다. 그래서 우리는 ShutDownHook을..
나는 지금까지 자바 프로그래밍을 하면서 String만 사용하였다. 그런데 String을 남용하면 JVM 메모리에 문제가 발생한다고한다. -_-; 그래서 책에서는 String 대신에 StringBuffer를 사용하라고 추천해준다. 사실 나는 StringBuffer를 사용해본적이 없다. 그런데 이녀석 알고보면 굉장히 좋은녀석이다. 일단 Thread-safe 하단다!! 우선 나는 String을 이런식으로 많이 사용했었다. 그런데 이렇게 사용하면 JVM 메모리에 많은 양의 Strng이 생성된다는 문제가있다고 한다. 그래서 여기서는 StringBuffer를 사용하라고 추천해준다. 이렇게 추천해줘도 일단 믿지 못하겠다. 테스트를 해보자!! public static void main(String[] args){ Sy..
이 포스팅은 누군가에게 JVM,JDK에 대해서 설명하기보단 내가 까먹을꺼 같아서 정리하는 포스팅입니다a 혹시나 잘못된점이 있다면 불쌍한 후배프로그래머를 위해서라도 꼭꼭 알려주세요. 오랜만에 자바책을 다시봤는데 예전에 알고있다가 잊어버린 내용들과 아예모르고 있던 내용들이 많이 있어서 다시 잊어버리기 전에 하나씩 포스팅할 예정입니다. JVM,JDK,JRE에 대해서 정리하기전에 우선 간단한 자바 사용환경부터 다시 정리해야겠다. - JavaSE(Java Standard Edition) 자바 표준 플랫폼으로 JVM운영환경과 API에 대한 개발환경을 갖추고 있다. - JavaEE(Java Enterprise Edition) J2EE라도 불리며 서버 기능 개발을 위한 플랫폼을 지칭한다. JavaSE를 바탕으로 웹 애..
엑셀파일내용을 분석해야할일이 생겼다. 노가다를 하기에는 도무지엄두가 안나서 프로그램을 짜서 해결하기로 결정. 엑셀파일을 읽을수 있게 지원해주는 라이브러리가 뭐가 있나 구글링을 해봤다. 발견된 녀석은 바로 이녀석 poi 홈페이지는 여기다. http://poi.apache.org/ 라이브러리 셋팅은 따로 설명하지 않겠다. ^^; 다음 코드는 엑셀파일을 읽어서 HashMap 으로 값을 반환해주는 녀석이다. 겉에 HashMap의 첫번째 값은 Row이고 속에 HashMap은 이다. 설명은 여기까지 다음은 코드이다. POIExcelManager.java import java.util.HashMap; public interface POIExcelManager { public HashMap GetRowHashMap(S..
- Total
- Today
- Yesterday
- MySQL
- dead lock
- 갭 락
- 엘라스틱서치 기초
- 메타프로그래밍
- autoload_paths
- 루비 상수
- 루비
- next key lock
- MySQL 인덱스
- 트랜잭션
- lock
- 되추적
- db
- 페어 프로그래밍
- InnoDB
- ruby
- mysql lock
- metaprogramming
- Autoloading
- Pair-programming
- 인덱스
- 루비 메타프로그래밍
- innoDB lock
- gap lock
- 페어프로그래밍
- 넥스트 키 락
- Elasticsearch Cluster
- ruby meta programming
- MySQL 족보
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |