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") ..
Logging? 서비스 동작 시 시스템 상태, 작동 정보를 시간의 경과에 따라 기록하는 것을 말한다. 로깅을 사용하는 이유? 서비스 동작 상태를 파악하고, 발생한 장애를 알려주거나, 파악하기 위해 사용한다. 그러기 위해서는 Log Message에 Context를 담아주어야 한다. 어떤 위치에서 어떤 Param을 사용하였고 어떤 것이 실패하였다는 느낌으로 작성하자. 로깅을 사용할 때 주의할 점? Log 파일 / DB 생명 주기 & 저장소 용량 개인 정보 시스템 주요 정보 (시스템 보안, 계정 정보) Logging을 사용하는 방법? Linux System API(sysout) Java API(sysout) Java API(util.Logging) Logging Framework Spring Boot에서 제공..
8주 차 시작! 인터페이스 정의하는 방법 인터페이스란? 인터페이스는 (구현한) 하위 인스턴스를 참조할 수 있는 타입이며, 해당 인스턴스가 어떠한 행위를 할 수 있는지 클라이언트에게 알려주는 일종의 계약서 역할을 한다. 클라이언트는 해당 행위를 알려주고 구현부는 해당 타입의 인스턴스에게 맡김으로써 정보 은닉을 지킬 수 있다. 이는 반대로 생각한다면 클라이언트는 구현부의 변경에 따른 여파가 없음을 의미한다. 인터페이스를 정의하는 방법? {Access-Level-Modifier} interface {Name} { // JDK 7까지는 기본적으로 Static Method를 제외하고 추상 타입의 public Method 만을 // 선언할 수 있다. // 이 Method는 해당 Interface를 구현하는 Clas..
알게 모르게 한 번이라도 들어본 JDBC를 정리해보았습니다. Java Database Connectivity? Java와 여러 가지 데이터베이스 간의 연결을 위하여 제공되는 표준 인터페이스이다. DB 벤더나, 써드파티 관련 라이브러리에서 JDBC를 구현한 드라이버를 제공한다. DB 데이터 접근을 위해 계층 처리 모델을 제공한다. (기본 2계층 사용, 3계층 지원) 데이터베이스 벤더마다 각각의 SQL 문, 작성 방식을 사용함으로써 발생했던 문제점을 해결하였다. 달랐던 메서드, 구조, 전역 변수 등의 모든 문법을 통일시켜 API로 명세한 것이다. JDBC 구성 요소 JDBC DriverManager DB의 드라이버 목록을 관리하는 클래스 Java Application의 연결 요청을 적절한 DB Driver와..
프로젝트에 작성된 통합 테스트들이 개별적으로 동작할 때는 아무 문제가 발생하지 않았었는데, Gradle Test를 통해 전체적으로 진행하니 몇몇 문제가 발생하게 되었다. BUG! JdbcSQLSyntaxErrorException: Table "POST" already exists;... [42101-200] Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'postController' defined in file [C:\Users\serrl\Desktop\Mentoring\Somaeja\build\classes\java\main\com\somaeja\post\co..
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라고 한다. 이는 하..
Proxy Pattern? Proxy Pattern? 실제 비즈니스 로직과 그 외의 코드를 분리시키는 역할을 수행하는 객체를 만드는 패턴이다. -> 실제로 로직을 수행하는 객체의 인터페이스 역할을 하게된다. 객체를 호출하는 지점에서 프록시 객체를 호출하여 부가적인 코드를 수행한 뒤 참조 변수를 통해 실제 서비스 객체를 호출한다. 클라이언트는 프록시를 통해 서비스 객체 기능을 사용하기에 접근 권한 부가기능 리턴 값 변경 로깅 트랜잭션 등 이러한 기능을 추가 할 수 있다. 즉 서비스 객체의 SRP를 해치지 않고 프록시를 통해 책임을 추가할 수 있다. 해당 Pattern의 특징 프록시 객체는 실제 서비스 객체와 같은 이름의 메서드를 구현한다. 프록시 객체는 합성을 통해 서비스 객체에 대한 참조 변수를 가진다...
외부, 다른 도메인의 API를 통해 데이터를 제공받기 위해 사용할 수 있는 인터페이스를 조사해보았다. RestTemplate? Spring에서 제공하는 HTTP API 호출 시 사용할 수 있는 인터페이스이다. 멀티스레드 환경에서 안전하며 여러 기능을 지원한다. 내부적으로 하나의 요청에 하나의 쓰레드를 생성하여 동작시키는 Java Servlet API를 사용한다. 이는 각각 스레드가 일정량의 메모리와 CPU주기를 사용하고, 응답을 받을 때까지 스레드가 차단되는 동기화 모델이다. 비동기 방식의 동작을 제공하는 AsysncRestTemplate 도 있지만, WebClient 라는 인터페이스가 생겨남으로써 최적화된, 최신의 기술을 제공하기에 필요성을 잃어 deprecated 되었고, RestTemplate 은 ..
물리 계층의 역할과 랜 카드의 구조 전기 신호 0과 1로 이루어진 이진 데이터를 전기 신호로 변환하기 위하여서 사용되는 계층은 물리 계층이다. 아날로그 신호 물결 모양을 그리는 신호를 말하며 전화 회선이나 라디오 방송에 사용되는 신호이다. 랜 카드 송신하여야할 데이터를 전기 신호로 변환하며, 전기 데이터를 이진 데이터로 변환하는 장치이다. 케이블의 종류와 구조 전송 매체 네트워크 구조에서 전기로 변환된 데이터가 흐르는 물리적인 선로를 말한다. 트위스트 페어 케이블 ( LAN Cable ) 선로 내부에 가닥들을 꼬아놓은 것을 말한다. UTP 케이블 구리 선 여덟 개를 두 개씩 꼬아 만든 네 쌍의 전선으로 실드로 보호되어 있지 않은 케이블이다. 실드 금속 호일이나 금속의 매듭과 같은 것으로 외부에서 발생하는..
프로토콜 Protocol 네트워크에서 통신하기 위한 일종의 규약, 규칙을 말한다. 데이터를 전송하는 과정에 있어서 규정된 독립적인 규칙을 거쳐야만 한다. OSI 모델과 TCP/IP 모델 OSI 모델 네트워크 구조에 대한 표준 규격 중 하나로 컴퓨터 내부에서 벌어지는 일들을 각각의 계층으로 분리한 모델을 말한다. 응용, 표현, 세션, 전송, 네트워크, 데이터 링크, 물리 계층 Application Layer : 응용 계층 (7) 이메일, 파일 전송, 웹 사이트 조회 등 Application과 관련된 서비스를 제공한다. Presentation Layer : 표현 계층 (6) 문자 코드, 압축, 암호화 등의 데이터를 변환한다. Session Layer : 세션 계층 (5) 세션 체결, 통신 방식을 결정한다. ..
- Total
- Today
- Yesterday
- RESTful
- spring
- transaction
- JPA
- lambda
- 커뮤니티 오거나이저
- URN
- HTTP
- Thundering Herd
- 한국 스프링 사용자 모임
- rabbitmq
- mybatis
- 근황
- Redis Key
- Optimistic Locking
- spring AOP
- Switch
- configuration
- Request Collapsing
- AMQP
- JVM
- RPC
- Url
- JDK Dynamic Proxy
- java
- cache stampede
- 게으른개발자컨퍼런스
- WiredTiger
- cglib
- URI
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |