분류 전체보기 111

[디자인 패턴] Build Pattern, 빌더 패턴

1. 빌더 패턴을 사용하는 이유 불필요한 생성자를 만들지 않고, 객체를 생성 데이터의 순서에 상관없이 객체를 생성 명시적이고, 이해하기 쉬움 유지 보수가 편함 즉 빌더 패턴은 객체 생성을 깔끔하고, 유연하게 하기 위한 기법 2. [점층적 생성자 패턴] -> [자바빈 패턴] -> [빌더 패턴] 2-1. 점층적 생성자 패턴 : 모든 인자를 받는 경우의 생성자를 만든다. 단점 다른 생성자를 호출하는 생성자가 많아질 경우, 인자가 추가될 때 코드 수정이 어렵다. 코드 가독성이 떨어진다 (인자 수가 많은 생성자의 경우, 코드만 보고 의미를 해석하기 어렵다.) 2-2. 자바빈 패턴 : setter 메소드를 이용하여 객체에 값을 세팅한다. 단점 객체 일관성이 깨진다 : 1회의 호출로 객체 생성이 끝나지 않는다. (한..

java 2021.02.24

[Spring] 각기 다른 환경의 property구성 및 적용

실제 프로젝트에서는 여러 개발 환경이 존재한다. 예를 들어 개발 DB가 따로 있을 것이고, 운영 DB가 따로 있을 것이다. 그렇기 때문에 property의 설정값들도 여러개 존재 할 수 있다. application.yml에서는 '---' 기준으로 설정을 나눌 수 있다. (각 환경은 spring.profiles 속성에서 이름을 정의한다.) //기본포트 8080에 local환경은 포트8081 dev환경은 포트 8082 세팅 server: port: 8080 --- spring: profiles: local server: port: 8081 --- spring: profiles: dev server: port: 8082 위외 같이 하나의 application.yml에서 모든 profiles를 설정하면 가독성이..

Spring 2021.02.14

[Spring] property파일

스프링 부트의 property 파일은 설절 관련 및 기타 정적인 값을 키,값 형식으로 관리함. 예를 들어 서버포트를 기본 8080에서 8081 로 변경하고 싶을 때, application.property파일에 server.port: 8081을 추가하면 된다. 최근에는 property파일 대신 YAML파일을 더 많이 사용하는 추새라고 한다. (YAML이 가독성좋고 문법이 이해하기 쉽다는 장점이 있음) YAML파일을 확장자는 .yml이며 application.yml 생성 후 작성하면 된다. //property 파일 설정 시 server.port: 8081 //yml 파일 설정 시 server: port: 8081

Spring 2021.02.14

[Typescript ]블록체인 만들기 (1) - yarn init

TypeScript란?? 프로그래밍 언어, 자바스크립트와 매우 유사하다. 컴파일 하면 JavaScript로 컴파일이 된다. TypeScript를 왜 사용하는가?? JavaScript가 갖고 있지 않은 몇가지 규칙들이 있다고 함 JavaScript가 유명한건, 엄격한 규칙이 없기 때문이고, 사용하기 쉽고, 원하는 방향으로 수정하기도 쉽기 때문이다. 그러나, 큰 프로젝트를 한다거나, 팀으로 일한다거나, 버그를 최소화 하고 싶을 때 위의 장점은 단점이 된다. 그렇기 때문에 생긴것이 TypeScript이다. (Superset of JavaScript) TypeScript는 언어가 예측 가능하고, 읽기 쉬운 코드 등등 JavaScript를 더 잘 사용하게 한다. https://academy.nomadcoders...

클론 코딩 2020.04.27

[프로그래머스 코딩테스트 연습] 해시 3

문제 링크 : https://programmers.co.kr/learn/courses/30/parts/12077 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 3번 문제 : 위장 문제 설명 내가 푼 답(자세한 설명은 주석으로 달아 놓았음) import java.util.*; class Solution { public int solution(String[][] clothes) { //경우의 수 개념을 활용 //해당 문제에서의 식은 --> (의상종류1 + 1) * (의상 종류2 + 1) - 1 이다 //즉, headgear가 2개고, eyegear가 1이면,..

[프로그래머스 코딩테스트 연습] 해시 2

문제 링크 : https://programmers.co.kr/learn/courses/30/parts/12077 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2번 문제 : 전화번호 목록 문제 설명 내가 한 풀이 (subStirng()으로 잘라도 되지만 startWith()를 처음봐서 한번 써보았다.) import java.util.*; class Solution { public boolean solution(String[] phone_book) { boolean answer = true; //접두사를 보는것이라서 정렬을 해 놓으면 이중 for문을 쓸 필..

[프로그래머스 코딩테스트 연습] 해시 1

(해당 테스트 링크 : https://programmers.co.kr/learn/courses/30/parts/12077) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해시란? 해시(hash)란 데이터의 효율적 관리를 목적으로 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 자료구조이다. 이 때 매핑 전 원래 데이터의 값을 키(key), 매핑 후 데이터의 값을 해시값(hash value), 매핑하는 과정 자체를 해싱(hashing)라고 한다. 자료구조란? 자료구조(資料構造, 영어: data structure)는 컴퓨터 과학에서 효율적인 접근 및 ..

코딩테스트 시작하기

프로그래머스에서는 개발자 채용 및 자료구조, 알고리즘, SQL 등과 관련된 다양한 문제들이 있다. 그 문제들을 한번 풀어보려고 한다. (프로그래머스 링크 : https://programmers.co.kr/learn/challenges) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr