[Java] Math.random()의 취약성과 시큐어 코딩
·
JAVA
현재 진행 중인 프로젝트에서 `Sparrow`를 사용해 웹 취약점 진단을 실시했다.Math.random() 사용이 지적을 받았다. 왜 Math.random()이 보안에 취약한지 정리해 보자. 1.Math.random()1.1 Math.random()의 정의`Math.random()`은 `java.lang.Math` 클래스의 정적(static) 메서드로, `0.0 이상 1.0 미만`의 범위에서 균등하게 분포된 난수를 생성하여 반환한다. 1.2 Math.random()의 특징1) 반환 타입 : `double`2) 특징 : 생성되는 값은 `균등 분포(uniform distribution)`를 따르기 때문에 모든 값이 동일한 확률로 생성된다. 1.3 예제(주사위 게임)코딩을 처음 배울 때 배웠을만한 주사위 게임..
[Java] replaceAll() - 자바 특정 문자 변경 함수
·
JAVA
replaceAll() 문법String newStr = originStr.replaceAll(String regex, String replacement);`regex` : 변경하고 싶은 문자열에 해당하는 정규 표현식(혹은 그냥 문자열)을 넣어주면 된다.`replacement` : 대체할 문자열을 입력하면 된다. `originStr` 문자열에서 `regex`와 일치하는 부분을 모두 `replacement`로 바꿔준다.replaceAll() 예시public class ReplaceAllExample{ public static void main(String[] args){ String str = "나랑드 사이다 우리는 이제 그런 사이다"; str = str.replaceAll("사이다", ..
[Spring Boot 사이드 프로젝트] 4. 정적 리소스(html, css, js) 바로 반영 설정(spring boot devtools)
·
사이드 프로젝트/로또명당
웹디자인을 흔히 1px의 전쟁이라고들 한다.미적인 요소에 있어서 모든 사람은 인간의 영역을 뛰어넘은 매의 눈을 가지기 마련이며, 매우 뛰어난 직감으로 1px의 오차까지 다 잡아내기 때문이다. 디자인은 웹사이트의 첫인상이다. 디자인이 구린 웹사이트는 아무리 기능이 뛰어나도 예선탈락, 서류광탈 할 가능성이 높아지기 때문에 디자인은 정말 중요하다! 물론 디자이너가 아니라면 한계가 있겠지만 본인의 눈에 보이는 구린 요소 정도는 잡고 가야 할 것이다. 그 과정에서 굉장히 많은 수정이 발생하게 되는데, 이때마다 서버를 껐다 켰다 했다가는 소중한 시간이 서버 재기동에 모두 사용되어 버릴 것이다. 소중한 시간을 절약할 수 있도록 해주는 편리한 기능을 잘 사용해보도록 하자. 바로 `Spring boot devtools`..
[Spring Boot 사이드 프로젝트] 3. Thymeleaf Layout 적용 (Tiles 대체)
·
사이드 프로젝트/로또명당
지난 포스팅에 이어 이번에는 `thymeleaf`를 이용해 Layout을 적용해 보겠다.`jsp`를 사용할 때에는 `tiles`를 사용했었다 보니 `thymeleaf`의 문법이 낯설어 약간의 거부감이 들었지만 사용자가 직접 설정할 부분이 현저히 줄어들어 굉장히 편하다는 인상을 받았다.그럼 차근차근 적용을 시작해 보자. 0. 레이아웃 적용 왜 하나?1) 편하다나에게는 가장 중요한 이유라고 볼 수 있겠다. 여러 페이지를 만들다 보면 결국에 공통적으로 들어가야 할 부분이 생기기 마련인데 레이아웃 적용을 안 해놓으면 그때마다 복사 붙여 넣기를 할 수밖에 없다. (사실 복붙이야 개발자의 일상이니까 조금 피곤하고 말면 되기는 한다.)2) 유지보수이게 정말 중요한데, 유지보수에 드는 에너지를 현저히 줄여준다. 100..
[자바 디자인 패턴]의 싱글톤 패턴이란?
·
JAVA
자바의 기본적인 문법을 익히고 나서 개발을 하다 보면 조금 더 높은 수준을 갈망하게 되는데, 그때쯤 뭘 더 배워야 할지 고민하다 보면 정말 많은 것들을 공부해야 된다는 것을 알고 절망에 빠지게 된다. 정말 행복한 고민이 아닌가? 올라갈 수 있는 길이 있다는 사실에 기뻐하며 오늘도 공부해보자. 그중에 하나는 바로 디자인 패턴이다. 내가 만나본 자바 고수들은 모두 디자인 패턴을 중요하게 생각했다. 그들은 이러쿵저러쿵 설명하기보다는 '이 패턴을 사용해 보세요...' 같은 전문가 같은 대화를 나눌 수 있는 사람을 선호했다. 물론 나의 수준은 팩토리 메서드 패턴이요? 들어는 봤는데...? 헤헿..ㅎ 1. 싱글톤 패턴(Singleton Pattern)이란? 싱글톤 패턴은 자바와 같은 객체 지향 프로그래밍 언어에서 ..
[JAVA] VO(DTO) LIST를 특정 필드값으로 정렬하기 + 형변환
·
JAVA
나는 VO(DTO)로 이루어진 List를 List 각 객체의 특정 값으로 정렬해야 했다. 검색으로 알아낸 코드는 이렇다. List list = list.stream() .sorted(Comparator.comparing(CodeVO::getCnt).reversed()) .collect(Collectors.toList()); java stream을 활용한 정렬 방법이다. 정렬하고자 하는 list를 stream()을 이용해 정렬sorted()하는데 정렬 조건이 (Comparator.comparing(CodeVO::getCnt).reversed())인 것이다. CodeVO의 cnt값을 기준으로 내림차순 정렬하는 것이다. 오름차순 정렬을 원한다면 reversed()를 생략하면 되겠다. 여기 까지는 검색으로 빠르..
[백준] 1152번: 단어의 개수 자바(JAVA)
·
카테고리 없음
https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net 풀이 import java.util.Scanner; import java.util.StringTokenizer; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = scanner.nextLine(); scanner.close(); Stri..
[백준] 1085번: 직사각형에서 탈출 자바(JAVA)
·
JAVA/백준(BAEK JOON)
풀이import java.util.Arrays;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int x = sc.nextInt(); //(x,y)에 위치 int y = sc.nextInt(); int w = sc.nextInt(); //직사각형 오른쪽 위 꼭지점(w,h) int h = sc.nextInt(); int[] arr = new int[4]; arr[0] = h-y; arr[1] = w-x; arr[2] = y; arr[3] = x; Arrays.sort(arr); System.out.pr..
[백준] 2884번: 알람 시계 자바(JAVA)
·
JAVA/백준(BAEK JOON)
풀이문제가 어쩌구 저쩌구 엄청 긴데 몇 시, 몇 분을 입력하면 입력한 시간에서 45분을 뺀 뒤 출력해주라는 문제이다.`하루는 24시간`이고 `1시간은 60분`이라는 것을 염두에 두고 문제를 풀면 되겠다.이게 왜 중요하냐면 우리가 평소에 사용하는 십진법과 받아내림이 다르기 때문에 컴퓨터한테 발생할 수 있는 모든 경우의 수에 대한 대처법을 알려줘야한다. 45분을 빼는 계산에서 발생할 수 있는 경우의 수는 이렇다.`M(분)이 45이상일때`  : M(분)에서 45를 빼주기만 하면 된다.`M(분)이 45미만일때` : H(시)에서 1을 빼고 M(분)에 15를 더해주면 된다.(1시간은 60분)`M(분)이 45미만인데, H(시)가 0일때` : H(시)가 0일 경우 23을 출력해주고 M(분)에 15를 더해준다.impor..
그레이트현
'java' 태그의 글 목록