분류 전체보기 80

컴파일러와 인터프리터의 차이

컴파일과 인터프리터의 차이점과 특징프로그래밍 언어는 크게 컴파일 언어와 인터프리터 언어로 나뉩니다. 이 두 방식은 소스코드를 실행 가능한 형태로 변환하는 방식에서 큰 차이를 보입니다. 아래에서 각각의 개념과 특징을 자세히 살펴보겠습니다.컴파일이란?컴파일은 소스코드를 기계어로 변환해 실행 파일을 생성한 후, 해당 파일을 실행하는 방식입니다. 프로그래머가 작성한 소스코드를 컴파일러라는 프로그램이 분석하고, 이를 기계어로 변환해 실행 가능한 형태의 파일을 만들어 냅니다. 이 실행 파일은 별도의 변환 과정 없이 바로 실행할 수 있기 때문에 속도가 매우 빠릅니다.컴파일러는 전체 소스코드를 한 번에 변환하며, 이 과정에서 오류를 사전에 발견할 수 있습니다. 하지만 소스코드에 수정이 발생하면, 다시 컴파일 과정을 거..

CS 2024.11.22

Tree 자료구조

자료 구조 트리란?트리는 계층 구조로 데이터를 저장하는 자료구조이며, 노드 간의 부모-자식 관계로 이루어져 있습니다.평균적으로 탐색 시간 복잡도는 O(log N)이나, 노드가 한쪽으로 치우치면 O(N)이 될 수 있습니다.이를 방지하기 위해 밸런스 트리가 사용됩니다. 💡 밸런스 트리(Balanced Tree)란?밸런스 트리는 삽입/삭제 시 트리의 균형을 유지하도록 설계된 자료구조로, 항상 O(log N)의 탐색 성능을 보장합니다. 대표적으로 Red-Black Tree와 B-Tree가 있습니다. 다만, 삽입/삭제 시 추가적인 연산이 필요하여 일반 트리보다 성능이 약간 낮을 수 있습니다. 밸런스 트리는 최악의 경우에도 O(logN)이므로, 탐색시간에 매우 효율적인 자료구조입니다. Binary Tree, RB..

CS 2024.11.22

[JAVA] 싱글톤 구현 방식

싱글톤 패턴이란?인스턴스를 오직 한 개만 제공하는 클래스입니다. 시스템 런타임, 환경 세팅에 대한 정보 등, 인스턴스가 여러 개 일 때 문제가 생길 수 있는 경우가 있다. 인스턴스를 오직 한개만 만들어 제공하는 클래스가 필요하다. 싱글톤 구현 방식 1. private 생성자 및 static 메서드 사용public class Settings { private static Settings instance; // 클래스 밖에서 인스턴스 생성 방지 private Settings(){} public static Settings getInstance(){ if(instance == null) { return instance = new Settings(); ..

JAVA 2024.11.21

[JAVA] iterator 순회 중 만난 ConcurrentModificationException

collection 순회하는 loop 내에서 원본 collection에 변화를 주면 어떤 일이 발생할까? 다음 코드를 실행해보자!package generic.ex1;import java.util.*;import java.util.concurrent.CopyOnWriteArrayList;public class RawTypeMain { public static void main(String[] args) { // List list2 = new CopyOnWriteArrayList(); List list2 = new ArrayList(); list2.add("A"); list2.add("B"); list2.add("C"); list2...

JAVA 2024.11.20

유니코드, 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