일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- K8s
- mysql
- 백준
- redis
- MSA
- 보조스트림
- IntellJ
- Real MySQL
- 토비의 스프링 정리
- 토비의 스프링
- JPA
- 이스티오
- GC
- Kotlin
- Stream
- 자바 ORM 표준 JPA 프로그래밍
- 스트림
- gradle
- Stack
- OS
- 스프링
- spring
- list
- jvm
- Collection
- thread
- 자바
- Java
- SpringBoot
- 쿠버네티스
- Today
- Total
목록전체 글 (151)
인생을 코딩하다.
첫 화면에서 로그인을 해야 기능을 사용할 수 있는 어떤 웹 사이트를 가정해보자.일반적으로 첫 화면에서 로그인을 하고, 나머지 기능들을 ui 클릭을 통해 사용할 것이다. 하지만, 어떤 사용자가 로그인을 해야만 하는 어떤 기능의 url을 복사해 뒀다가 로그인 없이 주소창에 그 url을 붙여넣는다면 어떨까? '별도의 처리' 가 없다면 아마 로그인 없이도 기능을 사용하게 되거나, 에러가 발생할 것이다. 그 '별도의 처리'가 포함된 로직은 일반적으로 아래와 같을 것이다. 1. 사용자는 로그인을 한다. 2. 시스템은 로그인한 사용자 정보를 세션에 저장한다. 3. 사용자는 기능을 요청한다. 4. 시스템은 사용자가 요청한 기능을 수행하기 전에 요청한 사용자의 세션을 체크한다. 5. 시스템은 올바른 세션일 경우 기능 승..
Serializable의 동작방식이 궁금하여 내부를 보았는데, 어라? 필드와 메소드가 한 개도 없었다. 이것을 마커 인터페이스라고 한다. 마커 인터페이스(marker interface) 아무 메서드도 담고 있지 않고, 단지 자신을 구현하는 클래스가 특정 속성을 가짐을 표시해주는 것 자바의 대표 마커 인터페이스로는 위에서 언급한 Serializable, Cloneable와 흔히 알지는 못하지만 Spring 에서 리스너를 사용한다면 보이는 EnentListener라는 인터페이스도 있다. 아무것도 담고 있지 않으면, 왜 쓰는 것일까? 아무것도 담지 않고 있지만, Serilaizable을 구현한 클래스의 인스턴스는 objectOutputStream을 통해 쓸 수 있다. 즉 직렬화 할 수 있다고 알려준다. 이 인..
Servlet 웹 애플리케이션을 만들 때 필요한 인터페이스 Spring web MVC spring : Spring Framework에 있는 모듈 web : Web Service를 만들때 필요 MVC : MVC 패턴을 사용해서 (Model View Controller) 그리고 이 Spring web MVC가 Servlet를 사용하게 된다. Servlet은 왜 생겼을까? 정적 데이터만 전달하는 Web Server 처음에 웹 프로그래밍인 정적 데이터만 전달할 수 있었다. 어떤 사용자가 들어와도 Hello.html만 줄 수 있었다. 그래서 사용자(요청)에 따라 다른 처리를 해줄 수 없었다. 동적인 처리를 해주는 웹 애플리케이션이 없었다. 그래서 나온게 CGI다. 동적인 데이터를 처리하는 CGI, Web Serv..
Apache와 Nginx는 현재까지 가장 폭넓게 쓰이는 2가지의 오픈소스 웹 서버이다. Apache Apache는 Client 요청을 받으면 MPM(Multi Processing Module : 다중처리모듈)이라는 방식으로 요청을 처리하며 대표적으로 Prefork와 Work방식이 있다. MPM 서버는 시스템의 네트워크 포트에 연결하고, 요청을 받아들이며, 받아들인 요청을 처리하기 위해 자식들에게 분배하는 다중처리 모둘(Multi-Processing Modules, MPMs)을 선택할 수 있다. 클라이언트에서 요청을 받으면 MPM 방식으로 처리를 하는데 대표적으로 Prefork와 Worker방식이 있다. 커넥션 생성(binding, acecept) 커넥션 분배 프로세스든 스레드든 해당 커넥션에 대한 요청을..
ArrayDeque란? 위위 사진은 ArrayDeque의 상속, 확장 구조 및 설명이다. 아래 접은 글은 번역이다. 더보기 "Deque 인터페이스의 크기 조정 가능한 어레이 구현. 어레이 데크에는 용량 제한이 없으며 필요에 따라 확장되어 사용량을 지원합니다. 외부 동기화가 없는 경우 여러 스레드에 의한 동시 액세스를 지원하지 않습니다. null 요소는 사용할 수 없습니다. 이 클래스는 스택으로 사용할 때 Stack보다 빠르며, 대기열로 사용할 때는 LinkedList보다 빠릅니다. 대부분의 ArrayDeque 작업은 상각된 상수 시간으로 실행됩니다. 제거, 제거 첫 번째 발생, 제거 마지막 발생, 포함, 반복기.remove() 및 대량 작업은 모두 선형 시간으로 실행됩니다. 이 클래스의 반복기 메서드에 ..
팩토리는 공장을 의미한다. 공장은 물건을 생산하는데 객체 지향에서 팩터리는 객체를 생성한다. 결국 팩터리 메서드는 객체를 생성 반환하는 메서드를 말한다. 여기에 패턴이 붙으면 하위 클래스에서 팩터리 메서드를 오버라이딩 해서 객체를 반환하게 하는 것을 의미한다. package DesignPattern.FactoryMethodPattern; public abstract class Animal { // 추상 팩터리 메서드 abstract AnimalToy getToy(); } package DesignPattern.FactoryMethodPattern; // 팩터리 메서드가 생성할 객체의 상위 클래스 public abstract class AnimalToy { abstract void identify(); }..
Proxy는 범용적인 단어이다. Spring Proxy, Proxy Pattern, Network Proxy 등 여러가지 단어가 있지만 내가 공부한 것은 Network Proxy이다. Proxy 서버? 클라이언트와 서버간의 중계 서버로, 통신을 대리 수행하는 서버 캐시/ 보안/ 트래픽 분산 등 여러 장점을 가질 수 있음 간단하게 말하면 대신 처리하는 서버라고 할 수 있다. 사용자는 클라이언트라고 하겠다. 프록시가 서버와 클라이언트 사이의 위치하고 있는 것을 볼 수 있다. Proxy 종류? Forward Proxy Reverse Proxy 가 있다. 아래를 보자. Forward Proxy 일반적으로 말하는 Proxy는 Forward Proxy이다. 흔히 일상에서 듣는 Proxy들은 Proxy 서버 설정을 ..
일급 컬렉션 이란? Collection을 Wrapping하면서, 그 외 다른 멤버 변수가 없는 상태를 일급 컬렉션이라 합니다. 간단하게 설명해보겠습니다. Map map = new HashMap(); map.put("1", "the"); map.put("2", "na"); map.put("3", "un"); 위의 코드를 Wrapping하는 것을 이야기 합니다. public class MyCollection { private Map map; public MyCollection(Map map) { this.map = map; } } Wrapping 함으로써 아래와 같은 장점을 가지게 됩니다. 비지니스에 종속적인 자료구조 Collection의 불변성을 보장 상태와 행위를 한 곳에서 관리 이름이 있는 컬렉션 비지..