지식 정리/JAVA 5

[JAVA] HashMap의 동시성 문제

공부한 내용을 정리하고자 작성한 내용입니다. 부족한 부분이 있다면 지적해 주시면 감사하겠습니다.🤔 문제의식https://to-travel-coding.tistory.com/135 쓰레드, 동기, 쓰레드풀, Runnable, Callable, Future쓰레드란? 프로세스 내에서 실제로 작업을 수행하는 주체이다.프로세스의 코드에 정의된 절차에 따라 실행되는 특정한 수행 경로이다. Code, Data, Heap는 다른 쓰레드와 공유하며 pc, stack는 각각to-travel-coding.tistory.com 쓰레드를 공부해 보면 항상 듣는 얘기가 있다. HashMap은 쓰레드 세이프하지 않다. 그렇기에, ConcurrentHashMap을 사용해주어야 한다는 것이다. 각각의 코드를 뜯어보며 어떤 이유로 쓰..

지식 정리/JAVA 2025.06.29

[JAVA] java의 람다란?

람다 함수란?람다 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 지칭하는 용어다.현재 사용되는 람다의 근간은 수학과 컴퓨터과학 분야에서의 람다 대수이다. 람다 대수는 수학에서 사용하는 함수를 보다 단순하게 표현하는 방법을 말한다.람다의 특징람다 대수는 익명 함수라는 특징처럼 이름을 가질 필요가 없다.두 개 이상의 입력이 있는 함수는 최종적으로 1개의 입력만 받는 람다 대수로 단순화 될 수 있고, 이것을 커링이라고 한다.하나의 메소드로써 메소드와 동일한 스택을 갖는다. → 일반적인 자바 메소드와 동일한 스코프를 갖게 된다.외부 변수를 공유하고 있다.외부 변수의 값을 변경할 수 없다.외부 메소드에 영향을 줄 수 없다.익명함수란?말 그대로 이름이 없는 함수를 말..

지식 정리/JAVA 2024.11.19

Http Request, metod, header, response, MIME

HTTPHTTP(HyperText Transfer Protocol)은 W3 상에서 정보를 주고받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고받는 데에 쓰인다. 주로 TCP를 사용하고 HTTP/3부터는 UDP를 사용하며, 80번 포트를 사용한다.OSI 7 Layer에서 Application Layer에 위치한다.(사람이 읽을 수 있는 수준의 프로토콜이기 때문이다.)HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response)프로토콜이다. 예를 들면, 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터 웹페이지(HTML)이나 그림 정보를 요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다. 이 정보가 모니터와 같은 출력 장치를 통해 사용자에..

지식 정리/JAVA 2024.07.06

쓰레드, 동기, 쓰레드풀, Runnable, Callable, Future

쓰레드란? 프로세스 내에서 실제로 작업을 수행하는 주체이다.프로세스의 코드에 정의된 절차에 따라 실행되는 특정한 수행 경로이다. Code, Data, Heap는 다른 쓰레드와 공유하며 pc, stack는 각각의 쓰레드가 독립적으로 가지고 있다.따라서 프로세스 변경 시에 일어나는 컨텍스트 스위칭 비용보다 낮은 비용으로 사용이 가능하다. 장점짧은 시간동안 여러 작업을 번갈하 수행함으로써 동시에 여러 작업이 수행되는 것처럼 보이게 되는 장점이 있다. 공유 자원을 이용하기 때문에 컨텍스트 스위칭 비용이 저렴하다는 장점이 있다.다만, 프로세스의 성능이 단순하게 쓰레드의 개수에 비례하여 올라가는 것은 아니다. 단점하나의 쓰레드에 문제가 발생해 공유된 자원을 잘못 건드리면 전체 프로세스가 영향을 받게된다.Contex..

지식 정리/JAVA 2024.07.04

Request Header 직접 읽기 및 파일 읽기

Request Header 직접 읽기- Request Header을 직접 읽어 파싱하는 과정을 통해 원하는 작업을 진행할 수 있다.try (InputStream in = connection.getInputStream(); OutputStream out = connection.getOutputStream()) { BufferedReader br = new BufferedReader(new InputStreamReader(in, "UTF-8")); 이 코드를 한번 분석해보자. InputStream, InputStreamReader, BufferedReader순으로 작성되어 있다.각각의 역할은 다음과 같다. ●InputStream Stream이라는 것에 대해 먼저 이해를 해야한다.스트림이란..

지식 정리/JAVA 2024.07.03