제네릭(Generic)과 메소드 오버로딩(Overloading)은 자바에서 자주 사용하되는 강력한 기능 중 하나입니다. 하지만 이 두가지가 결합될 때, 컴파일 시점과 런타임 시점에서의 동작 방식에 차이가 생깁니다. 이번 포스팅에서는 간단한 예제를 통해 그 차이를 알아보겠습니다. ※ 제네릭 : 컴파일 시점에 타입을 지정하지 않고, 런타임에 구체적인 타입이 확정되는 방식으로 타입 안정성을 보장합니다. ※ 오버로딩 : 같은 이름의 메서드를 매개변수의 타입이나 개수에 따라 여러 개 정의하고, 호출 시점에 적합한 메서드를 선택하는 기능입니다. 1. 예제 코드class GenericOverloadingExample { public static void main(String[] args) { ne..
1. 소수란?소수(Prime Number)는 컴퓨터 과학과 수학에서 중요한 개념 중 하나입니다. 소수는 자신과 1 이외의 약수를 가지지 않는 2 이상의 자연수를 의미하며, 암호학, 수론 등 다양한 분야에서 활용됩니다. 그러나, 큰 수에 대해 소수를 판별하는 것은 계산 비용이 많이 들 수 있습니다. 따라서, 소수 판별 알고리즘의 효율성을 높이는 것이 중요합니다. 이번 포스팅에서는 자바를 사용하여 소수를 효과적으로 판별하는 최적화된 알고리즘을 공유합니다. 이 방법은 소수를 빠르고 정확하게 찾을 수 있도록 설계되었으며, 특히 큰 수에 대해 뛰어난 성능을 보입니다. 2. 소수 판별 알고리즘 구현아래는 자바로 구현한 소수 판별 함수입니다. 이 함수는 다양한 최적화 기법을 통해 계산량을 줄이고, 효율적으로 소수를 ..
자바의 **우선순위 큐 (Priority Queue)**는 큐와 비슷하게 요소들을 저장하고 꺼낼 수 있는 자료 구조입니다. 하지만 일반 큐와 달리, 요소들이 우선순위에 따라 정렬됩니다. 즉, 요소를 꺼낼 때는 큐에서 가장 높은 우선순위를 가진 요소가 먼저 나옵니다. 자바에서는 PriorityQueue 클래스가 이 기능을 제공합니다. 기본적으로 자연 순서에 따라 정렬되며, 사용자 정의 비교자를 사용하여 커스텀 우선순위를 지정할 수도 있습니다. 우선순위큐의 간단한 사용방법에 대해 알아보겠습니다. 1. 선언PriorityQueue pq = new PriorityQueue(); // 정순 PriorityQueue pq = new PriorityQueue(Collections.reverseOrder())..

"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감사합니다.
오늘은 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..
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..
오늘은 디자인 패턴의 종류에 대해 간략하게 알아보겠습니다.디자인 패턴설명사용예어댑터호출당하는 쪽의 메소드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호출하는 패턴JDBC, JRE프록시객체를 실제로 부르는 게 아닌, 프록시 객체를 부르고 나중에 프록시 객체가 실제 객체를 호출하는 패턴AOP데코레이터기존 뼈대(클래스)는 유지하되, 이후 필요한 형태를 꾸며가는 패턴상속싱글턴클래스의 인스턴스(객체)를 하나만 만들어 사용하는 패턴 옵저버변화가 일어났을 때 미리 등록된 다른 클래스에 통보해주는 패턴Event Listner파사드여러개의 객체와 실제 사용하는 서브 객체 사이에 복잡한 의존관계가 있을 때, 중간에 facade라는 객체를 두고, 여기서 제공하는 interface만을 활용하여 기능을 사용하는 패..
이분탐색이란 중간지점을 기준으로 데이터를 반씩 나눠서 탐색하는 알고리즘 입니다. 이분탐색의 시간 복잡도는 logN 으로 표현이 가능합니다. 아래는 이분탐색의 예제를 소스로 구현한 것 입니다.package search;public class SearchAlgorithm { public static int binarySearch(int[] array, int target) { int left = 0; int right = array.length - 1; while (left 추가로, 이분탐색을 할땐 반드시 배열이 정렬되어 있어야 합니다.

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 프로그램이 실행됩니다. 또한 자동으로 메모리 관리를 해주는데 아래..
객체 지향(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) -> 용도에 맞는 ..
- Total
- Today
- Yesterday