member

Redis 有序集合(sorted set)

寵の児 提交于 2020-03-27 10:53:18
Redis 有序集合(sorted set) Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。 有序集合的成员是唯一的,但分数(score)却可以重复。 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 2 32 - 1 (4294967295, 每个集合可存储40多亿个成员)。 1.Zadd命令 redis 127.0 . 0.1 : 6379 > ZADD KEY_NAME SCORE1 VALUE1 .. SCOREN VALUEN Redis Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中。 如果某个成员已经是有序集的成员,那么更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。 分数值可以是整数值或双精度浮点数。 如果有序集合 key 不存在,则创建一个空的有序集并执行 ZADD 操作。 当 key 存在但不是有序集类型时,返回一个错误。 注意: 在 Redis 2.4 版本以前, ZADD 每次只能添加一个元素。 返回 被成功添加的新成员的数量,不包括那些被更新的、已经存在的成员。 2.Zcard命令 redis 127.0 . 0.1 :

container_of宏剖析

我的未来我决定 提交于 2020-03-16 06:45:14
container_of宏剖析 //该宏位于include/linux/kernel.h 1.定义格式 /** * container_of - cast a member of a structure out to the containing structure * * @ptr: the pointer to the member. * @type: the type of the container struct this is embedded in. * @member:the name of the member within the struct. * */ #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) 作用:就是根据一个结构体变量中的一个域成员变量的指针来获取指向整个结构体变量的指针。 例: struct demo_struct { type1 member1; type2 member2; type3 member3; } struct demo_struct demo1,*pdemo; type2 *

redis 集合操作

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-02 11:40:14
SADD key member 将member元素加入到集合key当中。 如果member元素已经是该集合的成员,那SADD命令不执行任何操作。 假如key不存在,则创建一个只包含member元素作成员的集合。 当key不是集合类型时,返回一个错误。 时间复杂度: O(1) 返回值: 如果添加元素成功,返回1。 如果元素已经是集合的成员,返回0。 Redis代码 <span style= "font-size: small;" >redis> SADD bbs "v2ex.com" (integer) 1 redis> SADD bbs "codecompo.com" (integer) 1 redis> SMEMBERS bbs # 显示bbs集合中所有成员 1 ) "codecompo.com" 2 ) "v2ex.com" redis> SADD bbs "v2ex.com" # 尝试添加重复元素,返回 0 (integer) 0 </span> SINTER key [key ...] 返回一个集合的全部成员,该集合是所有给定集合的交集。 不存在的key被视为空集。 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。 时间复杂度: O(N * M),N为给定集合当中基数最小的集合,M为给定集合的个数。 返回值: 交集成员的列表。 Redis代码 <span

Redis sorted set 常用命令介绍

萝らか妹 提交于 2020-02-20 06:09:29
Redis sorted set 使用: Redis 有序集合(sorted set) Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。 有序集合的成员是唯一的,但分数(score)却可以重复。 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。 添加: ZADD key score1 member1 [score2 member2] 删除: ZREM key member [member ...] 返回值:被成功移除的成员的数量,不包括被忽略的成员。 Redis Zrem 命令用于移除有序集中的一个或多个成员,不存在的成员将被忽略。 当 key 存在但不是有序集类型时,返回一个错误。 注意: 在 Redis 2.4 版本以前, ZREM 每次只能删除一个元素。 ZREMRANGEBYSCORE key min max 移除有序集合中给定的分数区间的所有成员,包含min 和 max 修改: ZINCRBY key increment member Redis Zincrby 命令对有序集合中指定成员的分数加上增量

图示/白话 container_of处理流程

有些话、适合烂在心里 提交于 2020-02-05 05:06:08
container_of()宏定义的执行,可以通过结构体成员的地址而得到结构体的首地址,它需要三个参数,第一个参数是一个结构体成员的地址,第二个参数是结构体类型,第三个参数是结构体的成员,其推算的总思路是,获得一个结构体成员的地址,和这个结构体成员相对于首地址的偏移,然后使用结构体成员的地址,减去成员对首地址的偏移,即可得到结构体的首地址。 如此,需要解决两个问题,一是如何得到一个结构体成员的地址,二是如何算出这个成员相对于首地址的偏移。 对于第二个问题,使用了0地址,先把0地址强制转换成指定的结构体类型,即0地址是指定的结构体类型,那么相对于0地址的成员地址就是相对于0地址的偏移地址,因此可以得到成员偏移的长度。offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)就是实现这个功能的宏定义。 对于第一个问题,首先要确定这个结构体成员的类型,采用typeof(结构体成员)的方式获得,然后使用获得的结构体成员的类型定义一个指针,让这个指针指向这个成员的地址,即可获得这个成员的地址,即相当于对这个结构体成员执行了取地址的操作,即typeof( ((type *)0)->member ) *__mptr = (ptr); 的含义。 当这两个条件都达到了,就可以通过相减而获得了结构体的首地址了。 其中,typeof(

container_of宏深度解析

走远了吗. 提交于 2020-02-04 01:24:00
作用: 由结构体中某个元素的指针,推出整个结构体变量的指针。 原型: #define container_of(ptr,type,member) {const typeof(((type*)0)->member)* _myptr=(ptr); (type*)((char*)_myptr-offsetof(type,member));}) 变量分析: ptr指向结构体元素member元素的指针;type为结构体类型;member为结构体中的某个元素;typeof为C语言的关键字,用来由变量得到变量的类型,eg;typeof(a)得到变量a的类型。 typeof(((type*)0)->member)* _myptr=(ptr)类似于(int)* p=(ptr)。 宏解析: 先用typeof得到member元素的类型,定义为一个指针( _myptr);然后用这个指针减去该元素相对于结构体首地址的偏移量,就得到整个结构体变量的首地址了,再把这个地址强制类型转换为type*即可(得到指针)。 举例: # include <stdio.h> struct mystruct { char a ; int b ; short c } ; # define container_of(ptr,type,member) { const typeof ( ( ( type * ) 0 ) ->

can memcpy() be used to change “const” member data?

核能气质少年 提交于 2020-02-02 03:30:07
问题 For a struct with const members struct point { const int x; const int y; }; that is used as member data struct Foo { point pt{ 0, 0 }; void move_x(int value); }; How can Foo::move_x() be written to update Foo::pt ? Is it OK to use memcpy() ? #include <memory.h> void Foo::move_x(int value) { const point pt_{ pt.x + value, pt.y }; (void) memcpy(&pt, &pt_, sizeof(pt_)); // pt = pt_; } This can be safely done using a pointer #include <memory> struct Bar { std::unique_ptr<point> pPt_{ new point{ 0

Get Member/Fields of an existing Object

梦想与她 提交于 2020-01-25 16:56:23
问题 i will discribe my problem with the following example: public class Person{ private int age; private String name; public Person(int age, String name){ this.age = age; this.name = name; } } I ve a class with some Members (age and name in this case) but i don't know which and how much my class does have. Also i don't even care about the amount or the types. I wan't to get all members of only one class. like this: private List<Object> getAll(Class searchedClass, Object from){ // This is where

Get Member/Fields of an existing Object

徘徊边缘 提交于 2020-01-25 16:54:32
问题 i will discribe my problem with the following example: public class Person{ private int age; private String name; public Person(int age, String name){ this.age = age; this.name = name; } } I ve a class with some Members (age and name in this case) but i don't know which and how much my class does have. Also i don't even care about the amount or the types. I wan't to get all members of only one class. like this: private List<Object> getAll(Class searchedClass, Object from){ // This is where

C++ const member function

北慕城南 提交于 2020-01-25 10:41:38
C++ const member function const member function 參考連結 const member function 在函數定義後面加上 const 就成了const member function,它的作用是確保在函數裡面不會有成員變數被意外地修改。在const member function內,如果嘗試去修改任一成員變數,都會造成編譯錯誤。 另外注意:一個const object只能調用const member function; 一般的物件則可以調用一般的成員函數或是const member function。 在 TensorRT/samples/common/buffers.h 中 DeviceAllocator 的成員函數 operator() 被定義為const member function: class DeviceAllocator { public : //注意其參數是指標的指標void** bool operator ( ) ( void * * ptr , size_t size ) const { return cudaMalloc ( ptr , size ) == cudaSuccess ; } } ; (但是 DeviceAllocator 這個類別並沒有成員變數,因此沒有擔心成員變數被修改的問題,那麼此處將