전체 글 110

[TIL][CS] TCP/UDP와 동작 과정, TCP 3way handshake

오늘은 매일 잘 모르니까 해야지 해야지 하면서 다른 공부에 밀렸던 TCP, UDP와 3way handshake에 대해서 공부했다!! 먼저 본론으로 들어가기 전에, TCP/UDP는 왜 알아야 할까. 잠시 생각해 보고 스크롤을 밑으로 내려보자. 왜 알아야 하나요 🤔 TCP/UDP는 웹 애플리케이션의 신뢰성, 성능 개선을 하는 중요한 역할을 하기 때문이다. 데이터의 소실 방지, 순서 보장 ex) 데이터베이스 서버와 통신을 할 때 저장하려고 하는 데이터가 소실되거나, 혹은 순서가 뒤바뀌어버린다면? 낭패 ! HTTP3.0에서 도입된 *QUIC(Quick UDP Internet Connections)의 도입 배경 이해 => 이러한 상황을 이해하기 위해서 TCP/UDP를 알고 있어야 한다. *QUIC = = TCP ..

Computer Science 2024.04.04

[TIL][CS] 트랜잭션과 ACID, 트랜잭션의 고립 수준

오늘 스터디 주제는 '트랜잭션'! 트랜잭션에 대해 기본적인 개념만 알고 있었는데, 오늘을 기회로 트랜잭션의 기본부터 고립 수준까지 공부를 해봤다. 더불어 내가 이해한 것을 현업에 가까운 예시를 들면서 포스팅 해보고자 한다. 먼저 기본적으로 모두들 잘 알고있는 트랜잭션의 개념과 특성에 대해 간단히 알아보자. 📌 트랜잭션이란? 트랜잭션이란, 데이터베이스에서 수행되는 여러 작업을 하나의 논리적 단위로 수행하는 것을 말한다. 속된말로 곧 죽어도 같이 묶여서 수행되어야 하는 연산을 묶은 것이라고 생각하면 되겠다 ㅎㅎ 트랜잭션의 연산 하나로 묶은 연산을 수행하며 오류 없이 모든 작업이 성공적으로 마쳐야만 DB에 반영하게 되는데, 이것을 트랜잭션 연산에서는 '커밋' (COMMIT)이라고 한다. 하지만 중간에 하나에서..

Computer Science 2024.04.02

[TIL][Test] TDD 파헤쳐보기 (개념, 장/단점, 흐름)

테스트 코드를 본격적으로 쓰기 전에 테스트의 종류와 필요성에 대해 정리했던 시간을 가졌었다. 2024.03.22 - [Framework/Spring] - [TIL][Spring] 단위 테스트/통합 테스트/인수 테스트, 테스트 코드의 필요성 [TIL][Spring] 단위 테스트/통합 테스트/인수 테스트, 테스트 코드의 필요성 테스트 코드를 프로젝트에 적용하기에 앞서, 테스트에 대해 공부하고 회고해보는 시간을 가지고 포스팅한다. 사실 여태 테스트 코드를 작성하지 않고 Postman 으로만 API 기능 테스트를 진행해왔 developer-jinnie.tistory.com 오늘 포스팅에선 TDD (테스트 주도 개발)가 뭔지 그 개념을 자세히 공부해보도록 하자!! 📌 TDD란? (Test-Driven-Develo..

Framework/Spring 2024.04.01

[TIL][Algorithm] 다익스트라 알고리즘과 그 구현

오늘의 스터디 주제는 알고리즘, 그 중에서도 다익스트라 알고리즘에 대해 자세히 소개하고 싶어 포스팅해본다. 처음 알고리즘을 배울 때 정렬이나 BFS, DFS같은 알고리즘들은 한 번 배우고 아, 이런 식으로 풀면 되겠구나! 가 대충 감이 왔는데, 다익스트라의 경우 감이 잘 안잡혀서 당황했던 기억이 있다. 나와 스터디원들의 감을 다시 잡아보기 위해 포스팅 야무지게 써보겠다 !!! 📌 최단 경로 (shortest path) 우선, 다익스트라 알고리즘과 함께 딸려오는 키워드가 '최단 경로'이다. 알고리즘 문제를 풀 때, 'A에서 B로 가는 최소 비용이 얼마인가?' 이런 유형을 왕왕 본 적이 있을 것이다. 보통은 이런 공간적인 문제를 그래프로 표현하고, 각 지점은 노드, 도로는 간선으로 표현이 된다. 일반적으로 ..

Algorithm 2024.03.29

[TIL][OS] 멀티 프로세스와 멀티 스레드의 차이, 컨텍스트 스위칭

같이 항해하는 친구들끼리 진행해보기로 한 CS 스터디! aka 심포지엄 (ㅋㅋ)이번에는 매번 읽고만 넘기고 자세히 짚어보지는 않았던 멀티 프로세스와 멀티 스레드의 차이에 대해 공부해보기로 했다.이 둘의 차이에 대해 알아보기 전에 먼저 프로세스와 스레드란 뭔지 알아보자. 🔎 프로세스 (Process)란?프로세스는 컴퓨터에서 실행 중인 프로그램을 의미한다.실행 중인 프로그램은 메모리에 올라가서 CPU에 의해 실행되며, 이렇게 실행 중인 프로그램을 프로세스라고 부르는것이다.프로세스는 운영체제(OS)에 의해 관리되고, 프로세스마다 자신의 주소 공간, 메모리, 입출력, 파일 등의 자원을 갖고 있다. 또한 하나의 프로그램이 여러 개의 프로세스로 분리되어 실행될 수도 있다!즉, 프로세스란 '프로그램이..

Computer Science 2024.03.26

[TIL][Test] 단위 테스트/통합 테스트/인수 테스트, 테스트 코드의 필요성

테스트 코드를 프로젝트에 적용하기에 앞서, 테스트에 대해 공부하고 회고해보는 시간을 가지고 포스팅한다. 사실 여태 테스트 코드를 작성하지 않고 Postman 으로만 API 기능 테스트를 진행해왔다.하지만 수동으로 API 요청을 생성한 후 테스트를 실행해야 해서 자동화가 불가능했고, 모든 시나리오와 경로를 수동으로 테스트 해야했기 때문에 그 과정에서 내가 예상하지 못한 버그 확률이 높아졌다. 테스트 해야 할 시나리오를 빼먹기도 했고 🥲 그래서 테스트 코드의 필요성을 느끼고, 비즈니스 로직의 핵심인 서비스 레이어 코드부터 단위 테스트를 진행해보려 한다. 아래 '단위 테스트 단점' 에서 언급할 객체 간 의존성 문제를 해결하기 위해 객체를 mocking 해서 진행할 예정이다! 🔎 테스트 코드란? ..

Framework/Spring 2024.03.22

[TIL][CS] UML / UML 다이어그램이란?

✏️ 대표적인 개념 모델링 도구, UML UML (Unified Modeling Language) 모델링 기술과 방법론을 통합하여 표준화한 객체지향 모델링 언어 소프트웨어 개발 과정에서 의사소통을 원활하게 하기 위해 사용 UML 구성 요소: 사물(Things), 관계(Relationships), 다이어그램(Diagram) 🔹 사물 객체 간의 관계를 형성하는 대상으로 모델을 구성하는 기본 요소 구조 사물 - 시스템의 개념적, 물리적 요소를 표현 (Class, Use Case, Component, Node) 행동 사물 - 시간과 공간에 따른 요소들의 행위를 표현 (Interaction, State Machine) 그룹 사물 - 요소들을 그룹으로 묶어서 표현 (Package) 주해 사물 - 부가적인 설명이나 ..

Computer Science 2024.03.21