제출하지 못했던 10주차까지 완료! 프로세스? 스레드 단위 작업을 지원하기 위한 자원의 할당 단위이며, 커널 위에서 현재 실행 중인 프로그램을 의미한다. 프로세스 안에는 하나 이상의 스레드가 존재한다. 왜 멀티 프로세스 방식을 사용하지 않는가? 프로세스를 이용하여서도 멀티 프로세싱이라고 하는 방법을 이용하여 하나의 작업을 병렬적으로 처리할 수 있다. 하지만 이 방식은 각각의 프로세스가 쉽게 공유되지 않는 자신만의 데이터 영역들을 가지고 있기 때문에 데이터 처리, 공유 방식과 메모리 공간 점유에 대한 문제가 발생한다. 작업을 진행할 때마다 프로세스의 작업 내용이 cpu로 로딩이 된다. 이후 다른 작업을 진행하여야 할 때 기존에 사용하는 것을 내리고 다른 프로세스를 로딩하게 되는데 스레드 방식보다 들어가는 ..
함수형 프로그래밍이란? 순수 함수들을 조합하여 사이드 이펙트(부작용)를 제거하고, 모듈화를 높여 유지보수와 생산성을 올리는데 초점을 둔 패러다임이다. Non Blocking과 Asynchronous , Parallel Programming을 구현, 지원하는데 적합하다고 한다. 함수형 프로그래밍의 사고방식은 문제 해결에 대해 선언적인 행위(함수)들을 조합(구성)하여 해결하는 것이다. 자바도 스칼라, 자바스크립트와 같은 함수형 패러다임 언어 혹은 지원하는 언어, 기술들의 대두로 인하여 JDK 8부터 해당 기능을 도입하게 되었다. 함수형 인터페이스, 람다, 메서드 레퍼런스, 디폴트 메서드, Future, Fork-Join, 리액티브 등 추가 1급 객체 함수형 프로그래밍의 중요한 조건 중 하나를 의미한다. 이는..
스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O I/O? Input : 입력, Output : 출력 Application(JVM) 외부의 입력을 받고, 내부의 결과를 외부로 전달하는 모든 흐름을 의미한다. Scanner, InputStream을 통한 키보드, CSV 등의 포맷 파일 입력 등 OutputStream을 통한 Console 출력, TCP/IP를 이용한 외부 Application(JVM)에 전달 등 Stream - Java I/O? 데이터를 전달하고, 입력받을 때 필요한 단방향 통로를 말한다. 기본적인 Java I/O API에서는 입력과 출력을 위한 각각의 Stream이 필요하다. 기본적으로 Buffer를 사용하지 않는 방식이며, 데이터를 받은 즉시 처리..
Annotation을 정의하는 방법 Annotation이란? JDK 1.5에 추가된 기능으로 실제 코드에 직접적인 영향을 주지 않고, 해당 코드를 처리하는 ****Compiler , Interpreter 혹은 Runtime에서 JVM에게 처리를 위한 정보를 제공하는 것이 주목적이다. Single-Value Annotation 단일 변수만을 갖는 Annotation을 말하며, 값을 명시하여 데이터를 전달할 수 있다. @SuppressWarnings, @Retention, @Target... Full Annotation 두 개 이상의 변수를 갖는 어노테이션으로 여러 데이터를 ", "를 기준으로 Key : value 형식으로 전달하게 된다. @Generated... Marker Annotation과 Inter..
enum 정의하는 방법 해당 타입은 JDK 5에 추가되었으며, 상수들을 정의, 열거하는 데 사용되는 키워드이다. 기존에 사용되던 final static keyword를 사용한 변수 선언 등을 대체하였다. 해당 키워드의 특징으로는 모든 Java의 enum들은 암시적으로 java.lang.Enum Class를 확장한다. 정의된 상수 하나당 하나의 인스턴스가 생성된다. public static final type instance 데이터를 비교할 때 실제 값과 함께 타입을 체크한다. 메서드와 필드를 추가하고 인터페이스를 구현할 수 있다. 다른 Primitive Type Variable 과 같이 Switch Statement에서 사용할 수 있다. 정의 시 Class Level에서 사용된다. 정도가 있다. enum..
9주 차 시작! 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) try Statements try { // Do SomeThing.. } 예외가 발생할 수 있는 로직을 실행할 때 예외가 발생하는 것을 잡아내기 위해 사용하는 Statements이다. 주로 JDBC Connection이나 File Reader, API에 대한 URL Connection 등을 처리하는 로직을 감싸는 데 사용한다. Ex) JDBC try { connection = dataSource.getConnection(); //SQLException 이 발생 가능하다. ResultSet resultSet = connection.prepareStatement("SELECT * FROM USER") ..
8주 차 시작! 인터페이스 정의하는 방법 인터페이스란? 인터페이스는 (구현한) 하위 인스턴스를 참조할 수 있는 타입이며, 해당 인스턴스가 어떠한 행위를 할 수 있는지 클라이언트에게 알려주는 일종의 계약서 역할을 한다. 클라이언트는 해당 행위를 알려주고 구현부는 해당 타입의 인스턴스에게 맡김으로써 정보 은닉을 지킬 수 있다. 이는 반대로 생각한다면 클라이언트는 구현부의 변경에 따른 여파가 없음을 의미한다. 인터페이스를 정의하는 방법? {Access-Level-Modifier} interface {Name} { // JDK 7까지는 기본적으로 Static Method를 제외하고 추상 타입의 public Method 만을 // 선언할 수 있다. // 이 Method는 해당 Interface를 구현하는 Clas..
7주 차 시작! package 키워드 자바의 패키지는 비슷한 성격의 자바 클래스들을 모아 놓은 자바의 디렉터리를 말한다. 크게는 built-in package 와 custom package로 구분할 수 있다. package 키워드는 모든 클래스 파일에 최상단에 존재하여야 하고, 하나의 소스만 존재해야 한다. Built-in package? (내장 패키지) java, lang, javax, net, io, util, math... 등 Java API에 포함된 모든 패키지들을 말한다. Custom package? (사용자 정의 패키지) 사용자(개발자)가 정의한 패키지를 말한다. Sub package? (하위 패키지) 어떤 package 내부에 존재하는 package를 Sub package라고 한다. 이는 하..
자바 상속의 특징 OOP 이전의 방식 이전 패러다임에서 코드를 재사용하는 방법은 복사한 후 로직 인자에 맞게 수정하는 방식이었다. 이후 기존 로직을 변경해야 할 때, 두 개의 코드다 변경해야 되는 것도 문제고, 하나의 코드를 수정하였다고 하여서 다른 코드를 그렇게 수정하면 된다는 보장이 존재하지 않는다. 즉 유지보수에 취약한 코드가 작성, 양산되는 것이다. 새롭게 등장한 OOP 패러다임에서는 이러한 부분을 해결하기 위해 도입한 방식이 상속이다. 상속이란? 기반이 되는 상위 클래스의 특성을 하위 클래스에게 적용하고, 거기에 더해 필요한 특성을 추가, 확장하는 방식을 말한다. 상속의 목적은 기존 기능의 확장과 코드의 재사용이다. 상위 클래스? 어떠한 속성과 코드를 (하위 클래스들에게) 제공하는 클래스를 말한..
클래스란 무엇일까? 클래스는 어떠한 객체들에 대한 분류이다. 분류, 집합, 같은 속성과 기능을 가진 객체들을 총칭하는 개념이다. 클래스는 해당 객체가 무엇인지 판단할 수 있는 일종의 식별 타입이 된다. 클래스의 구성요소 변수 : 클래스의 Scope = { } 안에서 존재하는 변수를 말한다. 객체 변수 : 접근 제어자와 변수 타입, 변수 명을 가지는 일반적인 상태 변수를 말한다. 해당 변수는 클래스 정보에서 초기화되지 않고, 해당 타입을 가지는, 상속받은 객체가 생성되었을 때 Scope에 맞게 가시 된다. (공유된다) 클래스 변수 : 위의 요소를 가지면서, static 이 작성된 상태 변수를 말한다. 클래스가 로드되는 시점에 Class 정보가 저장되는 영역에서 해당 정보가 등록, 초기화 되기 때문에 이러한..
- Total
- Today
- Yesterday
- lambda
- AMQP
- 근황
- URI
- HTTP
- Global Cache
- 게으른개발자컨퍼런스
- java
- rabbitmq
- Distributed Cache
- 소비자 관점의 api 설계 패턴과 사례 훑어보기
- RESTful
- cglib
- JDK Dynamic Proxy
- Local Cache
- Data Locality
- 게으른 개발자 컨퍼런스
- mybatis
- Url
- JPA
- Cache Design
- spring
- hypermedia
- URN
- Switch
- RPC
- configuration
- THP
- spring AOP
- JVM
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |