분류 전체보기: 2105개의 글
들어 있는 내용 Play 2.0을 소개합니다. 비동기 방식의 프로그래밍을 위해 만들었어요! 타입 안전성을 중요하게 여깁니다. 자바와 스칼라를 네이티브 방식으로 지원합니다. 강력한 빌드 시스템을 제공합니다! 데이터 저장과 모델 통합 Play 2.0를 소개합니다. 2007년부터 자바 웹 어플리케이션 개발을 쉽게 만들기 위해 연구해 와습니다. 플레이 프레임워크는 Zenexity의 내부 프로젝트로 개발하기 시작했습니다. 플레이 프레임워크는 우리가 웹 프로젝트를 수행하는 방식에 영향을 많이 받았습니다. 우리의 웹프로젝트 수행방식의 특성에는 다음과 같은 것이 있습니다 : 개발자의 생산성을 중요시하고, 웹 아키텍쳐를 존중하며, JEE에서 사용하는 최고의 관행을 깨뜨리는 등 패키징에 관해 완전히 새로운 접근법을 시도합..
IntelliJ 테스트 코드 작성 시, 주로 given / when / then 패턴을 사용 합니다. 매번 반복 작업하기 번거로우니, 단축키를 만들어보겠습니다. LiveTemplate 활용 1. MacOS에서는 preferences, Windows에서는 Settings 2. Editor -> Live Templates을 클릭한 후, Java를 선택한 다음 + 버튼을 누르면 Live Template 3. Abbreviation에 tdd라고 입력 4. Template text에 given / when / then 템플릿 입력 $END$ 의 의미는 해당 위치에 커서 이동 @Test @DisplayName("") void $END$() { //given //when //then } 5. Define 버튼을 누르..
프로젝트 환경 JAVA 17 Spring Boot 2.6.2 Intellij 2021.1 내용 JAVA 버전을 11에서 17로 변경 후 애플리케이션을 실행하니 OpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release 라는 경고메세지가 출력되었다. 경고메세지를 확인해보니 해당 옵션은 JDK 13이상부터는 더이상 사용되지 않으며 향후 릴리스에서 제거될 가능성이 있다고 하는데 애플리케이션이 정상적으로 실행이 되는거 보면 문제는 없겠지만 찝찝해서 지워야겠다는 생각을 했다. Edit Configurations를 클릭 ..
컬렉션 프레임워크란? 다수의 데이터를 다루는 데 필요한 배열과 비슷하지만 더 성능이 뛰어난 많은 클래스들을 제공한다 크게 3가지 그룹이 있는데 List, Set, Map이다. 컬렉션 프레임워크의 인터페이스간 상속계층도 계층도와 같이 Map인터페이스는 상속계층도에 포함되지 않는다, 전혀 다른 형태로 컬렉션을 다루기 때문이다. 인터페이스 특 징 List 데이터의 중복을 허용하는 순서가 있는 데이터의 집합. 클래스 : ArrayList, LinkedList, Stack, Vactor 등 Set 데이터의 중복을 허용하지 않고 순서를 유지하지 않는 데이터의 집합. 클래스 : HashSet, TreeSet 등 Map 키(key)와 값(value)로 이루어진 데이터의 집합 키는 중복을 허용하지 않고 값의 중복을 허용..
DFS (깊이 우선 탐색) 소개 Root Node 혹은 다른 임의의 노드에서 시작해서 다음 분기(Branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법이다. Stack과 재귀함수(Recursion)으로 구현한다. 경로를 탐색할 때 한 방향으로 갈 수 있을 때까지 계속 가다가 더 이상 갈 수 없게되면 다른 방향으로 다시 탐색을 진행 모든 노드를 방문하는 경우에 이 방법을 사용한다. 사용용도 경로찾기 u, v가 주어졌을 때 u -> v로 가는 경로를 찾을 때 그래프의 사이클을 찾을 때 back edge 즉, 순환을 만들어 주는 마지막 edge를 찾는다. 시간복잡도 두 가지의 자료구조(인접 리스트, 인접 행렬)로 구현할 수 있다. 인접 리스트 : O(V + E) 인접 행렬 : O(V^2) 접점(V)..
BFS (너비 우선 검색) 정리 소개 Root Node 혹은 다른 임의의 노드에서 인접한 노드를 먼저 탐색하는 방법이다. Queue를 사용해서 구현한다. 시간 복잡도 인접 리스트 : O(V + E) 인접 행렬 : O(V^2) 접점(V), 간선(E) class Graph { private int V; private LinkedList adj[]; Graph(int v) { V = v; adj = new LinkedList[v]; for (int i=0; i
동적 계획법(Dynamic Programming) 정리 큰 문제를 작은 문제로 나눠서 푸는 알고리즘인데, 코딩테스트에서 자주 출제되는 알고리즘 기법입니다. DP 속성 Overlapping Subproblem (부분 문제가 겹친다.) Optimal Substructure (최적 부분 구조) Overlapping Subproblem 대표적인 예로 피보나치 수를 들 수 있다. Fn = Fn-1 + Fn-2 여기서 Fn을 큰 문제로 생각하고, 우측 항에 있는 Fn-1, Fn-2를 작은 문제로 나눈다고 생각하면 된다. Optimal Substructure 문제의 정답을 작은 문제의 정답을 합하는 것으로 구할 수 있다. 위의 예에서 작은 문제로 쪼갠 우측항의 Fn-1 + Fn-2로 큰 문제인 Fn의 값을 구할 수 ..
지난번 포스팅을 참조하면, 배열을 List로 변환할 때, Arrays.asList() 메소드를 사용하면 됩니다. 하지만, 배열의 원소가 int와 같은 primitive type인 경우 Arrays.asList()는 좀 다른 결과를 리턴합니다. 0. Arrays.asList()로 int 배열 변환하기 - Fail 코드 import java.util.Arrays; import java.util.List; public class IntArrayConvertToList { public static void main(String[] args) { // int 배열 int[] arr = { 1, 2, 3 }; // Arrays.asList() List intList = Arrays.asList(arr); // 결과..
배열을 List로 Arrays.asList() new ArrayList(Arrays.asList()) Collectors.toList() ArrayList를 배열로 toArray() - java.util.List 배열을 List로 1. Arrays.asList() 코드 import java.util.Arrays; import java.util.List; public class ArrayConversion { public static void main(String[] args) { String[] arr = { "A", "B", "C" }; // 배열 -> List로 변환 List list = Arrays.asList(arr); System.out.println(list.get(0)); // "A" Sys..
Character toCharArray() String을 char 배열로 변환하는 것 이 메소드를 활용해 자리변환등을 할 수 있었다. char[] chars = string.toCharArray(); isUpperCase() / isLowerCase() 해당 문자가 대문자/소문자인지를 확인하는 메소드 toUpperCase() / toLowerCase() 해당 문자를 대문자/소문자로 변환하는 메소드 isAlphabetic() 해당 문자가 알파벳인지 확인하는 메소드 isDigit() 해당 문자가 숫자인지 확인하는 메소드 getNumericValue() 해당 문자가 숫자인지 확인하는 메소드 char c1 = '3'; Character.getNumericValue(c1) // 3