본문 바로가기

BackEnd/Java17

[Java] - Thread, ThreadPool 최근에 재직했던 기업에서 ThreadPool을 이용해 외부 API 호출 개발경험이 있습니다.기간이 조금 지나기도 했고 다시 공부하여 개념을 정리하기 위하여 포스팅을 작성해봅니다. Thread(스레드)란?컴퓨터 프로그래밍와 OS에서 프로스세스 내에서 실행되는 하나의 작업단위를 의미합니다. 실행중인 하나의 애플리케이션을 프로세스라고 칭합니다.사용자가 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는데 이것이 프로세스입니다. (출처: 혼자공부하는 JAVA, 520P 스레드 파트) Thread의 핵심 개념스레드는 프로세스 안에서 실행되는 단위로써 여러 스레드가 한 프로세스 안에서 코드, 데이터, 파일 같은 자원을 공유하며 동작할 수 있습니다.싱글 스레드 : 하나.. 2025. 1. 13.
[Java] - Page객체 형 변환 / map()메소드 / Stream 사용 CRUD 사이드 프로젝트를 만들고있는데 '게시글리스트 조회'기능에서 게시글 테이블과 양방향관계에 있는 댓글 테이블에서 순환참조 이슈가 발생했다. 이전 포스팅처럼 Entity->DTO 방법으로 사용하고자 했는데 단순 Entity가 아니라 페이징객체의 Entity여서 DTO변환이 고민되었다..  Page객체는 유지하고 내부 타입을 Entity->DTO로 변환 할 수있는 방법을 생각해보았다. 다행히도 Page객체의 메소드중에 map이라는 메소드가 있었고 해당 메소드를 통해 람다식을 통해 DTO타입으로 내부 형변환이 가능했다.  그런데 한가지 문제가 더 있었다..!게시글과 연관관계 엔티티인 댓글(Comment)객체의 값을 가져오기 위해선 또 다른 형변환이 필요했다.형변환없이 그대로 가져오면 순환참조를 다시 일으.. 2025. 1. 10.
JAVA_printf (서식이 있는 출력) 코드100제 1023문제가 정수와 실수를 나눠서 출력하는 문제였는데.. printf는 수업시간에 살짝배우고 지나간거 같아 기억이 안나 다시 정리해보려 한다. printf는 서식이 있는 출력을 하는 함수이며 다음과 같은 양식을 통해 출력 할 수 있다. //System.out.printf("출력서식",출력할데이터); 그리고 출력서식은 %d 정수형 출력 %s 문자형 출력 %f 실수형 출력 %c 문자열 출력 %n 줄 바꿈 %b boolean 타입 출력 으로 정의하여 출력할 수 있다. 그렇다면 정수와 실수형 출력을 실습해보자. 2021. 11. 20.
JAVA_메모리 힙(Heap)과 스택(Stack) 자바의 메모리영역에는 힙(Heap)데이터와 스택(Stack)데이터가 존재한다. 기본타입은 스택메모리에 저장되고 그 외 참조타입은 힙 메모리에 저장이 된다. (참조타입은 클래스, 배열, 인터페이스,열거 타입의 데이터들을 칭한다. 기본타입을 제외한 모든 데이터들) 좀더 자세하게 말하자면 변수(메모리 주소값)은 스택에 생성되고 실제값은 힙영역에 생성된다. int var1 = 5; String var2 = "test_memory"; 위와 같이 선언 및 할당을 해준다면 위에 도식화 한 것 처럼 기본타입인 int는 스택에 값이 저장되고, 참조타입인 String은 클래스타입으로 분류되며 스택에는 메모리의 번지를 변수 안에 저장하고 실제값은 힙영역에 저장된다. 그리고 String 클래스는 독특하게도 참조형타입으로 분류.. 2021. 11. 15.
JAVA_실수 반올림하기 (Math.round, String.format) 코드업 기초100제를 그저께 부터 풀어보고 있다! scanner를 써본지가 오래되서 가물가물 했지만 한번 쓰윽 읽고나니 정리가 됐다. 그래서 왠만한 기본적인 출력문제들은 문제없이 풀었다! 그런데 0015번에서 막혀부렀다.. 실수를 원하는 n번째에서 반올림하는 함수가 기억이 안나서.. 두가지 방법들을 정리해보려고 한다. Math.round() Math.round()함수는 소수점 첫째자리에서 반올림해 정수로 반환하는 함수다. 그런데 우리는 정수로 반환을 포함해 원하는 n번째에서 반올림하여 변환하여야 하는데 예시를 보자. double var1=12.345; System.out.println(var1*100); //1234.5 System.out.println(Math.round(var1*100)/100); /.. 2021. 11. 12.
JAVA_데이터타입 (1)기본타입(Primitive Type) 자바의 데이터타입은 크게 기본타입(Primitive Type)과 참조타입(Reference Type)으로 나뉜다. 그리고 기본타입은 크게 정수형,실수형,논리형 세가지로 분류 된다. 타입 메모리 사용 크기 데이터 표현 범위 byte 1byte 8bit -128 ~127 short 2byte 16bit -32,768~32,767 char 2byte 16bit 0~65535(유니코드) int 4byte 32bit -2,147,483,648~2,147,483,647 long 8byte 64bit -9,223,372,036,854,775,808~9,223,372,036,854,775,807 flat 4byte 32bit (3.4 X 10-38) ~ (3.4 X 1038) double 8byte 64bit (1.7.. 2021. 11. 10.