전체 글 132

형변환(2024-07-23)

명시적인 형변환double형 변수를 int형으로 형변환float타입을 int 타입으로 형변환정수형을 실수형으로 형변환 자동 형변환먼저 변수형의 크기를 비교해보자byte(1) → short(2) → int(4) → long(8) → float(4) → double(8) long(8)보다 float(4)가 큰 이유는 float는 부동 소수점 방식을 사용하기 때문에 훨씬 넓은 숫자 범위를 가지고 있기 때문이다. byte형의 변수를 더 큰 자료형인 int에 옮기면 자동으로 형 변환이 일어난다. char 형태의 변수에는 'A'를 넣었다. 이를 int형 변수에 넣으니 A의 아스키코드 값인 65가 출력되었다.long 타입에 int를 넣으면 바로 long으로 변환int -> double 같이 정수형에서 실수로 변환도 ..

TIL 2024.07.23

변수타입 심화(2024-07-23)

문자와 문자열문자와 문자열의 차이점을 알아보자 선언 관점에서의 차이점문자(char)문자 한개만 저장하며 홀따옴표를 사용해 값을 저장한다.  문자열(String)문자 여러개를 문장형태로 저장하며 쌍따옴표를 사용해 저장한다.저장 관점에서의 차이점문자(char)문자 뒤에 \0(널 문자)가 없다. 1byte만 쓰기 때문에 끝을 알기 때문이다.문자열(String)문장의 끝에 \0(널 문자)가 있다. 몇 개의 byte를 사용할지 모르기 때문에 끝을 표시하기 때문이다.참조형참조형 변수 = 주소형 변수기본형 변수가 실제 값을 저장하는 공간이라면 참조형 변수는 실제 값이 아닌 원본값의 주소값을 저장한다.그래서 참조형 변수는 주소형 변수라고 불러도 무방하다. 저장관점에서의 차이점기본형 변수 = 원본 값이 Stack 영역에..

TIL 2024.07.23

숫자와 문자 ascii (2024-07-22)

숫자와 문자저장공간에 저장하는 값은 0, 1 숫자값이 저장된다. 그럼 문자는 어떻게 숫자로 저장될까?숫자(int)와 문자(char)를 매핑(짝을 지어서)하여 표현한다.숫자를 문자로 매핑하는 방법은 여러가지가 있다.그중에 Java에서는 기본적으로 아스키코드 라는 규칙으로 문자를 저장(표현)한다.아스키 코드표입력함수를 사용해 asciiNumber 변수에 숫자를 넣고 그것을 문자형으로 표현해본다. 입력 값 : 97출력 값 : a 97을 넣으니 아스키 코드표와 같이 a가 나왔다.  이번에는 문자를 숫자로 표현해본다. 입력 : a출력 : 97

TIL 2024.07.22

참조형변수타입 및 래퍼클래스타입 실습 (2024-07-22)

참조형 변수문자열 변수 : String String message = "Hello world!" //문자열을 저장한다. 그 외 참조형 변수 : Object, Array, List 등등 객체, 배열, 리스트와 같은 단일 저장공간에 담을 수 없는 값을 저장한다.  래퍼 클래스 변수래퍼 클래스(Wrapper Class)라는 말 그대로 "기본형 변수를 클래스로 한번 랩핑(감싸는) 변수" 라고 생각하면 된다. 실습한 int, Integer 외에도 기본타입은 모두 Wrapper 클래스가 있다.

TIL 2024.07.22

JVM (2024-07-22)

Java Virtual Machine의 약자로 "자바 가상 머신"이라는 뜻이다.가상머신이란 가상의 기기를 뜻한다.다시 말해, 여러 종류의 기기 위에서 Java 프로그램을 실행 시킬 수 있게 해주는 가상의 기기이다. 자바 컴파일러 : 사람이 이해하는 .java 파일을 컴퓨터가 이해할 수 있는 .class(바이트 코드) 파일로 변환해주는 것 인터프리터 : .class 코드 해석기로서 운영체제가 읽은 바이트 코드를 기기(기계)가 실행할 수 있는 기계어로 번역 JIT 컴파일러 : Just In Time의 약자로 빠른 .class코드 해석기이다. 인터프리터의 효율을 높여주는 서포터 해석기이다. 인터프리터와 세트라고 생각하면 된다. 메모리 영역 : Java 데이터를 저장하는 영역, 운영체제로 부터 JVM이 할당받은..

TIL 2024.07.22

리눅스 필수 명령어

pwd (print working directory) 내가 현재 작업중인 디렉토리 출력ls (list)현재 디렉토리 내의 모든 파일과 폴더를 출력 ls -a (all)현재 디렉토리의 숨겨져 있는 모든 파일과 폴더를 보여준다. 대부분 . 으로 시작하는 폴더들이다. (시스템파일) cd 디렉토리명 또는 경로해당 디렉토리 또는 경로로 이동 cd ..상위 디렉토리로 이동 mkdir 폴더명폴더(디렉토리) 생성한다. touch 파일명예시)touch text.txt 를 입력하면 text.txt 파일을 생성한다.

Git 2024.07.15

리액티브. (2024-07-12)

1. 함수형 인터페이스Java에서 인터페이스는 명세 또는 사양이라고 표현할 수 있다. 리액티브 스트림즈에서 정의해 놓은 네 개의 인터페이스처럼, Java의 인터페이스는 몸체가 없는 추상 메서드로만 이루어져 있다. 물론 Java 8부터 지원하는 default 메서드는 예외이다. 아무튼 이 인터페이스를 사용하기 위해서는 해당 인터페이스에 정의된 메서드들을 구현하는 구현 클래스가 필요하다. 그렇다면 Java 8부터 지원하는 함수형 인터페이스는 무엇일까? 함수형 인터페이스 역시 인터페이스다. 다만 기존 인터페이스에 비해 함수형 인터페이스는 단 하나의 추상 메서드만 정의되어 있다. 그렇다면 왜 그냥 인터페이스라고 부르지 않고 굳이 함수형 인터페이스라고 부를까? 함수형 프로그래밍 세계에서는 함수를 일급 시민으로 취..

TIL(사전캠프) 2024.07.12

리액티브. (2024-07-11)

1. Non-Blocking I/O 방식의 통신이 적합한 시스템Spring Framework 기반의 두 가지 방식의 애플리케이션 코드를 직접 실행해 보면서 Non-Blocking I/O 방식을 지원하는 Spring WebFlux 기반의 애플리케이션이 요청 처리 면에서 월등한 성능을 보여준다는 사실을 확인했다. 그렇다면 Spring MVC보다 Spring WebFlux 기반의 애플리케이션을 무조건적으로 도입하는것이 나을까? 하지만 현실적으로 Spring WebFlux를 도입하기 위해서는 고려해야 할 사항이 몇 가지 있다. 1. 학습 난이도DI(Dependency Injection), AOP(Aspect Oriented Programming), 서비스 추상화 등 Spring Framework에서 사용되는 핵..

TIL(사전캠프) 2024.07.11

리액티브. (2024-07-10)

코드3-5 Non-Blocking I/O 지점 API 서버(SpringReactiveBranchOfficeController.java) 코드 3-5는 [그림3-3] Non-Blocking I/O 예시에서 지점 API 서버에 해당되는 코드이다. [그림 3-3]에서는 A, B 두 개의 지점으로 설명 했지만 코드상으로는 편의상 A 지점에 해당하는 하나의 지점 API 서버 코드로만 설명한다. Non-Blocking I/O 방식의 지점 API 서버 역시 Blocking I/O 지점 API 서버와 마찬가지로 애플리케이션이 실행될 때 내부적으로 Map에 샘플 도서 정보를 미리 저장해둔다. Spring WebFlux 기반 애플리케이션에서도 스레드의 차단 여부를 확안하기 위해서 Thread.sleep(5000)을 추가해..

TIL(사전캠프) 2024.07.10

리액티브. (2024-07-09)

코드 3-3 Blocking I/O 클라이언트(SpringMvcHeadOfficeApplication.java) 코드 3-3은 Blocking I/O 기반의 본사 API 서버에 도서 정보를 요청하는 클라이언트 PC 역할을 하는 코드이다. 이 예제 코드에서는 클라이언트 PC 역할을 하는 별도의 애플리케이션을 만든 것이 아니라, 편의상 본사 API 서버 애플리케이션이 실행될 때 본사 API를 호출하도록 간단하게 구현했다. 대부분의 코드가 본사 API를 호출하기 위한 코드이고, 실제로 주목해서 봐야 되는 부분은 26 ~ 29번 라인이다. for문을 이용해 본사 API 서버의 API를 5회 호출한다. 호출 결과를 예상하면, 코드 3-2 지점 API 서버의 코드상에서 Thread.sleep(5000)을 통해 호출..

TIL(사전캠프) 2024.07.09