목록전체 글 (232)
거인의 코딩일지
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b74PNm/btsxaKMjwOa/gh2wGOqyj8muPWAFZ2tbL1/img.png)
기본키 생성 전략 JPA 가 제공하는 DB 기본키 할당 전략은 직접 할당 방식, 자동 생성 방식 이 존재한다. 직접 할당 방식 직접 할당 방식을 사용할 경우 Entity를 생성할 때 Key Column 에 @Id 를 사용해주면 끝이다. @Id private long id; @Id 가 적용 가능한 타입은 Java 기본형 (int, double, long ...) Java Wrapper String Java.util.Date Java.sql.Date Java.math.BigDecimal java.math.BigInteger 자동 생성 방식 자동 생성 방식을 사용할 경우 @Id 와 @GeneratedValue 를 사용한다. 자동생성 방식은 대리 키를 사용하는 방식으로 IDENTITY, SEQUENCE, TAB..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/nLLgW/btsw66ByGna/OFVZNJs1dy2ik9oK2j2V4K/img.png)
Swagger 설정하는 방법 Swagger 설정하기 위한 라이브러리는 2가지가 있다 Spring - Fox , Spring - Dox 2가지 중에 사용하면 된다. Spring - Fox 오래전에 나온 라이브러리이다. (2015년) 2020년 이후로 업데이트가 멈췄다. 따라서 Spring Boot 2.6 이상 버전에서는 바로 적용이 안된다. https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui Spring - Doc 최근에 나온 라이브러리 이다. (2019년) 업데이트가 최근까지도 이루어지고 있다. Spring Boot 2.6 이상도 지원한다. https://mvnrepository.com/artifact/org.springdoc/spr..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bqjNxe/btsxh7sgQgR/8pIxLUb1OWF7kAzAF7SKy0/img.png)
Swagger(스웨거)란? 스웨거는 Web API 문서화를 위한 도구이다. Open Api Specification (OAS)를 위한 프레임워크 API 들이 가지는 명세(Spec)를 관리하기 위한 것이다. Web API를 수동으로 문서화 하는것은 힘든일이지만 Web API 의 스펙이 변경되면 문서 역시 변경되어야 하는데 이를 유지 하는것은 쉽지 않다. Swagger를 사용하면 Web API 가 수정되더라도 문서가 자동으로 갱신 되기에 편리하다. OAS(Open Api Specification)란?? 간단하게 설명하면 - Open API == Specification - Swagger == Tools for implementing the specification RESTful 웹 서비스를 약속된 규칙에 따..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bXvl8W/btsxg1MdXLw/7tYHh41n8dXKqLo90ZnTS1/img.png)
import java.util.*; class Solution { public int[] solution(int n) { int size = 0; List list = new ArrayList(); for(int i = 1; i
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/N0w99/btsxghofdnb/R2HERaJAxFO19P3GzDS7Zk/img.png)
import java.util.*; class Solution { public String solution(String s) { String answer = ""; String[] arr = s.split(""); Arrays.sort(arr); for (int i = 0; i < arr.length; i++) { int count = 0; for (int j = 0; j < arr.length; j++) { if (arr[i].equals(arr[j])) { count++; } } if (count == 1) { answer += arr[i]; } } return answer; } } 우선 문자열을 배열로 변환 시켜준뒤 문제에서 나타난것 처럼 사전 순으로 정렬하기 위하여 sort() 함수를 실행하여 오..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b7LLJp/btsxgn2Y20x/wccdpUwkd5lQkR6j4ae5I1/img.png)
class Solution { public int solution(int[] array, int n) { int answer = 0; int min = 2147483647; for(int i = 0; i < array.length; i++){ int diff = Math.abs(n - array[i]); if(diff < min){ min = diff; answer = array[i]; } if (diff == min && array[i] < answer) { answer = array[i]; } } return answer; } } 최소값을 비교해주기 위하여 int의 최대값으로 변수 생성해준뒤 n 에서 array의 i 번째 값을 빼주고 절댓값으로 변경해준다 그 뒤 만약 그 절대값이 최소값보다 작다면 최..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Tc53r/btsxgcfNKTj/5qEv0rcmnoJDiysvYo7FNK/img.png)
스키마(Schemas)란??? 스키마는 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합이다. 스키마는 데이터베이스를 구성하는 데이터의 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시 데이터 값들이 갖는 제약조건등에 관해 전반적으로 정의함 스키마는 사용자의 관점에 따라 외부스키마, 개념스키마, 내부 스키마로 나누어 진다. 스키마의 특징 데이터 사전(Data Dictionary)에 저장되며, 다른 이름으로 메타데이터라고 한다. 현실 세계의 특정한 부분의 표현으로서 특정 데이터 모델을 이용해서 만들어 진다. 시간에 따라 불변인 특성을 갖는다. 데이터 구조적 특성을 의미하며, 인스턴스에 의해 규정된다. 스키마의 3계층? 데이터베이..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bvKrrz/btsxh77F3Ud/A2kbezp0bZoFl6QfKWjCyK/img.png)
프록시(Proxy) Proxy 객체를 사용하면 한 객체에 대한 기본 작업을 가로채고 재정의하는 프록시를 만들 수 있다. 프록시란?? Proxy 객체를 사용하면 원래 Object 대신 사용할 수 있는 객체를 만들지만, 이 객체의 속성 가져오기, 설정 및 정의와 같은 기본 객체 작업을 재 정의 할 수 있다. 프록시 객체는 일반적으로 속성 액세스를 기록하고 입력의 유효성을 검사하고 형식을 지정하거나, 삭제하는데 사용된다. 두개의 매개변수를 사용하여 Proxy 를 생성한다. target : 프록시할 원본 객체 handler : 가로채는 작업과 가로채는 작업을 재정의하는 방법을 정의하는 객체 const target = { message1: "hello", message2: "everyone", }; const h..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/2eKyH/btsv8TDAgcH/bArsC6tJgW8m5vMpmvjKdK/img.png)
class Solution { public long solution(String numbers) { long answer = Long.parseLong(numbers.replace("zero", "0") .replace("one", "1") .replace("two", "2") .replace("three", "3") .replace("four", "4") .replace("five", "5") .replace("six", "6") .replace("seven", "7") .replace("eight", "8") .replace("nine", "9")); return answer; } } 이 문제는 replace 함수를 사용하면 매우 쉽게 해결했다 다만 답이 Long 형이라서 Long 로 형변환을 해주어..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bTTwpa/btsvYYXOiPS/nCcZ4O3KKcwfl5c5y9bad0/img.png)
Spring 프레임 워크의 핵심 기술 중 하나는 DI(Dependency Injection, 의존성 주입)이다. Spring 프레임워크와 같은 DI 프레임워크를 이용하면 다양한 의존성 주입을 하는 방법이 있다. 다양한 의존성 주입 방법 1. 생성자 주입 (Constructor Injection) 생성자 주입은 생성자를 통해 의존 관계를 주입하는 방법이다. @Service public class UserService { private UserRepository userRepository; private MemberService memberService; @Autowired public UserService(UserRepository userRepository, MemberService memberServi..