본문 바로가기
728x90
반응형

분류 전체보기647

어제 비가 옴 어제 점심은 뭘 먹었더라 집에 남아있던 찜갈비 몇조각이랑 계란후라이 치킨너겟 냉동떡갈비 좀 구워서 먹었던것 같다 (맛 없었다) 점심먹고 헬스장갔다가(깔짝깔짝 하고 나옴) 나왔는데 비가 억수같이 내렸다. 우산을 안갖고가서 그냥 비 맞으면서 집에 왔다. 이미 다 젖은김에 팔거천 가서 강물 흐르는것 구경도 했다. 그러고 나서 집에서 좀 쉬었다. 내가 챙겨보는 유튜브 채널이 있는데, 야생토끼를 찍어서 올리는 채널이다. 할아버지같은 분이 가끔씩 찾아오는 야생토끼 2마리(흰색,회색)를 찍어서 올리신다. 요근래 토끼들 영상이 안 올라오다가 약 4달만에 새로운 영상이 올라왔다. 흰색 토끼가 오랜만에 돌아와서 기쁘다는 내용이었다. 근데 회색토끼는 영 보이지 않아서 아무래도 안좋은 일이 있거나 먼곳으로 간것같다고 한다. .. 2023. 7. 12.
인스턴트 이치란라멘을 먹다 일본에서 먹었던 돈코츠라멘이 자꾸 먹고싶었다. 생각해보니까 돈키호테에서 이치란라멘을 사왔었다. 5인분 들어있고 이게 아마 천몇백엔 했던거같은데 그럼 한국돈으로 만몇천원 하겠다 (이거 살때 우리나라 라면 생각하고서 5인분에 만원 넘는다는게 좀 비싼거같다고 생각했었음) 까보니 면이랑 스프 고춧가루가 5개씩 들어있다. (면은 1인분씩 나누어져 있음) 물 450ml에 면넣고 2분30초 끓이고, 스프까서 넣으면 끝이다. (감동란 까서 넣고 차슈 대신에 찜갈비 좀 잘라서 넣음) 집에 쪽파가 없어서 못넣은게 좀 아쉬웠고 차슈가 없었던게 좀 아쉬웠다 감동란은 꼭 올려먹자. 신라면 끓이는것보다 간단하고 빠른데, 국물에서 진짜 돼지 묵직한 맛이 나서 놀랐다. 쪽파랑 차슈만 좀 준비해서 먹으면 진짜 파는맛 날듯 그리고 매운.. 2023. 7. 12.
@MappedSuperclass 공통 매핑 정보가 필요할 때 사용할 수 있다. MappedSuperclass 어노테이션이 적용된 클래스는 엔티티로 직접 매핑되지 않으며, 데이터베이스 테이블로 생성되지 않는다. 대신, MappedSuperclass 어노테이션이 적용된 클래스를 상속하는 하위 클래스에서 해당 클래스의 속성과 매핑 정보를 상속받아 사용할 수 있다. MappedSuperclass로 지정된 클래스는 공통적으로 사용되는 속성이나 매핑 설정을 정의할 수 있다. 예를 들어, 여러 엔티티 클래스에서 공통적으로 사용되는 생성일자(createdDate)와 수정일자(modifiedDate)를 MappedSuperclass 클래스에 정의하고, 해당 클래스를 상속받는 엔티티 클래스에서는 추가적인 속성만 정의하여 사용할 수 있다. MappedSu.. 2023. 7. 7.
상속관계 매핑 관계형 데이터베이스에서 상속 관계를 구현하는 전략은 주로 다음과 같이 세 가지 방법이 사용된다. 1. 조인 전략 (Join Strategy): 조인 전략은 각각의 서브타입에 해당하는 테이블을 별도로 생성하고, 슈퍼타입과 서브타입 간의 관계를 조인을 통해 맺는 방식이다. 이 전략에서는 슈퍼타입과 서브타입의 속성을 각각의 테이블에 저장하며, 서브타입 객체를 조회할 때 조인을 사용하여 필요한 정보를 가져온다. 이 방식은 데이터베이스 정규화를 지원하며, 서브타입의 추가나 삭제가 용이하다. 하지만 매번 조인이 필요하기 때문에 성능에 영향을 줄 수 있다. 저장공간은 효율화되지만 쿼리가 복잡하다. @Entity @Inheritance(strategy=InheritanceType.JOINED) @Discrimiator.. 2023. 7. 7.
경주 여행(경주월드, 황리단길..) 경주로 감... 차타고 가는데 뒤에 더불어민주당 버스가 6대가 둘러싸서 너무 무서웠다. 경주월드 앞에있는 한식당에 가서 제육볶음과 부대찌개를 시켜먹었다. 맛있었따. 주차장에서부터 보이는 놀이기구들.. 이게 드라켄이었던것같다. 내가 타본 놀이기구 중 가장 재밌었다. (두번 탔는데, 맨앞줄 앉았을때는 재밌었는데 맨뒷줄 앉았을땐 감흥이 별로 없었다) 물 튀는 놀이기구가 몇 있는데, 비옷이 2500원이니 한번 사서 물 튀는 놀이기구를 한바퀴 싹 도는것을 추천. 나는 물배를 세번이나 탔다. (그런데, 다른 물 놀이기구가 있는걸 모르고 세번타고 비옷 갖다버림) 드라켄 말고 재밌었던 놀이기구는.. 메가스윙?( 이월드에도 있는데 그냥 똑같은 놀이기구였음. ) 이곳은 켄싱턴호텔 복도형아파트. 일본스러운 건물이었다. 6명.. 2023. 7. 5.
칠곡의 하루 경주가기 전 날 비는 안왔는데 윗동네에서 흘러온 물이 많았는지 다리가 다 잠겨버렸다 홈플러스 가서 토끼구경 칠곡 사운즈커피 가봤음. 시원하고 가격도 괜찮았던듯. 스벅보다 저렴했다. 탕후루 먹음 생각보다 안시원해서 아쉽 애플포도가 맛있다는데 샤인머스캣으로 사서 아쉽 2023. 7. 5.
swagger 작성해보기, Springboot swagger 연동하기 Swagger는 API명세 문서를 작성하는데 도움을 주는 도구이다. https://app.swaggerhub.com/home Build, Collaborate & Integrate APIs | SwaggerHub app.swaggerhub.com 여기서 회원가입 후, create버튼을 눌러 새 문서를 작성할 수 있다. 템플릿 없이 문서를 생성하면 이런 기본 창이 뜬다. https://jsonplaceholder.typicode.com/ JSONPlaceholder - Free Fake REST API {JSON} Placeholder Free fake API for testing and prototyping. Powered by JSON Server + LowDB. Tested with XV. Servi.. 2023. 7. 5.
다양한 연관관계 연관관계 매핑시 고려사항 다중성 단/양방향 연관관계의 주인 다중성 @ManyToOne @OneToMany @OneToOne @ManyToMany (이 중 다대다는 실무에서 쓰지 않는다.) 단방향과 양방향 테이블은 외래키 하나로 양쪽 조인 가능(사실상 양방향) 그러나 객체는 참조용 필드가 있어야 참조가능하다. 한쪽만 참조하면 단방향, 양쪽 서로 참조하면 양방향이다.(사실 각각 단방향인것이긴 하지만..) 연관관계의 주인 테이블은 외래 키가 하나인데, 객체 양방향 관계는 참조가 두군데 있다. 둘 중 테이블의 외래 키를 관리할 곳을 지정해야한다. 연관관계의 주인은 외래키를 관리할 수 있고, 주인의 반대편은 단순 조회만 가능하며 값을 관리할 수 없다. 다대일 이전 포스트를 참고. 다(Many)가 연관관계의 주인이.. 2023. 7. 3.
연관관계 매핑 일대다, 다대일 관계 예시 멤버, 팀 도메인이 있다고 가정하자. 멤버는 하나의 팀에 속할 수 있고, 한 팀에는 여러명의 멤버가 존재할 수 있다. 멤버-팀은 다대일, 팀-멤버는 일대다 관계가 된다. 데이터베이스 테이블에는 다가 되는 멤버쪽에 team_id를 FK로 가지고 있으면 된다. 이런 방식대로 객체를 모델링하면 @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name="username") private String name; private Long teamId; } 이렇게 된다.(Long teamId에 주목) 이 방식은 객체 지향적인 방법이 아니다. 만약, em.find로 member 인스턴스를 가져온 후에, 해당 .. 2023. 6. 30.
엔티티 매핑 객체와 테이블 매핑 @Entity, @Table @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다. 기본 생성자가 필수이다. @Entity 속성: name JPA에서 사용할 엔티티 이름을 지정한다. (지정하지 않으면 기본값으로 클래스 이름을 그대로 사용한다) @Table은 엔티티와 매핑할 데이터베이스 테이블을 지정한다. @Table(name=테이블명)으로 사용한다. 데이터베이스 스키마 자동 생성 JPA에서는 애플리케이션 로딩시점에 DB테이블을 생성하는 기능을 지원한다. hibernate.hbm2ddl.auto 속성: create,create-drop,update,validate,none 데이터베이스에 맞는 적절한 DDL을 생성한다. 이렇게 생성된 DDL는 개발에서만 사용(운영서버에서는 사용하지.. 2023. 6. 29.
영속성 컨텍스트 더보기 영속성 컨텍스트는 엔티티를 영구 저장하는 환경이라는 뜻. 엔티티 매니저를 통해 접근할 수 있다. 엔티티의 생명주기 비영속 영속 준영속 삭제 영속성 컨텍스트의 이점 조회시에 1차캐시를 조회-> 캐시에 있으면 캐시에 있는 값을 바로 반환 ->캐시에 없으면 DB조회 후 1차캐시에 저장 후 객체반환 (그런데, 1차캐시는 한 트랜잭션 내에서만 유효하기때문에 성능상 약간의 이점을 갖는다) 영속 엔티티의 동일성 보장 똑같은 객체를 각각 find한 후, 두 객체를 비교하면 true가 나옴. 같은 트랜잭션 내에서 같은 객체는 동일하다. 트랜잭션을 지원하는 쓰기 지연 영속 컨텍스트 내에는 1차캐시 외에 쓰기 지연 SQL저장소가 있다. 어떤 객체를 영속하면 JPA가 객체를 분석해서 insert 쿼리를 만들어 쓰기 지.. 2023. 6. 29.
JPA 기초 이미 JPA를 사용해봤지만 기초를 제대로 배우지 못했다는 생각이 들어 기초부터 다시 차근차근 배우고자 한다. (이번시간에는 간단한 실행만 해보았다) public class Main { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { // Member member = em.find(Member.class, 1L);//멤버클래스 PK1번 찾아옴 // Syste.. 2023. 6. 29.
엘리멘탈(2023)을 보다 일본여행 다녀온 이후로 계속 마음이 붕 떠있는것같고 공부도 잘 안되고 해서 갑자기 영화를 보러가기로 했다. 스파이더맨이랑 엘리멘탈이랑 고민하다가 엘리멘탈을 보러가기로 함. 2240으로 예약을 해놨는데 생각보다 너무 일찍가서 혼자 롯데리아 가서 데리버거세트 시켜먹음. 이때 남은 콜라를 텀블러에 부어서 가져가서 영화보면서 남은콜라를 먹을 수 있도록 설계했다. 이후 영화관 도착해서 카라멜팝콘을 삼. 5500원이 미디움인데 6000원이 라지길래 라지로 삼. 라지로 산건 좀 실수였다. 너무 커서 영화보는 내내 먹었는데도 삼분의일밖에 못먹었음 -어찌저찌 영화 끝- 처음에 들어가서 앉았는데 웬 UP할아버지 나오는 단편영화가 나오길래 잘못들어온줄 알았다. 할아버지가 새 여자 만나서 첫데이트 하러가는 내용이었다. 왜 만.. 2023. 6. 28.
도쿄 여행(롯폰기 힐즈/오다이바/아키하바라/시부야 스크램블) 첫날(대구공항->나리타공항->센다가야역 숙소->롯폰기힐즈) 대구공항 갈때 택시를 탔다. 처음에는 친절한것같아서 좋았는데 중간에 차가 끼어드니까 클락션3연타 하더니 그때부터 택시기사 흑화함 여기저기 칼치기하고 보호구역으로 지름길타서 드리프트함 (이때 살짝 지릴뻔) 대구공항에서 간단히 아침밥을 먹었다. 본죽이 있길래 새우죽 시켜먹음 역시나 맛있었다. 그리고 공항갔는데 앞에 TBC에서 취재같은거 하길래 신기하다~하면서 보고있었다. 근데 그 아저씨가 나한테 오더니 인터뷰 해달라해서 인터뷰 함. 티비에도 출연함. 일본으로 가는중... 대구에선 비왔는데 일본은 날씨가 좋았다. (나리타 공항 사진) 나리타 공항은 정말 넓었다. 공항이 2개의 건물로 나뉘어있는데 길을 못찾아서 한참을 헤맸다. 마침 길을 헤매던 미국인을.. 2023. 6. 27.
밥풀을 달고 나간 날 밥풀을 달고 하루종일 돌아다녔다. 내가 밥먹다가 밥풀을 단게 아니라 이날 조카가 집에 놀러왔는데 조카가 밥먹다가 내옷에 붙인것같다. 그것도 모르고 스터디카페도 가고 홈플러스도 가고 산책까지 했다. 그래도 부끄럽진 않았다. 아무도 신경 안쓸것같기 때문이다. 나도 별 생각이 들지는 않았다. 2023. 6. 19.
배낭 채우기 문제 n개의 물건이 있다. 각 물건은 무게와 가치가 정해져있다. 무게는 w[n]={...}, 가치는 p[n]={...}이다. W = 배낭에 넣을 수 있는 총 무게라고 할 때, "W 2023. 6. 18.
알고리즘 설계 - 그리디 그리디 알고리즘은 현재 상태에서 가장 최적이라고 생각되는 결정을 계속해서 취하는 방식의 알고리즘이다. Prim 알고리즘, Kruskal 알고리즘, Dijkstra 알고리즘은 모두 그리디 알고리즘에 속하며, 그래프에서 최적의 경로를 찾는 데 주로 사용된다. 1. **Prim 알고리즘 (Prim's Algorithm)**: Prim 알고리즘이란 주어진 그래프에서 최소 신장 트리를 찾는 알고리즘이다. 최소 신장 트리는 그래프의 모든 정점을 연결하는 간선들의 가중치 합이 최소인 트리를 말한다. Prim 알고리즘은 특정 정점에서 시작하여 가장 가중치가 낮은 간선을 선택하면서 트리를 확장해 나간다. 2. **Kruskal 알고리즘 (Kruskal's Algorithm)**: Kruskal 알고리즘도 Prim 알고리.. 2023. 6. 18.
알고리즘 설계- 동적 프로그래밍 동적 프로그래밍(Dynamic Programming, DP)은 복잡한 문제를 작은 부분 문제로 분해하고, 그것으로부터 최적의 해결책을 찾는 알고리즘 기법이다. 이 방식은 각 부분 문제의 해를 저장하고 ("메모이제이션"이라고 함), 필요할 때 다시 사용해서 중복 계산을 방지한다. 동적 프로그래밍은 주로 최적화 문제에서 사용되며, 아래 두 가지 속성을 만족하는 문제에 적용할 수 있다: 1. **최적 부분 구조(Optimal Substructure)**: 큰 문제의 최적의 해를 그 문제의 작은 부분 문제들의 최적의 해로부터 구할 수 있어야 한다. 2. **중복되는 부분 문제(Overlapping Subproblems)**: 같은 부분 문제들이 여러 번 반복해서 나타나는 경우, 이 부분 문제들의 결과를 저장하고.. 2023. 6. 18.
알고리즘 설계 - 분할 정복 분할 정복(Divide and Conquer)은 큰 문제를 더 작은 하위 문제로 나누고, 이러한 하위 문제를 해결하여 원래의 문제를 해결하는 방식이다. 분할 정복 방법은 주로 재귀적으로 구현되며 이를 하향식 접근방법이라고 한다. 분할 정복 알고리즘은 일반적으로 다음 세 단계를 거친다. 1. **분할(Divide)**: 원래의 문제를 더 작은 하위 문제로 분할. 2. **정복(Conquer)**: 각 하위 문제를 재귀적으로 해결합니다. 하위 문제가 충분히 작아서 직접적으로 해결할 수 있을 때까지 이 과정을 반복. 3. **결합(Combine)**: 하위 문제의 해결책을 결합하여 원래의 문제를 해결. 분할 정복법에 해당하는 알고리즘들 : 이진 검색, quick sort, 행렬 곱셈(strassen 방법) 이.. 2023. 6. 17.
String(3-way quicksort, huffman 코딩) 3-way quicksort 알고리즘이다. 문자를 비교해서, 문자가 더 작으면 위로, 더 크면 아래로 보내서 (작은거)(같은거)(큰거)로 나눈다. 이렇게 나누어놓은 문자열들끼리 또 정렬하도록 한다.(재귀) public class QuickSort3Way { public static void sort(String[] arr) { sort(arr, 0, arr.length - 1); } private static void sort(String[] arr, int low, int high) { if (high 2023. 6. 17.
728x90
반응형