Languages | Frameworks/Java

    Java) 2차원 배열 오름차순 정렬(Arrays.sort 람다식)

    Java Array Sort 자바에서 1차원 배열을 오름차순 하기위해서는 Arrays.sort() 메서드에 인자로 배열을 넣어서 사용하면 되지만, 2차원 배열을 오름차순 하려면 Arrays.sort에서 람다식을 이용하여 구현할 수 있다. 1차원 배열(int) 정렬 - 오름차순, 내림차순 여기서 잠깐 1차원 배열(정수형) 오름차순, 내림차순 정렬하는 방법에 대해 코드로 간단히 알아보자. # 오름차순 정렬 int[] arr = {1, 26, 17, 25, 99, 44, 303}; Arrays.sort(arr); >>>>>결과: [1, 17, 25, 26, 44, 99, 303] 1차원 int형 배열의 오름차순 정렬은 비교적 간단하지만, 내림차순 정렬은 상당히 까다롭다. int형 배열이 아니라면, 아래와 같이..

    Java) HashMap의 computeIfAbsent에 대해(feat. getOrDefault)

    getOrDefault 우리가 흔히 알고 있는 map의 메서드중 getOrDefault 메서드는 키값이 없으면 두번째 인자를 반환하는 것으로 알고있다. 평소에 코딩 문제를 풀때, Map 같은 map에 key, value를 넣어줄 때 해당 메서드를 이용해, key가 존재한다면 해당 key의 value를 가져와서 +해주고, key가 존재하지 않는다면 default값에 + 해서 값을 넣어줬다. 예시 map.put("key", map.getOrDefault("key", "default값") + "더해줄 값"); 하지만 value가 문자열 또는 정수형이 아닌 리스트일 때는 어떻게 값을 추가해줘야 할까? Map strListMap = new HashMap(); // 기본값 넣기 List list = strListM..

    Java) List와 ArrayList의 차이?

    List list = new ArrayList (); 아무 생각없이 위 구조의 형식으로 항상 리스트를 생성하였었는데, 문득 List와 ArrayList의 차이가 뭐지? 하고 궁금해졌다. 그래서 검색을 해봤더니, ArrayList는 class고, List는 interface다. interface는 공통되는 메서드를 추출해 놓은 클래스로 생각하면 된다. 라는 글을 보았는데 궁금증이 해소되지 않았고 더 검색을 해보았다. ArrayList list = new ArrayList (); List list = new ArrayList (); 위의 두 코드는 모두 같은 결과를 도출하지만, List를 사용해 ArrayList를 생성하는 것은 유연성에서 효과를 볼 수 있다고 합니다. 그럼 어떤 유연성에서 효과를 본다는 말..

    JPA, JPQL

    1. JPA와 JPQL JPA를 사용하면 엔티티 객체를 중심으로 개발하는데, 단건으로 가져오기에는 매우 편하다. 하지만 문제는 검색 쿼리쪽인데, 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색한다. 그에 따라, 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능하고 애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요하다. JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공하는데, SQL과 비슷한 문법, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN을 지원한다. JPQL은 엔티티 객체를 대상으로 쿼리하고, SQL은 데이터베이스 테이블을 대상으로 쿼리한다. SQL을 추상화해서 특정 데이터베이스 SQL에 의..

    암호화 알고리즘 종류와 추천(SHA, PBKDF2, Bcrypt) + Java 적용 샘플

    암호화의 종류 SHA-2(Secure Hash Algorithm 2) 미국 NSA에서 설계한 암호화 해시 함수. digest size는 224, 256, 384or512 bit로 6개의 해시함수로 구성되어졌음. GPU를 이용한 연산속도가 매우 빠르기 때문에 password 암호화에 권장되지 않음 GPU 연산속도가 빠를수록 공격자의 하드웨어를 통한 오프라인 brute force에 더 취약하다. 빠른 해시를 사용하여 암호화를 진행시 공격자는 오프라인 공격으로 초당 수십억개의 해시를 계산할 수 있다. PBKDF2(Password-Based Key Derivation Function) pbkdf2_hmac(해시함수(sha256..), password, salt, iteration, DLen) 해시함수의 컨테이너..