자바 상속의 특징 OOP 이전의 방식 이전 패러다임에서 코드를 재사용하는 방법은 복사한 후 로직 인자에 맞게 수정하는 방식이었다. 이후 기존 로직을 변경해야 할 때, 두 개의 코드다 변경해야 되는 것도 문제고, 하나의 코드를 수정하였다고 하여서 다른 코드를 그렇게 수정하면 된다는 보장이 존재하지 않는다. 즉 유지보수에 취약한 코드가 작성, 양산되는 것이다. 새롭게 등장한 OOP 패러다임에서는 이러한 부분을 해결하기 위해 도입한 방식이 상속이다. 상속이란? 기반이 되는 상위 클래스의 특성을 하위 클래스에게 적용하고, 거기에 더해 필요한 특성을 추가, 확장하는 방식을 말한다. 상속의 목적은 기존 기능의 확장과 코드의 재사용이다. 상위 클래스? 어떠한 속성과 코드를 (하위 클래스들에게) 제공하는 클래스를 말한..
네트워크의 구조 디바이스(Node)들이 연결되어 통신을 통하여 상호 작용하는 링크들의 구성을 네트워크라고 한다. 해당 네트워크의 목적에 따라서 여러 명칭으로 불리게 된다. Packet Network를 통하여 전송되는 데이터의 단위를 말한다. 하나의 큰 데이터를 보내는 것은 네트워크의 대역폭을 많이 점유함으로 흐름을 막을 위험이 있다. 네트워크의 대역폭? 일정시간 동안 네트워크로 전송할 수 있는 비트 수에 의해 결정된다. 인터넷 TCP/IP 프로토콜을 사용하는 세계 최대 규모의 네트워크를 말한다. 서로 연결하여 정보를 교환할 수 있도록 하나의 거대한 컴퓨터 통신망이다. 추가 내용 (내가 추가한 요소) 네트워크의 망 구성 방식 네트워크의 구조를 Network topology라고 하며, 공통 구조들을 종합하여..
클래스란 무엇일까? 클래스는 어떠한 객체들에 대한 분류이다. 분류, 집합, 같은 속성과 기능을 가진 객체들을 총칭하는 개념이다. 클래스는 해당 객체가 무엇인지 판단할 수 있는 일종의 식별 타입이 된다. 클래스의 구성요소 변수 : 클래스의 Scope = { } 안에서 존재하는 변수를 말한다. 객체 변수 : 접근 제어자와 변수 타입, 변수 명을 가지는 일반적인 상태 변수를 말한다. 해당 변수는 클래스 정보에서 초기화되지 않고, 해당 타입을 가지는, 상속받은 객체가 생성되었을 때 Scope에 맞게 가시 된다. (공유된다) 클래스 변수 : 위의 요소를 가지면서, static 이 작성된 상태 변수를 말한다. 클래스가 로드되는 시점에 Class 정보가 저장되는 영역에서 해당 정보가 등록, 초기화 되기 때문에 이러한..
각각의 리소스를 분류하기 위해 모든 데이터는 그것만의 표준화된 이름을 가지고 있다. (식별 값) 책의 ISBN 번호 버스의 노선 번호 은행 계좌의 번호 사람의 주민등록번호 등 리소스 RFC 2396 - Uniform Resource Identifiers (URI): Generic Syntax 모든 리소스가 일종의 표준 이름을 준수하기에 식별 값을 기준으로 쉽게 공유하고 접근할 수 있다. URL은 인터넷의 리소스를 가리키는 표준이름이다. 인터넷의 리소스 탐색하기 URL은 리소스의 위치를 가리키며, 이것을 이용해 리소스를 찾고 사용하며 공유할 수 있다. 사용자는 브라우저에 URL을 입력하고 브라우저는 화면 뒤에서 사용자가 원하는 리소스를 얻기 위해 적절한 프로토콜을 사용하여 메세지를 전송한다. URL 은 통..
전 세계의 브라우저, 서버, 웹 애플리케이션은 모두 HTTP를 통해 서로 대화한다 HTTP : 인터넷의 멀티미디어 배달부 HTTP 는 신뢰성 있는 데이터 전송 프로토콜을 사용하기 때문에, 데이터가 지구 반대편에서 오더라도 전송 중 손상되거나 꼬이지 않음을 보장한다. 이 덕분에 사용자는 인터넷에서 얻는 정보가 손상된 게 아닌지 염려하지 않아도 된다. 웹 클라이언트와 서버 웹 컨텐츠는 서버에 존재한다. 서버는 보통 HTTP 프로토콜로 의사소통하기 때문에 HTTP 서버라고 부르기도 한다. 웹 서버는 인터넷의 데이터를 저장하고 클라이언트가 요청한 데이터를 제공한다. 웹 클라이언트 크롬 익스플로러 사파리 등 리소스 웹 서버는 "리소스"라는 것을 관리하고 제공한다. 리소스란? 웹 서버의 정적 파일 (HTML, Te..
Open API Specfication 3? OAS는 RESTful API에 대한 정보들을 정의하여 소스 코드에 접근하지 않아도 서비스의 기능을 검색, 확인하고 사용할 수 있게끔 지원해주는 표준 인터페이스이다. OAS 3는 2017년 7월에 발표된 spec이며, 많은 개선이 이루어졌다고 한다. 해당 spec은 JSON, YAML을 통하여 작성할 수 있다. documentation generation tools를 사용하여서 해당 API의 기능, 테스트 코드 등을 사용자(클라이언트 개발자) 입장에서 쉽게 알 수 있게 해 준다. 스프링에서 사용할 수 있는 OAS 라이브러리 Spring fox : OAS 2를 지원하는 라이브러리이다. Springdoc-openapi v1.5.1 : OAS 3을 지원하는 라이브러..
H2의 Local, Server 개념 Embedded 모드 H2 DB를 시스템의 메인 메모리에서 (JVM 위에서) 구동시키는 방식으로 application이 종료된다면 저장, 수정된 Data가 손실(휘발) 된다. 즉 기본적으로는 영속적이지 않은 방식이다. → 데이터에 대한 영속성을 제공하는 방법은 존재한다. 메인 메모리에 DB를 띄워놓고 해당 DB를 사용하는 Application의 스레드로 데이터에 바로 접근함으로써 데이터 읽기, 쓰기에 대한 성능을 향상할 수 있으므로 유용하게 사용할 수 있으며, 데이터 캐싱 DB에 대해서도 H2를 고려할 수 있다고 한다. 하지만 JVM에서 데이터 연산에 사용되는 쓰레드를 인터럽트 하지 않을 수 있기에, IO 수행 시에 I/O Handler가 닫힘으로써 데이터베이스의 손..
Post Entity, DTO 들을 만들고 생성 테스트를 진행한 뒤에 Post Controller와 Service를 생성하고 PostMapper에 Mapper 어노테이션 작성과 Mapper.xml 작성을 완료한 후 Teliend API를 통한 테스트를 진행하였다. 그런데.. POST 요청 보냈더니 이러한 에러가 발생하였다. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.somaeja.post.mapper.PostMapper.save at org.apache.ibatis.binding.MapperMethod$SqlCommand.(MapperMethod.java:235) ~[mybatis-3.5.5.ja..
4주 차 시작합니다! 선택문 (switch)? 주어진 조건 값의 결과에 따라 프로그램이 다른 명령을 수행하도록 하는 일종의 조건문이다. 모든 값, 범위를 기반으로 판단하는 if 문과 달리 정수 값이나 열거된 값 또는 문자, 문자열만을 사용할 수 있다. 컴파일러를 통해 실행 경로를 설정하는 점프 테이블이라는 것이 만들어지게 되어서 많은 조건을 비교하여야 할 때, if else 보다 더 빠른 성능을 보이게 된다. → case의 수가 5개 이상이라면, 성능 차이가 보이기 시작한다. if else에 비하여서 좋은 가독성을 가지고 있다. switch 문 public static String monthCheck(int num){ int days = 0; switch (num) { case 1 : case 3 : c..
3주 차 시작합니다! 연산이란? 주어진 정보를 통해 일정한 규칙에 따라 어떤 값이나 결과를 구하는 과정을 의미한다. 연산자란? 연산을 진행하는 동안 사용되는 기호를 말한다. 연산 대상의 수나 연산 방식에 따라서 명칭이 나뉘게 된다. 피연산자란? 연산될 대상을 말하며. 변수, 상수, 리터럴 등을 의미한다. 단항 연산자 (Unary Operator) 연산이 수행될 피연산자가 1개인 경우 해당 연산자를 단항 연산자라고 한다. 전위 증감, 후위 증감 연산자 단항으로써 사용하는 +, - 연산자 (부호 연산자) 비트 반전 ~ 연산자 이항 연산자 (Binary Operator) 연산이 수행될 피연산자가 2개인 경우 해당 연산자를 이항 연산자라고 한다. 산술 연산자 비트 연산자 관계 연산자 대입 연산자 논리 연산자 삼..
- Total
- Today
- Yesterday
- WiredTiger
- 커뮤니티 오거나이저
- 근황
- RESTful
- 한국 스프링 사용자 모임
- JVM
- spring AOP
- transaction
- Request Collapsing
- configuration
- RPC
- cache stampede
- Redis Key
- Switch
- JPA
- mybatis
- JDK Dynamic Proxy
- cglib
- AMQP
- 게으른개발자컨퍼런스
- java
- rabbitmq
- URI
- HTTP
- URN
- Optimistic Locking
- lambda
- Thundering Herd
- spring
- Url
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |