본문 바로가기

전체 글

eclipse - workspace, project, package, class 1 Workspace 이름 그대로 작업 공간 을 의미합니다. 그리고 이 작업공간에 대한 여러 메타데이터가 저장됩니다. 메타 데이터는 연관된 프로젝트들을 관리합니다. 1-1 metadata : all the installed plug-ins store preferences, configurations and temporary information a set of related projects some configuration pertaining to all these projects some settings for Eclipse itself 예들들어 이클립스 워크스페이스에서 tree 명령어를 통해 숨겨진 폴더까지 포함하여 찾아보면 .metadata 폴더가 있는 것을 알 수 있습니다. 그리고 .metadat.. 더보기
RHEL7의 malloc 만약 glibc malloc 메커니즘을 찾다가 오신 분들이라면 아래 링크를 꼭! 보신 후에 이 글을 참고로 봐주시면 좋겠습니다. 모든 내용을 다루기에는 너무 많아져서 어려웠던 부분과 느낀점을 위주로 정리하였습니다. 중간중간 arena와 같은 내용은 아래 링크에서 더 쉽게 확인가능합니다. sploitfun.wordpress.com/2015/02/10/understanding-glibc-malloc/ Understanding glibc malloc I always got fascinated by heap memory. Questions such as How heap memory is obtained from kernel? How efficiently memory is managed? Is it managed.. 더보기
Unicode와 encoding 정의 문자 집합(Character Set)은 정보를 표현하기 위한 글자나 기호들의 집합을 정의한 것입니다. 이런 문자나 기호의 집합을 컴퓨터에서 저장하거나 통신에 사용할 목적으로 부호화 하는 것을 문자 인코딩(부호화)이라 하고 인코딩 된 문자 부호(Character code)를 다시 디코딩(복호화)하여 본래 문자나 기호로 표현할 수 있습니다. Character Set → ( 인코딩 ) → Character Code → ( 디코딩 ) → Character Set 한글 인코딩 한글 표현(또는 작성 형태)에 따라 조합형과 완성형으로 나뉩니다. 조합형: 한글을 초성,중성, 종성으로 나누어 각각 1byte씩 총 3byte로 표현 완성형: 문자표를 토대로 문자를 인식합니다. 만약 문자표에 없으면 표현할 수 없는 단.. 더보기
git - branch 개발을 하다 보면 코드를 여러 개로 복사해야 하는 일이 자주 생긴다. 코드를 통째로 복사하고 나서 원래 코드와는 상관없이 독립적으로 개발을 진행할 수 있는데, 이렇게 독립적으로 개발하는 것이 브랜치다. 사람들은 브랜치 모델이 Git의 최고의 장점이라고, Git이 다른 것들과 구분되는 특징이라고 말한다. 당최 어떤 점이 그렇게 특별한 것일까. Git의 브랜치는 매우 가볍다. 순식간에 브랜치를 새로 만들고 브랜치 사이를 이동할 수 있다. 다른 버전 관리 시스템과는 달리 Git은 브랜치를 만들어 작업하고 나중에 Merge 하는 방법을 권장한다. 심지어 하루에 수십 번씩해도 괜찮다. Git 브랜치에 능숙해지면 개발 방식이 완전히 바뀌고 다른 도구를 사용할 수 없게 된다. 브랜치란 무엇인가 Git이 브랜치를 다루.. 더보기
JVM에 대하여 JVM JVM은 자바 소스코드로부터 만들어지는 자바 클래스 파일(.class)을 실행할 수 있다. JVM은 플랫폼에 의존적이다. 예를들어 리눅스의 JVM과 윈도우즈의 JVM은 다르다. 하지만 컴파일된 바이트 코드는 어떤 JVM에서도 동작시킬 수 있기 때문에 java는 플랫폼에 독립적이다. Class Loader 자바는 동적 로드, 즉 컴파일타임이 아니라 런타임에 클래스를 처음으로 참조할 때 해당 클래스를 로드하고 링크하는 특징이 있다. (필요할때마다 메모리에 찾고 없으면 올리기때문에 메모리에 중복으로 올라가는 클래스를 줄일 수 있다.) 이렇게 생성된 클래스파일들을 엮어서 JVM이 운영체제로부터 할당받은 메모리영역인 Runtime Data Area로 적재하는 역할을 Class Loader가 한다. 클래스 .. 더보기
address space VS virtual memory VS swap memory address space 컴퓨팅에서 주소 공간(住所 空間)은 물리 메모리나 가상 메모리, 레지스터, 네트워크 호스트, 주변 기기, 디스크 섹터, 다른 논리적 실체나 물리적 실체에 대응되는 주소의 범위를 정의한 공간(집합)을 말한다. 예를들어, 프로세스의 주소 공간은 메모리에 적재된다. 처럼 생각할 수 있다. 주소 공간이 메모리랑 무슨 차이일지 생각했는데, 주소 공간은 개념적으로 주소들의 공간이고, 메모리는 말 그대로 데이터를 담는 곳 virtual(logical) address space VS virtual memory 가상 주소 공간 프로세스가 생성되며 독립적으로 할당받는 주소들로, 다양한 메모리 기법으로 물리적 메모리와 매핑된다. 가상 메모리 멀티 프로그래밍 환경의 효율을 위해 프로세스 메모리가 램뿐.. 더보기
데드락 (DeadLock) 데드락이란? - 둘 이상의 프로세스에서 자기 자원은 놓지 않고(lock) 다른 프로세스가 자원을 내놓기를 바라는 상태 (wait) - 결과적으로 아무것도 완료되지 못해 무기한 기다리게 된다. - '교착 상태'라고도 부름 - 한정된 자원을 여러 곳에서 사용하려고 할 때 발생 데드락이 일어나는 경우 프로세스1과 2가 자원1, 2를 모두 얻어야 한다고 가정해보자 t1 : 프로세스1이 자원1을 얻음 / 프로세스2가 자원2를 얻음 t2 : 프로세스1은 자원2를 기다림 / 프로세스2는 자원1을 기다림 현재 서로 원하는 자원이 상대방에 할당되어 있어서 두 프로세스는 무한정 wait 상태에 빠짐 → DeadLock 멀티 프로그래밍 환경에서 한정된 자원을 얻기 위해 서로 경쟁하는 상황에서 발생할 수 있다. 데드락 발생 .. 더보기
배열 회전 백준에서 Maaaaaaaaaze 문제를 풀고 다른 사람 풀이를 봤었다. 그런데, 배열 회전에서 차이가 있었다 처음 배열 회전 시킬 때, 그냥 한 칸씩 이동하는 과정을 여러 번 반복했었다. 하지만, 회전의 특징? 을 고려하면 더 빠르고 깔끔하게 코드를 짤 수 있었다. 말로 설명하는 것보단 그림을 보는 것이 바로 이해하기 좋기 때문에 그림으로 대체.. 이 그림대로 모든 좌표 ( y, x) 를 ( x, height - y - 1 )로 바꾸면 간단하게 90 회전한 배열을 구할 수 있다. 사실 이걸 몰라도 어떻게든 회전할 수 있지만, 이 방법을 알아두는게 좋을 것 같아 따로 정리했다. 구현 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 .. 더보기