본문 바로가기

백엔드122

20230917 [Java] 문제풀이 20230917 [Java] 문제풀이 [프로그래머스] 소수 찾기 isNotSuso 배열에 0부터 9999999까지 수소의 여부를 true 또는 false로 설정한다 수소이면 false / 아니면 true 이다 permutation, 순열을 통해서 주어진 숫자에서, 만들 수 있는 모든 숫자들을 만든다 숫자들을 만들 때에 중복이 될 수 있기 때문에, set에 넣어준다 set에서 숫자들을 빼면서 수소인지 아닌지 인덱스를 통해서 개수를 센다 import java.util.*; class Solution { HashSet set = new HashSet(); boolean[] isNotSuso = new boolean[10000000]; int count = 0; public void permutation(Str.. 2023. 9. 18.
[스프링 부트 핵심 가이드] Chapter 8장. Spring Data JPA 활용 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 8장. Spring Data JPA 활용 JPQL JPA Query Language의 줄임말로 JPA에서 사용할 수 있는 쿼리를 의미한다 JPQL은 엔티티 객체를 대상으로 수행하는 쿼리다 쿼리 메서드 주로 Repository라는 패키지를 만들어서, 그 안에 Repository 인터페이스를 만든다 그리고 인터페이스는 JpaRepository 클래스를 상속 받아서 다양한 CRUD 메서드를 사용할 수 있다 쿼리 메서드는 크게 동작을 결정하는 주제 (Subject)와 서술어 (Predicate)로 구분한다 'find.... By', 'exists... By'와 같은 키워드로 쿼리 주제를 정하며 'By'는 서술어의 시작을 나타내는 구분자 역할을 .. 2023. 9. 16.
[Java] Nginx [Java] Nginx NginX 굉장히 가벼운 웹 서버고, 많은 요청이 들어와도 좋은 성능을 보이고 있다 Apache vs NginX Apache 요청이 아파치 웹서버로 들어올 때마다, 프로세스를 생성을 하여, 프로세스가 하나의 요청을 처리한다 요청이 들어올 때마다 프로세스를 생성하여 오버해드가 발생할 수 있다 비교적 무겁고, 성능이 NginX에 비해 떨어진다 NginX master 또는 worker 프로세스를 configuration에 따라서 미리 생성해 놓는다 Task Queue에다가 요청을 쌓아두고, 한 개의 프로세스가 여러 개의 요청을 처리한다 Task Queue에다가 요청을 쌓아두면서, 비동기 처리도 가능해진다 미리 프로세스를 적게 두면 Task Queue 쌓이는 요청이 많아 응답이 느려진다 .. 2023. 9. 14.
[Java] Kafka [Java] Kafka Kafka? 아파치 재단에서 운영하는 플랫폼이다 Kafka를 이해하기 위해서는 Message Oriented Middleware를 알아야 한다 Middleware는 시스템과 컴포넌트 사이에 있는 중간자 역할을 해준다 두 시스템이 너무 강하게 결합되어 있으면, 서로 의존성이 높게 된다 A와 B가 너무 강하게 결합되어 있으면, A에서 에러가 났을때 B도 영향을 받는다 즉 의존성이 낮은게 더 좋고, 이것을 도와주는 것이 Middleware다 즉 Message Oriented Middleware는, message를 기반으로 중간자 역할을 해주는 것이다 이 Message Oriented Middleware 하단에 Message Queue가 있는 것 그리고 Message Queue를 사용하는.. 2023. 9. 13.
20230913 [Java] 문제풀이 20230913 [Java] 문제풀이 [프로그래머스] 문자열 압축 입력되는 문자열을 압축하는 것이다 단 문자 단위는 같아야 하고, 연속되는 문자가 같으면 압축을 한다 class Solution { public int solution(String s) { int answer = s.length(); if (s.length() == 1) return 1; for (int i = 1; i = 2) { comString += String.format("%d", cnt); } comString += tempS; tempS = tempCompare; cnt = 1; } } if (cnt > 1) comString += String.format("%d", cnt) + tempS; else comString += te.. 2023. 9. 13.
[Java] Linux [Java] Linux 서버에 적합하고, 무료 Open Source 소프트웨어다 Linus Torvalds 라는 사람이 이 Linux OS를 만들었다 Linux는 Linux Kernel (리눅스 커널) 자체를 의미한다 커널은 CPU나 RAM을 포함한 컴퓨터 자원을 관리하고 할당하는 중요한 코어 소프트웨어다 이 Linux를 기반으로 커스터마이즈 된 OS를 만들 수 있다 Linux 계열에는 RedHat, Ubuntu, Debian이 있다 리눅스 커널은 아래와 같은 디렉토리 구조를 가지고 있다 Docker를 이용해서 리눅스 사용하기 Linux 명령어 상대 경로 vs 절대 경로 상대 경로 : 현재 파일의 위치에서의 경로 절대 경로 : 최상위 위치에서의 경 ./ 현재 위치 ../ 현재 위치에서 한단계 상단 위치 .. 2023. 9. 12.
20230912 [Java] 문제풀이 20230912 [Java] 문제풀이 [프로그래머스] 스킬 트리 기술을 배우기 위해, 앞에 미리 배워야 하는 기술이 있다 A -> B -> C : C를 배우려면 B를 배워야 하고, B를 배우려면 A를 배워야 한다 즉 A를 배우고 바로 C를 배울 수 없다 그 외에 주어진 것들은 언제든 배울 수 있다 Queue에다가 순서대로 배워야 하는 기술들을 넣는다 (skill들) skill_trees를 순회하면서, Queue 대로 즉 선입선출 로직으로 기술들을 배우는지 확인을 한다 skill = {A, B, C} skill_trees = {B, C} B는 skill에 있지만, 먼저 배워야 하는 A가 있기 때문에 기술을 배울 수 없다 import java.util.*; class Solution { public int .. 2023. 9. 12.
[Java] Docker [Java] Docker 서비스 배포란? 코드로 구현하고, 결과는 콘솔 또는 로컬 호스트를 통해 결과를 확인한다 즉 다른 사용자들을 위한 실제 서비스가 되기에는 부족하다 즉 이 코드들이 다른 사용자들이 이용할 수 있도록 배포가 되어야 한다! 다른 사람들이 개발자들이 만든 코드를 사용할 수 있게 만드는 것이 서비스 배포다 개발자들이 만든 코드를 실행 가능한 형태로 서버 컴퓨터로 옮긴다 그럼 사용자들은 서버 컴퓨터를 통해, 개발자들이 만든 코드를 사용하게 된다 온프레미스 (On-Premise) : 자체 서버가 있는 경우 비용이 굉장히 많이 든다 (설치 비용 + 유지 비용 + 인력까지) 클라우드 : 다른 제 3자가 만들어 놓은 서버를 원격으로 빌려서 사용하는 것이다 예) AWS 대어료를 클라우드 사용자 입장에.. 2023. 9. 11.
20230906 [Java] 문제풀이 20230906 [Java] 문제풀이 [프로그래머스] 메뉴 리뉴얼 문자열을 리스트로 잘 만들고, 2중 리스트에서, 리스트 크기에 따라서 정렬을 한다 {2}, {2, 1}, {2, 1, 3}, {2, 1, 3, 4}} 2 를 answer에 제일 앞 부분에 넣는다 (2) {2} 와 {2, 1} 을 비교하여, 없는 숫자를 answer에 넣는다 (1) {2, 1}와 {2, 1, 3} 을 비교하여, 없는 숫자를 answer에 넣는다 (3) {2, 1, 3}와 {2, 1, 3, 4} 을 비교하여, 없는 숫자를 answer에 넣는다 (4) import java.util.*; class Solution { public ArrayList solution(String s) { ArrayList answer = new Ar.. 2023. 9. 8.