[우아한테크코스] 7월 3일 TIL
[Algorithm] 정렬 - H-index
- 처음 시도
def solution(citations): answer = [] citations.sort() size = len(citations) for i in range(0, len(citations)): if citations[i] == size - (i): print(str(citations[i]) + str(size - (i))) answer.append(citations[i]) if not answer: print(answer) for i in range(0, len(citations)): if citations[i] < size - (i): answer.append(size - (i+1)) return max(answer)
- 정답
def solution(citations): answer = 0 citations.sort() size = len(citations) for i in range(0, len(citations)): if citations[i] >= size - (i): answer = max(answer, size - i) return answer
- 처음 시도에서 마지막 한문제 오답
def solution(citations): answer = [] citations.sort() size = len(citations) for i in range(0, len(citations)): if citations[i] == size - (i): print(str(citations[i]) + str(size - (i))) answer.append(citations[i]) if not answer: print(answer) for i in range(0, len(citations)): if citations[i] > size - (i): answer.append(size - (i)) return max(answer)
값 비교해서 큰 값 들고 있기 : answer = max(answer, i)
[JPA] 값 매핑
- @Lob: clob, blob과 매핑
- CLOB: 문자 대형 객체, character
- BLOB: 이진 대형 객체, Binary
최고 4gb까지 저장, lob 값, lob 위치에 대한 포인터인 위치자 존재
lob에 저장하고자 하는 값이 너무 크므로 메모리에 저장해두고 포인터로 들고 있다가 필요할 때 가서 쓴다.
mysql의 large object -> BLOB, TEXT, LONG TEXT
oracle의 large objecct -> BLOB, CLOB
- @Temporal: 날짜 타입(Date, Calendar) 매핑
@Temporal(TemporalType.DATE) //날짜 @Temporal(TemporalType.TIME) //시간 @Temporal(TemporalType.TIMESTAMP) //날짜와 시간
temporal 사용하지 않으면 timestamp로 매핑
- @Column: 컬럼 매핑
name, nullable과 같은 속성 전달
생략하면 데이터타입에 맞춰서 전달, 하지만 int 같은 경우 null이 허용되지 않는데 허용하고 싶으면 @Column 사용해서 전달해야 함- length로 String인 경우에만 길이 제한 가능
@Column(nullable = false, length = 100) private String title;
- unique로 컬럼에 유니크 제약조건 걸 수 있음, 두 컬럼 이상 주고 싶으면 클래스 레벨에서
@Table(uniqueConstraints = ~~)
사용@Column(nullable = false, length = 20, unique = true) private String userId;
- length로 String인 경우에만 길이 제한 가능
- @Enumerated: 이넘 타입 매핑
ORDINAL: enum을 숫자로 0, 1, 2로 저장
STRING: enum의 이름을 String으로 저장@Enumerated(EnumType.STRING) private ContentType contentType;
- @CreatedDate, @LastModifiedDate
- @CreatedDate: 생성일자 LocalDateTime으로 매핑
- @LastModifiedDate: 마지막 수정일자 LocalDateTime으로 매핑
@CreatedDate private LocalDateTime createDate;
[JPA] 설정
- mysql
spring.datasource.url=jdbc:h2:~/test;MODE=MySQL spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect
- h2
spring.datasource.url=jdbc:h2:~/test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE spring.datasource.username=sa
- 로그 설정
spring.jpa.properties.hibernate.format_sql=true spring.jpa.show-sql=true