[바미] 해시 충돌 처리 방법
·
프로그래밍(Web)/공부일기
들어가기전에..해시 테이블에서 해시 충돌이 발생하면, 두 개 이상의 서로 다른 키가 같은 해시 값을 가질 수 있습니다. 이를 해결하기 위해 충돌을 처리하는 다양한 방식들이 존재하는데 그 중에서 체이닝(Chaining), 개방 주소법(Open Addressing), 이중 해싱(Double Hashing)이 대표적인 방법입니다. 오늘은 이 세가지 방법에 대해 알아보겠습니다.체이닝(Chaining)해시 충돌을 처리하는 가장 보편적인 방법 중 하나인데 해시 테이블의 각 버킷(Bucket)을 연결 리스트나 배열과 같은 자료 구조로 만들어서 충돌이 발생한 여러 데이터를 그 안에 함께 저장하는 방식입니다.동작 방식각 버킷에는 하나의 데이터가 저장되는 것이 아니라, 여러 데이터가 연결 리스트로 연결됩니다.같은 해시 값..
[바미] Obejct와 Map의 시간복잡도는 항상 O(1)일까? (feat. JS & Node)
·
프로그래밍(Web)/공부일기
들어가기전에..회사에서 진행하고 있는 프로젝트 내에서 Front 또는 클라이언트로 부터 query 또는 body로부터 파라미터를 받아오게 되는데 이에 따라 Validation 검사 처리를 개발하고 있던 중이였습니다. 그 파라미터를 체크하는 로직은 아래와 같은데const locations = ['body', 'query'];const params = req[location];Object.keys(params).forEach(key => { const rule = validation[key];...}validation이라는 Object안에 Validation체크를 할 수 있도록 만들고,  Validation 체크 조건에 걸리면 router단에서 API를 종료시키는 구조로 구현했는데 이 중에서 const ..
[바미] 알고리즘 시간 복잡도 용어 정리
·
프로그래밍(Web)/공부일기
들어가기전에..안녕하세요. 요즘 매일 매일 제가 백준 알고리즘을 푼 것을 '하루 알고리즘'이라는 컨텐츠로 포스팅 하고 있습니다. '하루 알고리즘(JS)' 카테고리의 글 목록안녕하세요. 4년차 백엔드 개발자로 활동하고 있습니다. 코딩과 무관한 것들과 유관한 부분들 모두 공유 합니다. 오타나, 틀린 부분이 있다면 언제든지 지적 환영 입니다.codesk.tistory.com여기서 시간 복잡도 관련 용어들을 정리해보면 좋을 것 같아 이번 글을 포스팅하게 되었습니다. 빅오 표기법?빅오 표기법은 알고리즘의 효율성을 표현하기 위해 사용되는 표기법입니다. 알고리즘의 단계 수는 입력 크기에 따라 달라지기 때문에 '배열에 N개의 원소가 있을 때 N단계가 필요하다'와 같이 표현하는 것이 더 효과적이죠. 컴퓨터 과학자들은 자..
[바미] 트리거는 왜 사용할까?
·
프로그래밍(Web)/공부일기
회사의 Node프로젝트 중 트리거를 사용하는 프로젝트가 있었습니다. 그 트리거들은 특정 작업 전에 동작하거나 특정 작업 후에 처리되는 것들이였기 때문에 그 트리거들을 보면서 미들웨어라는 좋은 게 있는데 왜 트리거를 사용했을까? 라는 생각을 하게 되었습니다. 그러니까 아래와 같이 구성하면 되지 않나? 싶었죠. app.use(async (req, res, next) => { try { const result = await someAsyncTask(); req.customData = result; // 비동기 작업 결과를 요청 객체에 저장 next(); // 다음 미들웨어 함수 호출 } catch (error) { next(error); // 오류 처리를 위해 다음 미들웨어 함수 호출 } }); 그러다 GPT..
TypeORM vs Sequelize
·
프로그래밍(Web)/공부일기
안녕하세요. 자바스크립트 계열의 언어를 사용하다시는 분들이라면 한 번쯤은 접해봤을 ORM 라이브러리라고 생각합니다. 오늘은 이 둘에 대해 간단하게 비교해보도록 하겠습니다. 차이점 TypeORM TypeScript와의 통합 TypeORM은 TypeScript와의 완벽한 통합을 제공하며, 타입 안정성과 코드의 가독성을 높일 수 있습니다. Active Record 및 Data Mapper 패턴 지원 두 가지 패턴을 지원하여 사용자가 선호하는 방식으로 데이터 모델을 다룰 수 있습니다. 데이터베이스 독립성 다양한 데이터베이스를 지원하며, 데이터베이스 간의 전환을 비교적 쉽게 할 수 있습니다. Migrations 및 Schema 관리 쉬운 마이그레이션 관리 도구를 제공하여 데이터베이스 스키마를 관리하기 쉽습니다. ..
sequelize 사용기
·
프로그래밍(Web)/공부일기
Intro혼자서 프론트부터 백엔드까지 북치고 장구쳤던 프로젝트가 있었다. 그 코드 구조가 프론트에서 ajax로 통신 -> ajax route처리하는 부분에서 호출 url에 맞는 API 함수 호출 -> DB 실행 -> 데이터 return 형태로하나의 파일에서 호출URL에 맞는 함수 호출 부분이 전부 담겨있고, 다른 하나의 파일에선 API 호출하는 함수들을 선언하는 부분들이 담당하는 구조였는데 이 부분을 개선하여  조금 더 REST API 형태에 비슷하게 하도록 sequelize를 사용하여 구조를 변경해 보았다.  각 호출에 필요한 Model을 만들었고, API 호출 구조와 동일하게 디렉토리 안에 index파일을 만들어 API 개발할 때 직관적으로 개발 할 수 있도록 만들어보았다.어떻게 사용했는가?예를 들어..
Node - koa 프레임워크를 사용하며 느낀점
·
프로그래밍(Web)/공부일기
요번에 koa 프레임워크로 개발하게 되어 koa 프레임워크에서 REST API를 처리하는 간단한 코드를 만들어 보았습니다. 예제 코드 const Koa = require('koa'); const Router = require('@koa/router'); const app = new Koa(); const router = new Router(); var userList = []; router.get('/', (ctx) => { ctx.body = 'Hello World!'; }); router.post('/users', (ctx) => { const name = ctx.query.name; if (checkDuplicates(userList, name)) { ctx.body = 'User duplicate..
[바미] 백엔드 개발자로 이직하며 접했던 면접 질문들
·
프로그래밍(Web)/공부일기
안녕하세요. 3년차 백엔드 포지션 개발자로 이직하며 접했던 면접 질문들을 공유합니다.저는 Node.js, Go를 사용하는 회사를 주로 지원했기 때문에 Spring개발과 관련된 질문은 없다는 점 양해 바랍니다.  많은 도움이 되셨길 바랍니다.백엔드 관련더보기REST API에 대해 설명해주시고, REST API의 장, 단점을 말씀해주세요 [바미] REST API에 대하여안녕하세요. 오늘은 REST API에 대해 알아보고자 합니다. REST? 흔히 개발을 하셨던 분들이라면 'REST하다.' 라는 표현을 접해보셨을 겁니다. 개발하면서 흔히 접했지만 정확히 얘기하지 못하는 부분codesk.tistory.comREST API의 메소드들을 아시는대로 말씀해주세요. [바미] REST API에 대하여안녕하세요. 오늘은 ..
[바미] 실전 아파치 카프카 - 카프카의 구성요소
·
프로그래밍(Web)/공부일기
카프카의 구성요소 프로듀서 : 데이터 생산자이며 브로커에 메시지를 보내는 애플리케이션 메시지 : 카프카에서 데이터를 다루는 최소 단위 브로커 : 데이터 수신 및 전달하는 서비스 컨슈머 : 브로커에게 메시지를 전달받는 애플리케이션 토픽 : 메시지를 종류별로 관리하는 스토리지. 브로커에 배치되어 관리된다. 프로듀서와 컨슈머는 특정 토픽을 지정하여 메시지를 송수신한다. 프로듀서 -> 브로커 -> 컨슈머의 흐름에서, 프로듀서 -> 브로커는 PUSH형 / 브로커 -> 컨슈머는 PULL형으로 이루어집니다. PULL형의 장점은 컨슈머 고장 시 브로커에 미치는 영향이 적으며, 컨슈머의 증감에 효율적으로 대응할 수 있게 되죠. 카프카의 브로커에서 분산 처리를 위한 관리 도구로 주키퍼가 필요합니다. 주키퍼는 카프카에서 분..
Bami
'프로그래밍(Web)/공부일기' 카테고리의 글 목록