[Java] 소수 판별하기
·
Java
1. 소수란?소수(Prime Number)는 컴퓨터 과학과 수학에서 중요한 개념 중 하나입니다. 소수는 자신과 1 이외의 약수를 가지지 않는 2 이상의 자연수를 의미하며, 암호학, 수론 등 다양한 분야에서 활용됩니다. 그러나, 큰 수에 대해 소수를 판별하는 것은 계산 비용이 많이 들 수 있습니다. 따라서, 소수 판별 알고리즘의 효율성을 높이는 것이 중요합니다. 이번 포스팅에서는 자바를 사용하여 소수를 효과적으로 판별하는 최적화된 알고리즘을 공유합니다. 이 방법은 소수를 빠르고 정확하게 찾을 수 있도록 설계되었으며, 특히 큰 수에 대해 뛰어난 성능을 보입니다. 2. 소수 판별 알고리즘 구현아래는 자바로 구현한 소수 판별 함수입니다. 이 함수는 다양한 최적화 기법을 통해 계산량을 줄이고, 효율적으로 소수를 ..
[Java] 우선순위큐(PriorityQueue) 사용 방법
·
Java
자바의 **우선순위 큐 (Priority Queue)**는 큐와 비슷하게 요소들을 저장하고 꺼낼 수 있는 자료 구조입니다. 하지만 일반 큐와 달리, 요소들이 우선순위에 따라 정렬됩니다. 즉, 요소를 꺼낼 때는 큐에서 가장 높은 우선순위를 가진 요소가 먼저 나옵니다. 자바에서는 PriorityQueue 클래스가 이 기능을 제공합니다. 기본적으로 자연 순서에 따라 정렬되며, 사용자 정의 비교자를 사용하여 커스텀 우선순위를 지정할 수도 있습니다. 우선순위큐의 간단한 사용방법에 대해 알아보겠습니다. 1. 선언PriorityQueue pq = new PriorityQueue(); // 정순 PriorityQueue pq = new PriorityQueue(Collections.reverseOrder())..
[Java] The type com.fasterxml.jackson.core.JsonProcessingException cannot be resolved. It is indirectly referenced from required .class files
·
Java
"The type cohttp://m.fasterxml.jackson.core.JsonProcessingException cannot be resolved. It is indirectly referenced from required .class files" 오류는"new ObjectMapper().writeValueAsString(obj)" 소스 작성 시, jackson-databind 와 jackson-core 가 classpath 에 잘 등록되어 있는지 확인하면 됩니다.최신 버전은 Maven Repository 사이트에서 다운로드 가능합니다.- jackson-databind - jackson-core감사합니다.
[Java] JSch 로 SFTP 파일 전송하기
·
Java
오늘은 JSch 를 이용하여 특정 사이트에서 이미지를 다운받아 SFTP 로 이미지 전송하는 간단한 소스를 작성해보겠습니다.1. 라이브러리 추가implementation 'com.jcraft:jsch:0.1.55'implementation 'commons-net:commons-net:3.10.0' 2. 이미지 파일 체크특정 사이트에 이미지 파일이 있는지 체크합니다.public boolean existFile(String checkUrl) { HttpURLConnection connection = null; try { URL url = new URL(checkUrl); connection = (HttpURLConnection) url.openConnection(); co..
[Java] Zip 파일 내부 정보 가져오기
·
Java
zip 파일을 압축해제 전, 압축 파일 내부 파일의 정보를 확인 할 수 있습니다. 간단하게 파일명과 최종수정일을 조회하는 소스를 작성해볼게요.1. 라이브러리 추가implementation 'org.apache.commons:commons-compress:1.26.1'implementation 'commons-io:commons-io:2.15.1'Maven Repository 에서 각각 최신 버전을 다운로드 또는 빌드도구를 통해 설치하면 됩니다. 2. 소스작성import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;impo..
[Java] 디자인 패턴 종류
·
Java
오늘은 디자인 패턴의 종류에 대해 간략하게 알아보겠습니다.디자인 패턴설명사용예어댑터호출당하는 쪽의 메소드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호출하는 패턴JDBC, JRE프록시객체를 실제로 부르는 게 아닌, 프록시 객체를 부르고 나중에 프록시 객체가 실제 객체를 호출하는 패턴AOP데코레이터기존 뼈대(클래스)는 유지하되, 이후 필요한 형태를 꾸며가는 패턴상속싱글턴클래스의 인스턴스(객체)를 하나만 만들어 사용하는 패턴 옵저버변화가 일어났을 때 미리 등록된 다른 클래스에 통보해주는 패턴Event Listner파사드여러개의 객체와 실제 사용하는 서브 객체 사이에 복잡한 의존관계가 있을 때, 중간에 facade라는 객체를 두고, 여기서 제공하는 interface만을 활용하여 기능을 사용하는 패..
[Java] 이분탐색 예제
·
Java
이분탐색이란 중간지점을 기준으로 데이터를 반씩 나눠서 탐색하는 알고리즘 입니다. 이분탐색의 시간 복잡도는 logN 으로 표현이 가능합니다. 아래는 이분탐색의 예제를 소스로 구현한 것 입니다.package search;public class SearchAlgorithm { public static int binarySearch(int[] array, int target) { int left = 0; int right = array.length - 1; while (left  추가로, 이분탐색을 할땐 반드시 배열이 정렬되어 있어야 합니다.
[Java] JVM GC 프로세스
·
Java
GC(Garbage Collection) 이란 더이상 사용하지 않는 객체를 메모리에서 삭제하는 작업입니다.GC 의 처리과정을 이해하려면 우선 JVM 메모리 구조에 대해 알 필요가 있습니다.  JVM 의 동작 과정은 아래와 같습니다.1. Java Compiler 에 의해 .Java 파일은 Byte Code(.class) 파일로 변환됩니다.2. JVM 의 Class Loader 는 Byte Code(.class) 파일을 JVM 내로 로드하고 Link 작업을 통해 일련의 작업을합니다.3. 이후 실행 엔진을 통해 Byte Code 들을 명령어 단위로 실행시킵니다.  위 구조로 인해 JVM은 OS와 플랫폼 종류에 의존적이지 않고 독립적으로 Java 프로그램이 실행됩니다. 또한 자동으로 메모리 관리를 해주는데 아래..
[Java] 객체지향(OOP) 설계와 특징
·
Java
객체 지향(Object-Oriented Programming) 설계와 특징에 대해 기록한 페이지입니다.◆ SOLID 원칙 : 객체지행 프로그래밍의 5가지 설계 원칙1. 단일 책임 원칙(SRP, Single Responsibility Principle)  -> 하나의 모듈은 하나의 책임을 가져야 한다는 원칙   2. 개방 폐쇄 원칙(OCP, Open Closed Principle)  -> 확장은 열려있고, 수정은 닫혀있어야 한다는 원칙   3. 리스코프 치환 원칙(LSP, Liskov Substitution Principle)  -> 하위 타입은 상위 타입을 대체할 수 있어야 한다는 원칙   4. 인터페이스 분리 원칙(ISP, Interface Segregation Principle)  -> 용도에 맞는 ..
[Java] Enum 활용
·
Java
Enum 은 'Enumeration' 의 약자로 열거, 목록 이라는 뜻을 가지고 있습니다. Enum 을 사용하면 코드가 단순해지고 인스턴스의 생성과 상속을 방지하여 상수값의 안전성이 보장이 됩니다. 아래는 인증방식을 Enum 으로 구현한 소스입니다.@RequiredArgsConstructorpublic enum LoginType { GOOGLE("googleLogin"), NAVER("naverLogin"), KAKAO("kakaoLogin"); public final String value; // 파라미터 주입 public static LoginType getValue(final String type){ if(StringUtils.isEmpty(type)){ return null..
제로빈
'Java' 카테고리의 글 목록