redis 命令

Redis是用C语言实现的,一般来说C语言实现的程序”距离”操作系统更近,执行速度相对会更快。

Redis使用了单线程架构,预防了多线程可能产生的竞争问题。

作者对于Redis源代码可以说是精打细磨,曾经有人评价Redis是少有的集性能和优雅于一身的开源代码。

本文比较详细且全面的梳理了Redis使用过程中涉及的全部增删改查!

1.字符串

1.设置键

<span class="hljs-keyword">set <span class="hljs-keyword">key <span class="hljs-keyword">value [ex seconds] [px milliseconds] [nx|xx]

setex <span class="hljs-keyword">key seconds <span class="hljs-keyword">value
setnx <span class="hljs-keyword">key <span class="hljs-keyword">value</span></span></span></span></span></span></span>
  • ex seconds:为键设置秒级过期时间。
  • px milliseconds:为键设置毫秒级过期时间。
  • nx:键必须不存在,才可以设置成功,用于添加。
  • xx:与nx相反,键必须存在,才可以设置成功,用于更新。

2.批量设置值

mset <span class="hljs-keyword">key value [<span class="hljs-keyword">key value ...]</span></span>

3.批量获取值

mget <span class="hljs-keyword">key [<span class="hljs-keyword">key ...]</span></span>

4.计数

<span class="hljs-attribute">incr key</span>
  • 值不是整数,返回错误。
  • 值是整数,返回自增后的结果。
  • 键不存在,按照值为0自增,返回结果为1

decr(自减)、incrby(自增指定数字)、
decrby(自减指定数字)、incrbyfloat(自增浮点数)

4.追加值

<span class="hljs-built_in">append key value</span>

5.字符串长度

<span class="hljs-attribute">strlen key</span>

6.设置并返回原值

<span class="hljs-attribute">getset key value</span>

7.设置指定位置的字符

<span class="hljs-attribute">setrange key offeset value</span>

8.获取部分字符串

getrange <span class="hljs-keyword">key start <span class="hljs-keyword">end</span></span>

2.哈希

1.设置值

<span class="hljs-attribute">hset key field value</span>

2.获取值

<span class="hljs-attribute">hget key field</span>

3.删除filed

hdel key field [field <span class="hljs-keyword">...]</span>

4.计算field个数

<span class="hljs-attribute">hlen key</span>

5.批量设置或获取field-value

hmget key field [field <span class="hljs-keyword">...]
hmset key field value [field value <span class="hljs-keyword">...]</span></span>

6.判断field是否存在

<span class="hljs-attribute">hexists key field</span>

7.获取所有field

<span class="hljs-attribute">hkeys key</span>

8.获取所有value

<span class="hljs-attribute">hvals key</span>

9.获取所有的field-value

<span class="hljs-attribute">hgetall key</span>

10.hincrby hincrbyfloat

hincrby <span class="hljs-keyword">key field
hincrbyfloat <span class="hljs-keyword">key field</span></span>

11.计算value的字符串长度

<span class="hljs-attribute">hstrlen key field</span>

3.列表

1)添加

left/right

1.从右边插入元素

rpush key <span class="hljs-keyword">value [<span class="hljs-keyword">value ...]</span></span>

lrange listkey 0 -1 可以从左到右获取列表的所有元素

2.从左边插入元素

lpush key <span class="hljs-keyword">value [<span class="hljs-keyword">value ...]</span></span>

3.向某个元素前或者后插入元素

<span class="hljs-attribute">linsert key before|after pivot value</span>

2)查找

1.获取指定范围内的元素列表

lrange <span class="hljs-keyword">key start <span class="hljs-keyword">end</span></span>

2.获取列表指定索引下标的元素

<span class="hljs-attribute">lindex key index</span>

3.获取列表长度

<span class="hljs-attribute">llen key</span>

3)删除

1.从列表左侧弹出元素

<span class="hljs-attribute">lpop key</span>

2.从列表右侧弹出

<span class="hljs-attribute">rpop key</span>

3.删除指定元素

<span class="hljs-attribute">lrem key count value</span>
  • count>0,从左到右,删除最多count个元素。
  • count

4.按照索引范围修剪列表

<span class="hljs-built_in">ltrim key start <span class="hljs-keyword">end</span></span>

4)修改

修改指定索引下标的元素

<span class="hljs-attribute">lset key index newValue</span>

5)阻塞操作

blpop <span class="hljs-keyword">key [<span class="hljs-keyword">key ...] timeout
brpop <span class="hljs-keyword">key [<span class="hljs-keyword">key ...] timeout</span></span></span></span>
  • key[key…]:多个列表的键
  • timeout:阻塞时间(单位:秒)

开发技巧

  • lpush+lpop=Stack(栈)
  • lpush+rpop=Queue(队列)
  • lpsh+ltrim=Capped Collection(有限集合)
  • lpush+brpop=Message Queue(消息队列)

4.集合

集合(set)类型也是用来保存多个的字符串元素,但和列表类型不一样的是,集合中 不允许有重复元素,并且集合中的元素是 无序的,不能通过索引下标获取元素。

1.添加元素

sadd key element [element <span class="hljs-keyword">...]</span>

2.删除元素

srem key element [element <span class="hljs-keyword">...]</span>

3.计算元素个数

<span class="hljs-attribute">scard key</span>

4.判断元素是否在集合中

<span class="hljs-attribute">sismember key element</span>

5.随机从集合返回指定个数元素

<span class="hljs-selector-tag">srandmember <span class="hljs-selector-tag">key <span class="hljs-selector-attr">[count]</span></span></span>

6.从集合随机弹出元素

<span class="hljs-attribute">spop key</span>

7.获取所有元素

<span class="hljs-attribute">smembers key</span>

8.求多个集合的交集

sinter <span class="hljs-keyword">key [<span class="hljs-keyword">key ...]</span></span>

9.求多个集合的并集

suinon <span class="hljs-keyword">key [<span class="hljs-keyword">key ...]</span></span>

10.求多个集合的差集

sdiff <span class="hljs-keyword">key [<span class="hljs-keyword">key ...]</span></span>

11.将交集、并集、差集的结果保存

sinterstore destination <span class="hljs-keyword">key [<span class="hljs-keyword">key ...]
suionstore destination <span class="hljs-keyword">key [<span class="hljs-keyword">key ...]
sdiffstore destination <span class="hljs-keyword">key [<span class="hljs-keyword">key ...]</span></span></span></span></span></span>

三个命令(原命令+store)将集合间交集、并集、差集的结果保存在destination中

5.有序集合

1.添加成员

zadd key score <span class="hljs-keyword">member [score <span class="hljs-keyword">member ...]</span></span>

Redis3.2为zadd命令添加了nx、xx、ch、incr四个选项:

  • nx:member必须不存在,才可以设置成功,用于添加。
  • xx:member必须存在,才可以设置成功,用于更新。
  • ch:返回此次操作后,有序集合元素和分数发生变化的个数。
  • incr:对score做增加,相当于后面介绍的zincrby。

2.计算成员个数

<span class="hljs-attribute">zcard key</span>

3.计算某个成员的分数

<span class="hljs-attribute">zscore key member</span>

4.计算成员的排名

zrank <span class="hljs-keyword">key member
zrevrank <span class="hljs-keyword">key member</span></span>

5.删除成员

zrem key <span class="hljs-keyword">member [<span class="hljs-keyword">member ...]</span></span>

6.增加成员的分数

<span class="hljs-selector-tag">zincrby <span class="hljs-selector-tag">key <span class="hljs-selector-tag">increment <span class="hljs-selector-tag">member
<span class="hljs-selector-tag">zincrby <span class="hljs-selector-tag">user<span class="hljs-selector-pseudo">:ranking <span class="hljs-selector-tag">9 <span class="hljs-selector-tag">tom</span></span></span></span></span></span></span></span></span>

7.返回指定排名范围的成员

zrange key <span class="hljs-keyword">start <span class="hljs-keyword">end [withscores]
zrevrange <span class="hljs-keyword">key <span class="hljs-keyword">start <span class="hljs-keyword">end [withscores]</span></span></span></span></span>

zrange是从低到高返回,zrevrange反之。

8.返回指定分数范围的成员

zrangebyscore key <span class="hljs-built_in">min <span class="hljs-built_in">max [withscores] [limit offset <span class="hljs-built_in">count]
zrevrangebyscore key <span class="hljs-built_in">max <span class="hljs-built_in">min [withscores] [limit offset <span class="hljs-built_in">count]</span></span></span></span></span></span>

其中zrangebyscore按照分数从低到高返回,zrevrangebyscore反之。

同时min和max还支持开区间(小括号)和闭区间(中括号),-inf和+inf分别代表无限小和无限大。

9.返回指定分数范围成员个数

zcount key <span class="hljs-built_in">min <span class="hljs-built_in">max</span></span>

10.删除指定排名内的升序元素

zremrangebyrank <span class="hljs-keyword">key start <span class="hljs-keyword">end</span></span>

11.删除指定分数范围的成员

zremrangebyscore key <span class="hljs-built_in">min <span class="hljs-built_in">max</span></span>

12.交集

<span class="hljs-selector-tag">zinterstore <span class="hljs-selector-tag">destination <span class="hljs-selector-tag">numkeys <span class="hljs-selector-tag">key <span class="hljs-selector-attr">[key ...] <span class="hljs-selector-attr">[weights weight [weight ...]]
<span class="hljs-selector-attr">[aggregate sum|min|max]</span></span></span></span></span></span></span>
  • destination:交集计算结果保存到这个键。
  • numkeys:需要做交集计算键的个数。
  • key[key…]:需要做交集计算的键。
  • weights weight[weight…]:每个键的权重,在做交集计算时,每个键中的每个member会将自己分数乘以这个权重,每个键的权重默认是1。
  • aggregate sum|min|max:计算成员交集后,分值可以按照sum(和)、min(最小值)、max(最大值)做汇总,默认值是sum。
<span class="hljs-selector-tag">zinterstore <span class="hljs-selector-tag">user<span class="hljs-selector-pseudo">:ranking<span class="hljs-selector-pseudo">:1_inter_2 2 <span class="hljs-selector-tag">user<span class="hljs-selector-pseudo">:ranking<span class="hljs-selector-pseudo">:1
<span class="hljs-selector-tag">user<span class="hljs-selector-pseudo">:ranking<span class="hljs-selector-pseudo">:2 <span class="hljs-selector-tag">weights 1 0<span class="hljs-selector-class">.5 <span class="hljs-selector-tag">aggregate <span class="hljs-selector-tag">max</span></span></span></span></span></span></span></span></span></span></span></span></span></span>

13.并集

zunionstore destination numkeys key [<span class="hljs-string">key ...] [<span class="hljs-string">weights weight [weight ...]][aggregate sum|min|max]</span></span>

6.键管理

键重命名

<span class="hljs-keyword">rename <span class="hljs-keyword">key newkey</span></span>

随机返回一个键

randomkey

7.键过期

  • expire key seconds:键在seconds秒后过期。
  • expireat key timestamp:键在秒级时间戳timestamp后过期。
<span class="hljs-keyword">set hello world

<span class="hljs-keyword">expire hello <span class="hljs-number">10

ttl hello</span></span></span>

通过ttl观察它的过期剩余时间(s),返回结果为-2时,代表已被删除。

ttl 和 ptll都可以查询键的剩余时间,但是pttl的精度可以达到毫秒级别,有3种返回值:

  • 大于等于0的整数:键剩余的过期时间(ttl是秒,pttl是毫秒)
  • -1:键没有设置过期时间
  • -2:键不存在

expireat命令可以设置键的秒级过期时间戳,例如如果需要将键hello在2016-08-0100:00:00(秒级时间戳为1469980800)过期,可以执行如下操作:

<span class="hljs-attribute">expireat hello <span class="hljs-number">1469980800</span></span>

除此之外,Redis2.6版本后提供了毫秒级的过期方案:

  • pexpire key milliseconds:键在milliseconds毫秒后过期。
  • pexpireat key milliseconds-timestamp键在毫秒级时间戳timestamp后过
    期。

但无论是使用过期时间还是时间戳,秒级还是毫秒级,在Redis内部最终使用的都是pexpireat。

8.迁移键

1)move key db

仅限于内部数据库的迁移

2)dump+restore

dump key
<span class="hljs-keyword">restore <span class="hljs-keyword">key ttl <span class="hljs-keyword">value</span></span></span>

分为两步:

1.在源Redis上,dump命令会将键值序列化,格式采用的是RDB格式。

2.在目标Redis上,restore命令将上面序列化的值进行复原,其中ttl参数代表过期时间,如果ttl=0代表没有过期时间。

示例:

1在源Redis上执行dump:

127<span class="hljs-selector-class">.0<span class="hljs-selector-class">.0<span class="hljs-selector-class">.1<span class="hljs-selector-pseudo">:6379> <span class="hljs-selector-tag">set <span class="hljs-selector-tag">hello <span class="hljs-selector-tag">world
<span class="hljs-selector-tag">OK
127<span class="hljs-selector-class">.0<span class="hljs-selector-class">.0<span class="hljs-selector-class">.1<span class="hljs-selector-pseudo">:6379> <span class="hljs-selector-tag">dump <span class="hljs-selector-tag">hello
"\<span class="hljs-selector-tag">x00\<span class="hljs-selector-tag">x05world\<span class="hljs-selector-tag">b\<span class="hljs-selector-tag">x00\<span class="hljs-selector-tag">xa0\<span class="hljs-selector-tag">xfc\<span class="hljs-selector-tag">xd0;<span class="hljs-selector-tag">y\<span class="hljs-selector-tag">xb0\<span class="hljs-selector-tag">xf8\<span class="hljs-selector-tag">xfa"</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

2在目标Redis上执行restore

127<span class="hljs-selector-class">.0<span class="hljs-selector-class">.0<span class="hljs-selector-class">.1<span class="hljs-selector-pseudo">:6379> <span class="hljs-selector-tag">get <span class="hljs-selector-tag">hello
(<span class="hljs-selector-tag">nil)
127<span class="hljs-selector-class">.0<span class="hljs-selector-class">.0<span class="hljs-selector-class">.1<span class="hljs-selector-pseudo">:6379> <span class="hljs-selector-tag">restore <span class="hljs-selector-tag">hello 0 "\<span class="hljs-selector-tag">x00\<span class="hljs-selector-tag">x05world\<span class="hljs-selector-tag">b\<span class="hljs-selector-tag">x00\<span class="hljs-selector-tag">xa0\<span class="hljs-selector-tag">xfc\<span class="hljs-selector-tag">xd0;<span class="hljs-selector-tag">y\<span class="hljs-selector-tag">xb0\<span class="hljs-selector-tag">xf8\<span class="hljs-selector-tag">xfa"
<span class="hljs-selector-tag">OK
127<span class="hljs-selector-class">.0<span class="hljs-selector-class">.0<span class="hljs-selector-class">.1<span class="hljs-selector-pseudo">:6379> <span class="hljs-selector-tag">get <span class="hljs-selector-tag">hello
"<span class="hljs-selector-tag">world"</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

上面两步对应的伪代码为

Redis sourceRedis = <span class="hljs-keyword">new Redis(<span class="hljs-string">"sourceMachine", <span class="hljs-number">6379);
Redis targetRedis = <span class="hljs-keyword">new Redis(<span class="hljs-string">"targetMachine", <span class="hljs-number">6379);
targetRedis.restore(<span class="hljs-string">"hello", <span class="hljs-number">0, sourceRedis.dump(<span class="hljs-keyword">key));</span></span></span></span></span></span></span></span></span>

3)migrate(推荐)

migrate host port key|<span class="hljs-string">"" destination-db timeout <span class="hljs-string">[copy] <span class="hljs-string">[replace] <span class="hljs-string">[keys key [key]]</span></span></span></span>

下面对migrate的参数进行逐个说明:

  • host:目标Redis的IP地址。
  • port:目标Redis的端口。
  • key|””:在Redis3.0.6版本之前,migrate只支持迁移一个键,所以此处是
    要迁移的键,但Redis3.0.6版本之后支持迁移多个键,如果当前需要迁移多个键,此处为空字符串””。
  • destination-db:目标Redis的数据库索引,例如要迁移到0号数据库,这里就写0。
  • timeout:迁移的超时时间(单位为毫秒)。
  • [copy]:如果添加此选项,迁移后并不删除源键。
  • [replace]:如果添加此选项,migrate不管目标Redis是否存在该键都会
    正常迁移进行数据覆盖。
  • [keys key[key…]]:迁移多个键,例如要迁移key1、key2、key3,此处填
    写”keys key1 key2 key3″。

第一,整个过程是原子执行的,不需要在多个Redis实例上开启客户端的,只需要在源Redis上执行migrate命令即可。

第二,migrate命令的数据传输直接在源Redis和目标Redis上完成的。

第三,目标Redis完成restore后会发送OK给源Redis,源Redis接收后会根据migrate对应的选项来决定是否在源Redis上删除对应的键。

示例:

1源Redis有,目标没有

<span class="hljs-selector-tag">migrate 127<span class="hljs-selector-class">.0<span class="hljs-selector-class">.0<span class="hljs-selector-class">.1 6380 <span class="hljs-selector-tag">hello 0 1000</span></span></span></span></span>

2源Redis和目标Redis都有键hello

<span class="hljs-selector-tag">migrate 127<span class="hljs-selector-class">.0<span class="hljs-selector-class">.0<span class="hljs-selector-class">.1 6379 <span class="hljs-selector-tag">hello 0 1000 <span class="hljs-selector-tag">replace</span></span></span></span></span></span>

源Redis批量添加多个键

<span class="hljs-attribute">mset key1 value1 key2 value2 key3 value3</span>

源Redis执行如下命令完成多个键的迁移

<span class="hljs-attribute">migrate <span class="hljs-number">127.0.0.1 <span class="hljs-number">6380 <span class="hljs-string">"" <span class="hljs-number">0 <span class="hljs-number">5000 keys key1 key2 key3</span></span></span></span></span></span>

9.遍历键

1)全量遍历键

<span class="hljs-attribute">keys pattern</span>

示例:

<span class="hljs-attribute">keys *</span>
  • *代表任意字符
  • ?代表一个字符
  • []代表匹配部分字符,例如[1,3]代表匹配1,3
  • \x用来做转义,例如要匹配星号、问号需要进行转义

如果Redis包含了大量的键,执行keys命令很可能会造成Redis阻塞,所以一般建议不要在生产环境下使用keys命令。

2)渐进式遍历

每次执行scan,可以想象成只扫描一个字典中的一部分键,直到将字典中的所有键遍历完毕。

scan <span class="hljs-attribute">cursor <span class="hljs-selector-attr">[match pattern] <span class="hljs-selector-attr">[count number]</span></span></span>
  • cursor是必需参数,实际上cursor是一个游标,第一次遍历从0开始,每次scan遍历完都会返回当前游标的值,直到游标值为0,表示遍历结束。
  • match pattern是可选参数,它的作用的是做模式的匹配,这点和keys的模式匹配很像。
  • count number是可选参数,它的作用是表明每次要遍历的键个数,默认值是10,此参数可以适当增大。

10.数据库管理

1.切换数据库

<span class="hljs-keyword">select dbIndex</span>

默认有16个

2.flushdb/flushall

flushdb只清除当前数据库,flushall会清除所有数据库。

11.慢查询分析

所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录下来。慢查询功能可以有效地帮助我们找到Redis可能存在的瓶颈.

12.Pipeline

Pipeline(流水线)机制它能将一组Redis命令进行组装,通过一次RTT传输给Redis,再将这组Redis命令的执行结果按顺序返回给客户端。

13.事务

熟悉关系型数据库的读者应该对事务比较了解,简单地说,事务表示一组动作,要么全部执行,要么全部不执行。

Redis提供了简单的事务功能,将一组需要一起执行的命令放到multi和exec两个命令之间。如果要停止事务的执行,可以使用discard命令代替exec命令即可。

14.关机

<span class="hljs-keyword">shutdown</span>

Redis关闭的过程:断开与客户端的连接、持久化文件生成,是一种相对优雅的关闭方式。

也可以kill掉,但不要kill -9,shutdown参数有nosave|save

15.安全

设置密码(“”:无)

<span class="hljs-built_in">config set requirepass <span class="hljs-string">"password"</span></span>
<span class="hljs-attribute">auth <span class="hljs-string">"password"</span></span>

获取密码

<span class="hljs-built_in">config get requirepass</span>

16.持久化

所有的数据都存在内存中,从内存当中同步到硬盘上,这个过程叫做持久化过程。
持久化操作,两种方式:rdb方式、aof方式,可以单独使用或者结合使用。

RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储.

AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾。Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大。

RDB配置

在redis.conf中的配置

save <span class="hljs-number">900 <span class="hljs-number">1
save <span class="hljs-number">300 <span class="hljs-number">10
save <span class="hljs-number">60 <span class="hljs-number">10000
dbfilename <span class="hljs-built_in">dump.rdb
dir ./</span></span></span></span></span></span></span>

意思是在900秒内有1个key发生变化,就写一次硬盘。

Linux保存在 redis.conf 同级目录

AOF配置

配置完记得重启!

Original: https://www.cnblogs.com/yelongsan/p/10319214.html
Author: 蒂其之死
Title: redis 命令

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/529164/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Python函数的必选参数、默认参数、可变参数、关键字参数和命名关键字参数

    必选参数 def function(args_name): print (args_name) function("参数调用") ~$ 参数调用 跟在函数名口号…

    Linux 2023年6月7日
    060
  • .Net FW项目跑不起来且无Error信息

    阅文时长 | 0.17分钟字数统计 | 280.8字符主要内容 | 1、引言&背景 2、分析步骤 3、解决方案 4、声明与参考资料『.Net FW项目跑不起来且无Error…

    Linux 2023年6月13日
    079
  • 在cmd中使用doskey来实现alias别名功能

    作为一枚网络工程师,经常就是面对一堆黑框框,也是就是终端。不同操作系统、不同厂家的目录,功能相同但是键入的命令又大不相同,这些差异化容易让脑子混乱。比如华为、思科、H3C、锐捷的设…

    Linux 2023年6月6日
    069
  • Java Web登录界面

    非常激动的开通了我的第一个博客,在这里希望大家能多多指点,相互学习。 一个简单的登录界面 首先我们先把这个登录分为三块: 一、数据库 数据库我用的是MYSQL; 二、前端 三、后台…

    Linux 2023年6月13日
    095
  • JAVA设计模式-原型模式

    JAVA设计模式-原型模式 介绍 原型模式是一种创建型模式,用于创建重复的对象,并且保证性能。原型模式创建的对象是由原型对象自身创建的,是原型对象的一个克隆,和原型对象具有相同的结…

    Linux 2023年6月6日
    074
  • 剑指offer计划27(栈与队列困难)—java

    1.1、题目1 剑指 Offer 59 – I. 滑动窗口的最大值 1.2、解法 解题思路:(来自作者bigbeats) 相当于维护一个最大队列(队头元素最大,向队尾非…

    Linux 2023年6月11日
    069
  • FusionAccess模板制作并发放

    FusionAccess安装并对接 具体安装步骤欢迎参照我的博客:https://www.cnblogs.com/kongshuo/p/16333561.html 在FC上创建wi…

    Linux 2023年6月8日
    0126
  • podman无根用户基本设置和使用

    在允许没有root特权的用户运行Podman之前,管理员必须安装或构建Podman并完成以下配置 cgroup V2Linux内核功能允许用户限制普通用户容器可以使用的资源,如果使…

    Linux 2023年6月13日
    076
  • 【开源打印组件】vue-plugin-hiprint初体验

    vue-plugin-hiprint的学习与应用 😄 生命不息,写作不止🔥 继续踏上学习之路,学之分享笔记👊 总有一天我也能像各位大佬一样🏆 一个有梦有戏的人 @怒放吧德德🌝分享学…

    Linux 2023年6月6日
    0142
  • 通过示例学习PYTORCH

    核心是:PyTorch提供了两个主要的特性: 一个n维的Tensor,与Numpy相似但可以在GPU上运行 构建和训练神经网络的自动微分 我们将使用一个三阶多项式拟合 (y=sin…

    Linux 2023年6月14日
    092
  • Linux基础02

    import paramiko class SSHProxy(object): def __init__(self, hostname, port, username, passw…

    Linux 2023年6月7日
    067
  • Java List和Map遍历的方法,forEach()的使用

    注意: 不要在foreach循环里进行元素的remove/add操作。remove元素请使用Iterator方式,如果并发操作,需要对Iterator对象加锁。 Java 8之前 …

    Linux 2023年6月7日
    083
  • python 对文件操作

    实现对文件的简单操作 #!/usr/bin/env python -*- coding:utf-8 -*- def Find(class_name): class_list = […

    Linux 2023年6月13日
    0104
  • 理清计算机中的数据表示方法–2’s complement

    Bits bits是信息的基本单元,计算机通过电压的高低来确定是0还是1;这里的电压是有一定范围的,0~a视为0, a~b视为1,具体数字不用记 Data Types 同一个数字有…

    Linux 2023年6月6日
    073
  • 在Linux下配置RealVNC和TigerVNC

    作者:alittlemc | 更新中 | 原创文章,可能有技术理解错误,欢迎指正,请与我联系,谢谢! 命令和快速总结 realvnc创建# :会话id -name 取名字 -dep…

    Linux 2023年6月6日
    089
  • @JsonFormat和@DateTimeFormat的作用

    @DatetimeFormat是将String转换成Date,一般前台给后台传值时用 import org.springframework.format.annotation.Da…

    Linux 2023年6月7日
    076
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球