본문 바로가기

전체 글

(96)
[DB]인덱스와 인덱스의 장단점 [인덱스(index)란] 데이터베이스 검색 속도를 높이는데 사용되는 자료구조 이다. 인덱스(index)는 책 뒤에 있는 색인 같은 것이다. 찾아야 할 내용이 있을 때 색인을 보고 해당 페이지로 가서 원하는 정보를 얻을 수 있다. 만약 색인이 없다면 책 첫 페이지부터 마지막 페이지까지 모두 넘겨봐야 한다. [인덱스 설정에 따른 실행 계획] 인덱스가 설정 되어 있지 않는 경우 인덱스가 없는 상태에서 데이터를 조회하게 되면 Full Table Scan을 하게 된다. 인덱스가 설정 되어 있는 경우 [인덱스의 관리] 인덱스는 항상 최신의 정렬 상태를 유지해야 원하는 값을 빠르게 탐색 할 수 있다. 따라서 인덱스가 적용된 컬럼에 변경 작업이 있다면 연산을 추가적으로 해주어야 하므로 이에 따른 오버해드가 발생한다. ..
[프로그래머스 118667] Level2 두 큐 합 같게 만들기 문제 Link https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 Key Point 1번큐에 2번큐의 값이 모두 넘어가는 상황 1개 2번큐에 1번큐의 값이 모두 넘어가는 상황 1개 1번큐의 값과 2번큐의 값이 모두 교체되는 상황 1개 👉 이렇게 총 3개가지의 경우가 있으므로 최대로 확인하는 경우는 queue의 크기 x 3이 된다. 옮기는 경우의 수는 각 큐의 합이 더 큰쪽이 있다면 합계가 큰 큐의 값을 합계가 작은 큐로 옮기면 된다. 오..
www.google.com을 입력했을 때 웹 동작방식 [웹 페이지 요청에 대한 동작방식] 브라우저에 입력된 URL을 DNS 서버에서 검색해서 domain name에 해당하는 IP 주소를 찾아 사용자가 입력한 URL 정보와 함께 전달한다. IP 주소는 HTTP 프로토콜을 사용해 웹 페이지 사본을 보내달라는 HTTP 요청 메시지를 생성하고 이 메시지는 TCP 프로토콜을 이용해서 인터넷을 거쳐 해당 IP 주소의 컴퓨터로 전송된다. 이렇게 도착한 HTTP 요청 메시지는 HTTP 프로토콜을 사용해 웹 페이지 URL 정보로 변환된다. 웹 서버는 도착한 웹 페이지 URL 정보에 해당하는 데이터를 검색한다. 검색된 웹 페이지 데이터는 HTTP 프로토콜을 이용해 HTTP 응답 메시지를 만들어 TCP 프로토콜을 이용해 인터넷을 거쳐 요청 컴퓨터로 전송된다. 도착한 HTTP ..
[OS]데드락이란? [데드락이란?] 둘 이상의 프로세스가 서로 상대방에 의해 충족될 수 있는 event를 무한히 기다리는 현상 [데드락 발생 4대요소] 데드락 발생 4가지의 조건을 모두 만족해야 한다. Multi exclusion(상호배제) 매순간 하나의 프로세스만이 자원을 사용할 수 있다. No preemption(비선점) 프로세스는 자원을 스스로 내어놓을 뿐 강제로 빼앗기지 않는다. Hold end wait(보유대기) 자원을 가진 프로세스가 다른 자원을 기다릴 때 보유 자원을 놓지 않고 계속 갖고 있는다. Circuler wait(순환대기) 자원을 기다리는 프로세스간에 사이클이 형성되어야한다. [데드락 해결 방법 - 미리 예방하는 방법] 교착상태 예방(Deadlock Prevention) 교착상태 발생 요인 4가지 조건..
JWT(Json Web Token)에 대해 [JWT(Json Web Token)이란] Json Web Token (JWT)는 정보를 JSON 객체로 안정하게 전송하기 위한 간결한 토큰입니다.(RFC 7519) HMAC와 같이 암호화 해시 함수와 기밀 암호화 키를 갖는 메시지 인증 코드 또는 RSA 또는 ECDSA를 사용하는 public/private key을 사용하여 서명을 합니다. 이처럼 서명되어 있기 때문에 확인하고 신뢰할 수 있습니다. 토큰 안에 포함된 클레임(Claim)의 무결성을 확인 할 수 있으며 암호화된 토큰은 이러한 클레임(Claim)을 다른 참조로부터 숨길 수 있습니다. public/private key를 이용하여 토큰에 서명할 때 서명은 개인키를 보유하고 있는 참조만 서명했다는 것을 증명할 수 있습니다. [JWT는 언제 사용할까..
[OS] 임계영역(Critical Section), 상호배제(Mutex), 세마포어(Samaphores) [임계영역(Critical Section)] 임계영역 공유 리소스에 대한 동시 엑세스는 예기치 않거나 잘못된 동작을 발생할 위험이 있다. 이렇게 공유 데이터를 접근하는 코드 부분을 임계영역이라고 한다. 임계영역을 충족하는 조건 상호 배제 : 프로세스 A가 ciritical section 부분을 수행 중이면 다른 모든 프로세스들이 사용하면 안된다. Progress : 임계영역을 사용하는 프로세스가 없다면 필요한 프로세스가 사용할 수 있도록 해야한다. 유한대기 : 프로세스가 임계영역에 들어가려고 요청한 후부터 그 요청이 허용되기까지 다른 프로세스들이 임계영역에 들어가는 횟수에는 한계가 있다. [크리티컬 섹션의 독점 사용을 보장하는 매커니즘] 상호배제(Mutex) 쓰레드의 동시 접근을 허용하지 않는다. 임계영..
[OS] 쓰레드와 멀티쓰레드 [쓰레드] 쓰레드란? 프로세스(프로그램) 실행의 단위이며 하나의 프로세스는 여러개의 쓰레드로 구성이 가능하다. 하나의 프로세스를 구성하는 쓰레드들은 프로세스에 할당된 메모리, 자원 등을 공유한다. 프로세스와 같이 실행, 준비, 대기 등의 실행 상태를 갖으며 실행 상태가 변할때마다 쓰레드 문맥교환(context switching)을 수행한다. 각 쓰레드별로 자신만의 스택과 레지스터를 갖는다. 쓰레드는 프로세스보다 생성 및 종료시간, 쓰레드간의 전환 시간이 짧다. 쓰레드는 프로세스의 메모리, 자원등을 공유하므로 커널의 도움없이도 상호간의 통신이 가능하다. PC Resister를 쓰레드마다 독립적으로 할당하는 이유 PC 값은 쓰레드가 명령어의 어디까지 수행하였는지를 나타나게 한다. 쓰레드는 CPU를 할당받았다..
Java의 접근제어자(Access Modifier) [접근제어자(Access Modifier)] 변수나 메소드의 사용 권한은 다음과 같은 접근 제어자를 사용하여 설정할수 있다. private private 이 붙은 변수, 메소드는 해당 클래스에서만 접근이 가능하다. default 접근 제어자가 없는 변수, 메소드는 default 접근 제어자가 되어 default로 지정된 변수나 메서드가 있는 클래스와 같은 패키지 내에서만 접근이 가능하다. 접근 제어자를 별도로 설정하지 않는다면 default 접근 제어자가 된다. package house; public class HouseKim { String lastname = "kim"; // lastname은 default 접근제어자로 설정된다. } package house; public class HousePark..
INNER JOIN과 OUTER JOIN [JOIN] 일반적인 경우 행들은 PRIMARY KEY(PK)나 FOREIGN KEY(FK) 값의 연관에 의해 JOIN이 성립된다. 하지만 어떤 경우에는 이러한 PK, FK의 관계가 없어도 논리적인 값들의 연관만으로 JOIN이 성립 가능하다. FROM 절에 여러 테이블이 나열되더라도 SQL에서 데이터를 처리할 때는 단 두 개의 집합 간에만 조인이 일어난다는 것이다. 테이블의 조인 순서는 옵티마이저에 의해서 결정된다. Table A id userId name 1id001youn 2id002life 3id003mysql 4id004oracle 5id005databasel -- Table B id userId nickName 1id001nickYoun 2id002nickLife 4id004nickOracle ..
[프로그래머스 1844] Lv.2 게임 맵 최단거리 문제 Link https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 Key point 현재 위치로부터 상하좌우로 이동하게 되었을 때, 이동한 칸까지 가는 거리가 최소가 되도록 해야한다. 최단 거리를 찾아야 하므로 BFS를 이용해야 한다. Java 문제풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 3..