![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dKwP3U/btrWR7ofPag/jNOU0lNKuekN5KyCkkGBk0/img.png)
Spring Boot가 보편화되면서 많은 부분들이 뒤로 숨겨지게 되었지만, 현재 담당하고 있는 서비스는 Spring MVC로 구현되어 있어 Spring MVC project에는 Spring Boot보다 많은 정보들을 xml파일로 확인할 수 있었다. 사실 Client 단부터 이야기를 시작해야 시작과 끝이 잘 맺어질 수 있을 것 같지만, 아직은 서버사이드에 치중해서 공부 중이니 DispatcherServlet을 기준으로 작성해보려고한다. 아직 공부하는 단계니 계속해서 내용은 보완해 나가야할 것 같다. DispatcherServlet이란? 갑자기 DispatcherServlet부터 이야기를 시작하겠다하면 의아할 수 있다. 구현부만 생각한다면 개발자는 스프링에서 제공하는 기능인 DispatcherServlet를..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/kNvRi/btrWLjhDsCE/sy220xzECrCWelEI24WUJ0/img.png)
서버사이드에서 개발하다보면, 객체 컨벤션이 중요하다고 느끼는 시점이 온다.(내가 그 시점인 것 같다..) 가장 먼저 눈에 띄는건 DAO, DTO, VO인데, 세 가지의 객체의 분류가 꽤나 애매하다. 따로 표준화 되어 있지도 않고 POJO라고 불리는 일반적인 자바 객체로 만들어지기 때문이다. 간단하게 내용을 한번 정리하고 가보려 한다. 1. DAO(Data Access Object) 사실 DAO의 역할은 명확하다. 이름부터가 Data Access Object인 것을 보면 알 수 있듯이, 실제로 DB에 접근하는 역할을 하는 객체 생성 디자인 패턴이다. 데이터베이스에 추출 및 저장하는 방법에 대한 세부 정보를 객체로 추상화하는데 사용되며 JDBC를 통해 구현할 경우 CRUD를 처리하는 매서드를 가지고 있는 경..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bcnuoN/btrWKy0z6d0/SDIDyr92YHBF5yEFg748F0/img.png)
1. API 란? 웹 개발을 하다보면 가장 많이 듣는 용어 중 하나가 API일 것이다. 그래서 API가 뭐냐? 라고 물으면, 어디서부터 설명해야할까 고민에 쌓이게 된다. API(application programming interface 애플리케이션 프로그래밍 인터페이스, 응용 프로그램 프로그래밍 인터페이스)는 컴퓨터나 컴퓨터 프로그램 사이의 연결이다. 일종의 소프트웨어 인터페이스이며 다른 종류의 소프트웨어에 서비스를 제공한다. 출처 : 위키백과 위키 백과에서 가져온 글만 봐서는 무슨 말인지 와닿지 않는다. 그래서 내가 남들에게 설명할 때는 원하는 정보를 서버나 프로그램에 요청하기 위한 입력 정보 작성 규칙 이라고 한줄로 설명한다. 포괄적인 의미를 담고 있기 때문에 한줄 요약이 틀릴 수 있지만, 개인적으..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/LMlQL/btrWu5rTtcf/IAHyl9VmnpgYGDKYLYB6y1/img.png)
내부 프로젝트로 Testcase를 자동으로 정리해주는 프로젝트를 진행하게 됐다. 백엔드에서 서비스로직만 처리할 게 아니라, 화면을 추가로 그려야했기 때문에 자연스럽게 자바스크립트를 보게 됐고... 너무 많은 이슈들을 마주쳤다.(별로 언급하고 싶지 않은 이유로 발생한 것들이다...) 그 중 하나가 Object의 깊은 복사(Deep Copy) / 얕은 복사(Shallow Copy) 이슈였고, 이거 때문에 몇 시간을 끌었다. 어떤 문제 였나? 결론부터 이야기하자면, 나는 깊은 복사가 하고 싶었다. 그런데 배열 안의 오브젝트의 처리에 문제가 있었다. Java에서의 배열(Array) 모두 같은 자료형만을 취급한다. 하지만 Javascript의 Array는 제한 없이 사용할 수 있다. a = [ 'abc', { a..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/WTnWp/btrWg1IXhJt/Z5eXZzCxMX3MV1GUxRuEmk/img.png)
1. 캐시란? 서버는 많은 리소스들을 저장하고 있다. 개중에는 엄청나게 큰 파일을 요청하는 경우가 있는데, 이럴 경우 여러번 같은 파일을 요청할 경우 서버는 많은 사용자가 사용 중이 아니어도 과부하 상태 빠질 것이다. 위와 같은 경우를 대비해서 서버-클라이언트 서비스 간에 캐시(Cahce)를 둬서 리소스에 대한 좀더 빠른 접근할 수 있도록 한다. 캐시의 위치는 구현법과 솔루션에 따라 나뉘는데, 1. 인 메모리 캐싱(In-memory caching): 서버의 RAM에 데이터를 저장해 캐싱된 데이터에 빠르게 접근할 수 있도록 한다. Java 라이브러리 ehcache가 대표적인 예이고, 스프링 내부적으로도 제공하는 @Cacheable도 인메모리 캐싱이다. 2. 디스크 캐싱(Disk caching): 데이터를 ..
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/120922 2. 풀이 수학문제를 조금 풀어본 적이 있다면, 보자마자 점화식 관련 문제인지 파악할 수 있었을 것이다. 2 x 2 = 3 2 x 3 = 5 3 x 2 = 5 3 x 3 = 8 4 x 2 = 7 4 x 3 = 11 5 x 2 = 9 5 x 3 = 14 조건에서 M >=N 일 때, N x (M -1) + (N -1) 이라는 결과를 도출해 낼 수 있어야한다. 3. 코드 class Solution { public int solution(int M, int N) { int answer = 0; int up = M; int down = N; if( M
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/120956 2. 풀이 문자열을 어떻게 다루면 좋을까를 묻는 문제. 처음봤을 때는 옹알이가 나오는 모든 경우의 수를 생각하는 거였는데, 구현방식이 잘 떠오르지도 않았다. 다행히 옹알이 문자가 포함관계에 있는게 없어서 치환으로 풀었다. 나는 1로 치환했는데, 다른거로 치환해도 된다. 처음엔 ""으로 치환했었는데, 다행히 반례가 문제 중에 있어서 쉽게 해결했다. 없었으면 찾는데 좀 걸렸을 듯 3. 코드 import java.util.*; import java.util.stream.Collectors; class Solution { public int solution(String[] babblin..
- Total
- Today
- Yesterday
- elasticsearch
- AWS EC2
- S3
- serverless
- JWT
- Kotlin
- ChatGPT
- OpenAI
- 오블완
- EKS
- openAI API
- GIT
- Spring
- Elastic cloud
- 티스토리챌린지
- Log
- 후쿠오카
- CloudFront
- AWS
- 람다
- cache
- lambda
- AOP
- java
- 스프링부트
- MySQL
- terraform
- springboot
- OpenFeign
- docker
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |