본문 바로가기

데이터베이스 - Exclusive lock과 Shared lock의 차이 Exclusive lock과 Shared lock 운영체제에서 잠금(Lock)과 유사하게 데이터베이스에서도 잠금(Lock)이 있다.멀티 트랜잭션 환경에서 데이터베이스의 일관성과 무결성을 유지하려면 트랜잭션의 순차적 진행을 보장할 수 있는 직렬화 장치가 필요하다.예를들어 한 명이 도서관의 좌석을 예약하는 중에 다른 한 명이 같은 좌석을 예약할 수 없게하여 정확히 한 명만 좌석을 배정받을 수 있게 한다.이런 이유로 이런 기능을 하는 Lock 이라는 기술이 등장했다.다양한 격리수준이 존재하고 그에 따른 lock들이 많이 있지만 크게 두 가지로 정리한다.Exclusive lock (배타적 잠금) 쓰기 잠금(Write lock)이라고도 불린다.어떤 트랜잭션에서 데이터를 변경하고자 할 때(ex . 쓰고자 할 때) ..
OS - Context Switch(컨텍스트 스위치)가 무엇인가? Context Switching이 무엇인가? 멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)를 교체하는 작업을 Context Switch(Context Switching)라고 한다.질문에 대한 답변은 이정도로 하고 좀 더 명확하게 이해해본다.* Context Switching을 문맥 교환으로 번역하지 말자. Context는 무엇인가? 사용자와 다른 사용자, 사용자와 시스템 또는 디바이스간의 상호작용에 영향을 미치는 사람, 장소, 개체등의 현재 상황(상..
해시(hash)와 암호화(Encryption) 차이점, 사용 용도 해시(Hash)와 암호화(Encryption)의 차이점이 무엇인가요? 둘 다 암호화 기법이지만 Hash는 단방향 암호화 기법이고 Encryption은 양방향 암호화 기법이다.쉽게 설명하면 Hash는 평문을 암호화된 문장(텍스트)으로 만들어주는 기능을 하고,Encryption은 평문을 암호화된 문장(텍스트)로 만들어주는 기능을 하고 + 암호화된 문장을 다시 평문으로 만드는 복호화 기능도 한다.해시(Hash)는 어떻게 암호화가 이루어질까? 예시로 설명하면 평문의 비밀번호 "jeongpro1234"를 해시함수(해시 알고리즘)를 이용하여 고정된 길이의 암호화된 문자열로 바꿔 버리는 것이 해시를 이용한 암호화 기법이다.* 해시에서 알아야 할 것들- 해시 알고리즘 및 밑에서 얘기할 암호화 알고리즘은 종류가 다양하며..
메모리 단편화(Memory Fragmentation)가 무엇이고 왜 발생하는가? 메모리 단편화가 무엇이고 왜 발생하는가? 메모리 단편화 - RAM에서 메모리의 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만 할당(사용)이 불가능한 상태를 보고 메모리 단편화가 발생했다고 한다.메모리 단편화는 내부 단편화와 외부 단편화로 구분 가능하다.내부 단편화(Internal Fragmentation)메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비 되는 상황* 예를 들어 메모장을 켰는데 OS가 4kb를 할당해줬다. 그런데 사실상 1kb만큼만 사용하고 있을 때 필요 이상으로 프로세스가 메모리를 할당받았으므로 내부 단편화가 3kb만큼 생긴 것임.외부 단편화(External Fragmentation)메모리가 할당되고 해제..
웹 브라우저에서 HTML문서 렌더링 과정 (동작 순서) 웹 브라우저의 HTML문서 렌더링 과정 1. 불러오기로더(Loader)가 서버로부터 전달 받는 리소스 스트림을 읽는 과정.읽으면서 어떤 파일인지, 데이터인지 파일을 다운로드할 것인지 등을 결정한다.2. 파싱 (Phasing)웹 엔진이 가지고 있는 HTML/XML 파서가 문서를 파싱해서 DOM Tree를 만든다.3. 렌더링 트리 만들기DOM Tree는 내용을 저장하는 트리로 자바스크립트에서 접근하는 DOM객체를 쓸 때 이용하는 것이고 별도로 그리기 위한 트리가 만들어져야 하는데 그것이 렌더링 트리다. (그릴 때 필요없는 head, title, body태그등이 없음 + display:none 처럼 DOM에는 있지만 화면에서는 걸러내야할 것들을 걸러냄)4. CSS 결정CSS는 선택자에 따라서 적용되는 태그가 ..
Http와 Https 이해와 차이점 그리고 오해(?) HTTPS (feat. http) HTTPS에 대해 알아보기 전에 HTTP를 간단하게 설명할 수 있으면 좋다.HTTP는 HyperText Tranfer Protocol로 WWW상에서 정보를 주고 받는 프로토콜이다.클라이언트인 웹브라우저가 서버에 HTTP를 통해 웹페이지나 이미지 정보를 요청하면 서버는 이 요청에 응답하여 요구하는 정보를 제공하게 된다.결국, HTTP 는 웹브라우저(Client)와 서버(Server)간의 웹페이지같은 자원을 주고 받을 때 쓰는 통신 규약이다.http는 텍스트 교환이다. html페이지도 텍스트다. 바이너리 데이터로 되어있는 것도 아니고 단순 텍스트를 주고 받기 때문에 누군가 네트워크에서 신호를 가로채어 본다면 내용이 노출된다.이런 보안상의 문제를 해결해주는 프로토콜이 HTTP..
웹 개발 페이지 처리(Paging) 방법 - 성능을 고려해보자 웹 개발 페이지 처리(Paging) 웹 개발을 하면서 당연하게(?) 고민하게 되는 것은 게시판의 페이징 처리다.실제로 면접에서 질문을 받아봤다. "페이징처리할 때 어떻게 하셨어요?"대답은 게시물의 총 개수와 한 페이지당 보여줄 게시물의 개수를 기준으로 이렇게 저렇게 해서 DB는 Mysql을 썼었으니까 LIMIT로 가져왔다고 대답했다.그런데 그런건 당연한 얘기고 본인이 듣고 싶었던 키워드는 "커서"였다고 했다.흠.. 여전히 잘 모르겠으나 페이지 처리를 정리해보고자 한다.MySQL 에는 LIMIT, MS-SQL 2012에서는 OFFSET Fetch로 페이징 쿼리를 조금 더 쉽게 작성할 수 있으나 현업에서 해당 버전, 해당 DBMS를 사용한다는 보장이 없으니 기본적인 것을 알고 가도록 한다.게시판 페이지 처리..
JAVA 컬렉션 (Vector, ArrayList, LinkedList, Set, Map) 자바 컬렉션(Java Collections) JAVA에서 대용량의 데이터를 추가/삭제하면서 처리가 필요할 때 자바 컬렉션을 사용한다.Vector : java 1.0부터 이어져온 List객체, ArrayList가 상위호환(?)이라 잘 안쓴다. 특히 쓰레드의 개수와 상관없이 동기화(synchronize) 처리를 하므로 Thread-safe 하지만 싱글쓰레드 환경이어도 동기화처리를 하므로 성능이 좋지 않아 쓰이지 않는다.ArrayList : Vector와 같은 추가/삭제 기능을 가지고 있고 자동 동기화처리가 되지 않기 때문에 빠르게 처리 가능,대신 내부적으로 배열(array) 구조를 이용하기때문에 데이터 추가/제거를 배열을 복사하는 방법으로 처리하기 때문에 추가/제거가 많을 경우 오버헤드가 많이 발생함. 특히..