일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- If
- MergeSort
- jvm
- JavaScript
- Kotlin
- Fluent-bit
- datatype
- g1gc
- lambda
- 연산자
- SpringBoot Initializr
- IAC
- ansible
- Java
- redis
- Sprint Security
- C++
- While
- Class
- UserDetails
- Algorithm
- JPA
- datastructure
- For
- programmers
- Spring Security
- 자료형
- quicksort
- zgc
- 기초
- Today
- Total
목록Java (17)
뭐라도 끄적이는 BLOG
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/y8OqU/btsl0W4twms/l33gien5H5FedKHvz0eHAk/img.png)
람다(java 8) public interface Printable { void print(String s); } public class Printer implements Printable{ @Override public void print(String s) { System.out.println(s); } public static void main(String[] args) { Printable prn = new Printer(); prn.print("What is Lambda?"); } } 일반적으로 인터페이스는 바로 인스턴스를 생성할 수 없기 때문에 클래스로 구현한 뒤에 사용한다. 하지만 인터페이스의 함수가 적거나 이벤트와 같이 특별한 경우에만 적용된다면 익명 클래스를 이용해서 사용하기도 한다. pu..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/qTLJE/btsl2TlmJp8/xmyKKnZ5XAaulb3F0HkHNk/img.png)
제네릭 제네릭은 JDK 1.5부터 등장하였다. 제네릭은 데이터 타입을 일반화 하는 것을 의미한다. 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법이다. 이렇게 컴파일시 type check를 하면 클래스나 메소드 내부에서 사용되는 객체의 타입의 안정성을 높일 수 있으며 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다. 제네릭 이전에는 클래스나 메소드의 매개변수나 반환값으로 Object타입을 사용다. 하지만 반환된 Object객체를 다시 원하는 타입으로 변환하는 과정에서 프로그래머의 실수가 잦았다. 이젠 제네릭을 사용하여 컴파일 타임에 미리 타입이 정해져 타입 검사나 타입 변환과 같은 번거로운 작업을 생략할 수 있게 되었다. 제네릭 사용법 class Bo..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bHWq0r/btsl1UZpbMW/Bkr862BYa7UzHsQrkgkZ81/img.png)
I/O 입출력 입출력(I/O)이란 Input과 Output의 약자로 입력과 출력을 말한다. 흔히 줄여서 입출력이라고들 많이 말하며 컴퓨터 내부 또는 외부 장치와 프로그램간의 데이터를 주고 받는 것을 말한다. 예를들어 파일이나 네트워크에서 데이터를 읽고 파일에 쓰거나 네트워크를 통해 응답을 하는 동작 모두 입출력이라고 한다. Java.io & java.nio java에는 java.io와 java.nio 2가지 IO 패키지가 존재한다. nio는 new-io라고도 하며 Non-Blocking io라고도 한다. IO NIO Stream Buffer 단방향 양방향 Blocking IO Non blocking IO Selectors java.io 스트림 (Stream) Java에서 어느 한 쪽에서 다른 쪽으로 데이..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/OMqZz/btsl2cZXwEF/Qff0fVWCkisQKqYQCzEPz0/img.png)
Annotation Annotation은 주석이라는 뜻이다. 하지만 Java의 기본 주석은 "//"또는 "/* */"로 사용해왔다. 이러한 일반 주석과 Annotation의 차이점은 Annotation에선 코드를 작성할 수 있다는 것이다. 코드를 작성할 수 있다는 것은 Annotation으로 뭔가를 할 수 있다는 뜻이 된다. Annotation은 java 1.5에서 등장했다. 기존 자바는 선언적 프로그래밍 방식으로 개발을 하면서 각 계층별 설정 데이터들을 XML에 명시하였다. 이는 서비스의 규모가 클 수록 설정양이 많아지고 도메인 처리의 데이터들이 분산되어 있어 수정이 힘들었다. 이후 Annotation이 등장하면서 데이터 유효성 검사 등 직접 클래스에 명시해 줄 수 있게되어 수정이 필요할 때 쉽게 파악..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/oW1Le/btsl0XoGH8V/GezUjnagxjEh8tmUjpBiD0/img.png)
enum 정의하는 방법 Enum은 Enumeration의 약자로 열거형 이라고 부른다. public enum Week { MON,TUE,WEN,THU,FRI,SAT,SUN } class나 interface도 상수를 이용하여 같은 용도로 사용할 수 있지만 그런 용도로 사용하라고 만들어진 것이 아니기때문에 Enum을 사용하는 것이 더 좋습니다. public class Enumeration { public static void main(String[] args) { Week week = Week.FRI; switch (week) { case MON: case TUE: case WEN: case THU: case FRI: case SAT: case SUN: default: break; } } } Enum은 sw..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bBjQGV/btsl2dLmisE/y1zzR3pPkx6grLAr2mH77K/img.png)
Process와 Thread Thread에대한 공부를 시작하기전에 가장 먼저 알아야될 것은 Process와 Thread가 각각 무엇인지 알아야된다. Process란 간단히 말하면 실행중인 프로그램을 말한다. 운영체제에 의해 메모리 공간을 할당받아 실행 중인 프로그램 프로세스는 프로그램에 사용되는 데이터와 메모리등의 자원을 운영체제에서 할당받게되며 작업을 쓰레드로 구성 프로세스간 자원을 공유하기 위해서는 IPC를 활용해야 한다. Thread란 프로세스에서 실제 작업을 수행하게되는 작업의 단위 모든 프로세스에는 하나 이상의 쓰레드가 존재하여 작업을 수행 두 개 이상의 쓰레드를 가지는 프로세스를 멀티 쓰레드 라고 한다. 쓰레드는 프로세스의 자원을 공유할 수 있다. Thread 클래스와 Runnable 인터페이..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/ehl9ns/btsl9Ndu53w/Ghkkzc5XiwV9RrmMxuQQ90/img.png)
자바에서 예외 처리 방법 (try, catch, throw, throws, finally) try - catch - final 예외를 처리하기 위한 try-catch기본적인 구문으로 구조는 아래와 같다. try { 예외를 처리하길 원하는 실행 코드; } catch (e1) { e1 예외가 발생할 경우에 실행될 코드; } catch (e2) { e2 예외가 발생할 경우에 실행될 코드; } try 블록은 기본적으로 먼저 실행되는 코드로 이곳에서 예외가 발생하면 catch 블록에서 처리하게 된다. catch블록은 try블록에서 발생항 예외 코드나 예외 객체를 인수로 전달받아 그 처리를 담당한다. 위 코드에서 finally문을 추가해서 사용할 수 있다. try { 예외를 처리하길 원하는 실행 코드; } catc..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/RNGRk/btsl5ikNboK/ssc1rTxMUyG8n6TKU4yz70/img.png)
패키지(package) 자바에서 패키지란 클래스와 인터페이스의 집합을 의미한다. 서로 관련이 있는 클래스나 인터페이스를 함께 묶음으로써 파일을 효율적으로 관리할 수 있게 된다. 또한, 협업 시 서로 작업한 클래스 사이에서 발생할 수 있는 이름 충돌 문제까지도 패키지를 이용하면 피할 수 있다. 자바에서 패키지는 하나의 디렉터리를 의미한다. 따라서 하나의 패키지에 속한 클래스나 인터페이스 파일은 모두 해당 패키지 이름의 디렉터리에 포함되어 있다. 패키지는 다른 패키지를 포함할 수 있으며, 이때 디렉터리의 계층 구조는 점(.)으로 구분된다. java.lang.String 위 코드는 자바의 String 클래스는 java.lang 패키지에 속한 클래스라는것을 알 수 있다. 패키지 선언 package 패키지이름; ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/rgp2f/btsl0U6woFV/i0I70s3GLAf73qcyndq2r0/img.png)
자바 상속의 특징 상속 상속(Inheritance)이란 기존의 클래스에 기능을 추가하거나 재정의한 새로운 클래스를 정의하는 것을 의미한다. 상속을 이용하면 기존에 정의되어 있는 클래스의 모든 필드와 메소드를 물려받아, 새로운 클래스를 생성할 수 있다. 이때 기존에 정의되어 있던 클래스를 부모 클래스(parent class) 또는 상위 클래스(super class), 기초 클래스(base class)라고도 한다. 그리고 상속을 통해 새롭게 작성되는 클래스를 자식 클래스(child class) 또는 하위 클래스(sub class), 파생 클래스(derived class)라고도 한다. class 자식클래스이름 extend 부모클래스이름 { ... } 자식 클래스에는 부모 클래스의 필드와 메소드만이 상속되며, ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/lD9e5/btsl2TesTyV/NwJd16dyD4dACxcndxxNCK/img.png)
객체지향 객체지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보여주는 절차적인 시각에서 벗어나 여러 개의 독립된 단위인 "객체"들의 모임으로 파악하고자 하는 것이다. 객체지향의 기본 개념은 실 세계의 모든 것은 객체간의 상호작용에 의해 이루어진다는 개념하에 모든 것을 객체로 정의하는 것이다. 객체지향의 개념을 적용하여SW 시스템을 기본 구성이 객체(Object)단위로 구성되며, 객체들이 서로 관계성을 가지는 시스템으로 구성된다. 객체지향의 특징 캡슐화: 객체의 속성(data field)과 행위(methods)를 하나로 묶고 실제 구현 내용 일부를 외부에 감추어 은닉하여 외부..