일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 클린코드
- @NoArgsConstructor
- 내부 정렬
- 스택 큐 차이
- CleanCode
- 계산 검색 방식
- @RequiredArgsConstructor
- 연결 리스트
- 마크다운
- mysql
- WebClient
- java
- 자료구조
- 빅 오 표기법
- 배열
- 클래스
- 인터페이스
- 선형 리스트
- 마크다운 테이블
- @ComponentScan
- 클린
- 쿼리메소드
- 트리
- 정렬
- query
- JsonNode
- 쿠키
- 리스트
- code
- 코드
- Today
- Total
목록분류 전체보기 (149)
Developer Cafe
공통업무에 관련된 코드를 프로그램 흐름의 앞, 중간, 뒤에 추가하여자동으로 처리할 수 있는 방법이 3가지가 있다.FIlter, Interceptor, AOP요청이 들어오게 되면 request > Filter > Servlet > Interceptor > AOP > Controller순으로 실행됩니다.DisptacherServlet, Interceptor, AOP, Controller 는 Spring Context 에 속하고, Filter 의 경우에는 Web Context 에 속합니다.Filter스프링의 독자적인 기능이 아닌 자바 서블릿에서 제공하는 기능스프링 컨텍스트가 아니라 웹 컨텍스트에 속하며, 스프링 컨테이너가 아니라 웹컨테이너(톰캣) 에 의해 관리됩니다.Filter 는 FilterChain 을 통..
클라이언트가 서버로부터 어떠한 요청을 할 때, 요청에 필요한 URI를 응답에 포함시켜 반환하는 것입니다 한명의 정보를 response해주는 api를 만듬과 동시에 유저 모두의 정보를 가진 api주소를 담아 주는 api를 만든다고 가정합니다. @Data @AllArgsConstructor @NoArgsConstructor public class User { private Integer id; @Size(min=2, message = "Name은 2글자 이상 입력해 주세요.") private String name; @Past private Date joinDate; private String password; private String ssn; } // spring 2.1.8 이하 버전 @GetMapping..
@JsonFilter는 JSON 변환시 사용할 필터를 명시하고 싶을때 사용한다. jackson-core jackson-databind 를 gradle 이나 pom.xml에 추가한다. @Data @AllArgsConstructor @NoArgsConstructor @JsonFilter("userInfo") public class User { private Integer id; @Size(min=2, message = "Name은 2글자 이상 입력하세요.") private String name; @Past private Date joinDate; private String password; private String ssn; } @GetMapping("/users") public MappingJacksonV..
https://youtu.be/kWiCuklohdY?list=PLox1Ud-l57-m1s8Ic6_hraMGPqd45W0Ci 기본 세팅 om random import * class Unit: def __init__(self, name, hp, speed): self.name = name self.hp = hp self.speed = speed print("{0} 유닛이 생성되었습니다.".format(name)) def move(self, location): print("{0} : {1} 방향으로 이동합니다. [속도 {2}]" \ .format(self.name, location, self.speed)) def damaged(self, damage): print("{0} : {1} 데미지를 입었습니다.".f..
문자열 포매팅 country = "대한민국" print(f"[{country}] 나는 %d살 %s입니다." % (20, "남자")) print("[{0}] 나는 %d살 %s입니다.".format(country) % (20, "남자")) 간단한 문자열 다루기 from random import * print(random()) # 1이하 랜덤 (0.04562) print(randrange(4, 6)) # 4에서 6사이 (4, 6 사이) print(randint(4, 6)) # 4에서 6사이 (4, 5, 6 사이) jumin = "990828-1478237" sentence = 'DDR플레이어' print(jumin[0:2]) # 0부터 2 직전까지 (99출력) print(sentence.replace("DDR..
인텔리제이에서는 윈도우 기본 cmd로 설정되어있기떄문에 리눅스 명령어가 먹히지 않는다. "C:\Program Files\Git\bin\sh.exe" -login -i https://ddingg.tistory.com/49 위 블로그를 참고하여 git bash로 바꿔주었다!! intellij - 인텔리제이 Terminal 에서 리눅스 명령어를 써보자. 맨 처음 인텔리제이를 사용할때(지금도 얼마 되진 않았다 ㅎㅎ) 조금 불편했던것 중 하나가 터미널에서 리눅스 명령어가 먹히지 않는다는 사실이었다. 이는 intellij 터미널 설정이 윈도우 기본 cm ddingg.tistory.com
프록시 (Proxy) 프록시 서버의 기본적인 동작은 클라이언트로부터 받은 리퀘스트를 다른 서버에 전송하는 것. 클라이언트로부터 받은 URI를 변경하지 않고 리소스를 가지고 있는 서버에 보낸다. 프록시 서버를 사용하는 이유는 캐시를 사용하여 네트워크 대역을 효율적으로 사용하는 것과 조직 내에 특정 웹 사이트에 대한 액세스 제한 용도 등으로 사용한다. 게이트웨이 (Gateway) 다른 서버를 중계하는 서버로, 클라이언트로부터 수신한 리퀘스트를 리소스를 보유한 서버인 것처럼 수신한다. 이렇기 때문에 게이트웨이는 그 다음에 있는 서버가 HTTP 서버 이외의 서비스를 제공하는(쿼리를 사용해 데이터를 얻거나 신용 카드 결제 시스템 등과 연계한다) 서버가 된다. 클라이언트와 게이트웨이 사이를 암호화하는 등으로 안전하..
WS(Web Server)와 WAS(Web Application Server) 차이 WS(Web Server) Static Pages(정적페이지) 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(.html .jpeg .css 등)를 제공하는 컴퓨터 프로그램 HTTP 프로토콜을 기반으로 하여 클라이언트(웹 브라우저 또는 웹 크롤러)의 요청을 서비스 하는 기능을 담당한다. Ex) Apache Server, Nginx, IIS(Windows 전용 Web 서버) 등 WAS(Web Application Server) Dynamic Pages(동적페이지) but 정적페이지 처리도 가능 DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server ..
int와 Integer 차이 int (Primitive 자료형) 자료형을 의미 int, float, long, double과 같은 하나의 primitive 자료형을 의미 산술 연산 가능 null 로 초기화 불가능 0으로 초기화 가능 Integer (Wrapper 클래스-객체) Wrapper 클래스입니다. Unboxing을 하지 않으면 산술 연산이 불가능 null값은 처리 가능 null값 처리가 용이해서 SQL 과 연동할 경우 처리가 용이 직접적인 산술연산은 불가능 래퍼 클래스(Wrapper class) 프로그램에 따라 기본 타입의 데이터를 객체로 취급해야 하는 경우가 있습니다. 예를 들어, 메소드의 인수로 객체 타입만이 요구되면, 기본 타입의 데이터를 그대로 사용할 수는 없습니다. 이때에는 기본 타입의 ..
동시성이 필요한 이유 한 유저의 요청을 처리하는 데에 1초가 필요한 시스템을 생각해 보자. 이 시스템은 적은 유저가 사용할 경우 그럭저럭 괜찮은 퍼포먼스를 보여줄 것이다. 하지만 유저가 늘어남에 따라 모든 유저는 자신보다 먼저 도착한 요청이 끝날 때까지 기다려야만 한다. 이러한 경우 병행성(concurrency)이 여러 유저를 동시에 처리함으로써 처리량을 향상시킬 수 있다. /* Code 1-1 */ public class ClassWithThreadingProblem { private int lastIdUsed; public ClassWithThreadingProblem(int lastIdUsed) { this.lastIdUsed = lastIdUsed; } public int getNextId() {..