이펙티브 자바 Item 20을 읽으면서... "default 메서드에 equals와 hashCode, toString처럼 Object의 메서드를 재정의하지 말라"라는 문구가 있었습니다. 🤔 코드를 작성해보니..? 컴파일 에러가 발생한다..? 어라라..? 옛날에는 이게 가능했나보네 싶었고 왜 이제 컴파일 에러가 발생하는 걸까? 라는 궁금증이 생겼습니다. 혹은 똑똑한 intellij가 😎 만약 클래스 B는 의도적으로 Object 클래스를 구현하는 A 인터페이스를 구현할 수 있다면?? B는 Object 클래스와 Interface 중에서 어떤 equals를 사용해야 할까요..? (충돌이 일어날거 같다?) 찾아보니 이런 규칙이 있었다! 클래스는 항상 승리한다! 뭔가 멋있네요.. 명언같기도 하고 즉, 우선순위가 하..
Database에서 index의 종류는 다양하지만 크게 Clustered Index와 Non-Clustered Index로 나뉜다.Cluster 사전적 의미군집화, 집속체, 무리, 밀접해있는 다수의 무언가를 총칭한다.Clustered Index: 실제 데이터와 같은 무리의 인덱스Non-Clustered Index == (Secondary Index,보조인덱스): 실제 데이터와 다른 무리의 별도의 인덱스 😲 우리도 모르게 인덱스가 생겼었다???Table을 생성할 때 PK는 Clustered Index가 Unique 정보를 통해서는 Non-Clustered Index가 생성되게 됩니다.PK가 없는 경우 MySQL의 InnoDB는 기본적으로 데이터를 저장하고 Indexing하기 위해 Primary Key가..
🤔 인덱스(Index)란? 인덱스란 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조이다. 실생활 속에서 우리는 책에서 원하는 내용을 찾기 위해서 책의 처음부터 끝가지 원하는 내용을 찾지 않는다. 목차나 인덱스에서 원하는 내용을 먼저 찾은 뒤 해당 내용이 있는 페이지를 찾아간다. DB는? 데이터베이스에서도 우리와 같이 시간을 알뜰하게 쓰기 위해서 데이터와 데이터의 위치를 포함한 자료구조를 생성해서 빠르게 조회할 수 있도록 인덱스를 사용한다. DB에서 데이터 조회 요청 DB에서 데이터 조회 요청을 하면, DB 서버 프로세스는 메모리(DB 버퍼 캐시)를 먼저 확인한다. 메모리에는 자주 사용되는 테이블이 캐싱되어 있는데, 메모리에 원하는 데이터가 없는 경..
@Test public void 문자열_비교() { // when String hello = "hello"; String hello2 = "hello"; //TODO 이 방법은 권장하지 않습니다. String hello3 = new String("hello"); //then assertThat(hello == hello3).isFalse(); assertThat(hello.equals(hello2)).isTrue(); assertThat(hello == hello2).isTrue(); assertThat(hello == hello2).isTrue(); } 동일한 기능을 함에도 여러번 생성하는 경우들이 있는데 하나씩 알아보자 1️⃣ 문자열 📌 문자열 생성 방법 String hello1 = "hello"; ..
애플리케이션을 만들다보면 어떤 인스턴스가 애플리케이션에서 하나만 있어야 하는 경우가 있다. 객체의 인스턴스가 오직 1개만 생성되는 디자인 패턴인 싱글턴 패턴을 이용할 수 있다. 대규모 트래픽을 처리할 수 있도록 spring에서 Application Context에 의해 등록된 빈은 싱글톤으로 관리하고 있다. 더보기 요청 1번에 5개의 객체가 만들어진다고 하고, 1초에 500번 요청이 온다고 하면 초당 2500개의 새로운 객체가 생성된다. 아무리 GC의 성능이 좋아졌다 하더라도 부하가 걸리면 감당이 힘들 것이다. 이러한 문제를 해결하고자 빈을 싱글톤 스코프로 관리하여 1개의 요청이 왔을 때 여러 쓰레드가 빈을 공유해 처리하도록 하였다. 출처: https://mangkyu.tistory.com/151 [Ma..