일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- programmers
- C++
- Kotlin
- JPA
- ansible
- UserDetails
- jvm
- datastructure
- Class
- quicksort
- 연산자
- Algorithm
- datatype
- For
- If
- Java
- g1gc
- SpringBoot Initializr
- 기초
- lambda
- redis
- Sprint Security
- JavaScript
- While
- IAC
- zgc
- MergeSort
- 자료형
- Spring Security
- Fluent-bit
- Today
- Total
목록BLOG HOME (78)
뭐라도 끄적이는 BLOG
Conditional expressions Kotlin은 조건식을 위해 if와 when을 제공한다. if와 when중 when을 사용하는 것을 더 추천한다. If you have to choose between if and when, we recommend using when as it leads to more robust and safer programs. - Kotlin공식 문서 if if를 사용하려면 괄호안에 조건식을 추가하고 중괄호 안에 결과가 참인 경우 수행할 작업을 추가한다. val d: Int val check = true if (check) { d = 1 } else { d = 2 } println(d) // 1 Kotlin에는 삼항 연사자(condition ? then : else)가 없..
변수 선언 방법 모든 프로그램은 데이터를 저장할 수 있어야 하며, 변수를 사용하여 데이터를 저장할 수 있다. Kotlin에서는 2가지 키워드를 사용하여 변수를 선언한 수 있다. val: 선언시에만 초기화가 가능하며 값을 변경할 수 없는 읽기전용 상수이다. var: 일반적인 변수 선언 방법으로 언제든 읽기 쓰기가 가능한 방법이다. 기본적으로 변수는 읽기 전용으로 선언하는 것이 좋다. val popcorn = 5// There are 5 boxes of popcorn val hotdog = 7// There are 7 hotdogs var customers = 10// There are 10 customers in the queue // Some customers leave the queue customer..
Kotlin은 IntelliJ IDEA로 유명한 JetBrains에서 만든 프로그래밍 언어로 Modern Programming Language로 불린다. 현재 Java가 사용되는 곳에서 거의 대부분 Kotlin을 적용시킬 수 있다. Kotlin의 특징은 다음과 같다. 다양한 프로그래밍 패러다임 지원 강력한 타입 추론 다양한 프로그래밍 패러다임 지원 절차지향 코드를 작성할 수 있어 코드를 컴파일 없이 스크립트처럼 사용할 수 있다. 또한 Java처럼 클래스를 통해 객체지향 프로그래밍 또한 가능하다. 그리고 함수형 프로그래밍으로 코드를 더 명확하고, 간결하게 작성할 수 있다. Kotlin은 JDK를 사용하기 때문에 동시성 프로그래밍이 가능하고, Coroutine으로 비동기 프로그래밍이 가능하다. 강력한 타입 ..
Java의 변수는 값을 저장할 수 있는 메모리 한 부분이다. 메모리의 크기와 사용법을 정의하기 위해 미리 정의해 놓은 Data Type(자료형)이 있다. Java의 자료형은 크게 primitive type과 reference type 2가지가 있다. Primitive Type 종류와 값의 범위 그리고 기본값 primitive type은 일정 길이의 메모리에 저장된 정보의 크기과 해석방법을 알려주고 직접 초기 값을 메모리에 넣어주는 자료형들 이다. 구분 Type Bits 기본값 Range of Values 정수형 byte 8 bits 0 -2^7 ~ 2^7-1 (-128 ~ 127) short 16 bits 0 -2^15 ~ 2^15-1 (-32768 ~ 32767) int 32bits 0 -2^31 ~ ..
GC의 원리 GC를 수행하기 위해서 몇가지 가설이 필요하다. 대표적으로 Weak Generational Hypothesis가 있다. 이 가설은 대부분의 객체는 빠르게 unreachable한 상태로 전환이 된다고 보고 있다. 특수한 경우를 제외하고 객체들이 중괄호가 끝나는 시점에서 더이상 사용되지 않고 unreachable한 상태가 되어 GC의 대상이 된다. 위 가설은 Oracle사에서 관찰하여 증명이 되어있다. 해당 자료에서 대부분의 객체가 빠르게 소멸하는 것을 알 수 있다. Mark And Sweep Algorithm root set으로 부터 출발하여, 참조되는 객체들에 대해서 마크를 하게 된다. 이 단계를 Mark Phase라고 한다. 이후 마크되지 않은 객체들을 추적하여 삭제를 한다. 삭제하는 단계..
JVM 구성요소 Class Loader Runtime Data Area Execution Engine Garbage Collector ① Class Loader Class Loader는 실행할 각각의 클래스 파일들을 찾아서 JVM의 메모리에 탑재해주는 역할을 한다. 이뿐만아니라 JVM에 관련된 Loading, Linking, Initialization 3가지 역할또한 맡게 된다. Loading: 클래스 파일을 탑재하는 과정 Linking: 클래스 파일을 사용하기 위해 검증하고, 기본 값으로 초기화하는 과정 Initialization: static field의 값들을 정의한 값으로 초기화를 하는 과정 Loading ClassLoader가 필요한 클래스 파일들을 찾아 탑재하게 된다. 각각의 클래스 파일들이 ..
Bytecode란 무엇인가 우리가 작성한 Java코드는 결국 컴퓨터가 이해할 수 있는 형태로 코드가 변환되어야 한다. Java는 Java컴파일러를 이용하여 JVM이 이해할 수 있는 코드인 Bytecode를 생성한다. Bytecode는 기계어는 아니지만 가상 머신에 의해 기계어로 손쉽게 변환할 수 있는 코드이다. 각각의 Bytecode는 1byte로 구성되지만 몇 개의 파라미터가 사용되는 경우가 있어 총 몇 바이트로 구성되는 경우가 있다. Bytecode는 JVM만 설치되어 있으면 어떤 운영체제에서든 실행할 수 있다. 그리고 JVM이 실행할 수 있는 Bytecode를 만들 수 있는 코드라면 Java 외 어떤 언어라도 실행 가능하다. (Kotlin, Scala 등..) Bytecode를 확인하고 싶다면 `j..
Java는... Java는 Sun Microsystems에서 James Gosling과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어이다. 현재 Oracle에서 Sun을 인수하여 Java는 Oracle의 상표가 되었다. JVM 이란 JVM(Java Virtual Machine)은 자바 가상 머신을 말한다. Java 이전의 언어들은 각 OS에서 제공하는 라이브러리들을 가져와 사용하고 각 OS에 특성에 맞게 개발을 해야 했다. Java는 이러한 불편함을 해소시키기 위해 JVM이라는 가상 머신에서 동작하도록 설계되었다. JVM이 자바 바이트코드(.class)를 각 OS에 특화된 코드로 변환하고 실행해주어 개발자들은 더 이상 OS에 신경 쓰지 않고 공통된 라이브러리를 이용해서 개발에 집중할 수 있게 되었다..
Ansible Ansible은 애플리케이션 및 IT인프라를 자동화 할 수 있는 도구이다. Ansible을 사용하여 호스트를 구성하고, 소프트웨어를 배포하고, 지속적인 배포 및 다운 타임 없는 롤링 업데이트 등 작업을 조율할 수 있다. Ansible의 주요 목적은 간결성과 사용 용이성이다. 시스템 관리에 어떠한 시스템이든 상관 없고 시스템 관리에 특별한 에이전트가 필요하지는 않지만 파이썬을 이용해서 작업들을 진행해야 되기 때문에 컨트롤 노드든 관리 노드든 파이썬이 설치되어 있어야 한다. Ansible의 장점 SSH기반으로 원격 노드에 에이전트를 설치할 필요가 없다. YAML을 사용하기 때문에 쉽게 배울 수 있다. 플레이북 구조는 간단하고 명확하게 구조화 되어 있다. 변수 기능을 사용하여 같은 작업에 대해서..
IaC란 IaC는 인프라를 웹 인터페이스 및 대화형식의 도구를 사용해 수동적으로 인프라를 구성하는 것이 아닌, 시스템이 읽을 수 있는 인프라 정의 파일을 통해 인프라의 구성 관리 및 배포를 자동화 하는 것이다. IaC를 사용하면 버전화, 재사용 및 공유할 수 있는 리소스 구성을 정의하여 안전하고 일관되며 반복 가능한 방식으로 인프라를 구축, 변경 및 관리할 수 있다. 인프라는 물리적 하드웨어 뿐만 아니라 가상 컴퓨터, 클라우드 등 관련 리소스를 IaC를 통해 구성 관리 및 배포할 수 있다. IaC는 폭발적으로 확장되는 컴퓨팅과 차세대 웹 프레임워크와 같은 새로운 기술을 구현하고 구성하는 어려움에 대한 해결책으로 발전하게 되었고, 기업들은 이런 기술을 통해 스케일링 및 확장문제도 해결할 수 있다. IaC의..