https://www.youtube.com/watch?v=ZBu_slSH5Sk 유튜브 쉬운코드의 맵, 해시테이블 설명을 보고나서 추가로 궁금한 부분들을 정리해보았습니다. 영상의 설명이 너무 좋아 같이 봤으면 해서 영상도 같이 올립니다. Map key-value pair들을 저장하는 ADT 같은 key를 가지는 pair는 최대 1개만 존재 associative array, dictionary라고 불리기도 함 구현체 Hash Table Tree-based 💡 ADT (Abstract Data Type, 추상 데이터 타입) 데이터와 해당 데이터에 적용되는 연산들을 묶어놓은 개념. 데이터 내부 구현을 감추고 데이터와 연산의 인터페이스만을 노출시켜 코드의 모듈성과 재사용성 향상을 목표로 함. ex) Stack, ..
Pageable Spring data core api에서 제공하는 인터페이스 JPA Repository 메소드 파라미터에 Pageable 객체를 넣어주면 자동으로 페이지네이션 적용 public interface UserRepository extends JpaRepository { List findByLastname(String lastName, Pageable pageable); } 반환타입 : Page, Slice, List Page : 페이지 + totalCount Slice : 페이지 + 전후 슬라이스 존재 여부 List : 페이징 안된 전체리스트 PageRequest 페이징 요청 정보 생성 쿼리스트링으로 사용하는 법 컨트롤러에 파라미터로 PageRequest 삽입 쿼리스트링에 page=3&size..
우선순위 큐 우선순위가 가장 높은 데이터를 가장 먼저 삭제하는 자료구조 데이터를 우선순위에 따라 처리하고 싶을 때 사용 대표적인 우선순위 구현 방법 : 리스트, 힙(heap) 자료구조 → 힙 자료구조를 사용할 때 삽입&삭제 모두 O(logN) 힙(Heap) 자료구조 완전 이진트리 자료구조의 일종 항상 루트 노드를 제거한다. 최소 힙 (min heap) 루트 노드가 가장 작은 값을 가진다 값이 작은 데이터가 우선적으로 제거된다 최소 힙 구성 함수 : Min-Heapify() 최대 힙 (max heap) 루트 노드가 가장 큰 값을 가진다 값이 큰 데이터가 우선적으로 제거된다 🅰️ Heap 더미, 쌓다, 수많은, 엄청난 완전 이진 트리 (Complete Binary Tree) 루트노드부터 시작하여 왼쪽 자식 ..
분산처리, 동시성관리, 비동기 이런거 위주로 자료를 찾아보다가 아래 포스팅을 우연히 발견했습니다. 보다 보니 몰랐던 내용들이 너무 많아 JAVA NIO까지 추가로 찾아보게 되었습니다. https://velog.io/@sihyung92/how-does-springboot-handle-multiple-requests 스프링부트는 어떻게 다중 유저 요청을 처리할까? (Tomcat9.0 Thread Pool) 스프링 부트는 웹서버 어플리케이션 구조에 대해 잘 몰라도, 뚝딱 웹서버 어플리케이션을 만들게 도와줍니다. 하지만 한번씩 궁금증이 들 때가 있습니다. 이게 왜 되지..? 스프링, 이거 왜지? 시 velog.io 스프링부트의 다중 요청 처리 플로우 내장 서블릿 컨테이너인 Tomcat을 이용 Tomcat은 다중..
이전에 대량의 엑셀다운로드 처리 중 cpu가 급증하는 문제가 생겨 이를 해결한 내용을 다룬 적이 있는데요 그땐 시간이 없어서 그냥 XSSF에서 SXSSF로 바꾸면 되는구나~라고만 하고 넘어갔는데 SXSSF 컴포넌트는 어떻게 메모리를 관리하는건지 궁금해져서 공식문서를 다시 찬찬히 읽어봤습니다 이전 포스팅 👇 [Apache POI] 다량의 데이터 엑셀 다운로드 처리로 인한 서버 장애 대응 후기 스테이징 QA 도중 갑자기 사이트의 모든 기능이 먹통이 됐다는 소식을 들었습니다. 확인해보니 CPU 사용량이 급증하여 서버가 다운됐던 것이었습니다. 우선 서버를 재부팅하여 먹통 문제는 해결 jibsakim.tistory.com 공식문서에서의 SXSSF에 대한 설명을 보면 슬라이딩 윈도우(sliding window)가 ..
Java Bean이란 자바 빈이란, 3가지 규칙을 지키는 클래스이다 모든 필드는 private이며, getter/setter 메서드를 통해서만 접근이 가능하다 argument가 없는 (no-argument) 생성자가 존재한다 java.io.Serializable 인터페이스를 구현한다 import java.io.Serializable; public class SomeBean implements Serializable { private String beanName; private int beanValue; public SomeBean() { // no-argument constructor } public String getBeanName() { return beanName; } public void setB..
테스트코드는 저에게 진짜 애증의 영역입니다. 이해하고 싶은데 파면 팔수록 뭐가 자꾸 새로운게 튀어나옵니다. 각종 용어와 관련 기술이 난무하고 샘플코드도 저마다 스타일이 다른 것 같습니다. 제가 혼란스러웠던 것들에 대해 하나씩 정리해보고자 합니다. xUnit과 JUnit xUnit : unit testing framework의 통칭하는 것으로, 각 언어별로 지원하는 xUnit이 있습니다. JUnit은 그 중 한 종류로 자바용 유닛테스팅 프레임워크입니다. ex) JAVA - JUnit, .NET - NUnit, C++ - CppUnit, ... JUnit과 AssertJ, Mockito JUnit은 위에서 언급한대로 JAVA의 유닛테스팅 프레임워크 입니다. 테스트 환경이라고 봐도 무방하지 않을까 싶습니다. ..
테스트코드와 TDD에 대해 책도 보고 구글링도 해봤지만 그래서 난 뭘 해야하는지가 감이 안와서 회사에서 제가 작업했던 API에 대해 테스트코드를 작성해봤습니다. 회사 코드를 공개할 순 없으니, 샘플용으로 간단한 API를 설계해보고 그걸로 같이 테스트 코드를 작성해보고자 합니다. 부족한 점이 많습니다. 잘못됐거나 보강 필요한 부분은 댓글 부탁드려요. 빵집의 상품 목록 조회 API 개요 EndPoint : /bread/list Method : GET Parameter : breadName (빵 검색어) Response Body { "code": 0, "message": "success", "response": { "statusCode": 200, "requestTime": "2022-03-13 16:34:4..
스테이징 QA 도중 갑자기 사이트의 모든 기능이 먹통이 됐다는 소식을 들었습니다. 확인해보니 CPU 사용량이 급증하여 서버가 다운됐던 것이었습니다. 우선 서버를 재부팅하여 먹통 문제는 해결하였고, 원인을 찾아 나섰습니다. 지난 새벽 배포 때 다른 서버(노드)에서 몇만건정도의 데이터 엑셀 다운로드를 몇차례 시도했을때도 CPU 사용량이 급증했던 것이 기억나서 그 부분을 이번 서버(자바)에서도 확인해보기로 했습니다. 엑셀 다운로드 시도할 때마다 CPU 사용량이 급증하는 것을 확인했습니다. RDS는 이상 없고 EC2만 다운된 걸로 보아 서비스단에서 다량의 데이터를 처리하다 무언가 과부하가 걸렸을 것으로 추측했습니다. 로컬에서 상용DB를 연결하여 재현해보니 아래와 같은 에러 로그가 발생했습니다. org.apach..
- Total
- Today
- Yesterday
- k8s
- mockery
- laravel 테스트코드
- 리눅스 컨테이너
- 도커
- pods
- 분산처리
- 샤딩
- docker
- 쿠버네티스
- Apache POI
- 주니어개발자
- 샤드
- laravel
- kubernetes
- 대규모 데이터 처리
- laravel 테스트
- java
- MySQL
- NoSQL
- php
- 백엔드
- phpUnit
- 라라벨
- database
- mongoDB
- redis
- springboot
- index
- 몽고디비
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |