본문 바로가기

분류 전체보기

(40)
코틀린 안티패턴 코틀린의 장점은 코드의 안전성 & 간결성인데,장점을 죽이는 코드를 작성하지 말자는 취지로 작성합니다. (과거의 나포함..)최소한의 안티패턴은 알아둔다면 어느정도 도움이 되겠죠. 1. Null Safety 안티패턴 코틀린의 가장 큰 장점 중 하나가 nullable과 non-nullable 타입의 명확한 구분입니다.하지만 실수로 null 안전성을 해치는 코드가 자주 등장합니다. 1-1. NotNull Assertion (!!) 남발// 잘못된 코드var name: String? = "Jin"println(name!!.length) // name이 null이면 바로 NPE!// !!는 정말 null일 가능성이 0%임을 100% 확신할 때만 써야 합니다// 실무에선, 외부 입력이나 파싱 데이터는 null이 들어..
분산환경에서 트랜잭션 관리하는 방법 주로 아래 4개의 관리 방법을 사용함2PC는 성능 이슈로 다른 선택지를 사용하거나정말 강한 일관성이 필요한 것 아닌 경우에는 잘 안쓰는 듯?언제나 그렇듯이 정답은 없고 상황에 맞게 잘 사용하는 것이 중요한 것 같다 2PC, Saga, CDC, 그리고 트랜잭셔널 아웃박스- 강한 일관성이 중요하다면 2PC 또는 Transactional Outbox- 성능과 가용성을 우선시한다면 Saga Pattern 또는 CDC- 운영의 단순성을 중요시한다면 Transactional Outbox패턴일관성가용성실시간성운영 복잡성2PC강함낮음높음높음Saga약함높음중간중간CDC최종 일관성높음높음높음Transactional Outbox강함높음중간낮음     1. 2PC (2-Phase Commit Protocol)2PC는 트랜잭션..
Spring Data Spring Data Spring DataSpring Data’s mission is to provide a familiar and consistent, Spring-based programming model for data access while still retaining the special traits of the underlying data store. It makes it easy to use data access technologies, relational and non-relaspring.io 스프링에서 직접 지원하는 메인모듈과 커뮤니티 모듈이 있음기본 모듈과 사용해보면 좋을 것 같은 모듈을 소개함LDAP은 쓸일이 있을까? 싶은데 R2DBC랑, REST는 도입을 생각해 볼수 있을때 생각 날..
Spring Boot, 스프링 부트 Spring Boot Spring Boot spring.io Spring.io 에서 Projects 탭에 많은 프로젝트들이 있는데 무심코 사용하고 있던 프로젝트만 사용했던 것 같다이전 회사에서 사용했던 vault 도 스프링 프로젝트가 있었음낯선 프로젝트들도 많다는 걸 느껴서 한번씩 훑어보기 할 예정 사용이유와 어노테이션만 빠르게 보자  ---------------------------------------------------------------------------------------------------------------------- 스프링 부트란 무엇인가?독립 실행형 애플리케이션 생성:스프링 부트를 사용하면 내장 웹 서버(Tomcat)를 포함한 독립 실행형 애플리케이션을 쉽게 생성할 수 있음..
코딩테스트/기술블로그/메일링 모음 코딩 테스트Softeer - 현대자동차그룹 SW인재확보플랫폼Problems - LeetCode코딩테스트 연습 | 프로그래머스 스쿨 기술블로그기술 블로그 모음 - TechBlogPosts 메일링 - 출근길 꾸준한 학습 + 트렌드 읽기GeekNews Weekly - 일주일 동안의 뉴스를 이메일로 보내드립니다. - 매주 월요일요즘 사람들의 IT 매거진, 요즘IT  - 매주 목요일매일메일 - 기술 면접 질문 구독 서비스 - 매일
Spring 대용량 엑셀 업로드 어드민을 관리 할 경우 대용량 엑셀을 업로드 할 경우가 생깁니다.단순하게 엑셀만 업로드 할 경우 OOM, 타임아웃, 파일 관련, 네트워크 관련 에러 등 여러 에러가 발생할 수 있습니다. 아래 5가지를 주의해서 만들고, DB 모니터링으로 최적화가 가능합니다. 1. 스트리밍 방식 파일 읽기파일 전체를 메모리에 로드하지 않고, 스트리밍 방식으로 한 행씩 순차적으로 읽음Apache POI의 SXSSF(Streaming XML SAX Parser) 또는 xlsx-streamer 라이브러리 활용메모리 사용량을 최소화하여 OOM(Out of Memory) 방지public class ExcelStreamReader { public void readExcelStream(String filePath) { ..
내가 보려고 작성하는 각종 docker 설치 명령어 - mysql, redis, kafka, mongo windows 기준이고, docker desktop이 설치가 되어 있어야 합니다. 1. docker-compose.ymlversion: '3.8'services: # Redis 설정 redis: image: redis:latest container_name: redis ports: - "6379:6379" command: redis-server --requirepass mypassword --save 60 1000 # 60초 동안 1000번 이상 변경시 스냅샷 저장 restart: unless-stopped volumes: - redis-data:/data # MongoDB 설정 mongodb: image: mongo:latest co..
Java - 팩토리얼, 순열, 조합 등 수학 알고리즘 정리 최근 leetcode 데일리 문제에 2개의 쌍 관련한 문제들이 나와서 풀면서수학 공식 오랜만에 풀다보니 생각이 안나 정리를 해봄..... 1. 순열(Permutation, nPr), 조합 (Combination, nCr)/** * 순열 (nPr) * 사용 케이스: * 1. n개 중에서 r개를 선택하여 순서있게 나열하는 경우 * 2. 예: n명의 사람중 r개의 자리에 배치하는 경우 * 3. 예: 카드를 뽑아 순서대로 배열하는 경우 */public static long permutation(int n, int r) { if (r > n) return 0; long result = 1; for (int i = 0; i n) return 0; r = Math.min(r, n - r); ..