일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 방문길이
- synchronized
- 이펙티브자바
- 함께 자라기
- 실행과정
- try-with-resource
- Parametric Search
- multi-thread
- 표현 가능한 이진트리
- MVCC
- 아키텍처 개선
- 캐시라인
- lis
- 메모리계층구조
- 트랜잭션
- 멀티 스레드
- 멀티 프로세스
- Runtime data area
- 세그멘테이션
- 이분탐색
- lv3
- java
- 멀티 코어
- MESI
- 최장증가부분수열
- OS
- 프로그래머스
- try-catch-finally
- 자바
- 틱택토
- Today
- Total
목록전체 글 (25)
siino's 개발톡

그나마..? 바빴던 일정이 조금 정리되고 오랜만에 바람도 좀 쐴겸 새로 지어진 도서관에 다녀왔다. 어떤 책을 읽을지 고민하다 이전부터 읽고 싶었던 김창준님의 '함께자라기'를 이번 기회에 읽게 되었는데, 읽기 쉬운 문장으로 구성되어 있었고 사례와 경험을 예시로 재미있게 서술한 책이라 그런지 금새 읽을 수 있었다. 흥미있게 읽었던 부분은 아래와 같다. 1. 면접을 진행할 때 좋은 지원자를 뽑기 위해서는 어떤 요소를 고려해야 하는가? 흔히들 '경력'이 많고 화려한 지원자?라고 생각할 수 있지만, 책에서는 "땡"이라고 한다. 작업 샘플 테스트*, 아이큐, 구조화된 인터뷰, 성실성, 꼼꼼함이 주로 상관성이 있다고 한다. *(해당 직무를 맡게되면 수행할 작업에 대한 샘플 테스트) 또한, 경력이 상관성이 있다면 그것..
https://school.programmers.co.kr/learn/courses/30/lessons/150367 문제 해결 전략 주어진 수를 이진수로 변환하기 만들어진 이진수를 "포화이진수"로 만들기 만들어진 포화 이진수를 탐색하며 부모 노드, 자식 노드를 기록하기 부모 노드의 값이 0이면서 자식 노드의 값이 1이라면 표현 가능한 이진트리가 아님!! 문제에서 가장 중요한 포인트는, 포화 이진수를 만드는 것과 각 노드들의 자식노드를 기록하는 것 입니다. 문제를 잘 분석해보면, 포화 이진수로 표현하기 위해서는 해당 "이진수의 길이" = "2의 거듭제곱 - 1"임을 알 수 있습니다. 따라서 해결 전략 1에서 나온 이진수의 길이보다 큰 2의 거듭제곱을 찾고 그 값에 1을 뺀 길이 만큼 이진 수 앞에 '0'을..
https://school.programmers.co.kr/learn/courses/30/lessons/42579 문제를 간략히 설명하자면 genres[]와 plays[] 배열이 주어지고, 해당 장르가 플레이된 횟수(내림차순)으로 정렬 한 후에 각 장르에서 많이 플레이 된 곡 top2를 뽑아내면 되는 문제입니다. 제가 풀이한 방법은 각 장르의 플레이 된 횟수를 기록할 Map genreCount 와 각 장르별 곡의 정보를 저장할 Map를 선언하여 문제를 해결했습니다. 여기서 말하는 곡의 정보는 (music id, 플레이된 횟수)를 기록합니다. Map과 관련된 내장 함수 computeIfAbsent(), merge(), getOrDefault()를 활용하여 조금 더 깔끔하게 코드를 작성할 수 있었습니다. i..

이번에는 제가 프로젝트 때 구성했던 아키텍처의 문제점을 발견하여 리팩토링하는 과정에서 어떤 고민을 했는지, 어떤 부분에 초점을 맞춰 개선하였는지에 대한 글을 써보려고 합니다. 저희 프로젝트의 기존 아키텍처는 다음과 같았습니다. </..

https://school.programmers.co.kr/learn/courses/30/lessons/87694 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명: 여러 직사각형들이 놓여져 있을 때 겹쳐지는 부분을 제외하고 각 변들을 탐색해서 BFS를 수행하는 문제입니다. 제가 생각했던 풀이는 아래와 같습니다. 1. 격자에 각 직사각형들을 색칠한다. (테두리: 1, 내부 -1) 2. 직사각형을 색칠할 때 이미 내부(-1)로 색칠되어 있다면 건너뛴다. 3. 주어진 시작점에서 시작해 색칠된 직사각형들의 1값을 bfs탐색을 통해 주어진 item 좌표로..
요즘은 코틀린에 관심이 생겨 코틀린으로도 쉬운문제 위주로 차근차근 풀려고 노력중입니다 :) 우선 문제는 아래 링크에 첨부하겠습니다. https://school.programmers.co.kr/learn/courses/30/lessons/178871 처음 문제를 해결하기 위해 생각했던건, calling에 들어있는 사람들의 이름을 indexOf함수로 해당 index를 찾아 그 앞 index와 자리를 바꾸도록 생각했습니다. 하지만 문제 조건에 의해 players의 길이는 최대 5만, calling의 길이는 최대 100만이기 때문에 calling의 모든 요소에 대해 indexOf를 수행한다면, 100만 * 5만 = 500억 만큼의 연산을 하게 됩니다. 따라서 보다 효율적인 방법을 생각하였고 Map을 통해 해결할..

이전 글에서 응답속도를 확인하면서 Redis를 도입한 근거를 함께 알아보았습니다. 배경 이번 글에서는 도입한 redis를 사용하면서 고려했던 캐싱전략에 대해 글을 써보려합니다. 제가 구현했던 기능 중 하나는 '검색어 자동완성 기능'에 더불어 사용자가 검색어를 입력했을 때 인기검색어 등에 활용할 수 있도록 해당 검색어의 score를 1씩 늘려갔습니다. 문제 redis의 zset자료구조를 사용하면 score에 대한 처리를 손쉽게 할 수 있습니다. redis에서 관련 기능을 지원해줍니다. 이 기능에서 고민했던 점은, redis는 결국 in-memory 저장소이므로 이 score 점수를 DB에도 반영을 해야하는데, 이 시점을 언제로 할 지에 대한 고민이었습니다. 고민점과 전략 현재 redis를 사용하는 방식과 ..

이번 글에서는 프로젝트를 진행하면서 검색어 자동완성 기능을 구현했을 때 제가 고민했던 부분에 대해서 글을 써보겠습니다. 제가 개발했던 부분 중, 음식 이름 데이터를 사용해서 검색어 자동완성을 구현해야하는 작업이 있었는데요. 그때 고민해보았던 내용을 이번 기회에 다뤄볼까합니다. DB와 redis에서 조회 성능의 차이가 얼마나 일어나는지 실험하기 위해서 각각의 데이터를 삽입하여 확인해보겠습니다. (현재는 약 100만건의 음식 데이터가 DB와 redis에 저장되어 있는 상태입니다.) 다양한 조건에 대해서 비교를 위해 api를 v1, v2, v3, v4로 나눠서 각각의 성능을 확인해보겠습니다. v1 - Mysql full table scan v2 - Mysql index 설정 후 full table scan v..
https://school.programmers.co.kr/learn/courses/30/lessons/160585 [문제해결 전략] 1. 백트래킹을 통해 혼자서 틱택토를 진행한다. 2. 게임 종료 조건이 되거나 주어진 board판과 동일한 모양이라면 종료. 게임 종료 조건은 빙고게임과 같이 한 줄이 O또는 X로 채워지는 것입니다. 게임은 턴제의 게임으로 O,X가 번갈아가며 진행하기 때문에 매개변수로 turn값을 주어 현재 누구의 턴인지 확인할 수 있도록 합니다. class Solution { char[][] myBoard; String[] _board; int answer = 0; public int solution(String[] board) { myBoard = new char[3][3]; _boa..

https://school.programmers.co.kr/learn/courses/30/lessons/43238 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제의 힌트는 제약사항에서 확인할 수 있습니다. 결국 기다리는 사람은 최대 10억명이므로 각각의 대기자에 대해서 문제를 해결할 순 없습니다. 결국 심사관 관점에서 문제를 풀어야함을 알 수 있고 문제가 결국 가장 효율적으로 심사하는 시간의 최솟값을 구하는 문제라는 것에 주목한다면, 최적화문제를 결정문제로 바꾸는 Parametric Search를 생각해볼 수 있습니다. 심사관이 심사하는데 걸린 소요시..