일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링 핵심 원리 이해
- 객체 지향 설계와 스프링
- Kotlin in action 10장
- 백준
- 코틸린인액션
- kotlin in action 정리
- Kotlin in action 5장
- 20055
- Kotlin In Action
- KotlinInAction
- 13460 구슬탈출 2
- 20055 컨베이어 벨트 위의 로봇
- spring
- 고급매핑
- Python
- 싱글톤 컨테이너
- 기능개발 python
- 7장 고급매핑
- 코틀린인액션
- 자바 ORM 표준 JPA 프로그래밍 7장
- Kotlin in action 6장
- Kotlin
- Kotlin in action 3장
- 스프링 핵심 원리
- 코틀린
- 백준 20055 컨베이어 벨트 위의 로봇
- 백준 13460 Python
- 스프링 핵심 원리 - 기본편
- 스프링 컨테이너와 스프링 빈
- 컨베이어 벨트 위의 로봇 Python
- Today
- Total
기록하는 습관
** 이 글은 Kotlin In Action을 읽고 정리한 글입니다. ** 1. 람다 식과 멤버 참조 1-3. 람다 식의 문법 { x:Int, y:Int -> x + y } 코틀린 람다 식은 항상 중괄호로 둘러싸여 있다. 화살표(->)가 인자 목록과 람다 본문을 구분한다. 실행 시점에 코틀린 람다 호출에는 부가 비용이 들지 않으며, 프로그램의 기본 구성 요소와 비슷한 성능을 낸다. 1) 함수 호출 시 맨 마지막 인자가 람다식이라면 이를 괄호 밖으로 빼낼 수 있다. people.maxBy() { p -> p.age } 2) 람다가 어떤 함수의 유일한 인자이고 괄호 뒤에 람다를 썼다면 호출 시 빈 괄호를 없애도 된다. people.maxBy { p -> p.age } 3) 람다의 파라미터가 하나뿐이고 컴파일..
** 이 글은 Kotlin In Action을 읽고 정리한 글입니다. ** 1. 클래스 계층 정의 1-1. 코틀린 인터페이스 interface Clickable { fun click() } class Button : Clickable { override fun click() = println("I was clicked") } >>> Button().click() // I was clicked 코틀린에서는 클래스 이름 뒤에 콜론(:)을 붙이고 인터페이스와 클래스 이름을 적는 것으로 클래스 확장과 인터페이스 구현을 모두 처리한다. override 변경자는 상위 클래스나 상위 인터페이스에 있는 프로퍼티나 메서드를 오버라이드 한다는 표시다. 코틀린에서는 override 변경자를 꼭 사용해야 한다. 인터페이스 메..
** 이 글은 Kotlin In Action을 읽고 정리한 글입니다. ** 1. 코틀린에서 컬렉션 만들기 코틀린은 자체 컬렉션을 제공하지 않는다. 표준 자바 컬렉션을 활용하면 자바 코드와 상호작용하기 훨씬 더 쉽기 때문. val set = hashSetOf(1, 7, 53) val list = arrayListOf(1, 7, 53) val map = hashMapOf(1 to "one", 7 to "seven", 53 to "fifty-three") 코틀린 컬렉션은 자바 컬렉션과 똑같은 클래스다. 하지만 코틀린에서는 자바보다 더 많은 기능을 쓸 수 있다. ex) last(), max() val strings = listOf("first", "second", "fourteeth") println(strin..
** 이 글은 Kotlin In Action을 읽고 정리한 글입니다. ** 1. 기본 요소 : 함수와 변수 1-1. 함수 코틀린에서 if 는 식(expression)이지 문(statement)이 아니다. 식 : 값을 만들어내며 다른 식의 하위 요소로 계산에 참여할 수 있다. 문 : 자신을 둘러싸고 있는 가장 안쪽 블록의 최상위 요소로 존재하며 아무런 값을 만들어내지 않는다. 자바에서는 모든 제어 구조가 ‘문’ 인 반면, 코틀린은 루프를 제외한 대부분의 제어 구조가 ‘식’이다. // 블록이 본문인 함수 (본문이 중괄호로 둘러싸인 함수) fun max(a : Int, b : Int) : Int { return if ( a > b ) a else b } // 식이 본문인 함수 (등호와 식으로 이뤄진 함수) f..
** 이 글은 Kotlin In Action을 읽고 정리한 글입니다. ** 0. Kotlin 이란? Java 와의 상호운용성을 고려하고 실용성을 갖춘 언어 서버 개발, 안드로이드 개발 등 Java가 사용중인 곳이면 대부분 Kotlin을 사용할 수 있다. Java보다 더 간결한 코드로 편하게 사용 가능하다. 1. 정적 타입 지정 언어 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메서드를 사용할 때마다 컴파일러가 타입을 검증해줌 참고) 동적 타입 지정 언어란? 타입과 관계없이 모든 값을 변수에 넣을 수 있다. 메서드나 필드 접근에 대한 검증이 실행 시점에 일어난다. 장점 - 코드가 더 짧아지고 데이터 구조를 더 유연하게 생성하고 사용할 수 있다. 단점 - 이름을..
##1. 회복성 패턴 서비스에 장애가 발생했을 때, 문제가 전파되는 것을 막는 구현 방식은 3가지가 있다. Circuit Breaker 서비스 호출을 모니터링 하여 일정 timeout을 넘기면 실패 횟수가 카운팅 되고 조건에 충족되면 회로 차단기가 활성화 되어 다른 서버로의 장애 전파를 막는다. Fall back 회로 차단기에 의해 서비스 호출이 실패하면 대체 코드를 서비스 한다. Bulk head 스레드를 격리된 구획으로 관리하여 특정 스레드에 문제가 발생시 전체 application이 다운될 위험을 방지한다. ##2. 종류 Hytrix Hystrix는 Netflix에서 Circuit Breaker, Fall back, Bulk head 패턴을 구현한 라이브러리. 2018년도에 공식적으로 개발 종료. ..
공부해볼 디자인 패턴 템플릿 메서드 패턴 전략 패턴 템플릿 콜백 패턴 디자인패턴 공부시, 가장 중요한 것은 바로 디자인패턴의 의도이다. 의도 생각하면서 공부할 것. 1. 템플릿 메서드 패턴 정의: 작업에서 알고리즘의 골격을 정의하고 일부 단계를 하위 클래스로 연기합니다. 템플릿 메서드를 사용하면 하위 클래스가 알고리즘의 구조를 변경하지 않고도 알고리즘의 특정 단계를 재정의할 수 있습니다. [GOF] 변하는 것과, 변하지 않는 것을 분리 단일 책임 원칙을 잘 지킨 패턴 Single Responsibility Principle 단일 책임 원칙은, 변경이 있을 때 가장 잘 드러나게 된다. (SRP를 잘 지켰다면 변경 최소) 템플릿 패턴은 변경 지점을 하나로 모아, 변경에 쉽게 대처하도록 함. 추상 클래스에 공..
스프링 핵심 디자인 패턴 템플릿 메서드 패턴 전략 패턴 템플릿 콜백 패턴 프록시 패턴 데코레이터 패턴 데이터 동기화 방법 Parameter 동기화 개념: 데이터를 함수 파라미터로 넘겨주어 동기화 시킴. 문제점: 동기화를 위해 관련 method의 모든 parameter를 수정해야 한다. (만약, 인터페이스가 있다면 인터페이스까지 모두 고쳐야 함) Field 동기화 개념: 객체 내의 필드로 초기화 시키고 값을 변경하면서 동기화 시킴. 문제점: 동시성 문제가 발생. 필드 객체가 singleton으로 등록된 spring bean이기 때문이다. 이 인스턴스의 필드를 여러 thread가 동시에 접근하게 되기 때문에 문제가 발생한다. 싱글톤 객체의 필드를 사용하면서 동시성 문제를 해결하려면? -> ThreadLoca..