일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- JPA
- 싸피
- 백준
- 코드트리
- JUnit
- 부분수열의합2
- DFS
- 알고리즘
- DP
- database
- Spring
- 유니온파인드
- 알고리즘기본개념
- Union Find
- 자바
- 트러블슈팅
- 코테
- 그리디
- 기본유형
- 완전탐색
- Java
- SWEA
- 코딩테스트
- 다익스트라
- BFS
- SSAFY
- 코딩테스트실력진단
- 그래프
- 완탐
- 다시보기
- Today
- Total
목록Java (18)
HwangHub
What is Garbage Collection ? 자바를 공부하다보면 자주 마주하게 되는 "가비지 컬렉션"이라는 말. 이번 기회에 한번 제대로 알아보자. "가비지 컬렉션"이란, 말 그대로 쓰레기를 모아서 버려주는 것을 의미한다. 마치내가 방 안에서 살다 보면 처음엔 잘 쓰던 물건이더라도, 어느샌가 손도 대지 않는 물건이 존재하듯이, 프로그램도 계속 작업을 수행하다보면 끊임없이 필요 없는 데이터들이 메모리 위에 쌓여나가게 되는 것이 일반적이다. 고전적인 프로그래밍 랭귀지인 C나 C++의 경우에는 이렇게 메모리를 차지하는 데이터에 대하여 수동으로 free를 해줘야 한다. 이를 처리하지 않으면, 필요하지도 않은 데이터가 메모리에 지속적으로 공간을 차지하여 이를 활용하지 못한다 해서 "메모리 누수(memory..
jdbc 프로젝트를 진행하다가 위와 같은 이슈를 마주했다. 문제 원인을 알아보니 문제의 코드는 아래 부분이였다. Statement stmt = conn.createStatement(); for (String ssn : ssnList) { sb = new StringBuilder(); String sql = sb.append(baseDeleteClause).append("ssn = ").append(ssn).append(";").toString(); stmt.executeQuery(sql); } 위 코드 중 .executeQuery()메서드가 문제다. 한번 이번 기회에 살짝 알아보자. 알아야 할 것 jdbc에서 지원하는 실행 메서드는 execute() , executeQuery() , executeUpda..
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 문제 해석 이 문제는 지난번에 풀었던 "사각형 채우기"와 같은 유형의 문제로써, 점화식을 세울 때 조금 더 생각을 해줘야 하는 문제이다. 기본적으로 n번째 자리까지 타일을 까는 경우의 수는 n-1, n-2 번째까지의 타일을 까는 경우의 수 들을 이용하여 도출해낼 수 있다는 아이디어가 DP의 기본 흐름이다.(큰 문제는 작은 문제로 쪼개어 생각한다.) 이렇게 볼 때, 1칸짜리 그리고 2칸짜리를 이용하여 f(n) = 2 * f(n-1) + 3 * f(n-2) 까지는 쉽게 구해질 것이다. 이게 만약 안보인다면 ..
이펙티브 자바에서 소개된 객체 생성 방법론인 Builder Pattern을 쉽게 적용할 수 있도록 Lombok에서는 @Builder라는 어노테이션을 제공해 줍니다. 이를 개인적으로는 클래스 레벨에서 많이 사용해오곤 헀는데, 롬복 공식 문서에 따르면 @Builder 어노테이션은 생성자 레벨에서 사용하는 것을 권장한다고 합니다. 출처: https://projectlombok.org/features/Builder @Builder projectlombok.org 클래스 레벨과 생성자 레벨에는 한 가지 차이점이 있는데, 클래스 레벨에서는 가능한 모든 필드에 대하여 빌더 메서드를 생성했다면, 생성자 레벨에서는 생성자의 파라미터 필드에 대해서만 빌더 메서드를 생성한다는 점입니다. 출처: https://sudo-min..
출처: https://cerulean85.tistory.com/149 객체와 인스턴스의 차이 * 자의적인 해석이므로 논란의 여지가 있음 객체와 인스턴스의 차이를 알아보니 블로그마다 말이 다르다. 어떤 블로거는 인스턴스는 객체와 같지만, 관계적인 측면에서 이야기할 때 객체 대신 cerulean85.tistory.com 객체(Object)는 소프트웨어 세계에 구현할 대상이고, 이를 구현하기 위한 설계도가 클래스(Class)이며, 이 설계도에 따라 소프트웨어 세계에 구현된 실체가 인스턴스(Instance)이다. 객체(Object)는 현실의 대상(Object)과 비슷하여, 상태나 행동 등을 가지지만, 소프트웨어 관점에서는 그저 콘셉(concept), 즉 사유의 결과일 뿐이다. 소프트웨어에서 객체를 구현하기 위해..
객체는 여러 필드를 가지고 있을텐데, 어떤 특정 필드를 기준으로 오름차순 정렬을 하기 위해서는 여러가지 방법이 존재합니다. @Override compareTo() 가장 원시적인 방법(지금은 잘 사용하지 않는 방법)은 클래스에 Comparable 인터페이스를 구현한다고 한 뒤에, compareTo() 함수를 Override하면 됩니다. 이 때, 현재 객체와 넘어오는 객체의 값을 비교하여, 값을 나타내주는 것에 따라 오름차순/내림차순이 결정됩니다. 1. this(현재 객체)가 비교 객체보다 뒤에 있어야 한다면 -> 오름차순 : 양수(1) /// 내림차순 : 음수(-1) 2. this(현재 객체)가 비교 객체보다 앞에 있어야 한다면 -> 오름차순 : 음수(-11) /// 내림차순 : 양수(1) 3. this(..
다음은 코드트리를 풀다가 컴파일 에러가 발생했던 코드이다. List ansList = li.stream() .filter(o -> o.weather.equals("Rain")) .sorted(Comparator.comparing(Weather::getDate) .thenComparing(Weather::getDay)) .toList(); 위 코드는 인텔리제이 IDE에서는 문제가 되지 않았다. 따라서 의심 없이 제출을 눌렀는데, 컴파일 에러가 발생하였다. 런타임 에러면 이전에 배열을 사용중이었기에 indexException이겠거니 하겠지만, 컴파일 에러라고 하니 "오타가 있나?" 하고 봤다. 하지만 생각해보니 정상적으로 실행되었던 코드이기에 자바 버전 문제임을 느끼고 검색을 했다. Stream.toList..
출처: https://devjem.tistory.com/41 최근 스트림 API에 대해 집중적으로 공부하는 와중에 map과 flatMap의 차이점을 더 자세히 정리하고 싶어서 포스팅을 하게 되었습니다. Map이란? map은 스트림 내부의 요소 하나하나에 접근해서 제가 파라미터로 넣어준 함수를 실행한 뒤 최종연산에서 지정한 형식으로 반환해주는 메서드 입니다. List people = Arrays.asList( new Person("personA", 24), new Person("personB", 26), new Person("personC", 28), new Person("personD", 30) ); 위와 같은 리스트를 예시로 만들어보겠습니다. List nameList = people.stream() ...
자바 8 이후부터 람다와 스트림을 이용한 함수형 프로그래밍이 적극적으로 도입되었습니다. 이번에는 이 중에서 stream에 대하여 집중적으로 학습해보려 합니다. 스트림이란? 스트림은 foreach iterator를 사용하기보다, 메서드 체이닝을 활용하여 원하는 연산을 수행할 수 있도록 구현한 것입니다. 메서드 체이닝을 통해서 좀 더 직관적으로 어떠한 연산을 수행하는지 표시하기 때문에 유지보수성이 올라간다는 큰 장점이 있습니다. import java.util.List; import java.util.stream.*; public class Main { public static void main(String[] args) { List list = Arrays.asList(1, 2, 3); Stream stre..
Java에는 Arrays.sort(arr)를 이용하여 오름차순 정렬이 가능하다. 잘 사용하진 않겠지만 Arrays.sort(arr, 시작 idx, 끝 idx + 1)을 사용하여 특정 구간만 오름차순으로 정렬할 수도 있다. import java.util.Arrays; public class Main { public static void main(String[] args) { int[] arr = new int[]{12, 41, 37, 81, 19, 25, 60, 20}; Arrays.sort(arr);// 전체 정렬 for(int i = 0; i < 8; i++) System.out.print(arr[i] + " "); // 12, 19, 20, 25, 37, 41, 60, 81 Arrays.sort(ar..