일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 리소스핸들러
- JsonSerializer
- rest api
- 백기선
- 리소스 서버
- 백트래킹
- @Profile
- 스프링부트
- 정적 리소스
- AuthenticationPrincipal
- WebApplication Type
- @ConfigurationProperties
- 백준
- HttpMessageConverters
- HATEOAS
- webjar
- 스프링 부트
- 다익스트라
- Application Argument
- 외부설정
- 알고리즘
- application.properties
- 브루트포스
- cors
- Spring Security
- EnableAutoConfiguration
- JPA
- Application Runner
- Application Event
- OAuth2
- Today
- Total
목록Java (5)
아카이브
1. HashTable은 thread-safe 하다. HashMap은 그렇지 않다. - thread-safe란? 멀티스레드 환경에서 동시 접근이 발생하는 경우에도 값의 내용이나 프로그램 실행에 문제가 없음을 보장하는 것이다. - 각 스레드에서 프로그램 실행 결과의 올바름을 보장한다. - thread-safe는 synchronized cost를 발생시키므로, 단일 스레드 환경에서는 HashMap의 성능이 더 좋다. 2. HashTable의 key는 not-null이고, HashMap은 하나의 null key와 다수의 null value가 허용된다. - HashTable의 key는 hashCode(), equals() 에서 사용되기 때문에 null을 허용하지 않는다.
equals() : 내용이 같은지, 동등성(equality) hashCode() : 같은 객체인지, 동일성(identity)equals()메소드를 오버라이딩 시 hashCode()도 오버라이딩 해야한다- Integer, String 클래스의 경우 같은 멤버 값에 대해서 같은 hashcode가 나올 수 있도록 오버라이딩 되어 있음- Object 클래스의 경우 hashCode()는 쓰레기 값을 반환- 즉, 사용자 정의 클래스의 경우 hashCode()를 오버라이딩 하지 않으면 같은 객체라도 hashcode가 다를 수 있음☞ 사용자가 hascode를 오버라이딩 해야 함 ☞ hashCode() 규약을 지키기 위함 1. equals() 로 비교시 두개의 오브젝트가 같다면, hashCode() 값도 같아야 한다.2..
1. class final - class가 상속되지 않도록 함- final class Sample {} 2. method final- method 오버라이딩을 차단- class Sample {void methodA() {...}} class Child extends Sample {// 상위 class의 method를 오버라이딩 할 수 없음} 3. variable final- final 변수가 초기화된 후 값을 변경할 수 없음- final int INF = Integer.MAX_VALUE- 문서화의 한 형태로 가독성을 높이고 수정이 간편함
interface와 abstract class의 목적- 구현하는 인터페이스나 상속받는 클래스 안에 있는 추상 메소드를 구현하도록 '강제'- 상호 보완적인 면 ● 자바는 다중 상속을 지원하지 않음 ● class A extends B implements C 등으로 사용 (다중상속을 가능하게 함) abstract class- 목적 : 상속받아 기능을 이용하고, 확장- class에 abstarct 메소드가 하나 이상 포함 interface- 목적 : 메소드의 구현을 강제하여, 구현한 객체들에 대해 동일한 동작을 약속, 다형성- 모든 메소드에 대한 명세만 존재- 자바 8에서 default keyword로 일반 메소드 구현 가능
String 과 StringBuffer/StringBuilder- String 객체는 immutable (초기화 이후 값을 변경할 수 없음)- String 연산 시, 기존의 객체를 변경하지 않고 새로운 String 객체를 만들어야 함- StringBuffer/StringBuilder는 새로운 객체를 생성하지 않고 동일한 객체를 지속적으로 변경할 수 있음● StringBuffer는 Thread-safe, StringBuilder는 해당 없음- String 연산 시 JVM이 String을 StringBuffer로 변환하기 때문에 오버헤드 발생 (String -> StringBuffer -> String)