목록전체 글 (157)
Rootable의 개발일기
🚩 학습 목표 ✔ 연결 리스트 자료 구조 사용✔ 구조체 노드 생성✔ 포인터를 통한 데이터 접근✔ 계산기 구현 ✍ 연결 리스트 여러 데이터를 앞 뒤로 포인터를 통해 사슬처럼 연결할 수 있는 자료구조 🔎 특징 연속되는 항목들이 포인터로 연결되어 있음마지막 항목은 NULL을 가리킴프로그램이 수행되는 동안 크기가 동적으로 변함메모리 공간 낭비가 적지만 포인터 메모리가 필요함배열보다 데이터 추가와 삭제, 삽입 등 용이순차 접근을 해기 때문에 탐색 속도가 떨어짐데이터는 객체 단위로 추가함head의 링크를 끊어버리면 전체 노드를 삭제할 수 있음 🔨 구현 ✅ 선언 typedef struct{ double item; struct Node *ptr;} Node; 위와 같은 식으로 선언할 수 있다. 하지..
🔎 C언어의 주요 기능 🚀 저수준 메모리 접근 포인터를 통해 메모리 할당, 해제 및 데이터 조작 등의 작업을 수행할 수 있다. 이 기능은 메모리 관리가 중요한 시스템 프로그래밍과 임베디드 시스템 개발에서 큰 장점으로 작용한다. 🚀 다양한 표준 라이브러리 C 언어는 표준 입출력, 문자열 처리, 수학 연산, 파일 처리 등 다양한 기본적인 프로그래밍 작업을 지원하는 방대한 표준 라이브러리를 제공한다. 이것은 C 언어가 저수준뿐만 아니라 고수준 언어의 특징을 갖고 있어 다양한 애플리케이션 개발을 지원한다는 것을 의미한다. 🚀 이식성 C언어의 표준화 덕분에, 소스 코드는 매우 적은 변경이나 추가 작업 없이도 다른 시스템으로 옮겨져 컴파일될 수 있다. 따라서, C언어로 작성된 프로그램은 다양한 플랫폼과 하드..
세션 방식으로 구현했던 SSR 서버에 JWT를 적용하면서 느낀 점을 정리하고자 한다. 💥 문제점 🚨 Stateless 하지 않다. SSR 서버는 매 요청마다 비즈니스 로직을 수행하고 컨트롤러를 통해 렌더링 한다. 이것은 매 요청마다 인증 토큰을 생성한다고 해석할 수 있다. Stateless 특징을 가지는 JWT를 사용할 때 서버의 발급은 1회고, 그 이후에는 검증만 수행한다. 결과적으로 Stateless 하지 않다고 볼 수 있다. JWT 방식은 클라이언트 스토리지에 저장되기 때문에 쿠키를 통해 구현할 수 있다. 아래 코드는 세션 방식과 쿠키를 통해 JWT를 구현한 코드이다. @PostMapping("/login") public String login(@Valid @ModelAttribut..
📌 허프만 알고리즘이란? 압축 단위마다 문자의 출현 빈도를 조사하여 빈도가 높은 순서대로 비트 수가 적은 부호를 부여함으로써 데이터를 압축하는 방식 즉, 많이 사용된 문자는 더 적은 비트로 나타내고, 적게 사용된 문자는 더 많은 비트를 사용하여 효율적으로 문자열을 나타내는 방식을 말한다. 🧩 문자 압축 예제 AAAAAABBBBCDD => 'A' 6개, 'B' 4개, 'C' 1개, 'D' 2개 🏃♂️ 항 합치기 가장 적은 사용 빈도를 가진 두 항을 묶고 그 합을 적어준다. 이와 같이 한번 더 묶는다. 마지막 남은 A까지 묶어주면 다음과 같은 그림이 나온다. 🏃♂️ 비트 부여하기 루트 노드를 기준으로 왼쪽으로 한번 가면 0, 오른쪽으로 가면 1이라고 하겠다. A ➡ 0B ➡ 10C ➡ 110..