반응형 분류 전체보기313 JDBC vs SQL Mapper vs ORM 데이터를 단순히 메모리에 저장한다면 애플리케이션이 종료될 경우 모든 데이터가 사라지게 된다. 왜냐하면 메모리는 휘발성이기 때문에 데이터의 영속성을 보장해주지 않기 때문이다. 영속성(Persistence)이란 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다. 따라서 애플리케이션이 종료되어도 데이터를 유지하기 위해서는 영속성을 보장해주는 데이터베이스 같은 저장소에 따로 저장 및 관리해야 한다. Layered Architecture의 Persistence Layer가 바로 데이터에게 영속성을 부여해주는 계층이다. Java는 Persistenc Layer를 JDBC(Java Database Connectivity)로 구현한다. JDBC를 통해 우리는 영속성이 보장되는 데이터베이스에.. 2021. 8. 29. 백준 5624 : 좋은 수 https://www.acmicpc.net/problem/5624 5624번: 좋은 수 정수 N개로 이루어진 수열 A가 있다. 이때, i번째 수가 그 앞에 있는 수 세 개의 합으로 나타낼 수 있을 때, 그 수를 좋다고 한다. (같은 위치에 있는 수를 여러 번 더해도 된다) 수열이 주어졌을 때 www.acmicpc.net [ 문제풀이 ] "A + B + C = D"를 "A + B = D - C"로 생각하는 것이 포인트인 문제이다. 또한, A + B로 만들 수 있는 수는 -200000~200000이기 때문에 배열을 하나 선언하여 해당 숫자 존재 유무를 빠르게 알 수 있도록 해준다. import java.io.BufferedReader; import java.io.BufferedWriter; import ja.. 2021. 8. 29. 캐시(Cache) : 검증 헤더와 조건부 요청 클라이언트가 특정 데이터를 자주 요청한다고 하자. 해당 데이터를 매번 요청마다 서버를 통해 DB에게 접근하여 반환하는 방법은 상당히 비효율적이다. 왜냐하면 이전에 사용했던 데이터와 새롭게 요청하는 데이터는 차이가 없음에도 불구하고 비싼 네트워크 통신을 통해 해당 데이터를 서버로부터 다운로드하여야 하기 때문이다. 이를 해결하기 위해 우리는 캐시(Cache)라는 것을 사용한다. 캐시(Cache)란 한번 조회된 데이터를 미리 특정 공간에 저장해놓고, 똑같은 요청이 발생하게 되면 서버에게 다시 요청하지 말고 저장해놓은 데이터를 제공해서 빠르게 서비스를 제공해주는 것을 의미한다. 즉, 캐시를 통해 자주 사용하는 데이터를 저장하여 서버의 부담을 줄일 수 있게 된다. 하지만 캐시는 보통 디스크나 메모리에 저장하기 때.. 2021. 8. 28. 백준 5214 : 환승 https://www.acmicpc.net/problem/5214 5214번: 환승 첫째 줄에 역의 수 N과 한 하이퍼튜브가 서로 연결하는 역의 개수 K, 하이퍼튜브의 개수 M이 주어진다. (1 ≤ N ≤ 100,000, 1 ≤ K, M ≤ 1000) 다음 M개 줄에는 하이퍼튜브의 정보가 한 줄에 하나씩 주어 www.acmicpc.net [ 문제풀이 ] "백준 2021 : 최소 환승 경로" 문제와 거의 비슷한 문제이다. 역이 아닌 하이퍼튜브를 정점으로 두는 아이디어를 적용한다면 쉽게 해결할 수 있다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.Outp.. 2021. 8. 27. Redis란? 기본적으로 데이터베이스를 떠올리면 RDBMS이 생각날 것이다. 하지만 RDBMS는 관계형 데이터베이스이라서 조인 연산 등으로 인해 성능이 떨어질 수 있다. 이러한 문제를 개선하기 위해 NoSQL이라는 비관계형 데이터베이스가 등장하였다. NoSQL은 Not Only SQL의 약자로써 기존 관계형 데이터베이스(RDBMS)보다 더 융통성 있는 데이터 모델을 사용하고 데이터의 저장 및 검색을 위한 특화된 메커니즘을 제공하는 데이터 저장기술을 의미한다. NoSQL 데이터베이스는 단순 검색 및 추가 작업에 있어서 매우 최적화된 키-값 저장 기법을 사용하여 응답속도나 처리 효율 등에 있어서 매우 뛰어난 성능을 나타낸다. NoSQL에는 저장 방식에 따라 Key-Value, Wide Columnar, Document,.. 2021. 8. 27. 메시지 큐(Message Queue)란? 최근 백엔드 직무를 지원하다 보면 자격 요건이나 우대사항에 메시지 큐(Message Queue)라는 역량이 적혀있는 것을 자주 볼 수 있다. 메시지 큐, 말 그대로 메시지들을 큐라는 자료구조에 담아서 관리한다는 의미인 것 같다. 이에 대해서 알아보도록 하자. 우선 메시지 큐는 메시지 지향 미들웨어를 구현한 시스템이기 때문에 메시지 지향 미들웨어가 무엇인지부터 알고 넘어가자. 메시지 지향 미들웨어(MOM) 응용 소프트웨어 간의 데이터(비동기 메시지) 통신을 위한 소프트웨어 메시지 지향 미들웨어는 메시지를 전달하는 과정에서 보관하거나 라우팅 및 변환할 수 있다는 장점을 가진다. 보관 : 메시지의 백업을 유지함으로써 지속성을 제공, 덕분에 송수신 측은 동시에 네트워크 연결을 유지할 필요 없음 라우팅 : 미들웨.. 2021. 8. 26. 백준 1826 : 연료 채우기 https://www.acmicpc.net/problem/1826 1826번: 연료 채우기 첫째 줄에 주유소의 개수 N(1 ≤ N ≤ 10,000)가 주어지고 두 번째 줄부터 N+1번째 줄 까지 주유소의 정보가 주어진다. 주유소의 정보는 두개의 정수 a,b로 이루어 져 있는데 a(1 ≤ a ≤ 1,000,000)는 성경 www.acmicpc.net [ 문제풀이 ] 주유소를 사용하는 비용이 모두 동일하기 때문에 더 이상 이동할 수 없는 경우 현재 이동한 거리 내의 주유소 중 최대 연료의 양을 가지는 주유소를 선택하는 것이 최선의 선택이다. 따라서 주유소를 연료의 양을 기준으로 우선순위 큐에 저장해놓으면서 더 이상 이동할 수 없을 경우 이동할 수 있는 연료의 양을 만들어주면 된다. 연료를 만드는 도중 우선순.. 2021. 8. 26. 웹 서버 : Nginx vs Apache 학부시절 인터넷 프로그래밍 수업을 배울 때는 웹 서버는 Apache, WAS는 Tomcat으로 웹 사이트를 구현하였었다. 예전에는 웹 서버로 Apache를 많이 사용하였지만 최근에는 Nginx를 사용하는 추세이다. 그렇다면 어떤 이유 때문에 Nginx를 점점 더 사용하는 것일까? 바로 Nginx가 트래픽이 많은 웹사이트에 적합하기 때문이다. Nginx는 대용량 트래픽을 처리하기 위해 가벼움과 높은 성능을 목표로 하는 경량 웹 서버이다. 초기에는 정적 파일을 제공하는 웹 서버로 Apache를 보조하는 역할을 수행하였지만 오늘날에는 리버스 프록시, 로드 밸런서, 메일 프록시 및 HTTP 캐싱 등 전체 범위의 서버 작업을 처리하는 웹 서버로 발전하였다. 즉, Nginx 웹 서버는 Apache 웹 서버의 성능 .. 2021. 8. 25. 백준 13308 : 주유소 https://www.acmicpc.net/problem/13308 13308번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 수와 도로의 수를 나타내는 정수 N(2 ≤ N ≤ 2,500)과 정수 M(1 ≤ M ≤ 4,000)이 주어진다. 다음 줄에 각 도시 주유소의 리터당 가격이 도 www.acmicpc.net [ 문제풀이 ] 다익스트라 + dp를 활용해서 해결할 수 있는 문제이다. 최소 비용을 가지기 위해서는 다른 정점으로 이동할 때 현재까지 방문한 주유소 중 가장 싼 주유소만을 사용해야 한다. 이를 위해 현재까지 방문한 주유소 중 가장 싼 비용을 저장하여 관리해준다. 또한, 예시처럼 방문한 정점을 다시 방문하는 경우가 생길 수 있기 때문에 dp 테이블을 하나 선언하여 중복 방.. 2021. 8. 25. 이전 1 2 3 4 5 6 ··· 35 다음 반응형