CPU나 memory와 같은 자원은 항상 한계점이 있기 마련입니다. 그 한계점에 도달했을 때, 어떻게 동작케 하도록 조정하겠느냐의 문제가 매우 중요합니다. 이러한 고민의 여부가 때론 프로그래머의 수준이 실무적인 경험이 있느냐 그렇지 않느냐의 차이로 나타납니다. TCP/IP Socket 프로그램을 짤때, 크게 수준에 따라 네가지 방법이 있습니다. 첫째, ServerSocket에서 accept()상태에서 대기하다가 accept()에서 요청이 떨어지면 그제서야 new YourThread(client)를 생성하여 해당 Socket 요청을 처리하는 Thread를 만들고, ServerSocket 은 다시 accept()의 while loop로 돌아가는 것이지요. 이것의 문제는 두가지인데, 하나는 매 요청마다 Thr..
LOG4J I. 들어가면서.. 그리고 log4j log4j는 자바 어플리케이션에서 빠르고 효과적으로 로깅 할 수 있도록 도와주는 오픈 소스 프로젝트입니다. 로깅(logging)은 코드의 가독성을 떨어뜨리는 단점이 있지만 애플리케이션에 문제가 있을 때 개발자가 자세한 상황을 파악할 수 있도록 해 주며 테스팅시 빠질 수 없는 요소입니다. 아마도 여러분들은 여러 어플리케이션이 추가되면서 각 개발자들만의 독특한 로깅방식이 서로 썩이고 얽혀서 화면에 나타나는것을 많이 봤을겁니다 -_-; 즉 로깅방법을 통일할 필요가 있는것이죠. 모든 개발자가 특정 포맷에 맞추어서 로깅 한다면 한결 로깅하기도 편하겠지요 오픈 소스 프로젝트인 Log4j는 개발자들이 매우 손쉽고 다양한 형태로 로깅을 할 수 있도록 도와줍니다. 성능또한..
로깅 API의 필요성 애플리케이션을 개발할 때 디버깅을 위해서 System.out.println을 사용하는 경우가 많다. 윈도우의 경우 명령 프롬프트에서 출력 결과를 볼 수 있어 디버깅 툴로 IDE를 쓰지 않을 때에 가장 단순하고 편리한 방법으로 인식되어 왔다. 간단한 애플리케이션인 경우에는 System.out.println을 사용하여도 크게 관계는 없다. 그렇지만 간단한 테스트 정도가 아니고 애플리케이션이 일정 정도의 규모를 넘어서는 복잡성을 지닐 때는 이 방법에는 몇 가지 문제가 있다. 문제가 되는 지점 찾기 시스템 출력을 사용하여 널 포인터 에러를 찾거나 애플리케이션이 어느 곳까지 실행되었는지 찾아야 하는 경우가 있다. 어디까지 에러없이 실행되었는지 알고자 할때는 출력 내용상 별 의미가 없는 문장을..
링크 주소 : http://ant.apache.org/index.html 이클립스는 기본적으로 Ant 플러그인을 내장하고 있다. 특별히 설정해줘야 하는 것이 없음에도 불구하고 Ant Build 를 하면 아래와 같은 에러가 발생했다. -------------------------------------------------------- com.sun.tools.javac.Main is not on the classpath. Perhaps JAVA_HOME does not point to the JDK. It is currently set to "C:\jre1.6.0" -------------------------------------------------------- 환경변수 설정에서 JAVA_HOME 을 ..
최대공약수의 정의 ===> 최대공약수란 주어지는 두 정수의 약수 중에서 가장 큰 공통되는 약수를 뜻한다. 예를들어 280과 30의 약수는 280의 약수 : 1, 2, 4, 5, 7, 8, 10, 14, 20, 28, 40, 56, 70, 140, 280 30의 약수 : 1, 2, 3, 5, 6, 10, 15, 30 이다. 이중 공통되는 약수는 1, 2, 5, 10이며 그중에 10이 최대공약수(GCD)이다. 수학교과서에 나오는 최대공약수를 구하는 방법은 소인수분해를 이용하여 구한다. 허나 소인수분해를 이용한 최대공약수를 구하는 방법은 손으로 풀기에는 더할나위 없이 좋지만 컴퓨터로 구현하기에는 조금은 껄끄럽다. 그래서 유클리드의 알고리즘을 컴퓨터에서 쓴다. 유클리드 알고리즘 유클리드 알고리즘은 뺄셈과 두 값..
String a[] = {"a", "b", "c"}; String b[] = {"a", "b", "c"}; String c[] = {"a", "c", "b"}; ArrayList d = new ArrayList(); d.add(a); d.add(b); d.add(c); // 배열에 들어 있는 값의 비교(배열 자체의 비교가 가능하다.) System.out.println(Arrays.equals(d.get(0), d.get(1))); System.out.println(Arrays.equals(d.get(0), d.get(2))); ------------------------------------------------------------ 출력 결과 ---------------------------------..
- Total
- Today
- Yesterday
- Vista
- One UI
- antimalware
- 옹이생일
- 볼링
- 크리스마스 파티
- cvs설정
- 작업표시줄투명처리
- Variable-Length Argument Lists
- @tistory.com
- 오라클 계정 생성
- 제약산
- 시작메뉴초기화
- d90
- CORS
- 모데기
- 테더링 링크
- 화면잠금 단축아이콘
- 함양 나들이
- 은행나무숲
- 모데기 모임
- win10
- 윈도우 인코딩 설정
- Cross-origin
- 보라매공원
- 제주도기행
- UI변경
- TMP
- 64비트
- CDPUserSvc
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |