본문 바로가기
728x90
반응형

java26

[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.
[mybatis] $ 와 # 의 차이 SQL SELECT * FROM test WHERE id = 'test' # ex) # 값으로 지정할때 많이쓰인다. SELECT * FROM test WHERE id = #{id} $ ex) $ 는 값으로 지정할때 '' (홑따옴표)를 써야한다. 쿼리문작성시 문자열 입력부분에는 가급적 사용되지 않는다. SELECT * FROM test WHERE id = ${id} 차이점 결론 : '(홑따옴표) 붙느냐 안붙느냐 의 차이 2020. 10. 8.
728x90
반응형