[CS] 낙관적 락, 비관적 락
·
CS
낙관적 락과 비관적 락의 개념적 차이 위주로 서술한 글입니다. 락(Lock)의 필요성여러 사용자나 프로세스가 동시에 동일한 수정하려고 하는 상황에서, 데이터가 충돌하거나 일관성이 깨질 수 있습니다. 이것을 방지하기 위해 락을 사용합니다.  락이란 데이터베이스에서 여러 트랜잭션이 동시에 동일한 데이터를 변경할 때, 충돌을 방지하고 데이터 무결성을 유지하기 위해 하나의 트랜잭션만이 데이터를 변경할 수 있도록 하는 매커니즘입니다.  이 락은 비관적 락과 낙관적 락으로 나뉘게 됩니다. 비관적 락(Pessiimistic Lock)비관적 락은 데이터의 충돌이 자주 발생할 것으로 가정하고, 트랜잭션이 데이터를 읽거나 수정할 때 즉시 락을 걸어 다른 트랜잭션이 해당 데이터에 접근하지 못하게 하는 방식입니다. 즉, 데이..
[CS] OSI 7계층과 TCP/IP
·
CS
혼공학습단 12기 과제로 혼자 공부하는 네크워킹을 읽고, 정리한 내용을 작성한 글입니다. 아주 긴 서론 혼공학습단을 처음 지원한게 아마 8기인 것 같아요... 그 때는 혼자 공부하는 파이썬으로 혼공 학습단에 참여했는데, 제가 개발 블로그를 시작하게 된 동기가 되어 준 스터디 활동이라 아주 애정합니다. 혼공파 글은 네이버 블로그에서 작성했기 떄문에 이 블로그에선 볼 수 없지만, 혼자 공부하는 MySQL글은 아직도 있답니다...! 처음 혼공단을 할 때에는 고등학교 1학년, 프로그래밍을 배운지 3개월정도 밖에 안 된 병아리... 까마귀였는데 지금은 취업까지 한(정규직은 아니지만) 상태입니다 ㅠㅠㅠ 덜덜 시간이 참 빠르네요... 기술 블로그가 제가 프로그래밍을 공부하는 데에 큰 도움이 되었어요, 남들에게 제 꾸..
[CS] 비선형 자료구조 그래프, 트리, 힙, 맵, 셋, 해시 테이블에 대해 알아보자
·
CS
비선형 자료구조인 그래프, 트리, 힙, 맵, 셋, 해시테이블에 대해 작성한 글입니다.비선형 자료구조비선형 자료구조란 일렬로 나열하지 않고 자료 순서나 관계가 복잡한 구조를 말합니다.  그래프그래프는 정점(vertex)과 간선(edge)으로 이루어진 자료 구조를 말합니다. 정점(Vertex): 그래프의 구성 요소 중 하나로, 데이터를 저장하는 노드입니다. 예를 들어, 소셜 네트워크에서 사용자나 지역망에서 장치들이 정점이 될 수 있습니다.간선(Edge): 그래프의 정점들을 연결하는 선으로, 노드들 간의 관계를 나타냅니다. 간선은 방향이 있을 수도 있고 없을 수도 있습니다.방향성(Directionality): 간선이 방향 그래프(Directed Graph)일 경우, 방향성이 있습니다. 즉, 간선이 한 정점에서..
[CS] 선형 자료구조에 대해 알아보자 (연결 리스트 / 배열 / 백터 / 스택 / 큐)
·
CS
선형 자료구조인 연결 리스트, 배열, 벡터, 스택, 큐에 대해 작성한 글입니다.  선형 자료구조 (Linear Data Structure)선형 자료구조(Linear Data Structure)는 데이터 요소들이 선형적인 순서로 배열되어 있는 자료구조를 의미합니다. 이러한 자료구조에서는 데이터 요소들이 일렬로 연결되어 있으며, 각 요소는 이전 요소와 다음 요소로 직접적으로 연결되어 있습니다. 주요 특징으로는 데이터 요소들의 순서가 고정되어 있고, 각 요소들 간에는 순차적인 관계가 존재합니다. 연결 리스트 (Linked List)연결 리스트(Linked List)는 데이터 요소(Node)가 데이터와 다음 요소를 가리키는 포인터로 이루어진 노드들의 집합입니다. 각 노드는 다음 노드를 가리키는 포인터(참조)를 ..
[CS] 데이터베이스의 정규화
·
CS
데이터베이스의 정규화 과정과 정규화 원칙에 대해 설명하는 글입니다. 정규화 데이터베이스 정규화는 데이터베이스 설계에서 중복을 최소화하고 데이터 일관성을 유지하기 위해 사용되는 프로세스입니다. 릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나서 이를 해결하거나, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정을 말합니다. 정규형 원칙 정규형의 원칙이란 다음과 같은 원칙을 의미합니다. 같은 의미를 표현하는 릴레이션이지만 좀 더 좋은 구조로 만들어야 함 자료의 중복성은 감소해야 함 독립적인 관계는 별개의 릴레이션으로 표현해야 함 각각의 릴레이션은 독립적인 표현이 가능해야 함 일반적으로 1NF(First Normal Form)부터 5NF(Fifth Normal Fo..
[CS] 토큰 기반 인증과 JWT
·
CS
토큰 기반 인증과 JWT에 대한 개념을 작성한 글입니다. 토큰 기반 인증이란? 토큰 기반 인증은 사용자 인증 확인 방법 중 하나입니다. 명칭 그대로 토큰을 사용하여 사용자를 확인합니다. 토큰은 서버에서 클라이언트를 구분하기 위한 유일한 값입니다. 서버가 토큰을 생성해서 클라이언트에게 제공하면, 클라이언트는 이 토큰을 갖고 있다가 여러 요청을 이 토큰과 함께 신청합니다. 그럼 서버는 토큰을 보고 요청한 사용자가 유효한 사용자인지 검증합니다. 토큰을 전달받고 인증받는 과정 로그인 요청: 클라이언트가 아이디와 비밀번호를 서버에 전달하면서 인증을 요청합니다 토큰 생성 후 응답: 서버는 아이디와 비밀번호를 확인해 유효한 사용자인지 검증합니다. 유효한 사용자일 경우엔 토큰을 생성해서 응답합니다. 토큰 저장: 클라이..
[DB] 트랜잭션과 ACID, 데이터의 무결성
·
CS
트랜잭션과 무결성에 대해 공부한 내용을 정리한 글입니다. 트랜잭션 트랜잭션은 데이터베이스 시스템에서 수행되는 작업의 단위를 말합니다. 예를 들어 정보를 변경하거나 정보를 삽입할 때 사용되는 여러개의 쿼리를 묶은 단위를 트랜잭션이라고 합니다. 마치 프로그래밍의 함수와도 같습니다. 우리가 트랜잭션을 알아야 하는 이유는 트랜잭션은 데이터베이스에서 데이터의 일관성과 무결성을 유지하는 데에 중요한 개념이기 때문입니다. 트랜잭션은 ACID 속성을 준수함으로써 데이터의 일관성과 무결성을 유지할 수 있습니다. ACID 속성을 요약하자면 다음과 같습니다. 원자성 (Atomicity): 트랜잭션은 모두 실행되거나 모두 실행되지 않아야 합니다. 즉, 트랜잭션의 모든 작업이 성공하면 커밋되고, 하나라도 실패하면 롤백됩니다. ..
[CS] OSI 7계층이란
·
CS
OSI 7계층에 대해 공부한 내용을 정리한 글입니다. OSI 7 계층 OSI 7계층은 OSI 모델을 컴퓨터 네트워크에서 통신 프로토콜의 기능을 7개의 계층으로 나눈 것이고, 각 계층은 특정한 역할을 수행합니다. OSI(Open Systems Interconnection) 모델에서 계층을 나눈 이유는 네트워크 통신을 이해하고 설계하는 데 도움이 되는 구조를 제공하기 위함입니다. 이러한 구조를 통해 통신이 일어나는 과정이 단계별로 파악할 수 있습니다. 각 계층의 역할을 간단히 설명하겠습니다: 물리 계층 (Physical Layer): 데이터를 전송하기 위한 물리적 매체를 다룹니다. 예를 들어, 케이블, 광섬유, 무선 등이 여기에 해당합니다. 데이터 링크 계층 (Data Link Layer): 물리적인 네트워..
[디자인패턴] 싱글톤 패턴과 의존성 주입
·
CS
싱글톤 패턴에 대해 작성한 글입니다. 디자인패턴이란? 디자인패턴이란 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 규약 형태로 만들어 놓은 것입니다. 디자인 패턴을 통해 개발자들은 문제를 해결할 때 일관된 방식으로 문제에 접근할 수 있습니다. 싱글톤 패턴 싱글톤 패턴(singleton pattern)은 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴입니다. 보통 데이터 베이스 연결 모듈에 많이 쓰입니다. 왜냐하면 데이터베이스 연결은 시스템 전반에 걸쳐 공유되어야 하고, 중복 연결을 피해야 하기 때문입니다. import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLE..
[CS] HTTP와 HTTPS란 무엇이고 어떤 차이가 있을까?
·
CS
HTTP와 HTTPS HTTP HTTP는 Hypertext Transfer Protocol의 약자로 클러아언트와 서버 간 통신을 위한 통신 규칙입니다. 사용자가 웹 사이트를 방문하면 사용자가 웹 서버에 HTTP 요청을 전송하고 웹 서버는 HTTP 응답으로 대응합니다. 즉, HTTP 프로토콜은 네트워크 통신을 작동하게 하는 기본 기술입니다. HTTPS HTTPS는 Hypertext Tranfer Protocol Secure의 약자로 HTTP에서 보안 레이어가 추가된 프로토콜입니다. HTTPS에서는 브라우저와 서버가 데이터를 전송하기 전에 암호화된 연결을 사용합니다. HTTP의 동작 방식 클라이언트 요청: 클라이언트(웹 브라우저 등)가 웹 서버에게 요청을 보냅니다. 이 요청은 보통 웹 주소(예: http:/..
[CS] URL이란 무엇이고 어떻게 구성되어 있을까?
·
CS
URL의 정의와 구성에 대해 알아보는 글입니다. URL이란? URL은 "Uniform Resource Locator"의 약자로, 웹 상에서 특정 자원(웹 페이지, 문서, 이미지 등)의 위치를 나타내는 주소입니다. 따라 이론적으로 각각의 유효한 URL은 고유한 리소스를 가리킵니다. 물론 그 중에서 예외적으로 더 이상 존재하지 않거나, 이동한 리소스를 가리키는 URL도 존재합니다. URL의 구성 "https://www.example.com/search?q=url&lang=en" 위의 예시 URL과 이미지를 참고하여 URL의 구성을 알아보겠습니다. 프로토콜 위 이미지에서 Schema로 표시된 연두색 부분입니다. URL의 첫 번째 부분은 자원에 접근하기 위해 사용되는 프로토콜을 나타냅니다. 가장 흔한 프로토콜은..
[CS] 브라우저에 www.google.com 을 검색하면 일어나는 일
·
CS
브라우저에 www.google.com을 검색했을 때 일어나는 일을 짚어보면서 웹의 통신 흐름을 알아보는 글입니다. 큰 흐름 살펴보기 1. 브라우저 캐시 체크 브라우저 캐시 -> OS캐시 -> 라우터 캐시 -> ISP 캐시에서 google.com과 대응하는 IP 주소를 찾는다 브라우저 캐시에서 google.com에 대한 데이터가 있는지 찾습니다. 브라우저 캐시에 데이터가 없다면 OS캐시를 찾아보게 됩니다. 그 다음 라우터 캐시, ISP(Internet Service Provider)캐시를 확인합니다. 캐시 캐시는 데이터나 정보를 일시적으로 저장하는 장소를 가리킵니다. 컴퓨터 시스템에서 캐시는 빠른 액세스를 위해 사용되며, 데이터에 다시 액세스할 때 더 빠르게 데이터에 접근할 수 있도록 도와줍니다. 라우터 ..