목록분류 전체보기 (10)
코드몽키
이번 포스팅에서는 네트워크 보안의 두 기둥인 대칭키(Symmetric Key)와 비대칭키(Asymmetric Key) 암호화 개념을 공부하고자 한다. 대칭키Symmetric Key Algorithm대칭키는 하나의 키로 암호화와 복호화를 모두 수행하는 방식이다.즉, 같은 열쇠로 데이터를 잠그고 풀 수 있다. 대칭키는 연산이 단순한 대치 및 치환구조이기 때문에 속도가 매우 빠르다.특징내용키의 개수1개 (암호화/복호화에 동일한 키 사용)처리 속도매우 빠름 (연산 부담이 적어 대용량 데이터 처리에 효율적)보안 위험키 유출 시 전체 통신 위험 (키를 안전하게 전달하는 것이 가장 큰 과제)주요 용도대용량 데이터 암호화 및 실시간 통신 (속도가 중요할 때)사용 예시• 스트리밍 서비스 (Netflix, YouTube..
포트폴리오 소개글에는 클린한 코드를 추구하는 개발자라고 적어두었다. 하지만 몇 달 전 면접에서 “당신이 생각하는 클린한 코드는 무엇인가요?” 라는 질문을 받았을 때, 나는 이렇게 대답했다. “객체지향적 원칙을 준수하고, 네이밍을 의미 있고 간결하게 합니다.복잡한 구조의 코드가 좋은 코드가 아니라, 다른 사람이 읽었을 때 명확히 이해할 수 있는 코드가 클린한 코드라고 생각합니다.” 그때 면접관님이 다시 물었다. “그럼 실제 코드 중에 적용한 사례를 하나만 들어줄래요?” 그 순간, 나는 머리가 하얘졌고 결국 "SOLID... SOLID.." 무새가 되어버렸다.며칠 전 또 다른 면접에서도 “이 코드를 리팩토링해보세요.”라는 요청을 받았지만, 리팩토링을 해보라는 면접관의 말에 머리에 스턴건을 맞고 내가 아는..
대규모 시스템에서 여러 트랜잭션이 동시에 수행될 때, 데이터의 일관성과 성능은 늘 서로 충돌하는 문제라고 할 수 있다. 이때 DB는 트랜잭션의 ACID 중 하나인 isolation을 통해 "얼마나 다른 트랜잭션으로부터 독립적으로 동작할지"를 결정하게 된다.DBMS에서는 이를 격리 수준(Isolation Level) 로 조정하며, 격리 수준이 높을수록 데이터 일관성(Consistency)은 강해지고, 그만큼 동시성 처리 성능은 떨어지게 된다.트랜잭션 격리 수준은 격리 수준이 낮은 순서대로 READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE가 존재한다. 각 격리수준 레벨의 특징과 발생 할 수 있는 문제점을 아래와 같이 상품 재고의 조회와 변경 시..
문제링크https://school.programmers.co.kr/learn/courses/30/lessons/389479 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 해결 아이디어문제를 보자마자 어떠한 자료구조에 서버를 담을 지 고민하였다. 처음에 먼저 들어온 서버가 항상 먼저 제거가 됨으로 큐를 사용하였다. 반복 되는 시간으로 서버의 증설 유무를 판단하여 큐에 적재했고 큐에 증설된 서버의 만료시간을 부여하여 시간이 만료되었을때 서버를 제거 하였다.코드class Solution { fun solution(players: IntArray, m: Int, k: Int): Int { var ..
최근 레거시 코드를 리펙토링 하면서 Transactional 어노테이션의 개념에 대해서 두루뭉실하게 인지하고 무분별한 남발을 하고 있는것 같아 트랜잭션 어노테이션에 대해서 좀더 깊은 개념과 동작원리에 대해서 공부하고 정리해보았습니다.Transaction이란 하나의 논리적 작업 단위를 뜻합니다. 여러개의 개별적인 연산들이 마치 하나의 묶음처럼 처리되어야 하는 것이 트랜잭션의 핵심이다. DBMS(Oracle, PostgreSQL, MySQL 등) 에서는 트랜잭션을 ACID 원칙을 통하여 트랜잭션을 보장합니다.https://ko.wikipedia.org/wiki/ACID ACID - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전. 다른 뜻에 대해서는 애시드 문서를 참고하십시오. ACID(원자성..
Hash해시(Hash)는 키(Key)를 일정한 규칙(함수)를 통해 고정된 크기의 값으로 변환하는 과정을 말한다.해시(Hash Function)는 바로 그 변환 규칙을 일컫는다. 임의의 크기의 입력(문자열, 숫자)을 받아 고정된 크기의 해시 값(Hash Value, Hash Code)을 반환한다. 해시 자료구조는 이 해시 함수를 활용해서 데이터를 효율적으로 저장하고 검색하는 자료구조를 말한다. 저장된 자료의 양과 관계없이 평균적으로 상수 시간(O(1))에 삽입과 조회가 가능한 자료구조가 바로 해시 테이블이다. 해시 기반 자료구조를 Java에서 실제로 사용한다고 가정해보자 먼저 car 라는 키 값(Key)을 가지고 자동차의 가격(Value) 2000 을 저장하려고 한다. 그럼 코드에선 Hash Functi..
회사 프로젝트에서 전국 단위 주소 검색을 지원하는 모듈을 개발한 경험이 있다. 데이터 규모가 방대하고 실시간 자동완성 기능이 요구되는 상황에서, 초기에는 RDBMS 기반으로 서비스를 구현했으나 응답 속도가 느리고 검색 정확도 역시 한계가 있었다. 특히 대량 데이터에 대한 부분 일치 검색과 형태소 분석이 필요한 경우, RDBMS의 LIKE 검색 방식은 성능 저하가 뚜렷했다. 이를 해결하기 위해 Elasticsearch를 학습하여 시스템에 적용하였고, 적절한 분석기 설정과 데이터 최적화를 통하여 성능과 검색 품질을 모두 개선할 수 있었다. 본 포스팅에서는 해당 과정에서 학습한 Elasticsearch의 핵심 개념과 구조를 정리한다. 엘라스틱 서치(Elasticsearch)는 엘라스틱 스택(Elastic St..
Queue큐(Queue)는 대기열에 가장 먼저 추가된 요소가 가장 먼저 제거되는 선입선출(FIFO) 원칙을 따르는 자료구조이다.먼저 삽입된 데이터가 먼저 제거되는 특성을 가진다. 이러한 특징 때문에 큐는 순서 보장, 흐름 제어, 비동기 처리가 필요한 다양한 컴퓨터 시스템에서 핵심적인 역할을 수행한다. ADT에서 정의한 큐의 기본연산연산설명시간 복잡도create큐 생성 또는 초기화O(1)enqueue큐의 뒤(rear)에 요소 삽입O(1)dequeue큐의 앞(front)에서 요소 제거 후 반환O(1)peek큐의 앞(front) 요소 확인O(1)isEmpty큐가 비어있는지 확인O(1)isFull큐가 가득찼는지 확인(배열 기반)O(1) 큐는 두 개의 포인터(인덱스)를 기반으로 동작한다.Front는 큐에서 데..