일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- Python
- zookeeper
- golang
- dynamic programming
- scala
- DP
- OOM
- 동적프로그래밍
- 주키퍼
- 스칼라
- 코드워
- 리눅스
- programmers
- 튜토리얼
- boj
- Go언어
- HBase
- redis
- docker
- go
- 파이썬
- gradle
- Linux
- codewars
- Java
- 자바
- 문제풀이
- leetcode
- 알고리즘
- Today
- Total
목록전체 글 (109)
파이문
싱글톤 클래스 예제는 보통 아래 처럼 작성되곤 한다. public static class Singleton { private static Singleton instance; private Singleton() { } public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } 이렇게 작성하면 단일 쓰레드에서는 문제가 없지만, 멀티 쓰레드(multithread) 에서는 instance 를 가져올 때 (동시 접근하여 instance 를 null 로 판단한 경우) 문제가 생길 수 있다. 가장 쉬운 방법은 getInstance 함수에 synchronized 키워드를 넣..
JDK14 자바 14 가 새로 나왔다(고 하기엔 좀 되었지만...). 엄청난 삽질로 인텔리제이에 자바 14가 돌아가도록 세팅 했다. (기회가 된다면 정리를 따로 하려고 한다.) 아무튼! 14 의 new feature 들을 하나씩 살펴보면서 정리하려고 한다. Records 새로운 예약어이다! 평소 코딩을 하다 보면 객체 값이 변하지 않기를 원하는 경우가 있다. public class OrgMessage { private final int id; private final String message; public RequestDataOrg(int id, String message) { this.id = id; this.message = message; } public int getId() { return id..
Mockito 모킹할 때 리턴과 동시에 어떤 함수가 실행되기를 원할 때 테스트를 진행하다 보면 thenReturn 으로 함수의 결과 값을 임의로 지정할 때가 많지만 때로는 함수 실행 시 동작해야 하는 어떤 액션을 지정하고 싶을때도 있다. 즉, 정리해보면 A() 함수가 리턴하는 값은 a 지만 B() 라는 메서드도 실행되고 있다고 가정해보자. A() { ... B(); return a; } 주로 모킹은 아래와 같이 할 것이다. Mockito.when(A()).thenReturn(a); B() 의 동작은 감춰지게 되는게 보통이다. 그러나 B() 가 디비 업데이트라던지, 다른 어떤 외부 동작(?) 일 때 필연적으로 제어해야할 때가 있다. (내가 그랬다.) 그럴 때는 이렇게 사용하면 된다. Mockito.when..
Prefix 와 Start, Stop Rowkey 으로 10개만 조회 scan '', {STARTROW => '', ENDROW => '', FILTER => "PrefixFilter('')", LIMIT => 10} 컬럼 패밀리 삭제 하기 alter '', {NAME => '', METHOD => 'delete'} 컬럼 패밀리 추가 하기 alter '', '' 테이블 데이터 전부 삭제하기 truncate '' 테이블 생성 create '', '' 데이터 추가하기 put '', '', '', '' row 삭제하기 deleteall '', ''
CountDownLatch vs CyclicBarrier CyclicBarrier 는 여러 쓰레드가 서로를 기다리고 CountDownLatch 는 하나 또는 다수의 쓰레드가 작업이 완료될 때 까지 기다린다. CyclicBarrier 에 모든 쓰레드가 도달하면 값이 초기화 되고 CountDownLatch 는 초기화 되지 않는다. 따라서 CountDownLatch 는 재사용 불가능하다. CountDownLatch 쓰레드를 N개 실행했을 때, 일정 개수의 쓰레드가 모두 끝날 때 까지 기다려야지만 다음으로 진행할 수 있거나 다른 쓰레드를 실행시킬 수 있는 경우 사용한다. 예를 들면 메인 쓰레드에서 5개의 쓰레드를 실행 시키고, CountDownLatch 값을 3으로 설정해본다고 하자. 각 쓰레드가 종료되는 시점..
전화 번호 목록 programmers.co.kr/learn/courses/30/lessons/42577 HashMap 으로 풀이 모든 전화번호를 HashMap 에 넣고 2중으로 다시 순회해서 확인하는 식으로 했다. 조건에 phone_book의 길이는 1 이상 1,000,000 이하입니다. 라고 적혀 있어서 효율성 테스트에서 실패할 줄 알았는데, 생각보다 최대 사이즈가 크지 않은 모양이었다. (그래도 혹시 몰라서 주어진 phone_book 을 정렬했다.) 자기 자신 (같은 인덱스 참고) 을 보고 잘못 판단할 수 있기 때문에 HashSet 이 아닌 HashMap 으로 value 값엔 인덱스를 넣어 구현하였다. import java.util.*; class Solution { public boolean sol..
서버에 환경 설정 배포할 일이 있는데 그동안 ssh 나 fabric 이나 이런것들로만 하다가 ansible 을 써보기로 했다. (ansible 1일차) test 란 유저로 /path/to/test 란 디렉토리를 생성하는 예제이다. (become 옵션을 yes 로 하면 sudo 권한을 준 것과 같다.) # # # 디렉토리 생성 예제 # # - hosts: tester remote_user: test tasks: - name: Create a test1 directory if it does not exist become: yes file: owner: test group: test path: /path/to/test1 state: directory mode: 0755 hosts 란 키 값에 tester 를 ..
https://www.facebook.com/note.php?note_id=10150162742108920
단어 변환 https://programmers.co.kr/learn/courses/30/lessons/43163 DFS 풀이 begin 과 한 글자 차이가 나는 단어를 찾고 그 단어에서 부터 모든 words 와 (역시 한 글자 차이가 나는 ) 비교해 가며 구현한다. 이 때 정답은 가장 적은 변화로 target 을 찾는 경우의 수를 구하는 문제다. 우선 처음 for 문으로 모든 words 에 대해 비교한다. 즉 begin -> 1번 단어 -> .... -> 종료 와 begin -> 2번 단어 -> ... -> 종료 와 같이 begin 바로 다음에 비교할 단어를 words 의 모든 단어를 대상으로 하는 것이다. 이 구현대로 하면 1 번 단어 -> 2번 단어와 2번 단어 -> 1번 단어와 중복되는 계산이 있을..
네트워크 https://programmers.co.kr/learn/courses/30/lessons/43162 DFS 풀이 문제 설명이 길지만, 축약하자면 undirected graph 에서 연결 되지 않은 그룹이 몇개 있는지에 대한 문제다. DFS 로 그래프를 따라 가되, 이미 방문 했던 노드면 패스하고 방문하지 않았던 노드면 다시 계속 따라가게 구현하면 된다. 노드의 방문에 대한 여부는 미방문(0), 누군가가 방문 하고 있는 중 (1), 방문 완료(2) 로 확인할 수 있지만... 문제에선 사실 여기까진 필요없고 단순히 boolean 으로 확인하면 된다. (만약 directed graph 라면 이 알고리즘을 써야 한다. 참고) class Solution { public int dfs(int i, int..