본문 바로가기

개발자145

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.
20230905 [Java] 문제풀이 20230905 [Java] 문제풀이 [프로그래머스] 괄호 회전하기 .substring 을 이용해서, 문자열을 슬라이싱 하면서 문자열을 한바퀴 돌린다 한바퀴 돌리면서 stack을 사용하여 괄호 문자열이 유효한지 확인해준다 import java.util.*; class Solution { public static boolean isCorrect(String str) { Stack stack = new Stack(); for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == '(' || str.charAt(i) == '[' || str.charAt(i) == '{') { stack.push(str.charAt(i)); } else { if (stack.i.. 2023. 9. 8.
20230904 [Java] 문제풀이 20230904 [Java] 문제풀이 [프로그래머스] 거리두기 확인하기 P들의 위치를 찾고, P들을 비교를 한다 먼저 맨해튼의 거리를 비교한다 2 이하면, 두 개의 P들이 가로 또는 세로 상에 있으면 1맨해튼 거리가 1이면, 거리두기를 못 하는 것 2맨해튼 거리인데, 중간에 패티션이 없으면 거리두기를 못 하는 것 대각선에 있으면, 반대쪽 대각선에 모두 패티션이 없으면 거리두기를 못 하는 것이 import java.util.*; class Solution { public static boolean socialDistance(String[] places, ArrayList pLocation) { boolean isPossible = true; for (int i = 0; i < pLocation.size().. 2023. 9. 8.
[스프링 부트 핵심 가이드] Chapter 6. 데이터 베이스 연동 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 6. 데이터 베이스 연동 어플리케이션은 데이터를 주고 받는 것이 주 목적이다 특히 엔터프라이즈급 어플리케이션에서는 데이터베이스가 꼭 필요하다 Maria DB 설치 https://mariadb.org/download 에서 마리아DB를 설치할 수 있다 그 외에도 MySQL 같이 다양한 데이터 베이스가 있다 ORM Object Relational Mapping으로 자바와 같은 객체 지향 언어에서 의미하는 객체와 RDB (Relational Database)의 테이블을 자동을 매핑하는 방법이다 장점 ORM을 사용하면서 데이터베이스 쿼리를 객체지향적으로 조작할 수 있다 쿼리문 전체를 작성하지 않아도 된다 (개발 비용이 줄어든다) 객체지향적으로 데.. 2023. 9. 8.
스프링 캐시 스프링 캐시 캐시 임시로 데이터를 저장하는 공간이다 인메모리가 될 수 있고, 서버에 캐시를 만들 수 있다 빠른 처리 속도로 성능을 향상할 수 있다 이미 조회한 데이터를 임시로 저장하고, 다음에 같은 데이터에 접근할 때, 더 빠르게 데이터를 조회할 수 있도록 한다 예) 어제 배웠던 내용을, 저번 주에 배웠던 내용보다 더 빠르게 기억할 수 있다 캐시를 정할 때, 얼마나 요청이 많이 들어오는지 확인해보는 방법도 있다 유저가 요청을 할 때마다, 데이터를 생성해야 하나? 미리 데이터를 생성해 놓고, 유저들이 그 데이터를 조회하는게 더 빠르다 캐시를 삭제해야 하는 이유 업데이트가 될 시에, 캐시의 데이터도 없어야 한다 캐시는 무한정 메모리가 아니다 (한번씩 비워줘야 한다) 캐시에는 TTL이 있다 Time To Li.. 2023. 9. 5.
스프링 스크래핑 스프링 스크래핑 스크래핑이란? 웹사이트 굉장히 많은 데이터를 가지고 있고, 사용자들이 보기 편하게 가공이 되어 있다 HTML 문서를 보기 편하게 만든 것이 웹사이트 웹사이트에 HTML을 통해 보여지는 정보들을 모으는 것이 웹 스크래핑이란 것이다 웹 스크래핑은 HTML 문서를 받고 문서를 파싱(Parsing, 구문 분석) 해서 필요한 데이터를 추출한다 (일반적으로 파이썬으로 많이 사용된다) Client 대신 스크래핑 서버가, 웹 서버에게 요청을 보내서 데이터를 받아오는 것이다 서버를 사용하는 유저들의 수가 많으면 서버 부하가 걸리듯이, 스크래핑 서버에서 너무 많은 요청을 보내면 서버 부하가 걸린다 즉 서버에 요청을 보낼 때에는, 웹 서버에서 부하가 걸리지 않을 정도의 요청을 보내야 한다 주의사항 사이트의 .. 2023. 9. 4.
스프링 API 문서 만들기 스프링 API 문서 만들기 작성 이유 백엔드 개발자 같은 경우 프론트 개발자에게 문서를 전달하여, 어떤 기능이 있는지 알려준다 백엔드 개발자끼리 정보를 공유할 수 있다 즉 개발자가 만든 기능을 사람들이 이해할 수 있도록 작성을 하는 것이다 .txt로 만들면, 업데이트, 수정 하는 것이 어렵다 (개발 할 때마다 수정을 해야 한다) 계속 수정을 못 하면 사용자들이 기능을 제대로 못 사용할 수도 있다 API 문서를 돕는 tool Swagger / ReDoc / GitBook 등이 있다 고르는 방식은 협업의 방식, 사람들의 취향 등 사용한 언어를 고려해서 사용할 수 있다 사용성 : 간단한가??? Swagger? HTML로 접근을 할 수 있다 API 문서를 만들면, 하나의 URL로 다른 사람에게 공유를 할 수 있.. 2023. 9. 3.
[스프링 부트 핵심 가이드] Chapter 5. API를 작성하는 다양한 방법 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 5. API를 작성하는 다양한 방법 각 HTTP 메서드에 해당하는 API를 개발할 예정이다 GET / POST / PUT / DELETE 가 있다 GET API 만들기 주로 어플리케이션에서 데이터를 조회할 때에 사용하는 API이다 아래에서는 http://localhost:8080/api/v1/get-api/name 주소로 실행이 된다 새로 메서드를 만들때마다, 어플리케이션을 실행해야 한다 @RestController @RequestMapping("/api/v1/get-api") public class GetController { // http://localhost:8080/api/v1/get-api/name @GetMapping("/na.. 2023. 9. 3.
[스프링 부트 핵심 가이드] Chapter 4. 스프링 부트 애플리케이션 개발하기 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 4. 스프링 부트 애플리케이션 개발하기 프로젝트 생성 두 가지 방법이 있다 Spring Initializr 라는 사이트를 통해 프로젝트를 생성한다 Intellij IDEA에서 프로젝트를 생성한다 인텔리제이 IDEA에서 프로젝트 생성 인텔리제이에는 Spring Initializr가 내장이 되어 있다 외부에서 프로젝트를 만드는 것이 아닌, 인텔리제이에서 바로 프로젝트를 생성하고 개발할 수 있다 1. 인텔리제이에서 New Project를 클릭하기 2. 왼쪽 바에 언어와 빌더 등이 있는데 Spring Initializer 선택하기 Name : 프로젝트 이름 Location : 프로젝트를 생성할 위치 Language : JVM (Java Virt.. 2023. 9. 2.