Future의 단순 활용 비동기 계산을 모델링하는데 사용 Future는 계산이 끝났을 때 결과에 접근할 수 있는 참조를 제공 시간이 걸릴 수 있는 작업을 Future 내부로 설정하면 호출자 스레드가 결과를 기다리는 동안 다른 작업을 수행 Callable 객체 내부로 감싼 다음에 ExecutorService에 제출 ExecutorService executor = Executors.newCachedThreadPool();//스레드 풀 생성 Future future = executor.submit(new Callable() {//Callable을 스레드풀에 제출 public Double call() { return doSomeLongComputation();//시간이 오래걸리는 작업을 다른 스레드로 비동기 실..
은은하고 고급진 향기를 발산하는 토종백합입니다!!^^옛날 옛적 우리가 어렸을때 시골집 한켠에 자리잡고 있던 백합이지요~ :-)언젠가부터 외래종 백합에 밀리고,거의 소멸하여 보기 귀하고, 구하기 어려운 백합이 된 토종백합입니다.중국산 백합이 수입되어 비슷한 모습을 한 백합과는 다른 오리지날 토종백합입니다!! 배수가 잘되는 토양, 가급적 반그늘에 식재하는게 좋습니다.받는 즉시 구근을 말리지 말고 식재하시고요,행여 인편이 떨어진게 있으면 함께 묻어주면 싹이 돋아난답니다~~^^퇴비는 넣지 않고 심을것을 권장하고,잘 썩은 부엽토가 있다면 조금 넣고 심으면 좋습니다. 백합 구근 위로 10~15cm 정도의 흙이 덮이게 심어주세요.그래야 구근 위에 나오는 뿌리(상근) 위에 자구가 많이 생..
아마릴리스 블라썸피콕 입니다!!아마릴리스 전문농장에서 재배한 구근을 발송합니다 :D지금 화분에 식재하여 실내에 두시면 봄에 개화하여 너무나 아름다운 꽃을 볼 수 있습니다.화분에 식재시 구근의 3분의 1이 겉으로 드러나게 즉 3분의 2가 묻히게 심는게 좋아요.심고나서 물한번 듬뿍주세요!!담부터는 화분 흙이 마르면 한번씩 주시면됩니다.물을 너무 자주 주면 과습이 됩니다.햇빛을 많이 보여주어야 웃자람을 막을 수 있답니다.^^ 구근을 좀 더 건조시킨 후 그대로 겨울동안 신문지에 싸서박스에 넣어 보관했다가봄에 화분이나 정원에 심어도 좋습니다.노지에 심는 경우엔 물을 주지않는게 좋아요 :) ..
리팩터링이란 겉으로 드러나는 코드의 기능은 바꾸지 않으면서 내부 구조를 개선하는 방식으로 소프트웨어 시스템을 수정하는 과정 버그가 생길 가능성을 최소로 줄이면서 코드를 정리하는 방법 리팩터링한다는 것은 코드를 작성하고 난 뒤에 설계를 개선하는 일 프로그램이 새로운 기능을 추가하기에 편한 구조가 아니라면, 먼저 기능을 추가하기 위한 형태로 리팩터링 후 원하는 기능을 추가한다 리팩터링 전에 제대로 된 테스트부터 마련한다 테스트는 반드시 자가진단하도록 만든다 테스트를 작성하는데 시간이 좀 걸리지만, 신경써서 만들어두면 디버깅 시간이 줄어서 전체 작업 시간은 단축된다 리팩터링은 프로그램 수정을 작은 단계로 나눠 진행한다 그래서 중간에 실수하더라도 버그를 쉽게 찾을 수 있다 컴파일-테스트-커밋 간단한 수정이라도 ..
@ControllerAdvice의 basePackages, annotations 속성으로 Controller 별로 Exception을 구분해서 처리할 수 있지만 URL Path 별로 구분하기는 어렵다. 아래처럼 동일 Exception을 구분해서 처리할 때는 @RequestMapping 으로 URL 을 구분할 수 있다. @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) @RequestMapping("/api/**") // Specify the URL path pattern public ResponseEntity handleApiExceptions(HttpServletRequest request,..
이슈 spring boot 2.4 업그레이드 후 bootstrap.yml 에 설정해둔 spring.config 제대로 동작하지 않고 부팅 시 에러 발생 No spring.config.import property has been defined Action: Add a spring.config.import=configserver: property to your configuration. If configuration is not required add spring.config.import=optional:configserver: instead. To disable this check, set spring.cloud.config.enabled=false or spring.cloud.config.import-c..
이슈 Spring Boot 2.7.8 버전 업그레이드 시 mysql-connector-java 의존성 에러가 발생 원인 MySQL JDBC Driver가 mysql-connector-java -> com.mysql:mysql-connector-j 으로 변경됨 https://github.com/spring-projects/spring-boot/releases/tag/v2.7.8 조치 com.mysql:mysql-connector-j 으로 의존성 변경 #AS-IS implementation 'mysql:mysql-connector-java' #TO-BE implementation 'com.mysql:mysql-connector-j' https://mvnrepository.com/artifact/com.mys..
스레드와 높은 수준의 추상화 단일 CPU가 여러 사용자를 지원할 수 있는데 이는 운영체제가 각 사용자에 프로세스를 할당하기 때문 두 사용자가 자신만의 공간에 있다고 생각할 수 있도록 가상 주소 공간을 각 프로세스에 제공 운영체제는 주기적으로 번갈아가며 각 프로세스에 CPU를 할당함 프로세스는 운영체제에 한개 이상의 스레드로 같은 주소 공간을 공유하는 태스크를 동시에 실행 네 개의 코어를 가진 CPU에서 이론적으로는 병렬로 실행하여 실행 속도를 네배 향상시킬 수 있음 자바 스트림으로 병렬성을 달성 long sum = Arrays.stream(stats).parallel().sum(); 스트림을 이용해 스레드 사용 패턴을 추상화 Executor와 스레드 풀 Java 5는 Executor 프레임워크와 Thre..