분류 전체보기 108

[삽질] 자꾸 CLI 명령어 까먹어서 이제 안 까먹으려고 쓰는 "Port 8080 was already in use" 에러 해결 방법

요 에러는 예전 스프링 framework로 톰캣 삽입해서 쓸 때부터 왕왕 봤던 에러다.가끔 로컬에서 애플리케이션 실행시키면 시작부터 이렇게 error가 뜨는 경우가 있다. 이 에러는 왜 나나요?에러 메시지 그대로 포트가 이미 사용중인 포트이기 때문이다. 발생 원인으로는 동일한 포트를 사용하는 어플리케이션을 번갈아가며 실행 시킨 경우 (이미 다른 하나가 실행중)IDE 상에서는 프로세스가 종료되었으나 실제 프로세스는 종료 안 된 경우등이 있다고 한다.   해결 방법 실행 하고자 하는 어플리케이션의 실행 포트를 바꾼다.현재 포트를 사용하고 있는 프로세스를 종료한다.필자는 명령 프롬프트를 통한 두 번째 방법을 선호한다. (필자의 환경은 Windows이다. Mac 과는 방법이 다르니 주의) cmd 창을 열고 아래..

General/debugging 2024.04.10

[TIL][CS] 운영체제(OS) 톺아보기

오늘 CS 스터디 주제는 '기초탄탄한 개발자가 되자!!' 운동의 일종으로 .. 기본 중 기본인 운영체제에 대해 알아보도록 하겠다! 📌운영체제란?운영체제(OS, Operating System)란 사용자가 컴퓨터를 쉽게 다루게 해 주는 인터페이스이다. 한정된 메모리나 시스템 자원을 효율적으로 분배해주는 야무진 녀석⭐이라고 생각하면 된다!  📌운영체제의 역할위에서, 운영체제는 한정된 메모리나 시스템 자원을 효율적으로 분배해준다고 했다. 그래서 '어떻게' 효율적으로 분배한다는 건지, 운영체제의 역할을 통해 알아보자. 운영체제의 역할은 크게 네 가지가 있다.CPU 스케쥴링과 프로세스 관리CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 어떤 프로세스가 CPU를 점유하고..

Computer Science 2024.04.09

[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