우주먼지
고득점 Kit - Hash (완주하지 못한 선수)

💡 문제 파악 마라톤 선수들의 전체명단인 배열 participant와 완주한 선수들의 명단인 배열 completion이 주어진다. 완주하지 못한 선수의 이름을 return 하도록 solution 함수 작성 제한사항 동명이인이 있을수 있다. 참가자의 이름은 1~20개 이하의 알파벳 소문자로 이루어져 있다. completion의 길이는 participant의 길이보다 1 작다. 입출력 예시 participant completion return ["leo", "kiki", "eden"] ["eden", "kiki"] "leo" ["marina", "josipa", "nikola", "vinko", "filipa"] ["josipa", "filipa", "marina", "nikola"] "vinko" ["mi..

고득점 Kit - Hash (폰켓몬)

💡 문제 파악 포켓몬의 종류가 담긴 배열 nums가 있고 이 배열의 길이를 이용해 최댓값(nums / 2)을 구할 수 있다. 풀이 최대값을 구하기 위해 주어진 배열 nums의 length를 2로 나눈 값을 max에 대입한다. 중복을 제거한 값을 구하기 위해 Set을 이용해서 nums에 있는 값들을 담아준다. → 이때, Set은 집합 기반이기에 중복을 알아서 제거하며, 빠른 탐색을 위해 HashSet을 이용하였다. 중복을 제거한 Set의 크기가 max보다 크면 max를, 작으면 Set 사이즈를 리턴한다. 코드 import java.util.HashSet; public class Solution { public int solution(int[] nums) { // 총 수에 2를 나눔 int max = num..

JPQL Basic
Database/JPQL 2023. 3. 5. 00:58

💡 JPQL 객체지향 쿼리 다양한 쿼리 지원 JPQL JPA Criteria QueryDSL 동적 쿼리 생성의 편리함 실무 사용 권장 Native SQL JPQL로 해결할 수 없는 DB 의존적인 기능을 사용할 때 ex: Oracle CONNECT BY, SQL HINT createNativeQuery() 사용 JDBC API 직접 사용, MyBatis, SpringJdbcTemplate 함께 사용 영속성 컨텍스트를 적잘한 시점에 강제로 flush가 필요하다. ex: JPA를 우회해서 SQL을 실행하기 직전 수동 flush JPA를 사용하면서 JDBC 커넥션을 직접 사용하거나, JDBC Template, MyBatis 등 혼용 가능 소개 Java Persistence Query Language 가장 단순한..

Kubernetes Secret
Ops/Kubernetes 2023. 3. 4. 18:47

💡 Secret ConfigMap과 비슷하게 Volumn과 환경변수 방식으로 Pod에 정보를 주입한다. 정의 Password, API Key, SSH Key등 보안이 중요한 정보를 컨테이너에 주입해야 할 때 사용 ConfigMap과 사용법이 비슷하지만 Secret은 ConfigMap에 비해 민감한 정보를 주입하는게 목적이다. Kubernetes는 기본적으로 Secret의 값을 etcd에 저장하며 Base64 인코딩을 한다. RBAC를 이용해 Secret 오브젝트에 대한 읽기 권한을 잘 설정해야 한다. ex: ConfigMap과 Secret을 구분 보관하여 사용자별로 권한을 나눠준다. 종류 OPaque (Generic) 일반적인 용도의 시크릿 ConfigMap과 동일한 목적으로 사용 가능 민감한 데이터를 ..

article thumbnail
Value Type
Framework/Spring 2023. 3. 4. 14:27

💡 JPA 데이터 타입 분류 JPA의 데이터 타입에는 엔티티 타입과 값 타입이 있다. 값 타입의 종류 기본값(Primitive, Wrapper, String) 임베디드(복합 값 타입) 값 타입 컬렉션 Entity Type @Entity로 정희 하는 객체이며, 데이터가 변해도 식별자로 지속적인 추적이 가능하다. ex: 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식이 가능하다. Value Type int, Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체이다. ex: 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체된다. 생명주기를 엔티티에 의존하며, 식별자가 없고 값만 있으므로 변경 시 추적이 불가능하다. 값 타입은 공유하면 안된다. (Side Effect ..

article thumbnail
Proxy & FetchType & Cascade & Orphan
Framework/Spring 2023. 3. 3. 17:01

💡 Proxy em.find() DB를 통해서 실제 엔티티 조회 em.getReference() DB조회를 미루는 프록시 객체 조회 find() 와 getReference() find()를 했을땐 정상적인 select 쿼리가 나갔지만 getReference()를 했을때 getId를 조회를 하면 Select 쿼리가 안나간다. 왜냐하면 Member의 Id는 파라미터로 들어온 값을 사용하기 때문에 프록시 객체의 초기화가 안됨. findMember2.getUsername()을 했을때 비로소 DB의 정보를 가져와야 하므로, getUsername()을 했을떄 Select 쿼리가 나간다. 즉, 프록시 객체에 없는 정보를 호출하면 객체가 초기화 되면서 DB의 정보를 조회한다. // Member findMember1 =..

article thumbnail
Kubernetes ConfigMap
Ops/Kubernetes 2023. 3. 3. 13:15

💡 ConfigMap (Key - Value) ConfigMap & Secret 어플리케이션을 배포하다 보면 환경에 따라 다른 설정값을 사용하는 경우 사용한다 Github Actions의 Secret처럼 컨테이너 런타임 시 변수나 설정값을 Pod가 생성될 때 넣어줄 수 있다 ConfigMap Key - Value 형식으로 저장됨 Config Map을 생성하는 방법은 literal로 생성하는 방법과 파일로 생성하는 2가지 방법이 있다 ConfigMap이나 Secret에 정의하고, 이 정의해놓은 값을 Pod로 넘기는 2가지 방법이 있다 값을 Pod의 환경 변수로 넘기는 방법 값을 Pod의 Disk Volume으로 Mount 하는 방법 Literal 형식 ConfigMap 생성 키:값이 language : j..

검색 태그