전체 글 793

5. 진수

--- --- 컴퓨터는 이진수 밖에 모른다. 컴퓨터에게 "진수"란 "전압의 단계"를 의미한다. 컴퓨터에게 가장 적합한 진수는 "2진수"이며, 1 = 전기가 흐름이고 0 = 전기가 흐르지 않음 이다. 변수는 값을 할당하기위해 메모리공간에 이름을 지은 것이다. 우리가 값을 할당할 때에 10진수로 표현해서 값을 저장하지만, 컴퓨터는 “2진수 밖에 모르기 때문에” 10진수를 다시 2진수로 변환해서 변수에 저장한다. 10진법과 2진법 일상생활에서 가장 많이 사용하는 진법은 10진법으로 0~9 , 즉 10개의 수를 표현할 수 있다. 9 보다 큰, 즉 10진수가 표현하지 못하는 수로 넘어가면, "올림"이 발생한다. 모든 진법에서 표현하는 수 이상을 넘어가게 되면 "올림"이 발생한다. 2 진법은 0-1 , 즉 2개의 ..

Java 2021.08.13

5. printf()

1. printf() 함수가 필요한 이유 println() 함수는 변수의 값을 "있는그대로" 출력한다. 원하는 상황에 따라서, 변수의 값의 "형식"을 다르게 출력하고 싶을 때가 있을 수 있는데, 이 때 printf() 함수를 사용한다. printf() 함수는 "지시자"를 통해 값을 출력하는 형식을 지정할 수 있으며, 함수가 호출될 때 값을 지시자에 맞게 변환하고 출력하는 기능을 가지고 있다. public class Printf { public static void main(String[] args) { System.out.printf("age: %d",29); //age: 29 } } 2. printf() 함수의 구조 public PrintStream printf(String format, Object ..

Java 2021.08.13

4. 상수와 리터럴

--- --- 0. 변수와 상수, 리터럴 변수와 상수 모두 “하나의 값을 저장하기위한 메모리 공간” 을 의미하고 있다. 변수는 값을 재 할당할 수 있지만, 상수는 한번 초기화하면 값을 재 할당할 수 없다. 상수는 변수 타입 앞에 final 키워드를 이용해서 사용하며, 변수 타입에 final 키워드가 기술되었을 시, 값을 재할당 할 수 없는 “상수” 가 된다. 상수는 값이 없을 수 없으므로 반드시 선언과 동시에 초기화해야한다. int age = 29; // 변수 int age = 30; // 메모리 안에 값의 재할당이 가능하다. final int AGE = 29; // 상수 AGE = 30; // X, 상수는 메모리 안에 값을 재할당 할 수 없다. “리터럴” 이란 값 자체를 의미한다. int score =..

Java 2021.08.13

3. 변수의 타입

--- --- 0. 주로 사용하는 값의 종류, 즉 데이터의 타입은 크게 문자/숫자 로 나누어 볼 수 있다. 숫자는 다시금 정수/실수로 나누어 볼 수 있다. 문자는 다시금 문자/문자열로 나누어 볼 수 있다. 이러한 값의 종류, 데이터의 타입에 따라서 값이 저장될 공간의 크기와 저장형식을 정의한 것을 “자료형” 이라고 한다. 정적 언어의 특성에 따라서, 컴파일 시점에 데이터의 타입(값의 종류)이/가 정해져있어야 하므로, 하나의 변수에 여러개의 타입을 저장할 수는 없다. 1. 기본형과 참조형 "자료형"은 다시금 기본형/참조형 으로 나누어볼 수 있다. 기본형 변수는 값 자체를 메모리에 저장하지만, 참조형변수는 메모리 주소를 변수에 저장한다. 기본형 변수 = data 자체 참조형 변수 = 메모리의 주소 즉 참조형..

Java 2021.08.12

2. 변수

0. 중요한 프로그래밍 능력 중 하나는 값(data)을 잘 다루는 것이다. 프로그래밍 언어에서 "변수"란, 값을 저장할 수 있는 메모리 공간을 의미한다. 단 하나의 값만 변수에 저장될 수 있으며, 변수에 다른 값을 저장하면, 변수는 다른 값 만을 저장하게 된다. 메모리란 RAM 을 의미하며, 논리적인 저장 공간을 의미한다. 하나의 저장공간의 기본단위는 1 byte 이며, 저장공간 하나 당 연속적인 숫자로 구분되어 있는데, 이 숫자를 "메모리 주소" 라고 한다. 메모리에 값(data)을 저장하거나 읽을 때는 메모리주소를 이용해야하지만, 연속적인 숫자이므로 사람이 기억하기가 어려워서 일정 공간에 "이름"을 주고 이름을 이용하여 메모리의 값을 읽거나 저장하는 것이 "변수"이다. 1. 변수 선언 변수를 선언하는..

Java 2021.08.12

1. 주석

0. 주석 작성하는 프로그램이 커지면 커질 수록, 프로그램을 이해하고 변경하는 일이 점점 더 어려워진다. 남이 작성한 코드를 이해하는 일은 정말 쉬운 일이 아니다...진짜루.. 주석은 프로그램을 이해하고 작성자, 작성일자, 변경사항, 버전 등의 정보를 제공할 목적으로 사용한다. 1. 종류 // 단일 행 주석 /* ~ */ 다중 행 주석 // 단일 행 주석 /* 다중 행 주석 */ /* Author : 정수민 Date : 2021.08.10 Source : Hello.java */ class Hello { public static void main(String[] args) { System.out.println("Hello World!") } } 주석은 컴파일러가 무시하기 때문에 성능에 영향을 끼치지 않는다.

Java 2021.08.10

0. 특징, JVM,

0. 자바 마이크로 시스템즈에서 개발한 객체지향 프로그래밍 언어 다양한 기종의 컴퓨터와 운영체제가 있는 인터넷 환경에서 적합한 프로그래밍 언어이다. 1. 특징 1.1 운영체제 독립적 자바는 JVM (자바 가상머신) 위에서 동작하기 때문에 운영체제에 독립적이다. Java 언어는 JVM 하고만 통신하며, JVM 이 Java 응용프로그램이 내린 명령을 받아 운영체제 맞는 언어로 변환해서 전달하는 구조이다. 하지만 JVM 은 운영체제 종속적이기 때문에, 운영체제 맞는 JVM 을 설치해야 한다. 1.2 객체지향 언어이다. 객체 지향 언어의 특징인 "상속" "캡슐화" "다형성" 을 잘 보존하고 있는 언어이다. 1.3 배우기 쉽다. 간단한 구문과 연산자를 지니면서 객체지향 언어의 특징인 "재 사용성" "유지보수의 용..

Java 2021.08.10

2021.05.12

요즈음..아니, 조금 됬지만, 슬럼프 비스무리 한 것 에 빠져있다는 느낌이 든다. 왜 이런 느낌이 드냐..라고 생각해보면, 전보다 스스로 열심히하는 것 같지 않아서 그런 것 같다. 이런 생각이 들기 시작할 때부터, 이럴 떄일 수록 더 스스로를 잡아야한다고 생각해서 열심히 하고 시간도 빠듯하게 사용했는데, 나도 모르게 조금씩 지쳐갔을 지도 모르겠다. 그렇다고 마냥 노는 것은 아니고, 쉬는 시간에 공부를 하거나 궁금한 부분이 생기면 공부하는데, 하루를 온전히 자기 개발에 쏟지 못한다는 것은 언제든 참 스스로에게 부끄럽다. 그러다보니 학원시절 예상했던 것과 정확히 일치하게끔, 내가 이 일을 좋아하는 가 라는 대답을 스스로 물어오게 되는데, 언제가 그렇듯 대답은 yes 다. 이게 얼마나 고마운지...다시 한번 ..

생각모음 2021.05.12

멀티모듈 빌딩 환경에서 Jenkins -> K8s 빌딩

목차 원격 저장소에 멀티모듈 빌드 방식으로 프로젝트를 잡아놓고, Dockerfile , K8s Manifest 작성 및 버전관리 Jenkins 빌드 라인 이후 통신 과정 요약 이유 커다란 뜻은 아니고, 좋은 기회가 있어, 개별 소스 관리 방식에서 멀티모듈의 부모 & 자식 관계의 프로젝트에 K8s 빌드라인까지 샘플링할 기회가 생겼다. 프로젝트 구조 및, 템플릿 젠킨스 빌드 파이프 라인 까지 세세하게 적지는 않음. YAML 템플릿 , setting & build.gradle 파일 정도 정리 일단 프로젝트 구조는 이러하다, 멀티모듈 방식이며, 부모 모듈에서 하위로 중복 디펜던시를 뿌리고, 관리하도록 했다. 간단한 샘플이므로, 해당 프로젝트의 build.gradle 은 모두 비어있는 파일이다. 부모 모듈 set..

Kubernetes 2021.05.12

WebFlux.fn 에서 전역범위 Validator를 만들어보자.

목차 구상 제네릭 선언만으로 해결해보기 결과 1. 구상 WebFlux.fn 작성 중, WebFluxConfigurer 에 Validator 를 등록해보니 안먹는 것 같아 직접 머리를 굴려보았다. => 기존 Valiadtor 의 Scope 를 Global 단위로 올리고 싶다. => 모든 Handler 에 Validator 추가 코드를 넣기 싫다. => Validator 를 넣더라도 추상화 단위가 있음 좋겠다. => 추상화 단위에서 Handler 마다 각각 다른 Validator 를 지정해주고 싶다. 이렇게 생각한 이유를 보면.. => 기존에 ReactiveChain 을 쓰다가 중복되는 코드가 싫어서 Builder 패턴을 생각해서 이렇게 만들었었다. public interface HandlerHelper {..

Etc 2021.04.20