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

스프링] 스프링 핵심 원리 - 고급편 - 프록시 패턴과 데코레이터 패턴

프로젝트 생성 예제 프로젝트 만들기 v1 v1 - 인터페이스와 구현 클래스 - 스프링 빈으로 수동 등록 지금까지 보아왔던 Controller , Service , Repository 에 인터페이스를 도입하고, 스프링 빈으로 수동 등록해보자. OrderReposit

2022년 1월 13일
·
0개의 댓글
post-thumbnail

[대규모 서비스를 지탱하는 기술] Appendix - 캐시 시스템

웹 애플리케이션의 부하가 서서히 증가해서 시스템 용량이 부족해졌을 때에는 AP 서버나 DB 서버를 증설함으로써 대응을 할 수도 있지만, HTTP 레벨의 캐싱을 수행하는 HTTP 가속기를 사용함으로써 낮은 비용으로 효과가 높은 대책을 세울 수도 있다.HTTP 액세스를 고

2022년 1월 7일
·
0개의 댓글
post-thumbnail

[대규모 서비스를 지탱하는 기술] Appendix - 스토리지 선택

데이터는 업로드된 사진 데이터나 블로그 본문과 같이 본질적으로 없어질 수 없는 원본 데이터부터, 원본 데이터를 가공함으로써 생성된 액세스 랭킹이나 검색용 인덱스 데이터 등 재생성 가능한 가공 데이터, 캐시와 같이 사라져도 성능상의 문제 이외에는 다른 문제가 없는 데이터

2022년 1월 6일
·
0개의 댓글
post-thumbnail

[대규모 서비스를 지탱하는 기술] Appendix - 작업큐(Job-Queue) 시스템

웹 서비스에서는 기본적으로 요청이 동기적으로 실행된다. 즉, 요청에 기인하는 모든 처리가 끝난 다음에 응답이 반환된다. 따라서 계속 성장해가는 웹 서비스에서는 데이터가 서서히 축적되면서 데이터를 추가하고 갱신하는 처리가 점점 무거워진다. 이런 경우에 작업큐 시스템을 사

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

[대규모 서비스를 지탱하는 기술] 38장. 네트워크 분기점

1Gbps의 한계는 정확히는 30만pps (packet per second) 의 한계다. 이에 대한 대책으로는 PC라우터를 여러 대 병렬화하든가 박스형 라우터, 예를 들면 고가의 Cisco 라우터를 구입하는 방법이 있다.500호스트의 한계는 구체적으로는 스위치의 ARP

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

[대규모 서비스를 지탱하는 기술] 35장. 시스템 안정화 대책

우선 SQLd 부하에 대해 아랑보자. DB에 이상한 SQL을 날리면 바로 멈추면서 다운되어버린다. 부하가 높아질 듯한 SQL을 발행하지 않도록 하는 것이 시스템을 안정화시키기 위해서 중요하다.부하가 높아질만한 SQL을 발행할 경우에는 격리시킨 DB를 준비해서 거기로 S

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

[대규모 서비스를 지탱하는 기술] 34장. 시스템 안정화

시스템 안정화와 상반관계안정성 <-> 자원효율안정성 <-> 속도한계에 이를 때까지 메모리를 튜닝메모리 소비가 늘어난다 -> 성능 저하 -> 장애한계에 이를 때까지 CPU 사용서버 1대가 다운 -> 전체 처리능력 초과 -> 장애기능 추가, 2. 메모리 누수새로

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

[대규모 서비스를 지탱하는 기술] 33장. 다중성 확보

다중화에 대한 실제적인 얘기를 하자면 AP 서버에서는 확장성을 생각하는 방식과 마찬가지로 서버 여러 대를 늘어놓는게 기본이 된다. 서버를 늘어놓을 때 중요한 것은 1대나 2대 정도 정지하더라도 충분히 처리할 수 있도록 처리능력을 확보해두는 것이다.서버는 다양한 요인으로

2021년 12월 30일
·
0개의 댓글

[대규모 서비스를 지탱하는 기술] 32장. 부하 파악, 튜닝

q부하를 볼 때는 먼저 Load Average부터 본다. Linux 커널 내에는 프로세스가 다수 동작하고 있다. Load Average란 이러한 프로세스가 언제든지 동작할 수 있는 상태지만, 아직 실제 CPU가 할당되지 않아서 대기 상태에 있는 프로세스 수의 평균치다.

2021년 12월 29일
·
0개의 댓글

[대규모 서비스를 지탱하는 기술] 31장. 계층과 확장성

4 core CPU, 8GB 메모리 정도의 서버를 사용하면 피크 시 성능이 수천 요청/분 정도가 나온다. 이 정도면 월 100만 PV(Page View)를 처리할 수 있다.4 core CPU 2개에 32GB 메모리 서버를 준비할 수 있다면 보다 파워가 늘어나서 수천~1

2021년 12월 29일
·
0개의 댓글
post-thumbnail

[대규모 서비스를 지탱하는 기술] 26장. 검색엔진의 내부구조

역 인덱스의 내부구조는 크게 Dictionary와 Postings라는 두 파트로 나뉜다. 위쪽에 있는 1이 검색하고자하는 대상 문서라고 하자. 각 문서에는 번호가 달려있다. 각각의 문서는 문장을 담고 있다.문서를 인덱스화한 것이 아래쪽에 있는 2다. 인덱스에서 좌측 사

2021년 12월 28일
·
0개의 댓글

[대규모 서비스를 지탱하는 기술] 24장. 검색 시스템의 아키텍처

크롤링저장인덱싱검색스코어링결과표시검색 대상 문서를 처음부터 전부 읽어가는 가장 단순한 아키텍처다. 검색 대상인 텍스트의 길이를 m, 검색하려는 검색어의 길이를 n이라고 했을 때 O(mn)만큼 걸린다. 이는 검색 처리로서 상당히 느리다. KMP(Knuth-Morris-P

2021년 12월 28일
·
0개의 댓글

[대규모 서비스를 지탱하는 기술] 24장. 전문 검색기술의 응용범위

하테나 다이어리를 대상으로 한 검색엔진이란, 하테나 다이어리의 전문을 검색 대상으로 해서 하테나 키워드로 이를 검색 가능하게 하는 시스템이다. 누군가 블로그에 새로운 글을 작성했을 때 해당 글에 포함되어 있는 키워드를 전부 추출한다. 그러면 '이 블로그는 OO와 xx라

2021년 12월 28일
·
0개의 댓글
post-thumbnail

[대규모 서비스를 지탱하는 기술] 17장. VB Code와 속도 감각

VB Code(Variable Byte Code)가 사용된다.VB Code는 구현 면에서는 간단하고속도가 빨라 손 쉽게 사용할 수 있다. VB Code는 압축 알고리즘이라기 보다는 정수의 부호화 방법중 하나이다

2021년 12월 27일
·
0개의 댓글

[대규모 서비스를 지탱하는 기술] 16장. 정수 데이터를 컴팩트하게 가져가기

과제: 정수열이 기록된 CSV를 바이너리로 해서 컴팩트하게 가져가기출제 의도큰 정수열을 컴팩트하게 만드는 방법을 안다.컴팩트하게 만들면..디스크 IO를 줄일 수 있다.데이터 공간 효율적으로 사용데이터형의 크기 등에 의식을 갖는다. VB Code의 속도감을 파악한다.

2021년 12월 27일
·
0개의 댓글
post-thumbnail

[대규모 서비스를 지탱하는 기술] 14장. 용도특화형 인덱싱

배치 처리로 RDBMS에서 데이터를 추출해서 별도의 인덱스 서버와 같은 것을 만들고, 이 인덱스 서버에 웹 애플리케이션에서 RPC(Remote Prodecude Call) 등으로 액세스하는 방법을 사용한다. 위 그림을 보자. DB(1)에서 정기적으로 3시간에 1번처럼

2021년 12월 27일
·
0개의 댓글
post-thumbnail

[대규모 서비스를 지탱하는 기술] 12장. MySQL의 분산

MySQL에는 기본 기능으로 레플리케이션 기능이 있다. 레플리케이션이란 마스터(master)를 정하고 마스터를 뒤따르는 서버(슬레이브)를 정해두면, 마스터에 쓴 내용을 슬레이브가 폴링(Polling)해서 동일한 내용으로 자신을 갱신하는 기능이다. 슬레이브는 마스터의 레

2021년 12월 26일
·
0개의 댓글

[클린코드] 부록. 동시성 II

시스템 작업 처리량을 테스트했는데 실패한다면 어떻게 해야할까? 이벤트 폴링 루프를 구현한다면 모를까, 단일스레드 환경에서 속도를 끌어올릴 방법은 거의 없다. 먼저 애플리케이션이 어디서 시간을 보내는지 알아야 한다. 가능성은 두 가지다.I/O: 소켓 사용, 데이터베이스

2021년 12월 24일
·
0개의 댓글