javaSpring 중복코드 줄여보기Spring 다형성, 상속성을 이용한 중복코드 줄여보기 스프링부트를 활용하면 상당 부분 설정이 편리해진 부분이 있었지만, 흔한 MVC 패턴에서(물론 실제 개발은 MVVM 패턴으로 개발중) 엔드포인트 혹은 엔티티가 늘어 날 때마다 반복되는 코드들이 생…
java제네릭 1편 와일드카드 (Generic Wildcard)Java 와일드카드 제네릭 제네릭은 Unbound wildcard라고 불리며, 어떤 타입이 될지 모른다 라는 의미입니다. wildcard가 사용된 제네릭은 타입으로 들어온 타입에 대하여 관심이 없다 라는 의미도 되며 기능적인 메소드 외에 원소 값과…
imageExif metadata로 이미지 회전시키기Exif? 디지털 카메라 등에서 사용되는 이미지 파일 메타데이터 포맷으로, 카메라가 촬영한 사진, 녹음파일에 시간 등의 각종 정보를 담기 위해 개발되었다. 즉, JPEG, TIFF 6.0과 RIFF, WAV 포맷에 이미지나 소리에 대한 정보를 추가로…
javaSOLID 5원칙에피소드 예전에 전 직장 동료 분들과 함께 하는 점심 식사 자리에서 데이터 모델링에 대한 심화 적인(?) 주제로 대화를 나누다가 객체지향에 대한 주제로 번졌고, 그 중 동료분이 “SOLID 아시죠?” 라는 질문에 저는 “가수 SOLID요?” 라고 답…
javaJPA Locking낙관적 락 충돌이 발생하지 않을 거라고 낙관적으로 가정하는 방법 데이터베이스 레벨이 아닌 JPA레벨에서 버전 관리 기능을 통해 구현되어있음 테이블에 version 관리를 할 컬럼을 지정해놓고 읽었을 때의 버전과, 변경 할 때의 버전이 같지 않으면 예…
aopAOP 관점지향프로그래밍AOP 직역하면 관점지향프로그래밍 인데, 한국말로 들으면 전혀 와닿지 않습니다. 좀 더 이해가 가기 쉬운 의미로 해석해보자면, 애플리케이션 전체에 걸쳐 사용되는 기능을 재사용하도록 지원하는 것입니다. 실무에서는 흔히 공통적인 흐름의 코드를 적용시켜 …
jvmJVM GC종류와 튜닝GC 종류 먼저 GC에는 크게 Minor GC, Major GC, Full GC가 있는데, Minor GC와 Full GC에서는 GC를 하기위해 JVM으로부터 구동되는 애플리케이션이 모두 stop 되는 stop-the-world가 상태가 됩니다. S…
reflectionJava ReflectionJava Reflection 객체를 통해서 객체 클래스 정보를 분석해내는 프로그래밍법을 의미한다. 또한 위키백과에서 설명하기로는 컴퓨터 과학에서의 Reflection(반영)은 런타임 시점에 사용되는 자신의 구조와 행위를 관리하고 수정할 수 있는 프로…
직렬화직렬화(Serialization)!?직렬화 객체의 상태를 저장하기 위해서 객체를 byte stream 으로 변환하는 것을 의미한다. 그 반대는 deserialization(역직렬화) 라고 한다. 흠.. 직렬화를 알고 싶었는데 stream?이 또 뭐란 말인가? 컴퓨터의 stream에 대…