JPA(Java Persistent API)


 JPA는 여러 ORM 전문가가 참여한 EJB 3.0 스펙 작업에서 기존 EJB ORM이던 Entity Bean을 JPA라고 바꾸고 JavaSE, JavaEE를 위한 영속성(persistence) 관리와 ORM을 위한 표준 기술이다. JPA는 ORM 표준 기술로 Hibernate, OpenJPA, EclipseLink, TopLink Essentials과 같은 구현체가 있고 이에 표준 인터페이스가 바로 JPA이다.

  ORM(Object Relational Mapping)이란 RDB 테이블을 객체지향적으로 사용하기 위한 기술이다. RDB 테이블은 객체지향적 특징(상속, 다형성, 레퍼런스, 오브젝트 등)이 없고 자바와 같은 언어로 접근하기 쉽지 않다. 때문에 ORM을 사용해 오브젝트와 RDB 사이에 존재하는 개념과 접근을 객체지향적으로 다루기 위한 기술이다.


따로 쿼리 없이 vo와 db를 연결해준다.








CRUDRepository를 extends 하는것만으로도

기본적인 CRUD는 모두 제공한다.


따라서 추가적으로 구현할 것은 없다.

다만 SQL이 필요 할때만 @Query로 annotation을 추가하여

쿼리를 추가해주면 된다.


Query를 추가하는 방식은 두가지가 있는데

1. db query

2.vo  클래스에 관해서 쿼리를 날리는 방법



안녕하세요

요새 가장 큰 취미중 하나인 스윙댄스!
스윙화가 따로 팔긴하지만
일반 운동화에 가죽밑창만 대도 된답니닷!!

저도 스윙을 그냥 하다가
스위블을 배우면서
발목이 아파서 ㅠㅠ 더이상은 안되겠다 싶어서
바로 가죽을 붙였어요~

가죽은 ‘가죽 자투리’ 로 검색해서
샀습니다!



온가죽이에요..5천원어치인데 많져?
남아서 나눔 했어요,,,



우선 신발 밑창크기에 맞게 본을 뜨고 잘라줍니다
저는 가죽이 잘 잘려서
가위로 잘랐어요~
안되면 먼저 칼로 모양을 내고 그다음
가위로 자르면 더 잘된다고 하네요



본드도 다이소에서 그냥 본드 하나와(500원)
록타이트(3000원)을 준비해줬습니다

이쯤에서 궁금했어요


어느쪽에 본드칠을 해야할까...
여기저기 여쭤본 결과
2번에 본드칠을 하면 된답니다!! ㅎ_ㅎ

그래서 그냥 본드를
신발 밑창 + 가죽에 칠해주고
가죽 가장자리에는 록타이트를 발라줬어요~~


그다음! 붙이고
가죽이 튀어나와서 좀 남는 부분은 잘라줬어요!!
아직 헐렁~ 한 부분을 록타이트로 다시 끝부분
마무리!! 해줬습니다



짜잔 완성샷!!!!
이거 하고 스위블하니 발목하나도 안아프고
잘되요

모두 가죽 예쁘게 붙이고
즐스윙하시져 ㅎ_ㅎ!!

그럼 이만
뿅!!

 

 

 

이 문제는 Union & Find 문제이다.

 

공통 원소가 없는, 즉 상호 배타적인 부분 집합들로 나눠진
원소들에 대한 정보를 저장하고 조작하는 자료구조

 

초기화에는 자신이 부모인 것으로 초기화 해준다.

 

그리고 나서 부모 - 자식 관계

즉, 문제에서 동맹관계를 알려주면

 

해당 부모 자식관계를 par[] 배열에 맺어준다

 그런데 어차피

동맹의 동맹은 동맹이므로

 

최종적으로 가장 높은 root를 같은걸 가리키고 있으면

같은 동맹이란 사실을 알 수 있다.

 

그래서 find 펑션에서

가장 높은 root를 찾을 수있도록 재귀로 구현해주었다.

 

 

 

 

 

 

 

동맹관계를 맺어주는

type =0 이면

각각 부모 - 자식관계를 맺어주고

 

type =1 이면 가장 높은 root를 구해주는

find 펑션을 통해

그 값이 같은지 비교해서

 

출력해준다.

 

 

 

'DEVELOP > ALGORITHM' 카테고리의 다른 글

단순 2진 암호코드  (0) 2020.01.14
View 조망권 문제  (0) 2020.01.14
KOITP - BFS / DFS 문제 풀기  (0) 2018.06.11
KOITP 가장 많은수 ( count sort)  (0) 2018.06.08
백준 9663번 Nqueen 문제 풀이  (2) 2018.06.08

시드니 센트럴역 앞

브런치 카페 추천!

Haven Specialty Coffee



우연히 숙소 바로 옆이라서

시간이 떠서 가게된 

브런치 카페였는데


호주에서 마신 커피중에서

제일 맛있었어요! ㅋㅋㅋ


그리구 브런치도,,bbb

다시가고싶네요 ㅠㅠ




호주 인생 라떼 bb








ㅠ_ㅠ 보이시나여,,,

저 안에

베이컨 + 스크램블 에그


에그보이시나여,,,츄욱,,

저 보기만해도 부드러움!!!!









가려고 간게 아니구

생각없이 갔는데 너무 괜찮았어용!!!




위치는 





그럼 이만 

뿅!


오랜만에 여행 포스팅으로 인사드리네용!


저는 올해 2/16~2/25 에 

호주 (멜버른 + 시드니) 여행을 다녀왔어요!


혼자 여행해서 

모두 호스텔에 묵었는데요


모두모두 대대 만족해서

추천해드리려고 


제일먼저 호주 후기를 남깁니당!! ㅎ_ㅎ




1.  멜버른 United Backpackers 


250 Flinders Street, Melbourne , 3000, Australia 





멜버른 이 숙소는 정말,,,,

진짜 완벽해요


우선 가장 마음에 들었던건

위치 ★★★★★

멜버른의 가장 중심 역인 플린더스 역에서 

걸어서 3분거리 !!!!


게다가 바로 옆 골목은 멜버른에 간사람들이면 다 가보는

카페거리 !


저는 4인 혼성 도미토리에 묵었고

화장실은 방안에 있었어요 


화장실을 넷이서만 써서 편했어요

저는 혼성도미토리를 몇번 묵어본 경험이 있어서

크게 걱정은 안했는데


저빼고 모두 서양인 애들이었어요

독일 여자 1

뉴질랜드 남자 1

독일남자 1


크게 불편한건 없었어요 


혼성 도미토리를 묵으면서 느끼는건

오히려 남자애들이 더 조심하는 느낌?


서로 다들 조심하니 크게 나쁘지 않았습니다!


만나면 인사하고 그랬어요 ㅋ_ㅋ,,

외국여행갈때마다 

영어공부뽐뿌,,,,

but,,,,ㅎ,,,



시설은 당연히 깨끗했습니다!

저는 깨끗하지 못한 숙소를

별로 안좋아해서


특히, 외국 여행시엔 베드버그 등이 

걱정되서 

꼭꼭 청결여부를 확인하고 갔어요!!


걱정하지 않으셔도 됩니다.



아, 한가지 단점은

지하에 바가있는데

어떤날은 진짜 시끄럽더라고요

애들이 엄청~~~~크게 

클럽처럼 놀고 그래서


궁금해서 

잠깐 내려가봤는데

어린 서양애들만 드글드글~~~

거려서 좀만 구경하고

올라왔어여 ㅋ_ㅋ,,,,



하지만

엄청 돌아다녀서 피곤해서

잠들었습니당,,,



아그리구 한가지 팁은

공항으로 돌아갈때

카운터에서 

버스 탈 곳을 예약해달라고 하면

전화로 예약도 해주고 탈곳도 알려줍니다!

어떤 호텔이었는데

호스텔에서 걸어서 5분정도 였어요!

굳굳 b






2. 시드니 bounce sydney


28 Chalmers St, Surry Hills NSW 2010 Australia





와우,,,,


이 숙소도 엄청나요

무엇보다


진짜 시설 짱짱!!!★★★★


엄청 깨끗하고 

저는 8인 여자 도미토리에서 묵었는데

화장실은 방 밖에 있었지만,

저희방 사람들만 쓸 수 있어서

괜찮았어요


그리고 아침 이럴땐

다같이 준비해야해서


화장실이 차있었지만,

공용 샤워실 & 화장실이

엄청 잘되어 있어서


거기가서 준비하면되서

불편한게 없었어요 ㅋ_ㅋ!!

시설 bb

깨끗하구 

지금까지 호스텔 진짜 많이 가봤는데

거의 최상위권 수준입니다,,b


위치는 좀 관광지랑 많이 떨어져있어요

시드니는 볼게


바다 주변에가 많은데

바운스는 센트럴역 바로 앞에있어서

관광지랑은

좀 떨어져 있지만


센트럴역이 코앞이기 때문에~

(도보 1분거리,,,,)


지하철을 타고 가면 됩니다!

그리구 지하철막차가 생각보다 늦게 있어서

늦게까지 놀아도 괜찮았어요!

제 기억으로 12시 넘어서도 탔어요!


(정확한건 지하철 어플을 참고하세여!)


그래서 위치도 아주 좋습니다,,,

그리구 무슨 요일 저녁에는 

옥상에서 행사가 있구

비어퐁두 하구,,


같이 클럽을 가는 일정도 있던데

전 비어퐁 하는것도 있더라고요

저도 조금 구경하다가 왔어요 ㅎ_ㅎ~



한가지, 불편했던건

대부분 호스텔은 콘센트가

침대맡에 있어서

충전하면서 침대에 누워있을 수

있었는데 

여기는 짐놓는 락커에 콘센트가 있어서

ㅠ_ㅠ 불편했습니다,, 


그래서 가져간 멀티탭을 꽂아서 

길게 늘여놓구

폰을 침대에서 썼어여 ㅎ_ㅎ,,



그리고 마지막으로

한가지 팁은

체크인 시간 조금 이전에 

가셔서

좋은 자리를 맡으셨으면 해요


카운터에서 침댄자리를 정해주지않고

먼저 맡는 사람이 임자이기 때문이져!


그리고 저도 잘 몰랐는데

로비에서 어떤 한국인 분이 알려주셨어요


+ 플러스로 팁은 

바로 옆에 카페가 있거든요 ? 브런치카페,,

저는 시간 떠서 

거기서 브런치를 먹었는데

시간되시면 먹어주세요 8ㅅ8..

제가 호주에서 먹은 커피중에서 제일 맛있었어요!!!

브런치도 짜세,,


이건 바로 따로 포스팅 할게요!




그럼 숙소 후기 정리는 !


1.  멜버른 United Backpackers 

위치 ★★★★

시설 ★★★★

단점 : 지하 바 시끄러움



2. 시드니 bounce sydney

위치 ★★★★

시설 ★★★★

단점 : 콘센트 락커안에 있음




 

 

 

DFS와 BFS 문제이당

츄욱,,,,,

 

대학교때 다 했던건데,,,

지나면 까먹는닷 ^^,,,

 

 

그래도 교수님이 잘 설명해주셔서

엄청!! 잘이해했다

(지금만큼은,,,)

 

 

 

여기선 하나만 더하면된다

기본적인 DFS와 BFS를 하고

 

오름차순 순으로 출력하라고 했으니깐

 

인접리스트에 오름차순으로 넣어주면 된당!!!!

츄욱,,,

이거때문에 선생님한테 물어도 봣당^_^,,,,,

 

 

 

 

 

 

 

 

BFS는

큐를 사용하였고

 

 

DFS는 스택을 사용하였당

그리고 DFS는 재귀를 사용!

그리고 C배열을 이용하여

방문하였는지 안하였는지를 쳌쳌!!!!

 

 

 

 

 

 

 

 

 

 

다음 문제는 count sort를 알면 그렇게 어렵지는 않았다.

 

먼저

1. 입력 받은 배열을 정렬을 하고

 

2. 정렬된 배열의 카운트 배열을 만들어준다.

 

- 카운트 배열을 만들때 모두 다 셀 필요가 없고

이미 정렬되어 있기 때문에

앞뒤 값을 비교 해서 같으면 +1

다르면 1을 넣어주면 된다.

 

 

 

 

 

 

 

 

 

 

@_@ 하루종일

문제 푸니깐

머리가 더 잘 안돌아가는거 같다,,

 

자괴감이 든다 ^_^,,,,,

후후,,,,

 

 

그럼 이만

뿅!

백준 9663번 NQueen 문제.

 

가장 유명한 백트래킹 문제 nQueen 문제이다.

이전에 시험볼떄 오조오억번 풀어서

달달달~~ 외웠는데

 

왜 몇년 지나고 다시 풀려고하니 기억이 안나지 ^.ㅜ

 

 

 

 

두가지 방법으로 풀어 보았다

첫번째는 이전에 공부한 방식

 

 

1. 이중 for 문을 쓴 방식

 

2. for 문을 하나 쓴 방식

 

 

 

 

 

 

1. 이중 for문

 

열과 행의 정보를 담는 배열을 두개 선언해 주고

해당 열을에 퀸이 있는지,

대각선에 퀸을 놔도 되는지를

체크해준다.

 

정의를,

열과 행의 정보를 담아준다로

정의해서 이중포문을 썼다.

 

 

 

 

 

 

 

 

 

 

2. 포문을 하나 쓴 경우

 

 

 

 가지치기 할수 있는 경우를 세개를 정의해서

해당 배열을 3개 선언해주었다.

 

가. 같은 열에 퀸이 있는지

나. 대각선 체크 y=x 기울기가 1인 대각선 체크

다. 대각선 y=-x 기울기가 2인 대각선 체크

 

 

 

 

두 개 모두 행을 인자로 두고

재귀를 쓰는것은 똑같다.

 

 

휴,, 백트래킹

마스터 함해버자,,,, ^_^,,,,

 

 

 

 

그럼 이만

뿅!

 

 

 

 

 

전형적인 투포인터 알고리즘 문제이다

 

 

중요한건 ;ㅅ;

문제를 읽고 투포인터 알고리즘 문제라는 것을

깨달아야 한다는 것이다 ^_^,,,,,,

따흑,,,

 

 

 

이것도 처음엔 문제 이해가 안갔다 @_@

왜이렇게 문제 이해가 어려운것인지,,,,,흑,,,,

 

 

결국 이문제도 간단하게 설명하자면

정렬된 길이 n의 A배열과 길이 m의 B배열이 입력으로 주어졌을 때
A[i]+B[j]=X를 만족하는 (i, j)쌍의 개수를 구하는 문제
이다.

 

 

 

이문제는 어떻게 투포인터 알고리즘으로 구현했냐하면

 

가장 중요한건

작은 (왼쪽~) 은 i로 정의

큰값부터 줄어드는 (오른쪽 ) 은 j로 정의

한다는 것이다!

 

 

 

 

 

A

-> 

 

 7

 8

 9

 

B

<-

 3

 5

 7

 

 

 

이렇게 투포인터를 만들어주고

각각 끝점 값을 더해줘서

값이 크면~ j를 옮기고

작으면 i를 한칸 옮겨준다.

 

 

 

 

 

 

투포인터 알고리즘을

이해하기 좋은 문제인거 같다

 

다행히 이문제는

쌤의 설명이 바로~ 이해가 갔다

 

그럼이만

뿅!

 

 

 

 

 

 

 

 

 

 

 

아나그램 문제 풀기

우선 아나그램이 뭔지를 알아야 한다

 

아나그램이란 ? 문자를 재배열 하여 다른단어로 바꾸는 것이다.

 

이 문제를 검색하면서 찾아보니

구글 면접에서도 나왔던

아니면 it 기술 면접에 종종 나오는 질문인거 같다.

 

 

다음 예제로 문제를 보면,

abcab 가 (S1)

aabbcbbaa (S2)에

 

aabbc / cbbaa

이렇게 두부분 존재한다.

 

그래서 답은 2이다.

 

이문제를 처음에는 잘못 이해 했는데

선생님의 말을 들으니 이해가 갔다

 

결국 물으려고 하는 것은 이것이다.

 

S2문자열을 S1문자열의 길이로 끊어서 앞에서 부터 보는데,

그중에 아나그램이 몇번 있을 수 있냐 ?

 

그래서 S2에서 1~5번째 문자열을보고 아나그램인지 보면된다.

그다음 2~6번재 문자열을 보고

 

이것도 전에 풀었던 결국 투포인터 알고리즘이랑 비슷하다.

 

그다음에 아나그램인지를 판별하는것은

결국 아나그램을 판단하는것은

해당 문자열이 몇버 나왔는지를, 카운트하는 배열을 만들어서

그 카운트 배열만큼 숫자가

다 같게 있으면

결국은 아나그램인 것이다.

 

 

그걸 구현한 소스는 이것이다.

 

 

 

 

 

 

 

처음엔 카운트 배열을 구현하는것도 어려웠다.

그런데 선생님이 구현한걸 보니

결국 각각 문자열이 가지고 있는 숫자가? 있으니깐

그 배열의 인덱스에 카운트를 증가 시켜줬다. 

(아마 내가 기억하기로 아세키 코드값인걸로 기억한다 ~_~/ 맞겠지 )

 

 

그런데 여기서 구현 할때는

1. S1의 카운트 배열을 먼저 생성

 

2. S2의 카운트배열을 S1의 길이만큼만 생성  ****아주 중요 ****

해서 비교해준다

 

그리고 나서 S2의 카운트 배열을 앞에를 빼주고 뒤에를 더해준다 ~

(투포인터 개념!!)

 

이런식으로 해줘야 시간복잡도가 맞지

안그러면 시간초과! 그래서

이부분이 아주~ 중요하당!

 

그리고 나서 S1의 카운트 배열과 S2의 (S1길이까지만의) 카운트 배열을

서로 비교해서

같으면 COUNT를 하나 높여준다~

 

 

 

@_@ 첫날 알고리즘 수업인데

그래도 올초에 잠깐 공부하다 만

개념이 나와서

조금은 반가웠고

 

그래서 이해가 좀 수월했다

 

앞으로 남은 2주 열심히 해야겠당!

 

블로그에도 꼬박꼬박 정리이 ~~~

 

그럼 이만

뿅!

 

 

 

 

 

 

 

 

 

 

 

 

 

+ Recent posts