전체 글 302

[Spring] 데이터를 Client 에 반환, Jackson 라이브러리

템플릿 엔진이 적용된 SpringBoot 에서 Controller 에서 문자열을 반환하면 templates 폴더에서 해당 문자열의 html 파일을 찾아서 반환해줌 따라서 html 파일이 아닌 JSON 데이터를 브라우저에 반환하려면 해당 메서드에 @ResponseBody 애너테이션을 추가해줘야함 1. 반환값 : StringJava는 JSON 타입을 지원하지 않기 때문에 JSON 형태의 String 타입으로 변환해서 사용해야 함 2. 반환값 : String 외 자바 클래스"자바 객체 → JSON 으로 변환"Spring 에서 자동으로 Java 의 객체를 JSON 으로 변환해줌@RestController 을 사용하면 @ResponseBody 를 전부 생략하고 해당 클래스 전체를 데이터를 전달하는 클래스로 만들 ..

[Spring] Controller, 정적 페이지와 동적 페이지

Controller 패턴이 적용되어있지 않았다면 위의 4가지 API 를 처리하기 위해 3개의 클래스를 만들어야했을 것 API 마다 파일을 만들 필요가 없음 유사한 성격의 API 를 하나의 Controller 로 관리( @RequestMapping 사용 ) 메서드 이름 내 마음대로 설정 가능 ( 클래스 내의 중복 메서드명 불가 )정적페이지의 기본은 static 폴더에 정적 페이지 hello.html 을 만들고 그냥 주소창에 /hello.html 로 접속시키면 바로 연결된다.이를 Controller 에서 연결시키고 싶다면implementation 'org.springframework.boot:spring-boot-starter-thymeleaf’해당 dependency를 주석 처리해야 테스트가 가능 thym..

[알고리즘][Java] 정수 제곱근 판별, 오버플로우

class Solution { public long solution(long n) { for(long x = 1; x*x 정수의 제곱근을 판별하는 문제에서의 포인트 1. 오버플로우n 의 제곱근인 x 라면 굳이 long 타입으로 선언해주어야할까?int 로 x 를 선언해주었을 때(int 변수) * (int 변수) 의 결과가 (int 변수) 의 범위를 초과하면 오버플로우가 발생할 수 있음.예를 들어, int 의 최대값인 2,147,483,647 에 1을 더하면 -2,147,483,648로 변환됨 2. 필요없는 계산 줄이기기존에 반복문의 범위를 x근데 어차피 x*x 가 n 보다 넘어간다면 더 이상 제곱근이 될 수가 없기 때문에이를 미리 생각해서 필요없는 계산을 사전에 없애서 성능 향상을 기대해..

[Spring] Gradle, Lombok

Gradle빌드 자동화 시스템우리가 작성한 Java 코드를 설정에 맞게 자동으로 Build 해줌소스 코드를 실행 가능한 결과물로 만드는 일련의 과정을 뜻함Gradle 을 사용해 간편하게 Java 소스 코드를 실행 가능한 jar 파일로 만들어줌Lombok자바 프로젝트를 진행하는데 거의 필수적으로 필요한 메서드/ 생성자 등을 자동으로 생성해줌으로써 코드를 절약할 수 있도록 도와주는 라이브러리 @Getter  @Setter @Setter, @Getter 롬복을 달아주면 자동으로 setter, getter 메소드가 생성된다.@NoArgsConstructor  @AllArgsConstructor@NoArgsConstructor 롬복은 기본생성자를,@AllArgsConstructor 롬복은 모든 필드를 파라미터로 ..

[내배캠] Java Project 22조 내배캠 회원관리 프로젝트 팀 KPT 회고

팀 KPT 회고KEEP, 다음 프로젝트로 가져갈· 여러 문제들을 직면했어도 끝까지 포기하지 않고 프로젝트를 완성시킨 점 · 깃허브를 이용해서 체계적으로 브랜치를 관리했던 점 · 못한다고 서로 질책하지 않은 점 · 진행 중에 같이 알면 좋을 부분을 알게되면 부담없이 바로 공유했던 점· 코딩 중 어려움이 찾아왔을 때 서로 도와주려고 노력한 점· 회의를 통해 팀원들이 서로 의견을 취합하고 소통하려고 노력한 점 ·  클래스를 구성하기 전 먼저 주석으로 어떤 메서드들이 필요하고 , 어떤 필드들이 필요할 지 설계한 점 ·  Github PR을 사용하여 혹시 모를 병합 과정 속에 코드 손실을 막기 위해서 팀원들과 병합을 토의하고 승인한점 ·  푸시를 하고 깃헙 저장소에서 확인 후 병합을 실행한점   PROBLEM,..

[알고리즘] [Java] String → Int 변환, Integer.parsInt(), char - '0'

Integer.parseInt(), Integer.valueOf()class Solution { public int solution(String s) { int answer = Integer.parseInt(s); return answer; }}String 타입의 변수를 숫자로 변환하기 위해 아래 두 방법을 알아봤다.int num = Integer.parseInt(str);String 타입의 num 을 int 타입으로 변환int num = Integer.valueOf(str);String 타입의 num 을 Integer 타입으로 변환앞에 부호 +,- 를 사용해도 int 안으로 정상적으로 들어간다. char - '0'public class StrToInt { pub..

[알고리즘] [Java] 정수를 문자열로 바꾸기, 타입 변환하기

class Solution { public int[] solution(long n) { String i = Long.toString(n); int[] answer = new int[i.length()]; for (int j = 0; j  이번 알고리즘 문제를 풀면서 알게된 부분을 정리해보려고 한다. 1) 배열을 선언하기 위해서는 배열 크기를 먼저 지정을 해야했다. 하지만 입력되는 값에 따라 크기가 바뀌기 때문에 이를 어떻게 하면 될지 문제가 생겼다. String i = Long.toString(n); 입력받은 long 타입의 n 정수를 Long.toString 안에 넣어서 String i 변수 안에 넣어줌으로서 "정수" 를 "문자열" 로 바꿀 수 있었다. int..

[Java] Collection 과 Wrapper 객체

java 의 interface 란?실제 구현은 인터페이스 내부에 없음가장 추상화된 개념의 명세추상적인 타입의 역할을 함실제로 인터페이스를 구현하는 구현체들의 행동 양식을 정해줌다중 상속을 구현할 수 있게 함결론적으로 추상적인 타입의 역할을 하면서 해당 타입의 구현체들의 행동 양식이나 특성을 지정해주는 역할을 함 List, 배열 List 는 추상적 자료구조, 순서를 가지고 일렬로 나열한 원소들의 모임 ( 순서가 있고 중복 허용 부분에서 집합(Set) 과 구별 )순서를 가지고 저장되어 있어서 검색 접근이 쉽지만 추가, 삭제가 매우 느림하지만 가장 끝과 가장 처음에 추가되는 Stack, Queue 는 순서를 유지하기 때문에 빠름 Wrapper 객체char, int, long과 같은 것들은 실제로 “값” 이상의..

[Java] Generic

제네릭의 효용타입 언어에서 중복되거나 필요없는 코드를 줄여주고, 그러면서 타입 안정성을 해치지 않는다. 파이썬, 자바스크립트와는 다르게 Java 는 타입을 지정해줘야한다. 같은 함수더라도 타입에 따라 세 차례나 구현해야함. 제네릭 문법1. 제너릭은 클래스 또는 메서드에 사용 가능, 클래스 이름 뒤에 문법 안에 들어가야할 타입 변수 지정 ( T 는 컨벤션 )2. 선언해둔 타입 변수는 해당 클래스 내에서 특정한 타입이 들어갈 자리에 대신 들어갈 수 있음3. 메서드의 리턴 타입에 들어가는 것 역시 마찬가지다. 4. 제너릭을 통해 구현한 클래스를 사용하는 부분.클래스에 선언했기 때문에 인스턴스를 만들기 위해서 타입 변수에 들어갈 실제 변수의 값을 넣어줘야함. ( String 으로 넣어준 모습 ) 5. 타입변수..

[Git] Pull Request 올리기

나의 기능 브랜치에서 공용 브랜치 ( main 등등 ) 으로 합칠 때 여러 방법이 있지만 안전한 방법 중 하나는 Pull Request 를 통해 merge 전에 승인을 받는 것이다. 나의 브랜치 dev 에서 코드를 수정하고 push 를 통해 원격 저장소에 저장시킨다.git add .git statusgit commit -m ""git push origin dev로컬 브랜치 dev에서 원격 저장소 브랜치 dev로 코드가 올라간다.push 를 한 후에 github 페이지를 확인해보면 이 알람이 뜬 걸 볼 수 있고, 옆에 Compare & pull request 버튼을 눌러준다. 최상단 compare : dev 에서 base : main 으로 합치겠다는 말을 뜻한다 title 과 description 을 작성..