분류 전체보기 146

JVM의 메모리 구조

자바 가상 기계 java virtual machine JVM은 java가 OS에 구애받지 않고, 재사용을 가능하게 해주고, 메모리관리, Garbage collection 을 수행하여 한정된 메모리를 효율적으로 사용해서 최고의 성능을 낸다. 스택 기반이다. 자바 프로그램 실행 과정 프로그램이 실행되면 JVM은 OS로부터 이 프로그램이 필요로 하는 메모리를 할당받는다. (JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. 자바컴파일러 (javac)가 자바 소스코드 (.java) 를 읽어들여 자바 바이트코드 (.class)로 변환시킨다. ( .java -> .class ) Class Loader를 통해 class파일을 JVM으로 로딩한다. 로딩된 파일들은 Execution engine을 통해 해..

이직준비/CS 2022.07.28

클린코드란?

: 가독성이 좋은 코드. 더 좋은 코드가 되기 위해서 코드리뷰를 하면 좋음 함수명을 통해 함수가 무엇을 하는지 바로 알수 있어야 한다. 함수 안에는 하나의 행동만 한다. 함수는 동사+명사이며, 변수는 명사이며 의미있는 이름인지 중복코드를 줄인다. (하드코딩 줄이기 ) 클린코드를 통해 유지보수 하기 좋은 코드가 될 수 있다. 함수안에서만 쓰이는 변수는 전역변수 대신 지역변수 전역변수 사용 줄이기 여러개발자가 함께 하는 프로젝트에서 확장성 있는 코드사용을 통해 프로젝트 협업능력 향상

이직준비/CS 2022.07.28

접근제한자 (public / protected/ default/ private )

접근제어자(접근을 제어하는 것) 를 통해 위험 요소를 줄일 수 있다. public, protected, default, private Public :어떤 클래스에서도 제한 없이 사용할 수 있는 접근제어자 Protected : 같은 패키지 안에 있거나 다른 패키지의 경우 상속관계의 클래스에서만 사용할 수 있는 접근제어자 Default : 같은 패키지 안에서만 사용 할 수 있다. 다른 패키지면 상속관계 여부 상관없이 사용불가. Private : 같은 클래스 안에서만 사용 가능 (cf. 패키지 > 클래스 ) Public Protected Default Private 같은 패키지, 같은 클래스 O O O O 같은 패키지, 상속관계 O O O X 같은 패키지, 상속관계 X O O O X 다른 패키지, 상속관계 O..

이직준비/CS 2022.07.28

DataBase의 인덱스 (Index) 란?

- 인덱스는 데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료 구조를 일컫는다. - 인덱스로 데이터의 위치를 빠르게 찾아주는 역할을 합니다. - 사용자는 데이터베이스에 저장된 자료를 더욱 빠르게 조회하기 위하여 인덱스를 생성하고 사용한다. 1. DB 인덱스(INDEX) 란? 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조 책 앞에 있는 목차라고 생각하면 이해하기 쉽습니다. 수천 장이 넘아가는 책 내용에서 원하는 정보만 빠르게 찾을 수 있는 이유도 목차가 있기 때문입니다. 마찬가지로 DB 테이블에 많은 양의 데이터를 모두 확인하면서 원하는 데이터를 찾는 것은 매우 비효율적인 일입니다. 데이터베이스도 목차처럼 데이터와 데이터 위치를 포함하는 자료구조를 통해 데이터 조회를 빠르게..

이직준비/CS 2022.07.28

[프로그래머스] 메뉴 리뉴얼(level.2) / JAVA, HashMap

https://school.programmers.co.kr/learn/courses/30/lessons/72411?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방식 Step1 . course의 사이즈만큼에 맞는 모든 조합의 배열을 찾는다. 모두 찾은 배열을 Map 의 Key 값에 넣고, 나온 숫자만큼은 value 값에 넣는다. 이 때, map.getOrDefulat 가 필요하다. (값이 없으면 0, 값이 있으면 +1. 해주기 위해서) Step2. 최대값 max를 찾아주고, map의 key가 max 값이자 2 이상인 경우 결..

Algorithm Study 2022.07.23

[프로그래머스] 양궁대회(level2) / JAVA, DFS

https://school.programmers.co.kr/learn/courses/30/lessons/92342 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내가 푼 방식 STEP1 . 10점부터 0점까지 라이언은 이길건지/ 질건지 모든순열의 조합을 구해야 한다. - 이길 경우: 어피치점수+1 - 질 경우: 0 점 (조건은, 양궁의 갯수를 확인하면서 점수를 메겨야 한다.) -> 우선 이부분은 DFS 로 푸는 방식이다. STEP2. 모든 경의 수를 다 구했다면, 어피치와 라이언의 점수차이를 구한다. - 어피치와 라이언의 점수가 같다면 어피치가 이긴다. ..

Algorithm Study 2022.07.23

아이템18. 상속보다는 컴포지션을 사용하라

아이템18. 상속보다는 컴포지션을 사용하라 상속은 코드를 재사용하는 강력한 수단이지만, 항상 최선은 아니다. 같은 프로그래머가 통제하는 패키지 안에서라면 상속도 안전한 방법이지만, 다른 패키지의 구체클래스 를 상속하는 일은 위험하다. 이 책에서 '상속'은 클래스가 다르 클래스를 확장하는 구현상속을 말한다. 상속이 위험한 이유 메서드 호출과 달리 상속은 캡슐화를 깨뜨린다. 상위클래스가 어떻게 구현되느냐에 따라 하위클래스의 동작에 이상이 생길 수 있다. 다음 릴리스에서 상위클래스에 새로운 메서드를 추가한다면? ex. 컬렉션에 추가된 모든 원소가 특정조건을 만족해야만 하는 프로그램 그 컬렉션을 상속하여 원소를 추가하는 모든 메서드를 재정의해 필요한 조건을 검사한다. 하지만, 상위클래스에 또 다른 원소 추가 메..

Algorithm Study 2022.06.24

아이템17. 변경 가능성을 최소화하라

아이템17. 변경 가능성을 최소화하라 불변 클래스란 그 인스턴스와 내부 값을 수정할 수 없는 클래스다. 불변 인스턴스에 간직된 정보는 고정되어 객체가 파괴되는 순간까지 절대 달라지지 않는다. 불변클래스를 만들기 위한 다섯가지 규칙 객체의 상태를 변경하는 메서드(변경자)를 제공하지 않는다. 클래스를 확장할 수 없도록 한다. 모든 필드를 final로 선언한다. 모든 필드를 private으로 선언한다. 자신 외에는 내부의 가변 컴포넌트에 접근할 수 없도록 한다. 함수형 프로그래밍 : 피연산자에 함수를 적용해 결과를 반환하지만, 피연산자 자체는 그대로인 프로그래밍 패턴 메서드 이름을 동사형(ex.add) 대신 전치사형(ex.plus)로 사용하여 강조한다. 함수형 프로그래밍을 사용하면 불변이 되는 영역의 비율을 ..

Algorithm Study 2022.06.24

아이템16. public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라

아이템16. public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 캡슐화의 이점을 사용하지 않는 퇴보한 클래스 Class Point{ public double x; public double y; } API를 수정하지 않고는 내부 표현을 바꿀 수 없고, 불변식을 보장할 수 없으며, 외부에서 필드에 접근할 때 부수작업을 수행할 수도 없다. 위 클래스를 객체 지향적으로 변경하기 위해 모든 필드를 private으로 바꾸고 public 접근자(getter)를 추가한다. Class Point{ private double x; private double y; public Point(double x, double y){ this.x= x; this.y= y; } publid double getX(..

Algorithm Study 2022.06.24

아이템15. 클래스와 멤버의 접근 권한을 최소화하라

아이템15. 클래스와 멤버의 접근 권한을 최소화하라 잘 설계된 컴포넌트의 가장 큰 핵심은 클래스 내부 데이터와 내부 구현정보를 외부 컴포넌트로부처 얼마나 잘 숨겼느냐 다. 모든 내부 구현을 완벽히 숨겨, 구현과 API를 분리하고 오직 API를 통해서만 다른 컴포넌트와 소통하며 서로의 내부 동작에는 전혀 개의치 않는다. 정보은닉, 혹은 캡슐화라고 한다. 정보은닉 (= 캡슐화) 의 장점 시스템 개발 속도를 높인다. 시스템 관리 비용을 낮춘다. 정보 은닉 자체가 성능을 높여주진 않지만, 성능 최적화에 도움을 준다. 완성된 시스템을 프로파일링해 최적화할 컴포넌트를 정한 다음, 다른 컴포넌트에 영향을 주지 않고 해당 컴포넌트만 최저화할 수 있기 때문이다. 소프트웨어 재사용성을 높인다. 낯선환경에서도 유용하게 쓰일..

Algorithm Study 2022.06.24