일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Fluent-bit
- Kotlin
- Algorithm
- JavaScript
- lambda
- 연산자
- 자료형
- quicksort
- datastructure
- If
- JPA
- datatype
- MergeSort
- SpringBoot Initializr
- Class
- While
- redis
- programmers
- jvm
- UserDetails
- g1gc
- 기초
- zgc
- ansible
- Spring Security
- Sprint Security
- C++
- For
- Java
- IAC
- Today
- Total
목록Java (29)
뭐라도 끄적이는 BLOG
패키지(package) 자바에서 패키지란 클래스와 인터페이스의 집합을 의미한다. 서로 관련이 있는 클래스나 인터페이스를 함께 묶음으로써 파일을 효율적으로 관리할 수 있게 된다. 또한, 협업 시 서로 작업한 클래스 사이에서 발생할 수 있는 이름 충돌 문제까지도 패키지를 이용하면 피할 수 있다. 자바에서 패키지는 하나의 디렉터리를 의미한다. 따라서 하나의 패키지에 속한 클래스나 인터페이스 파일은 모두 해당 패키지 이름의 디렉터리에 포함되어 있다. 패키지는 다른 패키지를 포함할 수 있으며, 이때 디렉터리의 계층 구조는 점(.)으로 구분된다. java.lang.String 위 코드는 자바의 String 클래스는 java.lang 패키지에 속한 클래스라는것을 알 수 있다. 패키지 선언 package 패키지이름; ..
자바 상속의 특징 상속 상속(Inheritance)이란 기존의 클래스에 기능을 추가하거나 재정의한 새로운 클래스를 정의하는 것을 의미한다. 상속을 이용하면 기존에 정의되어 있는 클래스의 모든 필드와 메소드를 물려받아, 새로운 클래스를 생성할 수 있다. 이때 기존에 정의되어 있던 클래스를 부모 클래스(parent class) 또는 상위 클래스(super class), 기초 클래스(base class)라고도 한다. 그리고 상속을 통해 새롭게 작성되는 클래스를 자식 클래스(child class) 또는 하위 클래스(sub class), 파생 클래스(derived class)라고도 한다. class 자식클래스이름 extend 부모클래스이름 { ... } 자식 클래스에는 부모 클래스의 필드와 메소드만이 상속되며, ..
객체지향 객체지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보여주는 절차적인 시각에서 벗어나 여러 개의 독립된 단위인 "객체"들의 모임으로 파악하고자 하는 것이다. 객체지향의 기본 개념은 실 세계의 모든 것은 객체간의 상호작용에 의해 이루어진다는 개념하에 모든 것을 객체로 정의하는 것이다. 객체지향의 개념을 적용하여SW 시스템을 기본 구성이 객체(Object)단위로 구성되며, 객체들이 서로 관계성을 가지는 시스템으로 구성된다. 객체지향의 특징 캡슐화: 객체의 속성(data field)과 행위(methods)를 하나로 묶고 실제 구현 내용 일부를 외부에 감추어 은닉하여 외부..
제어문 제어문은 프로그램의 흐름을 변경하는 구문이다. 즉 프로그램의 연산이 진행되는 순서를 제어문으로 컨트롤 할 수 있다. 이러한 제어문은 조건/선택문, 반복문, 분기문이 있다. 조건문 (Conditional Statement) if 문 괄호안의 조건식을 근거로 구문들의 흐름을 변경한다. 주어진 조건문의 결과가 true이면 해당 블록이 실행되고 false이면 건너 뛴다. if (true or false){ 조건 true 시 실행되는 영역 } else if 구문에서 else 가 주어지면 조건문의 결과가 모두 false일때 else블록이 실행된다. if (true or false){ 조건 true시 실행되는 영역 } else{ 조건 false시 실행되는 영역 } else if else if로 조건을 추가할 ..
산술 연산자 산술 연산자는 대수학에서 사용되는 것과 같은 방식으로 수학 식에 사용된다. Operator Description Example + 양쪽 피연산자를 더합니다. A + B - 양쪽 피연산자를 뺍니다. A - B * 양쪽 피연산자를 곱합니다. A * B / 왼쪽 피연산자를 오른쪽 피연산자로 나눕니다. A / B % 왼쪽 피연산자를 오른쪽 피연산자로 나눈 나머지를 구합니다. A % B ++ 피연산자의 값을 1 증가 시킵니다. A++ -- 피연산자의 값을 1 감소 시킵니다. A-- Example public class Test { public static void main(String args[]) { int a = 10; int b = 20; int c = 25; int d = 25; System...
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에 신경 쓰지 않고 공통된 라이브러리를 이용해서 개발에 집중할 수 있게 되었다..