분류 전체보기 125

유니코드, UTF-8, 직렬화

1. 유니코드 (Unicode):유니코드는 전 세계의 문자에 대해 고유한 숫자 코드(코드 포인트)를 할당하는 문자 집합입니다.예를 들어, 한글 "가"는 U+AC00이라는 코드 포인트를 가지고 있습니다.유니코드는 문자와 코드 포인트를 1:1로 매핑한 코드표입니다. 즉, 유니코드는 "문자"를 숫자로 표현하는 시스템입니다.public class UnicodeExample { public static void main(String[] args) throws Exception { String text = "가"; // "가"의 유니코드 값 확인 int unicodeValue = text.codePointAt(0); System.out.print..

JAVA 2024.11.18

[JAVA] 공통 부분 문자열 백준-5582

공통부분 문자열https://www.acmicpc.net/problem/5582문제두 문자열이 주어졌을 때, 두 문자열에 모두 포함된 가장 긴 공통 부분 문자열을 찾는 프로그램을 작성하시오.어떤 문자열 s의 부분 문자열 t란, s에 t가 연속으로 나타나는 것을 말한다. 예를 들어, 문자열 ABRACADABRA의 부분 문자열은 ABRA, RAC, D, ACADABRA, ABRACADABRA, 빈 문자열 등이다. 하지만, ABRC, RAA, BA, K는 부분 문자열이 아니다.두 문자열 ABRACADABRA와 ECADADABRBCRDARA의 공통 부분 문자열은 CA, CADA, ADABR, 빈 문자열 등이 있다. 이 중에서 가장 긴 공통 부분 문자열은 ADABR이며, 길이는 5이다. 또, 두 문자열이 UPWJ..

알고리즘 2024.11.16

[JPA] 영속성 컨텍스트

jpa 란? JPA 저장멤버객체를 만든다고 가정해보자멤버 객체를 회원 DAO 에 넘기고 회원 DAO 가 JPA 에게 멤버 회원 객체를 저장해줘 라고 던지기만 하면 JPA 가 자동으로 JPA 가 회원 객체를 분석하고 자동으로 INSERT SQL 을 만들어줘도 JDBC API 를 사용해서 db 에 insert 쿼리를 날려준다.또한 패러다임의 불일치도 해결해준다.자바 컬렉션의 저장하듯 한줄의 코드로 JPA 에게 회원을 저장시킬 수 있다. 이때 회원과 같은 객체를 JPA 에서 엔티티라 부른다. 엔티티란? DB 테이블에 대응하는 하나의 클래스라 생각하면 된다.  JPA 조회 조회또한 마찬가지로 JPA 가 다 알아서 해준다. EnityObject 를 잘 만들어서 결과로 돌려준다. jpa 에서 가장 중요한 두가지가 ..

JPA 2024.11.16

[JAVA] String intern()

String의 intern() 메서드에 대해 공부하다 보면 "절대 쓰지 말라"는 권고를 접할 수 있습니다.intern()은 힙 영역에 생성된 String 객체를 String Constant Pool로 옮겨 메모리를 절약하고 중복을 줄이기 위한 메서드지만, 잘못 사용하면 성능 문제가 발생할 수 있습니다. String Constant Pool 은 자바 7 이후에  메서드 영역에서 힙 영역으로 옮겨졌습니다. 즉 GC 의 대상이 된다는 것입니다.  intern() 메서드를 사용할 때 발생할 수 있는 문제점 Full GC 발생 가능성 증가로 인한 성능 저하객체는 처음 생성 시 에덴 영역에 할당되고, 참조되지 않으면 Minor GC에서 쉽게 수거됩니다. 하지만 intern()으로 객체를 String Constant..

JAVA 2024.11.15

[JAVA] 스레드 제어와 생명 주기2 (Interrupted, yield)

인터럽트 - 시작 1특정 스레드의 작업을 중간에 중단하려면 어떻게 해야 할까?package thread.control.interrupt;import static util.MyLogger.log;import static util.ThreadUtils.sleep;public class ThreadStopMainV1 { public static void main(String[] args) { MyTask task = new MyTask(); Thread thread = new Thread(task, "work"); thread.start(); sleep(4000); log("작업 중단 지시 runFlag = true"); task..

JAVA 2024.11.13

[JAVA] 스레드 Join

스레드는 생성하고 시작하고, 종료되는 생명주기를 가진다. 스레드의 상태New (새로운 상태) : 스레드가 생성되었으나 아직 시작되지 않은 상태Runnable (실행 가능 상태) : 스레드가 실행 중이거나 실행될 준비가 된 상태Blocked (차단 상태) : 스레드가 동기화 락을 기다리는 상태Waiting (대기 상태) : 스레드가 무한으로 다른 스레드의 작업을 기다리는 상태Time Waiting (시간제한 대기 상태): 스레드가 일정 시간 동안 다른 스레드의 작업을 기다리는 상태Terminated (종료 상태) : 스레드의 실행이 완료된 상태.자바 스레드(Thread) 의 생명주기는 여러 상태(state)로 나뉘며, 각 상태는 스레드가 실행되고 종료되기까지의 과정을 나타낸다. 자바 스레드의 생명주기를 자..

JAVA 2024.11.12

[JAVA] Runnable 을 만드는 다양한 방법

Runnable을 만드는 다양한 방법 중첩 클래스를 사용하면 Runnable을 더 편리하게 만들 수 있다. 참고로 모두 결과는 같아. 정적 충첩 클래스 사용package thread.start;import static util.MyLogger.log;public class InnerRunnableMainV1 { // 특정 클래스만에서만 사용되는 경우 정적 중첩 클래스 사용 public static void main(String[] args) { log("main() start"); MyRunnable myRunnable = new MyRunnable(); Thread thread = new Thread(myRunnable); thread.sta..

JAVA 2024.11.11

[JAVA] 데몬 스레드

스레드는 사용자(user) 스레드와 데몬(daemon) 스레드 2가지 종류로 구분할 수있다.  사용자 스레드 (non-deamon 스레드)프로그램의 주요 작업을 수행한다.작업이 완료 될 때 까지 실행된다.모든 user 스레드가 종류되면 JVM 도 종료된다.  데몬 스레드 백그라운에서 보조적인 작업을 수행한다.모든 user 스레드가 종류되면  데몬 스레드는 자동으로 종료된다. jvm 은 데몬 스레드의 실행 완료를 기다리지 않고 종료된다. 데몬 스레드가 아닌 모든 스레드가 종류되면, 자바 프로그램도 종료된다. 용어 - 데몬 : 그리스 신화에서 데몬은 신과 인간 사이의 중간적 존재로 , 보이지 않게 활동하며 일상적인 일들을 도왔다. 이런 의미로 컴퓨터 과학에서는 사용자에게 직접적으로 보이지않으면서 시스템의 백..

JAVA 2024.11.11