当前位置: 首页 > news >正文

Java---中间件---Redis的常见命令和客户端使用

Redis的常见命令和客户端使用

  • 1.初识Redis
    • 1.1.认识NoSQL
      • 1.1.1.结构化与非结构化
      • 1.1.2.关联和非关联
      • 1.1.3.查询方式
      • 1.1.4.事务
      • 1.1.5.总结
    • 1.2.认识Redis
    • 1.3.安装Redis
      • 1.3.1.依赖库
      • 1.3.2.上传安装包并解压
      • 1.3.3.启动
      • 1.3.4.默认启动
      • 1.3.5.指定配置启动
      • 1.3.6.开机自启
    • 1.4.Redis桌面客户端
      • 1.4.1.Redis命令行客户端
      • 1.4.2.图形化桌面客户端
      • 1.4.3.安装
      • 1.4.4.建立连接
  • 2.Redis常见命令
    • 2.1.Redis通用命令
    • 2.2.String类型
      • 2.2.1.String的常见命令
      • 2.2.2.Key结构
    • 2.3.Hash类型
    • 2.4.List类型
    • 2.5.Set类型
    • 2.6.SortedSet类型
  • 3.Redis的Java客户端
    • 3.1.Jedis客户端
      • 3.1.1.快速入门
      • 3.1.2.连接池
    • 3.2.SpringDataRedis客户端
      • 3.2.1.快速入门
        • 1)引入依赖
        • 2)配置Redis
        • 3)注入RedisTemplate
        • 4)编写测试
      • 3.2.2.自定义序列化
      • 3.2.3.StringRedisTemplate

1.初识Redis

Redis是一种键值型的NoSql数据库,这里有两个关键字:

  • 键值型

  • NoSql

其中键值型,是指Redis中存储的数据都是以key、value对的形式存储,而value的形式多种多样,可以是字符串、数值、甚至json:

在这里插入图片描述

而NoSql则是相对于传统关系型数据库而言,有很大差异的一种数据库。

1.1.认识NoSQL

NoSql可以翻译做Not Only Sql(不仅仅是SQL),或者是No Sql(非Sql的)数据库。是相对于传统关系型数据库而言,有很大差异的一种特殊的数据库,因此也称之为非关系型数据库

1.1.1.结构化与非结构化

传统关系型数据库是结构化数据,每一张表都有严格的约束信息:字段名、字段数据类型、字段约束等等信息,插入的数据必须遵守这些约束:

在这里插入图片描述

而NoSql则对数据库格式没有严格约束,往往形式松散,自由。

可以是键值型:

在这里插入图片描述

也可以是文档型:

在这里插入图片描述

甚至可以是图格式:

在这里插入图片描述

1.1.2.关联和非关联

传统数据库的表与表之间往往存在关联,例如外键:

在这里插入图片描述

而非关系型数据库不存在关联关系,要维护关系要么靠代码中的业务逻辑,要么靠数据之间的耦合:

{id: 1,name: "张三",orders: [{id: 1,item: {id: 10, title: "荣耀6", price: 4999}},{id: 2,item: {id: 20, title: "小米11", price: 3999}}]
}

此处要维护“张三”的订单与商品“荣耀”和“小米11”的关系,不得不冗余的将这两个商品保存在张三的订单文档中,不够优雅。还是建议用业务来维护关联关系。

1.1.3.查询方式

传统关系型数据库会基于Sql语句做查询,语法有统一标准;

而不同的非关系数据库查询语法差异极大,五花八门各种各样。

在这里插入图片描述

1.1.4.事务

传统关系型数据库能满足事务ACID的原则。

在这里插入图片描述

而非关系型数据库往往不支持事务,或者不能严格保证ACID的特性,只能实现基本的一致性。

1.1.5.总结

除了上述四点以外,在存储方式、扩展性、查询性能上关系型与非关系型也都有着显著差异,总结如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p5smXBx3-1673830222387)(assets/kZP40dQ.png)]

  • 存储方式
    • 关系型数据库基于磁盘进行存储,会有大量的磁盘IO,对性能有一定影响
    • 非关系型数据库,他们的操作更多的是依赖于内存来操作,内存的读写速度会非常快,性能自然会好一些
  • 扩展性
    • 关系型数据库集群模式一般是主从,主从数据一致,起到数据备份的作用,称为垂直扩展。
    • 非关系型数据库可以将数据拆分,存储在不同机器上,可以保存海量数据,解决内存大小有限的问题。称为水平扩展。
    • 关系型数据库因为表之间存在关联关系,如果做水平扩展会给数据查询带来很多麻烦

1.2.认识Redis

Redis诞生于2009年全称是Remote Dictionary Server 远程词典服务器,是一个基于内存的键值型NoSQL数据库。

特征

  • 键值(key-value)型,value支持多种不同数据结构,功能丰富
  • 单线程,每个命令具备原子性
  • 低延迟,速度快(基于内存、IO多路复用、良好的编码)。
  • 支持数据持久化
  • 支持主从集群、分片集群
  • 支持多语言客户端

作者:Antirez

Redis的官方网站地址:https://redis.io/

1.3.安装Redis

大多数企业都是基于Linux服务器来部署项目,而且Redis官方也没有提供Windows版本的安装包。因此我们会基于Linux系统来安装Redis.

此处选择的Linux版本为CentOS 7.

1.3.1.依赖库

Redis是基于C语言编写的,因此首先需要安装Redis所需要的gcc依赖:

yum install -y gcc tcl

1.3.2.上传安装包并解压

将Redis安装包上传到虚拟机的任意目录。例如,我放到了/usr/local/src 目录:

在这里插入图片描述

解压缩:

tar -xzf redis-6.2.6.tar.gz

解压后:

在这里插入图片描述

进入redis目录:

cd redis-6.2.6

运行编译命令:

make && make install

如果没有出错,应该就安装成功了。

默认的安装路径是在 /usr/local/bin目录下:

该目录已经默认配置到环境变量,因此可以在任意目录下运行这些命令。其中:

  • redis-cli:是redis提供的命令行客户端
  • redis-server:是redis的服务端启动脚本
  • redis-sentinel:是redis的哨兵启动脚本

1.3.3.启动

redis的启动方式有很多种,例如:

  • 默认启动
  • 指定配置启动
  • 开机自启

1.3.4.默认启动

安装完成后,在任意目录输入redis-server命令即可启动Redis:

redis-server

如图:

在这里插入图片描述

这种启动属于前台启动,会阻塞整个会话窗口,窗口关闭或者按下CTRL + C则Redis停止。不推荐使用。

1.3.5.指定配置启动

如果要让Redis以后台方式启动,则必须修改Redis配置文件,就在我们之前解压的redis安装包下(/usr/local/src/redis-6.2.6),名字叫redis.conf:

在这里插入图片描述

我们先将这个配置文件备份一份:

cp redis.conf redis.conf.bck

然后修改redis.conf文件中的一些配置:

# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
bind 0.0.0.0
# 守护进程,修改为yes后即可后台运行
daemonize yes 
# 密码,设置后访问Redis必须输入密码
requirepass 123321

Redis的其它常见配置:

# 监听的端口
port 6379
# 工作目录,默认是当前目录,也就是运行redis-server时的命令,日志、持久化等文件会保存在这个目录
dir .
# 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0~15
databases 1
# 设置redis能够使用的最大内存
maxmemory 512mb
# 日志文件,默认为空,不记录日志,可以指定日志文件名
logfile "redis.log"

启动Redis:

# 进入redis安装目录 
cd /usr/local/src/redis-6.2.6
# 启动
redis-server redis.conf

停止服务:

# 利用redis-cli来执行 shutdown 命令,即可停止 Redis 服务,
# 因为之前配置了密码,因此需要通过 -u 来指定密码
redis-cli -u 123321 shutdown

1.3.6.开机自启

我们也可以通过配置来实现开机自启。

首先,新建一个系统服务文件:

vi /etc/systemd/system/redis.service

内容如下:

[Unit]
Description=redis-server
After=network.target[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf
PrivateTmp=true[Install]
WantedBy=multi-user.target

然后重载系统服务:

systemctl daemon-reload

现在,我们可以用下面这组命令来操作redis了:

# 启动
systemctl start redis
# 停止
systemctl stop redis
# 重启
systemctl restart redis
# 查看状态
systemctl status redis

执行下面的命令,可以让redis开机自启:

systemctl enable redis

1.4.Redis桌面客户端

安装完成Redis,我们就可以操作Redis,实现数据的CRUD了。这需要用到Redis客户端,包括:

  • 命令行客户端
  • 图形化桌面客户端
  • 编程客户端

1.4.1.Redis命令行客户端

Redis安装完成后就自带了命令行客户端:redis-cli,使用方式如下:

redis-cli [options] [commonds]

其中常见的options有:

  • -h 127.0.0.1:指定要连接的redis节点的IP地址,默认是127.0.0.1
  • -p 6379:指定要连接的redis节点的端口,默认是6379
  • -a 123321:指定redis的访问密码

其中的commonds就是Redis的操作命令,例如:

  • ping:与redis服务端做心跳测试,服务端正常会返回pong

不指定commond时,会进入redis-cli的交互控制台:

在这里插入图片描述

1.4.2.图形化桌面客户端

GitHub上的大神编写了Redis的图形化桌面客户端,地址:https://github.com/uglide/RedisDesktopManager

不过该仓库提供的是RedisDesktopManager的源码,并未提供windows安装包。

在下面这个仓库可以找到安装包:https://github.com/lework/RedisDesktopManager-Windows/releases

1.4.3.安装

下载Redis的图形化桌面客户端:
解压缩后,运行安装程序即可安装:

在这里插入图片描述

安装完成后,在安装目录下找到rdm.exe文件:

在这里插入图片描述

双击即可运行:

在这里插入图片描述

1.4.4.建立连接

点击左上角的连接到Redis服务器按钮:

在这里插入图片描述

在弹出的窗口中填写Redis服务信息:

在这里插入图片描述

点击确定后,在左侧菜单会出现这个链接:

在这里插入图片描述

点击即可建立连接了。

在这里插入图片描述

Redis默认有16个仓库,编号从0至15. 通过配置文件可以设置仓库数量,但是不超过16,并且不能自定义仓库名称。

如果是基于redis-cli连接Redis服务,可以通过select命令来选择数据库:

# 选择 0号库
select 0

2.Redis常见命令

Redis是典型的key-value数据库,key一般是字符串,而value包含很多不同的数据类型:

在这里插入图片描述

Redis为了方便我们学习,将操作不同数据类型的命令也做了分组,在官网( https://redis.io/commands )可以查看到不同的命令:

在这里插入图片描述

不同类型的命令称为一个group,我们也可以通过help命令来查看各种不同group的命令:

在这里插入图片描述

接下来,我们就学习常见的五种基本数据类型的相关命令。

2.1.Redis通用命令

通用指令是部分数据类型的,都可以使用的指令,常见的有:

  • KEYS:查看符合模板的所有key
  • DEL:删除一个指定的key
  • EXISTS:判断key是否存在
  • EXPIRE:给一个key设置有效期,有效期到期时该key会被自动删除
  • TTL:查看一个KEY的剩余有效期

通过help [command] 可以查看一个命令的具体用法,例如:

# 查看keys命令的帮助信息:
127.0.0.1:6379> help keysKEYS pattern
summary: Find all keys matching the given pattern
since: 1.0.0
group: generic

2.2.String类型

String类型,也就是字符串类型,是Redis中最简单的存储类型。

其value是字符串,不过根据字符串的格式不同,又可以分为3类:

  • string:普通字符串
  • int:整数类型,可以做自增、自减操作
  • float:浮点类型,可以做自增、自减操作

不管是哪种格式,底层都是字节数组形式存储,只不过是编码方式不同。字符串类型的最大空间不能超过512m.

在这里插入图片描述

2.2.1.String的常见命令

String的常见命令有:

  • SET:添加或者修改已经存在的一个String类型的键值对
  • GET:根据key获取String类型的value
  • MSET:批量添加多个String类型的键值对
  • MGET:根据多个key获取多个String类型的value
  • INCR:让一个整型的key自增1
  • INCRBY:让一个整型的key自增并指定步长,例如:incrby num 2 让num值自增2
  • INCRBYFLOAT:让一个浮点类型的数字自增并指定步长
  • SETNX:添加一个String类型的键值对,前提是这个key不存在,否则不执行
  • SETEX:添加一个String类型的键值对,并且指定有效期

2.2.2.Key结构

Redis没有类似MySQL中的Table的概念,我们该如何区分不同类型的key呢?

例如,需要存储用户、商品信息到redis,有一个用户id是1,有一个商品id恰好也是1,此时如果使用id作为key,那就会冲突了,该怎么办?

我们可以通过给key添加前缀加以区分,不过这个前缀不是随便加的,有一定的规范:

Redis的key允许有多个单词形成层级结构,多个单词之间用’:'隔开,格式如下:

	项目名:业务名:类型:id

这个格式并非固定,也可以根据自己的需求来删除或添加词条。这样以来,我们就可以把不同类型的数据区分开了。从而避免了key的冲突问题。

例如我们的项目名称叫 heima,有user和product两种不同类型的数据,我们可以这样定义key:

  • user相关的key:heima:user:1

  • product相关的key:heima:product:1

如果Value是一个Java对象,例如一个User对象,则可以将对象序列化为JSON字符串后存储:

KEYVALUE
heima:user:1{“id”:1, “name”: “Jack”, “age”: 21}
heima:product:1{“id”:1, “name”: “小米11”, “price”: 4999}

并且,在Redis的桌面客户端中,还会以相同前缀作为层级结构,让数据看起来层次分明,关系清晰:

在这里插入图片描述

2.3.Hash类型

Hash类型,也叫散列,其value是一个无序字典,类似于Java中的HashMap结构。

String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便:

在这里插入图片描述

Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD:

在这里插入图片描述

Hash的常见命令有:

  • HSET key field value:添加或者修改hash类型key的field的值

  • HGET key field:获取一个hash类型key的field的值

  • HMSET:批量添加多个hash类型key的field的值

  • HMGET:批量获取多个hash类型key的field的值

  • HGETALL:获取一个hash类型的key中的所有的field和value

  • HKEYS:获取一个hash类型的key中的所有的field

  • HINCRBY:让一个hash类型key的字段值自增并指定步长

  • HSETNX:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行

2.4.List类型

Redis中的List类型与Java中的LinkedList类似,可以看做是一个双向链表结构。既可以支持正向检索和也可以支持反向检索。

特征也与LinkedList类似:

  • 有序
  • 元素可以重复
  • 插入和删除快
  • 查询速度一般

常用来存储一个有序数据,例如:朋友圈点赞列表,评论列表等。

List的常见命令有:

  • LPUSH key element … :向列表左侧插入一个或多个元素
  • LPOP key:移除并返回列表左侧的第一个元素,没有则返回nil
  • RPUSH key element … :向列表右侧插入一个或多个元素
  • RPOP key:移除并返回列表右侧的第一个元素
  • LRANGE key star end:返回一段角标范围内的所有元素
  • BLPOP和BRPOP:与LPOP和RPOP类似,只不过在没有元素时等待指定时间,而不是直接返回nil

2.5.Set类型

Redis的Set结构与Java中的HashSet类似,可以看做是一个value为null的HashMap。因为也是一个hash表,因此具备与HashSet类似的特征:

  • 无序

  • 元素不可重复

  • 查找快

  • 支持交集、并集、差集等功能

Set的常见命令有:

  • SADD key member … :向set中添加一个或多个元素
  • SREM key member … : 移除set中的指定元素
  • SCARD key: 返回set中元素的个数
  • SISMEMBER key member:判断一个元素是否存在于set中
  • SMEMBERS:获取set中的所有元素
  • SINTER key1 key2 … :求key1与key2的交集

例如两个集合:s1和s2:

在这里插入图片描述

求交集:SINTER s1 s2

求s1与s2的不同:SDIFF s1 s2

在这里插入图片描述

练习:

  1. 将下列数据用Redis的Set集合来存储:
  • 张三的好友有:李四、王五、赵六
  • 李四的好友有:王五、麻子、二狗
  1. 利用Set的命令实现下列功能:
  • 计算张三的好友有几人
  • 计算张三和李四有哪些共同好友
  • 查询哪些人是张三的好友却不是李四的好友
  • 查询张三和李四的好友总共有哪些人
  • 判断李四是否是张三的好友
  • 判断张三是否是李四的好友
  • 将李四从张三的好友列表中移除

2.6.SortedSet类型

Redis的SortedSet是一个可排序的set集合,与Java中的TreeSet有些类似,但底层数据结构却差别很大。SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加 hash表。

SortedSet具备下列特性:

  • 可排序
  • 元素不重复
  • 查询速度快

因为SortedSet的可排序特性,经常被用来实现排行榜这样的功能。

SortedSet的常见命令有:

  • ZADD key score member:添加一个或多个元素到sorted set ,如果已经存在则更新其score值
  • ZREM key member:删除sorted set中的一个指定元素
  • ZSCORE key member : 获取sorted set中的指定元素的score值
  • ZRANK key member:获取sorted set 中的指定元素的排名
  • ZCARD key:获取sorted set中的元素个数
  • ZCOUNT key min max:统计score值在给定范围内的所有元素的个数
  • ZINCRBY key increment member:让sorted set中的指定元素自增,步长为指定的increment值
  • ZRANGE key min max:按照score排序后,获取指定排名范围内的元素
  • ZRANGEBYSCORE key min max:按照score排序后,获取指定score范围内的元素
  • ZDIFF、ZINTER、ZUNION:求差集、交集、并集

注意:所有的排名默认都是升序,如果要降序则在命令的Z后面添加REV即可,例如:

  • 升序获取sorted set 中的指定元素的排名:ZRANK key member

  • 降序获取sorted set 中的指定元素的排名:ZREVRANK key memeber

练习题:

将班级的下列学生得分存入Redis的SortedSet中:

Jack 85, Lucy 89, Rose 82, Tom 95, Jerry 78, Amy 92, Miles 76

并实现下列功能:

  • 删除Tom同学
  • 获取Amy同学的分数
  • 获取Rose同学的排名
  • 查询80分以下有几个学生
  • 给Amy同学加2分
  • 查出成绩前3名的同学
  • 查出成绩80分以下的所有同学

3.Redis的Java客户端

在Redis官网中提供了各种语言的客户端,地址:https://redis.io/docs/clients/

在这里插入图片描述

其中Java客户端也包含很多:

在这里插入图片描述

标记为*的就是推荐使用的java客户端,包括:

  • Jedis和Lettuce:这两个主要是提供了Redis命令对应的API,方便我们操作Redis,而SpringDataRedis又对这两种做了抽象和封装,因此我们后期会直接以SpringDataRedis来学习。
  • Redisson:是在Redis基础上实现了分布式的可伸缩的java数据结构,例如Map、Queue等,而且支持跨进程的同步机制:Lock、Semaphore等待,比较适合用来实现特殊的功能需求。

3.1.Jedis客户端

Jedis的官网地址: https://github.com/redis/jedis

3.1.1.快速入门

我们先来个快速入门:

1)引入依赖:

<!--jedis-->
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.0</version>
</dependency>
<!--单元测试-->
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.7.0</version><scope>test</scope>
</dependency>

2)建立连接

新建一个单元测试类,内容如下:

private Jedis jedis;@BeforeEach
void setUp() {// 1.建立连接// jedis = new Jedis("192.168.150.101", 6379);jedis = JedisConnectionFactory.getJedis();// 2.设置密码jedis.auth("123321");// 3.选择库jedis.select(0);
}

3)测试:

@Test
void testString() {// 存入数据String result = jedis.set("name", "虎哥");System.out.println("result = " + result);// 获取数据String name = jedis.get("name");System.out.println("name = " + name);
}@Test
void testHash() {// 插入hash数据jedis.hset("user:1", "name", "Jack");jedis.hset("user:1", "age", "21");// 获取Map<String, String> map = jedis.hgetAll("user:1");System.out.println(map);
}

4)释放资源

@AfterEach
void tearDown() {if (jedis != null) {jedis.close();}
}

3.1.2.连接池

Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,因此我们推荐大家使用Jedis连接池代替Jedis的直连方式。

package com.heima.jedis.util;import redis.clients.jedis.*;public class JedisConnectionFactory {private static JedisPool jedisPool;static {// 配置连接池JedisPoolConfig poolConfig = new JedisPoolConfig();poolConfig.setMaxTotal(8);poolConfig.setMaxIdle(8);poolConfig.setMinIdle(0);poolConfig.setMaxWaitMillis(1000);// 创建连接池对象,参数:连接池配置、服务端ip、服务端端口、超时时间、密码jedisPool = new JedisPool(poolConfig, "192.168.150.101", 6379, 1000, "123321");}public static Jedis getJedis(){return jedisPool.getResource();}
}

3.2.SpringDataRedis客户端

SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做SpringDataRedis,官网地址:https://spring.io/projects/spring-data-redis

  • 提供了对不同Redis客户端的整合(Lettuce和Jedis)
  • 提供了RedisTemplate统一API来操作Redis
  • 支持Redis的发布订阅模型
  • 支持Redis哨兵和Redis集群
  • 支持基于Lettuce的响应式编程
  • 支持基于JDK、JSON、字符串、Spring对象的数据序列化及反序列化
  • 支持基于Redis的JDKCollection实现

SpringDataRedis中提供了RedisTemplate工具类,其中封装了各种对Redis的操作。并且将不同数据类型的操作API封装到了不同的类型中:

在这里插入图片描述

3.2.1.快速入门

SpringBoot已经提供了对SpringDataRedis的支持,使用非常简单。

首先,新建一个maven项目,然后按照下面步骤执行:

1)引入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.7</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.heima</groupId><artifactId>redis-demo</artifactId><version>0.0.1-SNAPSHOT</version><name>redis-demo</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><!--redis依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!--common-pool--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></dependency><!--Jackson依赖--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

2)配置Redis

spring:redis:host: 192.168.150.101port: 6379password: 123321lettuce:pool:max-active: 8max-idle: 8min-idle: 0max-wait: 100ms

3)注入RedisTemplate

因为有了SpringBoot的自动装配,我们可以拿来就用:

@SpringBootTest
class RedisStringTests {@Autowiredprivate RedisTemplate redisTemplate;
}

4)编写测试

@SpringBootTest
class RedisStringTests {@Autowiredprivate RedisTemplate edisTemplate;@Testvoid testString() {// 写入一条String数据redisTemplate.opsForValue().set("name", "虎哥");// 获取string数据Object name = stringRedisTemplate.opsForValue().get("name");System.out.println("name = " + name);}
}

3.2.2.自定义序列化

RedisTemplate可以接收任意Object作为值写入Redis:

在这里插入图片描述

只不过写入前会把Object序列化为字节形式,默认是采用JDK序列化,得到的结果是这样的:

在这里插入图片描述

缺点:

  • 可读性差
  • 内存占用较大

我们可以自定义RedisTemplate的序列化方式,代码如下:

@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory){// 创建RedisTemplate对象RedisTemplate<String, Object> template = new RedisTemplate<>();// 设置连接工厂template.setConnectionFactory(connectionFactory);// 创建JSON序列化工具GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();// 设置Key的序列化template.setKeySerializer(RedisSerializer.string());template.setHashKeySerializer(RedisSerializer.string());// 设置Value的序列化template.setValueSerializer(jsonRedisSerializer);template.setHashValueSerializer(jsonRedisSerializer);// 返回return template;}
}

这里采用了JSON序列化来代替默认的JDK序列化方式。最终结果如图:

在这里插入图片描述

整体可读性有了很大提升,并且能将Java对象自动的序列化为JSON字符串,并且查询时能自动把JSON反序列化为Java对象。不过,其中记录了序列化时对应的class名称,目的是为了查询时实现自动反序列化。这会带来额外的内存开销。

3.2.3.StringRedisTemplate

为了节省内存空间,我们可以不使用JSON序列化器来处理value,而是统一使用String序列化器,要求只能存储String类型的key和value。当需要存储Java对象时,手动完成对象的序列化和反序列化。

在这里插入图片描述

因为存入和读取时的序列化及反序列化都是我们自己实现的,SpringDataRedis就不会将class信息写入Redis了。

这种用法比较普遍,因此SpringDataRedis就提供了RedisTemplate的子类:StringRedisTemplate,它的key和value的序列化方式默认就是String方式。

在这里插入图片描述

省去了我们自定义RedisTemplate的序列化方式的步骤,而是直接使用:

@Autowired
private StringRedisTemplate stringRedisTemplate;
// JSON序列化工具
private static final ObjectMapper mapper = new ObjectMapper();@Test
void testSaveUser() throws JsonProcessingException {// 创建对象User user = new User("虎哥", 21);// 手动序列化String json = mapper.writeValueAsString(user);// 写入数据stringRedisTemplate.opsForValue().set("user:200", json);// 获取数据String jsonUser = stringRedisTemplate.opsForValue().get("user:200");// 手动反序列化User user1 = mapper.readValue(jsonUser, User.class);System.out.println("user1 = " + user1);
}

JSON反序列化为Java对象。不过,其中记录了序列化时对应的class名称,目的是为了查询时实现自动反序列化。这会带来额外的内存开销。

如有不足,请多指教,
未完待续,持续更新!
大家一起进步!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4497120.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

用AVPlayer播放视频

控制assets的播放&#xff0c;你可以使用AVPlayer对象。在播放的过程中&#xff0c;你可以使用AVPlayerItem对象来管理asset的呈现&#xff0c;AVPlayerItemTrack来管理track。要显示视频&#xff0c;需要使用AVPlayerLayer。 播放Assets 一个播放器就是控制asset播放的对象&…...

跨系统调用接口方案--WebService

第一部分: 概述 webservice是一个 SOA&#xff08;面向服务的编程&#xff09;的架构&#xff0c;它是不依赖于语言&#xff0c;不依赖于平台&#xff0c;可以实现不同的语言间的相互调用&#xff0c;通过 Internet 进行基于 HTTP协议的网络应用间的交互。 WebService的几种…...

概率论中经典概率模型

温故知新 1.抽样模型 2.放回抽样模型 3.盒子模型 4.生日问题 5.会面问题 7. 蒲丰投针 8.配对问题 9.摸彩问题...

电力系统课程设计——潮流计算(C++调用matlab)

前言 写这个博客是为电力系统系统课设的潮流计算程序提供一种新的思路。 在做这个课设之前&#xff0c;我在网上查阅了很多潮流计算的程序&#xff0c;几乎全部是用 matlab完成的。这些程序基本都是自带系统各项参数的矩阵&#xff0c;没有输入&#xff0c;即使有输入也极为繁…...

计算机打印机设备管理器在哪里,打印机驱动在电脑哪里

① 如何在电脑上查看打印机的驱动位置1、首先鼠标右键抄单击计算机&#xff0c;选袭择打开“设备”选项。② 如何在电脑上找打印机驱动安装在那里左键点击“开始”——“设置”——“打印机”之后1、点击开始菜单&#xff0c;内选择控制面板。③ 怎么查打印机驱动文件在电脑里的…...

Loongson2f_龙芯逸珑8089A_扩容硬盘安装debian8(sd卡扩容)

2019年8月3日更新此文档&#xff0c;说明如下&#xff1a; 现在利用lvm来安装系统&#xff0c;增加sd卡来扩容&#xff0c;不再推荐&#xff0c;建议pata44针硬盘转接板扩容。 如果要安装debian7&#xff0c;8的系统&#xff0c;请到 www.anheng.com/loongson/install 去下载…...

QTextLine、QGlyphRun、QTextLayout

QGlyphRun 一、描述 此类提供对字体中内部字形的直接访问。在某些情况下&#xff0c;开发人员可以对特定字体中的字形绘制到屏幕上进行更低级的控制。 当Qt显示以Unicode编码的文本字符串时&#xff0c;它会将Unicode点转换为基于字体的字形索引列表和位置列表。QGlyphRun 提…...

JVM(尚硅谷)学习之垃圾回收相关算法

垃圾回收&#xff1a;标记阶段清除阶段 标记阶段&#xff1a; 引用计数算法&#xff1a;对每个对象保存一个整型的引用计数器属性由于引用计数算法无法处理循环引用的问题&#xff0c;所以Java的垃圾回收器中没有使用此类算法 在python语言中使用了引用计数算法。 可达性分析…...

服务器管理系统在哪里,服务器管理器在哪里 怎么打开服务器管理器

相信大家对服务器都不陌生&#xff0c;这是网站最为重要的设备之一。在管理服务器时&#xff0c;都需要使用服务器管理器。下面新网就给大家介绍服务器管理器在哪里&#xff0c;怎么打开服务器管理器。什么是服务管理器服务管理器是用于管理系统服务的管理工具。一般常用于wind…...

计算机管理系统在哪里,图文详解win10设备管理器在哪打开

小伙伴们&#xff0c;你们怎么win10中的设备管理器在哪吗?应该如何打开设备管理器呢?嘻嘻~不知道了吧&#xff0c;不知道的话&#xff0c;那么就随小编一块往下来看看win10下打开设备管理器的方法吧。win10系统自2015发布后&#xff0c;就有许多的用户都将自己电脑中的系统各…...

畅聊两小时后谈谈chatGPT体验感受

文章目录背景注册聊天实录基于自然语言的SQL翻译shell解析k8s回答其他类型我的问题为何这么接近人类的回答&#xff1f;回答是离线的吗&#xff1f;背景 最近几周不管是T还是微信公众号&#xff0c;大家都在疯玩这个东西。 我姑且将这个应用叫小C吧。我和小C愉快的聊了几个小…...

现代密码学常用符号总结

本文将总结现代密码学 (Modern Cryptography) 中的常见数学符号, 了解以下预备知识可以极大增加本文的阅读体验: 离散数学, 线性代数与概率论三门课程中的主要数学记号及其含义 ?现代密码学是一门什么样的学科 ?LaTeX\LaTeXLATE​X的基本用法与常见数学符号命令有哪些 ? 在…...

打开计算机管理的常用方法,电脑中的“计算机管理”界面打开方法大全

我们在打开电脑的时候&#xff0c;有些地方需要打开“计算机管理”界面设置电脑的一些属性。这时候就需要打开“计算机管理”界面才能进行设置。今天小编就来给大家介绍一下最全面的打开电脑中“计算机管理”界面的方法。“计算机管理”界面的所有打开方法方法一(最简单的方法)…...

ArcGIS模型构建器(ArcGIS)

从ArcGIS帮助中进一步熟悉模型构建器&#xff0c;总结帮助中的内容&#xff1a; 1.三种类型的模型元素&#xff1a; 1.工具&#xff1a;包括ArcGIS自带的工具&#xff0c;脚本工具和已经创建的模型工具&#xff0c;工具被加到模型中后就成为模型元素 2.变量&#xff1a;分为两…...

机器学习常见概率模型

机器学习常见概率模型概率模型Bernoulli 分布Multinoulli 分布高斯分布指数分布和Laplace 分布分布的混合概率模型 Bernoulli 分布 Bernoulli 分布&#xff08;Bernoulli distribution&#xff09;是单个二值随机变量的分布。它由单个参数ϕ 控制&#xff0c;ϕ 给出了随机变…...

mall4j的小程序商城(java)

真正的大师,永远都怀着一颗学徒的心&#xff01; 又是最常见的 商城系统啦 一、项目简介 今天推荐一款小程序商城&#xff0c;其实也有pc端的&#xff0c;好像pc端没有开源。基于javavueuniapp&#xff0c;有springBoot版和springCloud版本的&#xff0c;是由一家公司开源&am…...

scikit-learn构建模型

1、使用 sklearn处理wine和wine_quality数据集 &#xff08;1&#xff09;训练要点&#xff1a; 掌握sklearn转换器的用法掌握训练集、测试集划分的方法掌握使用sklearn进行PCA降维的方法 &#xff08;2&#xff09;需求说明&#xff1a; wine数据集和 wine_quality数据集是…...

结构化概率模型

机器学习的算法经常会涉及到在非常多的随机变量上的概率分布。通常&#xff0c;这些概率分布涉及到的直接相互作用都是介于非常少的变量之间的。使用单个函数来描述整个联合概率分布是非常低效的 (无论是计算上还是统计上)。 我们可以把概率分布分解成许多因子的乘积形式&…...

【知识小结】圆方树 广义圆方树

关于仙人掌的总结 immortalCO的博客 yyb的博客 模板 namespace T{vector <int> e[maxn * 2];int tag[maxn * 2];void adde(int x,int y){ //cout<<x<<" "<<y<<endl; e[x].PB(y) , e[y].PB(x); } } namespace G{node e[maxn * 2];…...

用python爬取公众号推送图片并保存为PPT

这里写目录标题一、前言二、开始&#xff08;一&#xff09;获取推送URL链接&#xff08;二&#xff09;爬取网页并提取图片保存1.定义用于爬取推送图片的PictureSpider类2.定义get_url_text()方法3.定义search_pictures()方法4.定义download_pictues()方法5.定义save_picture(…...

MySQL数据库基本操作-DDL

目录 &#x1f43e;DDL解释 &#x1f490;对数据库的常用操作 &#x1f338;创建表格式 &#x1f340;日期和时间类型 &#x1f339;字符串类型 &#x1f33b;表的基本操作 &#x1f33a;修改表添加列 &#x1f341;修改列名和类型 &#x1f343;修改表删除列 &#…...

VxRail升级软件/固件版本

1.计划将VxRail版本由7.0.101升级至7.0.132 2.查看当前VxRail已经安装的组件版本 3.上传软件包并升级 4.运行升级前预检PRE-CHECK 5.升级预检成功并关闭预检 6.正式升级 7.升级过程中vCenter连接会中断&#xff0c;因为vCenter Server也要升级。 8.升级成功...

插值器和估值器概述与使用

涉及到动画&#xff0c;有很多东西是绕不开的&#xff0c;比如前面说的Matrix&#xff0c;当然还有今天要说的插值器和估值器 1、插值器 说到插值器你可能会感觉陌生&#xff0c;但是如果我告诉你Interpolator&#xff0c;你一定不会陌生&#xff0c;不管是普通的ViewAnimati…...

resin配置文件

resin.conf配置详解<!-- - Resin 3.1 配置文件.--> <resin xmlns"http://caucho.com/ns/resin" xmlns:resin"http://caucho.com/ns/resin/core"><!-- 加载resin/lib下的所有.jar文件--><class-loader>…...

suse linux图形界面服务器,SUSE Linux设置图形界面

运行环境&#xff1a;cat /etc/issueSuse Linux Enterprise Desktop 10 ( i586 )概念介绍&#xff1a;在介绍如何操作之前明确几个概念&#xff1a;桌面集成环境&#xff0c;如&#xff1a;kde,gnome,xface;其实就是一堆X的应用程序的集成。显示管理器DM&#xff0c;如&#xf…...

论文阅读You Only Hypothesize Once: Point Cloud Registration with Rotation-equivariant Descriptors

来源&#xff1a;武汉大学 期刊&#xff1a;未知 摘要&#xff1a; 在本文中&#xff0c;我们提出了一种新的基于局部描述符的框架&#xff0c;称为你只假设一次(YOHO)&#xff0c;用于两个未对齐的点云的配准。与现有的局部描述子依赖脆弱的局部参考框架获得旋转不变性不同&am…...

C++:GCC编译:GCC编译C++程序分步流程

C或者C程序从源代码生成可执行程序的过程&#xff0c;需要经历4个过程分别是&#xff1a;预处理&#xff0c;编译&#xff0c;汇编&#xff0c;链接。但考虑实际使用过程中&#xff0c;用户可能并不关心程序的执行结果&#xff0c;只是想快速得到最终的可执行程序&#xff0c;因…...

洛谷P1664 每日打卡心情好

题目链接 题目背景 在洛谷中&#xff0c;打卡不只是一个简单的鼠标点击动作&#xff0c;通过每天在洛谷打卡&#xff0c;可以清晰地记录下自己在洛谷学习的足迹。通过每天打卡&#xff0c;来不断地暗示自己&#xff1a;我又在洛谷学习了一天&#xff0c;进而帮助自己培养恒心、…...

Java方法重载中返回值的问题

不能通过设置不同的返回值来实现方法重载&#xff0c;这样设置的方法不一定会编译通过&#xff0c;但Class文件中可以共存。 如下 1. 例证 IDEA工具,JDK8测试&#xff1a; 2. 原因 参考自《深入理解Java虚拟机》(第3版)&#xff0c;如图 在Java语言中&#xff0c;要重载&…...

关系模型中的三类完整性约束:实体完整性、参照完整性和用户定义完整性

数据完整性 要想了解这三类完整性约束首先要了解什么是数据完整性。数据完整性是指数据库中存储的数据是有意义的或正确的&#xff0c;和现实世界相符。关系模型中三类完整性约束&#xff1a; – 实体完整性&#xff08;Entity Integrity&#xff09; – 参照完整性&#xff0…...

结构化 VS 非结构化

如果说结构化信息更多的忠实、详实地记录了企业的生产交易活动&#xff0c;是显性的表示&#xff0c;那么 非结构化信息则隐性包含了掌握着企业命脉的关键&#xff0c;隐含着许多提高企业效益的机会。 非结构化数据 非结构化数据库是指其字段长度可变&#xff0c;并且每个字段…...

tesseract-ocr 使用简介

光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描&#xff0c;然后对图像文件进行分析处理&#xff0c;获取文字及版面信息的过程。OCR技术非常专业&#xff0c;一般多是印刷、打印行业的从业人员使用&#xff0c;可以快速的将纸质资料转换为电子资料。…...

python贪吃蛇设计目标_基于 pygame 设计贪吃蛇游戏

基于 pygame 设计贪吃蛇游戏贪吃蛇游戏通过玩家控制蛇移动&#xff0c;不断吃到食物增长&#xff0c;直到碰到蛇身或边界游戏结束。其运行效果如下所示&#xff1a;游戏开始时&#xff0c;先导入可能需要用到的包。import timeimport randomimport pygamefrom pygame.locals im…...

物联网课设1-基于ZigBee智能照明系统

前言&#xff1a; 大四上学期的一门课程设计&#xff0c;主要用到CC2530单片机、WiFi模块&#xff1a;ESP826607、光照强度传感器&#xff1a;BH1750、步进电机等… 现分享给大家&#xff0c;希望对大家有所帮助。 实现功能&#xff1a; 数据采集&#xff1a; 采集光照强度…...

Deep drug-target binding affinity prediction with multiple attention blocks论文解读(二)2021SC@SDUSC

2021SCSDUSC 数据集 然后是对基准数据集的介绍&#xff0c;KIBA和DAVIS 使用CI和r2m度量标准来衡量所提出的模型和基准模型的性能。 对于Davis和KIBA数据集中蛋白质和药物的输入&#xff0c;我们采用了DeepDTA方法&#xff0c;通过字典将药物和蛋白质序列的smile数字化到一…...

Java方法及方法的重载

本文内容是狂神说Java视频总结而来。 方法初探&#xff1a; Java方法是语句的集合&#xff0c;将语句集合在一起去执行一个功能 1、方法是解决一类问题的步骤的有序组合&#xff1b; 2、方法包含与类或对象中&#xff1b; 3、方法在程序中被创建&#xff0c;在其他地方被引用…...

java 方法重载 应用举例,Java中的方法重载应用

一 方法重载介绍如果一个类中包含了两个或两个以个以上的方法名相同&#xff0c;但形参列表不同&#xff0c;则称为方法重载。二 方法重载应用1 代码示例public class Overload{// 下面定义了两个test()方法&#xff0c;但方法的形参列表不同// 系统可以区分这两个方法&#xf…...

dos下\与/有什么区别

如果不算其它如标点符号等等用途的话&#xff0c;仅就在DOS命令中而言&#xff0c;“\”符号是用在路径中&#xff0c;表示在什么目录下&#xff0c;如“C&#xff1a;\”就表示在C盘的根目录下&#xff0c;“C&#xff1a;\Windows\”则表示在C盘的Windows目录下。 而“/”是…...

Stata:何时使用线性概率模型而非Logit?

原文链接&#xff1a;https://www.lianxh.cn/news/7a44186e16de7.html 编译&#xff1a;张雪娇 (中山大学) 来源&#xff1a; 连享会&#xff1a;Logit\Probit 推文系列 Stata: Logit 模型简介Stata: 何时使用线性概率模型而非Logit&#xff1f;Stata: 为何使用 Logit 模型&…...

【MySQL】数据库基本操作、表的操作

一、数据库1、什么是数据库2、数据库基本操作2.1、显示数据库2.2、 创建数据库2.3、选中数据库2.4、删除数据库3、数据库分类4、MySQL 安装二、数据表的使用1、 常用数据类型1.1、数值类型1.2、字符串类型1.3、日期类型2 、表的操作2.1、创建表2.2、查看表2.3、查看表结构2.4、…...

【20221208】【排序专题】

一、冒泡排序&#xff08;稳定排序&#xff09; 思想&#xff1a;冒泡排序的思想就是比较当前数和后一个数的大小&#xff0c;将较大的数往后移动&#xff0c;这样可以确保一轮下来能将最大的数放在数组的最末端。然后重复此操作即可完成排序。 上面第一轮比较完&#xff0c;我…...

jQuery介绍、jQuery引入

1、jQuery介绍 jQuery是一个前端库&#xff0c;也是一个方法库&#xff1b;它里面封装着很多操作DOM的方法供我们使用&#xff1b;我们常用的一些方法它里面都有&#xff0c;我们可以直接拿来使用就行了&#xff1b;jQuery之所以好用&#xff0c;很多人愿意使用&#xff0c;是…...

短信测压iapp源码

本源码自带接口放心使用&#xff0c;禁止用于违法途径 源码...

perl动态监测文件并模拟http post提交

perl中有种格式叫散列。因为我的文件名和文件路径是动态生成的。所以需要用散列。用字符串变量是不行的。 首先我检测我某个目录下面的所有文件。然后放到散列里面去。 my $dir "C:/SmartPrinter";opendir DH, $dir or die "Cannot open $dir: $!"; my …...

概率图模型(05): 揭示局部概率模型, 稀疏化网络表示(Structured-CPDs)

局部概率模型(Structured-CPDs)——揭示局部概率结构, 稀疏化网络表示 本博客中 PGM 系列笔记以 Stanford 教授 Daphne Koller 的公开课 Probabilistic Graphical Model 为主线,并参阅 Koller 著作及其 翻译版对笔记加以补充。博文的章节编号与课程视频编号一致。 博文持…...

用C语言实现LDPC的快速编码

#include <mex.h> #include <matrix.h> //for Matlab mx and mex fuctions #include <math.h> // 0 0 1 2 //[u]ldpcqenc(h1j,s,cols) void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray*pr...

计算机的磁盘管理在哪,磁盘管理器在哪

其实这个很简单就能找到&#xff0c;关键知道了如何使用的问题&#xff0c;下面就针对这个工具进行一下简单普及教育。磁盘管理器(Disk Administrator)用于准备和管理系统上的磁盘。如何找到“磁盘管理器”&#xff1f;右击“我的电脑”一“管理”&#xff0c;打开“计算机管理…...

AppSpider:Xposed+JustTrustMe关闭SSL证书验证

软件安装 Xposed: 一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务&#xff0c;基于它可以制作出许多功能强大的模块&#xff0c;且在功能不冲突的情况下同时运作。JustTrustMe&#xff1a; Github上的一个开源工程&#xff0c;他是一个Xposed模块&#xff0c;用…...

【Python】实训6:基于wine和wine_quality数据集练习sklearn构建模型方法(预处理、聚类、分类、回归)

题目来源&#xff1a; 《Python数据分析与应用》第6章 使用 scikit-learn 构建模型 实训部分 【 黄红梅、张良均主编 中国工信出版集团和人民邮电出版社】 本博客题目文字主要来自&#xff1a; 印象笔记OCR文字识别转换&#xff08;敲题目是不可能去敲题目的&#xff09; 【OC…...

机器学习——概率模型

概述——用一类图来表达变量相关关系的概率模型&#xff08;概率模型将学习任务归结于计算变量的概率分布&#xff09; P(A|B)P(A,B)/P(B)——根据联合概率 P(A,B)推断 P(A|B)的过程 具体说&#xff1a;假定所关心的变量集合为 Y&#xff0c;可观测变量集合为 O&#xff0c;…...

OKR如何用于「远程办公」?

如果你们打算或已经开始在家办公&#xff0c;OKR 将成为员工实现自驱、提升效率的得力帮手。1、如何管理在家办公的员工&#xff1f; 核心在于“形成清晰的目标管理体系”&#xff0c;从公司目标、部门目标、到个人目标&#xff0c;上下公开透明一目了然&#xff0c;每个人可以…...

linux开发板 系统烧写,嵌入式笔记 - 向开发板中烧写Linux系统-型号S3C6410

终于拿到板子了, 嵌入式开发正式开启.板子型号 : 三星 S3C6410 基于ARM11, 指令集基于arm6指令集;为毛不是 Cortext A9的板子;烧写内容 : BootLoader,Linux Kernel, File System;烧写流程 :-- sd卡烧写u-boot并启动 : 首先将 u-boot 烧写到 sd 卡中, 使用 sd 卡的bootloader启动…...

python填充三角形颜色_python的pillow用ImageDraw.Draw.polygon如何填充半透明的颜色

展开全部>> fill (200, 10, 10, 0.5)对于RGBA模式的图片&#xff0c;填充半透明色&#xff0c;alpha位置取值是0-255&#xff0c;你希望e5a48de588b6323131333532363134313032313635333133333533303350%&#xff0c;应该是用128&#xff0c;不是0。5>> 我这里画了…...

python的plotly_Python使用plotly绘制数据图表的方法

本篇文章主要介绍了Python使用plotly绘制数据图表的方法&#xff0c;实例分析了plotly绘制的技巧。导语&#xff1a;使用 python-plotly 模块来进行压测数据的绘制&#xff0c;并且生成静态 html 页面结果展示。不少小伙伴在开发过程中都有对模块进行压测的经历&#xff0c;压测…...

emWin BATTON控件透明化

大体思路是通过更改按钮皮肤属性的方式实现来实现BATTON控件的透明化。先了解一下官方手册中的相关信息&#xff1a; 我们只需将所有的颜色改为透明即可实现控件的全透明化&#xff0c;因此我们需要打开Alpha混合功能&#xff0c;所用函数为&#xff1a; GUI_EnableAlpha(1);此…...

Java项目(三)-- SSM开发社交网站(6)--Kaptcha验证码的配置与使用

会员注册与登录 Kaptcha验证码的配置与使用 Kaptcha验证码组件 Kaptcha是谷歌开源的可高度配置的实用验证码生成工具。 通过Kaptcha可阻拦大多数机器人脚本操作 Kaptcha典型应用于注册、登录、重要信息提交等用户交互。 Kaptcha使用步骤 Kaptcha配置验证码生成参数。 开发Kap…...

前端面试真题宝典(二)

Promise then 第二个参数和catch的区别是什么? 如果是 Promise 内部报错&#xff0c;reject 抛出错误后&#xff0c;由于就近原则&#xff0c;then 的第二个参数会先捕获到异常&#xff0c;catch 则无法获取异常。但如果是 then 的第一个参数抛出错误&#xff0c;then 的第二…...

VxRack与VxRail遭受Power的“全面入侵”

EMC公司的VxRail与VxRack超融合型基础设施系统正在批量接纳戴尔的PowerEdge服务器。 这意味着新的VxRail系统将迎来Broadwell至强处理器&#xff0c;进而具备&#xff1a; 250倍配置空间;同价位下40%的CPU性能增量;全新三节点配置下25%的起步价格削减;全闪存节点存储容量提升至…...

pytorch模型构建

本文旨在记录自己学习pytorch所构建的第一个模型&#xff0c;后续将会写有关自然语言处理的相关分享&#xff0c;帮助其他和我一样深度学习领域的小白理解这项技术。 首先&#xff0c;我们学习深度学习不同与其他python扩展内容&#xff0c;深度学习所涉及到的一些专业知识需要…...

Java中的方法的重载

什么是方法重载&#xff1f; Java中的方法重载&#xff0c;在一个类中&#xff0c;可以存在多个方法名相同的方法&#xff0c;但是参数列表不同。同一个类中定义的多个方法之间的关系&#xff0c;满足下列的多个方法互相构成重载&#xff1a; 1.多个方法在同一个类中。 2.多个…...

程序员广交四海朋友群

群一&#xff1a;71923869 群二&#xff1a;85907325 程序员俱乐部&#xff0c;是由程序员自发组织的、非营利性质的、民间组织&#xff0c;旨在为周边地区广大程序员、编程爱好者和高校计算机爱好者提供一个融洽而稳定的结交朋友、交流技术、增进友谊的平台&#xff0c;通过…...

程序员长见识需要关注的牛人

史中 公众号「浅黑科技」创始人&#xff0c;主笔。微信shizhongmini 史中写过 《14亿人的战争&#xff1a;中国人用了30年望见计算力的珠峰》 技术交流 QQ:3365059189 SwiftUI技术交流QQ群:518696470 请关注我的专栏 SwiftUI教程与源码...

8个程序员专用软件/网站,个个是神器,第一个最惊喜......

微信又改版了&#xff0c;为了方便第一时间看到我们的推送&#xff0c;请按照下列操作&#xff0c;设置“置顶”&#xff1a;点击上方蓝色字体“程序员之家”-点击右上角“…”-点击“设为星标”。可以啦&#xff0c;让我们继续相互陪伴。节省时间的方法有俩&#xff0c;一个是…...

1024程序员节,向改变世界的程序员致敬

前个言 正值1024程序员节日来临之际&#xff0c;今天心血来潮&#xff0c;想写篇文章来为我们这些猿猿致敬&#xff0c;也算了却一个心愿&#xff0c;让我们这些猿猿们以自己从事的职业为豪为荣。 可能我们的着装遭人吐槽&#xff0c;可能我们的玩笑经常别人听不出笑点&#xf…...

因融资失败,应用崩溃,3名程序员被“祭天”!

来自&#xff1a;CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;整理&#xff1a;郑丽媛对许多刚毕业不久的人来说&#xff0c;积累工作经验想必是找工作的重要目的之一。为此&#xff0c;即便大多数人对当前的工作并不满意&#xff0c;但为了之后应聘更好的工作时能有更…...

程序员应该常去的网站

技术社区类&#xff1a; CSDN &#xff1a; http://www.csdn.net/ PUDN&#xff1a;http://www.pudn.com/ OpenSource&#xff1a;http://www.open-open.com/ ChinaUnix&#xff1a;http://www.chinaunix.net/ 博客园&#xff1a;http://www.cnblogs.com/ IT公司面试手册…...

犹豫许久还是在 CSDN(程序员之家) 开通了自己的第一个博客

犹豫许久还是在 CSDN&#xff08;程序员之家&#xff09; 开通了自己的第一个博客 不知道为啥&#xff0c;我一直对博客反感。 第一篇就到这里写多了烦...

Java基础——程序员之家七月份Java基础总结

月末了&#xff0c;小编整理了一下文章&#xff0c;把七月份比较精彩&#xff0c;受欢迎的文章汇总起来&#xff0c;其实对于Java&#xff0c;小编认为基础非常重要&#xff0c;基础打得坚固对于以后的提高很有帮助。废话不多说&#xff0c;下面小编出招了…… 如果你是java新…...

我的“程序员之家”

http://www.sunxin.org/forum/thread/13525.html...

CSDN第一次来。听说是程序员之家啊。所以注册个帐号

请大家多多帮助。 小弟在些感谢...

台湾dotnet程序员之家

http://www.dotblogs.com.tw/转载于:https://www.cnblogs.com/fx2008/archive/2012/05/03/2480078.html...

python上传文件到onedrive_python-onedrive使用教程【linux备份至onedrive】 | C/C++程序员之家...

python-onedrive使用教程&#xff0c;linux备份至onedrive&#xff0c;linux和onedrive。python-onedrive使用了oauth2.0验证协议&#xff0c;所以比较复杂&#xff0c;获取到code(token)以后才能进行正常操作&#xff0c;教程记录。类似文章&#xff1a;新浪微博OAUTH2授权流程…...

致程序员之家论坛的所有会员

首先我代表各位版主欢迎大家来到程序员之家&#xff01;我们希望大家能够在这儿互相学习、交友&#xff0c;初学者能够迅速成长为软件开发工程师&#xff0c;高手也能获得长足的进步。为此&#xff0c;在这儿我给新人提一些建议。 一、编程的学习 我们在学习编程语言的时候&a…...

c语言程序 管理员,ShellExecuteEX(获取管理员权限) | C/C++程序员之家

ShellExecuteEx取得管理员权限,ShellExecuteEx取得管理员权限[cpp]void GainAdminPrivileges(UINT idd, BOOL bWait){CString strCmd;CString strApp;strCmd.Format (_T("/adminoption %d"), idd);CSVPToolBox svpTool;strApp svpTool.GetPlayerPath();SHELLEXECUTE…...

c++ sleep函数 linux,sleep()函数 | C/C++程序员之家

简介&#xff1a;函数名: sleep功 能: 执行挂起一段时间用 法: unsigned sleep(unsigned milliseconds);在VC中使用带上头文件#include 在gcc编译器中&#xff0c;使用的头文件因gcc版本的不同而不同#include 注意&#xff1a;在VC中Sleep中的第一个英文字符为大写的"S&qu…...

c+++怎样安装mysql,yum安装mysql | C/C++程序员之家

一、yum安装mysql1、查看有没有安装过&#xff1a;yum list installed mysql*rpm -qa | grep mysql*2、查看有没有安装包&#xff1a;yum list mysql*3、安装mysql客户端&#xff1a;yum install mysql4、安装mysql 服务器端&#xff1a;yum install mysql-serveryum install m…...

Java基础学习笔记(十六)—— IO流

IO流1 IO流1.1 IO流概述1.2 IO流的分类1.3 IO流的使用场景2 File类2.1 File类概述2.2 File类构造方法2.3 File类常用方法2.4 File类案例3 字节流3.1 字节流写数据3.2 字节流写数据的三种方式3.3 字节流写数据加异常处理3.4 字节流读数据3.5 字节流复制文件4 字节缓冲流4.1 字节…...

ithewei的2022年度总结

窗外的雨&#xff0c;顺着晒衣架汇聚成豆大的珠&#xff0c;落到一楼庭院顶棚上&#xff0c;嘀嗒不停&#xff1b; 路上的车&#xff0c;由远及近&#xff0c;又由近及远&#xff0c;疾驰而过&#xff1b; 床边的猫&#xff0c;也已入睡&#xff0c;时不时发出一两声细微的鼾声…...

Open3D 点云投影至指定平面(Python版本)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 假设给定的平面为 a x + b y + c z + 1 = 0 ax+by+cz+1=0...

实现类似天猫列表消息自动垂直滚动效果

一、先看效果 前段时间在交流群里看到有小伙伴在问一个消息滚动列表怎么做&#xff0c;正好最近在学校准备毕业答辩&#xff0c;公司请了两周假&#xff0c;忙里偷闲把这个效果实现了&#xff0c;整体感觉还是不错的&#xff0c;代码量也比较少&#xff0c;练练手的同时也给小伙…...

树莓派3B+ Buster 和 Docker 安装 mopidy 播放器,蓝牙连接天猫精灵实现百度 TTS

文章目录前言环境及目的连接蓝牙步骤阶段成果安装 Mopidy 之一般方式配置创建 Mopidy 服务安装 Mopidy 之 Add-On 方式&#xff08;只能从 3.5mm 或 HDMI 输出&#xff09;拉取镜像配置注册百度 TTS 应用HA 配置完工前言 一年前已经有大佬 airhog 实现了这个功能&#xff0c;若…...

面试题:阿里 天猫积分换魔盒

天猫双十一有个积分换墨盒的活动&#xff0c;总共有50万台天猫魔盒&#xff08;box&#xff09;&#xff0c;每个用户&#xff08;user&#xff09;可以用99个天猫积分&#xff08;point&#xff09;兑换一台魔盒&#xff0c;且每人限换一台。 请设计一套java接口并实现下单&am…...

AutoJs学习-天猫养猫活动

往期文章分享 点击跳转=>《导航贴》- Unity手册,系统实战学习点击跳转=>《导航贴》- Android手册,重温移动开发👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考…...

MySQL-基于docker实现Replication集群主从复制及读写分离

什么是MySQL集群 MySQL集群是一个无共享的(shared-nothing)、分布式节点架构的存储方案&#xff0c;其目的是提供容错性和高可用性能。 说的直白一点就是要做一件事&#xff0c;一个人做着非常吃力&#xff0c;没有那么多精力&#xff0c;所以需要多个人分工合作&#xff0c;最…...

华为称拥有超万项美国专利,知产政治化会摧毁创新

&#xff0c;华为今天发布了创新和知识产权白皮书&#xff0c;并呼吁勿将知识产权问题政治化。华为首席法务官宋柳平在深圳总部召开的新闻发布会上表示&#xff0c;知识产权是创新的基础&#xff0c;将知识产权问题政治化会威胁全球技术的进步。 宋柳平表示&#xff0c;“如果…...

《民主的细节》窥视美国民主+自我思索

《民主的细节》是清华大学教授刘瑜女士的专栏文章整理而出的书。 这本书不知道是我什么时候出于什么动机下载的&#xff0c;某一天当我想找本能看的下去的书读时&#xff0c;打开了这本书&#xff0c;而后就连续的看完了。 这本书通过一个个现实的例子来呈现美国政治、社会、…...

正视美国的科技竞争焦虑感

近几年不断有中国科技企业进入美国市场遭阻的消息传出。在大部分科技领域还领先于中国的情况下&#xff0c;美利坚昔日冷艳正化作今朝的焦灼不安&#xff0c;在它看来&#xff0c;中国开始正面挑战美国霸权的根源——科技优势。 借助于以科技为核心的一系列组合优势&#xff0c…...

美国盗版党(Pirate Party)

美国盗版党介绍 英文文本见&#xff1a;http://pirate-party.us/ 阮一峰 译 美国盗版党(The Pirate Party of the United States&#xff0c;PPUS)是模仿瑞典盗版党而建立的。后者的宗旨是"从根本上改革版权法&#xff0c;废除专利制度&#xff0c;确保公民的隐私权。&qu…...

美国大学课堂的契约精神(纽约时报中文网 )

【推荐原因】这篇文章是领导发给我们阅读的。的确体现了中美文化的差异&#xff0c;好好学习&#xff0c;赶快完善自己的syllabus。 四年半前我初来美国&#xff0c;时差还没倒过来便参加了所在的利伯缇大学(Liberty University)的教学培训&#xff0c;开学后将负责教授本科生人…...

全媒体时代下高校思想政治教育目标应坚持的原则

&#xff08;一&#xff09;高校思想政治教育目标应遵循社会进步和个人发展辩证统一的原则 “思想政治教育在各级各类学校都要摆在重要位置&#xff0c;任何时候都不能放松和削弱。思想政治素质是最重要的素质。不断增强学生和群众的爱国主义、集体主义、社会主义思想&#xff…...

上课笔记--台大政治学基础之美国选举制度与意识形态

//2015年1月29日 //大二下学期看的&#xff0c;结果到现在才有时间整理 //课程网站&#xff1a;http://ocw.aca.ntu.edu.tw/ntu-ocw/index.php/ocw/cou/101S111 //记得很零碎&#xff0c;只对看过课程对内容有印象的人有价值了罢 CT05V01 美国政治制度 1.众议员,435人&#xff…...

新库上线 | CnOpenData美国国家民主基金会捐赠数据

美国国家民主基金会捐赠数据 一、数据简介 国家民主基金会&#xff08;National Endowment for Democracy&#xff1b;简称&#xff1a;NED&#xff09;成立于1983年&#xff0c;由共和党人和民主党人共同创建&#xff0c;致力于发展和加强世界各地的民主制度。自1983年成立以…...

2022AP美国政府与政治考试内容北美卷考情分析

2022年5月2日进行的AP美国政府与政治考试已经结束。本场考试为线下纸笔考试&#xff0c;该考情分析涉及到的考卷为北美卷&#xff0c;由一位考生回忆而来&#xff0c;以供大家做难度参考。 考试整体评价 考试整体难度不是很大&#xff0c;起码比很多同学想象中要简单&#xff0…...

美国的工会制度——Google成立工会背后

最近&#xff0c;400名谷歌员工宣布组建工会&#xff0c;引起了广泛关注。组建工会并不是新鲜事&#xff0c;令人惊讶的是这个工会是由硅谷科技巨头谷歌的员工组建&#xff0c;而谷歌公司一直以来都提供了相当优渥的工资和舒适的工作环境。组建工会的决定是在谷歌员工和管理层的…...

一年的美国生活

转眼之间一年已经过去了。这一年很多事情冲击着我的小心脏。代码能力没有多少提升&#xff0c;反而认知得到了很多扩充。 我想从生活&#xff0c;学习和世界观的角度来讲一讲。并且今天和周老师聊了许多方面&#xff0c;将他的部分总结也汇总了进来。 生活方面&#xff1a; 出…...

英语记忆技巧

...

英语阅读理解技巧

...

英语六级听力技巧

英语六级听力技巧 1.视听一致 2.同义替换 3.长对话 4.短文听力 5.演讲 方法同短文听力...

教你文件名中文转英语并重命名的技巧

一些用电脑办公的工作中&#xff0c;都会有大量的文件 &#xff0c;我们都会遇到一个需求&#xff0c;就是要对一堆的文件进行重命名&#xff0c;一些人问&#xff0c;如何将文件的名称转换为英语重命名。大家不会英语的别急&#xff0c;这里就给大分享一个批量转换&#xff0c…...

软考英语部分答题技巧

英语答题技巧 1背单词只有熟悉了相关单词&#xff0c;不说我们能完全翻译句子&#xff0c;但至少我们能够知道这道题目考查的是什么&#xff0c;这样就算连蒙带猜&#xff0c;也能八九不离十。 如果有时间&#xff0c;拿个笔记本&#xff0c;把教材上的英文单词全部抄写一遍下…...

英文翻译技巧

英文翻译技巧 http://www.docin.com/p-35941698.html...

英语面试最实用的五大技巧

提起英语面试就会让一些小伙伴十分头疼&#xff0c;因为有些小伙伴英语基础不是太扎实&#xff0c;在中文面试的时候对答如流&#xff0c;但是在英语面试的时候会十分紧张&#xff0c;无法明确表达自己的想法&#xff0c;这在英语面试中是十分忌讳的。想要通过英语面试&#xf…...

用Python的内置包Tkinter写一个练习系统4.0

登录系统 生日系统 抽奖系统 抽奖系统1.0 抽奖系统2.0 抽奖系统3.0 练习系统 练习系统1.0 练习系统2.0 练习系统3.0 练习系统4.0 练习系统4.0 录入判断题 def insert(): numvar1.get() questionvar2.get() answervar3.get() …...

FPGA设计技巧总结

1.1 FPGA设计技巧总结 1.1.1 本节目录 1)本节目录; 2)本节引言; 3)FPGA简介; 4)FPGA设计技巧总结; 5)结束语。 1.1.2 本节引言 “不积跬步,无以至千里;不积小流,无以成江海。就是说:不积累一步半步的行程,就没有办法达到千里之远;不积累细小的流水,就没…...

计算机专业英语主要句型及翻译技巧,常见五种句型英语翻译技巧

“常见五种句型英语翻译技巧”相信是备考全国医学博士外语统一考试的朋友比较关注的事情&#xff0c;为此&#xff0c;医学教育网小编整理内容如下&#xff1a;1、复合句翻译技巧复合句翻译可分为部分翻译和完全翻译两种技巧。This university has newly established faculties…...

块级元素、行内元素、元素嵌套

HTML标签有两类&#xff1a;块级元素行内元素 &#xff08;1&#xff09;块级元素-默认总是在新行开始 div、h1~h6、blockquote、dl、dt、dd、form、hr、ol、p、pre、table、ul … 特点&#xff1a;总是在新行上开始&#xff0c;高度、行高以及顶和底边距都可控制&#xff0c;宽…...

【面试感悟】一名3年工作经验的程序员应该具备的技能

前几天还在群里聊到&#xff0c;博客园是很多老程序员的记忆&#xff0c;很当低调的牛人都在上面耕耘。今天作者五月的仓颉他16年3月份找工作后的面试感悟&#xff0c;作者是做JavaWeb开发。现在17年了&#xff0c;希望能给找工作的朋友一些指导。PS : Java虚拟机系列相关文章&…...

软件需求工程与UML建模第十周作业

项目名称 &#xff1a;网页过滤器 项目用户&#xff1a;一般网友 项目背景&#xff1a; 网友在冲浪时往往会遇到一些不文明的信息如涉黄图片 &#xff0c;不文明图片&#xff0c;广告文本等等&#xff0c;这些往往会给网友的浏览带来一些不好的影响。以及现在青少年网民数量日益…...

广告架构师

想寻求一个广告架构师&#xff1a; 1、参与大型分布式广告系统的架构设计和优化&#xff0c;支撑数十亿请求压力的高并发系统研发&#xff0c;支持秒级别实时索引系统的研发。 2、构建用户行为数据中心&#xff0c;挖掘上亿网民的行为数据。 3、对现有系统的不足进行分析&#…...

InfluxDB的查询优化

首先&#xff0c;在学习influxDB的查询优化之前&#xff0c;我们要先学习下InfluxDB的解释器profiler&#xff08;类似于mysql的Explain语句&#xff0c;不一样的是&#xff0c;sql&#xff0c;hivesql是提前查看执行计划等&#xff0c;Influx是在当前查询的最后一页两张表&…...

腐败团--新天然居筒骨火锅

地点&#xff1a;华林路省农行对面新天然居筒骨火锅 人员&#xff1a;腐败团成员&#xff08;老缺席的成员继续缺席&#xff09; 菜肴&#xff1a;筒骨锅底火锅配菜。 特色&#xff1a;骨头&#xff0c;还是骨头&#xff0c;一堆的骨头&#xff08;有图为证&#xff09;&#x…...

python//Jan.18th,2020//二分查找

def binary_search(list,item):low0highlen(list)-1while low<high:mid(lowhigh)//2guesslist[mid]if guess item:return midif guess>item:highmid-1else:lowmid1return None my_list[1,3,5,7,9] sbinary_search(my_list,5) print(s)#二分查找 def binary_search(list,i…...

c语言从txt读取回文诗,C语言编程题及参考答案.pdf

C 语言编程题精选 1.有函数 F(x)(x1) 2和 G(x)2x1&#xff0c;输入 X 值计算 F(G(x))的值。 2.任意输入三个字符&#xff0c;要求首先按逆序输出&#xff0c;然后同行原序输出。 3.在屏幕上输出如下图案(考虑能否将输出的行数由输入的值来控制) &#xff1a; ****** ****** ***…...

c语言从txt读取回文诗,40个C语言的基础编程题.doc

40个C语言的基础编程题.docC语言基础编程题【程序1】题目古典问题有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子&#xff0c;小兔子长到第三个月后每个月又生一对兔子&#xff0c;假如兔子都不死&#xff0c;问每个月的兔子总数为多少1.程序分析兔子的规律为数列…...

jzoj 回文数1

题目描述 古时候人们发明了有趣的回文对联&#xff0c;如&#xff1a; 斗鸡山上山鸡斗&#xff1b;龙隐洞中洞隐龙。 雾锁山头山锁雾&#xff1b;天连水尾水连天。 客上天然居&#xff1b;居然天上客。 心清可品茶&#xff1b;茶品可清心。 人过大佛寺&#xff1b;寺佛大过人。…...

HTML语言的规律,回文数的算式规律

什么叫回文数啊&#xff1f;一般简单的怎么计算啊&#xff1f;回文数是指一个像16461这样“对称”的数&#xff0c;即&#xff1a;将这个数的数字按相反的顺序重新排列后&#xff0c;所得到的数和原来的数一样。这里&#xff0c;“回文”是指像“妈妈爱我&#xff0c;我爱妈妈”…...

回文联对联大全_回文联

回文联以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;回文联回文联&#xff0c;它是我国对联修辞奇葩中的一朵。用回文形式写成的对联&#xff0c;既可顺读&#xff0c;也可倒读&#xff0c…...

linux shell 移位,Bash技巧:使用 shift 内置命令左移前几个命令参数

在 bash 中&#xff0c;可以使用位置参数(positional parameters)来获取传入脚本、或者传入函数的各个参数值。例如&#xff0c;$1 对应传入的第一个参数&#xff0c;$2 对应传入的第二个参数。依次类推。我们可以使用 shift 内置命令来重命名位置参数。例如&#xff0c;执行 s…...

JAVA例题

例题 //打印出所有的 "水仙花数"&#xff0c;所谓 "水仙花数 "是指一个三位数&#xff0c; //其各位数字立方和等于该数本身。例如&#xff1a;153是一个 "水仙花数 "&#xff0c; //因为1531的三次方&#xff0b;5的三次方&#xff0b;3的三次…...

Python -- 函数(def)与面向对象思维

一、定义函数&#xff1a; 1.我们可以把程序中相对独立的功能模块抽取出来2.这样做的好处一是减少重复代码的编写3.二是将来可以重复的使用这些功能模块4.Python中的函数就是代表了这样的功能模块1. 就以定义阶乘的函数而言&#xff0c;简洁明了&#xff0c;不需要重复的去写同…...

Airwallex 基于 Flink 打造实时风控系统

摘要&#xff1a;本文整理自 Airwallex Risk ML Platform Team 董大凡&#xff0c;在 Flink Forward Asia 2022 实时风控专场的分享。本篇内容主要分为五个部分&#xff1a; 背景介绍应对方案技术挑战与亮点可用性保证线上表现点击查看直播回放和演讲 PPT 一、背景介绍 Airwall…...

MySQL数据库知识整理

MySQL数据库知识整理 MySQL事务详解 事务四大特性ACID 原子性&#xff08;Atomicity&#xff09;&#xff1a;一个事务是一个不可分割的最小单元&#xff0c;该事务的所有操作要么全部提交&#xff0c;要么失败回滚&#xff0c;不能只执行其中的一部分。 原子性是通过undo l…...

Java基本数据类型与String的互相转换

1、基本类型转String 把一个基本数据类型转为String类型&#xff0c;有三种通用方式&#xff1a;&#xff08;以Integer i 为例&#xff09; i.toString()String.valueOf(i)i"" 其中&#xff1a;i.toString()效率最高&#xff0c;用的最多 2、String转基本数据类…...

无刷直流电机介绍及单片机控制实例

无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&#xff08;ESC&#xff09;Arduino BLDC电机控制电路图代码前言 在机器人的结构中&#xff0c;往往电机是必不可少的组成部分&#xff0c;例如地面智能车中的轮子驱动&…...

AlmaLinux构建LNMP

环境&#xff1a; 虚拟机&#xff1a;AlmaLinux9.1 hostname&#xff1a;localhost ip&#xff1a;192.168.123.228 #查看系统 cat /etc/redhat-release安装方式统一使用yum #查看yum版本 yum --versionyum4基于dnf技术&#xff0c;yum4命令提供了与早期版本中使用的Yum v3的…...

Three.js入门学习笔记09:Three.js对象拾取,鼠标点击对象响应事件

一.拾取对象概念 二.坐标转换 三.光线投射Raycaster 中文文档 http://www.webgl3d.cn/threejs/docs/#api/zh/core/Raycaster 英文文档 https://threejs.org/docs/index.html#api/en/core/Raycaster 官网例子 http://www.webgl3d.cn/threejs/examples/#webgl_interactive_cub…...

js-防抖和节流

核心要点 什么是防抖及实现方式&#xff1f;什么是节流及实现方式&#xff1f; 1、什么是防抖及实现方式&#xff1f; 防抖(debounce)&#xff1a;触发高频事件后 n 秒内函数只会执行一次&#xff0c;如果 n 秒内高频事件再次被触发&#xff0c;则重新计算时间 实现方式&…...

RK3568开发板屏幕调试常用的debug方法查看屏幕的显示状态

查看当前的屏幕的显示状态输入以下命令&#xff1a; cat /sys/kernel/debug/dri/0/summary 对上图中的打印&#xff0c;我们来解释一下&#xff1a;  以下的 vop 代表 mipi 屏幕使用的 vop 是 vop1&#xff0c;vop0 是没有被使用的。 Video Port0: DISABLED Video Port1:…...

MAC认证原理描述

MAC认证原理描述MAC认证简介MAC认证流程MAC认证简介 定义&#xff1a; MAC认证&#xff0c;即MAC地址认证&#xff0c;是一种基于接口和终端MAC地址对用户的访问权限进行控制的认证方法。 优点&#xff1a; 用户不需要安装任何客户端软件MAC认证过程中&#xff0c;不需要手动…...

一站式自动化测试工具——AI-TestOps

文章目录软件测试的重要性龙测科技是什么&#xff1f;核心优势平台使用软件测试的重要性 软件测试在整个软件生命周期里&#xff0c;具有十分关键的地位&#xff0c;学校只可以在运行与后期维护时期以前&#xff0c;软件调试瀑布模型&#xff0c;是一类常规的运行方式&#xf…...

MATLAB | 全网最详细网络图(图论图)绘制教程

一篇超超超长&#xff0c;超超超全面网络图绘制教程&#xff0c;本篇基本能讲清楚所有绘制要点&#xff0c;当然图论与网络优化的算法一篇不可能完全讲清楚&#xff0c;未来如果看的人多可以适当更新&#xff0c;同时做部分网络图绘图复刻。 以下是本篇绘图实验效果&#xff1…...

Flutter 小技巧之实现一个精美的动画相册效果

今天的小技巧主要是「抄袭」一个充满设计感的相册控件&#xff0c;如下图所示是 gskinner 开源应用 wonderous 里一个相片集的实现效果&#xff0c;可以看到相册支持上下左右滑动&#xff0c;并带有高亮展示的动画效果&#xff0c;而且相册整体布局可以超出屏幕滚动&#xff0c…...

小程序(十六)消息功能

文章目录一、数据库设计二、系统消息的发送与收取设计三、业务设计四、消息实体设计五、SpringBoot异步任务1、开启异步注解功能2、线程池创建3、异步任务——消息生产4、同步任务——消息消费&#xff08;写入MySQL&#xff09;一、数据库设计 很多人以为消息模块的数据表设计…...

C++之模板(上)

文章目录前言一、泛型编程二、模板1.函数模板1.函数模板概念2.函数模板格式3.函数模板原理4.函数模板的实例化1.隐式实例化2.显示实例化5.模板参数的匹配原则2.类模板1.类模板的定义格式2.类模板的实例化3.类模板和模板类的区别总结前言 本文介绍了C模板的基础概念&#xff0c…...

虚拟机装ftp, 简单版, 针对嵌入式开发者

以下是在Ubuntu上重新安装和配置FTP的简单步骤&#xff1a;打开终端并输入以下命令安装FTP服务器&#xff1a;sudo apt-get install vsftpd安装完成后&#xff0c;打开FTP服务器配置文件&#xff1a;sudo nano /etc/vsftpd.conf在打开的配置文件中&#xff0c;找到以下两行并将…...

数字孪生颠覆传统铝材挤压生产,全新生产方式即将到来!

随着市场经济的发展&#xff0c;各种新型的高科技建筑材料相继出现&#xff0c;所有的基础工程均需要大量的建筑&#xff0c;需要大量门窗和建筑材料&#xff0c;而铝及其铝合金在其中占有重要的地位。随着时代的进步&#xff0c;材料的应用也发生着变化。因铝合金型材具有强度…...

整合SpringCache

整合SpringCache 1、引入依赖cache还有redis <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId> </dependency>2、写配置 spring:cache:type: redis3、测试使用缓存 Cache…...

Azure OpenAI 官方指南03|DALL-E 的图像生成功能与安全过滤机制

2021年1月&#xff0c;OpenAI 推出 DALL-E。这是 GPT 模型在图像生成方面的人工智能应用。其名称来源于著名画家、艺术家萨尔瓦多 • 达利&#xff08;Dal&#xff09;和机器人总动员&#xff08;Wall-E&#xff09;。DALL-E 图像生成器&#xff0c;能够直接根据文本描述生成多…...

【Python_requests学习笔记(八)】基于requests模块 实现响应内容嵌入JS 进行url地址跳转 数据的爬取

基于requests模块构建免费代理IP池 前言 此篇文章中介绍基于requests模块&#xff0c;实现对在响应内容中嵌入JS&#xff0c;真实的url地址进行跳转后数据的爬取&#xff0c;并以爬取行政区划代码数据为例进行讲解。 正文 1、需求梳理 抓取民政部网站最新行政区划代码 一级…...

3D Slicer学习记录(6)-使用PLUSapp连接WebCam并实现marker跟踪

前记在上次的博客中已经演示了利用Intel realsense进行marker跟踪,如果没有intel realsense怎么办?其实在之前的博客中早就提到plusapp支持多种硬件设备,包括笔记本自带的相机,因此,如果没有双目相机,或许可以尝试笔记本自带的相机完成之前的任务,只不过在跟踪精度和mar…...

路径 Floyd 蓝桥杯 JAVA

题目描述&#xff1a; 小蓝学习了最短路径之后特别高兴&#xff0c;他定义了一个特别的图&#xff0c;希望找到图中的最短路径。 小蓝的图由2021 个结点组成&#xff0c;依次编号1 至2021。 对于两个不同的结点a, b&#xff0c;如果a 和b 的差的绝对值大于21&#xff0c;则两个…...

小迪安全day12WEB漏洞-SQL注入之简要SQL注入

小迪安全day12WEB漏洞-SQL注入之简要SQL注入 注入产生原理详细分析 可控变量带入数据库查询变量未存在过滤或过滤不严谨 连接符区分 and是sql语句连接符&#xff0c;&是uel参数连接符 and 11是注入语句&#xff0c; &是添加一个新变量 数据库内容 数据库A 网站…...

初级算法-哈希表

主要记录算法和数据结构学习笔记&#xff0c;新的一年更上一层楼&#xff01; 初级算法-哈希表一、有效的字母异位词二、两个数组的交集三、快乐数四、两数之和五、四数相加&#xff08;二&#xff09;六、赎金信七、三数之和八、四数之和哈希表 散列表有m个存储单元&#xf…...

什么是 LuaJIT?为什么 Apache APISIX 选择了 LuaJIT?

本文介绍了 LuaJIT 的高灵活性和高性能&#xff0c;以及 APISIX 作为云原生 API 网关选择 LuaJIT 的原因。 作者杨陶&#xff0c;API7.ai 技术工程师。 原文链接 什么是 LuaJIT 定义 简单地说&#xff0c;LuaJIT 是 Lua 这种编程语言的实时编译&#xff08;JIT&#xff0c;J…...

基于jsp+ssm+springboot的人职匹配推荐系统【设计+论文+源码】

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于人职匹配推荐系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了人职匹配推荐系统&#xff0c;它彻底改变了过…...

【Linux】简易Shell的实现

&#x1f923; 爆笑教程 &#x1f449; 《看表情包学Linux》&#x1f448; 猛戳订阅 &#x1f525; &#x1f4ad; 写在前面&#xff1a;本章是个 "插叙"&#xff0c;前几章我们学了程序替换&#xff0c;现在我们可以尝试动手做一个 "会创建&#xff0c;会终止…...

ccc-pytorch-宝可梦自定义数据集实战-加载数据部分(9)

文章目录第一步&#xff1a;构建路径与种类的映射关系第二步&#xff1a;载入所有的宝可梦图像第三步&#xff1a;打散顺序并通过路径名提取映射关系构建映射文件第四步&#xff1a;完善选取、获取图片信息功能并可视化第五步&#xff1a;对数据进行预处理第六步&#xff1a;批…...

【案例讲解】LVGL GIF开机动画和关机动画

更多源码分析请访问:LVGL 源码分析大全 目录 1、功能特性2、重点代码2.1、 覆盖其它图层2.2、 强制GIF只播放一次2.3、 任何页面中长按OK键跳出关机页面2.4、 完成时销毁自身3、参考源码1、功能特性 1、播放一次完整的GIF后就退出,退出时并销毁对象,以节省资源;2、图层能覆…...

腾讯云服务器带宽计费规则介绍

腾讯云服务器公网带宽计费模式按使用流量是怎么计算的&#xff1f;不按照带宽大小计费&#xff0c;按照实际云服务器公网出方向实际产生多少流量来收费&#xff0c;为了避免突发流量产生高额流量费&#xff0c;可以设置一个峰值带宽。 腾讯云服务器公网流量费计算的是出流量&a…...

主从高可用面试题大全

主从高可用面试题大全 目录 文档索引 面试题汇总 Q&#xff1a;注册中心是什么&#xff1f;为什么需要注册中心&#xff1f; Q&#xff1a;注册中心是如何实现的&#xff1f; Q&#xff1a;实例如何通过注册中心进行服务发现 Q&#xff1a;注册中心如何进行选型&#xff…...

C语言-程序环境和预处理(2)

文章目录预处理详解1.预定义符号2.#define2.1#define定义的标识符2.2#define定义宏2.3#define替换规则注意事项&#xff1a;2.4#和###的作用##的作用2.5带副作用的宏参数2.6宏和函数的对比宏的优势&#xff1a;宏的劣势&#xff1a;宏和函数的一个对比命名约定3.undef4.条件编译…...

抓包逆向神器Charles推荐,https接口了无秘密

业余时间想找个免费的智能AI接口用&#xff0c;体验了几款插件真不错&#xff0c;比如Bito插件和IDE神器Cursor&#xff0c;但不知道他们的后台接口。想着看看他们的接口&#xff0c;不用说肯定是https加密的。http包透明传输还好&#xff0c;但是大多数是https加密传输的&…...

什么品牌的蓝牙耳机适合学生党用?学生党高性价比国产蓝牙耳机推荐

最近看到很多网友问什么品牌的蓝牙耳机适合学生党用&#xff1f;现在的蓝牙耳机品牌越来越多&#xff0c;适合学生党用的蓝牙耳机品牌也不少。下面&#xff0c;我来给大家推荐几款适合学生党的国产高性价比蓝牙耳机&#xff0c;可以当个参考。 一、南卡小音舱蓝牙耳机 参考价…...

C语言指针链表

C语言指针链表是一种非常常见的数据结构&#xff0c;它可以用于在程序中存储和操作一系列相关数据&#xff0c;包括但不限于整数、字符串、结构体等类型。下面我们将介绍如何使用C语言指针链表&#xff0c;并提供一个可以执行的示例代码。 1. 定义链表结构体 链表是由若干个节…...

sh脚本中使用getopts解析的参数中含有空格的解决方法

一、getopts的问题 如下使用getopts时&#xff0c;当执行命令为 #sh test1.sh -s “A B C” 时&#xff0c; getopts只能解析到 -s A&#xff0c;空格后面的内容就没办法解析了,其实在使用$给fun_main函数传参的时候"A B C"就被分割成了三个参数了。 #!/bin/sh #t…...

关于测试,我发现了哪些新大陆

关于测试 平常也只是听说过一些关于测试的术语&#xff0c;但并没有使用过测试工具。偶然看到编程老师在课堂上使用龙测为我们展示了一波测试的相关操作&#xff0c;我发现了一些新大陆&#xff0c;这篇文章就记录一下有关测试的相关操作。 开启测试之旅 进入官网了解到 龙测…...

HTTP状态代码以及定义

在我们平常浏览网页时&#xff0c;也会发现一些文件不存在时显示为“404错误”&#xff0c;这就是常见的Http请求状态&#xff08;status&#xff09; Web服务器响应浏览器或其他客户程序的请求时&#xff0c;其应答一般由以下几个部分组成&#xff1a;一个状态行&#xff0c;…...

基于Springboot实现口腔牙诊所网站平台【源码+论文】

基于Springboot实现口腔牙诊所网站平台【源码论文】开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea M…...

SQLAlchemy查询不重复的数据

在SQLAlchemy中&#xff0c;如果你想查询不重复的数据&#xff0c;可以使用distinct()方法。以下是一个简单的示例&#xff1a; 首先&#xff0c;导入必要的库和对象&#xff1a; from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declar…...

Leetcode27—移除元素

27 移除元素 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中…...

vue3 组件篇 Message

文章目录组件介绍组件使用组件代码参数说明关于vue3-dxui组件库组件介绍 Message组件用以消息提示&#xff0c;用户在前端完成某些交互时&#xff0c;在页面弹出的某种反馈。该组件一共有四种类型&#xff0c;info、success、warning、error。与一般的组件不同&#xff0c;该组…...

Linux宝塔面板搭建Discuz论坛, 并公网远程访问【内网穿透】

文章目录前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛前言 Crossday Discuz! Board&#xff08;以下简称 Discuz!&#xff09;是一套通用的社区论坛软件系统&#xff0c;用户可以在不需要任何编程的基础上&…...

最长公共子序列 以及 输出公共最长子序列

最长公共子序列 以及 输出公共最长子序列题目描述 给两个字符串&#xff0c;输出最长公共子序列 例如 ABCBDAB BDCABA 那么输出结果就是 BCBC 思路&#xff1a; f[i][j] 表示 1-i 和 1-j 中对应字符串A 和 字符串B的角标中 已经算出的最长子序列长度 b[i][j] 表示 字符串A和B…...

【vue2】使用elementUI进行表单验证实操(附源码)

&#x1f973;博 主&#xff1a;初映CY的前说(前端领域) &#x1f31e;个人信条&#xff1a;想要变成得到&#xff0c;中间还有做到&#xff01; &#x1f918;本文核心&#xff1a;vue使用elementUI进行表单验证实操&#xff08;附源码&#xff09; 【前言】我们在构建一…...

药品批准文号查询|药融云-中国批准文号系统在线查询

药品批文是国家食品药品监督管理局&#xff08;NMPA&#xff09;对药品的审评和批准的证明文件&#xff0c;是药品合法上市的必要条件。药品批文包括国产药品批准文号和进口药品注册证号&#xff0c;每个批文都有唯一的编号和有效期限。那么&#xff0c;怎样查询中国药品批文呢…...

谁是猪头王

来自推理学院APP 规则&#xff1a; 示例&#xff1a; 每张牌上有猪头数量&#xff0c;红色虚线框里面有总数。 现在4位玩家数字公布&#xff0c;首先出2的先选一行清空并扣分&#xff0c;假如他选第2行1个猪头&#xff0c;则扣1分&#xff0c;局面变成&#xff1a; 5 …...

Mac配置jdk环境

打开终端获取java的安装路径在终端输入&#xff1a;/usr/libexec/java_home -V待会使用中间java se8的地址在配置文件中完善路径打开配置文件open -e .bash_profile 将以下模版粘贴到bash profile中去&#xff0c;并将我的jdk地址替换为上述java se8后面的地址后保存#JAVAJAVA_…...

【算法系列之回溯算法】leetcode46.全排列

90.子集II 力扣题目链接 给你一个整数数组 nums &#xff0c;其中可能包含重复元素&#xff0c;请你返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。返回的解集中&#xff0c;子集可以按 任意顺序 排列。 输入&#xff1a;nums [1,2,…...

Docker基础篇——最全讲解

文章目录一、CentOS安装docker二、启动帮助类命令三、镜像命令1.名词概念2.常用命令2.1 镜像命令2.2 容器命令2.2.1&#xff1a;常用参数2.2.2&#xff1a;常用指令2.3 安装单机mysql、redis一、CentOS安装docker docker官网 1&#xff09;yum安装gcc相关&#xff1a; yum -y…...

若依框架----源码分析(@RateLimiter)

若依作为最近非常火的脚手架&#xff0c;分析它的源码&#xff0c;不仅可以更好的使用它&#xff0c;在出错时及时定位&#xff0c;也可以在需要个性化功能时轻车熟路的修改它以满足我们自己的需求&#xff0c;同时也可以学习人家解决问题的思路&#xff0c;提升自己的技术水平…...

Qt+MySql开发笔记:Qt5.9.3的mingw32版本编译MySql8版本驱动并Demo连接数据库测试

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/129687210 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…...

java基础:JAVA中重写equals()方法的同时要重写hashcode()方法

一、public boolean equals(Object obj) 和 hashcode()方法是object对象中的方法。 二、equals与hashcode间的关系是这样的&#xff1a; 1、如果两个对象相同&#xff08;即用equals比较返回true&#xff09;&#xff0c;那么它们的hashCode值一定要相同&#xff1b; 2、如果…...

你掌握了吗?在PCB设计中,又快又准地放置元件

在印刷电路板设计中&#xff0c;设置电路板轮廓后&#xff0c;将零件(占地面积)调用到工作区。然后将零件重新放置到正确的位置&#xff0c;并在完成后进行接线。 组件放置是这项工作的第一步&#xff0c;对于之后的平滑布线工作是非常重要的工作。如果在接线工作期间模块不足…...

Uploadifive 批量文件上传

Uploadifive 批量文件上传_uploadifive 多个上传按钮_asing1elife的博客-CSDN博客 属性auto - Boolean - true当文件被添加到上传队列时&#xff0c;会自动上传buttonClass - String为上传按钮指定一个类选择器buttonText - String - SELECT FILES定义显示在按钮上的文本内容up…...

多美商城实战-01-引入REST Framework

1. 引入Django REST framework 在本章中,我们要大家介绍为什么学习Django REST framework,它能帮助我们做哪些事情。 课程思路: 我们从分析现在流行的前后端分离Web应用模式说起,然后介绍如何设计REST API,通过使用Django来实 现一个REST API为例,明确后端开发REST API要做…...

数字温湿度传感器DHT11模块资料

模块实例https://blog.csdn.net/qq_38393591/article/details/111269994 1.1产品概述 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术&#xff0c;确保产品具有极高的可靠性与卓越的长期稳定性。传感器…...

2023面试题汇总二

一、CSS面试题 1. 清除浮动的方式有哪些&#xff1f; 为什么要清除浮动&#xff1f;因为浮动的盒子脱离标准流&#xff0c;如果父盒子没有设置高度的话&#xff0c;下面的盒子就会撑上来。 额外标签法(在最后一个浮动标签后&#xff0c;新加一个标签&#xff0c;给其设置cle…...

孩子用什么样的灯对眼睛没有伤害呢?2023这样的灯光更护眼

现代社会高速发展&#xff0c;越来越多的人开始重视身体健康&#xff0c;尤其是很多家长&#xff0c;非常关心孩子的眼睛健康问题。现如今我们的青少年儿童近视率常年高居世界第一&#xff0c;情况不容乐观&#xff0c;这个与习惯、学习、照明环境等众多因素有关。 其中照明环境…...

GitHub的Repository权限将public转为private(转)

转自: GitHub的Repository权限将public转为private 2019年1月7日&#xff0c;GitHub CEO Nat Friedman 于官方博客公开发文&#xff0c;称“New year, new GitHub”&#xff0c;宣布从此将免费无限地为普通用户提供私有仓库服务。 因此&#xff0c;我们可以将之前创建的公开仓库…...

《钢琴调律原理及应用》 笔记

【第一章 绪论】 美国人威廉布雷德怀特于 1917 年发表了世界上第一部关于钢琴调律理论与技术的著作&#xff0c;书名为《钢琴调律与相关技术》 福岛琢郎于1950年发表一部名为《钢琴的构造调律修理》的专著 80年代初&#xff0c;在沈阳音院任教的张琨先生写出了我国第一部有关…...