일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- laravel
- Spring Batch
- db
- AWS
- jsp
- it
- ubuntu
- Spring
- jenkins
- Oracle
- springboot
- Spring Boot
- javascript
- redis
- php
- Design Patterns
- 맛집
- elasticsearch
- IntelliJ
- java
- linux
- 요리
- devops
- Web Server
- MySQL
- tool
- JVM
- ReactJS
- Git
- Gradle
- Today
- Total
아무거나
Java ThreadLocal참고코드 Java ThreadLocal 이란Spring Bean 은 싱글톤으로 등록이 된다. 이러한 상황에서 하나의 인스턴스에 여러개의 스레드가 동시에 접근하면 동시성 문제가 발생하게 된다.이러한 경우 스레드 세이프하게 하려면 ThreadLocal 을 사용하면 된다. ThreadLocal 은 해당 Thread 만 접근할 수 있는 특별한 저장소를 말한다. 즉, 각 Thread 마다 별도의 내부 저장소를 제공 동시성 문제 예제하기 코드를 실행해보면 동시성 문제가 발생한다.[ThreadLocalServiceTest.java]package com.example.bkjeon.base.services.api.v1.thread.service;import lombok.extern.slf4j..
참고소스: https://github.com/bkjeon1614/kotlin-example-code/tree/main/kotlin-jpa-codebase Application.kt 에 설정...import org.springframework.scheduling.annotation.EnableScheduling@EnableScheduling // 추가class TestApplication { ... fun main(...)}AppHealthCheckScheduler.kt 스케쥴러 테스트용 코드 작성 package com.bkjeon.base.v1.schedule import org.apache.http.client.methods.HttpGet import org.apache.http.impl.cl..
indexedDB: WebStorage 로 커버가 불가능한 복잡한 데이터 구조 또는 많은 데이터를 저장하고 관리해야 하는 경우에 사용하며 메일 클라이언트, 할 일 목록 등 작업에 유용특징javascript 기반의 객체지향 데이터 베이스 즉, javascript 가 인식할 수 있는 자료형과 객체를 저장할 수 있다. (localStorage 는 String 형태만 저장 가능)트랜잭션을 사용하며 Key-Value 데이터 베이스이다.비동기 API 이다.색인을 사용하여 복잡한 쿼리를 가능하게 하여 검색 성능을 향상장기 데이터 저장, 브라우저 재 시작 및 시스템 충돌 방지 기능을 제공그 외localStorage 에 비해 속도가 느림(Trade-Off)사용자가 수동으로 삭제하지 않는 이상 데이터가 계속 남아있음사용법..
Java Fork Join Pool 과 비동기 프로그래밍예제코드예제코드 Fork Join Pool 이란ForkJoinPool 은 Java7부터 사용가능하며 동일한 작업을 여러개의 Sub Task로 분리(Fork)하여 각각 처리하고, 이를 최종적으로 합쳐서(Join) 결과를 만들어내는 방식이다. 즉, 대규모 작업을 빠르게 처리하는데 용이하다. 비동기 프로그래밍 (CompletableFuture, ForkJoinPool)CompletableFuture (Java8 부터 도입)CompletableFuture 는 기존의 Future 인터페이스를 개선한 인터페이스다. 즉, 해당 인터페이스를 사용하면 동기적은 수행 방식을 비동기적인 수행 방식으로 변환하여 성능을 개선하고, 더 유연한 비동기 처리 로직을 구현할 수 ..
@Async 를 활용한 비동기 호출 구현 예제코드예제코드 java-example-code/java11/bkjeon-mybatis-codebase at main · bkjeon1614/java-example-codejava-example-code. Contribute to bkjeon1614/java-example-code development by creating an account on GitHub.github.com @Async 를 사용해야 하는 이유Spring @Async 를 사용하지 않으면 Thread 를 관리할 수 없어서 매우 위험하다. 예를 들어 동시에 1000 개의 호출이 요청된다면 짧은 시간 안에 Thread 를 1000 개를 생성해야 되므로 Thread 를 생성하는 비용은 적지 않기 때문..
* 수제비 만드는법 (구매해서 사용해도 되지만 만들어 먹어야 수제비의 다른 식감의 매력을 느낄 수 있다.)- 밀가루(약 밥 1공기) 와 물(100ml) 을 넣고 믹서기로 섞는다. (그래야 글루텐 형성이 잘되서 쫄깃하다고 한다.) 그 다음 반죽하여 비닐에 넣고 냉장고에 숙성 1. 조개를 2~3회 씻는다. 2. 큰 볼에 물과 소금 2큰술 정도를 녹인 후 거기에 조개를 넣고 위에 쇠숟가락을 올려놓는다. 3. 어둡고 서늘한 곳 또는 냉장고에 넣어 해감한다. (빛 차단을 위해 뚜껑 덮어야됨) 4. 해감이 된 조개를 물에서 2~3회 씻는다. 해감을 다 한 상태면 5번 부터 봐도 된다.5. 육수를 만들 냄비에 물을 아주 조금만 넣고 (약 종이컵 반컵 = 80ml) 조개를 푹 익히고 살을 따로 발라낸다. 6. 물을 ..
Jenkins Pipeline + Nginx + Spring Boot(Maven) 무중단 배포 요새는 CI/CD 가 잘되어 있어서 jetbrains, aws, atlassian, jenkins 등.. 선택지가 많으나 비용이 적게드는 최소한의 방법으로 구성을 했던 내용을 복습하기 위해 해당 포스팅을 작성하게 된다. bitbucket webhook 을 통하여 소스 pr 후 merge 시에 trigger 가 발생하게 되는 구성으로 되어있으며 (해당 과정은 생략) 이후 jenkins pipeline 을 통하여 빌드하고 각 배포할 서버에 전송 후 구동 및 스위칭 스크립트를 작성하는 프로세스로 진행할 것이다. 배포할 서버에 빌드파일을 전송할 JenkinsFile 작성 (Maven)[Jenkinsfile]pipeli..
[2인분 기준] 1. 양파 2개를 깍둑썬다. 2. 기름을 두르고 춘장 2T 을 넣고 끓인다. 3. 센불에 고기를 넣고, 밑간용 간장 1T 넣는다. 4. 양파를 넣고 볶는다. (그 외 양파나 감자도 넣어주면 좋다.) 5. 물을 소량 넣어준다. 6. 굴소스 1T, 설탕 1T 을 넣는다. 7. 전분 2T 을 넣는다. 8. 부추가 있으면 부추를 섞어서 마무리
Spring Batch Partitioning 구현예제코드예제코드Spring Batch Partitioning 이란파티셔닝은 매니저 Step 이 대량의 데이터 처리를 위해 지정된 수의 작업자 (Worker) Step 으로 병렬처리 하는 방식이다.Multi Thread Step 과 비교멀티스레드 Step 은 단일 Step 을 Chunk 단위로 스레드를 생성해 분할처리 한다.어떤 쓰레드에서 어떤 데이터들을 처리하게 할지 세밀한 조정이 불가능해당 Step의 ItemReader/ItemWriter 등이 멀티스레드 환경을 지원하는지 유무가 굉장히 중요파티셔닝은 독립적인 Step (Worker Step)을 구성하고, 그에 따른 각각 별도의 StepExecution 파라미터 환경을 가지게 하여 처리멀티스레드 Step..
Redis 관련 내용 정리대표적인 구조Look Aside Cache (보편적으로 사용)Client -> Application -> Cache 에 데이터가 있으면 Cache 에서 가져옴 만약 없으면 DB 에서 데이터를 읽어오고 해당 데이터를 Cache 에 저장Write BackClient -> Application -> Cache 에 먼저 데이터를 저장하고 특정 시점마다 DB 에 저장이렇게 하면 DB 에 저장될 때 건별로 Insert 쿼리를 날리는 것 보다 한 번에 쿼리를 날리다보니 성능에 용이사용사례여러 서버들이 데이터를 공유할 때인증 토큰 등을 저장Ranking(Sorted Set)APIQueueRedis CollectionsStrings단일 KeyGET SET 멀티 KeyMSET ....MG..