본문 바로가기

분류 전체보기84

Arrays.sort() Collections.sort()에서 사용되는 알고리즘 Arrays.sort() Collections.sort()에서 사용되는 알고리즘 🔴 Arrays.sort() 배열을 정렬하는 Arrays.sort에 대해 알아보자. Arrays,sort의 코드를 확인했을 때 아래와 같이 주석과 코드가 나왔다. 이를 토해서 보면 듀얼피봇 퀵정렬(Dual-Pivot QuickSort)를 사용한다고 명시되어 있는 것을 확인할 수 있다. /* * * Sorts the specified array into ascending numerical order. * * Implementation note: The sorting algorithm is a Dual-Pivot Quicksort * by Vladimir Yaroslavskiy, Jon Bentley, and Joshua Blo.. 2024. 3. 6.
.equals와 .hashCode() .equals와 .hashCode() Object 메서드에 있는 .hashCode() 메서드는 해당 객체의 주소값을 이용하여 만든 객체만의 고유한 정수 값을 가진다. equals()를 오버라이딩 할 때에는 반드시 hashCode()도 동일한 결과를 내도록 함께 오버라이딩 해주어야 한다. 차근 차근 알아보기. Card a = new Card('트럼프카드',10) Card b = new Card('트럼프카드',10) a == b // a와 b는 내용만 같을 뿐, 다른 객체라서 False가 나온다. a.equals(b) // 이 결과가 True 나오게 오버라이딩했다면 a.hashCode() == b.hashCode() // 이 결과도 True가 나오도록 오버라이딩해야 한다. 🔴 동.. 2024. 3. 6.
자바 가상 머신 JVM(Java Virtual Machine) 시스템 메모리를 관리하면서, 자바 기반의 애플리케이션을 위해 이식 가능한 실행 환경을 제공함 JVM은 다른 프로그램을 실행시키는 것이 목적. 갖춘 기능으로는 크게 2가지로 말할 수 있음 1) 자바 프로그램이 어느 기기나 운영체제 상에서도 실행될 수 있도록 하는 것 2) 프로그램 메모리를 관리하고 최적화하는 것 개발자들이 말하는 JVM은 보통 어떤 기기상에서 실행되고 있는 프로세스, 특히 자바 앱에 대한 리소스를 대표하고 통제하는 서버를 지칭한다. 자바 애플리케이션을 클래스 로더를 통해 읽고, 자바 API와 함께 실행하는 역할. JAVA와 OS사이에 중개자 역할을 수행하여 OS에 구애받지 않고 재사용을 가능하게 해줌 * JVM에서의 메모리관리 JVM 실행에 있어서 가장 일반적인 상호작용은, 힙과 스택의 메.. 2024. 2. 27.
String, StringBuffer, StringBuilder String, StringBuffer, StringBuilder String 특징 new 연산을 통해 생성된 인스턴스의 메모리 공간은 변하지 않음 (Immutable) Garbage Collector로 제거되어야 함 문자열 연산시 새로 객체를 만드는 OverHead 발생 객체가 불변하므로, Multithread에서 동기화를 신경쓸 필요가 없음 (조회 연산에 매우 큰 장점) String 클래스 : 문자열 연산이 적고, 조회가 많은 멀티쓰레드 환경에서 좋음 StringBuffer, StringBuilder 특징 -공통점 new 연산으로 클래스를 한 번만 만듬(Mutable) 문자열 연산시 새로 객체를 만들지 않고, 크기를 변경시킴 StringBuffer와 StringBuilder 클래스의 메서드가 동일함 -.. 2024. 2. 26.
Redis, Redis와 Memcache차이 Redis란? 간단정리 : Key-value store NOSQL DB이다. 싱글 스레드로 동작하며 자료구조를 지원한다. 그리고 다양한 용도로 사용될 수 있도록 다양한 기능을 지원한다. 데이터의 스냅샷 혹은 AOF로 그를 통해 복구가 가능해서 어느정도 영속성도 보장한다. 스프링에서는 세션을 관리하거나, 캐싱을 하는데 자주 사용된다. (backend-interview-question 발췌) key로 가져올 수 있는 자료형은 기본적으로 String이지만, value는 다양한 타입을 지원함. 메모리 기반 데이터베이스이기 때문에, Disk를 기반으로 하는 RDBMS보다 read가 빠르다. RDBMS도 쿼리를 통해 조회해오면, 메모리에 존재하는 Buffered Cache를 이용한다고 함. (cache hit) B.. 2024. 2. 23.
순열구하기 (DFS) import java.util.*; //순열 구하기 //중복해서 뽑으면 안됨 ch[] pm[] 배열 필요 class Main{ static int n, m; static int[] pm, ch, arr; public void DFS(int L){ if(L==m) { for(int x : pm) System.out.print(x + " "); System.out.println(); } else { for(int i=0; i 2024. 2. 5.