본문 바로가기

전체 글

(20)
[리뷰] 습관의 재발견 목차 작은 행동, 큰 결과습관은 어떻게 우리의 삶을 지배하는가의지력, 습관을 완성하는 가장 확실한 방법당신의 한계를 넓혀 주는 작은 습관의 힘작은 습관만의 작지만 위대한 차이큰 변화로 가는 여덟 계단작은 습관을 위한 체크리스트 리뷰 이 책의 저자는 스티븐 기즈라는 사람으로 해외에서 꽤나 유명한 파워블로거입니다. 매번 목표를 다짐하지만 매번 실패하는 현대인들에게 자신의 경험을 바탕으로 긍정적인 변화&습관을 얻기 위해서는 어떻게 해야할지에 대한 방법론을 설명해주는 내용입니다. 마음에 들었던 점은 뜬구름 잡는 소리를 하지 않고 명확하게 동감할만한 방법론에 대해 구체적으로 알려준다는 점이었습니다. 사실 저 또한 이 블로그를 운영하는 가장 큰 목적이 삶에 긍정적인 습관을 들이기 위해서 입니다. 어떠한 지식을 배우..
Chapter2 Linked Lists Createing a Linked ListLinkedList는 각 노드마다 다음 노드의 주소값을 가지고 있는 List입니다. 배열처럼 인덱스를 가지고 탐색하는것이 아니고 연결된 리스트를 하나하나 탐색하며 찾다보니 탐색에 대한 시간복잡도는 O(n)입니다. 대신 삽입/삭제 연산시에는 배열은 Shift하는 과정이 필요해서 복잡도가 O(n)이지만 LinkedList는 해당 노드의 앞뒤의 연결부분만 바꿔주면 되기 때문에 상수시간의 복잡도로 처리가 가능하다는 장점을 가지고 있습니다. 중간에서 삭제를 하거나 삽입을 하는 경우엔 케이스를 나눠서 구현하면 쉽게 구현할 수 있다. 헤드가 타겟 노드인 경우타겟노드가 중간에 있는 경우리스트의 마지막 노드가 타겟 노드인 경우때문에 위의 코드처럼 3가지 경우를 나눠서 연결 상태를..
Chapter1 Arrays and Strings [Hash Tables] 해쉬테이블은 key를 이용하여 value를 저장하는 자료구조이다. 해쉬란 수학적인 연산을 통해 최대한 중복되지않는 값을 만드는것이다. 좋은 해쉬알고리즘은 가능한한 중복된 값을 최소화 하는 해쉬 알고리즘이다. 때문에 보통 이런 해쉬 자료구조에서의 탐색 시간복잡도는 O(1)의 시간을 갖는다. 하지만 해쉬 알고리즘에 의해 동일한 key가 생성된다면 여러가지 방법으로 이를 처리한다. 대표적인것이 충돌시(중복된 key값을 해쉬에 의해 만들어내는것) 2개의 해쉬알고리즘을 사용하는것이고 두번째는 충돌이 발생할시 이를 순서대로 연결리스트로 저장하는것이다. 다음의 코드는 Integer 타입을 key로하고 Student 객체를 value로 하는 해시맵 자료구조를 사용하여 입력받은 Student 배..
[Java] Java 프로그램 실행 과정과 JVM(Java Virtual Machine) 메모리 구조 프로그래머가 작성한 .java 코드는 JVM이 이해할 수 없는 고수준의 언어이기 때문에 저수준의 언어로 컴파일 과정을 거쳐야한다. ###.java 파일을 컴파일하면 ###.class 파일로 변경되고 이는 "bytecode"라고 불리는 저수준의 실행가능한 기계어로 변경된다.(bytecode 는 JVM이 이해하고 실행 할 수 있다.) 다음은 JVM의 메모리 구조이다 각 영역의 기능은 다음과 같다.Class area(=method area, code area, static area) : 클래스의 필드, 메서드, 타입, 상수풀, static 변수 등의 정보가 저장된다.Stack area : 메서드 호출 시마다 스택 프레임(그 메서드만을 위한 공간)이 생성. 메서드 안에서 사용되어지는 값들 저장(매개변수, 지역변..