精华内容
下载资源
问答
  • Redis通用命令通用命令key过期时间相关命令,以下三个状态只有在对key使用过expire命令后才有效:1代表key未过期...cli -h 连接地址 -p 连接端口 -a 密码如果连接的就是本机且端口就是默认的6379,则前两个连接参数...

    Redis通用命令通用命令

    key过期时间相关命令,以下三个状态只有在对key使用过expire命令后才有效:1代表key未过期,-2代表key过期且已经被删除,-1代表key存在,但没有设置过期时间

    Redis配置文件常用配置项配置文件常用项

    Redis自带客户端的基本命令操作

    ./redis-cli -h 连接地址 -p 连接端口 -a 密码

    如果连接的就是本机且端口就是默认的6379,则前两个连接参数可省略不写

    select 数据库编号

    切换数据库

    info [cluster|memery|server|cpu|replication...]

    查看redis系统参数

    flushall

    清除所有数据库中存储的数据

    flushdb

    清除当前数据库中存储的数据

    Redis的java客户端Jedis以java的jedis为例连接redis

    Jedis在是线上是直接连接redis server的,如果在多线程环境下是非线程安全的,这个时候只有使用连接池,为每个Jedis实例增加物理连接(官方推荐)Lettuce连接池

    基于netty,连接实例可以在多个线程间并发访问,因为是线程安全的,所以一个连接实例就可以满足多线程环境下的并发访问,当然这个也是可伸缩的设计,一个连接实例不够时也可以按需增加连接实例

    在spring-boot data redis 1.x之前默认使用的是Jedis,但目前最新版已经改成了Lettuce

    之前公司使用Jedis居多,lettuce近两年在逐步上升,总的来讲Jedis性能会优于Lettuce(因为它直接操作redis)testOnBorrow和testOnReturn建议在生产环境下设未false

    连接池配置参数示例

    从配置好的连接池里获取jedis连接对象

    Spring-Boot集成Redis

    1.配置Redisapplication.yml中的配置

    2.添加Redis序列化方法(参考)

    springboot2+redis +Jackson实现缓存序列化:

    https://www.jianshu.com/p/e26a740c65b8

    https://gitee.com/renrenio/renren-fast/blob/master/src/main/java/io/renren/config/Redisconfig.java

    Redis的五种基本数据类型

    1.string 字符串

    2.hash 散列

    3.list 列表

    4.set 集合

    5.sorted set 有序集合

    字符串-strings

    redis的最基本数据类型。不仅可以存储字符串,还可以存储整数或者浮点数,所存储的value容量上限为512M。

    适用场景:分布式锁,计数器

    字符串API

    设置字符串

    set key value 不管key是否存在都能设置值

    同时设置多个字符串

    mset key1 value1 key2 value2 ...keyN valueN

    同时获取多个字符串

    mget key1 key2 value2 ...keyN

    key存在则设置失败,不存在则设置成功

    setnx key value 相当于添加操作

    实例:setnx

    key存在则设置成功,不存在则设置失败

    set key value xx 相当于update操作

    实例:更新成功返回ok,失败返回nil

    设置新的值后把旧的值返回

    getset key newValue

    实例:getset

    将value追加到旧的value后

    append key value

    实例:因为演示时系统采用的是utf-8编码,所以1个中文占3个字节,所以append后返回的长度为17

    获取字符串长度

    strlen key (注意中文)

    实例:strlen

    获取字符串

    get key

    删除字符串

    del key

    自增1,如果key不存在,则自增后get(key)=1

    incr key

    实例:

    自减1,如果key不存在,则自增后get(key)=-1

    decr key

    实例:decr

    自增k,如果key不存在,则自增后get(key)=k

    incrby key k

    实例:返回自增后的值

    自减k,如果key不存在,则自增后get(key)=-k

    decrby key k

    实例:返回自减后的值

    自增一个浮点数key,如果key不存在,则自增后get(key)=key

    incrbyfloat key value 注意,并没有decrbyfloat命令

    实例:incrbyfloat

    在指定下标位置设置一个新值

    setrange key index value

    实例:如果设置的是中文字符索引,则索引位必须是中文字符的第一个字节的索引位,否则设置后就会产生乱码

    获取指定下标对应的值

    getrange key start end

    实例:可以看到,如果有中文,需要知道一个中文占几个字符再获取,否则会产生乱码

    哈希-hash

    hash是一个 string 类型的 field(字段)和 value(值)的映射表,特别适合用于存储对象。

    每个 hash 可以存储 232 - 1 键值对(40多亿)。

    适用场景:缓存视频或者用户信息,网页访问计数

    哈希API

    设置hash中的键值对

    hset key field value

    实例:成功返回1,失败返回0

    设置多组hash中的键值对

    hmset key field1 value1 field2 value2...fieldN valueN

    实例:hmset

    获取hash中的属性对应的值

    hmget key field1 field2...fieldN

    实例:hmget

    获取hash中的属性对应的值

    hget key field

    实例:hget

    获取hash中的所有键值对

    hgetall key (谨慎使用)

    实例:hgetall

    删除hash中的属性对应的值

    hdel key field

    实例:成功返回1,失败返回0

    判断hash是否拥有该属性

    hexists key field

    实例:属性存在返回1,不存在返回0

    获取hash拥有的属性个数

    hlen key

    为hash里对应的属性增加固定的整数值

    hincrby key field intCount

    实例:返回基数后的属性值

    为hash里对应的属性增加固定的整数值

    hincrbyfloat key field floatCount

    实例:键不存在则新建一个键进行累加,返回累加后的值

    获取hash中所有的键

    hkeys key

    获取hash中所有的值

    hvals key

    设置hash中对应属性的值(如果field已经存在则设置失败)

    hsetnx key field value

    实例:成功返回1,不成功返回0

    列表-list

    列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

    一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

    适用场景:TimeLine

    列表API-增加操作

    向列表左边或者右边添加一个或多个元素

    lpush key value1 value2 ...valueN

    rpush key value1 value2 ...valueN

    实例:lpush

    rpush

    在列表的指定元素得前或后插入新元素

    linsert key before value newValue

    linsert key after value newValue

    实例:linsert before

    linsert after

    列表API-删除操作

    删除列表左边的元素

    lpop key

    实例:剔除列表最左端的元素并返回

    删除列表右边的元素

    rpop key

    实例:删除列表最右端的元素并返回剔除列表最右端的元素并返回

    blpop key timeout 阻塞一段时间,在此期间内有元素加入则立刻弹出,timeout为0则表示永远不阻塞

    实例:有元素则弹出并返回,没有则返回nil

    brpop key timeout 阻塞一段时间,在此期间内有元素加入则立刻弹出,timeout为0则表示永远不阻塞

    实例:有元素则弹出并返回,没有则返回nil

    根据count的值,从列表中删除所有和给定value相等的元素

    lrem key count value

    1) count > 0,从左到右删除最多count个和value相等的元素

    2) count < 0 从右到左删除最多Math.abs(count)个和value相等的元素

    3) count = 0 删除所有和value相等的元素

    实例:返回删除的元素个数

    保留指定范围内的列表元素

    ltrim key start end

    实例:ltrim

    列表API-查询操作

    获取指定范围内的所有元素

    lrange key start end (包含end)

    实例:

    lrange

    获取指定索引的元素

    lindex key index

    实例:获取成功则返回要获取的元素,获取不到返回nil

    获取列表中元素总个数

    llen key

    实例:llen

    修改指定索引的value

    lset key index newValue

    实例:如果修改索引超过了列表范围则会抛出异常

    技巧lpush+lpop = stack 实现栈

    lpush+rpop = queue 实现队列

    lpush+ltrim = capped collection 实现固定容量的列表

    lpush+brpop 消息队列集合-set

    集合-set

    集合是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

    适用场景:各类抽奖系统,社交点赞点踩系统,为用户添加兴趣标签。

    集合API-基本操作

    添加一个集合

    sadd key element [...element]

    实例:

    添加成功返回添加的元素个数,失败则返回0

    删除集合中指定的元素

    srem key element [...element]返回值为执行本次命令所删除的元素个数,支持删除多个元素

    获取集合中元素总个数

    scard key

    实例:key存在则返回集合中的元素个数,key不存在则返回0

    判断某一个key是否存在于给定集合中

    sismember key element

    实例:

    存在则返回1,不存在则返回0

    从集合中随机挑选出指定个数的元素

    srandmember key count

    不指定返回个数则默认返回1个

    从集合中随机剔除一个元素

    spop key

    实例:spop

    获取集合中所有元素,返回的结果无序,集合内数据多时谨慎使用此命令

    smembers key

    实例:smemberssmembers

    迭代集合中键的元素

    sscan key cursor [match pattern] [count count]

    cursor - 游标。

    pattern - 匹配的模式。

    count - 指定从数据集里返回多少元素,默认值为 10

    实例:每次执行便理都会返回一个游标值,在下次执行命令时使用返回的游标值,如果游标值不为0则需要继续使用返回的游标值再次执行sscan命令,直至返回的游标值为0才算遍历完毕

    集合API-范围操作

    获取集合间的差集

    sdiff key1 key2 获取的使key1代表的集合里不存在于key2代表的集合里的元素

    实例:

    以传入的第一个key作为标准获取差集

    获取集合间的交集

    sinter key1 key2 获取的使key1代表的集合里不存在于key2代表的集合里的元素

    实例:

    以传入的第一个key作为标准获取交集

    获取集合间的交集

    sunion key1 key2 key3

    实例:

    sunion

    将给定集合之间的差集,并集或者交集存储在指定的集合中。如果指定的集合 key 已存在,则会被覆盖

    sdiffstore newkey key1 key2

    实例:返回保存到新store的元素个数

    sinterstore newkey key1 key2

    实例:返回保存到新store的元素个数

    sunionstore newkey key1 key2

    实例:返回保存到新store的元素个数

    有序集合-zset

    有序集合的结构依然也是以key-value的形式存储,但是它的value却是由两部分组成,一部分为score,一部分为value。score也就是一个分值的概念,从而以此分值来组成一个有序集合。

    适用场景:各类排行榜,通过将时间戳,销售数量,关注数作为key的score来进行排序。

    有序集合API-基本操作

    添加一个有序集合

    zadd key score element(可以是多对) score可以重复,但element不可以重复,拿具体例子来说,一个班级里的学生学号不可以重复,但考试成绩却可以重复。

    实例:

    成功返回新增的元素个数,失败返回0

    删除元素

    zrem key element(可以是多个)

    实例:

    zrem(删除成功返回1,删除失败返回0)

    返回元素的分数

    zscore key element

    实例:

    zscore

    增加或减少元素的分数

    zincrby key increscore element

    增加或减少元素的分数

    实例:

    如果key不存在,增加分值相当于新增一个key到集合中

    返回元素总个数

    zcard key

    返回元素总个数

    实例:

    zcard

    获取一个键在一个有序集合里的排名(默认按从小到大的顺序排名)

    zrank key element (想要使排序顺序从高到低则用zrevrank)

    返回元素在集合中的排名

    实例:

    zrank(是以0开始排名)

    有序集合API-范围操作

    获取指定区间内的成员,其中成员的位置按分数值递增(从小到大)来排序,具有相同分数值的成员按字典序(lexicographical order)来排列。

    下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。

    你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。

    zrange key start stop [withscores] (想要使排序顺序从高到低则用zrevrange)

    实例:zrange,withscores参数为可选项,表示是否将元素对应的分值一并获取

    返回指定分数范围内的升序元素

    zrangebyscore key minscore maxscore [withscores](想要使排序顺序从高到低则用zrevrangebyscore)

    实例:

    zrangebyscore

    返回指定分数范围内的元素个数

    zcount key minscore maxscore

    实例:

    zcount

    根据排名范围删除元素

    zremrangebyrank key start end

    实例:

    成功返回删除的元素个数,失败返回0

    根据分数范围删除元素

    zremrangebyscore key minscore maxscore

    实例:成功返回删除的元素个数,失败返回0

    集合         VS有序集合           VS           列表

    重复元素               X                               X                                   O

    有序                      X                              O                                   O

    存储结构          element               element+score                   element

    展开全文
  • 关于syetemC的数据类型

    2018-06-29 16:27:25
    保持器----------端口:从端口上来看,端口分为三类: (1) sc_in< type> (2) sc_out<type> (3) sc_inout <type> ps: 内部连线的类型 sc_signal 二 基本的数据类型: (1) sys...

    一 值保持器----------端口:
    从端口上来看,端口分为三类:

     (1)   sc_in< type>  (2)  sc_out<type>  (3) sc_inout <type>
                                         ps:    内部连线的类型  sc_signal

    二 基本的数据类型:
    (1) systemC 自我扩展的类型:

     位类型        sc_bit  :      此种类型数据的值只能是1或者0,支持c语言中的位操作
      位向量       sc _bv<n>:
        定义为任意宽度的位向量,在生成相应类型的变量时若需要赋值,则有两种方式:
                (1)使用括号初始化   sc_bv<8> vector('1') ;   即使得结果为全‘1’的位向量
                (2)使用字面量初始化  :
                                            sc_bv<8> vector = '11111111';
                处理sc_bv类型的数据可由c语言中的位操作,也可以使用特殊的方法
                1.  使用拼接操作符   ( var1 , var2 )将多个变量链接在一起
                2.  使用函数方法: range()   and_reduced()   ..._reduced()
                由此来的得到拼接的操作,此处的...表示的是一般的逻辑操作,
                即and,or,xor,nor,nand,xnor
        逻辑类型 sc_logic:  逻辑类型共有四种值
                                    0   ,    1    ,   x     ,     z
                                    SC_LOGIC_0                   0
                                    SC_LOGIC_1                   1
                                    SC_LOGIC_X                   x
                                    SC_LOGIC_Z                   z
                    除了使用上面的预定义值进行赋值外,也可以使用类型转换进行赋值
                    static_cast<sc_logic>'z'                        sc_logic('z')
                    使用函数to_bool可转化此为bool型逻辑值
        逻辑向量类型       sc_lv<n>   :       
                    值的赋值也可以使用上述的相同方式进行赋值
                                但要注意一点,若字面量的第二位为x,那么需要在最高位加上0
                                以免使得字面量被解释为16进制的数。
                                使用函数to_int可使此类型转化为int类型值
        内建的整型数据:
                    sc_int<n>     sc_uint<n>:   固定精度的类型,实现为64位执行
                                所得的结果根据目标进行截断,且同c++的int类型是完全兼容的
                    sc_bigint<n>   sc_biguint<n>:   精度无限制的整型数据类型,可指定任意的位宽。

    (2) 由c++继承过来的支持的数据类型:

                    所有的整型类型,布尔类型,enum类型,struct类型,class类型

    三 数据的显示输出方式-------使用to_string函数的形式

                        输出方式选择的函数参数:
                        SC_BIN:            打印二进制的编码
                        SC_BIN_US:      打印无符号数的二进制码
                        SC_BIN_SM:      打印数字的符号与幅值
                        SC_CSD:      规范有符号数字码
                        SC_OCT:      打印为8进制
                        SC_HEX:      打印为16进制
                        SC_DEC:      默认的打印十进制的代码

    四 判断类型
    用于对多驱动的信号与端口进行建模的数据类型:

                         sc_in_resolved         sc_in_rv
                         sc_out_resolved       sc_out_rv
                         sc_signal_resolved   sc_signal_rv
    
                        sc_signal<sc_lv<4> >mem_word ; //    不允许多驱动的操作
                        sc_signal_rv<4> cycle_counter ;      //    允许多个驱动的存在

    五 关于用户自定义的类型:

        需要通过class(struct)进行定义,但需要重载这个类中的四个部分:
        赋值构造函数        ==操作符          <<操作符           sc_trace函数

    转载于:https://blog.51cto.com/13824643/2134269

    展开全文
  • Redis的数据类型

    2020-11-20 14:13:06
    默认端口号是 6379 redis-cli基础命令: select [index] 选择数据库 keys [pattern] 显示keys set [key] [value] 设置kv get [key] 查看key的 del key 删除key flushdb 清空当前数据库的 flushall 清空所有...

    基础

    Redis默认有16个数据库
    在这里插入图片描述
    默认数据库是 0
    默认端口号是 6379
    redis-cli基础命令:

    1. select [index] 选择数据库
    2. keys [pattern] 显示keys值
    3. set [key] [value] 设置kv
    4. get [key] 查看key的值
    5. del key 删除key
    6. flushdb 清空当前数据库的值
    7. flushall 清空所有数据库的值
    8. EXPIRE key seconds 设置key的过期时间
    9. TTL key 查看key的过期时间,-1代表没有设置,-2代表已过期
    10. type key 查看key的类型
    127.0.0.1:6379> keys * 
    1) "myhash"
    2) "key:__rand_int__"
    3) "mylist"
    4) "counter:__rand_int__"
    127.0.0.1:6379> FLUSHDB 
    OK
    127.0.0.1:6379> keys *
    (empty array)
    127.0.0.1:6379> SELECT 1
    OK
    127.0.0.1:6379[1]> keys *
    (empty array)
    127.0.0.1:6379[1]> set name kong
    OK
    127.0.0.1:6379[1]> get name
    "kong"
    127.0.0.1:6379[1]> keys *
    1) "age"
    2) "name"
    127.0.0.1:6379[1]> type age
    string
    127.0.0.1:6379[1]> del age
    (integer) 1
    127.0.0.1:6379[1]> keys *
    1) "name"
    127.0.0.1:6379[1]> select 2
    OK
    127.0.0.1:6379[2]> FLUSHdb
    OK
    127.0.0.1:6379[2]> select 1
    OK
    127.0.0.1:6379[1]> keys *
    1) "name"
    127.0.0.1:6379[1]> select 2
    OK
    127.0.0.1:6379[2]> FLUSHALL
    OK
    127.0.0.1:6379[2]> SELECT 1
    OK
    127.0.0.1:6379[1]> keys *
    (empty array)
    127.0.0.1:6379[1]> TTL name
    (integer) -1
    127.0.0.1:6379[1]> EXPIRE name 10
    (integer) 1
    127.0.0.1:6379[1]> ttl name
    (integer) 8
    127.0.0.1:6379[1]> ttl name
    (integer) 5
    127.0.0.1:6379[1]> ttl name
    (integer) -2
    
    

    Redis keys

    key值是二进制安全的,这意味着可以用任何二进制序列作为key值,从形如”foo”的简单字符串到一个JPEG文件的内容都可以。空字符串也是有效key值。

    关于key的几条规则:

    太长的键值不是个好主意,例如1024字节的键值就不是个好主意,不仅因为消耗内存,而且在数据中查找这类键值的计算成本很高。
    太短的键值通常也不是好主意,如果你要用”u:1000:pwd”来代替”user:1000:password”,这没有什么问题,但后者更易阅读,并且由此增加的空间消耗相对于key
    object和value object本身来说很小。当然,没人阻止您一定要用更短的键值节省一丁点儿空间。
    最好坚持一种模式。例如:”object-type: id:field”就是个不错的注意,像这样”user:1000:password”。我喜欢对多单词的字段名中加上一个点,就像这样:”comment: 1234:reply.to”。

    所有API可以在官方文档查找,中文的比较快但是不一定最新。

    数据类型

    官方中文教程
    官方互动式教程

    • string
    # 关于 SET GET 的命令就省略了
    127.0.0.1:6379[1]> set k1 hello,world
    OK
    127.0.0.1:6379[1]> get k1
    "hello,world"
    
    # 对于整数, Redis内置了自增自减的命令
    127.0.0.1:6379[1]> set k4 1
    OK
    127.0.0.1:6379[1]> INCR k4 # 自增
    (integer) 2
    127.0.0.1:6379[1]> INCRBY k4 2 # 定义自增的量
    (integer) 4
    127.0.0.1:6379[1]> DECR k4 # 自减
    (integer) 3
    127.0.0.1:6379[1]> decrby k4 4 # 定义自减的量
    (integer) -1
    

    在这里插入图片描述
    SETRANGE
    GETRANGE
    APPEND

    127.0.0.1:6379[1]> get name
    "kong"
    127.0.0.1:6379[1]> SETRANGE name 0 hiukong
    (integer) 7
    127.0.0.1:6379[1]> get name
    "hiukong"
    127.0.0.1:6379[1]> GETRANGE name 0 2
    "hiu"
    127.0.0.1:6379[1]> APPEND name ,hello
    (integer) 13
    

    SETEX (SET WITH EXPIRE) 设置kv的同时设置过期时间
    SETNX (SET IF NOT EXISTS)
    PERSIST 撤销TTL ( if you SET a key, its TTL will be reset.)

    127.0.0.1:6379[1]> keys *
    (empty array)
    127.0.0.1:6379[1]> set k1 v1
    OK
    127.0.0.1:6379[1]> setex k2 30 v2
    OK
    127.0.0.1:6379[1]> ttl k2
    (integer) 26
    127.0.0.1:6379[1]> PERSIST k2
    (integer) 1
    127.0.0.1:6379[1]> ttl k2
    (integer) -1
    127.0.0.1:6379[1]> setnx k2 "hello"
    (integer) 0
    127.0.0.1:6379[1]> get k2
    "v2"
    

    MSET(Multi-set) 在这里插入图片描述

    MGET(multi-get)在这里插入图片描述
    MSETNX 同上,不过是可以同时设置多个

    127.0.0.1:6379[1]> mset k1 v1 k2 v2 k3 v3
    OK
    127.0.0.1:6379[1]> MSETNX k1 new_v1 k4 v4 # 是一个原子性操作,要么全部成功要么全成功。
    (integer) 0
    127.0.0.1:6379[1]> mget k1 k2 k3 k4
    1) "v1"
    2) "v2"
    3) "v3"
    4) (nil)
    

    String类型的使用场景:

    1. value除了是字符串也可以是数字
    2. 做计数器,统计浏览数…
    • Lists
      Redis列表是简单的字符串列表,按照插入顺序排序。 你可以添加一个元素到列表的头部(左边)或者尾部(右边)。因此可以做成栈、队列、阻塞队列。

    命令
    LPUSH 从左边/头部插入元素
    RPUSH 从右边/尾部插入元素
    LLEN 返回list长度
    LRANGE 返回list的元素
    LPOP 从左边/头部弹出元素
    RPOP 从右边/尾部弹出元素
    LINDEX 通过下标获取元素

    127.0.0.1:6379[1]> LPUSH list hello
    (integer) 1
    127.0.0.1:6379[1]> LPUSH list world
    (integer) 2
    127.0.0.1:6379[1]> RPUSH list kong
    (integer) 3
    127.0.0.1:6379[1]> LLEN
    (error) ERR wrong number of arguments for 'llen' command
    127.0.0.1:6379[1]> LLEN list
    (integer) 3
    127.0.0.1:6379[1]> LRANGE list 0 -1
    1) "world"
    2) "hello"
    3) "kong"
    127.0.0.1:6379[1]> RPOP list 
    "kong"
    127.0.0.1:6379[1]> LRANGE list 0 -1
    1) "world"
    2) "hello"
    127.0.0.1:6379[1]> LPOP list
    "world"
    127.0.0.1:6379[1]> LINDEX list 0
    "hello"
    

    在这里插入图片描述
    List还是很好理解的.之后就不画图了

    LREM key count element 可以指定对应的值和删除的个数

    127.0.0.1:6379[1]> lrange list 0 -1
    1) "hello"
    2) "world!"
    3) "test"
    4) "test"
    5) "hello"
    127.0.0.1:6379[1]> lrem list 1 hello # 删除1个 hello
    (integer) 1
    127.0.0.1:6379[1]> lrange list 0 -1
    1) "world!"
    2) "test"
    3) "test"
    4) "hello"
    127.0.0.1:6379[1]> lrem list 2 test # 删除2个 test
    (integer) 2
    127.0.0.1:6379[1]> lrange list 0 -1
    1) "world!"
    2) "hello"
    

    LTRIM key start stop 截取指定位置的list,保留修改后的list

    127.0.0.1:6379[1]> LPUSH list hello world test trim
    (integer) 4
    127.0.0.1:6379[1]> lrange list 0 -1
    1) "trim"
    2) "test"
    3) "world"
    4) "hello"
    127.0.0.1:6379[1]> LTRIM list 0 1 # 截取第一个到第二个
    OK
    127.0.0.1:6379[1]> lrange list 0 -1
    1) "trim"
    2) "test"
    

    RPOPLPUSH source destination 组合命令,右弹出然后左插入

    127.0.0.1:6379[1]> RPUSH list hello world test rpoplpush
    (integer) 4
    127.0.0.1:6379[1]> LRANGE list
    (error) ERR wrong number of arguments for 'lrange' command
    127.0.0.1:6379[1]> LRANGE list 0 -1
    1) "hello"
    2) "world"
    3) "test"
    4) "rpoplpush"
    127.0.0.1:6379[1]> RPOPLPUSH list newList
    "rpoplpush"
    127.0.0.1:6379[1]> LRANGE list 0 -1
    1) "hello"
    2) "world"
    3) "test"
    127.0.0.1:6379[1]> LRANGE newList 0 -1
    1) "rpoplpush"
    

    LSET key index element 改变指定下标的值,如果key不存在或者是index越界则会报错

    127.0.0.1:6379[1]> LSET list 0 hi
    OK
    127.0.0.1:6379[1]> lrange list 0 -1
    1) "hi"
    2) "world"
    3) "test"
    127.0.0.1:6379[1]> lset List 0 hi
    (error) ERR no such key
    127.0.0.1:6379[1]> lset list 3 test
    (error) ERR index out of range
    

    LINSERT key BEFORE|AFTER pivot element 在指定位置的前/后插入值

    127.0.0.1:6379[1]> LINSERT list before hi nihao
    (integer) 4
    127.0.0.1:6379[1]> lrange list 0 -1
    1) "nihao"
    2) "hi"
    3) "world"
    4) "test"
    

    可以看出其实List基本就是linked List结构,在两边插入和改动值的时候效率最高

    • Sets
      Redis集合是一个无序的不重复的字符串合集。你可以以O(1) 的时间复杂度(无论集合中有多少元素时间复杂度都为常量)完成 添加,删除以及测试元素是否存在的操作。

    SADD key member [member …] 往set里面添加元素
    SREM key member [member …] 删除set中的元素
    SCARD key 返回set中的元素个数
    SMEMBERS key 查看set中的元素
    SISMEMBER key member 查看set中是否存在[member]元素

    127.0.0.1:6379> SMEMBERS myset # 查看set中成员
    1) "xiaohong"
    2) "xiaoming"
    3) "lisi"
    4) "zhangsan"
    --------------------------------------------------------------------
    127.0.0.1:6379> SCARD myset
    (integer) 4
    --------------------------------------------------------------------
    127.0.0.1:6379> SISMEMBER myset lisi # 检查set中是否存在'lisi'
    (integer) 1 # 存在返回1
    127.0.0.1:6379> SISMEMBER myset wangwu # 检查set中是否存在'wangwu'
    (integer) 0 # 不存在返回0
    --------------------------------------------------------------------
    127.0.0.1:6379> SREM myset lisi
    (integer) 1
    127.0.0.1:6379> SMEMBERS myset
    1) "xiaohong"
    2) "xiaoming"
    3) "zhangsan"
    

    SRANDMEMBER key [count] 随机抽取set中x个元素

    127.0.0.1:6379> SRANDMEMBER myset 1
    1) "zhangsan"
    127.0.0.1:6379> SRANDMEMBER myset 1
    1) "xiaohong"
    127.0.0.1:6379> SRANDMEMBER myset 2
    1) "xiaohong"
    2) "zhangsan"
    

    SPOP key [count] 随机删除set中x个元素
    SMOVE source destination member 将某一元素移动到另一个set中

    127.0.0.1:6379> SMEMBERS myset
    1) "wangwu"
    2) "lisi"
    3) "xiaoming"
    4) "xiaohong"
    5) "liuxing"
    6) "zhangsan"
    127.0.0.1:6379> SPOP myset
    "wangwu"
    127.0.0.1:6379> SPOP myset
    "liuxing"
    127.0.0.1:6379> SPOP myset
    "xiaoming"
    127.0.0.1:6379> SMOVE myset myset2 lisi
    (integer) 1
    127.0.0.1:6379> SMEMBERS myset
    1) "xiaohong"
    2) "zhangsan"
    127.0.0.1:6379> SMEMBERS myset2
    1) "lisi"
    

    集合中的操作: 交集, 并集, 差集

    127.0.0.1:6379> sadd myset1 a b c d
    (integer) 4
    127.0.0.1:6379> SADD myset2 c d e f
    (integer) 4
    --------------------------------------------------------------------
    127.0.0.1:6379> SDIFF myset1 myset2 # 差集
    1) "a"
    2) "b"
    --------------------------------------------------------------------
    127.0.0.1:6379> SINTER myset1 myset2 # 交集 (共同好友)
    1) "c"
    2) "d"
    --------------------------------------------------------------------
    127.0.0.1:6379> SUNION myset1 myset2 # 并集
    1) "c"
    2) "a"
    3) "f"
    4) "e"
    5) "b"
    6) "d"
    
    • Hashes
      Redis hashes look exactly how one might expect a “hash” to look, with field-value pairs
      看起来是key-Map这种样子的

      命令和String的差不多,命令用H开头

    HMSET key field value [field value …]
    HMGET key field [field…]
    HGETALL key
    HDEL key field [field…]
    HLEN key
    HEXISTS key field
    HKEYS key
    HVALS key
    HINCRBY key field increment
    HSETNX key field value

    127.0.0.1:6379> hmset user:100 username kong birtyear 1997 verified 1
    OK
    --------------------------------------------------------------------
    127.0.0.1:6379> HMGET user:100 username birtyear
    1) "kong"
    2) "1997"
    --------------------------------------------------------------------
    127.0.0.1:6379> hgetall user:100
    1) "username"
    2) "kong"
    3) "birtyear"
    4) "1997"
    5) "verified"
    6) "1"
    --------------------------------------------------------------------
    127.0.0.1:6379> HDEL user:100 verified
    (integer) 1
    127.0.0.1:6379> HGETALL user:100
    1) "username"
    2) "kong"
    3) "birtyear"
    4) "1997"
    --------------------------------------------------------------------
    127.0.0.1:6379> HLEN user:100
    (integer) 2
    --------------------------------------------------------------------
    127.0.0.1:6379> HEXISTS user:100 username
    (integer) 1
    --------------------------------------------------------------------
    127.0.0.1:6379> HKEYS user:100
    1) "username"
    2) "birtyear"
    127.0.0.1:6379> HVALS user:100
    1) "kong"
    2) "1997"
    --------------------------------------------------------------------
    127.0.0.1:6379> HSET user:100 money 100
    (integer) 1
    127.0.0.1:6379> HINCRBY user:100 money 10
    (integer) 110
    127.0.0.1:6379> HINCRBY user:100 money -80
    (integer) 30
    --------------------------------------------------------------------
    127.0.0.1:6379> HSETNX user:100 username hiu
    (integer) 0
    127.0.0.1:6379> HSETNX user:100 secondname hiu
    (integer) 1
    

    Hash适合去存储一些需要变更的数据,hash更适合用于存储对象,string用于存储字符串。

    • Sorted sets or ZSet
      有序集合Zset类似于Set和Hash,他和Set一样是不重复的字符串集合,同时又像Hash一样有一个浮点型数值score的映射,所以Zset像是set和hash的混合。

      Zset的排序规则:
      - A.score > B.score, 则 A>B
      - 如果A和B的分数完全相同,则A字符串在字典上大于B字符串,则A>B

    ZADD key [NX|XX] [CH] [INCR] score member [score member …]
    ZRANGE
    ZRANBYSCORE 降序显示
    ZREVRANGE 升序显示
    ZCARD 显示个数
    ZREM 移除元素

    127.0.0.1:6379> ZADD hackers 1940 "zhangsan"
    (integer) 1
    127.0.0.1:6379> ZADD hackers 1957 "lisi"
    (integer) 1
    127.0.0.1:6379> ZADD hackers 1980 "wangwu"
    (integer) 1
    127.0.0.1:6379> ZADD hackers 1987 "xiaoming"
    (integer) 1
    127.0.0.1:6379> ZADD hackers 1967 "xiaoli"
    (integer) 1
    --------------------------------------------------------------------
    127.0.0.1:6379> ZRANGE hackers 0 -1 # 查看所有的值
    1) "zhangsan"
    2) "lisi"
    3) "xiaoli"
    4) "wangwu"
    5) "xiaoming"
    --------------------------------------------------------------------
    127.0.0.1:6379> ZRANGEBYSCORE hackers -inf +inf  withscores # 查看从负无穷到正无穷的值,并显示score
     1) "zhangsan"
     2) "1940"
     3) "lisi"
     4) "1957"
     5) "xiaoli"
     6) "1967"
     7) "wangwu"
     8) "1980"
     9) "xiaoming"
    10) "1987"
    127.0.0.1:6379> ZREVRANGE hackers 0 -1 withscores # 降序显示
     1) "xiaoming"
     2) "1987"
     3) "wangwu"
     4) "1980"
     5) "xiaoli"
     6) "1967"
     7) "lisi"
     8) "1957"
     9) "zhangsan"
    10) "1940"
    --------------------------------------------------------------------
    127.0.0.1:6379> zrange hackers 0 -1
    1) "zhangsan"
    2) "lisi"
    3) "xiaoli"
    4) "wangwu"
    5) "xiaoming"
    127.0.0.1:6379> ZREM hacker zhangsan
    (integer) 0
    127.0.0.1:6379> zrange hackers 0 -1
    1) "zhangsan"
    2) "lisi"
    3) "xiaoli"
    4) "wangwu"
    5) "xiaoming"
    --------------------------------------------------------------------
    127.0.0.1:6379> ZCARD hackers
    (integer) 5
    

    zcount key min max 判断闭区间内的数值个数

    127.0.0.1:6379> ZCOUNT hackers 1960 1980
    (integer) 2
    

    Zset案例:
    - 1.班级表/薪资表
    - 2.排行榜更新

    • geospatial GEO 地理位置
      GEO只有6个命令

      GEOADD key longitude latitude member [longitude latitude member …] key 经度 纬度 名字
      GEOHASH 返回一个11个字符的字符串geohash
      GEOPOS key member [member] 返回地址的经纬度
      GEODIST key member1 member2 [m|km|ft|mi] 返回两个地址的距离(米,千米,英里,英尺)
      GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]
      以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。
      GEORADIUSBYMEMBER key member radius m|km|ft|mi 找出指定元素周围的元素

    127.0.0.1:6379> GEOADD china:city 114.085947 22.547 shenzhen
    (integer) 1
    127.0.0.1:6379> GEOADD china:city 113.122717 23.028762 foshan
    (integer) 1
    127.0.0.1:6379> GEOADD china:city 106.50 29.53 chongqing
    (integer) 1
    127.0.0.1:6379> GEOADD china:city 116.40 39.90 beijing 
    (integer) 1
    127.0.0.1:6379> GEOADD china:city 120.16 30.24 hangzhou 108.96 34.26 xian
    (integer) 2
    --------------------------------------------------------------------
    127.0.0.1:6379> GEOPOS china:city foshan
    1) 1) "113.1227150559425354"
       2) "23.02876171488941992"
    127.0.0.1:6379> GEOPOS china:city foshan chongqing
    1) 1) "113.1227150559425354"
       2) "23.02876171488941992"
    2) 1) "106.49999767541885376"
       2) "29.52999957900659211"
    127.0.0.1:6379> GEOPOS china:city foshan chongqing sichuan 
    			# GEOPOS接受可变数量的member,如果不存在则返回nil
    1) 1) "113.1227150559425354"
       2) "23.02876171488941992"
    2) 1) "106.49999767541885376"
       2) "29.52999957900659211"
    3) (nil)
    --------------------------------------------------------------------
    127.0.0.1:6379> GEODIST china:city foshan sichuan
    (nil)
    127.0.0.1:6379> GEODIST china:city foshan beijing 
    "1901715.9264"
    127.0.0.1:6379> GEODIST china:city foshan beijing km
    "1901.7159"
    --------------------------------------------------------------------
    127.0.0.1:6379> GEORADIUS china:city 110 30 100 km withdist
    (empty array)
    127.0.0.1:6379> GEORADIUS china:city 110 30 500 km withdist
    1) 1) "chongqing"
       2) "341.9374"
    2) 1) "xian"
       2) "483.8340"
    127.0.0.1:6379> GEORADIUS china:city 110 30 500 km withdist withcoord
    1) 1) "chongqing"
       2) "341.9374"
       3) 1) "106.49999767541885376"
          2) "29.52999957900659211"
    2) 1) "xian"
       2) "483.8340"
       3) 1) "108.96000176668167114"
          2) "34.25999964418929977"
    127.0.0.1:6379> GEORADIUS china:city 110 30 500 km withcoord withdist count 1
    1) 1) "chongqing"
       2) "341.9374"
       3) 1) "106.49999767541885376"
          2) "29.52999957900659211"
    --------------------------------------------------------------------
    127.0.0.1:6379> GEORADIUSBYMEMBER china:city beijing 1000 km
    1) "beijing"
    2) "xian"
    127.0.0.1:6379> GEORADIUSBYMEMBER china:city neimenggu 1000 km # 元素不存在
    (error) ERR could not decode requested zset member
    --------------------------------------------------------------------
    127.0.0.1:6379> GEOHASH china:city foshan chongqing
    1) "ws07n0m2q20"
    2) "wm5xzrybty0"
    

    GEO 原理: GEO底层是使用ZSet实现的,可以用ZSet的命令操作GEO

    127.0.0.1:6379> ZRANGE china:city 0 -1
    1) "chongqing"
    2) "xian"
    3) "shenzhen"
    4) "foshan"
    5) "hangzhou"
    6) "beijing"
    127.0.0.1:6379> ZREM china:city foshan
    (integer) 1
    127.0.0.1:6379> zrange china:city 0 -1
    1) "chongqing"
    2) "xian"
    3) "shenzhen"
    4) "hangzhou"
    5) "beijing"
    
    • hyperloglogs 超日志
      一种统计基数的数据结构,该数据结构使用的算法可以用恒定内存来统计基数,而且误差不超过1%。譬如传统的统计UV的做法是使用Set来统计用户和ip,这样会浪费大量的内存。

    PFADD key elements 新建
    PFCOUNT key 统计基数
    PFMERGE destkey sourcekey [sourcekey] 合并

    127.0.0.1:6379> PFADD mykey1 a b c d e f g a
    (integer) 1
    127.0.0.1:6379> pfadd mykey2 h i j k l m n o
    (integer) 1
    127.0.0.1:6379> pfadd mykey2 a b c
    (integer) 1
    127.0.0.1:6379> PFCOUNT mykey1
    (integer) 7
    127.0.0.1:6379> PFCOUNT mykey2
    (integer) 11
    127.0.0.1:6379> PFMERGE mykey3 mykey1 mykey2
    OK
    127.0.0.1:6379> PFCOUNT mykey3
    (integer) 15
    
    • bitmaps 位图
      任何只有两种状态的情景都可以使用位图,打卡签到、在线下线…
      位图不是实际的数据类型,而是在String类型上定义的一组面向位的操作。由于字符串是二进制安全Blob,并且最大长度为512 MB,因此它们适合设置多达2^32个不同的位。
      位图的最大优点之一是,它们在存储信息时通常可以节省大量空间。例如,在以增量用户ID表示不同用户的系统中,仅使用512 MB内存就可以记住40亿用户的一位信息(例如,知道用户是否要接收新闻通讯)。

    SETBIT key offset value
    GETBIT key offset
    BITCOUNT key [start end]

    127.0.0.1:6379> setbit sign 0 0
    (integer) 0
    127.0.0.1:6379> setbit sign 1 1
    (integer) 0
    127.0.0.1:6379> setbit sign 2 1
    (integer) 0
    127.0.0.1:6379> setbit sign 3 0
    (integer) 0
    127.0.0.1:6379> setbit sign 4 0
    (integer) 0
    127.0.0.1:6379> SETBIT sign 5 1
    (integer) 0
    127.0.0.1:6379> SETBIT sign 6 1
    (integer) 0
    127.0.0.1:6379> GETBIT sign 3
    (integer) 0
    --------------------------------------------------------------------
    127.0.0.1:6379> GETBIT sign 3
    (integer) 0
    --------------------------------------------------------------------
    127.0.0.1:6379> BITCOUNT sign
    (integer) 4
    
    
    展开全文
  • 数据类型修饰

    2008-07-22 15:43:00
    在单片机中,作为输入的 IO端口其内容将是随意变化的;在中断内被修改的变量相对主程序流程来讲也是随意变化的;很多特殊功能寄存器的也将随着指令的运行而动态改变。所有这种类型的变量必须将它们明确定义成...

    extern — 外部变量声明

    volatile — 易变型变量声明

    它说明了一个变量的值是会随机变化的,即使程序没有刻意对它进行任何赋值操作。在单片机中,作为输入的 IO端口其内容将是随意变化的;在中断内被修改的变量相对主程序流程来讲也是随意变化的;很多特殊功能寄存器的值也将随着指令的运行而动态改变。所有这种类型的变量必须将它们明确定义成“volatile”类型,例如:

    volatile unsigned char STATUS @ 0x03;
    volatile bit commFlag;

    “volatile”类型定义告诉编译器的优化处理器这些变量是实在存在的,在优化过程中不能无故消除。假定你的程序定义了一个变量并对其作了一次赋值,但随后就再也没有对其进行任何读写操作,如果是非volatile 型变量,优化后的结果是这个变量将有可能被彻底删除以节约存储空间。另外一种情形是在使用某一个变量进行连续的运算操作时,这个变量的值将在第一次操作时被复制到中间临时变量中,如果它是非 volatile 型变量,则紧接其后的其它操作将有可能直接从临时变量中取数以提高运行效率,显然这样做后对于那些随机变化的参数就会出问题。只要将其定义成 volatile 类型后,编译后的代码就可以保证每次操作时直接从变量地址处取数。

    const — 常数型变量声明

    如果变量定义前冠以“const”类型修饰,那么所有这些变量就成为常数,程序运行过程中不能对其修改。除了位变量,其它所有基本类型的变量或高级组合变量都将被存放在程序空间(ROM 区)以节约数据存储空间。


    persistent — 非初始化变量声明

    按照标准 C 语言的做法,程序在开始运行前首先要把所有定义的但没有预置初值的变量全部清零。PICC 会在最后生成的机器码中加入一小段初始化代码来实现这一变量清零操作,且这一操作将在 main 函数被调用之前执行。问题是作为一个单片机的控制系统有很多变量是不允许在程序复位后被清零的。为了达到这一目的,PICC 提供了“persistent”修饰词以声明此类变量无需在复位时自动清零,编程员应该自己决定程序中的那些变量是必须声明成“persisten”类型,而且须自己判断什么时候需要对其进行初始化赋值。例如:
    persistent unsigned char hour,minute,second; //定义时分秒变量

    经常用到的是如果程序经上电复位后开始运行,那么需要将 persistent 型的变量初始化,如果是其它形式的复位,例如看门狗引发的复位,则无需对 persistent 型变量作任何修改。PIC 单片机内提供了各种复位的判别标志,用户程序可依具体设计灵活处理不同的复位情形。

    展开全文
  • Redis执行流程9.Redis数据类型只需要掌握第一种为字符串的形式10. Redis的指令(对应五种数据类型)10.1 字符串类型10.2 Hash类型10.3 列表类型List10.4 集合类型10.5 通用指令(所有类型都可以使用) 1. Redis概述 ...
  • 文章目录redis基础知识:五大数据类型:1.String类型:2.List类型 redis基础知识: 默认16个数据库,用的第0个数据库,可以用select切换数据库:select 3(切换到第三个数据库)。 DBSIZE:查看数据库大小。 set name ...
  • 萌新食用:Verilog中wire和reg数据类型的区别 最近恰好在学习数电相关知识扯到Verilog中的wire与reg类型数据的区别: 总的来说,其实就一句话:wire相当于物理连线,而reg相当于存储单元。 下面简单叙述一下具体差别...
  • Cacti多端口流量聚合成一个图,并取95方法 第一步、首先打开 ->控制台 ->图形管理 ->添加 第二步、选择图形模板是选择默认“无” 第三步、这一步的时候在标题栏填入名称,然后点右下角“添加”按钮...
  • 或者redis-cli进入默认端口(个人习惯一般不会使用)Redis五种基本数据类型简单命令: Redis简单增删改查例子 一、字符串(String)类型 1、增加一个key为ay_key的 127.0.0.1:6379> set ay_key "ay" OK ...
  • 交换机包装上面参数核心交换机应当全部采用模块化结构,必须拥有相当数量的插槽,具有强大的网络扩展能力,可以根据现实或者未来的需要选择不同数量、不同速率和不同接口类型的模块,以适应千变万化的网络需求。...
  • 在Verilog中,初学者经常分不清reg和wire两者的区别,应该使用它们中哪个来驱动端口?连接不同模块时又该如何做?Systemverilog中对此做了改进,如图1所示: 图中,黄色的logic、bit、logic和reg为 无符号类型;...
  • 然而需要存储的输出端口应该声明为 reg 数据类型,并且可以在程序块中使用,比如 always 和 initial only。 输入或inout类型的端口不能声明为reg,因为它们是由外部连续驱动的,不应该存储,而是尽快反映外部...
  • 详解redis端口

    2021-01-19 22:44:35
    它通常被称为数据结构服务器,因为(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。 Redis 查看端口使用情况 1,首先查询该端口的 pid,使用命令 【ne
  • 端口(Port)

    2017-02-18 01:39:11
    端口(Port) 模块和所属环境之间动态通信的通道。 A channel for dynamic communication between a block and its environment. ... : [ 模式 ] 数据类型 [ := 设定 ] ); 模式 = in | out | inout | buffer | l
  • 本节书摘来自华章出版社《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》一书中的第2章,第2.2节,...2.2 令牌和数据类型 在图2-7的例子中,Const角色在它的输出端口创建一个序列。序列中的...
  • 在C#中实现Socket端口复用

    千次阅读 2013-12-05 20:40:29
    对于具有 Boolean 数据类型的选项,指定非零可启用该选项,指定零可禁用该选项。对于具有整数数据类型的选项,指定适当的。Socket 选项按照协议支持程度来分组。 我们来看看这个函数是怎么用的:
  • 1、环境准备 ...注:在安装的过程中需要制定jdk的路径,如图所示,通常会自动查找环境变量中的。 1.2添加DM的驱动 使用jndi+tomcat连接数据库 使用文件配合Tomcat连接数据库 使用jdbc...
  •  VARIABLE 变量名:数据类型{:=初始}  例如:VARIABLE a:INTEGER  VARIABLE b:INTEGER:=2;  变量赋值语句(区别端口赋值语句格式):  目标变量名:=表达式  例如:VARIABLE x,y:REAL  ...
  • 问题总结:通过SNMP所监控的网络设备的流量是个累加,这个是有个类型的,我这里是counter32,也就是最大是2的32次方,一旦超过这个就会重新从0开始计数。也就是端口流量会不断的从0到2的32次方之间循环。...
  • 目录(?)[-] 一 输入模式 三输出模式 ...termios 结构是在POSIX规范中定义的标准接口,它类似于系统V中的termio接口,通过设置termios类型数据结构中的和使用一小 组函数调用,你就可以...
  • mysql数据

    2014-11-15 18:16:14
    2-1 内容回顾  默认端口号3306  超级用户 root 创建数据库 CREATE ...2-2数据类型之整型和数据表的操作 数据类型: 整型 TINYINT 有符号:-128到127 无符号:0到255  SMALLINT 有符号:-32768到32767 无符
  •  VARIABLE 变量名:数据类型{:=初始}  例如:VARIABLE a:INTEGER  VARIABLE b:INTEGER:=2;  变量赋值语句(区别端口赋值语句格式):  目标变量名:=表达式  例如:VARIABLE x,y:REAL  ...
  • Option Explicit ...Private Type GUID 'GUID数据类型 Data(0 To 3) As Long End Type Private Type SP_DEVINFO_DATA '设备信息类型 cbSize As Long '数据表长度 ClassGuid As GUID '设备GUID D
  • ActiveMQ简单的介绍ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线,是一个开放源代码消息中间件,对于消息的...同时,拥有五种发送与接收的数据格式: · StreamMessage -- Java原始数据流 · Ma...
  • 键的类型只能为字符串,支持五种数据类型:字符串、列表、集合、散列表、有序集合。 二、使用命令 redis-cli 启动redis(默认端口 6379) String set key value 设置key和value get key 得到key del key ...
  • 本质:IPV4:unit32_t 类型,最大的范围是 42 亿多,采用点分十进制来表示 IP 地址(例:172.16.99.129),每一个字节能表示的最大数据为 255 目的 IP 地址:标识数据去向 源 IP 地址:标识数据来向 IPV6:16个...
  • 接下来将p 中的数据copy 入q中都欢迎批评指正probe= mmc_blk_probe,Symbol.for不会每次调用返回1个新的 Symbol 类型void reverseFixlenchar str, int n .数据来源层相当于E对应的next 为1即字符E之前的字符串...
  • 通过适当的系统功能模块划分、灵活的协议设计和规范的模块间接口...只要按照协议和接口规范实现的第三方数据解析模块或数据处理模块,即能实现新数据类型的安全监控系统的无缝接入或满足其他联网目的煤矿应用系统需要。
  • 原文如下面,其中第一个宏的意思不是把v赋给了内存地址为a的内存空间吗,为什么是访问outb是往外设端口数据的? 在linux的驱动程序中,都会使用大量的outb、outw、inb、inw等等宏来访问硬件或寄存器。这些宏...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 375
精华内容 150
关键字:

数据类型端口值