Java , Spring/Java20 [Java] HashMap의 Thread-Safe 와 TreeMap, LinkedHashMap, EntrySet 정리 HashMapMap 이란?Map은 리스트나 배열처럼 순차적으로 해당 요소 값을 구하지 않고 key를 통해 value를 얻을 수 있는 자료 구조이다.특징key는 중복을 허용하지 않는다.value는 중복이 가능하다put 과 getMap은 put과 get을 통해 insert 와 read가 가능하다HashMap map = new HashMap();map.put("people", "사람");map.put("baseball", "야구");String str = map.get("people"); // "사람"containsKey (boolean)Map에 해당 key가 있는지 조사하여 결과값을 리턴한다.boolean hasKey = map.containsKey("people");removeMap의 항목을 삭제할 수 있.. 2024. 10. 7. [JAVA] Virtual Thread (JDK 21) Virtual Thread프로세스실행중인 프로그램스레드프로세스 내에서 실행되는 실행 흐름 (작업 단위)Virtual Thread2023년 JDK21에 추가된 경량 스레드이다. OS 스레드를 그대로 사용하지 않고 JVM 내부 스케줄링을 통해 수백만개의 스레드 사용이 가능하다.장점생성 및 스케줄링 비용이 저렴하다.Nonblocking I/O를 지원한다.기존 스레드를 상속하여 코드가 호환된다.전통적인 Java의 ThreadJava에서는 OS Thread를 Wrapping 해서 사용한다.(Platform Thread)OS Thread는 생성 개수가 제한적이고, 생성, 유지 비용이 매우 비싸다.이러한 단점을 해결하기 위해 Thread Pool을 사용한다. (생성 비용이 비싸서)전통적인 Java의 Thread를 사.. 2024. 9. 3. [Java] CS 스터디 - 2주차 (Java & Spring) Java의 GC💡 Garbage Collection이란? Java의 메모리 관리 방법으로 JVM의 Heap 영역에 동적으로 할당된 메모리중 필요 없어진 메모리 객체를 자동으로, 주기적으로 제거 해주는 프로세스 이다.GC의 장단점장점메모리 누수를 방지 할 수 있다.이미 해제한 메모리를 다시 해체하거나, 해제한 메모리에 다시 접근하는 등의 오류를 방지 할 수 있다.단점개발자 입장에서 메모리가 언제 해제 되는지 알 수 가 없다.오버헤드로 인한 성능 저하가 발생 할 수 있다.GC의 대상그렇다면 어떤 객체가 GC의 대상이 될까?객체는 현재 참조 되고 있는 Reachable 객체와 참조 되고 있지 않은 UnReachable 객체로 나누어 진다. GC는 이러한 UnReachable 객체들을 주기적으로 제거해준다.G.. 2024. 8. 11. [Java] CS 스터디 - 1주차 (Java & Spring) 1주차(7/24) - Java & SpringJVM💡 JVM 이란? Java Virtual Machine 이다. (자바 가상 머신) Java 프로그램이 실행될 때 사용되는 가상 컴퓨터 이다.Java 프로그램 실행 과정자바 소스 코드(.java)를 작성한다.자바 컴파일러(javac)를 통해 자바 소스 코드(.java)를 자바 바이트 코드(.class)로 컴파일 한다.JVM의 Class Loader는 동적 로딩에 필요한 클래스들을 로딩 및 링크하여 Runtime Data Area에 올린다.Runtime Data Area에 로딩된 바이트 코드를 Execution Engine을 통해 해석된다.변환된 class 파일을 JVM에서 JLT와 인터프리터를 이용해서 네이티브 코드로 변홚하여 실행한다JVM 구성 요소Cl.. 2024. 8. 2. [Java] UncheckedException과 CheckedException (Error와 Exception) Error와 Exception 먼저 Error와 Exception의 차이에 대해 알아보자 Error(오류)는 시스템이 종료되어야 할 수준의 상황과 같이 수습할 수 없는 심각한 문제를 의미한다. 개발자가 미리 예측하여 방지할 수 없다. Exception(예외)는 개발자가 구현한 로직에서 발생한 실수나 사용자의 영향에 의해 발생한다. 오류와 달리 개발자가 미리 예측하여 방지할 수 있기에 상황에 맞는 예외처리(Exception Handle)를 해야한다. Error의 예시 StackOverflowError : 호출의 깊이가 깊어지거나 재귀가 지속되어 stack overflow 발생 시 던져지는 오류 OutOfMemoryError : JVM이 할당된 메모리의 부족으로 더 이상 객체를 할당할 수 없을 때 던져지는 .. 2024. 1. 22. [Java] 커넥션풀과 데이터소스(DataSource) 데이터베이스 커넥션 데이터베이스 커넥션을 얻기 위해서는 매우 복잡한 과정이 필요하다.(TCP/IP의 3 way handshake 등) 데이터 베이스에 접근하기 위해 접근할때 마다 커넥션을 만들어서 사용하면 속도가 매우 느려진다. 커넥션풀 해당 문제를 해결하기위해 커넥션을 미리 생성해두고 필요할떄 해당 커넥션을 할당 받아 사용하는 커넥션풀 방식을 사용한다. DataSource DataSource는 커넥션을 획득하는 방법을 추상화한 인터페이스이다. 커넥션을 얻는 방법이 변경될때 코드를 변경해야하는 문제를 해결하기 위해 DataSource 인터페이스를 만들었다. 핵심 기능은 커넥션을 조회하는 getConnection 이다. public interface DataSource { Connection getConn.. 2024. 1. 19. [Java] 서블릿과 스프링에서의 MVC HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러 서블릿 이란? 서블릿이란 동적 웹페이지를 만들때 사용되는 자바 기반의 웹 어플리케이션 프로그래밍 기술이다. urlPatterns의 URL이 호출되면 서블릿 코드가 실행된다. HTTP 요청 정보를 사용할 수 있는 HttpServletRequest와 응답 정보를 제공하는 HttpServletResponse 객체가 있다, 개발자는 HTTP 스펙을 매우 편리하게 사용할 수 있다. 웹 브라우저에서 HTTP 요청메시지를 보낸다. WAS에서 해당 요청메시지를 기반으로 request와 response 객체를 만들어서 servlet 객체를 호출한다. 호출한 servlet 객체에 request, response 객체를 같이 넘겨준다. r.. 2024. 1. 18. [Java] call by value, call by reference 함수를 호출 방법은 Call by value(값에 의한 호출), Call by reference(참조에 의한 호출)이 있다. Call by value 함수 호출시 넘기는 인자값이 매개변수에 복사돼서 함수 내에서 매개변수의 값을 변경해도 복사된 값이 변경되는것이다. 즉, 함수 내에서 값을 변경해도 원본값은 변경되지 않는다. Call by reference 엄밀히 말하면 call by reference도 인자의 값이 매개변수에 복사가 되지만, 복사되는 값이 데이터의 주소값이라는 차이점이 존재한다. c에서 call by value를 사용하고 원본값의 변경을 위해 call by reference를 사용할떄는 포인터를 이용해서 사용했었다. Java Java에서는 객체를 전달 받고 해당 객체를 수정하면 원본도 같이.. 2024. 1. 18. [Java] String.valueOf() 와 toString() String.valueOf() String.valueOf()는 모든 데이터 타입을 안전하게 문자열로 변환할 수 있는 일반적인 방법 특히 null 값을 처리할 때 유용하다. String.valueOf(null)은 "null" 문자열로 변환되어 예외를 방지할 수 있다. 기본적인 문자열 변환에 사용되며, 추가적인 형식이나 사용자 정의 문자열 표현이 필요하지 않은 경우에 유용합니다. toString() toString()은 기본적으로 객체의 클래스 이름과 해시 코드를 나타낸다. 오버라이드를 하여 자유롭게 구현할 수 있다. (자유도가 높다) null값 처리 불가 ⭢ NPE 발생 class Person { private String name; private int age; public Person(String na.. 2024. 1. 17. 이전 1 2 3 다음