본문 바로가기

전체 글

(596)
[남궁성 '자바의 정석'] 164~171강 ※ 이 글은 남궁성 저자의 '자바의 정석' 164~171강을 수강한 후 정리한 내용입니다. 1. 람다식 iterate(), generate() iterate()는 이전 요소를 seed로 해서 다음 요소를 계산한다. Stream evenStream = Stream.iterate(0, n -> n + 2); // 0, 2, 4, 6, ... generate()는 seed를 사용하지 않는다. Stream randomStream = Stream.generate(Math::random); Stream oneStream = Stream.generate(()->1); // 1, 1, 1, 1 ... 2. 스트림 중간 연산의 핵심은 map()과 flatmap() 3. 스트림 중간 연산 - sorted() 연산 Comp..
[남궁성 '자바의 정석'] 156~163강 ※ 이 글은 남궁성 저자의 '자바의 정석' 156~163강을 수강한 후 정리한 내용입니다. 1. 임계영역 : 한 번에 한 개의 쓰레드만 접근 가능한 영역 synchronized로 임계영역을 설정하는 방법 2가지 public synchronized void calcSum(){ // Do Something } synchronized(참조변수){ // Do Something } 2. wait()과 notify() 동기화의 효율을 높이기 위해 사용 Object 클래스에 정의되어 있으며 동기화 블록 내에서만 사용 가능하다. wait(): 객체의 lock을 풀고 쓰레드를 해당 객체의 waiting pool에 넣는다 notify(): waiting pool에서 대기중인 쓰레드 중의 하나를 깨운다. notifyAll(..
[남궁성 '자바의 정석'] 132~155강 ※ 이 글은 남궁성 저자의 '자바의 정석' 132~155강을 수강한 후 정리한 내용입니다. 1. HashTable은 old 버전, HashMap은 new 버전 HashTable은 동기화가 처리되어 있고, HashMap은 동기화가 되어있지 않다. 2. TreeMap은 TreeSet과 비슷한 특성을 가졌다. 이진탐색트리로 구성되어 있다. TreeSet이 내부적으로는 TreeMap으로 구현되어 있다. 3. 순서를 유지할 필요가 있을 땐 LinkedHashMap을 쓴다. 4. HashMap은 데이터가 많아도 검색이 빠르다. 해싱기법으로 데이터를 저장하기 때문. 키가 중복되어 들어갈 경우 최근 값으로 덮어써진다. 4. 해싱(Hashing) 해시 함수로 해시 테이블에 데이터를 저장 & 검색 해시 테이블은 배열과 링..
[남궁성 '자바의 정석'] 112~131강 ※ 이 글은 남궁성 저자의 '자바의 정석' 112~131강을 수강한 후 정리한 내용입니다. 1. 래퍼(Wrapper) 클래스 8개의 기본형을 객체로 다뤄야할 때 사용하는 클래스. 객체지향 언어인 자바에서 객체가 아닌 기본형을 사용하는 이유는 성능 때문. 2. Number 클래스 Long => 10^19 Double => 10^308 BigInteger => Long보다 더 큰 정수 BigDecimal => Double보다 더 큰 실수 3. 오토박싱 & 언박싱 오토박싱: 기본형 -> 래퍼클래스 언박싱: 래퍼클래스 -> 기본형 JDK 1.5 이전에는 기본형과 참조형간의 연산이 불가능했었다 4. java.util.Date 클래스 1995년 말 JDK 1.0 버전부터 사용했기 때문에 Date 메서드는 거의 de..
[남궁성 '자바의 정석'] 94~111강 ※ 이 글은 남궁성 저자의 '자바의 정석' 94~111강을 수강한 후 정리한 내용입니다. 1. 내부 클래스의 장점 1) 내부 클래스에서 외부 클래스의 멤버들에 쉽게 접근할 수 있다. 2) 코드의 복잡성을 줄일 수 있다. (캡슐화) 2. JDK 1.8부터는 final 키워드를 생략해도 값이 안 바뀌면 컴파일러가 상수 취급한다. 원래 JDK 1.8 이전의 자바에서 외부 클래스의 지역 변수는 final이 붙은 변수(상수)만 접근 가능했다. 그래서 final 키워드를 생략하면 무조건 에러가 났었는데 JDK 1.8 이후에는 해당 변수가 한번도 변하지 않으면 에러가 나지 않는다. (JAVA가 알아서 final 취급하도록 변경됐기 때문) 3. 상수는 따로 관리하고 있어서 함수를 빠져나가도 메모리에 상수가 남아있다. ..
권력은 나쁜 게 아니다 (feat. 권력의 원리 - 줄리 바틸라나, 티치아나 카시아로) 힘 그 자체는 선하지도 악하지도 않다. 이를 어떤 식으로 행사하느냐는 전적으로 우리 자신에게 달려 있다. 내가 권력이라는 단어를 들으면 함께 생각나는 단어들이 비선 실세, 배후 세력, 부패, 더러움 등등 부정적인 내용들이 대부분이었다. 그래서 은연 중에 힘을 행사하고 권력을 원하는 모습은 나쁘다고 생각했을지도 모르겠다. 하지만 책 “권력의 원리”에서는 나의 색안경을 벗겨주어 힘이라는 개념의 본질을 보게 해 준 책이었다. 책에서 말하는 힘의 본질은 다음과 같다. 힘은 그 누구도 소유할 수 없다. 상대방에 대한 나의 힘은 상대방이 무엇을 원하고 필요로 하는지, 그것에 대한 접근을 내가 통제할 수 있는지에 좌우된다. 반대의 경우도 마찬가지다. 내가 가치 있게 여기는 것을 상대방이 얼마나 통제할 수 있느냐에 따..
[남궁성 '자바의 정석'] 76~93강 ※ 이 글은 남궁성 저자의 '자바의 정석' 76~93강을 수강한 후 정리한 내용입니다. 1. java.lang 패키지의 클래스는 import하지 않고도 사용할 수 있다. 2. 객체지향에서는 다형성이 거의 원탑으로 중요하다. 3. instanceof 연산자는 참조변수의 형변환 가능여부 확인에 사용한다. 형변환 가능하면 true를 리턴함. 형변환 전에는 반드시 instanceof로 형변환 가능한지 확인하고 진행하자. 4. 다형성 장점 1) 다형적 매개변수 : 부모 매개변수로 여러 자식 매개변수를 받을 수 있음 2) 하나의 배열에 여러 종류 객체 저장 가능 5. 인터페이스는 추상 메서드의 집합 (프로그래밍 관점) 인터페이스: 인스턴스 변수를 가질 수 없고 추상 메서드'만' 모아놓음 (JDK 1.8 이전까지는...
[남궁성 '자바의 정석'] 61~75강 ※ 이 글은 남궁성 저자의 '자바의 정석' 61~75강을 수강한 후 정리한 내용입니다. 1. static 메소드(클래스 메서드)는 일반적으로 사용하던 인스턴스 메서드와 다르다. 1) 객체 생성없이 '클래스이름.메서드이름()'으로 호출 2) 인스턴스 멤버(instance variable, instance method)와 관련없는 작업을 하는 메서드 3) 메서드 내에서 인스턴스 변수 사용 불가 2. 생성자에서 다른 생성자 호출시 "첫 줄"에서만 사용 가능. 안그럼 에러난다. 그리고 생성자에서 다른 생성자를 호출하려면 함수이름 대신 this()로 호출해야 한다. 참조변수 this랑은 전혀 다르니까 연관짓지 마라. 3. 프로그래밍은 설계 90 + 코딩 10 설계는 그리기이다. 그리기를 많이 해봐야 잘 그릴 수 ..