타입을 나타내는 변수인 타입 파라미터 T는 사실 nullable하다. 타입 파라미터를 not null한 타입 파라미터로 사용하려면 T:Any 널이 될 수 없는 타입 상한을 지정해야한다. T는 nullable이 될 수 있지만, not null로 타입 추론된다
Chapter 8: Efficient collection processing Sequence는 lazy하게 처리. 자연스러운 처리 순서(element-by-element). 최소한으로 연산. 무한 sequence로 사용 가능. 각각의 단계에서 컬렉션을 만들어내지 않는다
이펙티브 코틀린 책 Item 45 불필요한 객체 생성을 피하는 것이 최적화에서 중요. 객체로 wrap하는 것은 비용이 발생. 객체 선언, 캐시를 활용하는 팩토리 함수, 무거운 객체를 외부 스코프로 보내기, 지연 초기화, primitives 사용으로 최적화하기
멀티 스레드(Multi-Threading)와 멀티 프로세스(Multi-Processing) 비교. 스레드에서 예외가 발생하면 해당 프로세스의 모든 스레드가 영향. 메모리를 공유하지 않기 때문에, 프로세스 간 통신이 필요. 프로세스 생성 및 소멸 비용이 스레드보다 크다.
try-with-resources 구문은 자원을 사용한후 자동으로 닫아주는 기능을 제공. 코드가 간결해지고, 자원 해제가 자동으로 이루어지므로 예외 처리 코드도 간편해진다. Kotlin에서는 use함수를 사용하여 try-with-resources 기능을 할 수 있다.
Exposed는 Kotlin언어로 작성된 ORM(Object Relational Mapping) 라이브러리다. 실제 insert를 batchInsert 하기 위해서는 JDBC 드라이버에서 제공하는 rewriteBatchedStatements 옵션을 활성화해야한다.
트랜잭션(Transaction)은 데이터베이스 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위를 뜻한다.작업의 단위는 명령문 하나가 아니다.하나의 논리적 기능을 수행하기 위한 많은 질의어 명령문들을 하나의 트랜잭션이라 한다.트랜잭션은 ACID라는 4가
Rust와 C++ 둘다 시스템 프로그래밍, 임베디드 프로그래밍 언어다.둘다 low level 언어로 하드웨어, 컴퓨터에 가까운 엑세스를 다룬다는 공통점이 있다.하지만 Rust가 뜨고 있는 현재, 분명한 차이점은 존재한다.메모리 관리가 매우 중요하다고 볼 수 있는데 C+
HTTP HTTPS HTTP Secure 월드 와이드 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전 서버와 클라이언트 사이의 모든 통신 내용이 암호화 인증, 전자상거래와 같이 보안이 중요한 트래픽에 이용 SSL 인증서는 사용자가 사이트에 제공하는 정보를 암호화한다
개발의 제어권을 스프링 컨테이너가 가지고 개발자 대신 Bean들을 제어해주는 행위스프링이 개발자 대신 객체를 제어하기 위해서는 객체들이 Bean으로 등록되어있어야 한다.Annotation으로 간단하게 등록할 수 있다.스프링 MVC에서는 @Controller, @Serv
객체와 테이블 매핑 : @Entity, @Table필드와 컬럼 매핑 : @Column기본 키(PK) 매핑 : @Id연관관계 매핑 : @ManyToOne, @JoinColumn@Entity가 붙은 클래스는 JPA가 관리DB의 테이블과 매핑name : Entity 이름을
create: 시작시점에 DROP을 실행하고 테이블 생성 (DROP + CREATE)create-drop: 시작시점에 DROP을 실행하고 테이블 생성하며, 종료시점에 테이블 DROP update: 변경된 스키마 적용validate: 변경된 스키마가 존재하면 변경사항 출
객체 지향 특징은 추상화, 캡슐화, 상속, 다형성이 있으며 다형성에 대해 자세히 알아보겠습니다. 좋은 객체 지향 설계의 5원칙은 SRP 단일 책임 원칙 OCP 개방-폐쇄 원칙 LSP 리스코프 치환 원칙 ISP 인터페이스 분리 원칙 DIP 의존관계 역전 원칙입니다.
spring 기반의 새로운 프로젝트를 위해 aws ec2 인스턴스를 생성하였습니다. 윈도우 환경을 사용하고 있기 때문에 PuTTY를 사용하여 ec2 인스턴스에 접속하겠습니다. 기본값으로 두고 "Install"후 "Finish"를 클릭해 PuTTY 설치를 완료합니다.