목록전체 글 (287)
개발자는 기록이 답이다

클럭과 코어, 스레드 라는 개념을 학습하고, 빠른 CPU를 만드는 설계 기법인 멀티 코어와 멀티 스레드란 무엇인지 이해해보자. 또한 맥에서 코어 수와 스레드 수를 보는 방법도 포스팅했으니 1절의 맨 마지막 부분을 확인하면 된다. 1. 빠른 CPU를 위한 설계 클럭 CPU를 설계하는 엔지니어는 조금이라도 더 빠른 CPU를 만들어야 한다. 그렇다면 CPU를 어떻게 설계해야 할까? 컴퓨터 부품들은 '클럭 신호'에 맞춰 일사불란하게 움직인다 CPU는 '명령어 사이클'이라는 정해진 흐름에 맞춰 명령어들을 실행한다. 클럭 신호가 빠르게 반복되면 CPU를 비롯한 컴퓨터 부품들은 그만큼 빠른 박자에 맞춰 움직인다. 즉, 클럭 속도가 높아지면 CPU는 명령어 사이클을 더 빠르게 반복하고, 다른 부품들도 그에 맞춰 더 빠..

사람의 기억은 단기 기억과 장기 기억으로 분류할 수 있다 단기 기억 : 보관돼 있는 지식에 직접 접근할 수 있지만 정보를 보관할 수 있는 속도와 공간적 측면이 모두 제약을 받는다 장기 기억 : 경험한 내용을 수개월에서 길게는 평생에 걸쳐 보관하는 장소 일반적으로 장기 기억안에 보관돼 있는 지식은 직접 접근하는 것이 불가능하고, 먼저 단기 기억 영역으로 옮긴 후에 처리해야 한다 실제로 문제를 해결하기 위해 사용하는 저장소는 단기 기억이다. 하지만 문제 해결에 필요한 요소가 단기 기억의 용량을 초과하는 순간 문제 해결 능력은 급격히 떨어지는 인지 과부하(cognitvie overload)현상이 발생한다. 인지 과부하를 방지하기 위해 단기 기억 안에 보관할 정보의 양을 조절한다 한번에 다뤄야 하는 정보와 수를..
singleton 이란 인스턴스를 오직 하나만 생성할 수 있는 클래스이다. 싱글톤이 전형적인 예로 함수(item24)와 같은 무상태(stateless)객체나 설게상 유일해야 하는 시스템 컴포넌트를 들 수 있다. 인터페이스를 구현한 Singleton 객체가 아니라면 싱글톤 인스턴스를 mock 객체로 만들 수 없어 이를 사용하는 클라이언트를 테스트하기 어려워 질 수 있다. 1. public static final 필드 방식 public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() {...} public void leaveTheBuilding(){...} } private 생성자는 public static fin..

인터페이스와 정적 메서드 자바 8과 9에서 주요 인터페이스(e.g. Comparator)의 변화가 일어났다. 기본 메서드(defaultl method)와 정적 메소드를 가질 수 있다. 기본 메소드 인터페이스에서 메소드 선언 뿐 아니라, 기본적인 구현체까지 제공할 수 있다. 기존의 인터페이스를 구현하는 클래스에 새로운 기능을 추가할 수 있다. 정적 메소드 자바 9부터 private static 메소드도 가질 수 있다. 단, private필드는 아직도 선언할 수 없다. 자바 8 이전에는 interface에서 메소드선언만 가능하고 정의하는게 불가능했었다. 그런데 나는 자바 17을 사용하는데 왜 "Interface abstract methods cannot have body"라는 컴파일 에러가 나는것 일까? 인..