크롬의 탭은 프로세스일까? 스레드일까?
CS2023. 6. 6. 17:27크롬의 탭은 프로세스일까? 스레드일까?

서론 면접 질문으로 크롬의 탭은 프로세스인지 스레드인지, 그리고 왜 그렇게 생각하는지에 대해 질문이 왔다. 이 글에서는 브라우저가 탭을 어떻게 관리하는지, 그리고 왜 그렇게 관리하는지를 조사해보려구 한다. 고맙게도 Chrome Developer Blog에서 브라우저 관련 내부 동작 원리를 설명해주는 글이 있다. 이 글에서도 설명하겠지만, 자세한 내용은 아래 내용 참고. 웹 브라우저의 내부 살펴보기 크롬의 탭은 프로세스다. (멀티 프로세스) (나는 프로세스로 답했다가, 경량화 문제를 의심하고 멀티 스레드라고 답을 바꿨다.) 크롬은 멀티 프로세스를 사용하며 IPC(Inter Process Communication, 프로세스 간 통신)을 사용한다. 만약, 특정 탭이 응답하지 않을 때는 동작하지 않는 탭의 프로..

FK란 무엇인가? 각 관계형은 어떤 경우에 가장 효율적인가?
CS2023. 3. 24. 18:55FK란 무엇인가? 각 관계형은 어떤 경우에 가장 효율적인가?

서론"FK란 무엇인지, 왜 사용하는지, 언제 사용하는지 설명해주세요." 모의 면접에서 질문이 나왔다. 이부분을 조금 더 깊게 공부해보려고 한다. FK란 무엇이고 왜 사용하는가?Foreign Key는 외래키라고 부른다. RDBMS에서 관계를 지정할 때 사용합니다. 하지만, FK 말고 일반 컬럼으로도 관계를 표현할 수 있지만, 그럼에도 FK를 사용하는 이유는 *참조 무결성 제약조건을 설정할 수 있기 때문입니다. (참조 무결성은 RDBMS에서 FK와 PK간의 일관성을 유지하는 것입니다.) 관계의 종류는 어떻게 되나요?기본적으로 RDBMS에서는 아래 네가지 종류의 관계를 지원해줍니다.One-to-OneOne-to-Many / Many-to-OneMany-to-Many 각 관계 매핑에 따라 장단점과 적절한 예시를..

CS2023. 3. 15. 16:09데이터베이스 Lock이란

데이터베이스 락이란? Lock이란 트랜잭션 처리의 순차성을 보장하기 위한 방법입니다. 데이터베이스 트랜잭션과 격리성의 이해가 있어야 이해하기 쉬우실겁니다. Lock의 종류 공유(Shared) Lock 배타(Exclusive) Lock 이를 쉽게 말하면.. 공유락: Read Lock(읽기 락) 배타락: Write Lock(쓰기 락) 이라고 말합니다. 해당 글에서는 읽기 락과 쓰기 락이라고 표현하겠습니다. 읽기 락(i. e. 공유 락) 읽기 락은 자원을 읽을 때 사용됩니다. 읽기 락의 특징은 읽기 Lock끼리 하나의 자원을 읽을 때 여러 사용자(트랜잭션)가 동시에 접근할 수 있다는 것입니다. 쓰기 락(i. e. 배타 락) 쓰기 락은 데이터를 변경할 때 사용합니다. 트랜잭션이 완료될때까지 유지됩니다. 배 타락..

트랜잭션 격리 수준
CS2023. 3. 7. 14:00트랜잭션 격리 수준

데이터베이스 트랜잭션 격리 수준데이터베이스 트랜잭션의 격리 수준은 격리성(각각의 트랜잭션은 서로 간섭없이 독립적으로 수행되어야한다는 규칙)의 견고함 정도를 말합니다.트랜잭션 격리 수준트랜잭션의 격리 수준은 총 네 단계로 나뉩니다.READ UNCOMMITEDREAD COMMITEDREPEATABLE READSERIALIZABLEREAD-UNCOMMITED가 가장 성능이 낮은 대신 가볍고, SERIALIZABLE이 가장 성능이 높으며 무겁습니다.때문에 프로덕트 케이스에 맞는 트랜잭션 격리 수준을 선택하면 되겠습니다. 성능이 좋고 나쁘고는 어떻게 판단하나요?성능을 판별하는 기준은 격리성을 얼마나 잘 유지하느냐입니다.위에서 설명한 네가지 격리 수준에서는 아래와 같은 이슈가 발생합니다.DIRTY READNON-R..

[PostgreSQL] 데이터베이스 트랜잭션이란?
CS2023. 3. 6. 19:54[PostgreSQL] 데이터베이스 트랜잭션이란?

트랜잭션(Transaction) postgresql을 기준으로 작성되어있습니다. 트랜잭션: 데이터베이스 관리 시스템에서의 최소 상호작용의 단위 개요 데이터베이스 트랜잭션은 데이터베이스에서 수행되는 일련의 작업이며 모두 단일한 논리적 작업 단위입니다. 즉, 특정 트랜잭션을 일부만 수행하거나 결과를 저장하는 경우는 절대 존재할 수 없습니다. 결과는 무조건 성공 / 실패만 존재합니다. 트랜잭션은 여러개의 DML으로 이루어질 수 있습니다. DML(Data Manipulation Language)이란 데이터 조작 언어라는 뜻으로 CRUD의 행동을 제어합니다. SELECT (READ) INSERT (CREATE) UPDATE (UPDATE) DELETE (DELETE) 트랜잭션을 쪼개면 여러 DML이 존재할 수 있..

우리는 왜 JWT를 사용하는가? / JWT 사용 이유
CS2023. 2. 20. 17:49우리는 왜 JWT를 사용하는가? / JWT 사용 이유

서론CS 스터디를 준비하다가 웹 보안에 대한 주제로 스터디를 진행하기로 하였다. 그 중 JWT에 대한 내용을 조사하다가 고민해본 점을 정리한다. What is JWTJSON Web Token의 준말입니다. 자바스크립트의 Object(Key Value) 자료구조를 가지고 있으며, Web Token으로써 사용할 수 있다는 의미다. JWT 사용 이유HTTP는 기본적으로 state-less를 지향합니다. state-less(무상태)란? 서버-클라이언트 구조에서 서버가 클라이언트의 상태를 가지고 있지 않는 것.장점1: 서버의 확장성이 높으며 대량의 트래픽이 발생해도 대처할 수 있음.장점2: (서버가 분리되어 있는 경우) 특정 DB/서버에 의존하지 않아도 인증할 수 있음.단점1: state-ful(세션) 방식보다 ..

[ 개발바닥 2사로 ] 면접 스터디를 시작하며..
CS2023. 2. 15. 16:00[ 개발바닥 2사로 ] 면접 스터디를 시작하며..

개발바닥 2사로에서 진행되는 CS 면접 스터디에 참가하게 되었습니다. 스터디 목적 리마인드 목적은 인턴 준비 면접 준비 두괄식으로 말하기 면접관이 질문했던 내용을 다시 말하며 답변 시작하기. (면접관 질문 리마인드 + 생각할 시간 창출..) 면접관의 의도가 이해가 되지 않는다면 의도에 관해 재질문하기. 애매한 용어는 사용하지 않기. CS 지식 습득 네트워크, DB, 운영체제, SQL 등 프레임워크 지식 습득? 이번에 참여한 스터디원 중 저를 제외한 모두가 JVM 개발자라 프레임워크보단 CS부분을 많이 얻어가려고합니다. 나만의 스터디 룰 본인이 맡은 부분에 대해서는, 이 부분 외에는 더이상 공부할 것이 없을 정도로 준비해 오기. 블로그에 작성할 수 있는 정도로 조사하기. 각 키워드별 예상 질문 뽑아오기. ..

Git Flow란, 깃 브랜치 전략
CS2022. 9. 6. 17:55Git Flow란, 깃 브랜치 전략

Flow란?직역하여 흐름이라는 의미입니다. git+flow는 'git에서 제공하는 브랜칭 기능을 활용한 변경 이력 관리 전략'입니다.이 외에도 다음과 같은 전략이 있으므로 적용하고자 하는 팀 사이즈에 따라 아래 전략들도 고려해주세요.github flow: git flow보다 훨씬 단순한 전략gitlab flow: git보다는 단순하고 github flow보다는 복잡한 전략  Git Flow란?브랜치를 나누는 방법에 대한 분류 중 하나입니다. Git Flow에서의 특징은 브랜치를 5종류로 나뉩니다.main(master): 서비스을 직접 배포하는 역할을 하는 브랜치입니다.feature(기능): 각 기능 별 개발 브랜치입니다.develop(개발): feature에서 개발된 내용을 가지고 있는 브랜치입니다.re..

image