분류 전체보기

· Java/BOJ
문제https://www.acmicpc.net/problem/1461풀이정렬을 포함한 구현 문제이다. 처음에는 방문 배열을 적용해 탐색을 해야하나 싶었지만, 다시금 아이디어를 떠올려보니 단순 구현으로 해결될 것 같았다. "세준이가 한 번에 들 수 있는 책"을 보고, 가지고 있는 책의 매개변수를 관리해야하나 싶었는데, 여기서 책의 숫자는 배열상 인덱스 거리와 같기 때문에 단순 배열에서의 거리 이동으로 구현했다.  아이디어는 우선 center를 구한다. center는 세준이가 돌아오는 기점이면서 책을 충전하는 곳이다. 그러기 위해 배열을 입력받을 때 0 인덱스 위치를 포함시켰다. 배열을 정렬하고 값이 0인 인덱스 위치를 저장한다.  그리고 책을 놓으러 다닌다. 여기서 핵심 아이디어는 0에서 가장 멀리 떨어진..
async는 await이 없다면 필요하지 않다는 생각에 코드를 아래처럼 수정한 적이 있다.  기존 코드TaskState.js async deleteTask(taskId) { deleteTaskAPI(taskId) .then(() => this.fetchTasks()) } ..  deleteCard.jsfunction deleteTask() { if (currentTaskId !== null){ taskStateInstance.deleteTask(currentTaskId) .then(() => { alert(`카드가 삭제되었습니다. cardId: ${currentTaskId}`); closeModal(); }) }}deleteCard.js 에서 Ta..
· JavaScript
사용자가 카드를 추가하면, 실시간으로 사용자의 히스토리에 view를 업데이트해야하는 요구 조건이 있었다.목록 1에 카드를 추가하면, 히스토리 판넬에도 동시에 기록이 추가되어야 한다.  이를 위해 옵저버 패턴을 적용했다.  카드라는 상태를 관리할 TaskState 클래스를 정의해준다.import {fetchTasksAPI, addTaskAPI, editTaskAPI, deleteTaskAPI} from '../api/taskAPI.js';export class TaskState { constructor() { this.tasks = []; this._observers = []; } subscribe(observer) { this._observers.push(observer); } ..
지난 주 호눅스님의 강의에서 C10K 문제가 1999년부터 화두에 오르기 시작했고, 그 부분을 해결하기 위한 방법으로 등장한 것이 node.js라는 이야기를 들었다. 노드 js의 비동기 논블로킹이라는 특징이 C10K 문제를 해결하는데에 있어서 무엇이 도움이 되고, 스프링과 비교했을 때의 이점이 무엇인지 정확히 받아들여지지가 않았다.  그래서 이번 포스팅에서는 C10K와 node.js의 싱글 스레드, 논블로킹의 특징이 어떻게 C10K의 문제를 해결하는가에 대해 작성해보겠다.  C10K 문제 C10K란 동시 사용자 1만명(Concurrent 10K users)가 접속하는 서버를 어떻게 구현해야할 것인가에 대한 문제이다.   C10K라는 문제가 대두되었을 때는 1999년으로, 지금으로부터 약 25년 전이다. ..
프로세스 동기화 도구에는 크게 뮤텍스 락과 세마포어가 있다.  둘 차이를 간단하게만 말해보면, 뮤텍스 락은 공유 자원에 하나의 스레드가 접근가능하고 세마포어는 공유자원에 여러 스레드가 접근 가능하다는 것이다.    지금까지 너무 얕게만 이해하고 있었다는 생각을 했다. 세마포어는 여러 스레드도 접근 가능하고, 뮤텍스 락을 대체할 수도 있기 때문에, 세마포어가 좋은 거 아닌가 라는 생각을 막연하게 해왔었다.  하지만 내부 동작 방식을 살펴보면 이야기는 달라진다. 문맥 교환이라는 오버헤드를 배제한 설명이기 때문이다. 이게 무슨 말인지 한번 살펴보자.   1. 뮤텍스락 뮤텍스락은 공유 자원에 접근하기 위해 뮤텍스를 획득해야하고, 자원 사용이 끝나면 뮤텍스를 해제하는 방식이다. 그리고 하나의 스레드만 뮤텍스를 획..
지금껏 MySQL을 쓰면서 innoDB는 무엇이고 스레드풀은 무엇인지 등, 내부에 대해 용어만 듣고 정확히 아는 것이 별로 없었다. MySQL의 내부를 살펴보며 각각을 하나씩 살펴보려고 한다.  MySQL 엔진 아키텍처MySQL 서버는 크게 MySQL 엔진과 스토리지 엔진의 두 가지로 나뉜다. MySQL 엔진은 클라이언트로부터 요청된 문장을 분석하거나, 최적화하여 처리하는 역할을 담당하는데, 그림에서 보이듯 커넥션 핸들러, 파서, SQL 인터페이스, SQL 옵티마이저, 캐시버퍼 등이 있다. 스토리지 엔진은 실제 데이터를 디스크 스토리지에 저장하거나 조회하는 역할을 담당한다. 여러 엔진을 동시에 사용할 수 있다. MyISAM 엔진, InnoDB 엔진 등이 있다. 이렇게만 말하면 확 와닿지는 않으니, 실제 ..
동구름이
'분류 전체보기' 카테고리의 글 목록 (3 Page)