본문 바로가기

개발자145

20230918 [Java] 문제풀이 20230918 [Java] 문제풀이 [프로그래머스] 프로세스 우선순위 큐를 사용해서 프로세스의 우선순위를 찾는다 여기서 우선순위 큐는 내림차순으로 만들어야 한다 그리고 큐에 priorities를 프로세스의 인덱스와 프로세스의 우선순위를 배열로 넣어준다 큐를 돌면서 우선순위가 같은 프로세스를 result 리스트에 넣어주고 우선순위 큐에서 해당 우선순위는 빼주고, 큐에서도 빼준다 큐를 돈다는 것은, 우선순위가 같지 않으면 큐의 맨 뒤로 돌아가게 된다 import java.util.*; class Solution { public int solution(int[] priorities, int location) { ArrayList result = new ArrayList(); PriorityQueue pq =.. 2023. 9. 18.
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.