본문 바로가기

Develop53

NestJS 왜 쓰는걸까? (우아콘 새로운 백엔드 개발 표준 정리) 들어가기 전에새로 들어가는 프로젝트에서 생산성과 코드 품질을 중요한 기준으로 삼았다. 또한 프론트와 백엔드 상호간의 원할한 피드백이 필요한 상황이기에 하나의 통일된 JS기반의 언어로 프로젝트를 시작하는 것이 좋겠다는 의견이 있었다.  https://github.com/Fingoo-org/Fingoo GitHub - Fingoo-org/FingooContribute to Fingoo-org/Fingoo development by creating an account on GitHub.github.com  여태까지 JAVA 기반의 Spring 프레임워크만 사용했던 나는 꽤나 고민됐다. 하지만 위와 같은 이유와 함께 문득 새로운 기술이 필요한 시점이라면 왜 이 기술을 사용해야하는지, 어떤 장점이 있는지, 또한 .. 2023. 12. 26.
네트워크 | TCP의 연결, 연결 해제 과정에 대해서 설명해주세요. TCP의 연결, 연결 해제 과정에 대해서 설명해주세요. TCP란? TCP(Transmission Control Protocol)는 네트워크 프로토콜의 국제표준기준 OSI 7 계층(Open System Interconnect)의 4 계층 (Transport) 속하며, 3 계층(Network)의 IP 프로토콜과 같이 사용되기 때문에, TCP/IP 라고도 불린다 목적 TCP 의 사용의 가장 큰 목적은 컴퓨터에서 실행되는 프로그램 간 데이터 유실 없이 안정적으로 전송하는 것이다. TCP 헤더 최소 20 byte ~ 최대 60 byte (옵션 지정시) TCP Flag Flag란 무엇인가를 기억해야 하거나 또는 다른 프로그램에게 약속된 신호를 남기기 위한 용도로 프로그램에서 사용되는 미리 정의된 비트를 의미한다. .. 2023. 11. 14.
Spring Security | 로그인 방식 로그인 방식 용어 정리 인증과 인가 시스템의 자원을 적절하고 유효한 사용자에게 전달하고 공개하는 방법 인증 (Authentication) 인증은 쉽게 말하자면, 로그인이다. 클라이언트가 자기자신이라고 주장하고 있는 사용자가 맞는지를 검증하는 과정이다. 예: 클라이언트에서 보낸 유저 아이디와 서버에 등록돼있는 유저 아이디를 확인한다. 인가 (Authorization) 인가는 인증 작업 이후에 행해지는 작업으로, 인증된 사용자에 대한 자원에 대한 접근 확인 절차를 의미한다. 여기에 일반 유저인 USER1과 USER2가 있다. 일반 유저인 USER1 은 글 작성, 조회, 수정, 삭제 등 일반적인 작업에 대한 권한이 부여되어 있다. 하지만 USER1 은 USER2가 작성한 글을 수정하거나 제거할 수는 없다. 타.. 2023. 9. 28.
DB | DB Locking과 Optimistic Lock/Pessimistic Lock 락 락은 데이터의 일관성과 무결성을 유지하기 위해 DBMS가 사용하는 공통적인 방법이다. DB와 같은 시스템은 같은 데이터를 동시에 접근하는 경우가 생길 수밖에 없는데, 이럴 경우 데이터가 오염될 수 있다. 락의 크기 락의 크기는 어느 정도의 범위를 잠글 것인지 나타낸다. 로우 락(Row Lock), 페이지 락(Page Lock), 테이블 락(Table Lock)이 있다. 만약 락을 걸어야 하는 페이지가 너무 많다면, 차라리 테이블 전체에 락을 거는 것이 잠금 비용의 손실을 줄일 수 있다. 잠금 비용: 잠금을 거는 과정에서 발생하는 성능 손실을 말한다. 페이지 락 여러 개를 테이블 하나로 대체한다면 잠금 비용은 낮아지겠지만, 대신 동시성 비용은 높아질 것이다. 동시성 비용: 락을 걸면서 동시성이 낮아져서.. 2023. 9. 20.
DB | Join Join이란? 데이터베이스에서 두 개 이상의 테이블을 연결하여 하나의 결과의 테이블로 만드는 것을 의미 이를 통해 데이터를 효율적으로 검색하고 처리하는데 도움을 준다. Join을 사용하는 이유 데이터베이스에서 테이블을 분리하여 데이터 중복을 최소화하고 데이터의 일관성을 유지하기 위함 Join의 종류 INNER JOIN 조인하는 테이블의 ON 절의 조건이 일치하는 결과만 출력 SELECT u.userid, name FROM usertbl AS u INNER JOIN buytbl AS b ON u.userid=b.userid WHERE u.userid="111" -- join을 완료하고 그다음 조건을 따진다. inner join 함축 구문 단순히 from 절에 콤마 쓰면 inner join 으로 치부된다. .. 2023. 9. 20.
알고리즘 | 점화식과 알고리즘 복잡도 분석 점화식 어떤 함수를 자신보다 더 작은 변수에 대한 함수와의 관계로 표현한 것 자기호출을 사용하는 함수의 복잡도를 구하는데 유용하게 쓰인다. 병합 정렬의 수행 시간 수행시간의점화식 T(n) = 2T(n/2) + 오버헤드 크기가 n인 병합 정렬 시간은 크기가 n/2인 병합 정렬을 두 번하는 시간과 나머지 오버헤드(두 개 정렬 결과를 병합하는 시간)를 더한 시간이다. 점화식의 점근적 분석 방법 1. 반복 대치 더 작은 문제에 대한 함수로 반복해서 대치해 나가는 해법 2. 추정후 증명 결론을 추정하고 수학적 귀납법으로 이용하여 증명하는 방법 3. 마스터 정리 형식에 맞는 점화식의 복잡도를 바로 알 수 있다. 반복 대치 예시 1: 팩토리얼 C부분이 오버헤드라고 할 수 있다. 예시 2 해당 크기 만큼(n) 오버헤드.. 2023. 9. 12.