TIL(CS)
-
웹소켓이란? (feat.Spring,STOMP,SockJS)
웹소켓이란?웹소켓(WebSocket)은 클라이언트와 서버 간의 실시간 양방향 통신을 가능하게 하는 프로토콜기존의 HTTP 통신 방식은 클라이언트가 요청을 보내면 서버가 응답하는 요청-응답 모델을 따른다.반면, 웹소켓은 최초 연결 이후 클라이언트와 서버 간에 지속적인 연결을 유지하면서 상호 간에 데이터를 주고받을 수 있다.이는 실시간 기능이 필요한 애플리케이션(채팅, 실시간 알림, 게임) 등에 유용하게 사용된다.웹소켓의 특징양방향 통신클라이언트와 서버 모두 메시지를 보낼 수 있다.지속적인 연결HTTP와 달리 웹소켓은 연결이 한번 성립되면 끊기지 않고 계속 유지된다낮은 오버헤드HTTP처럼 매번 요청 헤더를 보내지 않고, 한 번 연결되면 지속적으로 데이터를 주고받을 수 있어 오버헤드가 적다.지연 감소(실시간 ..
2024.10.26
-
OOP의 SOLID 원칙
OOP의 SOLID 원칙S : Single Responsibility Principle클래스는 하나의 책임만 가져야 하며, 클래스가 변경되는 이유는 단 하나뿐이어야 한다하나의 클래스가 하나의 기능만 담당하도록 하여 코드의 응집도를 높이고, 유지보수를 용이하게 한다SRP 위반 예시Invoice 클래스가 여러 책임(기능)을 가지고 있다.Invoice 클래스는 청구서의 데이터 저장, 청구서의 프린트, 그리고 총액 계산을 모두 담당하고 있다.class Invoice { private double amount; public Invoice(double amount) { this.amount = amount; } public double getAmount() { retu..
2024.05.28
-
RDBMS의 ACID 트랜잭션과 NoSQL의 BASE 속성
ACID vs BASE 비교개념ACIDBASE가용성낮음 (일관성을 우선)높음 (가용성을 우선)일관성높음 (즉각적인 일관성)낮음 (최종적인 일관성)상태단단한 상태 (변경 불가능한 상태)부드러운 상태 (변경 가능한 상태)트랜잭션 격리강한 격리성약한 격리성시스템 설계 목표안정성과 신뢰성확장성과 가용성ACID 트랜잭션은 금융 거래와 같이 높은 일관성과 신뢰성이 요구되는 시스템에 적합하며, BASE 속성은 대규모 분산 시스템에서 높은 가용성과 확장성을 필요로 하는 시스템에 적합하다ACID 트랜잭션RDBMS에서 트랜잭션의 신뢰성과 일관성을 보장하는 속성Atomicity (원자성)트랜잭션의 모든 작업이 완전히 수행되거나 전혀 수행되지 않아야 함을 보장트랜잭션 중 일부 작업만 수행되거나 실패하는 경우, 시스템은 트랜잭..
2024.05.28
-
NoSQL의 CAP 이론(The CAP theorem)
CAP 이론분산 데이터베이스 시스템의 기본 원칙특히 NoSQL 데이터베이스와 관련이 깊다.일관성 (Consistency, C)모든 읽기 요청은 가장 최근의 쓰기 결과 또는 오류를 반환한다분산 시스템의 모든 노드가 동일한 데이터를 동시에 볼 수 있다.모든 클라이언트가 일관된 데이터를 보도록 보장한다가용성 (Availability, A)모든 요청(읽기 또는 쓰기)은 최신 데이터를 보장하지 않더라도 응답을 받는다시스템은 항상 운영 상태를 유지하며 응답성을 갖는다.장애가 발생하더라도 시스템은 요청을 처리한다(비록 반환된 데이터가 최신이 아닐 수 있지만).분할 허용성 (Partition Tolerance, P)네트워크 분할로 인해 일부 노드가 통신할 수 없게 되더라도 시스템은 계속 작동한다시스템은 임의의 네트워크..
2024.05.28
TIL(Develop)
-
[React] 페이지 로딩시에 단 한 번만 실행하기 (document.ready()같은 메서드)
원래는 습관적으로 이렇게 하고 있었는데 불필요하게 데이터를 매번 읽어와서 너무 비효율적이고 트래픽이 많아진 기분이 들어 더 찾아보았다useEffect(() => { handleGetConnection(useAuthStore.getState().currentCode); }, [rowData]); 빈 배열을 넣어주면 컴포넌트가 처음 마운트될 때 (페이지가 로드될때) 단 한 번만 실행되게 된다useEffect(() => { handleGetArsConnection(useAuthStore.getState().currentBotCode); }, []);
2024.09.27
-
[React] Destructuring assignment
어느날 갑자기 리액트를 하게 된 백엔드 개발자의 고군분투기...회사 : 풀스택 해 Java Kotlin 이제 다 필요없어... Destructuring assignment 정말 충격적으로 편리하다ES6 만세 감사합니다 그날도 힘겹게 리액트를 해내고 있던 백엔드 개발자 1은 신기한 코드를 마주하게 된다const Developer = ({ coffee, sweat, blood }: { coffee: string, sweat: number, blood: string }) => { console.log(coffee, sweat, blood);};interface Ingredient { coffee: string; sweat: string; blood: string;}const Developer = (in..
2024.09.27
-
[React] React Hook 리액트 훅
어느날 갑자기 리액트를 하게 된 백엔드 개발자의 고군분투기...회사 : 풀스택 해 React Hook이란?리액트 훅(React Hooks)은 함수형 컴포넌트에서 상태(state)와 생명주기(lifecycle) 관련 기능을 사용할 수 있게 해주는 React의 기능이다.리액트 훅이 등장하기 전에는 클래스형 컴포넌트만 상태 관리와 생명주기 기능을 사용할 수 있었으나, 훅 덕분에 함수형 컴포넌트에서도 이러한 기능을 쉽게 사용할 수 있게 되었다**useState**상태를 함수형 컴포넌트에서 관리하기 위한 훅입니다.초기 상태를 인자로 받고, 배열을 반환하며, 배열의 첫 번째 요소는 현재 상태 값, 두 번째 요소는 그 상태 값을 업데이트하는 함수const [count, setCount] = useState(0);fu..
2024.09.26
-
오버라이딩과 오버로딩 차이
오버로딩(Overloading)메서드의 이름은 같고 매개변수의 유형과 개수가 다르도록 하는 것리턴값만을 다르게 갖는 오버로딩은 작성할 수 없다오버로딩은 같은 이름의 메서드를 여러 개 정의하되, 매개변수의 개수나 타입을 다르게 하여 구분하는 것이다오버로딩은 주로 메서드의 사용 편의성을 높이기 위해 사용된다특징메서드 이름이 같아야 한다매개변수의 개수나 타입이 달라야 한다반환 타입은 같아도 되고 달라도 된다같은 클래스 내에서 정의된다public class OverloadingExample { // 두 개의 정수를 더하는 메서드 public int add(int a, int b) { return a + b; } // 세 개의 정수를 더하는 메서드 public int add..
2024.05.23
Coding Test
-
[백준] 구간 합 구하기 5
문제 주소https://www.acmicpc.net/problem/11660문제 설명N×N개의 수가 N×N 크기의 표에 채워져 있다. (x1, y1)부터 (x2, y2)까지 합을 구하는 프로그램을 작성하시오. (x, y)는 x행 y열을 의미한다.예를 들어, N = 4이고, 표가 아래와 같이 채워져 있는 경우를 살펴보자.1 2 3 4234534564567여기서 (2, 2)부터 (3, 4)까지 합을 구하면 3+4+5+4+5+6 = 27이고, (4, 4)부터 (4, 4)까지 합을 구하면 7이다.표에 채워져 있는 수와 합을 구하는 연산이 주어졌을 때, 이를 처리하는 프로그램을 작성하시오.입력첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000)..
2024.06.23
-
[백준] 구간 합 구하기 4
문제 주소https://www.acmicpc.net/problem/11659문제 설명수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오.입력첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다.출력총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다.제한1 ≤ N ≤ 100,0001 ≤ M ≤ 100,0001 ≤ i ≤ j ≤ N예제 입력 15 35 4 3 2 11 32 45 5예제 출력 11291일단 단순하게 짜봤는데 지금 상태에서는 누적합이라는 알고리즘이 왜 따로 분리되었는지 이해가 ..
2024.06.23
-
[백준] 이전 순열
문제 주소https://www.acmicpc.net/problem/10973문제 설명1부터 N까지의 수로 이루어진 순열이 있다. 이때, 사전순으로 바로 이전에 오는 순열을 구하는 프로그램을 작성하시오.사전 순으로 가장 앞서는 순열은 오름차순으로 이루어진 순열이고, 가장 마지막에 오는 순열은 내림차순으로 이루어진 순열이다.N = 3인 경우에 사전순으로 순열을 나열하면 다음과 같다.1, 2, 31, 3, 22, 1, 32, 3, 13, 1, 23, 2, 1입력첫째 줄에 N(1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄에 순열이 주어진다.출력첫째 줄에 입력으로 주어진 순열의 이전에 오는 순열을 출력한다. 만약, 사전순으로 가장 처음에 오는 순열인 경우에는 -1을 출력한다.예제 입력 141 2 3 4예제 출..
2024.06.21
-
[백준] 다음 순열
문제 주소https://www.acmicpc.net/problem/10972문제 설명1부터 N까지의 수로 이루어진 순열이 있다. 이때, 사전순으로 다음에 오는 순열을 구하는 프로그램을 작성하시오.사전 순으로 가장 앞서는 순열은 오름차순으로 이루어진 순열이고, 가장 마지막에 오는 순열은 내림차순으로 이루어진 순열이다.N = 3인 경우에 사전순으로 순열을 나열하면 다음과 같다.1, 2, 31, 3, 22, 1, 32, 3, 13, 1, 23, 2, 1입력첫째 줄에 N(1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄에 순열이 주어진다.출력첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다.예제 입력 141 2 3 4예제 출력 11 ..
2024.06.21