본문 바로가기

Study32

(MessageQueue (MQ))란? 왜사용하게 되었을까? MessageQueue 란? 왜사용하게 되었을까? 먼저, MessageQueue 미사용/사용 웹 서비스 구조의 예시를 보자. 어플리케이션과 데이터베이스의 동기적 직접통신 구조 : 어플리케이션과 DB가 강하게 결합되어 있어 어플리케이션의 요청&응답 과정에서 DB 서버로의 요청&응답 모두 완료되어야 응답이 가능하다. 따라서 다음과같은 문제가 발생할 수 있다. 1. DB의 응답 시간이 길어진다면 어플리케이션 또한 그만큼 응답시간이 길어진다. 2. DB 장애시 어플리케이션이 동작하지 못한다. 3. 어플리케이션 입장에서 감당할 수있는 요청 수가 DB에서는 감당 불가능하다면, 성능저하나 장애가 발생할 수 있다. MQ를 통한 어플리케이션과 데이터베이스의 통신 : 어플리케이션은 큐에 요청을 쌓고, DB는 큐의 요청을 .. 2020. 6. 30.
(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.
(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.
(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란? 왜사용하나요? 짧은 답변 JPA는 ORM을 제공하는 Hibernate 프레임워크의 표준 인터페이스를 제공하는 API 이다. 사용하는 이유에는 4가지가 있다. 1. 생산성 2. 유지보수성 3. 성능 최적화 기능 ( fetch join, batch size, projection 등 ) 4. 추상화 ( 벤더 종속적이지 않음 ) 2020. 3. 30.
(MySQL / MariaDB) Too many connections 해결 (max connections 오류) Too many connections 해결 얼마전 테스트 환경(beta)에서 사용하는 DB에 연결이 계속 실패되는 현상이 발생하였습니다. "Too many connections" com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Too many connections 베타 DB인데 이게 무슨일이지? 하고보니 다들 로컬에서 커넥션을 유지시켜놓고 해제하지 않아 커넥션이 엄청 잡혀있는 상태였어요. (MSA 환경이어서 서비스마다 DB커넥션을 유지하기 때문에 한명당 6~7개 이상 잡아먹고 있음..) 베타 DB는 성능이 좋은 서버를 쓰지 않았기 때문에 버티지 못한것이었습니다.. ㅠㅠ 사용중인 제품은 AWS RDS MariaDB를 사용하고있고 .. 2020. 1. 19.
[2019 정보처리기사 실기 3회] 공부 방법 및 시험 후기 및 자료 2019 정보처리기사 실기 3회 안녕하세요~ 이번 2019 정보처리기사 실기 3회를 보고 후기 남깁니다. 먼저, 저는 4년제 컴퓨터과 전공생이라 공부하기 수월했다고 생각해요. 비전공자 분들의 공부방법과 조금 차이가 있을 수 있겠지만 도움이 아예 안되는 글은 아닐꺼에요. 참고하셔서 시험 잘 보셨으면 좋겠고 비전공자 분들 화이팅 입니다! 2019 정보처리기사 실기 공부방법 제가 공부한기간은 12일 정도 되었던것 같아요. 10월에 휴일이 많아서 5일은 10시간, 나머지는 2~3시간 정도 공부하였습니다. 시험에 등록하고 나서 찾아보니 모든 글에서 기출을 강조했습니다. 그래서 먼저 인터넷으로 기출 자료를 수집하고 수집한 것중 가장 최근 문제를 실제 시험 보듯이 풀었어요. 물론 거의 틀릴 것이고 어렵겠지만 내가 어.. 2019. 11. 7.
Thread란? Process와 Thread의 차이/ Thread Pool? Process : OS로 부터 자원을 할당받아 실행중인 프로그램. 즉 메모리에 올라가서 실행중인 프로그램 단위. Thread : Process 내 에서 Task를 처리하는 단위. 따라서 한 Process 내의 Thread들은 자원을 공유. 이 그림만 외우면 완벽하다! 장/단점비교 Process Thread 자원공유(서로간) X O Context Swiching 속도 느림 빠름 동기화문제 X O Thread Pool : Thread의 생성및 제거에 의한 오버헤드를 줄일 수 있어 작업효율이 향상됨. 단순하게 생각하면, 처리가 필요한 Task가 쌓이는Task Queue에서 Thread Pool의 Thread들이 Task들을 꺼내 처리하는 구조라고 생각하자. 이그림만 외우면 완벽해! 만약 웹 서버에 수많은 페이.. 2019. 5. 22.
(JAVA) Java DFS 구현 Java dfs ArrayList n : 정점의 수m : 간선의 수 0 - 1 - 2라고 가정하면입력을0112로 해야한다.a[0] 1a[1] 0 2a[2] 1 public static void main(String[] args) { int n = 5; int m = 4; Scanner sc = new Scanner(System.in); ArrayList[] a = (ArrayList[]) new ArrayList[n]; for (int i = 0; i < n; i++) { a[i] = new ArrayList(); } for (int i = 0; i < m; i++) { int v1 = sc.nextInt(); int v2 = sc.nextInt(); a[v1].add(v2); a[v2].add(v1); } Boolean[] visite.. 2019. 3. 16.