개발하면서
-
Garbage Collection개발하면서/etc 2009. 7. 2. 11:48
예전부터 조사해봐야지 생각만하다가 했음 나름대로 정리한것 우선 Java의 메모리 구조는 Eden, Survivor 1/2, Old, Perm으로 되어있다. Eden은 객체가 생성되면 저장되는곳이고, Survivor 1/2는 MinorGC가 일어날때마다 Eden에서 이동되는 공간이다. Old는 Survivor영역에서 오래된 객체가 저장되는 곳이다. 마지막으로 Perm은 Code가 저장되는 곳으로서 실행이후 일정한 수치를 유지하므로 신경안써도된다. 우선 맨 처음 Application이 실행되면, 객체가 Eden에 저장이 된다. 그러다가 GC가 발생하면 Eden에 있던 객체중 Alive된 객체는 Survivor1로 이동을 하고, Eden에 있는 나머지는 clear된다. 중간에 객체가 생성이되고 Eden에 저장..
-
Java File I/O개발하면서/etc 2009. 6. 24. 10:11
요새 검색엔진을 공부하고 있어서 그런지(핑계...ㅋ)블로그가 뜸했다. 여태까지 개발하면서 의문점이 들었던것들 하나하나 공부해보자 byte 단위로 읽은 File I/O 에서 skip, seek은 \r\n까지 계산해서 이동한다 우선 검색엔진 개발하면서 파일을 다뤄야되는데 바이트 단위로 읽을경우, file_size는 다음과 같이 구해야한다고 한다. (skip을하기 위해서) try { BufferedReader reader = new BufferedReader(new FileReader(filename)); while((str = reader.readLine()) != null) { doc.append(str); //line = str.getBytes(); //F_Size = F_Size + line.lengt..
-
바탕화면 넓게 보는 프로그램개발하면서/etc 2009. 5. 29. 00:50
http://www.360desktop.com/ 나의 노트북은 14인치. . . 가끔 개발하다보면 '아놔. . . 모니터 사고싶다'라고 생각한적이 한두번이 아니었습니다. 그러던중 이런 프로그램을 알게되었음 : ) 이동하는데 단축키가 아니라 마우스로 해서 불편한거 빼고는 정말 노트북을 쓰는 유저라면은 사용하면 좋은것 같습니다. 작업관리자에서 보면 30MB정도 사용합니다. 창하나 띄우고 보면서 개발하는거면 필요없지만 창을 많이띄우고 알트탭으로 하기 귀찮으신분이 쓰면 좋을것 같습니다. 아... 근데 지금 작업관리자 봤더니 익스플로러가 150을 쓰고있네요 탭도 지금 쓰는거 하나인데. . . 추가 : 윈도우상에서 멀티테스크탑 모음 http://link.allblog.net/17308298/http://jwmx.t..
-
파일 합치기개발하면서/etc 2009. 5. 21. 16:10
6000천개의파일을 하나로합쳐야한다. 또한파일들은 euc-kr이고 이것을 utf-8로 저장을 해야한다. 했던방법으로는 iconv -c -f euc-kr -t utf-8 ./*.xml > test-utf8.xml more *.xml > test.xml (혹시몰라 cat *.xml > test.xml) flyExplorer로 파일을합치기 C와Java로 파일열고 읽은다음에 파일쓰는거 짜기(C에서는 500개정도하면 멈춘다) 위와같은방법을 하면 파일이 깨져서 나오거나 중간에 쓰다가 멈추었다. 그래서 잠시 손을 놨다가 다시 시작을했는데 다음과 같은 명령어로하니 해결을 봤다. utf-8로인코딩은 RedUTF8라는 프로그램으로 변경한뒤 커맨드창에서 type *.xml > test.xml 아놔.... 인코딩은 어려버. ..
-
TCP Header개발하면서/etc 2009. 5. 6. 18:58
IP가 데이타 교환만을 하는데, TCP는 데이터 누락, 패킷의 순서 뒤바뀜 등의 교정 관련 기능을 가지고 있다. [TCP HEADER의 구조] (RESERVED는 6비트, CODEBITS는 CWR, ECE를 제외한 6비트로 가정하자.);;; 보기좋은거 따오다보니... . SOURCE PORT/DESTINATION PORT SOURCE PORT : 메시지를 보내는 측의 포트 DESTINATION PORT : 메시지를 받는 측의 포트 . SEQUENCE NUMBER 뒤에서 나올 SYN플래그가 설정되어있다면, SEQUENCE NUMBER는 초기화 된다. SYN이 설정이 되어있지 않다면 초기화된 SEQUENCE NUMBER + 1의 값이 들어간다.다음부터는 순서대로 +1이 되어 대입이 된다. 초기화된 SEQUE..
-
Swap방법개발하면서/etc 2009. 4. 25. 20:37
#define SWAP(a, b) ((&(a) == &(b)) || \ (((a) -= (b)), ((b) += (a)), ((a) = (b) - (a)))) #define SWAP(a, b) (((a) ^= (b)), ((b) ^= (a)), ((a) ^= (b))) 임시 저장변수 없이 SWAP을 해준다. unsigned int i, j; // positions of bit sequences to swap unsigned int n; // number of consecutive bits in each sequence unsigned int b; // bits to swap reside in b unsigned int r; // bit-swapped result goes here int x = ((b >..
-
String vs StringBuffer개발하면서/etc 2009. 4. 17. 14:31
String str = new String ("Stanford "); str += "Lost!!"; 바이트 코드로 변환하면 아래와 같다. 0 new #7 3 dup 4 ldc #2 6 invokespecial #12 9 astore_1 10 new #8 13 dup 14 aload_1 15 invokestatic #23 18 invokespecial #13 21 ldc #1 23 invokevirtual #15 26 invokevirtual #22 29 astore_1 String '+'연산을 할때 임시저장소 StringBuffer을 만든뒤 append를 한 후 다시 String으로 변환하는 작업을 한다. 바이트 코드로 변환하면 다음과 같다 StringBuffer str = new StringBuffer..