전체 글 122

<spring> DTO

DTO란?data transfer object (데이터 전송 객체)  계층 간 데이터 교환을 위한 객체로직을 가지지 않고 getter/setter 메소드만가진 순수한 데이터 객체 클래스DB에서 데이터를얻어 service나 controller등으로 보낼 때 사용  @Getterpublic class MemoResponseDto { private Long id; private String username; private String contents; public MemoResponseDto(Memo memo) { this.id = memo.getId(); this.username = memo.getUsername(); this.contents = m..

web 개발/spring 2024.05.15

<spring> REST API

REST API란?REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미 HTTP Method서버 구조에서 요청(request)과 응답(response)이 이루어지는 방식을 의미함 서버가 수행해야 할 동작을 지정하고 요청을 보내는 방법 GET: 리소스를 조회POST: 데이터 추가, 등록PUT: 리소스 대체, 수정(전체 수정)DELETE: 리소스 삭제P..

web 개발/spring 2024.05.15

<spring> MVC, thymeleaf

MVC란?model, view, controller로 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 사용되는 sw 디자인 패턴사용자가 controller 조작하면 controller는 model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 view를 제어하여 사용자에게 전달 model어플리케이션의 정보, 데이터를 나타냄, 정보들의 가공을 책임지는 컴포넌트view데이터 및객체의 입력, 보여주는 출력을 담당, 데이터를 기반으로 사용자들이 볼 수 있는 화면  controller사용자가 데이터를수정, 사용하는 것에 대한 이벤트를 처리하는 부분Thymeleaf란?controller가 전달하는 데이터를 이용하여 동적으로 화면을 구성할 수 있게 해주는 템플릿 엔진Model.addAt..

web 개발/spring 2024.05.15

<카카오클라우드 스쿨 in JEJU> 면접후기

http://kakaocloudschool.rapa.or.kr/ft/main.do 카카오클라우드 스쿨 카카오클라우드 스쿨 클래스메이트 모집 kakaocloudschool.rapa.or.kr 다양한 부트캠프 중 카카오에서 진행하는 부트캠프를 발견하여 신청하였다. 내 진로는 백엔드로 정하기는 했지만 사용이외의 기반이 되는 지식, 서버나 클라우드, 가상화 네트워크 등의 지식은 거의 전무하였기에 좀 더 지식의 깊이와 넓이를 키우기에 좋은 교육이라 생각하였다. 지원서는 구글 폼으로 작성하였고 간단한 질문에 300자 내외의 답변을 제출하고 서류결과를 기다렸다. 많은 내용을 요구 하지 않았기에 서류에서 적당히 성의만 보인다면 면접을 볼 기회를 가질 수있을 것 같았고 내가 신청한 면접 1순위 날짜에 면접 볼 기회를 얻..

후기 2024.03.24

<카카오클라우드 스쿨 in JEJU> 면접준비 - 서버의 기초 정독!

서버, 클라우드 등에 대해 제대로 공부해 본적이 없는 비전공 출신이라 면접 전 가볍게라도 읽어보기 위해 책을 사게 되었다. 이하는 내 공부를 위한 내용 요약 및 느낀점이다. 1. 서버 서버 : 클라이언트에게 정보를 제공하는 작업을 수행하는 컴퓨터 시스템 요청과정 클라이언트가 서버에게 서비스 요청 요청에 맞춰 처리 수행 결과 클라이언트에 반환 클라이언트 처리 결과 수신 서버 소프트웨어: 컴퓨터에 필요한 종류의 서버 소프트웨어 선태 후 설치, 한개의 PC에 여러개의 서버 설치 가능 2. 네크워크 프로토콜: 통신할 때의 약속 ex ) http OSI 참조모델 physical layer 디지털 데이터를 전기 신호나 광신호, 전파로 변환 datalink layer 같은 네트워크에 있는 컴퓨터와의 연결을 확보 이더..

후기 2024.03.21

<java> 백준 1092- 그리디

https://www.acmicpc.net/problem/1092 1092번: 배 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보 www.acmicpc.net 최근 푼 문제 중 가장 어렵게 푼 문제였다. 이유는 처음 떠올린 방식이 틀렸습니다를 띄우고 나서 요소들을 바꾸어 볼 생각은 없이 바로 이러한 접근 방식이 틀렸다는 결론을 내리고 다시 쳐다보지 않았기 때문에... 섣부른 결론은 안된다와 같은 방식이라도 요소들을 바꿈에 따라 정답에 도달할 수 있다는 것을 깨달았다. 방법 1. 처음 떠올린 방식은 오름차순으로 정렬하면서 크레인을 순회하다..

알고리즘/java 2024.03.21

<java> 백준 12904 - 그리디

최근 백준 문제를 열심히 풀고 있긴 했었는데 최단시간계산이나 다익스트라 같은 난이도는 높지만 해결 방식만 알면 사용만으로 풀 수 있는 문제들로만 점수를 올리고 있어 점수를 물로 올리고 있는 것 같은 느낌이 들었다. 그래서 알고리즘 공부라는 본질적인 목표를 잃지 않도록 그리디 문제를 한동안 풀기로 했다. 이전 처럼 수월하게 풀리지는 않지만 하고 나면 확실히 머리를 썼다라는 기분이 들었다. https://www.acmicpc.net/problem/12904 12904번: A와 B 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수 ..

알고리즘/java 2024.03.19

우테코 4주차 후기

프로젝트를 시작하면서 처음에는 모델 클래스의 구성이 어려웠습니다. 특히 메뉴 종류를 어떻게 효율적으로 관리할지 고민이 컸습니다. 메뉴 종류별로 나누어 입력하는 방식이 처음에는 논리적으로 보였지만, 사용자가 원하는 메뉴를 찾는 과정이 복잡해지는 문제를 발견했습니다. 이를 해결하기 위해 메뉴 모델 클래스를 새로 만들었습니다. 그런데 이 클래스를 활용해 사용자가 선택한 메뉴를 다루는 OrderMenu 클래스를 만드는 과정에서 문제가 발생했습니다. 이름 충돌이 발생하거나, 메뉴의 차이점을 파악하거나, 생성자의 입력값을 결정하는 등의 문제를 해결하는 과정에서 객체지향적인 설계에 대해 깊게 생각하게 되었습니다. 그리고 '객체를 객체 답게 사용하라'는 원칙에 대한 고민도 있었습니다. 이 원칙은 객체가 수행하는 메소드..

후기 2023.12.12

우테코 3주차 후기

enum 클래스의 사용은 저에게 새로운 도전이었습니다. 처음에는 이해가 부족하여 이를 어떻게, 어디에 적용할지 감이 오지 않았습니다. 그러나 enum 클래스를 사용하면서 그 특징과 활용 방법에 대해 점차 이해하게 되었습니다. enum 클래스는 고정된 상수 집합을 표현하는 데 사용됩니다. 이는 상수의 값이 변경되지 않기 때문에 안정성을 제공하며, 예상치 못한 값이 할당되는 것을 방지할 수 있습니다. 그러나 이런 특성 때문에 enum 클래스의 사용에는 한계가 있음을 깨달았습니다. 즉, 추후에 값이 변할 수 있는 경우에는 enum 클래스가 적합하지 않다는 것입니다. 이런 이해를 바탕으로, 상수로써의 기능이 필요하면서 동시에 값의 변화가 없는, 즉 고정된 값을 필요로 하는 경우에 enum 클래스를 활용하기로 결..

후기 2023.12.12

<java> 백준 18352 - bfs, 그래프 탐색

https://www.acmicpc.net/problem/18352 18352번: 특정 거리의 도시 찾기 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개 www.acmicpc.net 그래프를 입력하고 bfs로 탐색하는 가장 기초적인 문제이다 list = new ArrayList[node+1]; for(int i = 0; i< list.length; i++){ list[i] = new ArrayList(); } for(int i = 0; i< edge; i++){ str = reader.readLine()..

알고리즘/java 2023.09.04