Java
-
Item 1. Consider static factory methods instead of constructors독서/Effective Java 2021. 12. 4. 18:21
인스턴스를 생성하는 다양한 방법들 생성자 사용 빌더 사용(추후 아이템에 나온다.) 정적 팩토리 메서드 사용 정적 팩토리 메서드란? 해당 클래스의 인스턴스를 반환하는 메소드라고 보면 된다. Ex) boolean(primitive) 타입 -> Boolean(Object) 타입으로 변환 public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 정적 팩토리 메소드 != 팩토리 메소드 패턴 정적 팩토리 메서드는 디자인 패턴에 직접적으로 대응되는 것이 없다. 정적 팩토리 메소드를 사용했을 때 생성자보다 나은 장점들 (1) 이름을 가질 수 있다. 생성자에 대한 parameter가 그 자체로 반환되는 객체를 설명하지 않는 ..
-
[Head First Java] Chapter 4 - 객체의 행동Dev 2021. 1. 24. 02:33
* 해당 포스트는 "Head First Java" 책을 읽고 난 이후의 정리 내용입니다. 자세한 내용은 "Head First Java" 책을 통해 확인해주세요. * 평어체로 작성되었습니다. 상태는 행동에 영향을, 행동은 상태에 영향을 지난 챕터들에서 Object에는 각각 인스턴스 변수(상태), 메소드(행동)이 있다는 것을 코드로 확인했다. 이를 다시 한 번 보자. 해당 클래스들에서 상태/행동을 찾아보자. class Item { // 상태들을 나타냄 private final long seq; private String name; private int sellCnt; // 최초 생성 당시의 상태, 행동을 설정하는 생성자 public Item(long seq, String name){ this.seq = se..
-
[Head First Java] Chapter 2 - 객체 마을로의 여행Dev 2021. 1. 20. 17:20
* 해당 포스트는 "Head First Java" 책을 읽고 난 이후의 정리 내용입니다. 자세한 내용은 "Head First Java" 책을 통해 확인해주세요. 객체(Object)에 대해 다루는 챕터 절차적으로 실행했을 때 조건으로 행동을 분기해서 사용하는 방식에서 벗어나 더보기 절차적 관점에서의 행동 매핑 public static void rotate(String shapeType){ switch(shapeType){ case "AMOEBA": System.out.println("아메바 회전!"); // HIF 소리 출력 break; case "CIRCLE": System.out.println("원형 회전!"); // AIF 소리 출력 break; case "SQUARE": System.out.prin..
-
2020-08-12 오늘의 일지Dev/개발일지 2020. 8. 12. 17:48
aws의 s3에서 데이터를 받아와 Spark에서 이를 csv로 저장하는 프로토타입을 만들기로 했다. 구현 방향을 잡기 위해 일단 awssdk(v2)를 사용해 s3의 데이터를 작업용 랩탑에 저장하고, 저장된 데이터들을 Spark를 사용해 csv로 변환 후 저장하는 방향으로 두개로 나눠 구현했다. 1) s3 데이터 -> 로컬 데이터의 형식은 parquet이고, s3의 버킷 내에 폴더/년/월/일/parquet파일 구조로 이루어져 있었다. AwsCredentials을 사용해 인증키들을 설정하고(accessKeyId, secretAccessKey) S3Client Object를 빌드해 가져왔다. (인증키가 이미 PC에 있다면 EnvironmentVariableCredentialsProvider.create()를 ..
-
2020-07-31 오늘의 일지Dev/개발일지 2020. 7. 31. 17:01
서버 모니터링을 위해 작업 수행했던 내역 1) 컴퓨터 현황 모니터링 vmstat -nt 1 vmstat은 리눅스 자원 모니터링 도구로 메모리, cpu 사용률을 조회할 수 있다. 자세한 설명은 여기에. https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_vmstat 리눅스 vmstat - 제타위키 다음 문자열 포함... zetawiki.com 결과 2) 전체 프로세스의 상태 조회 top을 사용해 각 프로세스의 점유 현황을 모니터링한다. top 화면이 나타나면 shift+m을 눌러 메모리 사용 순으로 조회. 3) jps 현재 실행 중인 "java" 프로세스들의 pid 조회용 jps bootstrap의 pid를 따로 저장함. 4) java 프로세스의 정보 확인 ji..
-
2020.06.30 오늘의 일지Dev/개발일지 2020. 7. 1. 02:04
이전 기록 https://povia.tistory.com/10 https://povia.tistory.com/19 Timer와 TimerTask에서 10초에 한 번 데이터를 출력하도록 설정하는 것은 성공. 시스템의 하드웨어 자원을 모니터링하려고 찾아보는데 Java 1.7부터 추가된 com.sun.management.OperatingSystemMXBean라는 Interface가 존재하길래 사용. 일단 정보를 추가하기는 했는데 이걸 추가 작업해서 봤을 때 이해 가도록 수정해야할 것 같다. 추가한 내용은 다음과 같다. 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 OperatingSystemMXBean bean = (..
-
[백준] 1822 java 풀이법Dev/알고리즘 2020. 6. 26. 17:28
분류가 어떻게 되는지는 모르겠다. 일단 풀이 방법은 각 배열 aSet, bSet을 오름차순으로 정렬해주고, 정렬한 후 aSet을 bSet과 비교하며 aSet의 각 원소가 bSet의 비교 대상 원소보다 클 때에는 bSet의 포인터를 1 증가하고, bSet의 원소가 aSet의 원소보다 클 때에는 결과 셋에 저장하면서 aSet의 포인터를 1 증가, aSet의 원소와 bSet의 원소의 값이 동일하다면 두 포인터 모두 증가시키는 방법으로 수행했다. 예시를 가지고 설명한다면 4 3 2 5 11 7 9 7 4 에서 정렬을 하고 나면 2 5 7 11 4 7 9 가 될 것이고, 2부터 비교를 시작한다면 2 2를 결과 셋에 저장 후 aSet 포인터 1 증가, 5>4 => bSet의 포인터를 1 증가, 5 5를 결과 셋에 ..
-
[알고리즘] DFS와 BFS 정리Dev/알고리즘 2020. 6. 12. 01:53
DFS: Depth First Search 깊이를 우선으로 하는 검색 방법이다. 재귀 함수, 스택으로 구현한다. BFS: Breadth First Search 너비를 우선으로 하는 검색 방법이다. 큐로 구현한다. 위의 그림은 7을 찾아가는 과정을 DFS, BFS로 표현한 그림이다. DFS는 빨간색으로, BFS는 파란색으로 그려봤다. DFS는 tree의 level과 관계 없이 최상단(1)부터 각각의 leaf node까지를 찾아본 후, 다음 leaf node까지를 계속해서 검색하다 7이 나오면 종료한다. BFS는 같은 level의 node들을 모두 검색하고, 검색한 node들의 하위 node들을 검색하는 방식으로 작업이 수행된다. 그래서 DFS의 경우 5번, BFS의 경우 6번만에 7을 찾아 작업을 종료했다.