Java
-
Optional in java 8 example 예제Java/Java 8 2023. 8. 30. 14:22
Java 8 Optional optional 은 java.util 패키지의 Java 8에 추가된 새로운 클래스입니다. 이 도움말에서는 Java Optional 클래스와 해당 개체에 대해 자세히 설명합니다. Optional의 필요성 간단히 말해서, Optional은 Java에서 NullPointerException을 우아하게 다루기 위해 설계되었습니다. 아마도 null 참조에 익숙하실 겁니다. 이로 인해 가장 흔하게 발생하는 NullPointerException을 아래와 같이 보실 수 있습니다. String str = null; if(str.equals("codippa")) { // do something } null 참조에서 메서드를 호출하려고 하기 때문에 java.lang.NullPointerExcep..
-
[Java CompletableFuture]CompletableFuture 로 List 를 쓰레드 병렬처리 구현하기Java/Java Thread 2021. 7. 9. 14:37
CompletableFuture 하나만 있으면 비동기 처리 및 여러 병렬처리를 원하는 대로 할 수 가 있다. 여기서 코드 구현하려는 내용은 list 데이터가 있고, 각 list 의 item 이 http 커넥션을 통해 데이터를 가져오는 등 순차적으로 수행하기에는 시간소요가 오래걸랄때 쓰레드를 이용해 시간을 줄여보고자 한다. List list = itemRepository.findAll(); ExecutorService executorService = Executors.newFixedThreadPool(10); log.info(list.size() + "개"); List resultList = list.stream().map( item -> CompletableFuture.supplyAsync(() -> {..
-
AKKA 샘플 예제 분석하기 - akka QUICKSTART javaJava/Akka 2021. 5. 21. 16:35
Akka 솔직히 좀 개념이 좀 생소해서 어떨때에 어떻게 사용해야하는지 분간이 안가서 학습중이다. Akka 정의 Akka는 오픈 소스 툴킷으로, JVM 상의 동시성과 분산 애플리케이션을 단순화하는 런타임이다. pom.xml com.typesafe.akka akka-actor-typed_2.13 2.6.14 com.typesafe.akka akka-actor-testkit-typed_2.13 2.6.14 test AKKA 프로젝트 템플릿 다운로드 http://dev.lightbend.com/start/?group=akka&project=akka-quickstart-java AKKA 는 자바개발환경에서는 maven, gradle 로 실행 가능하고, 스칼라 사용시 SBT 로 빌드 후 사용 가능하다. 프로젝트를 ..
-
[java] 자바 selenium 새 탭 열기Java/Java Library 2021. 3. 10. 18:46
자바 selenium 사용시 새탭을 열고 싶은 경우가 있다. 탭을 여는 방법은 여러가지 있는데 키보드 이벤트를 이용한 경우와 자바스크립트를 이용하는 경우가 있다. 자바스크립트를 이용하는 경우 ((JavascriptExecutor) driver).executeScript("window.open()"); 위의 방식으로 새탭을 열고, 새탭의 브라우저도 컨트롤 하고 싶은 경우 tab 을 이동해야 한다. 탭을 이동하는 방법은 ArrayList tabs = new ArrayList(driver.getWindowHandles()); // 탭리스트 가져오기 driver.switchTo().window(tabs.get(1)).navigate().to("https://www.naver.com"); getWindowHand..
-
[Java] 자바 selenium 크롤링 - 브라우저 제어하기Java/Java Library 2021. 3. 8. 18:04
자바로 크롤링을 하려면 SSR - 서버사이드 렌더링 인 경우 url 에 로 http 리퀘스트 해서 받아온 응답을 element 를 찾아 파싱만 하면 된다. 하지만 문제가 CSR - 클라이언트사이드 렌더링 의 경우 크롤링을 하기 어렵다. 뿐만 아니라 로그인 및 기타 인증이 필요한 사이트일 수록 크롤링을 하기 어렵다. 그래서 브라우져를 프로그래밍으로 조작해서 필요한 데이터만 추출하는 라이브러리를 사용해야 한다. 라이브러리는 Selenium 라이브러리다. Selenium? : Selenium은 주로 웹앱을 테스트하는데 이용하는 프레임워크이다. ebdriver라는 API를 통해 운영체제에 설치된 Chrome등의 브라우저를 제어하게 된다. spring boot 를 활용해서 maven 으로 pom.xml 에 다음과..
-
자바 상속Java/Java 기본 및 이론 2021. 3. 7. 22:55
자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 메소드 디스패치 (Dynamic Method Dispatch) 추상 클래스 final 키워드 Object 클래스 상속이란 기반이 되는 상위 클래스의 특성을 하위 클래스에게 적용하고, 거기에 더해 필요한 특성을 추가 확장하는 방식을 말한다. 상속의 목적은 기존 기능의 확장과 코드의 재사용이다. 상속의 장점 하위클래스에 상위 클래스를 extend 만 하여도 코드가 자동적으로 재사용된다는 것이며, 확장성을 위해 변경하여야 할 부분의 로직만 overiding을 사용하여 재정의도 가능하다. 상속 시 단점 상속을 사용하여 코드를 재사용하느 경우에는 기존 상위 클래스가 어떻게 작성되었는지 고려해야 한다. 상속의 특성상 상위 클래스와 하위 클래스가 결합상태..
-
[java] 자바 서버 ip 가져오기Java/Java Library 2021. 2. 25. 18:13
public static String getIp(){ String result = null; try { result = InetAddress.getLocalHost().getHostAddress(); } catch (UnknownHostException e) { result = ""; } return result; } InetAddress.getLocalHost().getHostName() 을 사용하면 서버에서 hostname 을 찾는것과 같은 이름을 찾는다.
-
XJC(JAXB binding compiler) 로 .xsd 파일을 java 객체로 변환하기Java/Java Library 2021. 2. 11. 22:49
jaxb - Java Architecture for XML Binding jaxb 라는 xml 를 바인딩하는 라이브러리가 있다. 한마디로 파싱 관련 라이브러리다. JAXB 는 XML 문서정보를 거의 동일한 구조의 오브젝트로 직접 매핑한다. 스키마 컴파일은 xjc 라는 명령어로 수행한다. xsd 라는 xml 로 정의된 문서를 java 오브젝트로 컴파일 하는 작업이다. XJC(JAXB binding compiler) 툴 xjc 도구를 사용하여 XML 스키마 파일을 전체 어노테이션 지정된 Java 클래스로 컴파일할 수 있다. xjc는 JDK bin 디렉터리에 포함되어 있다. 확인하기 1) 내 java jdk 경로 EX) C:\Program Files\Java\jdk1.8.0_191\bin 위 예시 경로에 xj..