BackEnd/Java 18

[Java] - 인터페이스

Interface(인터페이스)인터페이스는 객체의 사용 방법을 정의한 타입입니다.또한 인터페이스를 통해 다양한 객체를 동일한 사용 방법으로 이용할 수 있습니다. - 자바의 특징중인 하나인 '다형성'과 연관이 있습니다. 다형성은 하나의 객체가 여러 형태를 가질 수 있는 성질을 의미합니다. - 메소드의 선언만 가능합니다. (body 구현불가)public interface UserRepository extends CrudRepository { //가능 public User findById(); //메소드 바디가 있으므로 불가 public User findById(){ }}

BackEnd/Java 2025.01.27

[Java] - Thread, ThreadPool

최근에 재직했던 기업에서 ThreadPool을 이용해 외부 API 호출 개발경험이 있습니다.기간이 조금 지나기도 했고 다시 공부하여 개념을 정리하기 위하여 포스팅을 작성해봅니다. Thread(스레드)란?컴퓨터 프로그래밍와 OS에서 프로스세스 내에서 실행되는 하나의 작업단위를 의미합니다. 실행중인 하나의 애플리케이션을 프로세스라고 칭합니다.사용자가 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는데 이것이 프로세스입니다. (출처: 혼자공부하는 JAVA, 520P 스레드 파트) Thread의 핵심 개념스레드는 프로세스 안에서 실행되는 단위로써 여러 스레드가 한 프로세스 안에서 코드, 데이터, 파일 같은 자원을 공유하며 동작할 수 있습니다.싱글 스레드 : 하나..

BackEnd/Java 2025.01.13

[Java] - Page객체 형 변환 / map()메소드 / Stream 사용

CRUD 사이드 프로젝트를 만들고있는데 '게시글리스트 조회'기능에서 게시글 테이블과 양방향관계에 있는 댓글 테이블에서 순환참조 이슈가 발생했다. 이전 포스팅처럼 Entity->DTO 방법으로 사용하고자 했는데 단순 Entity가 아니라 페이징객체의 Entity여서 DTO변환이 고민되었다..  Page객체는 유지하고 내부 타입을 Entity->DTO로 변환 할 수있는 방법을 생각해보았다. 다행히도 Page객체의 메소드중에 map이라는 메소드가 있었고 해당 메소드를 통해 람다식을 통해 DTO타입으로 내부 형변환이 가능했다.  그런데 한가지 문제가 더 있었다..!게시글과 연관관계 엔티티인 댓글(Comment)객체의 값을 가져오기 위해선 또 다른 형변환이 필요했다.형변환없이 그대로 가져오면 순환참조를 다시 일으..

BackEnd/Java 2025.01.10

JAVA_printf (서식이 있는 출력)

코드100제 1023문제가 정수와 실수를 나눠서 출력하는 문제였는데.. printf는 수업시간에 살짝배우고 지나간거 같아 기억이 안나 다시 정리해보려 한다. printf는 서식이 있는 출력을 하는 함수이며 다음과 같은 양식을 통해 출력 할 수 있다. //System.out.printf("출력서식",출력할데이터); 그리고 출력서식은 %d 정수형 출력 %s 문자형 출력 %f 실수형 출력 %c 문자열 출력 %n 줄 바꿈 %b boolean 타입 출력 으로 정의하여 출력할 수 있다. 그렇다면 정수와 실수형 출력을 실습해보자.

BackEnd/Java 2021.11.20

JAVA_메모리 힙(Heap)과 스택(Stack)

자바의 메모리영역에는 힙(Heap)데이터와 스택(Stack)데이터가 존재한다. 기본타입은 스택메모리에 저장되고 그 외 참조타입은 힙 메모리에 저장이 된다. (참조타입은 클래스, 배열, 인터페이스,열거 타입의 데이터들을 칭한다. 기본타입을 제외한 모든 데이터들) 좀더 자세하게 말하자면 변수(메모리 주소값)은 스택에 생성되고 실제값은 힙영역에 생성된다. int var1 = 5; String var2 = "test_memory"; 위와 같이 선언 및 할당을 해준다면 위에 도식화 한 것 처럼 기본타입인 int는 스택에 값이 저장되고, 참조타입인 String은 클래스타입으로 분류되며 스택에는 메모리의 번지를 변수 안에 저장하고 실제값은 힙영역에 저장된다. 그리고 String 클래스는 독특하게도 참조형타입으로 분류..

BackEnd/Java 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); /..

BackEnd/Java 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..

BackEnd/Java 2021.11.10

JAVA_JAVA의 컴파일링 과정, JVM

국비교육학원에서 책 보다는 실습위주의 교육이었어서 책을 통해 기본부터 공부해보려고 한다. 그 첫째로 자바!에 대해 알아보면서 JAVA의 컴파일링 과정을 공부해봤다. 사용자가 텍스트 java언어로 소스파일(.java)을 작성하면 javac(자바 컴파일을 통해) 개발 완료된 자바 바이트코드 파일(.class)로 만들어 준다. 다만 이 바이트코드 파일은 컴퓨터가 해석할 수 없는 언어며 JVM(Java Virtual Machine)을 통해 각 운영체제게 맞게 자바 프로그램을 실행하게된다. 마지막 JVM의 역할을 통해 개발자는 운영체제와 상관없이 자바프로그램을 개발 할 수 있는것이 특징이다. JVM(Java Virtual Machine) JVM은 자바 프로그램을 실행하기 위해 물리적으로 유사한 머신을 가상으로 구..

BackEnd/Java 2021.11.10

JAVA_Escape문자(\)

CodeUp의 기본 100제를 풀어보는 와중에 "Hello World"를 쌍따옴표 포함하여 출력하는 문제가 있었다. 당연히 System.out.println(" " Hello World " "); 라고 쓰면 에러가 뜨게된다. 이럴때 바로 Escape문자인 \ (역슬래시)를 쓰면된다. System.out.println("\"Hello World\""); 출력하고자는 문자열앞에 \를 써주면 된다. System.out.println(\\); System.put.println("\"); // 출력 \ // 출력 " 또한 \n은 줄바꿈, \r은 줄의 맨 처음으로 (캐리지 리턴), \t는 탭으로 출력된다.

BackEnd/Java 2021.11.09

JAVA_==과 equals의 차이

자바에서 일치를 뜻하는 건 ==와 equls가 있는데 이 둘의 차이는 뭘까? // 세션 if(((String)ssn.getAttribute("pwInitial"))==("1")) 실제로 지난 프로젝트('사인히어')를 하면서 최초 로그인 판단 여부("pwIntial")를 비교할 때 ==를 썼었다. "pwInitial"의 값은 1이 맞는데도 계속 저 if문을 빠져나가는일이 발생했다. 혹시나 해서 sysout을 통해 가져온 세션의("pwInitial")의 값도 "1"이 맞았는데 왜 에러가 뜨는지 한창을 고민하다가 equals를 통해 에러를 고칠 수 있었다. 그리고 이 둘의 차이를 알게 되었는데 1. ==, != 이 두 연산은 객체의 참조값(주소 값)을 비교하는 '연산자', 즉 비교하는 객체가 동일한지를 비교...

BackEnd/Java 2021.10.21
반응형