본문 바로가기
728x90
반응형

java21

[Java] POI 라이브러리로 엑셀에 이미지 삽입하기 canvas로 이루어져 있는 차트 이미지를 엑셀 파일에 삽입해보겠습니다. toDataURL()을 사용하여 원하는 영역을 base64 문자열로 읽어 back단에 데이터를 전달합니다. const imageData = $("#load-graph").find("canvas")[0].toDataURL("image/png", 0.5); 만약 canvas로 그려지지 않은 영역을 이미지로 저장하고 싶다면, html2canvas.js 라이브러리를 사용하여 html 영역을 canvas로 변경하면 됩니다. html2canvas($("#chart")[0]).then(function(canvas) { const imageData = canvas.toDataURL("image/png"); ... 엑셀에 이미지 삽입하는 부분입니다.. 2021. 5. 7.
[java] Enum Hierarchy(계층 구조) getChildren, getParent 간단한 계층 구조 구현을 위해 Enum을 활용할 수 있습니다. @Getter public enum EnumHierarchy { A("에이", null), AA("에이에이", A), AB("에이비", A), AC("에이씨", A), ACA("에이씨에이", AC), ACB("에이씨비", AC), AD("에이디", A), B("비", null), C("씨", null), D("디", null), DA("디에이", D), ; private String name; private EnumHierarchy parent; private List children = new ArrayList(); EnumHierarchy(String name, EnumHierarchy parent) { this.name = name; t.. 2021. 2. 2.
[java] 쿠키 생성, 삭제와 browser's cookie max size JAVA 쿠키 생성, 삭제 방법을 알아보기 전에 브라우저의 쿠키 사이즈 제한을 확인해봅시다. cookies are usually limited to 4096 bytes and you can't store more than 20 cookies per site. By using a single cookie with subkeys, you use fewer of those 20 cookies that your site is allotted. In addition, a single cookie takes up about 50 characters for overhead (expiration information, and so on), plus the length of the value that you store .. 2021. 1. 8.
[Java8] 중복 데이터 제거를 위한 Stream distinct 중복 데이터를 제거하기 위해 Stream distinct를 사용합니다. 동일한 객체의 판단하는 기준은 Object.equals(Object)의 결과 값이다. String 객체의 경우 equals()가 이미 구현되어 있습니다. ​ - Stream.distinct() : Returns a stream consisting of the distinct elements (according to Object.equals(Object)) of this stream. List strings = Arrays.asList("hello", "world", "hello", "java", "hello"); strings.stream().distinct().forEach(System.out::println); // "hello".. 2020. 10. 31.
[java] StringBuffer getChars (Chars to String) https://www.tutorialspoint.com/java/lang/stringbuffer_getchars.htm Java.lang.StringBuffer.getChars() Method - Tutorialspoint Java.lang.StringBuffer.getChars() Method Description The java.lang.StringBuffer.getChars() method copy the characters from this sequence into the destination character array dst. The first character to be copied is at index srcBegin. The last character to www.tutorialspoin.. 2020. 10. 31.
[java] 임시 비밀번호 생성 (Random vs SecureRandom vs RandomStringUtils) java.util.Random 클래스는 난수를 생성할 때 seed값으로 시간을 이용합니다. 그래서 동일한 시간에 Random 클래스를 사용하여 난수를 사용하면 동일한 값이 리턴됩니다. 예측 가능한 난수를 사용하는 경우 공격자가 SW에서 생성되는 다음 숫자를 예상하여 시스템을 공격할 수 있습니다. 시큐어코딩 가이드 - SW 보안약점 47개 항목 중 적절하지 않은 난수 값 사용 (Use of Insufficiently Random Values)에 해당됩니다. 반면에 java.security.SecureRandom 클래스는 예측할 수 없는 seed를 이용하여 강력한 난수를 생성합니다. 임시 비밀번호 생성 getRamdomPassword(10)를 호출하면 10 글자의 임시비밀번호가 생성됩니다. import ja.. 2020. 10. 31.
[java] 예외처리 Exception handling 이 글은 Java의 정석 (남궁성/도우출판) 기반으로 작성되었습니다. 1. 프로그램 오류 컴파일 에러(compile-time error): 컴파일할 때 발생하는 에러 런타임 에러(runtime error): 실행할 때 발생하는 에러에러(error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류예외(exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 (처리 가능한 오류) 2. 예외처리의 정의와 목적 에러(error)는 어쩔 수 없지만, 예외(exception)는 처리해야 합니다. 예외처리(exception handling)는 프로그램 실행 시 발생할 수 있는 예외의 발생에 대한 코드를 작성하는 것입니다. 예외처리의 목적은 프로그램의 비정상 종료를 막고, 정상적인 실행상.. 2020. 10. 11.
[java] 자바 컴파일 : 향상된for이 while로 변경? java 파일을 build 후 class 파일을 디컴파일러 해본적이 없어서 몰랐는데 향상된 for문이 빌드 후 while문으로 변경된다고 해서 컴파일에 대해 끄적여보겠습니다. ​ ​ 일단 자바의 컴파일 절차는 이렇습니다. 자바 소스 코드 파일(.java) -> javac 컴파일러 -> JVM 바이트코드(.class) ​ 컴파일의 세부 단계는 어휘 분석, 구문 분석, 의미 분석, 중간 코드 생성, 중간 코드 최적화로 구성됩니다. ​ 향상된 for문이 빌드 후 while문으로 변경되는 것은 중간 코드 최적화 때문입니다. 중간 코드 최적화(Code Optimization)는 중간 코드가 더 효율적인 기계어로 변환되도록 최적화하는 과정이 수행됩니다. ​ 1.핍홀(Peephole) 최적화 중복 명령어 제거 도달 .. 2020. 10. 11.
[java] 자바에서 split("|") 사용하기 - 이스케이프 처리 Splitting string with pipe character ("|") ​ 아무생각없이 자바 내장함수 split로 "|" 문자를 기준으로 자르다가 이 글을 쓰게됐습니다. 우선 아래 코드를 보시면, String str = "abc|def|ghk"; String[] s = str.split("|"); for (int i=0; i 2020. 10. 11.
[mybatis] insert/update 쿼리 실행 후 결과값 가져오기 (useGeneratedKeys, keyProperty, selectKey) insert/update 등을 실행하고서 결과를 확인해야 하는 상황이 생깁니다. 다음은 insert 되는 Auto Increment 값(mysql 등)이나 sequence 값(oracle 등)을 조회하는 방법입니다. useGeneratedKeys, keyProperty 옵션 사용하는 데이터베이스가 Mysql과 같이 자동생성 키를 지원한다면 useGeneratedKeys, keyProperty 옵션을 통해 insert 된 데이터의 key 값을 리턴 받을 수 있습니다. useGeneratedKeys : (insert, update에만 적용) 자동생성 키를 받을때 true로 설정한다. (default: false) keyProperty : 리턴 될 key property 설정. 여러개를 사용한다면 ,(콤마)를.. 2020. 10. 9.
728x90
반응형