일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- react
- 이펙티브 자바
- mysql
- 기술면접
- aop
- 인덱스
- 네트워크
- CleanCode
- java
- 자바예외
- 인프런김영한
- 스프링부트와AWS로혼자구현하는웹서비스
- 자료구조
- AWS
- 혼공SQL
- 도메인 주도 개발 시작하기
- SQL쿡북
- MariaDB
- AWS RDS
- vue.js
- 자바
- 알고리즘분석
- DDD
- 자바스터디
- 알고리즘
- 이팩티브 자바
- jpa
- 클린코드
- 이펙티브자바
- 인프런백기선
- Today
- Total
목록java (7)
기록이 힘이다.

동기화하는 부분을 작게 만들어라 자바에서 synchronized 키워드를 사용하면 락을 설정한다. 같은 락으로 감싼 모든 코드 영역은 한 번에 한 스레드만 실행이 가능하다. 락은 스레드를 지연시키고 부하를 가중시킨다. 반면, 임계영역은 반드시 보호해야 한다. 따라서, 코드를 짤 때는 임계영역 수를 최대한 줄여야 한다. 올바른 종료 코드는 구현하기 어렵다 깔끔하게 종료하는 코드는 올바로 구현하기 어렵다. 가장 흔히 발생하는 문제가 데드락이다. 즉, 스레드가 절대 오지 않을 시그널을 기다린다. 깔끔하게 종료하는 다중 스레드 코드를 짜야 한다면 시간을 투자해 올바로 구현하기 바란다. 스레드 코드 테스트하기 코드가 올바르다고 증명하기는 현실적으로 불가능하다. 테스트가 정확성을 보장하지 않는다. 그럼에도 충분한 ..
클래스 체계 (자바의 경우) 가장 먼저 변수 목록을 작성 정적(static), 공개(public) 상수가 있다면 맨 처음에 나온다. 다음으로 정적 비공개(private)변수가 나오며, 비공개 인스턴스 변수가 나온다. 변수 목록 다음에는 함수가 나온다. 공개 함수를 먼저 쓴다. 비공개 함수는 자신을 호출하는 공개 함수 직후에 넣는다. ⇒ 추상화 단계가 순차적으로 내려간다. 캡슐화 변수와 유틸리티 함수는 가능한 공개하지 않는 편이 좋다. (반드시는 아니다) 때로는 protected로 선언해 테스트 코드에 접근을 허용하기도 한다. → 하지만 캡슐화를 풀어주는 결정은 언제나 최후의 수단이다. 클래스는 작아야한다 클래스를 만들 때 제일 중요한 것은 **“크기가 작아야 한다”**이다. → 여기서 작아야하는 것은 물..
Comparable 인터페이스의 유일무이한 메서드인 compareTo를 알아보자. 성격은 두 가지만 빼면 Object의 equals와 같다. compareTo는 단순 동치성 비교에 더해 순서까지 비교할 수 있으며, 제네릭하다. Comparable을 구현했다는 것은 그 클래스의 인스턴스들에는 자연적인 순서가 있음을 뜻한다. Arrays.sort(a); 검색, 극단값 계산, 자동 정렬되는 컬렉션 관리도 역시 쉽게 할 수 있다. public class WordList{ public static void main(String[] args){ Set s = new TreeSet(); Collections.addAll(s, args); System.out.println(s); } } 명령줄 인수들을 (중복은 제거하..

Cloneable 인터페이스는 Object의 protected 메서드인 clone의 동작 방식을 결정한다. Cloneable의 경우에는 상위 클래스에 정의된 protected 메서드의 동작 방식을 변경한 것이다. clone규약 x.clone() != x 반드시 true x.clone().getClass() == x.getClass() 반드시 true x.clone().equals(x) true가 아닐 수도 있다. 불변 객체라면 다음으로 충분하다. Cloneable 인터페이스를 구현하고 clone 메서드를 재정의한다. clone 메서드는 사실상 생성자와 같은 효과를 낸다. 즉, clone은 원본 객체에 아무런 해를 끼치지 않는 동시에 복제된 객체의 불변식을 보장해야 한다. 그래서 stack의 clone 메..
public class TopLine{ //코드 9-1 try-finally - 더 이상 자원을 회수하는 최선의 방책이 아니다! 47쪽 static String firstLineOfFile(String path) throws IOException{ BufferedReader br = new BadBufferedReader(new FileReader(path)); try{ return br.readLine(); }finally{ br.close(); } } public static void main(String[] args) throws IOException{ System.out.println(firstLineOfFile("pom.xml")); } } public class BadBufferedReader..
클래스의 인스턴스가딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 그래서 객체 인스턴스를 2개이상 생성하지 못하도록 막아야 한다. private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 막아야 한다. package hello.core.singleton; public class SingletonService { //1. static 영역에 객체를 딱 1개만 생성해둔다. private static final SingletonService instance = new SingletonService(); //2. public으로 열어서 객체 인스터스가 필요하면 이 static 메서드를 통해서만 조회하도록 허용한다. public static SingletonService getInst..

자바를 공부하고 프로젝트를 했지만 어딘가 약한 부분이 많다는 생각에 서점에 갔다가 집어든 책. 자료구조와 알고리즘이라는 단어에 꽂혀 읽기 시작했다. chapter1 인터페이스 chapter2 알고리즘 분석 chapter3 ArrayList 클래스 chapter4 LinkedList 클래스 chapter5 이중 연결 리스트 chapter6 트리 순회 chapter7 철학으로 가는 길 chapter8 인덱서 chapter9 Map 인터페이스 chapter10 해싱 chapter11 HashMap 클래스 chapter12 TreeMap 클래스 chapter13 이진 탐색 트리 chapter14 영속성 chapter15 위키피디아 크롤링 chapter16 불리언 검색 chapter17 정렬 세 가지 주제 1. ..