본문 바로가기

분류 전체보기93

(Java/RSA) Java RSA 암호화/복호화 구현 Java RSA 암호화/복호화 구현 Java RSA Encryption Decryption Public Key로 평문을 암호화 -> 암호문 -> Private Key로 암호문 복호화 -> 평문 /** * Developer : ryan kim * Date : 2020-05-21 */ public class RSAUtil { /** * 1024비트 RSA 키쌍을 생성 */ public static KeyPair genRSAKeyPair() throws NoSuchAlgorithmException { KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA"); gen.initialize(1024, new SecureRandom()); return gen.genKe.. 2020. 5. 21.
[Rancher] Rancher 모든 Docker container 재구축 방법 systemctl stop docker sudo apt-get purge -y docker-engine docker docker.io docker-ce sudo apt-get autoremove -y --purge docker-engine docker docker.io docker-ce sudo rm -rf /var/lib/docker /etc/docker sudo rm /etc/apparmor.d/docker sudo groupdel docker sudo rm -rf /var/run/docker.sock curl https://releases.rancher.com/install-docker/18.06.sh | sh cd /etc/docker/ vim daemon.json { "dns": ["111.11.. 2020. 5. 18.
[Regex/정규표현식] 일본어, 중국어, 한국어 정규표현식 Regex 정규표현식 일본어 중국어 한국어 포함 댓글내용으로 한국어, 영어, 일본어, 중국어 판별이 필요했습니다. 여러 레퍼런스를 참고하였고 테스트 결과 가장 정확도가 높은 표현식을 기록합니다. #한글,자음 포함 일어,한자 미포함 -> ko select * from comment and comment_msg not regexp '/[ぁ-ゔ]+|[ァ-ヴー]+[々〆〤]+/u' and comment_msg not regexp '[一-龥]' and (comment_msg regexp '[가-힇]' or comment_msg regexp '[ㄱ-ㅎㅏ-ㅣ]'); #일본어 포함 한글 미포함 -> ja select * from comment and comment_msg not regexp '[가-힇]' and comm.. 2020. 5. 18.
(Spring / Design pattern ) 템플릿 메소드 패턴, 전략 패턴 (Spring / Design pattern) 템플릿 메소드 패턴, 전략 패턴 템플릿 메소드 패턴과 전략패턴을 적용하기 전에 선행 되어야 할 중요한 작업은 고정된 작업 흐름을 갖고 있으며, 자주 반복되는 코드가 있다면 변하는 부분과 변하지 않는 부분을 정의 하는 것이다. 위 작업이 잘 선행되어야 불필요한 코드의 중복을 줄이고, 확장에도 유연한 이 패턴들을 적용할 수 있다. 템플릿 메소드 패턴 (Template Method Pattern) 상속을 통해 기능을 확장해서 사용한다. 변하지 않는 부분은 슈퍼클래스에 두고 사용하고, 변하는 부분은 추상 메소드로 정의하여 각 서브클래스에서 오버라이드하여 새롭게 정의해 사용하도록 하는 것이다. 장점: 공통되는 부분의 기능을 한곳에서 정의하여 코드의 중복을 제거하고, .. 2020. 5. 12.
(Java) 참조 유형 (Strong Reference/ Soft Reference/ Weak Reference/ Phantom References) Java Strong Reference/ Soft Reference/ Weak Reference/ Phantom References Java의 참조 유형에는 크게 4가지가 있습니다. 참조 유형에 따라 GC 실행 대상여부, 시점이 달라집니다. 1. Strong References (강한 참조) 2. Soft References (소프트 참조) 3. Weak References (약한 참조) 4. Phantom References (팬텀 참조) 아래로 갈수록 GC의 대상이 되는 경우와 실행되는 시점이 앞 당겨집니다. 1. Strong References (강한 참조) Java의 기본 참조 유형입니다. MyClass obj = new MyClass (); obj 변수가 참조를 가지고 있는 한, MyClass .. 2020. 4. 22.
(JPA) 엔티티매니져 플러시(EntityManager flush)란? 엔티티매니져 플러시(EntityManager flush) : 플러시(flush())는 영속성 컨텍스트의 변경 내용을 DB에 반영한다. 이렇게 꼭 외워두자. 구체적으로는 아래와 같이 동작한다. 1. 변경 감지 동작 : 영속성 컨텍스트에 의해 관리되는 엔티티를 스냅샷과 비교하여 수정이 일어난 엔티티에 대한 update 쿼리문을 쓰기 지연 SQL 저장소에 저장한다. 2. 쿼리 실행 : 쓰지 지연 SQL 저장소의 쿼리를 DB에 전송하여 실행한다. flush() 가 실행되는 경우는 3가지가 있다 1. entitiyManager.flush() 직접 호출 : 테스트 등의 경우를 제외하고 거의 사용하지 않음 2. 트랜잭션 커밋 시점에 자동으로 호출 : DB 변경 내용을 SQL로 전달하지 않고 (flush()를 실행하지.. 2020. 4. 20.
(Java) JVM 메모리 구조 및 변수 적재 위치 JVM 메모리 구조 및 변수 적재 위치 JVM은 할당받은 메모리를 용도에 따라 여러 영역으로 나누어 관리하는데, 크게 3가지 영역이 있다. 1. 메소드 영역 (Method Area) 프로그램 실행 중 사용 되는 Class 파일을 JVM이 읽어 클래스에 대한 정보를 저장. 해당 클래스의 클래스 변수도 함께 저장 2. 호출스택 (Call Stack) 메소드 작업에 필요한 메모리 할당. 매개변수, 지역변수, 연산 중간결과 등을 저장. 메소드가 작업을 마치면 메모리 반환 3. 힙 (Heap) 인스턴스가 생성되어 저장되는 메모리 영역. 인스턴스 변수 포함 public class ClassData { public static int classVP = 1; public static Card classVR = new .. 2020. 4. 17.
(JPA) 프록시, 지연로딩, 즉시로딩 (Proxy / Lazy Loading / Eager Loading) JPA 프록시 지연로딩 즉시로딩 Proxy / Lazy Loading / Eager Loading 지연로딩 (Lazy Loading) JPA 지연로딩은 프록시 객체의 메소드를 사용하는 시점에 데이터베이스에 쿼리문을 수행하여 엔티티를 조회하는 방식으로 동작한다. 지연로딩을 사용함으로써 연관관계이지만, 사용하지 않는 객체를 조회하는 쿼리문을 실행하지 않도록 하여 성능을 향상 시킬 수 있다. public class User { @GeneratedValue @Id @Column(unique = true, nullable = false) private Integer id; private String name; @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LA.. 2020. 4. 17.
JPA란? 왜사용하나요? 짧은 답변 JPA는 ORM을 제공하는 Hibernate 프레임워크의 표준 인터페이스를 제공하는 API 이다. 사용하는 이유에는 4가지가 있다. 1. 생산성 2. 유지보수성 3. 성능 최적화 기능 ( fetch join, batch size, projection 등 ) 4. 추상화 ( 벤더 종속적이지 않음 ) 2020. 3. 30.