redis에서, 키를 추가하고 일정 시간이 지나면 없어지게 해야 하는 경우가 있습니다. 이럴 때 set에 EX, PX, EXAT, PXAT 옵션을 줄 수 있습니다. 이럴 때 redis에서 쓸 수 있는 명령어는 set입니다. set에는 여러 옵션이 있는데요. 이 중, 우리가 관심이 있는 expire 관련 옵션은 EX 혹은 PX입니다. EX는 뒤에 초가 붙고, PX는 뒤에 ms가 붙습니다. 예제를 하나 보겠습니다. set code 12345 EX 30을 입력했어요. 이는, 키가 code이고 value가 12345인 정보를 추가할 건데요. expire time은 생성된 지 30초 후라는 의미입니다. 생성한 직후 time을 쳐 보았더니 1665080157입니다. 그러면, 1665080187보다 크다면, 당연하게..
set 검색 결과
python에서 2개의 set에 대해서 합집합, 교집합, 차집합, 대칭 차집합 등을 구하고 싶을 때가 있습니다. 어떻게 구하면 될까요? 먼저 set A에 속하지만, set B에 속하지 않는 원소들을 모두 구해봅시다. 그러려면 A에서 B를 빼면 됩니다. 3번째 줄에 C = (A - B)라고 했는데요. 이는 A와 B의 차집합을 구하라는 의미입니다. 이는 A에서 A와 B의 교집합을 빼는 것과 같습니다. A와 B의 교집합에 속하는 원소는 2이므로, A에서 원소 2가 빠지면 {1, 4}가 됩니다. 결과는 예상한 대로 나왔음을 알 수 있습니다. 교집합을 구해 봅시다. (A & B)는 set A와 set B의 교집합을 구합니다. A와 B 집합에 동시에 속하는 원소는 2입니다. 따라서 2만 출력됩니다. A 또는 B에 ..
자바에서 map이나 set에 특정한 원소들이 모두 있는지 확인하려면 어떻게 해야 할까요? stream을 생각하기 쉽지만, 사실 map이나 set에서는 containsAll을 쓰는 게 나을 수도 있습니다. containsAll은 collection이 c에 있는 모든 원소들을 가지고 있는지를 판단합니다. 보통 stream의 allMatch나, filter를 이용해서 처리하기도 할 텐데요. 저는 containsAll 메소드를 쓰는 것을 보다 선호합니다. 더 직관적이기 때문입니다. 사용법을 간단하게 보겠습니다. ori와 tar에 1부터 10까지 키를 넣었습니다. 그러면 처음에 둘 다 1부터 10까지 들어있을 테니, ori가 tar에 있는 원소들을 모두 가지고 있는 것이 맞습니다. 문제는, ori에서 5를 제거했..
안녕하세요. 666번째 글입니다. 이번 시간에는 reflection을 이용해서 field value를 set하는 코드만 간략하게 보겠습니다. 먼저, data 클래스의 코드는 요렇습니다. private field로 선언된 x, y, 그리고 hm이 있네요. 당연하게도, hashCode와 equals, 그리고 toString은 오버라이딩 되어 있습니다. 우리는 먼저, 이름으로 Field에 대한 정보를 얻어온 다음에, 10번째 줄에서 set 메서드를 이용해서, 객체 d의 hm 필드의 값을 {"a":"b", "c":"d"}로 바꿀 것인데요. NoSuchFieldException이 뜹니다. 왜 그런지 메서드 설명을 봐야 겠어요. 먼저, 이 친구는 public member인 field member를 리턴합니다. Da..
java에서 map, set 계열을 다룰 때 전체 원소들을 순회해야 할 때가 있습니다. 이 때 어떻게 해야 하는지 간단하게 알아보겠습니다. 보통 map 계열 중에서는, treemap과 hashmap의 사용 빈도가 꽤 높은 편인데요. 이는 hash 계열은 equal 쿼리에, tree 계열은 range 쿼리에 매우 유리한 구조이기 때문입니다. 그리고 저는 농담처럼 자바에서는 TreeMap만 알고 있으면 풀 수 있는 코딩테스트 문제가 상당히 많을 거다. 라는 말도 하는데요. equal 쿼리도 성능이 그렇게 썩 나쁜 편이 아니기 때문입니다. 로그 복잡도로 찾아도 나름 빠르기도 하고요. 먼저, Map에서의 Key, Value 쌍을 모두 순회하기 위해서는, keySet을 이용해야 합니다. 이것은 Map에 있는 ke..
최근댓글