분류 전체보기
JPA란? JPA(Java Persistence API)란 자바 진영의 ORM 기술 표준이다. 이때, ORM(Object Relational Mapping)이란 객체로 연결해준다는 뜻으로, 어플리케이션과 데이터베이스의 통신이 있을 경우 개발자가 가 SQL이 아닌 객체로 데이터베이스에 접근할 수 있도록 만드는 기술이다. 이러한 기술이 왜 탄생하게 되었을까? JPA가 필요한 이유 먼저 객체를 표현하기 위해 관계형 데이터베이스를 어떻게 구성해야하는지 봐야한다. public interface Item { private int id; private int price; } public class Book extends Item { private int id; // Item's primary key, Book's f..
분류 : 다이나믹 프로그래밍 시간복잡도 : O(K^2) 다이나믹 프로그래밍의 해결 과정은 다음과 같다. DP를 정의한다. 정의한 DP에 대해 점화식을 세운다. DP를 계산해야 하는 순서에 대해 생각한다. 시간 복잡도를 검증하고 구현한다. 위 문제로 해당 풀이법을 적용해보자. 1. DP를 정의한다. 이 문제에서의 DP는 다음과 같다. DP[i][j] = (i 번째 파일부터 j 번째 파일까지를 하나로 합치는데 드는 최소 비용) 2. 점화식 세우기 시간복잡도를 계산해보자. 먼저, 첫 함수 호출에서 검사해야하는 값은 {(1, 1) + (2, K)}, {(1, 2) + (3, K)}, ... , {(1, K - 1), (K, K)} 로 1 ~ K - 1의 범위를 확인해야하므로 K - 1개를 확인해야한다. 두 번째..
Task Set - Heap에 대해 알아본다. - Max Heap의 구현 방법을 살펴본다. Heap 이란? Heap은 우선순위 큐(Priority Queue)를 위해 만들어진 자료구조이다. 우선순위 큐란, 큐의 성질에 더해 가변적인 데이터들에 대해 오름차순 또는 내림차순으로 정렬이 되어있는 자료구조이다. Heap의 특징으로는 다음과 같다. 거의 완전 이진 트리이다. (nearly complete binary tree) 중복된 값을 허용한다. 삽입, 삭제가 O(log n)의 시간복잡도를 갖는다. # 거의 완전 이진 트리인 이유는 연속되어야 배열로써 표현이 가능하고, 자식의 개수를 유추할 뿐만아니라 부모 - 자식간의 연결 관계를 수식화 할 수 있기 때문이다. Heap의 종류로 Max Heap, Min Hea..
분류 : 이분 탐색 시간복잡도 : O(nlogn) https://qhdks.tistory.com/134 [12015] 가장 긴 증가하는 부분 수열 2 분류 : 이분 탐색 시간복잡도 : O(nlogn) 다이나믹 프로그래밍(DP) 문제이다. DP인 만큼 어떻게 이전 상태의 정보를 저장하고 사용할지가 핵심이다. 다음의 경우를 보자. {1, 2, 3}, {5, 6, 7} 이 수열 A의 qhdks.tistory.com 위 문제의 풀이 방식에서 경로 추적 코드를 넣어주면 된다. 경로 추적은 어떻게 할까? 보통은 way[10]이 있을 때, 1-3-4-2-5-8-7-9-6 의 순서를 가진다면, i 1 2 3 4 5 6 7 8 9 way -1 4 1 3 2 9 8 5 7 과 같이 이전 위치를 저장한다. 이를 이용해서 해..
분류 : 이분 탐색 시간복잡도 : O(nlogn) 다이나믹 프로그래밍(DP) 문제이다. DP인 만큼 어떻게 이전 상태의 정보를 저장하고 사용할지가 핵심이다. 다음의 경우를 보자. {1, 2, 3}, {5, 6, 7} 이 수열 A의 부분 수열이라고 할 때, 길이가 3으로 동일하다. 이 두 부분 수열의 다음으로 4가 주어졌을 때, 길이가 4가 되는 부분 수열은 {1, 2, 3} 이다. 이처럼 길이가 같을 때, 맨 마지막 숫자가 작을수록 효율적이다. (관찰) 그렇다면, 어떻게 마지막에 작은 숫자가 오도록 만들 수 있을까? 이진 탐색을 이용하면 된다. 이진 탐색을 이용한 최소값 갱신은 각 길이 (i + 1)에 대한 마지막 값이다. 즉, 경로가 아니라는 뜻이다. 따라서, 갱신 시에 길이에 관련하여 다음 숫자, 이..
#1 표준 스트림 표준 스트림이란 프로그래밍 언어와 운영체제에서 특정 프로그램이나 단말기 사이에 미리 연결된 입출력 통로이다. 예전에는 하드웨어와 OS 사이에 복잡하게 연결되어있었지만, 현재는 추상화하여 함수 형태로 사용할 수 있다고 합니다. 표준 스트림으로 입력, 출력, 에러 스트림이 있습니다. 이는 유닉스에서 프로그램을 사용할 때 자동으로 연결해준다고 합니다. 더보기 C의 표준 스트림 : stdin, stdout, stderr C++의 표준 스트림 : std::cin, std::cout, std::cout, std::cerr, std::wcin, std::wcout, std::wcerr, std::wclog #2 입출력 버퍼 동기화 일반적으로 입력과 출력은 동기화되어있어 한 쪽에서 작업 요청 시 fl..
CVE CVE-2021-44228 (Log4Shell) 취약한 버전 Log4j 2.0 - 2.14.1 패치 버전 Log4j 2.15 _0x001 더보기 2021년 12월 10일, 아파치 서버의 Log4j 2 Library에서 CVSS 스코어 10점의 Critical한 취약점이 발견되었다.Log4j 2 Library란 로깅 유틸리티 라이브러리로 프로그래밍을 할 때 디버깅을 위해 로그를 쉽게 남길 수 있도록 도와주는 녀석이며 아파치 오픈소스이다. 이 취약점은 Alibaba Cloud Security Team의 Chen Zhaojun가 발견하였다. _0x002 해당 취약점은 Lookups 기능에서 발견되었는데, Lookups 기능이란 Log4j에서 넘겨받은 변수를 그대로 로깅하는 것이 아니라 변수를 분석해 실..
SYSTEM https://blog.naver.com/PostList.nhn?blogId=yjw_sz#GOOD_TO_STUDY_SYSTEM_HACKING WEB https://stackoverflow.com/questions/14234560/javascript-how-to-get-parent-element-by-selector#JUST_ABOUT_TECH https://ysamm.com/?p=493&fbclid=IwAR1zYlIzsnlFWl8LOMfnaVq3eeymcQQHiXKyO28CDkcDZtl1EzYYleruSTA#FACEBOOK_DOM_BASED_XSS https://meetup.toast.com/posts/92#ABOUT_REST_API + MORE 노마드 https://nomadcoders.c..
IDS IDS란 침입 탐지 시스템으로 외부에서 내부로 들어오는 패킷이 정상인지 아닌지를 탐지하는 솔루션이다. 크게 두 가지 탐지 방식이 있다. 1. HIDS(Host-based Intrusion Detection System) - 호스트 기반 침입 탐지 시스템 - 네트워크에 대한 침입탐지는 불가능하며 스스로가 공격 대상이 될 때만 침입을 탐지 할 수 있다. 2. NIDS(Network Intrusion Detection System) - 네트워크 기반 침입 탐지 시스템 - Promiscuos Mode에서 동작하는 네트워크 인터페이스에 설치 - 암호화된 내용 탐지 불가 IPS IPS란 침임 탐지 시스템으로 IDS와 방화벽을 합친 것과 같다. 패킷들의 패턴을 분석한 뒤, 정상적인 패킷이 아니면 방화벽 기능을..