전체 글 234

JMH (JMH 라이브러리를 활용한 Java 코드 성능테스트)

JMH 란?- Java Microbenchmark Harness- Java 공식 성능 측정 도구- OpenJDK 팀에서 만든 라이브러리로, 마이크로 벤치마크를 정밀하게 측정할 수 있게 도와준다.특징- JIT(Just-In-Time) 최적화 고려- 워밍업 시간, 반복 횟수 조정 가능- 평균/최댓값/표준편차 등 정밀 통계 제공- GC와 캐시 등 JVM 영향 최소화 ( 실행 환경 )Gradle 8.10.2Java 17VS CodeWindows 11 ✅ Gradle 프로젝트 생성 더보기VS Code 에서  단축키  Ctrl+Shift+PCreate Java Project 선택 Gradle 선택 Groovy 선택프로젝트명 입력   ✅ build.gradle 설정/* * This file was generated ..

IT/JAVA 2025.04.11

ArrayList vs LinkedList

|  컬렉션 프레임워크- 자바에서 데이터를 구조적으로 저장하고 관리학 위한 인터페이스 + 클래스 모음- 인터페이스로 기능을 정의하고  =>  클래스에서 구체적으로 구현한다  |  핵심 인터페이스 구조Map은 Collection을 상속하지 않는다 ※|  주요 인터페이스 + 대표 구현 클래스 ✅ List (순서 O, 중복 O)구현체특징ArrayList배열 기반, 인덱스 접근 빠름LinkedList노드 기반, 삽입/삭제 빠름VectorArrayList와 유사하지만 동기화됨StackVector 상속, LIFO 구조 ✅ Set (순서 X, 중복 X)구현체특징HashSet순서 없음, 빠름LinkedHashSet입력 순서 유지TreeSet자동 정렬 (Comparable or Comparator) ✅ Queue / D..

IT/JAVA 2025.04.08

코드 실행시간 비교

프로그래머스 문제를 풀다가 코드 실행 시간을 비교해 보고 싶었다.  📝  Java에서 성능 측정을 위한 헬퍼 클래스작업을 여러 번 실행하여 평균 실행 시간을 측정하고 결과를 출력제네릭을 사용하여 다양한 타입의 작업을 처리 package Java.helpers;public class BenchmarkHelper { /** * 작업을 여러 번 실행하여 평균 실행 시간 측정하고 결과를 출력한다. * @param name : 벤치마크 테스트 이름 * @param iteration : 작업 반복 횟수 * @param task : 벤치마크 테스트에서 실행할 작업 */ public static void runBenchmark (String name, int it..

IT/JAVA 2025.03.26

HashSet

HashSet 은 Set 인터페이스에서 지원하는 구현 클래스이다. => Set의 특징을 그대로 상속받는다. ✏️ Set- Java에서 중복을 허용하지 않는 컬렉션을 나타내는 인터페이스 - Key의 중복을 허용하지 않는다- Key로 null을 허용하지 않는다. - 중복을 자동으로 제거해준다.- 비선형 구조로 순서 없이 Key로만 데이터를 저장한다. => 인덱스X- 요소의 저장 순서를 유지해야 한다면 JDK1.4부터 제공하는 LinkedHashSet 클래스를 사용하면 된다.- 성능이 빠르고 검색 속도가 우수하다- 추가나 삭제시 Set 내부에 있는지 검색한 뒤 해야하므로 List구조에 비해 속도가 느리다  주요 구현 클래스HashSet :  가장 많이 사용되는 Set 구현체 (빠른 검색 속도, 순서X) Tre..

IT/JAVA 2025.03.20

[프로그래머스 12914] [Java] 멀리뛰기

짝수 홀수일는 나누고, 이진법 관련해서 푸는 문제인 줄 알았는데동적 계획법을 이용하는 문제였다...생각도 못했다.... 이전에 풀었던 피보나치 수 문제와 같은 것이었다... 2025.03.11 - [IT/JAVA] - [프로그래머스 12945] [Java] 피보나치 수>> 동적 프로그래밍 이용 ✏️ DP (Dynamic Programming) 동적 계획법- 복잡한 문제를 더 작은 하위 문" data-og-host="iamsh.tistory.com" data-og-source-url="https://iamsh.tistory.com/401" data-og-url="https://iamsh.tistory.com/401" data-og-image="https://scrap.kakaocdn.net/dn/k0PHP..

HashMap

HashMap- 자바의 컬렉션 프레임워크 중 하나로, 키와 값의 쌍으로 데이터를 저장하는 자료구조- 해시 테이블을 기반으로 하며, 키를 해시 함수로 해시 코드로 변환하여 값을 저장하고 검색한다- 키와 값의 쌍을 저장하며, 키는 중복될 수 없고, 값은 중복될 수 있다- 동일한 키로 값을 저장하면 기존 값이 덮어쓰여진다- 빠른 검색: 평균적으로 O(1)의 시간 복잡도로 데이터를 검색할 수 있다- 키(Key)값을 통해서만 검색 가능  주요 메서드put(K key, V value)키와 값을 HashMap에 저장한다get(Object key)키에 해당하는 값을 반환한다. 키가 존재하지 않으면 null을 반환한다.remove(Object key)키에 해당하는 키-값 쌍을 제거한다containsKey(Object k..

[프로그래머스 138476] [Java] 귤 고르기

1. 같은 종류의 원소 갯수 구하기   =>  HashMap 이용2. 1번을 내림차순 정렬3. 갯수가 많은 것부터 k개 고르기✏️ Solution 1 import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;public class 귤고르기 { public static int solution(int k, int[] tangerine) { int sum = 0; // 고를 귤의 개수 int cnt = 0; // 최솟값 카운트 HashMap map = new HashMap(); for(int num : tangerine) { map.put(n..

Cafe24로 Java Spring Boot 프로젝트 배포하기

2025.03.16 - [IT/IT] - 웹 어플리케이션 : 웹 서버, WAS, 웹 컨테이너 웹 어플리케이션 : 웹 서버, WAS, 웹 컨테이너🖥️ 정적 페이지  Static Pages- 데이터베이스에서 정보를 가져오거나 등 별도의 서버에서의 처리가 없어도, 사용자들에게 보여줄 수 있는 페이지.- 어떠한 사용자가 오던간에 동일한 페이지iamsh.tistory.com Cafe24- 웹 호스팅 서비스를 제공하는 플랫폼으로, 웹사이트를 운영할 수 있도록 서버 공간을 대여해주는 서비스- 웹 호스팅 (Web Hosting) 제공  :  서버를 직접 구축하지 않고, 웹사이트를 운영할 수 있도록 지원- PHP, JSP, Java 기반 서비스 지원 - Tomcat(Web Container)을 기본적으로 제공  :  ..

IT/Project 2025.03.17

웹 어플리케이션 : 웹 서버, WAS, 웹 컨테이너

🖥️ 정적 페이지  Static Pages- 데이터베이스에서 정보를 가져오거나 등 별도의 서버에서의 처리가 없어도, 사용자들에게 보여줄 수 있는 페이지.- 어떠한 사용자가 오던간에 동일한 페이지를 보여준다.ex) image, html, css, javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들 🖥️ 동적 페이지  Dynamic Pages- 서버의 데이터베이스에서 정보를 가져와서 처리하는 것처럼, 어떠한 요청에 의하여 서버가 일을 수행하고 해당 결과가 포함된 파일을 보여주는 페이지.- 사용자들마다 다른 페이지가 보여질 수 있다.​🖥️ 웹 서버 Web Server- 클라이언트가 요청한 정적인 콘텐츠를 HTTP 프로토콜을 통해 제공해주는 서버- 정적페이지를 보내주고, 정적 콘텐츠 (HTML,..

IT/IT 2025.03.16

[프로그래머스 12945] [Java] 피보나치 수

public class 피보나치수 { public static int solution(int n) { int[] f = new int[n+1]; f[0] = 0; f[1] = 1; for (int i=2; i >>> 동적 프로그래밍 이용 ✏️ DP (Dynamic Programming) 동적 계획법- 복잡한 문제를 더 작은 하위 문제로 나누어 해결하는 알고리즘 설계 기법- 하위 문제의 결과를 저장하여 중복 계산을 피하고, 전체 문제를 효율적으로 해결한다.  DP와 재귀적 호출의 차이점 하향식(Top-down) 접근, 상향식(Bottom-up) 접근- 재귀적 호출은 주로 하향식 접근 방식을 사용한다.- 큰 문제를 작은 하위 문제로 나누어 해결하는 방식..

Pattern, Matcher Class

Java에는 정규식을 활용해 문자열을 검증, 탐색을 돕는 Pattern, Matcher 클래스가 있다Java API  java.util.regex 패키지에 포함되어 있다.  Pattern 클래스  (java.util.regex.Pattern)- 정규 표현식을 정의하는 클래스- 정규 표현식을 컴파일하여 Pattern 객체를 생성한다 📝 matches() 메서드  :  검증 후 대상문자열이 정규표현식과 일치하면 true, 그렇지 않다면 false값을 리턴import java.util.regex.Pattern;public class RegexExample { public static void main(String[] args) { String pattern = "^[0-9]*$"..

IT/JAVA 2025.02.25

npm과 yarn

- npm(Node Package Manager)와 Yarn은 모두 JavaScript 환경에서 패키지 관리를 위한 도구이다.- 프로젝트에서 필요한 라이브러리와 모듈의 설치, 업데이트, 삭제, 의존성 관리를 효율적으로 수행할 수 있도록 도와준다.- 최근에는 npm도 지속적인 업데이트를 통해 성능과 보안이 향상되어 두 관리자 간의 차이가 줄었다. npm- Node.js와 함께 기본적으로 제공되는 패키지 관리자이다.- 다양한 패키지를 npm 레지스트리를 통해 설치하고 관리할 수 있다.Yarn- 2016년 Facebook에서 npm의 성능과 보안 문제를 개선하기 위해 개발한 패키지 관리자이다.- npm과 동일한 기능을 제공하면서도 속도와 안정성 측면에서 향상된 성능을 보인다. npmyarn개발사Node.js ..

IT/IT 2025.02.12

vite

⚡ CRA  vs  Next.js  vs  Vite CRA- 오랫동안 React 프로젝트를 만들기 위해서 Create React App라는 CLI 도구가 사용되었다.- 오랫동안 React 생태계에서 프로젝트를 생성하는 표준처럼 여겨졌다.- 하지만 CRA는 2022년 4월 이후로 업데이트가 전혀 없으며, React 공식 문서에서도 사라지면서 사실 상 폐기(deprecated) 수순을 밟고 있다. Next.js- React 프로젝트를 만들기 위해서 많이 사용되는데, Next.js는 프로젝트 생성 뿐만 아니라 라우팅, 데이터 패칭(fetching), Server-Side Rendering(SSR), Static Site Generation(SSG), 이미지 최적화 등 온갖 부가 기능을 지원하는 메타 프레임워크..

IT/React 2025.02.12
반응형