일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 도커
- Logback
- 주울
- 백트래킹
- 스택
- 구간 트리
- Zuul
- 비트마스킹
- 플로이드 와샬
- Gradle
- spring boot
- 구현
- 다익스트라
- 게이트웨이
- Java
- 트리
- 스프링 시큐리티
- Spring Cloud Config
- 서비스 디스커버리
- 이분 탐색
- BFS
- dp
- docker-compose
- 완전 탐색
- spring cloud
- 메모이제이션
- 이분 매칭
- ZuulFilter
- 달팽이
- 유레카
- Today
- Total
목록프로그래밍 언어/Java (18)
Hello, Freakin world!
비동기 예외 처리? 상황을 자세히 살펴보자. 스레드 A,B가 있다고 하자. A는 호출자 스레드이고 A스레드에서 어떤 작업을 B로 위임했다. B 작업의 결과를 참조하기 위해 우리는 자바에서 지원하는 동시성 api를 사용했고 그 결과는 Future를 통해 접근할 수 있다고 하자. 예제 코드 import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class ThreadA { public static void main(String[] args) throws ..
어디에 쓰는 물건인고? ExecutorService에서 비동기 작업의 결과를 감싸는 기능을 하는 클래스다. 다시 말해, 다른 스레드에서의 작업 결과에 접근할 수 있는 참조를 제공하는 역할을 한다. 제공하는 메서드 - cancel(boolean mayInterruptIfRunning) - get() - get(long timeout, TimeUnit unit) - isCancelled() - isDone() 예제 public class Main { public static void main(String[] args) throws ExecutionException, InterruptedException { ExecutorService executorService = Executors.newCachedThre..
Selector에 등록하는 방법 방법 자체는 간단한다. SelectableChannel 클래스를 구현한 클래스의 객체들은 register() 메서드를 이용해 selector에 등록이 가능하다. 주의 사항 1. selector의 key set에 채널이 등록될 때, 채널 객체의 참조값이 키값이 된다. 따라서 targetChannel.register()에서 target이 같다면 register 메서드에 파라미터를 다르게 주면서 여러번 호출하더라도 마지막 파라미터를 값을 가진 채널이 등록된다. (중요!) 2. selected-key set은 key set의 경우와 다르다. 이 set에서 식별키는 interest op 값과 채널의 참조값인듯하다. selection 작업 후 key set에 같은 참조값의 채널이 있..
Gson 라이브러리 자바 객체와 json:String 서로 간의 변환을 도와주는 라이브러리입니다. toJson, fromJson 과 같은 메서드명으로 구성되어 있어 직관적으로 사용이 가능합니다. 참고사항 - 도메인 객체의 필드만을 이용해 json 포맷의 문자열을 구성합니다. - 필드가 null인 경우 json 객체에 포함되지 않습니다.
이 문서는 java12 documentation 내용을 정리한 것입니다. 이 객체는 SelectableChannel 객체의 멀티플렉서입니다. 멀티플렉서란 아래 그림처럼 다중의 입력을 하나의 출력으로 반환하는 걸 매개하는 것을 의미합니다. Selector 객체는 Selector 클래스의 open 메서드를 호출함으로서 생성됩니다. 내부적으로 미리 설정된 기본 selector provide 객체를 통해서 새로운 selector를 만듭니다. Selector 객체는 커스텀 selector provider의 openSelector 메서드를 이용해서 제공될 수도 있습니다. Selector는 close()로 인해 닫히기 전까지 열려있는 상태를 유지합니다. Selectable channel을 등록하면 SelectionK..
간단하게 클래스 개별 테스트를 진행한다면 이 방법으로 충분하다. 하지만 로그들을 전체적으로 관리하려면 이 방법보다는 설정 xml 파일을 따로 작성하자. import ch.qos.logback.classic.Level; import ch.qos.logback.classic.Logger; import ch.qos.logback.classic.LoggerContext; import org.junit.Test; import org.slf4j.LoggerFactory; public class LogExample { LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); Logger logger = lc.getLogger(LogExample.cl..
자바 진영에서 로그를 지원하는 여러 라이브러리가 있다. log4j, slf4j 등이 있는데, logback은 저 둘을 계승하면서 좀더 편리한 유틸 메서드를 제공하는 라이브러리라고 생각하면 된다. logback은 slf4j api를 구현했기 때문에 사용하기 위해서는 slf4j도 같이 import 해줘야 한다. 또 logback 라이브러리 중에서도 세 가지로 나뉜다. logback-core , logback-classic, logback-access가 있다. core는 classic과 access의 공통 부분 라이브러리이다. classic은 버전업된 log4j와 같다고 한다. 단순한 로깅 작업이라면 classic과 core 라이브러리를 이용하면 된다. access는 서블릿 환경에서의 로깅을 지원한다고 한다...
이해를 돕기 위한 예제 다음과 같은 fxml 파일이 있다고 하자. AnchorPane 태그의 fx:controller 속성에 이미 컨트롤러 클래스가 바인딩되어 있는 상황이다. 복잡해보이지만 다른 것들은 중요하지 않다. 해당 ListView 컴포넌트를 바인딩한 컨트롤러 클래스의 필드로 바인딩하고 싶다고 하자. 이때, fxml에서 필요한 조치는 ListView에 fx:id 속성을 부여하고, Controller 클래스에서 이 id와 같은 이름과 타입의 필드를 만드는 것이다. 쉽게 말해 다음의 필드를 만드는 것이다. import javafx.fxml.FXML; import javafx.scene.control.ListView; public class RoomListController { public ListVi..