이번 시간에는 Collection에 있는 removeIf에 대해서 알아보겠습니다. 저는 보통 List에서 filtering을 걸어 제거할 때 쓰는 편이에요. 먼저 predicate 인터페이스에요. 단어 사전을 보면, 근거를 두다, 단정하다 정도로 되어 있는데요. 앞에 a가 붙었으니 동사는 아닐 거 같네요. 서술? 이 정도로 해석하면 좋을까요? 술어? 이보다는 명제가 조금 더 적절하지 않을까 싶습니다. 그러면, 이 인터페이스는 어떠한 명제? 서술부가 참인지 거짓인지 판단하기 위해 쓰일 거 같아요. 그러면, 사실인지 거짓인지 평가하는 메서드도 있을 거 아니에요? 이것이 test에요. 이것은 인자 하나를 받아가지고 Evaluates, 평가를 하게 되는데요. 인풋으로 넘어온 인자가 predicate에 매치되면 ..
전체 글 검색 결과
제 토이 프로젝트는 postgresql 12.9를 사용하고 있어요. 특정 api를 호출했을 때 쿼리가 실행이 될 텐데요. 쿼리가 실행될 때 어떤 lock이 걸리는지 간단하게 보기로 하였습니다. 데드락이 생길 수 있을까? 라는 의문이 들었기 때문입니다. 만약에 생긴다면 적당한 방법으로 회피를 해야 하기도 하고요. 그러면 어떤 식으로 lock이 걸리는 지 알아야 할 겁니다. 데이터가 그리 크지 않아서, 쿼리 수행이 매우 순식간에 끝나게 됩니다. 그래서, 쿼리가 실행되는 도중에 잠깐 sleep을 시켜야 됩니다. 이를 위해서 pg_sleep 함수를 이용하였습니다. 사용법은 간단합니다. 안에 몇 초 동안 sleep를 시킬 건지 넣기만 하면 됩니다. 1 row(s) fetched가 있는데요. 옆에 5.89초가 있습..
안녕하세요. 이번 시간에는 map의 merge 메소드에 대해서 간단하게 알아보겠습니다. 먼저 예제 프로그램을 하나 보겠습니다. 이 예제는 매우 간단한 프로그램인데요. 3번째 인자에 이상한 람다 식이 들어가 버립니다? 뭔지는 모르겠지만, 키에 대응되는 value 값에 concat를 시키는 모양입니다. 그러면 결과가 어떻게 나올까요? 키 값이 1인 것의 Value는 "ab", 키 값이 2인 것의 Value는 "cd"가 나오게 됩니다. 메서드 설명을 봅시다. key가 없는 경우라면 v값을 넣어버리고, 그렇지 않으면 remapping function에 의해서 나온 값으로 replace 한다고 되어 있어요. 이 메서드는 결정적으로 multiple value에 대해서 값을 combining 하기 위해 쓴다고 되어 ..
안녕하세요. 이번 시간에는 ConcurrentHashMap을 간단하게 보도록 하겠습니다. 이 글에서는 왜 이 친구를 쓸까? 정도만 보아도 되지 않을까 싶어요. 먼저 Collections의 SynchronizedMap는 이 글에서도 개략적인 구조를 설명해 드린 적이 있습니다. 간단하게 다시 보도록 하겠습니다. 먼저, mutex라는 잠금용으로 쓸 객체를 하나 둡니다. 다음에 실제 map을 하나 두는데요. 여기서 mutex는 언제 쓸까요? map에 접근할 때 동기화 용으로 쓰게 됩니다. get 메서드를 봐도 mutex에 synchronized를 걸어놓았어요. 그리고 put 메서드를 호출할 때에도 mutex에 synchronized를 걸어놓았어요. 그런데, Hash 기반에서의 자료 구조를 잘 생각해 봅시다. 얘..
프로그래머스나 해커랭크에서 sql 문제를 풀다 보면 with 문을 쓰면 더 간결해 지겠구나. 라는 생각이 들 때가 있어요. 이 with절이 그냥 단순하게 실행 결과를 임시로 저장해 두고 쓴다. 정도로만 알고 있었어요. 그런데, recursive하게 써 먹을 수도 있었어요. 꽤 오랜 시간 헤멘 끝에 문서를 보고 약간이나마 이해를 할 수 있게 되었는데요. 이래서 영어 공부가 필요한가 봅니다. 예제 문제를 보면서 같이 쿼리를 작성해 봅시다. 먼저, test 테이블에는 id와 par가 저장되어 있어요. par가 -1인 경우에는 부모가 없다는 뜻이고요. par가 -1이 아닌 0보다 큰 정수라면, 부모가 있다는 뜻입니다. 예를 들어, id가 6인 노드의 부모는 4임을 의미합니다. 이 데이터는 포레스트 형식을 만족해..
최근댓글