일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- ubuntu
- jsp
- it
- springboot
- Oracle
- java
- AWS
- IntelliJ
- devops
- Spring Boot
- JVM
- laravel
- MySQL
- Spring Batch
- linux
- jenkins
- 요리
- Git
- javascript
- ReactJS
- Design Patterns
- db
- Web Server
- Spring
- redis
- elasticsearch
- Gradle
- php
- 맛집
- tool
- Today
- Total
아무거나
Java Mutex(뮤텍스) 와 Semaphore(세마포어) 그리고 Spinlock(스핀락)참고코드 Mutex(뮤텍스)Mutex 는 Mutual Exclusion(상호 배제)의 약자이며 Lock(락) 이라고도 한다. Mutex 는 한 번에 하나의 스레드만이 특정 리소스나 코드 섹션에 접근할 수 있도록 한다. 즉, 한 시점에 단 하나의 스레드만이 리소스를 사용할 수 있게 된다. (Lock/UnLock)또한 Java 에서는 ReentrantLock 라는 Lock 인터페이스가 존재하는데 이걸 활용해서 Lock 의 획득과 해제에 대한 부분을 제어할 수 있다. [LockController.java]// 예제코드@RestController@RequestMapping("v1/lock")@RequiredArgsCons..
현재 회사 프로젝트에 대부분이 Map 으로 선언되어 있는 경우가 많다.그로 인하여 무분별한 Map 사용을 지양하기 위해 정리하여 공유할 겸 해당 포스팅을 남긴다. Map 보다 DTO 클래스를 사용해야 하는 이유Map 을 사용할 때 단점Map 의 Key 를 사용할 때 오타 발생 유발Map 의 key 입력에 오타를 입력 후 인지하지 못할 수 있음컴파일 에러를 유발할 수 없음Object 와 같은 최상위 클래스로 사용시에 타입 체크를 할 수 없으므로 만약 문제가 생기면 런타임 시점에 알게 될 것이다.가독성이 떨어지며 타입캐스팅 비용이 발생함// 해당 코드와 같이 Map ... 로 되어있으면 Object 에 어떤 타입인지 유추도 안될 뿐더러 Map 안에 또 다른 Map 이 존재하는 경우 더욱 심각해진다.Map t..
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..