본문 바로가기

분류 전체보기53

[ 객체 지향의 사실과 오해 1 - 4장 ] 후기 [ 읽은 계기 ]예전에 자바를 배우면서 읽은적이 있습니다. ( 1년전 )느낀점은 "솔직히 무슨말인지 모르겠다. 객체 지향은 어렵다..." 였습니다. 이후 시간이 흘렀습니다.최근 블로그 글을 읽다가 " 클래스와 객체의 차이를 아시나요? " 라는 내용이 있었습니다."음... 차이가 뭐지? 책에 있었는것 같은데"를 계기로 읽게 되었습니다. [ 추천 독자 ]책의 표현 : "코드를 작성한 경험이 많을수록, 객체지향 언어에 대한 지식이 많을수록 더 깊이 이해한다."책의 내용은 반복적으로 이야기 하지만 쉬운 내용은 아니라고 생각 합니다.그레서 이런 경험이 있는 분이면 도움이 더 많이 될 것 같습니다.객체지향 언어를 통해 무언가를 만들어 본적이 있다.객체지향에 대해 관심이 많다. [ 느낀점 ] 다형성 : 같은 책임을 .. 2025. 3. 5.
[ 백준/Java ] 2573. 빙산 백준 링크 : https://www.acmicpc.net/problem/2573 🌱 [ 문제 요약 ] 위와 같은 빙산이 있다. 숫자는 빙산의 높이 이며 숫자가 없는 칸은 바다이다.1년마다 빙산이 높이가 줄어 든다. 빙산이 줄어드는 크기는 빙산의 상하좌우를 보았을 때 바다의 개수 이다.빙산이 두개 이상의 묶음으로 나누어 지는 것은 몇년 후인가?( 단. 빙산이 두개 이상으로 나누어 지지 않는다면 0을 출력 해야 한다. )  🔥  [ 주의 : 빙산이 녹을때 다른 빙산이 녹는 크기에 영향을 주지 않는다. ] 1년이 지날갈 때, 그림의 높이가 2인 빙산이 녹는다. 주위 바다가 2개 있으므로 이 빙산의 높이는 0이 된다. 같은 1년 이므로, 높이가 3인 빙산이 녹을때는 높이가 2인 빙산이 녹아서 바다가 된것을 .. 2025. 2. 28.
[ Spring ] Enum Type 검증 🌱 [ 문제 상황 ] 회원가입을 할 때, 성별(Gender)을 입력 해야 합니다.성별의 타입은 Enum 타입 입니다. ( "FEMALE", "MALE" )성별에 바인딩 되지 않는 값( "test")은 Json parse 실패 합니다.잘못된 성별을 입력 했을때 성별을 잘못 입력 했다고 알려줄 수 없을까요?🌱 [ 해결 방안 ] 잘못된 Json 값을 null로 바인딩 하자.검증을 도입 하여 null 혹은 잘못된 값일 경우, 예외 메시지를 전달 하자.🌱 [ 잘못된 값은 null로 바인딩 하자 ]잘못된 값이 생겼을 경우 바인딩에 실패 하며 Json parse 실패 문구를 보게 됩니다.잘못된 값은 null로 바인딩 해보겠습니다. 📝 [ @JsonCreator ] Json 데이터를 String to Enum .. 2025. 2. 25.
[ JPA ] 모임 동시 참가 낙관적 / 비관적 락 적용 🌱 [ 문제 상황 ]- 모임은 최대 수용 인원(capacity) 존재 합니다.- 만약 여러 회원이 동시에 모임에 참가 한다면 동시성 문제가 발생할 수 있습니다.- 동시성 문제를 어떻게 해결할 수 있을까요?🌱 [ 해결 방안 ] 낙관적 락- 락을 걸지 않고 어플리케이션에서 해결 하는 방법- 두번의 갱신 분실 문제에 대해서 첫번째 수정만을 인정 합니다. [ 낙관적 락은 어떻게 동작 할까요? ]  1. 낙관적 락은 @Version 어노테이션을 엔티티에 적용 합니다.2. 엔티티가 업데이트 될 경우 version을 증가 시킵니다.3. 트랜잭션이 종료 될때, 자신이 읽어온 버전과 같은지 Update SQL을 통해 확인 합니다.- 그림에서는 트랜잭션 A가 먼저 수행 하였으므로 트랜잭션 A만 커밋이 됩니다.[ 낙관적.. 2025. 2. 16.
[Java] HashMap 저번 시간을 통해 hash 함수로 hashCode를 구하고, hashCode로 hashIndex를 구하는 과정을 대략적으로 보았습니다.실제 hashMap은 어떻게 구현 했는지 살펴 보겠습니다.key 값으로 String이 들어온 경우 hashCode를 어떻게 구하는지 알아 보겠습니다. [String hashCode]public static int hashCode(byte[] value) { int h = 0; int length = value.length >> 1; for (int i = 0; i  String은 값 자리의 char값을 통해 hashCode를 구합니다.각자리의 char 값을 통해 hash를 누적 하며 31과 곱해 주는것을 볼수 있습니다.왜 31을 곱할까요?그 이유는 짝수를 .. 2025. 1. 23.
[Java] Hash ( eqauls, hashCode ) [ equals /  hashCode ]  해쉬 자료구조를 사용 하려면 equals, hashCode를 오버라이딩 해야 합니다.오버라이딩 하지 않으면 어떤 문제가 발생 하는지 알아 보겠습니다.회원 객체를 Set 자료구조에 저장 하는 예제 입니다.public class HashSetTest { public static void main(String[] args) { Set memberSet = new HashSet(); Member member1 = new Member("1번", 10); Member member2 = new Member("2번", 20); Member member3 = new Member("1번", 10); memberS.. 2025. 1. 17.