일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- fetch
- 동적sql
- 즉시로딩
- 데코레이터
- eager
- FetchType
- shared lock
- 힙
- 스토어드 프로시저
- dfs
- 연결리스트
- PS
- 지연로딩
- execute
- 다대다
- querydsl
- CHECK OPTION
- 연관관계
- 다대일
- BOJ
- exclusive lock
- 일대다
- 비관적락
- 낙관적락
- 유니크제약조건
- 백트래킹
- JPQL
- 이진탐색
- 스프링 폼
- SQL프로그래밍
- Today
- Total
목록전체 글 (557)
흰 스타렉스에서 내가 내리지
면접에서 나올수도 있을까?https://www.acmicpc.net/problem/1918 알파벳이면 바로 정답에 포함여는 괄호이면 스택에 넣음닫는 괄호이면 여는 괄호가 나올때까지 스택 팝해서 여는 스택에 넣음. 이 때, 마지막으로 여는 괄호를 pop+, - 일 경우, 현재 스택에서 +,-,*,/ 를 모두 정답에 넣음*, / 일 경우, 현재 스택에서 *, / 만 정답에 넣음스택 남은거 다 정답에 넣음 expression = input()stack = []answer = ''for char in expression: if char.isalpha(): # 알파벳일 경우 바로 정답에 넣는다 answer += char elif char == '(': # 여는 괄..
https://www.acmicpc.net/problem/1865 벨만 포드 문제 근데 마지막 테케에서 시간초과왜? import sysinput = sys.stdin.readlinedef solution(): n, m, w = map(int, input().split()) edges = [] for _ in range(m): a, b, c = map(int, input().split()) edges.append((a, b, c)) edges.append((b, a, c)) for _ in range(w): a, b, c = map(int, input().split()) edges.append((a, b, -c)) ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dmd3hH/btsHkf1q0DH/9U5XKcrMdKfaH3UkKjJN1k/img.png)
https://school.programmers.co.kr/learn/courses/30/lessons/77886 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr # 문자열 안에서 서브 문자열 찾기 스택을 사용하면 선형시간에 해결할 수 있다. 문자열 슬라이싱 보다는 del 명령어를 사용하면 실행시간이 현저하게 줄어든다. def solution(s): answer = [] for e in s: removed, cnt = devide(e) answer.append(get(removed, cnt)) ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/xPufi/btsHeYZUA7y/3PTv5Rioj0ZqsFPKlMp3yK/img.png)
# ElastiCache 생성 노드 유형을 t2.micro 로 변경하지 않을 경우 엄청난 요금이 부과될 수도.. 위에서 ElastiCache 를 생성할 때 AWS 클라우드를 선택했다면 무조건 EC2 위에서만 실행이 가능하다.접속할 EC2 인스턴스를 켜고, ElastiCache 보안 그룹을 만들어서 인바운드에 EC2 보안그룹을 추가해준다. primary 나 replica 엔드포인트가 아닌 기본 엔드포인트를 사용해줘야 한다. # Spring bootspring: data: redis: host: 기본엔드포인트 주소 port: 6379 이거만 해주면 끝! 없으면 없다! 에러처리한게 찍히네
.orderBy(Expressions.numberTemplate(Double.class, "function('rand')").asc()) queryFactory .select(Projections.constructor(CurationSimpleResponseDto.class, curation.id, curation.title, curation.description, curation.cnt, curation.thumbnail, curationBookmark.status)) .from(curation) .leftJoin(curationBookmark) .on(curationBookmark.curation.id.eq(curation...
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bLA2vD/btsG2nMf63P/nqK0yAyD4IITW9hChw05sk/img.png)
# 트랜잭션과 락트랜잭션은 ACID 라 하는 원자성 (Atomocity), 일관성 (Consistency), 격리성 (Isolation), 지속성 (Durability) 을 보장해야 한다 1. 원자성 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공하든가 모두 실패해야 한다.START TRANSACTION -- 이 블록안의 명령어들은 마치 하나의 명령어 처럼 처리됨 -- 성공하던지, 다 실패하던지 둘중 하나가 됨. A의 계좌로부터 인출; B의 계좌로 입금;COMMIT 2. 일관성모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. 트랜잭션이 진행되는 동안에 데이터베이스가 변경되더라도, 업데이트된 데이터베이스로 트랜잭션이 진행되는 것이 아니라, 처음에 트..
트랜잭션을 지원하는 쓰기 지연과 변경 감지 기능 덕분에 성능과 개발의 편의성의 장점을 얻었다.하지만 진짜 장점은 데이터베이스 row 에 lock 이 걸리는 시간을 최소화한다는 점이다.이 기능은 트랜잭션을 커밋해서 영속성 컨텍스트를 플러시하기 전까지는 데이터베이스에 데이터를 등록, 수정, 삭제하지 않는다.따라서 커밋 직전까지 데이터베이스 로우에 락을 걸지 않는다. update(member); // UPDATE SQL AlogicA(); // UPDATE SQL ...logicB(); // UPDATE SQL ...commit(); JPA 를 사용하지 않고 SQL 을 직접 다루면 update(member) 를 호출할 때 UPDATE SQ..
# 배치 처리수백만 건의 데이터를 배치 처리해야 하는 상황일반적인 방식으로 엔티티를 계속 조회하면 영속성 컨텍스트에 아주 많은 엔티티가 쌓이면서 메모리 부족 오류가 발생한다.따라서 이런 배치 처리는 적절한 단위로 영속성 컨텍스트를 초기화해야 한다. # JPA 등록 배치수만 건 이상의 엔티티를 한 번에 등록할 떄 주의할 점은 영속성 컨텍스트에 엔티티가 계속 쌓이지 않도록 일정 단위마다 영속성 컨텍스트의 엔티티를 데이터베이스에 플러시하고 영속성 컨텍스트를 초기화해야 한다.만약 이렇게 안하면, 영속성 컨텍스트에 너무 많은 엔티티가 저장되면서 메모리 부족 오류가 발생할 수 있다.public void batch(){ EntityTransaction tx = em.getTransaction(); tx...
# 엔티티가 영속성 컨텍스트에 관리되면...장점 : 1차캐시, 변경 감지하지만 스냅샷 인스턴스를 보관하므로 더 많은 메모리를 사용한다. 읽기 전용으로 엔티티를 조회하면 메모리 사용량을 최적화 할 수 있다. # 스칼라 타입으로 조회select o.id, o.name from Order o스칼라 타입은 영속성 컨텍스트가 결과를 관리하지 않는다. # 읽기전용 쿼리 힌트 사용TypedQuery query = em.createQuery("select o from Order o", Order.class); query.setHint("org.hibernate.readOnly", true);엔티티를 읽기 전용으로 조회한다.읽기 전용이므로 영속성 컨텍스트는 스냅샷을 보관하지 않는다.따라서 메모리 사용량을..
1. 페치 조인 사용가장 일반적인 방법select m from Member m join fetch m.ordersSELECT M.*, O.* FROM MEMBER MINNER JOIN ORDERS O ON M.ID=O.MEMBER_ID 일대다 조인을 했으므로 중복된 결과가 나타날 수 있다.따라서 JPQL 의 DISTINCT 를 사용해서 중복을 제거하는 것이 좋다. 2. 하이버네이트 @BatchSize하이버네이트가 제공하는 org.hibernate.annotations.BatchSize 어노테이션을 사용하면 연관된 엔티티를 조회할 때 지정한 size 만큼 SQL 의 IN 절을 사용해서 추가 조회한다.만약 조회한 회원이 10명인데 size=5 로 지정하면 2번의 SQL 만 추가로 실행한다. @Entitypu..