본문 바로가기
728x90

카테고리252

enumMap, enumSet 에 대해 간략히 알아보자. enumMap? enumSet? enumMap, enumSet 도 Map, Set 인터페이스를 구현한다. 사용하려면 key 값으로 enum 이 있어야 하는 제약이 있음. null 을 추가할 수 없음 enumMap 은 map 처럼 같지만 enum 타입을 키로 사용하는데 특화됨 hashMap 은 키를 해싱해서 저장하지만 enumMap은 enum 상수를 인덱스로 사용하기 떄문에 해시충돌도 일어나지않음. put메소드 수행시 key 값에 ordinal 메소드를 통해 index 정보를 가져온다. jpa에서도 본 ordinal (0, 1, 2, 3, 4...) enumMap 은 내부적으로 배열로 구현되어 있기 때문에 접근 속도가 빠르다. enumSet은 다 비슷하지만 내부적으로 키가 있다 없다를 판단하는 지시자가 들.. 2023. 1. 19.
[이펙티브자바]item 15. 클래스와 멤버의 접근 권한을 최소화하라 구현과 API 분리하는 정보은닉 장점 시스템 개발 속도를 높인다 인터페이스 설계시 사용하는 쪽과 지원하는 쪽이 동시에 개발이 가능하다. 시스템 관리 비용을 낮춘다 컴포넌트를 더 빨리 파악할 수 있기 떄문에, 인터페이스 위주로 빠르게 파악이 가능하다 소스프퉤어 재사용성을 높인다 모듈화가 잘되어 있따면 병목지점을 빠르게 찾아서 처리할 수 있다. 시스템 개발 난이도를 낮춘다 큰 시스템을 개발할때 작은 단위로 나눠서 구현하다보면 전체를 구현할 수 있다. 모든 클래스와 멤버의 정급성을 가능한 한 좁혀야 한다. 톱레벨 클래스와 인터페이스에 pakage-private(default) 또는 public 을 쓸 수 있다. public 으로 선언하면 API가 되므로 하위 호환성을 유지하려면 계속 관리해야 한다. 패키지 외.. 2023. 1. 19.
[이펙티브자바]item14.Comparable을 구현할지 고려하라. 추후 업데이트 예정. 2023. 1. 19.
DB 인덱스는 왜 대부분 B-Tree 를 쓸까 B-Tree vs Hash..링크공유.. 대부분의 디비는 hash index 보다는 B-Tree index 를 지원하는데 왜 그런지 궁금해서 찾아봄. https://www.youtube.com/watch?v=at2sMaNYqCE https://helloinyong.tistory.com/296 https://tech.kakao.com/2016/04/07/innodb-adaptive-hash-index/ MySQL InnoDB의 Adaptive Hash Index 활용 개요 MySQL의 InnoDB에는 Adaptive Hash Index 기능이 있는데, 어떤 상황에서 효과가 있고 사용 시 반드시 주의를 해야할 점에 대해서 정리하도록 하겠습니다. InnoDB B-Tree 인덱스 MySQL의 InnoDB의 대표적인 tech.kakao.com 정리가 감.. 2023. 1. 19.
인텔리제이 javadoc 만들기 추후 포트폴리오나, 필요에 의해 javadoc 을 만들어 제공해주면 더 좋을 것 같아, 사용법을 정리해본다. 주석같은경우 조금만 살펴보면 더 실용적으로 남길 수 있다. 인텔리제이 기준. Tools -> Generate javaDoc 클릭 Output directory 설정 후 ok 참고: https://dejavuhyo.github.io/posts/intellij-generate-javadoc/ IntelliJ Javadoc 생성 1. JavaDoc 메뉴 선택 dejavuhyo.github.io 2023. 1. 19.
클래스풀 (Classful IP Addressing) - 클래스풀 (Classful IP Addressing) - IP 주소는 네트워크 주소와 호스트 주소로 나뉜다. - *IP 주소 - 서로 통신하기 위한 네트워크 주소 - *네트워크 주소 - Host 들을 관리하기 위한 네트워크 범위를 지정하여 관리하기 위해 만듦 - 같은 네트워크는 같은 네트워크에 있다는걸 의미, 자유롭게 통신 가능 - *호스트 주소 - 호스트를 관리하기위한 것 - 네트워크 안에 고유 번호 같은 것 === - IPv4는 A, B, C, D, E 총 5개의 클래스로 네트워크 주소체계를 구분 지을 수 있음 - 크기에 따라 구분되어짐 - D, E 는 잘 사용되지 않음.(D는 멀티캐스트 통신, E는 예비용) - 옥텟의 크기에 따라 A, B, C 구분가능 - *옥텟: IPV4 주소체계 (32비트).. 2023. 1. 18.
IPv4 vs IPv6 차이점과 누가 더 빠를까? - IPv4 & IPv6 - IPv4 - 32비트 주소체계 8비트 단위로 점으로 나뉜다.ex) 172.58.49.44 - 각 8비트 단위를 옥텟 이라고 한다.4개의 옥탯으로 구성되어 있음. - IPv6 - 128비트 주소체계 16비트 단위로 콜론으로 나뉜다.ex) 2001:db8::ff00:42:8329 - 앞의 연속된 0 은 생략가능 - 앞64비트는 네트워크, 뒤 64비트는 인터페이스 주소를 나타냄 - IPSec 이 내장되어 있음 - 데이터 패킷을 암호화 하는 보안 네트워크 프로토콜 - https://aws.amazon.com/ko/what-is/ipsec/ - IPv4 보다 헤더 부분이 단순해 짐 - 차이점 - IPv4 는 체크섬이 있찌만 IPv6 는 체크섬이 없다. - 헤더 체크섬(Header Ch.. 2023. 1. 18.
[이펙티브자바]item13.clone 재정의는 주의해서 진행하라. 자꾸 Object 에 있는 메서드들을 오버라이딩할때 조심하라는데.. Object 은 구상클래스로서([Concrete class]: new 키워드를 통해 인스턴스를 만드는 클래스) 이러한 구상클래스는 내부구현이 되어 있어야 한다. 하지만 몇몇 메서드 들은 되어 있지 않다. clone, toString, hashCode, equals 등등 이러한 메서드 들은 오버라이딩할때 지켜야할 몇가지가 있다. 이러한 주의점들과 해결책들을 계속 말해주는것 같다. 근데 왜 다른것들은 final 이 아니라 오버라이딩을 가능하게 했을까? 음..편의성 떄문인가 입맛대로 수정할 수 있게끔?필요할때마다 다른 기능을 구현해야할 상황이 있어서 ===Cloneable 을 상속받아 clone 메서드를 override 하면 Cloneable.. 2023. 1. 18.
[이펙티브자바]item12.toString을 항상 재정의하라. 요즘 코틀린만 써서 toString을 재정의 안해서 편했는데,, toString 을 보기좋게 원하는 데이터를 볼 수 있도록, 재정의하도록 하자. ide 도움을 받아서 override 하면 될듯하다. 2023. 1. 17.
728x90