반응형 Programing/JAVA112 Java Optional 알짜만 빼먹기 사용법/등장이유 Java Optional 알짜만 빼먹기 사용법/등장이유 이번 포스팅에서는 Java Optional에 대해서 알아보도록 하겠습니다. 언제? 왜? Optional 은 Java 8에서 등장을 하게 됩니다. Java 8에서는 Optional 외에 default method, lambda, stream 등 다양한 신규 문법이 등장했습니다. 이는 개인적인 생각으로, 함수형 프로그래밍을 하기 위해 등장했다고 생각합니다. Optional 은 Null Pointer Exception이 발생하지 않도록 하는 Wrapper class로 Null인 value에 접근하더라도 Null Pointer Exception이 발생하지 않습니다. Optional 객체 생성 Optional은 empty(), ofNullable(), of(.. Programing/JAVA 2022. 10. 3. Java Collection 반복문 정리 for, while, iterator, stream Java Collection 반복문 정리 for, while, iterator, stream 이번 포스팅에서는 Java Collection의 반복문에 대해서 알아보겠습니다. Array : 배열 배열의 반복문 1. 기본 for문 Integer num[] = new Integer[] {1,2,3,4,5}; for(int i=num.length-1; i>=0; i--) { System.out.println(num[i]); } 2. 확장 for문 Integer num[] = new Integer[] {1,2,3,4,5}; for(Integer number : num) { System.out.println(number); } 3. while Integer num[] = new Integer[] {1,2,3,4,5.. Programing/JAVA 2022. 9. 29. Java GC Gargabe Collection 알짜만 빼먹기 / 알고리즘 / 종류 / 모니터링 VisualVM Java GC Garbage Collection 알짜만 빼먹기 / 알고리즘 / 종류 / 모니터링 VisualVM 이번 포스팅에서는 제가 알고있는 Garbage Collection에 대해 정리하는 시간을 갖어볼까 합니다. GC (Garbage Collection) 란? GC는 JVM에서 자동으로 Heap 메모리를 관리하는 기능입니다. GC 의 알고리즘 GC-Root로 부터 참조되는 객체와 그 Reachable 객체가 참조하는 객체를 찾아서 Marking 하고 Marking 과정이 끝나면 Marking되지 않은 UnReachable 객체를 메모리에서 해제(Sweep), 살아남은 영역을 조각 모음(Compact) 하는 Mark and Sweep Compact 알고리즘을 기본으로 사용합니다. Mark and S.. Programing/JAVA 2022. 5. 12. Springboot MVC Filter, Interceptor, AOP 차이 실행시점 구현방법 Springboot Filter, Interceptor, AOP 차이 실행시점 구현방법 이번 포스팅에서는 Springboot MVC 모델을 활용해 Filter, Interceptor, AOP를 구현해보고 차이점과 실행시점에 대해서 알아보도록 하겠습니다. 우선 Spring MVC에서 Filter, Interceptor, AOP는 실행 시점의 차이가 있습니다. Dispatcher-Servlet 이전과 이후로 나눌 수 있는데, Filter는 Dispatcher-Servlet 이전 (Web Container가 관리), Interceptor 와 AOP는 Dispatcher-Servlet 이후에 동작합니다. (Spring Container가 관리) 그래서 Filter는 Spring Bean에 접근할 수 없고, Sp.. Programing/JAVA 2022. 5. 3. JAVA FTP storeFile 반응 없을 시 해결 방법 Active / passive 모드 정리 JAVA FTP storeFile 반응 없을 시 해결 방법 Active / passive 모드 정리 Java 에서 FTP에 파이일을 업로드 할 때 사용하는 메소드가 storeFile 입니다. 사용하기 위해서는 commons-net 의 의존성을 추가해주셔야 합니다. ex) gradle project implementation group: 'commons-net', name: 'commons-net', version: '3.6' 커넥션이나 워킹 디렉토리 변경에는 아무 문제가 없었습니다. 그런데 sotreFile를 하면 아무 동작을 하지 않는 문제가 발생해습니다. boolean storeResult = ftpClient.storeFile(saveFileNm, inputStream); saveFileNm 은 업.. Programing/JAVA 2022. 1. 19. mybatis 그리드 멀티 정렬 방법 order by many fields with dynamic query mybatis 그리드 멀티 정렬 방법 order by many fields with dynamic query 복수의 컬럼으로 ORDER BY 하는 방법을 알아보겠습니다. ORACLE 기준입니다. 타 DB의 경우 알맞게 쿼리부분을 수정하세요. 우선 프론트에서는 배열로 정렬할 컬럼과 정렬 방식을 전달합니다. [ajax parameter object structure] sorting : [ {column : '정렬할 컬럼명1', order: "정렬방식"}, {column : '정렬할 컬럼명2', order: "정렬방식"} ] 예를들어 그리드의 헤더를 클릭하면 "", "desc", "asc" 순으로 값이 순환되게 됩니다. 정렬방식이 "" 라면 배열에서 제거 합니다. (splice) 쿼리에서는 if, foreac.. Programing/JAVA 2021. 10. 12. Java 대용량 데이터 DB 처리 방법, batch Java 대용량 데이터 DB 처리 방법, batch 많은 양의 데이터를 insert 하거나 update 해야 할 때 mybstis dynamic query를 사용하게 되면 메모리 에러가 발생할 수 있습니다. 이럴 때 사용할 수 있는 방법이 batch를 활용한 방법인데요. 이번 포스팅에서는 그 사용법과 mybatis dynamic query와 비교를 해보도록 하겠습니다. 우선 프론트에서 Json Array로 다량의 데이터를 받아 데이터를 update 한다고 하면 아래와 같이 dynamaic query를 활용할 수 있습니다. UPDATE 테이블명 SET 컬럼 = #{item.column} WHERE 테이블키 = #{item.key} 이 방법은 반복문을 돌면서 update 쿼리를 붙여 PL/SQL 문을 만들어.. Programing/JAVA 2021. 10. 8. JVM 모니터링 Java 메모리 CPU 모니터링 프로그램 VisualVM JVM 모니터링 Java 메모리 CPU 모니터링 프로그램 VisualVM Java application 의 메모리와 CPU 사용량을 모니터링 해야 할 때가 있습니다. Heap Memory 나 PermGen Memory Error 가 발생을 하거나 메모리 누수를 체크 해야 할 경우죠. 이럴 때 사용하는 것이 VisualVM 입니다. VisualVM은 아래의 Link를 통해서 다운로드 받으실 수 있습니다. Link : visualvm.github.io/download.html VisualVM: Download First Steps Unzip the downloaded archive. The archive already contains the top-level visualvm directory. Start V.. Programing/JAVA 2021. 4. 21. Java 병렬처리를 위한 RecursiveAction Java 병렬처리를 위한 RecursiveAction 데이터양이 많을 경우 병렬로 처리를 할때 사용하는 클래스가 RecursiveAction 입니다. 같은 기능을 하지만 리턴값이 있을 때는 RecursiveTask 클래스를 활용합니다. RecursiveTask의 sample code는 다음 포스팅에서 알아보도록 하고, 이번 포스팅에서는 RecursiveAction에 대해서 알아보도록 하겠습니다. 병렬처리를 위한 클래스에서 RecursiveAction 을 extends 받습니다. 그럼 compute 메소드가 Override되는데 이 메소드 내에서 병렬처리를 하도록 task를 특정 조건에 따라 구분하여 줍니다. 샘플 코드를 보시죠. [실행코드] RecursiveTest task = new RecursiveT.. Programing/JAVA 2020. 8. 13. java.util.ConcurrentModificationException 원인 및 처리 방법 java.util.ConcurrentModificationException 원인 및 처리방법 java.util.ConcurrentModificationException 이 발생하는 원인과 처리방법에 대해 알아보겠습니다. 해당 Exception 은 대부분 Collection 객체에 remove 메소드 호출 시 발생을 합니다. List 의 경우 List list = new ArrayList(); list.add(1); list.add(2); list.add(3); for(Integer i : list){ list.remove(i); } Set 의 경우 Set set = new HashSet(); set.add(1); set.add(2); set.add(3); for(Iterator itr = set.iter.. Programing/JAVA 2020. 7. 24. Java 로컬과 tomcat 배포 시 한글 인코딩 문제 해결 Java 로컬과 tomcat 배포 시 한글 인코딩 문제 해결 발생 문제. 한글을 제외하고 바이트 연산을 하는 로직이 있는데, 로컬에서는 정상 동작 하지만, Tomcat 배포 시 연산의 결과가 다른 문제가 발생. 일반적인 톰캣의 인코딩 설정은 아래의 Link를 참고하세요. Link : https://aljjabaegi.tistory.com/152 spring 서버 한글깨짐 문제 여러가지 해결 방법 spring 서버 한글깨짐 문제 여러가지 해결 방법 .jsp 파일에서는 한글이 깨지지 않지만 서버단(.java)으로 파라미터가 넘어가면 한글이 깨지는 경우가 있다. 이클립스 에서 한글깨짐을 해결하는 방법에는 아래와.. aljjabaegi.tistory.com Java 의 바이트 연산 로직에서 아스키코드로 한글을 .. Programing/JAVA 2020. 1. 14. Java 진짜 모든 공백 제거 정규식 Remove All Whitespace in Java regular expression Java 진짜 모든 공백 제거 정규식 Remove All Whitespace in Java regular expression - Remove Space (스페이스 공백 제거) String str = "공백 공백 공백".replaceAll("\\p{Z}", ""); - Remove Tab (탭 제거) String str = "탭 탭탭".replaceAll("\\t", ""); - Remove Enter (개행문자 제거) String str = "엔터를 제거 해라".replaceAll("(\r\n|\r|\n|\n\r)", ""); - Remove All Whitespace String str = "공백 공백탭탭엔 터".replaceAll("(\r\n|\r|\n|\n\r|\\p{Z}|\\t)", ""); Programing/JAVA 2019. 11. 26. Jedis subscribe 구현 시 다음 로직 실행 안되는 문제 Jedis subscribe 구현 시 다음 로직 실행 안되는 문제 단일로 subscribe 할 경우에는 아무 문제 없이 잘 수행됩니다. 하지만, 2개 이상의 subscribe를 하거나 별도의 로직을 subscribe 다음에 구현 할 때는 문제가 발생합니다. 아래서 예시로 들 내용 이전에 아래의 Link를 참고하세요. Link : SpringBoot Redis(Jedis) 활용 Publish/Subscribe pub/sub 구현 방법 SpringBoot Redis(Jedis) 활용 Publish/Subscribe pub/sub 구현 방법 SpringBoot Redis(Jedis) 활용 Publish/Subscribe pub/sub 구현 방법 [Spec] IDE : Eclipse Mars.2 Release .. Programing/JAVA 2019. 11. 5. SceneBuilder JavaFX 연동하기. 보다 편한 GUI 생성 SceneBuilder JavaFX 연동하기. 보다 편한 GUI 생성 앞선 포스팅에서 JavaFX 설치 방법을 알아보았습니다. Link : JavaFX java GUI 라이브러리 이클립스 설치방법 JavaFX java GUI 라이브러리 이클립스 설치방법 JavaFX java GUI 라이브러리 이클립스 설치방법 윈도우용 GUI 응용프로그램을 만들기 위한 라이브러리인 JavaFX 플러그인 설치방법을 알아보겠습니다. 기존에 있던 AWT 나 Swing 보다 편리하고 뛰어납니다. 이클립.. aljjabaegi.tistory.com 이제 GUI 작업을 보다 편리하게 하기위해서 SceneBuilder와 연동해보겠습니다. 아래 사이트로 이동해 SceneBuilder 를 다운받습니다. https://www.oracle... Programing/JAVA 2019. 10. 22. Java Thread 사용방법, Thread에 대해 알아보자 자바 스레드 Java Thread 사용방법, Thread에 대해 알아보자 자바 스레드 Thread에 대해서 알아보기 전에 프로그램과 프로세스의 개념을 잡고 넘어가겠습니다. 프로그램이란 사용자가 실행할 어플리케이션, 즉 하드디스크에 저장된 파일입니다.(실행 전) 프로세스는 이 프로그램을 실행해 메모리에 적재된 인스턴스를 말합니다.(실행 후) 이해가 쉽게 예를 들어보겠습니다. 지금 이 화면을 보고 있는 브라우져도 하드디스크 내 어떠한 경로에 설치되어 있습니다. 브라우저를 실행하기 전엔 이것은 프로그램입니다. 그런데 아이콘을 더블클릭하거나 실행을 하게 되면 프로세스가 되는 것이죠. 그렇다면 쓰레드는 무엇일까요? 쓰레드는 프로세스가 어떠한 작업을 할때 할당 받은 자원(메모리)를 이용하는 작업의 단위를 말합니다. 이제 이 작.. Programing/JAVA 2019. 10. 21. 이전 1 2 3 4 5 ··· 8 다음 💲 추천 글 반응형