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

【Redis】Redis安装步骤和特性以及支持的10种数据类型(Redis专栏启动)

📫作者简介:小明java问道之路,专注于研究 Java/ Liunx内核/ C++及汇编/计算机底层原理/源码,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。

        

📫 热衷分享,喜欢原创~ 关注我会给你带来一些不一样的认知和成长。

        

🏆 InfoQ签约作者、CSDN专家博主/后端领域优质创作者/内容合伙人、阿里云专家/签约博主、51CTO专家 🏆

        

🔥如果此文还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主~ 


专栏系列(点击解锁)

学习路线(点击解锁)

知识定位

🔥MySQL从入门到精通🔥

MySQL从入门到精通

全面讲解MySQL知识与实战

🔥计算机底层原理🔥

深入理解计算机系统CSAPP

构件计算机体系和计算机思维

Linux内核源码解析

围绕Linux内核讲解计算机底层原理与并发

🔥数据结构与企业题库精讲🔥

数据结构与企业题库精讲

结合工作经验深入浅出,适合各层次,笔试面试算法题精讲

🔥互联网架构分析与实战🔥

企业系统架构分析实践与落地

行业前沿视角,专注于技术架构升级路线、架构实践

互联网企业防资损实践

金融公司的防资损方法论、代码与实践。

本文目录

本文导读

一、什么是Redis

1、Redis简介

2、Redis特性

二、Redis的安装步骤

1、Docker安装

2、Github编译

3、直接安装

三、Redis 支持的10种数据类型

1、 字符串(Strings)

2、散列(Hashes)

3、列表(Lists)

4、集合(Sets)

5、有序集合(Sorted sets)

6、流(Streams) 

7、位图(Bitmaps)

8、位域(Bitfields)

9、地理空间索引(Geospatial indexes)

10、HyperLogLog

11、Bitmaps、Bitfields、Geospatial、HyperLogLog的底层

四、源码中的7种数据类型

总结


本文导读

本文作为Redis的开篇,简单介绍Redis以及其数据类型、存储、事务、lua、集群等等特性,展开讲解Redis的10中数据类型,并给出源码中的7种数据类型的结构,

所以当回答的时候,建议先说10种,再说7种,并展开官网和源码中的注释进行回答。让面试官看到你的理解和你对基本逻辑的掌握更系统和专业。

一、什么是Redis

1、Redis简介

Redis是一个日志类型的键值存储组件,使用ANSI C语言编写。它的所有数据结构都存储在内存中,可以用作缓存、数据库和消息中间件。

Redis(Remote dictionary server)是远程字典服务器的缩写。一个Redis实例可以有多个存储数据的字典,客户端 select 字典(即DB)来存储数据。

2、Redis特性

Redis有许多数据类型。它有10种核心数据类型,strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes,bitfields, and streams.,每种类型都有一系列操作指令。Redis具有高性能,单线程压测可以达到 10~11w 的 QPS。

Redis中的所有数据读写操作都在内存中执行,但也可以下载所有数据进行持久化。Redis提供了两种持久性方法。一、快照模式,在某一时间将所有数据写入硬盘的RDB文件;二、追加文件模式,即所有写入命令都以追加模式写入硬盘的AOF文件。

Redis从2.6版开始就支持Lua,Lua是一种高效、简洁、可扩展的脚本语言,可以很容易地嵌入到其他语言中。通过在客户端支持定制的Lua脚本,Redis可以减少网络开销,提高处理性能,并整体操作脚本中的多个操作,以实现原子更新。

Redis支持事务。在多指令之后,指定多个操作,然后通过exec指令一次执行它们。如果在执行过程中发生异常,请不要执行所有命令操作。否则,一次按顺序执行所有操作,在执行过程中不会执行其他指令。

Redis还支持 Cluster  集群功能所有 key 都可以通过哈希自动或手动分散到不同的节点。当容量不足时,一些 key 也可以通过 Redis 迁移指令迁移到其他节点。

二、Redis的安装步骤

Redis 需要使用 Linux 环境。如果使用Windows操作系统,可以考虑使用虚拟机。 如果不想安装也可以使用网页版Redis进行学习。

1、Docker安装

# 拉取 Redis 镜像
docker pull redis# 运行 Redis 容器,6379是Redis端口号
docker run --name myredis -d -p6379:6379 redis# 执行容器中的 redis-cli,
docker exec -it myredis redis-cli

2、Github编译

# Github 源码编译,下载源码
git clone --branch 5.0 --depth 1 git@github.com:antirez/redis.git
cd redis# 编译
make
cd src# 运行服务器,daemonize 表示在后台运行
./redis-server --daemonize yes# 运行命令行
./redis-cli

3、直接安装

# 直接安装方式
# mac系统
brew install redis# ubuntu操作系统
apt-get install redis#运行客户端
redis-cli

三、Redis 支持的10种数据类型

我们经常见到网络上的博客和书籍,资料有很多都比较老久了,很多新的资料也不负责任,这里博主基于官网给出的标准进行讲解。

Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes,bitfields, and streams.

Redis、Redis data types | Redis

1、 字符串(Strings)

Redis 字符串(String)存储字节序列,包括文本、序列化对象和二进制数组。因此,字符串是最基本的 Redis 数据类型。通常用于缓存,但它们支持额外的功能,也可以实现计数器和执行按位运算。默认情况下,单个 Redis 字符串最大为 512 MB。

# 添加缓存:在 Redis 中存储然后检索字符串
> SET user:1 salvatore# 查询缓存
> GET user:1# 存储序列化的 JSON 字符串并将其设置为从现在起 100 秒后过期:
> SET tuser:1 "\"{'username': 'priya', 'ticket_id': 321}\"" EX 100# 增加一个计数器
> INCR tuser:1
1
> INCRBY tuser:1 10
11

SET存储一个字符串值。

SETNX仅当键不存在时才存储字符串值。用于实现锁。

GET检索字符串值。

MGET在单个操作中检索多个字符串值。 

大多数字符串操作的复杂度为 O(1),这意味着它们非常高效。但是 SUBSTR复杂GETRANGE度SETRANGE可能为 O(n)。这些随机访问字符串命令在处理大字符串时可能会导致性能问题。

如果将结构化数据存储为序列化字符串,可能还需要考虑Redis 哈希或RedisJSON。

2、散列(Hashes)

Redis Hashes 是以字段值对集合的形式构造的记录类型。可以使用散列来表示基本对象和存储计数器分组等。大多数Redis哈希命令都是O(1)。

# 将基本用户配置文件表示为散列:
> HSET user:1 username
(integer) 4> HGET user:1 username
"martina"> HGETALL user:1
1) "username"

HSET设置哈希上一个或多个字段的值。

HGET返回给定字段的值。

HMGET返回一个或多个给定字段的值。

HINCRBY将给定字段的值增加提供的整数。

例如HKEYS、HVALS和HGETALL 是O(n),其中n是字段值对的数量。每个哈希可以存储多达4294967295(2^32-1)个字段值对,Redis 部署的VM上的总内存的限制。

3、列表(Lists)

Redis Lists 是字符串值的链接列表。Redis列表通常用于:实现堆栈和队列。为后台工作系统构建队列管理。

Redis 列表的最大长度为 2^32 - 1 (4,294,967,295) 个元素。

# 将列表视为队列(先进先出):
> LPUSH user:1 101
(integer) 1
> RPOP user:1
"101"# 将列表视为堆栈(先进后出):
> LPUSH user:1 101
(integer) 1
> LPOP user:1
"101"# 检查列表的长度:
> LLEN user:1
(integer) 0

​LPUSH添加一个新元素到列表的头部;RPUSH添加到尾巴。

LPOP从列表的头部移除并返回一个元素;RPOP做同样的事情,但从列表的尾部开始。

LLEN返回列表的长度。

LMOVE原子地将元素从一个列表移动到另一个列表。

LTRIM将列表减少到指定的元素范围。

4、集合(Sets)

Redis Set 是由字符串(成员)组成的无序集合。

可以使用 Redis set 来高效地:跟踪唯一项目(例如,跟踪访问给定博客文章的所有唯一 IP 地址)。表示关系(例如,具有给定角色的所有用户的集合)。执行常见的集合运算,例如交集、并集和差集。

Redis Set 的最大大小为 2^32 - 1 (4,294,967,295) 个成员。

存储用户 1
> SADD user:1
(integer) 1# 获取用户 1
> SISMEMBER user:1:favorites 742
(integer) 1# 用户 1 和 2 有没有共同的
> SINTER user:1 user:2
1) "561"# 统计 user:1
> SCARD user:1
(integer) 3

​SADD将新成员添加到集合中。

SREM从集合中删除指定的成员。

SISMEMBER测试集合成员的字符串。

SINTER返回两个或多个集合共有的成员集合(即交集)。

SCARD返回集合的大小(又名基数)。

大多数集合操作,包括添加、删除和检查项是否为集合成员,都是O(1)。这意味着他们的效率很高。但是,对于具有数十万或更多成员的大型集合,在运行SMEMBERS命令时应谨慎。此命令为O(n),并在单个响应中返回整个集合。作为替代方案,考虑SSCAN,它允许迭代检索集合的所有成员。

5、有序集合(Sorted sets)

Redis Sorted sets是按关联分数排序的唯一字符串(成员)的集合。当多个字符串具有相同的分数时,这些字符串按字典顺序排列。

Sorted sets 的一些用例包括:排行榜。例如,可以使用 Sorted sets 轻松维护大型在线游戏中最高分数的有序列表。费率限制器。可以使用 Sorted sets 来构建滑动窗口速率限制器,以防止过多的API请求。

# 随着玩家分数的变化更新实时排行榜:
> ZADD leaderboard:455 100 user:1
(integer) 1# 获取 user:1 的分数:
> ZRANGE leaderboard:455 0 2 REV WITHSCORES
1) "user:1"
2) "100"# 返回用户1的排名,假设排序集按降序排列。
> ZREVRANK leaderboard:455 user:2
(integer) 0

ZADD将新成员和关联的分数添加到已排序的集合中。如果该成员已经存在,则更新分数。

ZRANGE返回在给定范围内排序的有序集合的成员。

ZRANK返回所提供成员的排名,假设排序是按升序排列。

ZREVRANK返回所提供成员的排名,假设 Sorted sets 按降序排列。

大多数有序集合操作的复杂度为 O(log(n)),其中n是成员数。ZRANGE运行具有较大返回值(例如,数万或更多)的命令时要小心。此命令的时间复杂度为 O(log(n) + m),其中m是返回的结果数。Redis Sorted sets 有时用于索引其他 Redis 数据结构。如果需要索引和查询数据,请考虑RediSearch和RedisJSON。

6、流(Streams) 

Redis 5.0 引入了 Stream 数据结构。Redis 流是一种数据结构,其作用类似于仅附加日志。可以使用流实时记录和同时联合事件。

Redis 流用例示例包括:事件溯源(例如,跟踪用户操作、点击等);传感器监控(例如,现场设备的读数);通知(例如,将每个用户的通知记录存储在单独的流中)

Redis 为每个流条目生成一个唯一的 ID。可以使用这些 ID 稍后检索它们的关联条目,或者读取和处理流中的所有后续条目。

Redis 流支持多种修剪策略(以防止流无限制地增长)和不止一种消费策略(请参阅XREAD、XREADGROUP和XRANGE)。

7、位图(Bitmaps)

Bitmap 底层是 String 实现,赋值的每一个 bit 均对应 ASCII 码的二进制位。

Redis Bitmap  位图是字符串数据类型的扩展,可将字符串视为位向量。还可以对一个或多个字符串执行按位运算。

位图用例的一些示例包括:集合成员对应于整数 0-N 的情况的有效集合表示。对象权限,其中每一位代表一个特定的权限,类似于文件系统存储权限的方式。

8、位域(Bitfields)

Redis Bitfields 位域允许设置、递增和获取任意位长度的整数值。可以对从无符号 1 位整数到有符号 63 位整数的任何内容进行操作。

这些值使用二进制编码的 Redis 字符串存储。位域支持原子读、写和递增操作,使它们成为管理计数器和类似数值的不错选择。

9、地理空间索引(Geospatial indexes)

Redis Geospatial indexes 地理空间索引让您可以存储坐标并进行搜索。此数据结构可用于查找给定半径或边界框内的附近点。

10、HyperLogLog

HyperLogLog 底层也是 String 实现,与其说 HyperLogLog 是一种单独的数据类型,倒不如说是对 String 数据类型做 API 封装的应用程序。HyperLogLog 是一种估计集合基数的数据结构。作为一种概率数据结构,HyperLogLog 以完美的准确性换取高效的空间利用。

11、Bitmaps、Bitfields、Geospatial、HyperLogLog的底层

高级数据类型底层数据类型
BitmapString
BitfieldsString
GeospatialindexesSorted Set
HyperLogLogString

四、源码中的7种数据类型

源码内容中,define了7种类型:OBJ_ STRING 0、OBJ_ LIST 1、OBJ_ SET 2、OBJ_ ZSET 3、OBJ_ HASH 4、0BJ_ MODULE 5、OBJ_ STREAM 6。

这个0BJ_ MODULEMODULE对象类型是一种特殊的类型,表示对象,由Redis模块直接管理。这其中就包括了 Bitmaps, Hyperloglogs, Geospatial indexes, Bitfields.

所以当回答的时候,建议先说10种,再说7种,并展开官网和源码中的注释进行回答。让面试官看到你的理解和你对基本逻辑的掌握更系统和专业。

总结

本文作为Redis的开篇,简单介绍Redis以及其数据类型、存储、事务、lua、集群等等特性,展开讲解Redis的10中数据类型,并给出源码中的7种数据类型的结构,

所以当回答的时候,建议先说10种,再说7种,并展开官网和源码中的注释进行回答。让面试官看到你的理解和你对基本逻辑的掌握更系统和专业。

相关文章:

Https协议原理剖析【计算机网络】【三种加密方法 | CA证书 】

目录 一,fidler工具 前提知识 二,Https原理解析 1. 中间人攻击 2. 常见的加密方式 1). 对称加密 2). 非对称加密 对称加密 4). CA证书 1. 数据摘要 3. 数字签名 CA证书 理解数据签名 存在的安全疑问&am…...

Golang - 空指针如何预防

在Go语言中,空指针是一个常见的运行时错误来源,它通常发生在尝试访问一个未被初始化或已被设置为nil的指针所指向的值。 1、凡是有点『.』操作的的行为都要先进行非nil判断: 例如,想记录一个err的msg,通过err.Error()就可以获取到err的string类型的错误消息msg,但这里需要…...

Vue3 超前版发布,全面拥抱 JSX/TSX

拥抱 JSX/TSX? 我们都知道 Vue 一直主流是使用 template 模板来进行页面的编写。而就在最近,Vue3 的超前项目 Vue Macros 中,发布了 defineRender、setupComponent、setupSFC 这些新的 API,这代表了,以后 Vue3 有可能可以全面拥抱 JSX/TSX 了!! 说这个新 API 之前,我…...

屏幕状态自动检测+鼠标自动操作

目录 一、写在前面 1.1适用场景 1.2涉及到的库 二、函数库 2.1pyautogui-屏幕截图&鼠标操作 2.1.1屏幕截图screenshot函数 2.1.2鼠标移动及单击 2.2Opencv-模板匹配 2.2.1matchTemplate函数 2.2.2minMaxLoc函数 2.2.3相关代码 2.3base64-图片转base64 2.3.1在线…...

【提示学习论文】BlackVIP: Black-Box Visual Prompting for Robust Transfer Learning论文原理

BlackVIP: Black-Box Visual Prompting for Robust Transfer Learning BlackVIP:稳健迁移学习的黑盒视觉提示 问题 黑盒白盒? 黑盒和白盒的概念与对预训练模型内部参数的了解程度相关。黑盒指的是对预训练模型的参数和结构缺乏详细了解,通常只能通过使…...

rt1052 模拟hard fault

uint32_t u32Addr ((uint32_t)0x5FFFFFFF); //定义一个单片机不存在的地址 uint32_t u32StackTop *((__IO uint32_t *)u32Addr); //读取这个不存在的地址 //会进入 void HardFault_Handler(void) 中断...

【Redis】Redis安装步骤和特性以及支持的10种数据类型(Redis专栏启动)

📫作者简介:小明java问道之路,专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…...

DHTMLX Diagram JavaScript/HTML5 Pro Library:5.0

Diagram — JavaScript/HTML5 Diagram Library Ω578867473 破解版DHTMLX Diagram comprises a set of interactive HTML5 UI components such as organization charts, flowcharts, decision trees, block diagrams, mind maps, etc. Consisting of nodes and connectors, di…...

GPS卫星位置解算

本文介绍了基于C语言的GPS卫星位置解算原理与程序设计。针对每个原理、公式、代码设计进行了详细讲解,希望能够给测绘学子们带来帮助。 参考书籍: 李征航 黄劲松:GPS测量与数据处理(第三版) 目录 基础原理 1&#xf…...

大数据:Sqoop 简介与安装

一、Sqoop 简介 Sqoop 是一个常用的数据迁移工具,主要用于在不同存储系统之间实现数据的导入与导出: 导入数据:从 MySQL,Oracle 等关系型数据库中导入数据到 HDFS、Hive、HBase 等分布式文件存储系统中; 导出数据&am…...

[附源码]计算机毕业设计文曦家教预约系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…...

HK1 BOX刷入 Armbian系统作为服务器

HK1 BOX刷入 Armbian系统作为服务器 1 安装Armbian到EMMC 硬件 HK1 BOX s905 x3 固件版本选择 Armbian_23.02.0_Aml_s905x3_bullseye_5.15.80_server_2022.12.01用usb启动,tf/sd有的设备不行,有干扰,有可能从TF卡无法启动系统。 用usb启…...

CEC2015:动态多目标野狗优化算法求解CEC2015(提供完整MATLAB代码,含GD、IGD、HV和SP评价指标)

一、动态多目标优化问题简介 现实世界中,许多优化问题不仅具有多属性,而且与时间相关,即随着时间的变化,优化问题本身也发生改变,这类问题称为动态多目标优化问题(dynamic multi-objective optimization p…...

【蓝桥杯选拔赛真题31】python三位数组合个数 青少年组蓝桥杯python 选拔赛STEMA比赛真题解析

目录 python三位数组合个数 一、题目要求 1、编程实现 2、输入输出...

SpringBoot项目--如何不停服更新应用?

原文网址:SpringBoot项目--如何不停服更新应用?_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Java后端项目如何不停机更新服务。 在生产环境中,一般都会每个服务部署多个实例。只要多于1个实例,就可以不停服更新应用。 不停服…...

MVVM与Vue响应式原理

Vue的响应式实现原理 MVVM M:模型 》data中的数据 V:视图 》模板 VM:视图模型 》Vue实例对象 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0EWNM16D-1670161519474)(C:\Users\lucas\Desktop\学习\图片\mode…...

vue和react的生命周期

vue和react的生命周期 一、Vue的生命周期二、React的生命周期2.1.类组件2.2.函数式组件一、Vue的生命周期 初始化阶段(组件创建、数据初始化)、挂载、更新、销毁 父子组件生命周期执行顺序 初次加载组件时:父beforeCreate – 父created – 父beforeMount – 子beforeCreate …...

浏览器高度兼容性

浏览器的卷去高度 1.标准模式 document.documentElement.scrollTop 2.非标准模式 document.body.scrollTop 浏览器高度兼容性 1.标准模式下 浏览器的实际高度: document.body.clientHeight 浏览器的可视高度:document.documentElement.clientHeight 2.非…...

关于天干地支及其计算

以天干地支计算日期是我国悠良的传统文化,最近在看如何计算人的生辰八字,写了个程序,但是只能算年的干支,月、日的干支计算方法太复杂了,望之只能却步,还是乖乖去查万年历比较好。这里记下关于干支的一些东…...

数据结构和算法之如何建立图

小白BG.1 邻接矩阵表示的图结点的结构 typedef struct GNode *PtrToGNode;//PtrToGNode是指向GNode的一个指针 struct GNode{ int Nv;//顶点数 int Ne;//边数 WeightType G[MaxVertexNum][MaxVertexNum]; DataType Data[MaxVertexNum];//存顶点的数据 }; typedef PtrToGNode MG…...

计算机毕业设计Java大众采编本微资讯发布平台(源码+系统+mysql数据库+lw文档)

计算机毕业设计Java大众采编本微资讯发布平台(源码系统mysql数据库lw文档) 计算机毕业设计Java大众采编本微资讯发布平台(源码系统mysql数据库lw文档)本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse…...

web前端-javascript-立即执行函数(说明、例子)

立即执行函数 /* (function(){alert("我是一个匿名函数~~~"); })(); */(function (a, b) {console.log("a " a);console.log("b " b); })(123, 456);1. 说明 函数定义完,立即被调用,这种函数叫做立即执行函数立即执…...

【计算机视觉】图像形成与颜色

图像形成与颜色 光照及阴影 辐射度学 颜色 颜色信息反映了入射光的能量分布与波长,可见光的波长在400nm到760nm之间。 RGB RGB分别代表三个基色(R-红色、G-绿色、B-蓝色),如(0,0,0)表示黑色、(255, 255, 255)表示白色。其中2…...

Musical Christmas Lights——一个圣诞树灯光✨随音乐节奏改变的前端开源项目

文章目录前言视频介绍项目截图项目地址项目源码以上就是本篇文章的全部内容,将你编写好的项目分享给你的朋友们或者那个TA吧!制作不易,求个三连!❤️ 💬 ⭐️前言 今天博主在刷短视频时😐,朋友推…...

[附源码]Python计算机毕业设计SSM进出口食品安全信息管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…...

电平触发的触发器

普通的SR锁存器没有任何抗干扰能力 我们要加控制信号,来抵抗干扰 比如说我们不把信号直接加在门上,我们可以再加一级门电路,让这个输出和输入不在同一个门上,我们希望加入一个控制信号,来控制电路工作的时刻 对电路结…...

php后端+JQuery+Ajax简单表单提交

通过ajax,如果从后端直接想前端返回数组,那前端收到的是一个‘Array’的字符串。所以,我比较习惯的是用json对象的格式。由后端通过json_encode()函数,把数组封装成对象,传递到前端;前端也以json的格式接收。这里用提交表单来举例说明。 页面显示如下: JQueryAjax.…...

论文投稿指南——中文核心期刊推荐(计算机技术2)

>>>深度学习Tricks&#xff0c;第一时间送达<<< 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊。下面&#xff0c;简单介绍下什么是中文核心期刊要目总览&#xff1a; 《中文核心期刊要目总…...

集合java

java集合 集合、数组都是对多个数据进行存储操作的结构&#xff0c;简称Java容器 此时的存储&#xff0c;主要是指内存层面的存储&#xff0c;不涉及持久化的存储&#xff08;txt,jpg,avi&#xff09; Java集合可分为Collection 和 Map 两种体系 1. Collection接口&#xff1…...

spring boot 应用mybatis

Mybatis入门: Mybatis入门_做测试的喵酱的博客-CSDN博客 目录 一、spring boot 应用mybatis 核心 二、举例&#xff1a; 2.1 背景 2.2 项目结构&#xff1a; 2.3 依赖包 pom 2.4 项目配置文件application.yml 2.5 实例层entity 2.6 mybatis的mapper层 2.7 spring boot…...

Java项目:ssm图书馆管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 功能介绍 基于ssm的图书馆管理系统.主要功能包括&#xff1a;图书查询、图书管理、图书编辑、读者管理、图书的借阅与归还以及借还日志记录等。 用户分为…...

详解设计模式:命令模式

命令模式&#xff08;Command Pattern&#xff09;也被称为行动模式&#xff08;Action Pattern&#xff09;、事物模式&#xff08;Transaction Pattern&#xff09;&#xff0c;是在 GoF 23 种设计模式中定义了的行为型模式。 命令模式 是一种数据驱动的设计模式。请求以命令…...

家庭用户无线上网案例(AC通过三层口对AP进行管理)

组网需求 为一个家庭用户使用的网络架构。该家庭消费用户的上网流量大多是低速流量&#xff0c;例如浏览网页、玩游戏、看视频等。家庭成员使用的无线终端主要为手机、PC、电视机等。终端接入的数量正常情况下在10个以内&#xff0c;偶尔有家庭聚会等特殊情况&#xff0c;终端接…...

Spring Boot 2 (七):Spring Boot 如何解决项目启动时初始化资源

在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等。今天就给大家介绍一个 Spring Boot 神器,专门帮助大家解决项目启动初始化资源操作。 这个神器就是 CommandLineRunner,CommandLineRunner 接口的 Co…...

用Hopper修改代理软件端口

背景 用代理软件可以访问google&#xff0c;但是端口经常不固定&#xff0c;从缺省1080变成了随机。 前几天其实已经用Hopper 3.0看了一次&#xff0c;但是好像不支持go&#xff0c;所以没反编译成功&#xff0c;这次换了4.0&#xff0c;支持了go。 Hopper与逆向 逆向的目的…...

PKI等介绍

PKI 1、概述 KPI名称&#xff1a;Public Key Infrastructure 公钥基础设施 KPI作用&#xff1a;通过加密技术和数字签名保证信息的安全 KPI组成&#xff1a;公钥加密技术、数字证书、CA、RA 2、信息安全三要素 机密型、完整型、身份验证、操作的不可否认性 3、哪些领域…...

《模拟电子技术》半导体原理部分笔记

《模拟电子技术》笔记绪论第一章 常用半导体器件第二章 基本放大电路绪论 有的人把三极管的出现作为电子技术工业革命的开始标志学习架构&#xff1a;半导体器件&#xff08;二极管、三极管、场效应晶体管&#xff09;、基于上述管的放大电路、集成运算放大器、放大电路的频率…...

Python与MySQL交互

第四章 Python与MySQL交互 1、客户端库概述及安装 PyMySQL介绍 PyMySQL是在 Python3.x 版本中用于连接 MySQL 服务器的一个客户端库。 PyMySQL安装&#xff1a; pip install pymysql执行过程如下图&#xff1a; [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来…...

list的模拟实现(万字解读+由浅入深)

先申明一下本篇总体介绍过程是按照逐步深入去写的&#xff0c;所以可能有些同样类型不在一块&#xff01; 前言&#xff1a; 写这篇博客的时候&#xff0c;我是边思考边写它&#xff01;自己其中感觉自己对于list的理解更加的深入&#xff0c;其中提出的很多问题让我明白了lis…...

Java项目:SSM CRM人事管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 CRM人事管理系统&#xff0c;主要功能有&#xff1a; 用户管理&#xff1a;用户查询、添加用户、编辑、删除&#xff1b; 职位管理&#xff1a…...

Qt+opencv 鼠标画线实现几何图形识别并动态创建

前言 使用Qt OpenCV实现&#xff0c;通过鼠标画线绘制几何图形&#xff0c;然后通过opencv进行图形轮廓识别&#xff0c;返回图形顶点&#xff0c;然后创建对应的几何图形添加到场景中。绘制使用QGraphics体系完成。 看效果图&#xff1a; 本文demo在这里 点击下载 环境: …...

HTML5期末大作业——HTML+CSS+JavaScript平遥古城旅游景点介绍(6页)

&#x1f468;‍&#x1f393;学生HTML静态网页基础水平制作&#x1f469;‍&#x1f393;&#xff0c;页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码&#xff0c;这是一个不错的旅游网页制作&#xff0c;画面精明&#xff0c;排版整洁&#xff0c;内容…...

HTML5期末考核大作业 基于HTML+CSS+JavaScript沪上美食(9页)

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…...

Reg注册表读写

在Windows 95及其后继版本中&#xff0c;采用了一种叫做“注册表”的数据库来统一进行管理&#xff0c;将各种信息资源集中起来并存储各种配置信息。按照这一原则&#xff0c;Windows各版本中都采用了将应用程序和计算机系统全部配置信息容纳在一起的注册表&#xff0c;用来管理…...

HTML入门零基础教程(五)

嗨&#xff0c;大家好&#xff0c;我是异星球的小怪同志 一个想法有点乱七八糟的小怪 如果觉得对你有帮助&#xff0c;请支持一波。 希望未来可以一起学习交流。 目录 一、图像标签 1.图像标签 2.图标标签的其它属性 3.图像标签属性注意点&#xff1a; 一、图像标签 1.…...

java通过lock实现同步锁

这里我们是一个卖票的演示代码 其实 同步锁 远不止一个synchronized 它本身有一个 加上锁 和释放锁的过程 为了 让我们更好的理解这个过程 JDK5之后 为我们提供了一个单独的锁工具 lock lock是一个接口 他提供了 synchronized 方法 和 更广泛的语句操作 lock方法 获得锁 unl…...

Java多线程同步工具类:Semaphore原理剖析

Java多线程同步工具类&#xff1a;Semaphore原理剖析 文章目录Java多线程同步工具类&#xff1a;Semaphore原理剖析Semaphore原理实战案例前驱知识准备&#xff1a;AbstractQueuedSynchronizer队列同步器 [Java多线程之&#xff1a;队列同步器AbstractQueuedSynchronizer原理剖…...

C++之面向对象

目录 对象与类 类的语法&#xff1a; C中class与struct的区别&#xff1a; 通过类实例化对象的方式 具体案例 类作用域与分文件编写 创建circle.h头文件 创建源文件circle.cpp 创建all.cpp来作为程序的入口 封装 封装的意义 访问权限符 成员属性私有化 优点 具体…...

Windows-》CMD命令

CMD命令【1】Windows-》CMD命令1.mstsc&#xff1a;打开远程桌面连接。2.services.msc&#xff1a;打开本地服务设置。3.notepad&#xff1a;打开记事本。4.control&#xff1a;打开控制面板。5.regedit&#xff1a;打开注册列表编辑器。6.compmgmt.msc---设备管理器。&#xf…...

秒级使网站变灰,不改代码不上线,如何做到?

注意&#xff1a;文本不是讲如何将网站置灰的那个技术点&#xff0c;那个技术点之前汶川地震的时候说过。 本文不讲如何实现技术&#xff0c;而是讲如何在第一时间知道消息后&#xff0c;更快速的实现这个置灰需求的上线。 实现需求不是乐趣&#xff0c;指挥别人去实现需求才…...

vue教程

vue window本地保存Local Storage 保存&#xff1a;window.localStorage.setItem(名,值); window.localStorage.setItem(token,backdata.data[2]); 查询&#xff1a;window.localStorage.getItem(名); window.localStorage.getItem(token); 删除&#xff1a;window.localStor…...

认识哈希表

作者&#xff1a;~小明学编程 文章专栏&#xff1a;Java数据结构 格言&#xff1a;目之所及皆为回忆&#xff0c;心之所想皆为过往 目录 为什么我们需要哈希表&#xff1f; 哈希表的原理 什么是哈希值 冲突 负载因子 解决冲突 闭散列 开散列/哈希桶 代码实现 不考虑…...

Vue学习:Hello小案例

使用Vue的目的&#xff1a;构建用户界面&#xff08;需要使用容器 摆放这个界面的内容&#xff09; favicon.ico:1 GET http://127.0.0.1:5500/favicon.ico 404 (Not Found) 没有页签图标 在者服务器中 http://127.0.0.1:5500没有/favicon.ico 强制刷新网页&#xff1a;s…...

IDEA创建Java Web项目

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;JAVA开发者…...

C++11中可变参数模板使用

在看同事编写的代码&#xff0c;发现有如下的代码&#xff0c;因为没用过&#xff0c;所以查了一下这是什么语法&#xff0c;通过查询资料知道了这是C11中增加的可变参数模板。 template<class T, class ...Args> bool GetValue(T &value, Args &&...args) c…...

MySQL 中的 sql_mode 选项以及配置

MySQL 中的 sql_mode 选项以及配置 目录MySQL 中的 sql_mode 选项以及配置一、查询与设置 sql_mode1、查询 sql_mode2、设置 sql_mode&#xff08;1&#xff09;通过命令设置&#xff08;2&#xff09;在配置文件中设置二、sql_mode 支持的模式1、ANSI 模式&#xff08;宽松模式…...

[MySQL]运算符

1. 算术运算符 (1). 算术运算符 : , -, *, / 或 DIV, % 或MOD. (2). 例 : (3). 注 : DUAL是伪表.可以看到4/2结果为小数&#xff0c;并不会截断小数部分.(可能与其他语言不同&#xff0c;比如java中&#xff0c;两个操作数如果是整数&#xff0c;则计算得到的也是整数&…...

数据结构——6.4 图的应用

6.4 图的应用 概念 最小生成树 对于一个带权连通无向图G ( E)&#xff0c;生成树不同&#xff0c;每棵树的权(即树中所有边上的权值之和)也可能不同。设R为G的所有生成树的集合&#xff0c;若T为R中边的权值之和最小的生成树&#xff0c;则T称为G的最小生成树 (Minimum-Spanni…...

【分治】Leetcode 库存管理 III

题目讲解 LCR 159. 库存管理 III 本题的含义就是让求出最小的k个数 算法讲解 class Solution { public:void my_qsort(vector<int>& nums, int l, int r){if(l > r) return ;int i l, left l-1, right r1;int key nums[rand() % (r - l 1) l];//完成分三…...

vue3项目使用<img :src=““ />动态加载图片

分享一下使用<img :src"" />动态加载图片时遇到的问题以及解决方法。 下面是部分页面代码&#xff0c;这里我使用了<img :src"itemc.headUrl" />来动态加载图片 这时遇到了问题&#xff0c;因为这里的itemc.headUrl是图片的相对路径&#xff…...

Linux操作系统配置git的ssh

系统&#xff1a;Ubuntu20.04LTS 安装git&#xff1a; sudo apt install git 配置git&#xff1a; # 添加全局git用户和邮箱 git config --global user.name "用户名" git config --global user.email "邮箱" # 查看用户名和邮箱是否有误 git config --li…...

计算机视觉——手机目标检测数据集

这是一个手机目标检测的数据集&#xff0c;数据集的标注工具是labelimg,数据格式是voc格式&#xff0c;要训练yolo模型的话&#xff0c;可以使用脚本改成txt格式&#xff0c;数据集标注了手机&#xff0c;标签名&#xff1a;telephone,数据集总共有1960张&#xff0c;有一部分是…...