728x90
반응형

전체 글 168

[CS] 캐시 메모리(Cache Memory)

🎯 캐시 메모리(Cache Memory) 어떤 프로그램을 동작시키기 위해서는 메모리에 적재가 되고 CPU를 할당받아야 동작이 된다. 이때 CPU와 메모리(RAM) 사이에서 활발하게 데이터를 주고받게 되는데 CPU에 비해 비교적 속도가 느린 메모리에 의해서 제대로 성능을 내지 못한다. 캐시 메모리는 CPU와 RAM 사이에서 발생하는 병목 현상을 완화 하고자 사용된다. 캐시 메모리는 CPU 사이에 존재하며 캐시 메모리에 데이터가 존재한다면 메모리에 접근할 필요가 없으므로 성능상 이점을 얻을 수 있다. 캐시 메모리의 목표 ✅ 캐시 적중률의 최대화 & 부적중률(不的中律)의 최소화 ✅ 캐시 레이턴시의 최소화 ✅ 캐시 대역폭의 최대화 ✅ 캐시 정책 및 알고리즘의 최적화 ✅ 캐시 부적중에 따른 패널티의 최소화 ✅ 데..

CS 2023.03.25

[Effective Java] 아이템 56. 공개된 API 요소에는 항상 문서화 주석을 작성하라.

🎯 아이템 56. 공개된 API 요소에는 항상 문서화 주석을 작성하라. 문서화 주석은 API를 문서화하는 가장 훌륭하고 효과적인 방법이다. 공개 API라면 빠짐없이 설명을 달아야 한다. 표준 규약을 일관되게 지키자. 문서화 주석에 임의의 HTML 태그를 사용할 수 있음을 기억하라. 단, HTML 메타문자는 특별변하게 취급해야 한다. javadoc click here. 자바독은 소스코드 파일에서 문서화 주석이라는 특수한 형태로 기술된 설명을 추려 API문서로 변환해준다. 참고 자료 Joshua Bloch, 『Effective Java 3/E』, 개앞맵시 옮김, 프로그래밍인사이트(2018) http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mal..

Java 2023.03.25

[Effective Java] 아이템 55. 옵셔널 반환은 신중히 하라.

🎯 아이템 55. 옵셔널 반환은 신중히 하라. 값을 반환하지 못할 가능성이 있고, 호출할 때마다 반환값이 없을 가능성을 염두에 둬야 하는 메서드라면 옵셔널을 반환해야 할 상황일 수 있다. 하지만 옵셔널 반환에는 성능 저하가 뒤따르니, 성능에 민감한 메서드라면 null을 반환하거나 예외를 던지는 편이 나을 수 있다. 그리고 옵셔널을 반환값 이외의 용도로 쓰는 경우는 매우 드믈다. 옵셔널은 원소를 최대 1개 가질 수 있는 '불변'컬렉션이다. 보통은 T를 반환해야 하지만 특정 조건에서는 아무것도 반환하지 않아야 할때 T 대신 Optional를 반환하도록 선언하면 된다. 컬렉션에서 최댓값을 구한다(컬렉션이 비었으면 예외를 던진다). public static E max(Collection c) { ..

Java 2023.03.25

[CS] 중앙기억장치(CPU)

🎯 중앙처리장치(CPU) 작동 원리 CPU(Central Processing Unit)는 산술논리연산장치, 제어장치, 레지스터로 구성되어 있는 컴퓨터 장치를 말하며, 인터럽트에 의해 단순히 메모리에 존재하는 명령어를 해석해서 실행하는 일꾼이다. ⭐ 제어장치 제어장치(CU, Control Unit)는 프로세스 조작을 지시하는 CPU의 한 부품이다. 입출력장치 간 통신을 제어하고 명령어들을 읽고 해석하며 데이터 처리를 위한 순서를 결정한다. ⭐ 레지스터 레지스터는 CPU 안에 있는 매우 빠른 임시기억장치를 말한다. CPU와 직접 연결되어 있으므로 연산 속도가 메모리보다 수십 배에서 수백 배까지 빠르다. CPU는 자체적으로 데이터를 저장할 방법이 없기 때문에 레지스터를 거쳐 데이터를 전달한다. ⭐ 산술논리연산..

CS 2023.03.24

[Effective Java] 아이템 54. null이 아닌, 빈 컬렉션이나 배열을 반환하라.

🎯 아이템 54. null이 아닌, 빈 컬렉션이나 배열을 반환하라. null을 반환하는 API는 사용하기 어렵고 오류 처리 코드도 늘어난다. 그렇다고 성능이 좋은 것도 아니다. 컬렉션이나 배열 같은 컨테이너가 비었을 때 null을 반환하는 메서드를 사용할 때면 항시 방어 코드를 넣어줘야 한다. 클라이언트에서 방어 코드를 빼먹으면 오류가 발생할 수 있다. 실제로 객체가 0개일 가능성이 거의 없는 상황에서는 수년 뒤에야 오류가 발생하기도 한다. 빈 컬렉션을 반환하는 올바른 예 public List getCheeses(){ return new ArrayList(cheesesInStock); } 대부분의 상황에서는 이렇게 하면 된다. 가능성은 작지만, 사용 패턴에 따라 빈 컬렉션 할당이 성능을 눈에 띄게 떨어 ..

Java 2023.03.24

[Effective Java] 아이템 53. 가변인수는 신중히 사용하라.

🎯 아이템 53. 가변인수는 신중히 사용하라. 인수 개수가 일정하지 않은 메서드를 정의해야 한다면 가변인수가 반드시 필요하다. 메서드를 정의할 때 필수 매개변수는 가변인수 앞에 두고, 가변인수를 사용할 때는 성능 문제까지 고려하자. 인수가 1개 이상이어야 하는 가변인수 메서드 - 잘못 구현한 예! static int min(int... args) { if (args.length == 0) throw new IllegalArgumentException("인수가 1개 이상 필요합니다."); int min = args[0]; for (int i = 1; i < args.length; i++) if (args[i] < min) min = args[i]; return min; } 이 방식에는 문제가 몇 개 있다...

Java 2023.03.24
728x90
반응형