기타 17

ArrayList와 HashSet 만들어보기.. C++

ADT (Abstract Data Type) What은 설명하지만 How는 설명하지 않음     - What: 데이터의 속성과 행위(인터페이스)를 정의.      - How: 구현 방법은 설명 안 함. 추상적인 개념만 제공  DS (Data Structure)What과 How가 명확함     - What + How: ADT를 실제로 구현한 것. 구체적인 메모리 구조와 알고리즘이 포함됨.List중복을 허용하고,순서를 보장한다.(내부적으로 어떻게 구현했는지 설명하지 않는다.) Set 중복을 허용하지 않고,순서를 보장하지 않는다. 이런 List와 Set은 ADT이다.Array연속적인 메모리에서 같은 종류의 아이템들을 저장할 수 있는 자료구조 (What과 How가 명확하다.)[] 인덱스를 활용할 수 있다. (e..

기타 2025.03.03

Vim 마스터의 길...

작년에 인텔리제이 서브로 vscode대신 lazyvim을 사용하려고 했는데 진입장벽을 넘지 못하고 포기했다..하지만 다시 또 온다... vim 마스터가 될거야..lazyvim을 재설치하고 다시 한 번 써보려했지만 단축키 기억도 제대로 못하는데 사용법 익히는게 너무 막막하다..일단 인텔리제이에IdeaVim 을 설치했다...그리고 몇년째 곧잘 활용 못하는 Vimium을 적극 사용해보기로...먼저 Vimium 단축키다...현재 페이지 탐색?: 모든 단축키 목록이 담긴 도움말 표시.h: 왼쪽으로 스크롤.j: 아래로 스크롤.k: 위로 스크롤.l: 오른쪽으로 스크롤.gg: 페이지 맨 위로 이동.G: 페이지 맨 아래로 이동.d: 페이지 반만큼 아래로 스크롤.u: 페이지 반만큼 위로 스크롤.f: 현재 탭에서 링크 열기..

기타 2025.03.03

순서복잡도 (Time Complexity)

순서복잡도가 뭐고, 왜 중요한가?  뭔지 순서 복잡도는 알고리즘이나 코드가 실행되는 시간이나 연산 횟수를 데이터 크기(n)에 따라 수학적으로 표현한 것이다. 예를 들어, O(1)은 데이터 크기와 상관없이 항상 일정한 시간이 걸리고, O(n)은 데이터가 커질 수록 비례해서 시간이 늘어나는 것이다.  => 코드가 얼마나 빨리 끝나느냐를 데이터 크기에 따라 숫자로 나타낸 것 왜 중요한지  시간과 돈이 걸려있다.  1. 서비스 성능 : 사용자가 10명일 땐 O(n)을 써도 괜찮다. 100만 명이 되면 서버가 터질 수도 있다. 예를 들어, 책 목록 검색을 List로 하면 느려지는데 Set으로 바꾸면 빠르게 응답 가능하다.  2. 확장성: 처음엔 데이터 적어서 문제없었던 게 나중에 커지면 망가질 수 있다. 순서복잡..

기타 2025.03.02

List와 Set의 차이

List와 Set의 차이는 기본 중에 기본이다. 범죄 신고는 112, 화재 신고는 119 같은 기본 중에 기본이다.. Set은 데이터 중복을 허용하지 않고 순서도 보장하지 않는다.        - Set은 Hash table로 구현되는데, 그 이유는 ha h table이 Set과 같은 특징을 갖고 있기 때문이다.   Hash table에서는 Key가 중복될 수 없다. 그리고 데이터는 순차적이 아니라 랜덤하게 저장된다. 이런 hash table의 특징이 Set의 특징과 일치한다. 따라서 Set을 구현할 때는 Hash table의 Key에 데이터를 저장하는 형태로 구현하게 된다.   O(1)인 Set은 얼마나 많은 데이터를 hash table에 저장하고 있는지와 상관없이 늘 빠르게 키를 검색할 수 있다. 따..

기타 2025.03.02

어떻게 공부할 것인가.... 1

캐시 알고리즘 마냥..현시점에 필요한..공부할 걸 리스트업 하고,우선순위(업무, 업무 연관, 재미, 호기심) 줄 세운 뒤딱딱 골라서적절히 스킵하고필요한 만큼만 공부하고 그만!!!! 멈출 줄 아는 것도 아는 것.다음으로 넘어가 고투넥스트.(*그 판단력도 실력이다.) 문법 공부하는 것보다 중요한 건,..어떻게 쓸 것인가? 생각하면서..    많이 시도하고 반복할수록..결과가 점차 안정됨극단적 편차가 줄어듦본질적 평균이나 패턴에 수렴함

기타 2025.02.11

Deque

자바에서는 Deque 인터페이스를 통해 양쪽 끝에서 삽입과 삭제를 지원하는 자료구조를 제공한다.일반적으로 ArrayDeque 또는 LinkedList 클래스가 사용된다. 주요 메서드삽입addFirst(E e): 덱의 앞쪽에 요소를 추가addLast(E e): 덱의 뒤쪽에 요소를 추가offerFirst(E e): 앞쪽에 요소를 추가하며 실패 시 false 반환offerLast(E e): 뒤쪽에 요소를 추가하며 실패 시 false 반환삭제removeFirst(): 앞쪽에서 요소를 제거removeLast(): 뒤쪽에서 요소를 제거pollFirst(): 앞쪽에서 제거하며 비어 있으면 null 반환pollLast(): 뒤쪽에서 제거하며 비어 있으면 null 반환조회getFirst(): 앞쪽 요소를 반환getLas..

기타 2025.01.16

Redis의 Sorted Set이 조회 횟수를 저장하는 원리 (검색 순위)

Redis의 Sorted Set은 각 요소에 점수(score)라는 부가 정보를 포함해, 점수를 기준으로 정렬된 상태로 저장하는 데이터 구조이다.조회 횟수를 저장하거나 관리할 때 이 점수를 활용할 수 있다.Sorted Set의 기본 구조Key: Sorted Set의 이름.Member: 저장된 요소 (예: 특정 페이지 ID, 사용자 ID).Score: 숫자 값으로, 정렬 및 계산에 사용됨.Redis의 Sorted Set은 내부적으로 skip list라는 자료 구조를 사용하여 효율적으로 데이터를 삽입, 삭제, 조회, 정렬한다.조회 횟수 저장 원리조회 횟수를 점수로 사용조회된 항목(예: 페이지 ID 또는 특정 데이터의 키)을 Member로 추가한다.조회 횟수를 Score로 사용한다.예: 페이지 page1이 5..

기타 2025.01.12

쿠키 옵션

쿠키 옵션: HttpOnly, Secure, SameSite 1. HttpOnly설명:HttpOnly 옵션이 설정된 쿠키는 JavaScript로 접근할 수 없도록 설정브라우저는 이 쿠키를 서버로의 HTTP 요청에만 사용하며, 클라이언트 측 스크립트에서는 쿠키를 읽거나 수정할 수 없음주요 목적:XSS(Cross-Site Scripting) 공격 방지:XSS는 악성 스크립트를 통해 클라이언트의 쿠키를 탈취할 수 있는 취약점임HttpOnly 쿠키는 JavaScript에서 접근할 수 없기 때문에 탈취 방지에 효과적설정 예시 (HTTP 응답 헤더):Set-Cookie: sessionId=abc123; HttpOnly2. Secure설명:Secure 옵션이 설정된 쿠키는 HTTPS 프로토콜을 사용하는 경우에만 전송..

기타 2024.12.26