태그 목록
전체보기 (835)알고리즘(160)프로그래머스(64)파이썬 알고리즘 인터뷰(61)DP(37)자바(36)백준(29)다시 풀 알고리즘(29)CMPT 454(29)부스트코스(27)데이터 베이스(23)DFS(20)sql(17)백트랙킹(15)스택(14)OS(12)Linear Programming(11)운영체제(11)BFS(11)트리(11)math 308(11)데이터베이스(10)그리디(10)투포인터(9)html(8)CSS(8)이분탐색(8)다익스트라(7)(6)링크드리스트(5)브루트포스(5)JDBC(5)정렬(5)재귀(5)스프링(4)Spring(4)비트 연산(4)BST(4)문자열(4)cmpt454(3)트라이(3)우테코(3)servlet(3)파이썬(3)시뮬레이션(3)슬라이딩 윈도우(3)구현(3)플로이드-와샬(3)git(3)(3)누적합(2)네트워크(2)그리디 알고리즘(2)String(2)해시(2)위상정렬(2)이진 검색(2)완전탐색(2)분할 정복(2)jsp(2)REST(2)유니온 파인드(2)세션(2)쿠키(2)B+ 트리(2)조합(2)(2)캐시(2)유니언 파인드(2)클로저(2)StringBuilder(2)트리DP(2)트리 DP(2)연결리스트(2)프로세스(2)StringBuffer(2)LRU(2)스트림(2)람다(2)스레드(2)데드락(2)http(2)불변(2)https(1)final(1)빌더패턴(1)LomBok(1)DTO(1)해시 테이블(1)jdbc template(1)동기화(1)페이징(1)가상메모리(1)JVM(1)컴파일(1)utf8(1)객체지향의 사실과 오해(1)최소공배수(1)싱글스레드(1)try catch(1)Log4j(1)GITHUB-FLOW(1)증명(1)Semaphore(1)부하테스트(1)eval(1)다중상속(1)controlleradvice(1)이진 탐색(1)클러스터링(1)해쉬테이블(1)Unchecked Exception(1)Checked Exception(1)직렬화(1)파라메트릭 서치(1)nGrinder(1)버블소트(1)와일드카드(1)클러스터(1)선언형(1)레플리카(1)멀티스레드(1)후위표기식(1)레이어드 아키텍쳐(1)바이트코드(1)롬복(1)이중화(1)로드밸런스(1)정수론(1)책 추천(1)런너(1)머스테치(1)분리 집합(1)균형 이진 트리(1)언젠가는 봐야할 책/ 강의(1)네덜란드 국기 문제(1)해밍 거리(1)래퍼클래스(1)중위순회(1)전위순회(1)후위순회(1)이진변환(1)swap memory(1)최소간선트리(1)스레드풀(1)원형dp(1)스왑(1)마스터(1)냅색(1)방어적 복사(1)동적배열(1)맵 정렬(1)Caffeine(1)envers(1)@ExceptionHandler(1)동적언어(1)정적언어(1)자동 주입(1)Collections.EMPTY_LIST(1)매직 넘버(1)NullPointerExceptoin(1)문자열 로그(1)ignoringFields(1)usingRecursive(1)containsExactly(1)로컬 캐시(1)ULID(1)슬레이브(1)카페인(1)주생성자(1)스왑 메모리(1)Strong References(1)병합 정렬(1)swap file(1)DAO(1)MST(1)쓰레드(1)테스트 코드(1)자바스크립트(1)JavaScript(1)투 포인터(1)comparator(1)velog(1)의존성(1)함수형(1)Nginx(1)JWT(1)팰린드롬??(1)ORM(1)객체지향(1)JPA(1)Springboot(1)async(1)비동기(1)xor(1)mac(1)크루스칼(1)무중단 배포(1)제네릭(1)디자인 패턴(1)동적계획법(1)IntelliJ(1)uuid(1)Serializable(1)CQRS(1)피보나치(1)di(1)window(1)배열(1)count(1)ajax(1)디자인패턴(1)계획(1)전략패턴(1)logger(1)log(1)프림(1)DDD(1)maven(1)예외처리(1)이진 탐색 트리(1)node.js(1)swap(1)JetBrain(1)정적 팩토리 메서드(1)logback(1)csrf(1)캐쉬(1)대칭키(1)불변객체(1)비대칭키(1)extend(1)구간합(1)AssertJ(1)Log4J2(1)optional(1)GC(1)let(1)var(1)이중우선순위큐(1)Cache(1)미디어쿼리(1)해시테이블(1)DEVIEW(1)싱글톤(1)JOIN(1)synchronized(1)MVC(1)gitflow(1)serial(1)프리코스(1)호이스팅(1)빌드(1)정규식(1)캐싱(1)

배포를 우아하게 하는 법

현재 팀의 특성상 기존 코드에 새로운 기능을 덧대는 일보다는 항상 새로운 기능을 만들고 나가는 일이 많았다. 하지만 이번에는 기존 코드가 조금 변경되어 기능이 나갔는데, 기존 기능과의 하위 호환성을 고려하지 않고 배포가 나갈뻔 했다. 배포를 할 때는 서버/프론트의 배포

2023년 3월 6일
·
0개의 댓글
·

스프링 빈 List로 주입 받기

내가 주로 담당하는 기능들은 이벤트로 무료 주식을 나눠주는 기능이다. 그런데 이 무료 주식들에 대해 취소해달라는 CS가 생각보다 많이 들어온다 (소수점 주식을 보는게 거추장스럽거나, 다른 증권사 직원들인 경우). 이 CS 때문에 컨텍스트 스위칭도 자주 발생하고, cs

2023년 2월 20일
·
0개의 댓글
·

Batch Job 경험에서 배운 것들

작성 이유 회사에 들어오고 3주차였나 4주차였나 처음으로 냈던 에러가 batch job 관련 된 것이었다. 30만명을 대상으로 푸시 / 알림을 발송하는 기능이었는데 아침에 모니터링을하며 로그를 보니 2명에게만 발송되었다 (꿈인줄 알았다). Batch를 정말 Batch

2023년 1월 4일
·
2개의 댓글
·

엔티티 이력을 저장해주세요, envers 간단 사용기

현업에서의 개발은 학습 목적의 개발과 차이가 난다고 느껴지는 몇몇 포인트가 있다. 그런 것들 중 하나가 운영을 위한 코드나 기능들이 들어가야할 때가 있다는 점이다. 이번에도 주식 예언과 관련된 이벤트를 만들다가 사용자들의 데이터 변경 히스토리들을 다 저장해서 나중에 필

2022년 12월 30일
·
1개의 댓글
·

캐싱 전략

캐싱이라는 것이 그냥 얼마나 캐싱할지 시간만 잘 걸어두면 되는거라고 생각을했다. 하지만 뭐를 키를 뭐로 잡을 것인지, 데이터가 변경이 일어났을 때 원본 데이터와 동기화를 어떻게 맞출 것인지 등 고려할 것이 많았다. 그래서 이번에는 이론적인 것보다는 경험으로 배운 것들을

2022년 12월 8일
·
0개의 댓글
·
post-thumbnail

Caffeine Cache (로컬 캐시) 적용하기

Github repo 학습 배경 프로젝트 코드들을 보다가 캐시가 적용되어 있는 부분들이 있었다. 재밌는 점은 레디스를 이용해서 캐시를 이용한 부분도 있었고 로컬 캐시를 이용한 부분도 있었다. 로컬 캐시 중에서도 Caffeine Cache가 적용되어 있어서 간단하게 써

2022년 10월 30일
·
0개의 댓글
·
post-thumbnail

코틀린 자동차 경주

1. val, var private val은 자바의 프로퍼티와 동일하다. 2. 생성자 3. init 4. object 5. 바로 fun 6. companion object 7. 인터페이스와 구현체 8. data / eqhc 9. private set

2022년 10월 28일
·
0개의 댓글
·
post-thumbnail

우테코 회고

예상보다 조금 빠르게 우테코를 떠나게 됐다. 우테코 과정을 되돌아보고 잘했던 것과 못했던 것들을 짚어보면 새로운 시작에도 도움이 될 것 같다. 딱 작년 이맘때 쯤 우테코에 지원을 했고 우테코에 합격하고 나서도 갈지 말지 되게 고민을 많이 했다. 취업을 목적으로 하던 공

2022년 10월 23일
·
20개의 댓글
·
post-thumbnail

[주간회고] 우테코 37주차 회고 - 최종 데모데이

마지막 데모데이를 위한 한 주였다. 레벨 4 초반에는 나를 포함해서 뭔가 팀이 프로젝트에 집중하지 못한다는 느낌을 받았다. 그래서 레벨 3 때 그 재밌는 느낌이 나지 않았다. 레벨 4 중반부터 새로운 기능들이 생기고 다시 사용자가 늘면서 점점 몰입을 할 수 있었다. 데

2022년 10월 22일
·
2개의 댓글
·

DB Replication 2

이전 글에서 Replication 원리와 아키텍처에 관해 다뤘다. 이제 실제 어떻게 진행했는지 정리한다. 레플리카 서버에서 소스 서버의 바이너리 로그 파일명과 파일 내에서의 위치(Offset 또는 Position)로 개별 바이너리 로그 이벤트를 식별해서 복제가 진행되는

2022년 10월 22일
·
0개의 댓글
·

DB Replication 1

프로젝트를 하면서 DB 인스턴스가 하나 밖에 없어서 불안했었다. 혹시나 어떤 실수를 해서 DB를 날리거나 정상작동 하지 않으면 대응을 할 수 없었기 때문이다.또 조회용 DB와 데이터 쓰기용 DB를 분리하면 성능을 개선할 수 있다는 얘기를 들어서 궁금했다. 그래서 고가용

2022년 10월 21일
·
0개의 댓글
·

[주간회고] 우테코 36주차 회고

이번주는 개인적으로는 테코톡 준비를 하고 팀에서는 무중단 배포를 했다. 레벨2 네오와의 면담 때 DB 관련 스터디를 열고 학습을해서 테코톡 때 DB 관련 주제로 발표를 하기로 했는데 말했던대로 다 해서 뿌듯했다. 사실 이번 테코톡 준비를 하면서 이런 저런 일들이 예상치

2022년 10월 17일
·
0개의 댓글
·
post-thumbnail

좋아요 개수 조회 최적화 하기

이 글은 이스트와 함께 작성한 글입니다. 속닥속닥 프로젝트(https://github.com/woowacourse-teams/2022-sokdak)를 진행하면서 현재는 문제가 되지 않지만 시간이 갈수록 데이터가 쌓이면서 문제가 될 수도 있겠다라고 생각한 부분이

2022년 10월 17일
·
0개의 댓글
·
post-thumbnail

무중단 배포

이번 스프린트 요구 사항에 무중단 배포가 있었다. 실제로 예전에 별 생각 없이 저녁 시간에 배포를 하다가 '속닥속닥 왜 지금 안돼요?'라는 말을 들은적이 있어서 이번 무중단 배포에 관심이 갔다. 새로운 기능이 추가되거나 버그가 수정되어 배포를 할 시 서비스가 잠깐 멈추

2022년 10월 17일
·
0개의 댓글
·

[주간회고] 우테코 35주차 회고

마지막 스프린트의 역할과 팀을 나눴다. 마지막 스프린트에서 크리스, 이스트와 페어로 무중단 배포를 맡기로 했다. 중간중간 리팩토링과 버그도 잡아가며 셋이서 재밌게 하고있다. 이번주는 연휴 때문에 화요일부터 시작했고, 형 결혼식을 포함해서 일들이 있어서 일주일이 후딱 지

2022년 10월 10일
·
0개의 댓글
·

로드밸런싱

팀에서 무중단 배포를 하기로 했다. 하나의 인스턴스에서 포트번호만 바꾸면서 할 수도 있고, 두 개 이상의 다른 인스턴스를 돌리는 상황에서 무중단 배포를 할 수도 있다. 현재 EC2 성능이 그렇게 좋지도 않고, 더 많은 부하에 대비하기 위해 두 개의 인스턴스를 운영하기로

2022년 10월 6일
·
1개의 댓글
·

[주간회고] 우테코 34주차 회고 - 스프린트 6 시작

이제 마지막 스프린트가 시작됐다. 여섯 번째 스프린트는 요구 사항이 바로 나오지 않아 요구 사항을 기다리면서 리팩토링 위주로 프로젝트가 진행됐다. 또 코어타임을 2시 ~ 6시로 잡아서 그 외 시간에는 개인적으로 하고 싶은 공부를 하거나, 프로젝트에서 해보고 싶었던 부분

2022년 10월 3일
·
1개의 댓글
·

[주간회고] 우테코 33주차 회고 - 스프린트5 끝

스프린트 5도 끝났다. 팀 회고 때도 나온 얘기지만 해야하는 것들의 종류가 많다보니 각각에서 아쉬움이 많이 생긴다. 이번 스프린트 때는 미션에 시간을 거의 투자하지 못했다. 그렇다고 해서 다른 것에 아예 시간을 집중해서 많이 투자할 수 없으니 학습적 만족도가 많이 떨어

2022년 9월 26일
·
0개의 댓글
·
post-thumbnail

스레드 개수 및 스레드 풀 설정

환경을 어떻게 설정하고 테스트해야할지 감이 잘 오지 않아서 실험을 여러번 다시했다. 그리고 아직도 완전히 정답을 찾은 것 같지는 않지만 나름대로 이유를 세우면서 테스트를 해보려했다. 1\. Nginx에 부하테스트 vs WAS에 부하테스트처음에는 Nginx 인스턴스에 부

2022년 9월 22일
·
1개의 댓글
·
post-thumbnail

부하테스트

부하테스트 툴을 선정하는데 JMeter, nGrinder, k6 중에서 고려를 했다.k6의 경우 결과 시각화를 하려면 유료로 서비스를 쓰거나 CLI로 쓰고 그라파나와 결합을 해야했다. 또 자바스크립트로 테스트를 작성해야해서 거부감을 갖는 팀원도 있었다. JMeter는

2022년 9월 22일
·
1개의 댓글
·