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

徐州做汽车销售的公司网站/西安做网站哪家好

徐州做汽车销售的公司网站,西安做网站哪家好,网站建设需要什么插件,wordpress会员充值1 Redis是什么 官网:https://redis.io 开发者:Antirez Redis诞生于2009年全称是Remote Dictionary Server 远程词典服务器,是一个基于内存的键值型NoSQL数据库。 Redis是一个开源的、高性能的键值对存储系统,它支持多种数据结构&…

1 Redis是什么

官网:https://redis.io

开发者:Antirez

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

Redis是一个开源的、高性能的键值对存储系统,它支持多种数据结构,包括字符串、哈希、列表、集合、有序集合等。Redis通常被用作数据库、缓存和消息中间件。它以内存存储为主,因此读写速度极快,同时也支持数据的持久化,以防止数据丢失。Redis是单线程的,但得益于高效的I/O多路复用技术,它仍然能够处理大量的并发请求。并且支持数据持久化支持主从集群、分片集群支持多语言客户端

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

NoSQl简介

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

  • 结构化与非结构化:传统关系型数据库是结构化数据,每一张表都有严格的约束信息:字段名、字段数据类型、字段约束等等信息,插入的数据必须遵守这些约束,而NoSql则对数据库格式没有严格约束,往往形式松散,自由。
  • 关联和非关联:传统数据库的表与表之间往往存在关联,例如外键,而非关系型数据库不存在关联关系,要维护关系要么靠代码中的业务逻辑,要么靠数据之间的耦合。
  • 查询方式:传统关系型数据库会基于Sql语句做查询,语法有统一标准,非关系数据库查询语法差异极大,五花八门各种各样。
    • redis:get user:1
    • mongodb:db.users.find({_id:1})
    • elasticsearch:GET http://localhost:9200/users/1
  • 事务:传统关系型数据库能满足事务ACID的原则。而非关系型数据库往往不支持事务,或者不能严格保证ACID的特性,只能实现基本的一致性。

1

2 Redis的安装

通常情况下redis都是安装在Linux服务器上的,基于redis的特点在Linux上才会发挥其最佳效果,官网也推荐使用Linux。

2.1 安装纯净版

2.1.1 下载依赖库

redis是基于C语言编写的,因此需要gcc环境

yum install -y gcc tcl

2.1.2 上传安装包并解压

官网下载:http://download.redis.io/releases/

建议下载第二位为偶数的如7.0.x 或 7.2.x 等等

这里我下载的是7.0.0版本

2

上传至要存放的目录中如\opt

进入压缩包所在目录

tar -xzf redis-7.0.0.tar.gz

进入redis目录,进行安装

 cd /opt/redis-7.0.0/
make && make install

该目录已经默认配置到环境变量/usr/local/bin

3

因此可以在任意目录下运行这些命令。其中:

  • redis-cli:是redis提供的命令行客户端
  • redis-server:是redis的服务端启动脚本
  • redis-sentinel:是redis的哨兵启动脚本
  • redis-benchmark:性能测试工具
  • redis-check-aof:修复有问题的AOF文件,
  • redis-check-aof:修复有问题的dump.rdb文件

2.1.3 修改配置文件

进入到安装redis的目录,我这里是/opt/redis-7.0.0/

4

这里建议先将原conf配置文件拷贝一份

cp redis.conf /heyqings/myredis/

/heyqings/myredis/为自定义目录

5

修改配置文件后需重启生效

注意这里修改的是拷贝的文件

  1. 修改daemonize no -> daemonize yes (309行左右):是否为后台启动

    6

  2. 修改protected-mode yes->protected-mode no(111行左右):是否开启保护模式

    7

  3. 修改bind 127.0.0.1->直接注释(或改为本机IP)(87行左右):允许访问的地址

    8

  4. 添加密码->requirepass设置你的密(1033行左右)

9

2.1.4 启动redis

因redis安装默认安装在/usr/local/bin所以我们可以在任何地方使用redis命令

启动redis服务并告诉其配置文件路径

redis-server /heyqings/myredis/redis.conf

没有消息就是好消息,若无错误报出则证明启动成功,可通过

ps -ef | grep redis | grep -v grep

查看,结果为

10

则证明启动成功

设置开机自启

首先需要新建一个服务文件

vim /etc/systemd/system/redis.service

其中内容如下

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

然后重载系统服务

systemctl daemon-reload

开机自启

systemctl enable redis

现在我们可以用系统命令操作redis

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

2.1.5 停止redis

利用redis-cli来执行 shutdown 命令,即可停止 Redis 服务

redis-cli -u 123456 shutdown

-u后为密码也可用-a

2.1.6 连接测试

Linux服务器上可通过

redis-cli -a 123456 -p 6379

进行连接-a后为密码,-p后为端口号,默认为6379

11

2.2 docker安装redis

2.2.1 拉取镜像

docker pull redis:7.0.0

12

拉取成功可通过docker images查看

2.2.2 创建配置文件

创建redis.conf我这里创建在/heyqings/docker/redis/conf目录下

cd /heyqings/docker/redis/conf
vim redis.conf

里面内容为:

# Redis服务器配置 # 绑定IP地址
#解除本地限制 注释bind 127.0.0.1  
#bind 127.0.0.1  # 服务器端口号  
port 6379 #配置密码,不要可以删掉
requirepass 123456#这个配置不要会和docker -d 命令 冲突
# 服务器运行模式,Redis以守护进程方式运行,默认为no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败,如果后面redis启动失败,就将这个注释掉
daemonize no#当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定(自定义)
#pidfile /heyqings/docker/redis/run/redis6379.pid  #默认为no,redis持久化,可以改为yes
appendonly yes#当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
timeout 60
# 服务器系统默认配置参数影响 Redis 的应用
maxclients 10000
tcp-keepalive 300#指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合(分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改)
save 900 1
save 300 10
save 60 10000# 按需求调整 Redis 线程数
tcp-backlog 511# 设置数据库数量,这里设置为16个数据库  
databases 16# 启用 AOF, AOF常规配置
appendonly yes
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb# 慢查询阈值
slowlog-log-slower-than 10000
slowlog-max-len 128# 是否记录系统日志,默认为yes  
syslog-enabled yes  #指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
loglevel notice# 日志输出文件,默认为stdout,也可以指定文件路径  
logfile stdout# 日志文件
#logfile /var/log/redis/redis-server.log# 系统内存调优参数   
# 按需求设置
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

2.2.3 运行redis

docker run \
-p 6378:6379 \
--name domeredis \
-v /heyqings/docker/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /heyqings/docker/redis/data:/var/lib/redis \
-v /heyqings/docker/redis/logs:/logs \
-d redis:7.0.0 redis-server /etc/redis/redis.conf

命令解释

-p 端口号映射 主机端口:容器端口
-v 数据卷挂载
-d 后台运行
--name 容器名称

13

查看是否启动

docker ps若出现则成功

14

开机自启

docker update --restart=always domeredis

2.2.4 测试连接

docker exec -it domeredis bash

15

2.3 下载客户端

RedisDesktopManager官网:https://redis.io/insight/

下载并安装后进行连接

点击【Connect to Redis Server】填写信息

16

这里我填写的是docker容器中的redis,纯净版同理

然后点击【Test Connection】出现

17

依次点击【OK】即可

3 Redis十大数据类型

操作命令指南:https://redis.io/docs/latest/commands/

3.0 前置-key的相关操作

  • keys *:查看当前库的所有key
  • exists key:判断某个key是否存在
  • type key:查看key的类型
  • del key:删除key
  • unlink key:非阻塞删除,仅仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作中
  • ttl key:查看还有多少秒过期,-1:永不过期,-2:已过期
  • expire key:秒钟,为key设置过期时间
  • move key dbindex:将当前的key移动到给定数据库
  • select dbindex:切换数据库
  • dbsize:查看数据库key的数量
  • flushdb:清空当前库
  • flushall:通杀全部库

命令不区分大小写,key区分

通用操作

SET key value [NX | XX] [GET] [EX seconds | PX milliseconds |EXAT unix-time-seconds | PXAT unix-time-milliseconds | KEEPTTL]

NX:不存在时创建

XX:存在时创建

GET:返回旧值插入新值

EX:过期时间 秒

PX:过期时间 毫秒

EXAT:过期时间 unix时间 秒

PXAT:过期时间 unix时间 毫秒

KEEPTTL:保持过期时间

3.1 String 字符串

最基础数据类型,一般情况下key都为字符串类型

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类型的键值对,并且指定有效期

3.2 List 列表

底层为双向链表

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

List的常见命令有:

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

3.3 Set 集合

无序,无重复集合

  • 无序
  • 元素不可重复
  • 查找快
  • 支持交集、并集、差集等功能

Set的常见命令有:

  • SADD key member … :向set中添加一个或多个元素
  • SREM key member … : 移除set中的指定元素
  • SCARD key: 返回set中元素的个数
  • SISMEMBER key member:判断一个元素是否存在于set中
  • SMEMBERS:获取set中的所有元素
  • SINTER key1 key2 … :求key1与key2的交集
  • SINTERCARD numkeys key [key …] [LIMIT limit]:redis7新命令,返回结果的基数(返回由所有给定集合的交际产生的集合的基数)

3.4 SortedSet 有序集合

有序,无重复集合,关联double类型的分数(score),分数可重复

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

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

3.5 Hash 哈希表

field(String):value

用java解释就是Map<String,Map<Object,Object>>

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不存在,否则不执行

3.6 Bitfield 位域

通过bitfield命令可以一次性操作多个多个比特位域(连续的多个比特位),执行操作并返回一个相应数组,了解即可

位域修改,溢出控制

直接修改底层

3.7 Bitmap 位图

由0和1状态表现得二进制bit数组

主要用于状态记录等等

主要命令有:

  • setbit key offset val:给指定key的值的第offset赋值val
  • getbit key offset:获取指定key的offset位
  • bitlen key:返回占用的字节数
  • bitcount key start end:返回指定key中【start,end】中1的数量
  • bitop operation destkey key:对不同的二进制存储数据进行位运算(and、or、not、xor)

3.8 Geospatial 地理空间

存储地理位置信息,并对信息进行操作

  • 添加地理位置坐标
  • 获取地理位置的坐标
  • 计算两个位置之间的距离
  • 根据用户给定的经纬度坐标来获取指定范围内的地理位置集合

常用命令:

  • geoadd:多个经纬度、位置名称添加到指定的key中
  • geopos:从键里面返回所有给定的位置元素
  • geodist:返回两个位置之间的距离
  • georadius:以给定经纬度为中心,返回与中心距离不超过给定最大距离的所有位置元素
  • georadiusbymember:与georadius类似
  • geohash:返回一个或多个位置元素的geohash表示

3.9 Hyperloglog 基数统计

输入元素数量或体积非常大时,计算基数所需要的空间总是固定且很小的。

去重复基数统计

基数:去重复的数据集合(只记录个数不存储数据)

适用场景一般为统计UV(Unique VIsitor)、统计网站关键词搜索…

常用命令:pfadd\pfcount\pfdebug\pfmerge\pfselftest

3.10 Stream 流

类似mq中间件,主要用于消息队列

特殊符号:

  • +,- :最大最小可能出现的id
  • $:只消费新的消息
  • > :用于xreadgroup命令,表示迄今还没有发送给组中使用者的信息,会更新新消费者组的最后id
  • *:用于xadd命令,让系统自动生成id

常用命令:xadd\xrevrange\xdel…

更多命令参考:https://redis.io/docs/latest/commands/?group=stream

4 Redis持久化

4.1 RDB

RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存在当前运行目录。

RDB持久化在四种情况下会执行:

  • 执行save命令:由redis主线程来执行rdb,会阻塞所有命令,只有在数据迁移时可能用到
  • 执行bgsave命令:开启独立进程完成RDB,主进程可以持续处理用户请求,不受影响
  • Redis停机时:Redis停机时会执行一次save命令,实现RDB持久化。
  • 触发RDB条件时:Redis内部有触发RDB的机制,可以在redis.conf文件中找到如:save 900 1

4.2 AOF

AOF全称为Append Only File(追加文件)。Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。

AOF默认是关闭的,需要修改redis.conf配置文件来开启AOF:

# 是否开启AOF功能,默认是no
appendonly yes
# AOF文件的名称
appendfilename "appendonly.aof"

AOF的命令记录的频率也可以通过redis.conf文件来配:

# 表示每执行一次写命令,立即记录到AOF文件
appendfsync always 
# 写命令执行完先放入AOF缓冲区,然后表示每隔1秒将缓冲区数据写到AOF文件,是默认方案
appendfsync everysec 
# 写命令执行完先放入AOF缓冲区,由操作系统决定何时将缓冲区内容写回磁盘
appendfsync no

appendfsync三种命令的对比:

配置项刷盘时机优点缺点
always同步刷盘可靠性高,数据几乎不丢失性能影响大
everysec每秒刷盘性能适中最多丢失1秒数据
no操作系统控制性能最好可靠性差,可能丢失大量数据

AOF重写机制

因为是记录命令,AOF文件会比RDB文件大的多。而且AOF会记录对同一个key的多次写操作,但只有最后一次写操作才有意义。通过执行bgrewriteaof命令,可以让AOF文件执行重写功能,用最少的命令达到相同效果。

Redis也会在触发阈值时自动去重写AOF文件。阈值也可以在redis.conf中配置:

# AOF文件比上次文件 增长超过多少百分比则触发重写
auto-aof-rewrite-percentage 100
# AOF文件体积最小多大以上才触发重写 
auto-aof-rewrite-min-size 64mb 

4.3 RDB与AOF对比

RDB和AOF各有自己的优缺点,如果对数据安全性要求较高,在实际开发中往往会结合两者来使用。

RDBAOF
持久化方式定时对整个内存做快照记录每一次写操作
数据完整性不完整,两次备份之间丢失相对完整,取决与刷盘策略
文件大小有压缩,文件体积小记录命令,文件体积大
宕机恢复速度很快
数据恢复优先级低,因为数据完整性不如AOF高,因为数据完整性高
系统资源占用高,大量CPU和内存消耗低,主要是磁盘IO资源但AOF重写时会占用大量CPU和内存资源
使用场景可以容忍数分钟的数据丢失,追求更快的启动速度对数据安全性要求较高

5 Redis事务

Redis事务提供了一种将多个命令请求打包然后一次性、顺序性执行的机制。事务功能是通过MULTI、EXEC、DISCARD和WATCH这几个命令实现的。事务中的所有命令都会按照顺序执行,并且在事务执行期间,Redis服务器不会被其他客户端的请求打断。然而,与传统的关系型数据库事务不同,Redis事务并不能保证严格意义上的原子性,即使在事务中某个命令执行失败,也不会停止执行其他命令,也___不会回滚已经执行的命令___。

5.1 基础命令

  • 开始事务:使用MULTI命令开始一个事务,执行后Redis返回OK表示进入了事务模式。

  • 命令入队:在MULTI之后和EXEC之前的所有命令,都会被放入事务队列中,但不会立即执行。

  • 执行事务:使用EXEC命令提交事务,此时Redis会以FIFO(先进先出)的方式执行队列中的所有命令。

  • 取消事务:使用DISCARD命令可以取消事务,放弃执行已经在事务队列中的命令。

  • 监控键值:通过WATCH命令可以监控一个或多个键值,如果在事务执行前这些键值发生变化,则会自动回滚事务。

5.2 Redis事务的特性

  • 原子性:事务作为一个整体被执行,要么全部执行,要么全部不执行。
  • 顺序性:事务内部的命令会按照它们在队列中的顺序执行。
  • 排他性:在事务执行期间,Redis服务器不会被其他客户端的请求打断。
  • 非隔离性:Redis事务不支持像传统数据库那样的隔离级别,事务中的命令有可能被其他命令插队执行。
  • 不支持回滚:如果事务中存在错误,Redis不会回滚已经执行的命令。

6 Redis管道

Redis管道(Pipeline)是Redis客户端发送多个命令请求的一种机制。通过将一系列的单独命令请求打包成一组,可以一次性地从服务器返回结果,从而提高执行效率和性能。在客户端层面,管道操作就像是在一个事务中一样,所有命令都先积累起来,然后在某个时间点一起发送给服务器。服务器端会缓存这些命令,并在内部处理后一次性响应结果给客户端。这种方式减少了网络通信的开销,因为客户端只需要与服务器进行一次交互就可以获取多个命令的结果。

7 Redis发布与订阅

Redis发布与订阅模式(Pub/Sub)是一种消息通信模式,允许消息的发送者(publisher)发送消息到一个频道(channel),而消息的接收者(subscriber)可以订阅这个频道来接收消息。这种模式在实时通信、事件驱动的应用中非常有用。

个人不推荐使用,了解即可

发布订阅的操作命令

  • SUBSCRIBE:订阅一个或多个频道。
  • UNSUBSCRIB:取消订阅某个频道。
  • PSUBSCRIBE:模式订阅,可以订阅多个匹配模式的频道。
  • PUBLISH:向一个或多个频道发送消息。

8 Redis复制

Redis主从复制是指将Redis服务器的数据从一个节点(主节点)复制到其他节点(从节点)的过程。主节点负责处理写操作,而复制操作则是单向的,只能由主节点到从节点。一个主节点可以有多个从节点,但一个从节点只能有一个主节点。主从复制的主要作用包括数据冗余、读写分离和故障恢复。

8.1 主从复制

配从不配主:从机配置去找主机,主机不动

从机配置:

masterauth <master-password>
replicaof master-ip master-port

常用命令:

  • info replication:可以查看复制节点的主从关系和配置信息
  • replicaof master-ip master-port:配置在conf中
  • slaveof master-ip master-port:切换主库
  • slaveof no one:停止连接

操作步骤:

  • 开启daemonize yes
  • 注释掉bing 127.0.0.1
  • 设置protected-mode no
  • 指定端口
  • 指定当前工作目录
  • pid文件名字
  • log文件名字
  • requirepass
  • dump.rdb名字
  • aof文件,appendfilename
  • 从机访问主机的通行密码masterauth

注意:

从机只读,主机可读可写(一般只做写)

从机开机迟让可复制主机所有信息

主机挂掉,从机原地待命,不会争夺主机

主机重新启动,主从关系依然在

配置文件中的永久有效,手动命令的单次有效

Redis Springboot整合

pom文件导入

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

properties配置

spring.redis.host=192.168.200.128
spring.redis.port=6379
spring.redis.password=123456
spring.redis.database=0

aster-ip master-port`:配置在conf中

  • slaveof master-ip master-port:切换主库
  • slaveof no one:停止连接

操作步骤:

  • 开启daemonize yes
  • 注释掉bing 127.0.0.1
  • 设置protected-mode no
  • 指定端口
  • 指定当前工作目录
  • pid文件名字
  • log文件名字
  • requirepass
  • dump.rdb名字
  • aof文件,appendfilename
  • 从机访问主机的通行密码masterauth

注意:

从机只读,主机可读可写(一般只做写)

从机开机迟让可复制主机所有信息

主机挂掉,从机原地待命,不会争夺主机

主机重新启动,主从关系依然在

配置文件中的永久有效,手动命令的单次有效

Redis Springboot整合

pom文件导入

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

properties配置

spring.redis.host=192.168.200.128
spring.redis.port=6379
spring.redis.password=123456
spring.redis.database=0

相关文章:

redis下载、基础数据类型、操作讲解说明,持久化、springboot整合等

1 Redis是什么 官网&#xff1a;https://redis.io 开发者&#xff1a;Antirez Redis诞生于2009年全称是Remote Dictionary Server 远程词典服务器&#xff0c;是一个基于内存的键值型NoSQL数据库。 Redis是一个开源的、高性能的键值对存储系统&#xff0c;它支持多种数据结构&…...

[代码随想录06]哈希表的使用,有效字母异位词,两数组交集,快乐数,两数之和

前言 哈希表是什么&#xff1f;一句话带你理解&#xff0c;简单来说我们对于杂乱的数据&#xff0c;怎么快速找到数据&#xff0c;如何做呢&#xff1f;一般的做法就是遍历复杂度为o(N)去找寻一个数据&#xff0c;但是吧&#xff0c;我们这样思考的话&#xff0c;还是花了大量时…...

【CSS】一篇掌握CSS

不是因为有了希望才去坚持,而是坚持了才有了希望 目录 一.导入方式 1.行内样式 2.内部样式 3.外部样式(常用) 二.选择器 1.基本选择器(常用) 1.1标签选择器 1.2类选择器 1.3id选择器 2.层次选择器 2.1后代选择器 2.2子选择器 2.3相邻兄弟选择器 2.4通用兄弟选择器…...

分层图最短路

常见情形&#xff1a; 对于边有k次操作的题。。 整体思想&#xff1a; 分层图最短路可以视作是dijkstra的一个扩展&#xff0c;通常用于处理N小于10000&#xff0c;或者是k不大的情形。整体有点类似于拆点。将一个点拆成k个点处理。层与层之间互不影响。 好了我就说这么多&…...

vue3 基本使用

Vue 3 提供了多种方式来构建用户界面&#xff0c;包括选项式 API 和 Composition API。下面我将详细介绍 Vue 3 的基本使用和语法&#xff0c;主要集中在选项式 API 上&#xff0c;因为这对于初学者来说更容易上手。 1. 创建 Vue 项目 如果你还没有一个 Vue 项目&#xff0c;…...

【maven-4】IDEA 配置本地 Maven 及如何使用 Maven 创建 Java 工程

IntelliJ IDEA&#xff08;以下简称 IDEA&#xff09;是一款功能强大的集成开发环境&#xff0c;广泛应用于 Java 开发。下面将详细介绍如何在 IDEA 中配置本地 Maven&#xff0c;并创建一个 Maven Java 工程&#xff0c;快速上手并高效使用 Maven 进行 Java 开发。 1. Maven …...

种花问题算法

假设有一个很长的花坛&#xff0c;一部分地块种植了花&#xff0c;另一部分却没有。可是&#xff0c;花不能种植在相邻的地块上&#xff0c;它们会争夺水源&#xff0c;两者都会死去。 给你一个整数数组 flowerbed 表示花坛&#xff0c;由若干 0 和 1 组成&#xff0c;其中 0 …...

对于大规模的淘宝API接口数据,有什么高效的处理方法?

1.数据分批处理 原理&#xff1a;当处理大规模数据时&#xff0c;一次性将所有数据加载到内存中可能会导致内存溢出。将数据分成较小的批次进行处理可以有效避免这个问题。示例代码&#xff1a;假设通过淘宝 API 获取到了一个包含大量商品详情的 JSON 数据列表&#xff0c;每个…...

openharmony 使用uvc库获取摄像头数据使用nativewindow显示

界面代码&#xff1a; XComponent({ id: xcomponentId, type: texture, libraryname: entry }).width(800).height(500) Natvie代码&#xff1a; 1、头文件 //NativeWindow #include <ace/xcomponent/native_interface_xcomponent.h> #include <cstdint> #incl…...

SQL Server 实战 - 多种连接

目录 背景 一、多种连接 1. 复合连接条件 2. 跨数据库连接 3. 隐连接 4. 自连接 5. 多表外连接 6. UNION ALL 二、一个对比例子 背景 本专栏文章以 SAP 实施顾问在实施项目中需要掌握的 sql 语句为偏向进行选题&#xff1a; 用例&#xff1a;SAP B1 的数据库工具&am…...

【手术显微镜】市场高度集中,由于高端手术显微镜的制造技术主要掌握于欧美企业

摘要 HengCe (恒策咨询&#xff09;是全球知名的大型咨询机构&#xff0c;长期专注于各行业细分市场的调研。行业层面&#xff0c;重点关注可能存在“卡脖子”的高科技细分领域。企业层面&#xff0c;重点关注在国际和国内市场在规模和技术等层面具有代表性的企业&#xff0c;…...

IDEA 2024 配置Maven

Step 1:确定下载Apache Maven版本 在IDEA 2024中&#xff0c;随便新建一个Maven项目&#xff1b; 在File下拉菜单栏中&#xff0c;找到Setings&#xff1b; 在Build&#xff0c;Execution&#xff0c;Deployment中找到Maven 确定下载的Apache Maven版本应略低于或等于IDEA绑…...

Admin.NET框架使用宝塔面板部署步骤

文章目录 Admin.NET框架使用宝塔面板部署步骤&#x1f381;框架介绍部署步骤1.Centos7 部署宝塔面板2.部署Admin.NET后端3.部署前端Web4.访问前端页面 Admin.NET框架使用宝塔面板部署步骤 &#x1f381;框架介绍 Admin.NET 是基于 .NET6 (Furion/SqlSugar) 实现的通用权限开发…...

Flutter中的Future和Stream

在 Flutter 中&#xff0c;Future 和 Stream 都是用于处理异步操作的类&#xff0c;它们都基于 Dart 的异步编程模型&#xff0c;但是它们的使用场景和工作方式有所不同。以下是它们的区别以及各自适用的场景。 目录 一、Future1、基本使用2、异常处理1. catchError2. onError…...

107.【C语言】数据结构之二叉树求总节点和第K层节点的个数

目录 1.求二叉树总的节点的个数 1.容易想到的方法 代码 缺陷 思考:能否在TreeSize函数内定义静态变量解决size的问题呢? 其他写法 运行结果 2.最好的方法:分而治之 代码 运行结果 2.求二叉树第K层节点的个数 错误代码 运行结果 修正 运行结果 其他写法 1.求二…...

spring boot支持那些开发工具?

Spring Boot 支持多种开发工具&#xff0c;以帮助开发者更高效地进行应用开发。以下是小编给大家分享几种常用的开发工具及其特点&#xff1a; IntelliJ IDEA&#xff1a; IntelliJ IDEA 是一款非常流行的 Java IDE&#xff0c;它提供了对 Spring Boot 的全面支持&#xff0c;…...

Go-MediatR:Go语言中的中介者模式

在Go语言中&#xff0c;确实存在一个与C#中的MediatR类似的组件包&#xff0c;名为Go-MediatR。 Go-MediatR是一个受.NET中MediatR库启发的Go语言实现&#xff0c;它专注于通过中介者模式简化命令查询责任分离&#xff08;CQRS&#xff09;模式的处理和在事件驱动架构中的应用…...

5.11【机器学习】

先是对图像进行划分 划分完后&#xff0c; 顺序读取文件夹&#xff0c;在文件夹里顺序读取图片&#xff0c; 卷积层又称为滤波器&#xff0c;通道是说滤波器的个数&#xff0c;黑白通道数为1&#xff0c;RGB通道个数为3 在输入层&#xff0c;对于输入层而言&#xff0c;滤波…...

在 CentOS 上安装 Docker:构建容器化环境全攻略

一、引言 在当今的软件开发与运维领域&#xff0c;Docker 无疑是一颗璀璨的明星。它以轻量级虚拟化的卓越特性&#xff0c;为应用程序的打包、分发和管理开辟了崭新的高效便捷之路。无论是开发环境的快速搭建&#xff0c;还是生产环境的稳定部署&#xff0c;Docker 都展现出了…...

Python练习(2)

重复元素判定续。利用集合的无重复性来编写一个程序如果有一个元素出现了不止一次则返回true但不要改变原来列表的值&#xff1a; 一&#xff1a; def has_duplicates(lst): # 使用集合来存储已经见过的元素 seen set() for item in lst: if item in seen: # 如果元素已经在…...

如何实现一套键盘鼠标控制两台计算机(罗技Options+ Flow功能快速实现演示)

需求背景 之前我写过一篇文章如何实现一套键盘鼠标控制两台计算机&#xff08;Mouse Without Borders快速上手教程&#xff09;_一套键鼠控制两台电脑-CSDN博客 当我们在局域网内有两台计算机&#xff0c;想使用一套键鼠操控时&#xff0c;可以安装Mouse Without Borders软件…...

现代应用程序中基于 Cell 架构的安全防护之道

在飞速发展的软件开发领域&#xff0c;基于 Cell 的架构日益流行起来。其概念源自船舶舱壁的设计准则&#xff0c;即单独的水密舱室能允许故障孤立存在。通过将这个概念应用于软件&#xff0c;我们创建了一个架构&#xff0c;将应用程序划分为离散的、可管理的组件&#xff0c;…...

【导航查询】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…...

【基础分析】——Qt 信号和槽的机制 优点

QT信号和槽机制的优点包括&#xff1a; 1、类型安全&#xff1a; 信号和槽的签名必须是等同的&#xff0c;即信号的参数类型和参数个数必须与接收该信号的槽的参数类型和参数个数相同。 2、松散耦合&#xff1a; 信号和槽机制减弱了Qt对象的耦合度。激发信号的Qt对象无须知道…...

Vue3学习宝典

1.ref函数调用的方式生成响应式数据&#xff0c;可以传复杂和简单数据类型 <script setup> // reactive接收一个对象类型的数据 import { reactive } from vue;// ref用函数调用的方式生成响应式数据&#xff0c;可以传复杂和简单数据类型 import { ref } from vue // 简…...

leecode96.不同的二叉搜索树

在画的过程中发现规律&#xff0c;每次选择不同的节点作为根节点&#xff0c;左右两边的节点再排列组合一下就能求出总数 class Solution { public:int numTrees(int n) {vector<int> dp(n1,0);dp[0]1;for(int i1;i<n;i)for(int j0;j<i;j)dp[i]dp[i-j-1]*dp[j];ret…...

树莓派基本配置-基础配置配置

树莓派基本配置 文章目录 树莓派基本配置前言硬件准备树莓派刷机串口方式登录树莓派接入网络ssh方式登录树莓派更换国内源xrdp界面登录树莓派远程文件传输FileZilla 前言 树莓派是一款功能强大且价格实惠的小型计算机&#xff0c;非常适合作为学习编程、物联网项目、家庭自动化…...

手机卡限速丨中国移动5G变3G,网速500kb

以下猜测错误&#xff0c;又有新的猜测&#xff1a;河南移动的卡出省限速。可能是因为流量结算。 “2024年7月1日起&#xff0c;中国移动集团内部将开启跨省流量结算” 在深圳四五年了&#xff0c;之前没有过&#xff0c;就从上个月开始。11月底解除限速&#xff0c;12月刚开…...

SpringCloud之OpenFeign:OpenFeign与Feign谁更适合你的SpringCloud项目?

目录 一、OpenFeign简介1、OpenFeign是什么&#xff08;1&#xff09;核心概念&#xff08;2&#xff09;工作原理&#xff08;3&#xff09;主要特点&#xff08;4&#xff09;使用场景&#xff08;5&#xff09;与Feign的区别&#xff08;6&#xff09;总结 2、OpenFeign与Fe…...

yt6801 ubuntu有线连接驱动安装

耀世16pro的有线网卡驱动安装 下载地址: YT6801 千兆PCIE以太网控制器芯片 1. 创建安装目录 mkdir yt68012. 解压驱动文件 unzip yt6801-linux-driver-1.0.27.zip -d yt68013. 进入驱动目录 cd yt68014. 安装驱动 以 root 权限运行安装脚本&#xff1a; sudo su ./yt_ni…...