본문 바로가기
728x90

[JAVA]88

자바에서 중복 요소를 남김없이 모두 제거하는 방법 💡 자바에서 리스트의 중복 요소를 제거하는 대표적인 방법에는 두 가지가 있다. 1. Set을 이용한 중복 제거 List list = new ArrayList(Arrays.asList("A", "B", "A", "C", "B")); Set setWithoutDuplicates = new LinkedHashSet(list); List listWithoutDuplicates = new ArrayList(setWithoutDuplicates); System.out.println(listWithoutDuplicates); // 출력: [A, B, C] Set은 자바 컬렉션 프레임워크의 인터페이스 중 하나로 중복된 요소를 허용하지 않고 순서를 보장하지 않는 자료구조이다. 중복을 허용하지 않기 때문에 동일한 요소가 .. 2024. 3. 21.
JPA Specification을 이용하여 다중 조건 검색 로직을 구현해보자. 🤔 다중 조건 검색이란? 다중 조건 검색이란 카테고리 검색, 상세 검색 등과 같이 쇼핑몰 등에서 여러 필터 조건으로 검색된 결과를 축소시켜 사용자가 원하는 결괏값만을 도출하기 위해 사용한다. 이를 어떻게 구현할 수 있을까 고민해보면 한 가지 방법으로 귀결되는데 바로 '동적 쿼리'이다. 사용자가 원하는 필터링에 맞춰 조회 쿼리를 날려주면 되는 것인데 결국 매 요청마다 쿼리문이 달라지게 된다는 이야기이므로 Jpa에서 제공하는 기본 메서드와 같이 정해진 쿼리에 value만 다르게 보내는 것과는 다른 방법을 사용해야 한다. 📜 테스트에 사용될 View member 테이블과 team 테이블에서 추출하여 만든 view이다. view나 테이블 구조에 대해 자세히 알고 싶다면 이 글을 참고하자. 💡 대표적인 방법 세 .. 2024. 1. 31.
자바에서 AES 암호화 구현하기 📌 AES (Advanced Encryption Standard) AES는 128비트, 192비트, 256비트의 키 크기를 지원하는 블록 암호화 알고리즘이다. 안전성과 성능을 균형 있게 제공하기 위해 다양한 연산 및 변환 기법을 사용한다. 🤔 대칭키 (Symmetric Key) 암호화란? AES는 대칭키 암호화 방식으로 작동한다. 동일한 키를 사용하여 데이터의 암호화와 복호화를 수행한다는 의미이다. 데이터의 기밀성을 유지하기 위해 비밀 키가 안전하게 공유되어야 한다. 이것이 주된 단점인데 통신 상대 간에 비밀 키 교환의 어려움이 있다. 이를 해결하기 위해 RSA와 같은 공개키를 이용하기도 한다. 📌 블록 암호 운용 방식(Block Cipher Modes of Operation) 블록 암호는 특정한 길이의.. 2023. 10. 9.
자바에서 RSA 키 생성, SHA-256을 활용한 전자서명 구현을 간단하게 따라하고 깊이있게 알아보자. 📌 RSA(Rivest-Shamir-Adleman)란? 암호화와 보안 분야에서 널리 사용되는 공개키 암호화 알고리즘이다. 📌 안전성과 활용 RSA의 안전성은 큰 정수 인수분해 문제에 기반한다. 데이터 보안뿐만 아니라 인증과 디지털 서명 등 다양한 보안 응용 분야에서 활용된다. 현재까지도 널리 사용되며 실생활에서 많이 접하는 보안 프로세스 중 하나이다. 📌 공개키와 개인키 RSA는 공개키와 개인키라는 두 가지 키를 사용한다. 두 키를 이용해 전자서명과 암호화를 구현할 수 있다. 두 키는 서로 페어(짝)를 이룬다. 공개키는 누구에게나 오픈하는 키이다. 공개키로 암호화된 데이터는 개인키로만 해독할 수 있다. 개인키는 키를 생성한 개인만이 가지고 있는 키이며 외부에 절대 노출되어서는 안 된다. 개인키로 서명된 .. 2023. 10. 4.
자바에서 SHA-256 Hashing 구현하기 💡 자바에서 SHA-256 해시 알고리즘으로 해싱하는 방법을 알아보자. ❓SHA-256 SHA-256은 해시 알고리즘 중 하나로, 임의의 길이를 가진 데이터를 입력으로 받아 256비트(32바이트) 길이의 고정된 해시 값을 출력한다. 입력 데이터가 조금만 변경되어도 완전히 다른 해시 값을 생성하기 때문에 변조에 대한 높은 보안성을 제공한다. 충돌 가능성(서로 다른 문자에서 같은 해시값이 나오는 등)이 매우 낮아 데이터 무결성 검사와 비밀번호 저장 등 다양한 보안 용도에 사용된다. 데이터 무결성 검사의 경우, 같은 문자로부터 나오는 해시 값은 같다는 것을 이용하여 메시지의 변조 여부를 확인하는 데에 사용된다. 단방향 함수이므로 일반적으로는 복호화가 불가능하다. ❓자바에서의 SHA-256 자바에서는 impor.. 2023. 9. 3.
자바의 Object 클래스와 equals(), hashCode() 메서드에 대해 알아보자 Object 클래스 자바에서 모든 클래스가 공통으로 가지는 상위 클래스이다. 다르게 말하면 자바의 모든 클래스는 Java.lang.Object 클래스의 하위 클래스이다. 객체를 표현하는 데 필요한 메서드를 제공한다. 클래스가 명시적으로 상위 클래스를 상속하지 않을 경우 컴파일러가 자동으로 Object 클래스를 상속하게 된다. 따라서, 하나의 클래스가 다른 클래스를 상속받는다고 하더라도 올라가다 보면 그 맨 위는 Object 클래스인 것이다. Object Class의 메서드 메서드 명 역할 clone() 객체를 복제하여 새로운 인스턴스를 생성 equals(Object obj) 해당 객체와 매개변수로 전달된 객체를 비교하여 동일한지 여부를 반환 hashCode() 해당 객체의 해시코드 값을 반환 toStri.. 2023. 8. 17.
복합 값 타입 - @Embedded와 private static inner class를 비교해보자. 💡 Java에서 주소 정보와 같은 그룹화할 수 있는 필드를 추가할 때 보통 @Embedded 애너테이션 또는 private static 클래스를 사용한다. 두 접근 방식에는 각각 장단점이 있기 때문에 상황에 맞게 선택하는 것이 좋다. 이 글에서는 각 방식의 사용 시나리오와 그에 따른 장단점을 비교해보겠다. @Embedded 애너테이션 사용 시나리오 @Embedded 애너테이션은 주로 관계형 데이터베이스와 JPA 기반의 구현체에서 사용된다. 주소, 이름 등 공통으로 사용되는 속성을 별개의 클래스로 분리하여 코드의 재사용성과 모듈화를 증가시킬 수 있다. 예시 코드 // Member @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @Document(co.. 2023. 8. 14.
자바에서 대용량 엑셀 데이터를 읽어들이는 ExcelParser를 만들어보자. https://suzuworld.tistory.com/301 자바 프로젝트에서 엑셀 데이터를 읽어들이는 방법(Apache POI Workbook , Sax Parsing) 💡 엑셀 데이터를 자바 프로젝트에 업로드하는 방법을 정리한다. 나는 2 가지 방법을 사용하였고 이를 간단하게 정리하겠다. Apache POI Apache POI는 아파치 소프트웨어 재단에서 만든 라이브러리로 suzuworld.tistory.com 지난 글에서 엑셀 데이터를 자바 프로젝트에 불러와 다루는 방법에 대해 간단히 살펴보았다. 당시에는 한 개의 엑셀 데이터를 csv 파일로 변환하는 작업만 하면 됐기 때문에 SAX 방식에 대해 제대로 살펴보지 않았는데 이번에 회사의 신규 프로젝트에서 엑셀 데이터를 파싱 할 일이 또 생겨 관련 내용.. 2023. 8. 11.
728x90