본문 바로가기

전체 글86

Redis 기본 정리3 Redis Hashes Redis hashes look exactly how one might expect a "hash" to look, with field-value pairs HMSET으로 여러 필드의 해쉬를 set 할 수 있고, HGET은 하나의 필드만, HMGET은 값의 배열을 반환한다. 필드의 각 값을 수정하는 것도 가능하다. Redis Sets strings의 순서 없는 컬렉션이다. SADD 명령어로 set에 명령어를 추가할 수 있다. 해당 키가 이미 존재하면 추가한다. 위의 예제에서는 순서대로 반환됐지만 매 호출에 대해 순서 없이 반환한다. "3"은 myset의 멤버가 맞지만 "30"은 아니다. Sets은 오브젝트들간의 관계를 표현하기 좋다. 모든 오브젝트에 원하는 태그를 달아서 사용할 수.. 2021. 1. 8.
Redis 기본정리 2 Redis Lists 일반적인 배열과 달리 Linked List를 사용한다. 새로운 원소가 추가되면 리스트의 시작부분이나 끝부분에 추가하게되고 O(1)의 복잡도를 갖는다. 일반적인 배열은 index를 통해 매우 빠르게 접근할 수 있지만 linked list기반의 Redis list에서는 느리다. 데이터베이스에서 아주 긴 리스트에 원소들을 빠르게 추가하기 위해 linked list를 사용한다. 만약 큰 컬렉션의 임의의 원소에 접근하려면 Sorted set을 쓰는것이 더 낫다. LPUSH/RPUSH 명령어로 각각 리스트의 앞, 뒤에 원소를 추가할 수 있다. LRANGE 명령어로 해당 리스트의 특정 범위에 해당하는 원소들을 반환 시킬 수 있다. LRANGE는 2개의 인덱스와 함께 호출하며 첫번째 호출된 인덱스.. 2021. 1. 7.
Redis 기본 정리 Debian - Raspbian sudo apt-get install redis-server redis-cli Redis 는 key-value 타입을 저장하는 것이 아닌 data structure 서버이다. 때문에 Redis는 다양한 값들을 저장할 수 있다. Binary-safe strings Lists - 삽입 순서에 따라 정렬되어있는 string 원소들의 컬렉션, linked-lists Sets - 정렬되지 않았지만 유일한 키를 가짐 Sorted sets - Sets과 비슷하지만 모든 원소들이 정렬되어 있다. Hashes - 연관된 값을 가진 필드, 필드와 값은 모두 strings, 루비나 파이썬의 hashes와 비슷 Bit array(bitmaps) - 비트의 배열을 string 값처럼 다룰수 있다.. 2021. 1. 7.
알고리즘 스터디 https://programmers.co.kr/learn/courses/30/lessons/43105 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr 문제 설명 위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다. 삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 완성하세요. 제한사항 삼.. 2020. 8. 7.
객체를 클로저 안으로 이동하려면 초기화 갈무리를 사용하라 C++11에서는 이동 전용 객체들(std::unique_ptr, std::future 등)을 클로저 안으로 들여올 수가 없다. 또한 복사는 비싸고 이동은 저렴한 객체를 클로저 안으로 들여온다면 복사보다는 이동이 적용되는 것이 바람직한데 역시 불가능하다. C++14에서는 객체를 클로저 안으로 이동하는 수단을 직접 제공한다. 이동 갈무리를 위해 새로운 갈무리 메커니즘을 도입했는데 그것을 초기화 갈무리 라고 한다. 초기화 갈무리는 람다로부터 생성되는 클로저 클래스에 속한 자료 멤버의 이름과 그 자료 멤버를 초기화하는 표현식을 지정할 수 있다. 다음은 초기화 갈무리의 한 예이다. class Widget{ public: ... bool isValidated() const; bool isProcessed() con.. 2020. 8. 6.
알고리즘 스터디 https://www.acmicpc.net/problem/2252 2252번: 줄 세우기 첫째 줄에 N(1≤N≤32,000), M(1≤M≤100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의미이�� www.acmicpc.net 문제 N명의 학생들을 키 순서대로 줄을 세우려고 한다. 각 학생의 키를 직접 재서 정렬하면 간단하겠지만, 마땅한 방법이 없어서 두 학생의 키를 비교하는 방법을 사용하기로 하였다. 그나마도 모든 학생들을 다 비교해 본 것이 아니고, 일부 학생들의 키만을 비교해 보았다. 일부 학생들의 키를 비교한 결과가 주어졌을 때, 줄을 세우는 프로그램을 작성하시오. 입력 첫째 .. 2020. 8. 5.