2024三掌柜赠书活动第三十五期:Redis 应用实例
目录
前言
Redis操作都会,却不知道怎么用?
关于《Redis 应用实例》
编辑推荐
内容简介
作者简介
图书目录
《Redis 应用实例》全书速览
拓展:Redis使用场景
实例1:缓存应用
场景描述
实现方法
具体代码示例
实例2:消息队列
场景描述
实现方法
具体代码示例
实例3:排行榜
场景描述
实现方法
具体代码示例
实例4:实时分析
场景描述
实现方法
具体代码示例
结束语
前言
众所周知,Redis是一个开源的高性能键值对数据库,以其出色的读写性能和丰富的数据结构而闻名,它被广泛应用于缓存、消息队列、排行榜、实时分析等场景。在当今信息技术迅猛发展的背景下,Redis以其卓越的性能和灵活性,已经成为众多开发者和企业的首选技术之一。作为一个开源的高性能键值对数据库,Redis不仅支持数据的快速存取,还提供了丰富的数据结构和功能,使其在多种应用场景中都能发挥关键作用。从简单的缓存解决方案到复杂的实时分析系统,Redis的应用实例几乎涵盖了现代软件开发的每一个角落。那么本文就来详细通过一系列具体的应用实例,深入探讨Redis的实际应用,旨在为大家提供一个全面的Redis使用指南。
Redis操作都会,却不知道怎么用?
其实Redis 作为一款高性能缓存服务,在互联网后端有着广泛的应用,也成为内存数据库事实上的标准。程序员想要构建快速响应的服务,就有必要学习 Redis 并应用在工程中。但不少程序员在学完 Redis 的基本操作后,就陷入了一个困境,一问操作都会,但在实际工作中一用就发懵,这是为何?Redis 本质上是一个键值对数据库,支持多种数据结构,如字符串、列表、集合、有序集合和哈希表等。程序员在掌握了数据的插入、查询、修改、删除操作后,面临的难题其实是如何为业务选择最合适的数据结构与解决方案。
我们来了解一下 Redis 的主流应用场景:
- 缓存:作为缓存数据库,减少对后端数据库的访问,提高系统性能。
- 会话存储:在分布式系统中,用来存储用户会话信息,实现会话共享。
- 排行榜和计数器:有序集合适合实现各种排行榜功能,如社交网络的点赞数、评论数等。
- 消息队列:发布/订阅功能可以构建简单的消息队列系统。
- 实时分析:可以用于统计网站的访问量、用户行为分析等。
如果仅靠自己在上述业务场景中去摸索,那不知要费多少功夫,要是有现成的实例可供参考那该多好。
关于《Redis 应用实例》
接下来给大家推荐关于Redis的书籍,这是一本关于如何用Redis的干货图书,一经上市就登上了当当“计算机与互联网”图书排行榜前列。本书从Redis原理剖析讲起到实战技巧,助企业在日常业务实战工作中轻松实现!另外,关注本文博主,点赞+收藏本文,且在本文评论区评论“入手Redis”,将选取四名幸运读者送出纸质版《Redis 应用实例》一本,截止时间:2024.12.12。入手《Redis 应用实例》传送门:https://item.jd.com/14873828.html或者《Redis应用实例》(黄健宏)【简介_书评_在线阅读】 - 当当图书,个人觉得这本书非常的不错,是一本不可多得的好书,值得拥有去学习。
编辑推荐
适读人群 :本书适合对Redis有基本了解、想要了解Redis以及键值数据库具体应用的技术人群,适合用于作为培训教程,主用于Redis入门之后、深入了解Redis源码之前的技术进阶。
1.内容实用。帮助读者更好地了解如何使用Redis解决实际问题,应对在真实开发场景中可能面对的挑战。
2.知识点丰富。全书32个应用实例覆盖了Redis常见的应用场景和使用方法。不仅介绍使用Redis命令实现应用实例的方法,还给出与之对应的可运行的Python代码。易于理解,又方便读者做进一步的拓展学习或者进行代码移植。
3.帮助Redis初学者快速将Redis应用到实际场景中,引导有一定基础的Redis开发者探索Redis的高级特性,提升系统性能。
4.通过对书中介绍的Redis应用实例的学习,能面提升Redis技能,解锁Redis开发的无限可能,真正成为能够使用Redis解决各类实际问题的技术高手。
本书特色
●贴近实战:书中所有实例均取材于实际应用场景,展示Redis在实际开发中的多样性,方便读者将所学方法复用到项目中,提升开发效率。
●内容全面:书中既介绍了经典的缓存、锁、数据结构等低层应用,又介绍了紧跟潮流的自动补全、排行榜、地理位置等高层应用,为读者提供全面的技术内容。
●代码详尽:书中所有应用实例均基于新版Redis和Python编写,每个实例都是可执
行的,并包含了必需的API,读者可以方便地在这些实例的基础上进行测试、修改和扩展。
●配套视频:作者专为书中较复杂的知识点录制了“Redis应用十讲”视频讲解,读者可以扫描对应章节首页的码免费观看,并获得完整视频讲解PPT课件。
●简洁精练:书中应用实例简洁、易懂,各技术层级的读者均可轻松阅读。
内容简介
本书将从内部组件、外部应用和数据结构3个方面为读者介绍Redis常见、经典的用法与实例,并且所有实例均附有完整的Python代码,方便读者学习和参考。全书分3个部分:第一部分讲内部组件,介绍的实例通常用于系统内部,如缓存、锁、计数器、迭代器、速率限制器等,这些都是很多系统中不可或缺的部分;第二部分讲外部应用,介绍的实例都是一些日常常见的、用户可以直接接触到的应用,如直播弹幕、社交关系、排行榜、分页、地理位置等;第三部分讲数据结构,介绍的实例是一些使用Redis实现的常见数据结构,如先进先出队列、栈、优先队列和矩阵等。本书希望通过展示常见的Redis应用实例来帮助读者了解使用Redis解决各类问题的方法,并加深读者对Redis各项命令及数据结构的认识,使读者真正成为能够使用Redis解决各类问题的Redis专家。
本书适合对Redis有基本了解且想要进一步掌握Redis及键值数据库具体应用的技术人群,是理想的Redis技术进阶读物。
作者简介
黄健宏
计算机技术图书作者和译者,关注的领域包括数据库、编程语言、操作系统,以及算法和数据结构。
他从2011年开始关注Redis,翻译过Redis文档,注释过Redis源代码,发表了大量关于Redis的文章,还撰写了广受Redis使用者喜爱的源码分析书《Redis设计与实现》,并翻译了热销的Redis入门书《Redis实战》。
他还是《Redis使用手册》的作者,《SQL实战(第2版)》、《Go语言趣学指南》和《Go Web编程》的译者。
图书目录
第一部分 内部组件
第 1章 缓存文本数据3
1.1 需求描述3
1.2 解决方案:使用字符串键缓存单项数据3
1.3 实现代码:使用字符串键缓存单项数据4
1.4 解决方案:使用JSON 哈希键缓存多项数据5
1.5 实现代码:使用JSON 哈希键缓存多项数据6
1.6 重点回顾9
第 2章 缓存二进制数据11
2.1 需求描述11
2.2 解决方案11
2.3 实现代码12
2.4 重点回顾13
第3章 锁15
3.1 需求描述15
3.2 解决方案15
3.3 实现代码16
3.4 扩展方案:带自动解锁功能的锁17
3.5 重点回顾19
第4章 带密码保护功能的锁21
4.1 需求描述21
4.2 解决方案21
4.3 实现代码22
4.4 重点回顾23
第5章 自增数字ID25
5.1 需求描述25
5.2 解决方案:使用字符串键25
5.3 实现代码:使用字符串键实现自增数字ID生成器26
5.4 解决方案:使用哈希键27
5.5 实现代码:使用哈希键实现自增数字ID生成器27
5.6 重点回顾28
第6章 计数器29
6.1 需求描述29
6.2 解决方案:使用字符串键29
6.3 实现代码:使用字符串键实现计数器30
6.4 解决方案:使用哈希键31
6.5 实现代码:使用哈希键实现计数器32
6.6 重点回顾33
第7章 唯一计数器35
7.1 需求描述35
7.2 解决方案:使用集合键35
7.3 实现代码:使用集合键实现唯一计数器36
7.4 解决方案:使用HyperLogLog键37
7.5 实现代码:使用HyperLogLog键实现唯一计数器38
7.6 重点回顾39
第8章 速率限制器41
8.1 需求描述41
8.2 解决方案41
8.3 实现代码42
8.4 重点回顾45
第9章 二元操作记录器47
9.1 需求描述47
9.2 解决方案47
9.3 实现代码48
9.4 重点回顾49
第 10章 资源池51
10.1 需求描述51
10.2 解决方案51
10.3 实现代码52
10.4 重点回顾54
第 11章 紧凑字符串57
11.1 需求描述57
11.2 解决方案58
11.3 实现代码58
11.4 重点回顾60
第 12章 数据库迭代器61
12.1 需求描述61
12.2 解决方案61
12.3 实现代码62
12.4 扩展实现:数据库采样程序64
12.5 重点回顾66
第 13章 流迭代器67
13.1 需求描述67
13.2 解决方案:使用XRANGE67
13.3 实现代码:使用XRANGE实现
流迭代器69
13.4 解决方案:使用XREAD70
13.5 实现代码:使用XREAD实现流 迭代器71
13.6 重点回顾73
第二部分 外部应用
第 14章 消息队列77
14.1 需求描述77
14.2 解决方案77
14.3 实现代码78
14.4 扩展实现:直播间弹幕系统 80
14.5 重点回顾82
第 15章 标签系统85
15.1 需求描述85
15.2 解决方案85
15.3 实现代码86
15.4 扩展实现:为根据标签查找目
标功能加上缓存88
15.5 重点回顾90
第 16章 自动补全91
16.1 需求描述91
16.2 解决方案91
16.3 实现代码92
16.4 扩展实现:自动移除冷门输入建议表94
16.5 重点回顾96
第 17章 抽奖97
17.1 需求描述97
17.2 解决方案97
17.3 实现代码98
17.4 重点回顾100
第 18章 社交关系101
18.1 需求描述101
18.2 解决方案101
18.3 实现代码102
18.4 重点回顾105
第 19章 登录会话107
19.1 需求描述107
19.2 解决方案107
19.3 实现代码108
19.4 重点回顾110
第 20章 短网址生成器111
20.1 需求描述111
20.2 解决方案111
20.3 实现代码113
20.4 扩展实现:为短网址生成器加上缓存114
20.5 重点回顾116
第 21章 投票117
21.1 需求描述117
21.2 解决方案117
21.3 实现代码119
21.4 重点回顾121
第 22章 排行榜123
22.1 需求描述123
22.2 解决方案123
22.3 实现代码124
22.4 重点回顾126
第 23章 分页127
23.1 需求描述127
23.2 解决方案127
23.3 实现代码129
23.4 重点回顾131
第 24章 时间线133
24.1 需求描述133
24.2 解决方案133
24.3 实现代码135
24.4 重点回顾138
第 25章 地理位置139
25.1 需求描述139
25.2 解决方案139
25.3 实现代码140
25.4 扩展实现:实现“摇一摇”功能142
25.5 扩展实现:为“摇一摇”功 能设置缓存143
25.6 重点回顾145
第三部分 数据结构
第 26章 先进先出队列149
26.1 需求描述149
26.2 解决方案149
26.3 实现代码150
26.4 扩展实现:反方向的队列152
26.5 重点回顾153
第 27章 定长队列和淘汰队列155
27.1 需求描述155
27.2 解决方案155
27.3 实现代码157
27.4 扩展实现:淘汰队列158
27.5 重点回顾160
第 28章 栈(后进先出队列)161
28.1 需求描述161
28.2 解决方案161
28.3 实现代码162
28.4 扩展实现:为栈添加更多方法163
28.5 重点回顾164
第 29章 优先队列165
29.1 需求描述165
29.2 解决方案165
29.3 实现代码167
29.4 扩展实现:为优先队列加上阻塞操作169
29.5 重点回顾170
第30章 循环队列171
30.1 需求描述171
30.2 解决方案171
30.3 实现代码172
30.4 扩展实现:无重复元素的循环队列174
30.5 重点回顾176
第31章 矩阵177
31.1 需求描述177
31.2 解决方案:使用列表177
31.3 实现代码:使用列表实现矩阵存储178
31.4 解决方案:使用位图180
31.5 实现代码:使用位图实现矩阵存储181
31.6 重点回顾184
第32章 逻辑矩阵185
32.1 需求描述185
32.2 解决方案185
32.3 实现代码186
32.4 扩展实现:优化内存占用188
32.5 重点回顾192
《Redis 应用实例》全书速览
拓展:Redis使用场景
最后再来分享一下关于redis的使用场景,这里大概用了四个使用场景来讲,具体如下所示。
实例1:缓存应用
场景描述
在高流量的Web应用中,数据库查询是一个耗时的操作,特别是在读多写少的场景下。使用Redis作为缓存层可以显著提高应用的响应速度。
实现方法
- 缓存热点数据:将频繁访问的数据,如用户信息、商品详情等,存储在Redis中。
- 设置过期时间:为缓存数据设置合理的过期时间,保证数据的新鲜度。
- 缓存穿透处理:对于查询结果为空的情况,也在Redis中设置一个空值的缓存,避免直接查询数据库。
具体代码示例
// Java Jedis客户端使用示例
Jedis jedis = new Jedis("localhost");
// 写入缓存
jedis.set("user:1000", "{\"name\":\"John\", \"age\":30}");
// 读取缓存
String userData = jedis.get("user:1000");
实例2:消息队列
场景描述
在需要异步处理任务的场景中,如订单处理、邮件发送等,Redis可以作为一个简单高效的消息队列系统。
实现方法
- 使用List数据结构:生产者将消息推送到List的一个端,消费者从另一个端弹出消息。
- 原子操作:利用Redis的RPUSH和BLPOP命令保证消息的原子性操作。
具体代码示例
// 生产者
Jedis jedis = new Jedis("localhost");
jedis.rpush("messageQueue", "Hello World");// 消费者
List<String> messages = jedis.blpop(0, "messageQueue");
String message = messages.get(0);
实例3:排行榜
场景描述
在需要实时更新排行榜的应用中,如游戏得分、商品销量等,Redis的有序集合(ZSet)是一个理想的选择。
实现方法
- 使用ZSet存储得分:每个成员的得分随着用户行为实时更新。
- 范围查询:利用ZREVRANGE命令快速获取排行榜的前N名。
具体代码示例
// 用户得分更新
Jedis jedis = new Jedis("localhost");
jedis.zadd("leaderboard", 95, "user:1001");
jedis.zadd("leaderboard", 100, "user:1002");// 获取排行榜前3名
Set<String> topUsers = jedis.zrevrange("leaderboard", 0, 2);
实例4:实时分析
场景描述
在需要实时分析用户行为的场景中,如页面访问量统计、用户活跃度分析等,Redis提供了快速的数据聚合能力。
实现方法
- 使用HyperLogLog:对独立用户进行去重统计。
- 使用GeoAdd:对用户地理位置信息进行存储和查询。
具体代码示例
// 独立用户去重统计
Jedis jedis = new Jedis("localhost");
jedis.pfadd("uniqueVisitors", "user:1001");
jedis.pfadd("uniqueVisitors", "user:1002");// 获取独立用户数量
long uniqueCount = jedis.pfcount("uniqueVisitors");
结束语
通过本文的详细介绍,不难看出Redis以其卓越的性能和灵活性,在多种应用场景中发挥着重要作用,尤其是Redis在现代应用开发中扮演的多面手角色。无论是作为缓存层提高性能,还是作为消息队列处理异步任务,亦或是构建实时排行榜和分析系统,Redis都以其独特的优势,为用户提供了强大的技术支持和灵活的开发选项,通过上面的实例可以看到Redis在缓存、消息队列、排行榜和实时分析等方面的强大能力。随着技术的不断发展,Redis将继续在现代应用架构中扮演关键角色,为用户提供更加丰富和高效的服务,帮助开发者构建更加高效、可靠的应用程序。期待各位开发者继续探索Redis的更多可能,利用其强大的功能,为用户创造更加丰富和便捷的数字体验。
相关文章:
2024三掌柜赠书活动第三十五期:Redis 应用实例
目录 前言 Redis操作都会,却不知道怎么用? 关于《Redis 应用实例》 编辑推荐 内容简介 作者简介 图书目录 《Redis 应用实例》全书速览 拓展:Redis使用场景 实例1:缓存应用 场景描述 实现方法 具体代码示例 实例2&a…...
Android 第三方框架:RxJava:源码分析:观察者模式
文章目录 观察者模式RxJava中的观察者模式总结 观察者模式 RxJava中的观察者模式 以Observable、ObservableOnSubscribe、Observer为例 Observable是被观察者 负责发射事件或数据 Observer是观察器 负责对从被观察者中获取的数…...
开源模型应用落地-安全合规篇-用户输入价值观判断(四)
一、前言 在深度合规功能中,对用户输入内容的价值观判断具有重要意义。这一功能不仅仅是对信息合法性和合规性的简单审核,更是对信息背后隐含的伦理道德和社会责任的深刻洞察。通过对价值观的判断,系统能够识别可能引发不当影响或冲突的内容,从而为用户提供更安全、更和谐的…...
【js逆向专题】13.jsvmp补环境篇一
目录 一.了解jsvmp技术1. js虚拟机保护方案2.jsvmp实现原理3. 模拟jsvmp执行过程 二.环境检测1. 什么是环境检测2.案例讲解 三. 项目实战1. 案例11.逆向目标2. 项目分析1.补第一个referrer2. 调试技巧13. 调试技巧24. 补充sign5. 补 length6. 参数长短补充 3. 逆向结果 2. 案例…...
Java---每日小题
题目1-极大极小游戏 给你一个下标从 0 开始的整数数组 nums ,其长度是 2 的幂。 对 nums 执行下述算法: 设 n 等于 nums 的长度,如果 n 1 ,终止 算法过程。否则,创建 一个新的整数数组 newNums ,新数组长度…...
leetcode 23. 合并 K 个升序链表
给你一个链表数组,每个链表都已经按升序排列。 输入:lists [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下: [1->4->5,1->3->4,2->6 ] 将它们合并到一个有序链表中得到。 1->…...
Windows 小记 6 -- 为什么我的全局消息钩子卸载不掉?
Hook dll 在其消息循环中被卸载。强制它们进入消息循环有助于卸载它们。在 UnhookWindowsHookEx 之后添加此代码以强制唤醒所有消息循环: DWORD dwResult; SendMessageTimeout(HWND_BROADCAST, WM_NULL, 0, 0, SMTO_ABORTIFHUNG|SMTO_NOTIMEOUTIFNOTHUNG, 1000, &a…...
Python+onlyoffice 实现在线word编辑
onlyoffice部署 version: "3" services:onlyoffice:image: onlyoffice/documentserver:7.5.1container_name: onlyofficerestart: alwaysenvironment:- JWT_ENABLEDfalse#- USE_UNAUTHORIZED_STORAGEtrue#- ONLYOFFICE_HTTPS_HSTS_ENABLEDfalseports:- "8080:8…...
LC低通滤波器Bode图分析(传递函数零极点)
LC低通滤波器 我们使得L4.7uH,C220uF;电感L的阻抗为Xl;电容C的阻抗为Xc; 传递函数 H ( s ) u o u i X C X C X L 1 s C 1 s C s L 1 1 s 2 L C (其中 s j ω ) H(s)\frac{u_{o} }{u_{i} } \frac{…...
【机器学习】机器学习的基本分类-无监督学习(Unsupervised Learning)
无监督学习(Unsupervised Learning) 无监督学习是一种机器学习方法,主要用于没有标签的数据集。其目标是从数据中挖掘出潜在的结构和模式。常见的无监督学习任务包括 聚类、降维、密度估计 和 异常检测。 1. 无监督学习的核心目标 1.1 聚类…...
六、docker compose单机容器编排工具
六、docker compose单机容器编排工具 6.1 compose简介 Compose是一个用于定义和运行多容器Docker应用程序的工具。您可以使用Compose文件来配置应用程序的服务,然后使用单个命令从配置中创建并启动所有服务。compose的配置文件示例如下 compose的github网址&#…...
Python3 operator 模块
Python2.x 版本中,使用 cmp() 函数来比较两个列表、数字或字符串等的大小关系。 Python 3.X 的版本中已经没有 cmp() 函数,如果你需要实现比较功能,需要引入 operator 模块,适合任何对象,包含的方法有: o…...
沪合共融 “汽”势如虹 | 昂辉科技参加合肥上海新能源汽车产业融合对接会
为积极响应制造业重点产业链高质量发展行动号召,促进合肥、上海两地新能源汽车产业链上下游企业融合对接、协同发展,共同打造长三角世界级新能源汽车产业集群,11月28日,合肥市工信局组织部分县区工信部门及全市30余户新能源汽车产…...
访问http网页强制跳转到了https的解决办法
目录 解决浏览器自动从 HTTP 重定向到 HTTPS 的问题问题原因:HSTS(HTTP Strict Transport Security)什么是 HSTS?HSTS 的工作原理 如何解决?1. 清除浏览器的 HSTS 信息在 Chrome 中清除 HSTS 信息:在 Firef…...
PDF处理的创新工具:福昕低代码平台尝鲜
在当今数字化时代,PDF文件的处理和管理变得越来越重要。福昕低代码平台是新发布的一款创新的工具,旨在简化PDF处理和管理的流程。通过这个平台,用户可以通过简单的拖拽界面上的按钮,轻松完成对Cloud API的调用工作流,而…...
EmoAva:首个大规模、高质量的文本到3D表情映射数据集。
2024-12-03,由哈尔滨工业大学(深圳)的计算机科学系联合澳门大学、新加坡南洋理工大学等机构创建了EmoAva数据集,这是首个大规模、高质量的文本到3D表情映射数据集,对于推动情感丰富的3D头像生成技术的发展具有重要意义…...
SpringMVC ——(1)
1.SpringMVC请求流程 1.1 SpringMVC请求处理流程分析 Spring MVC框架也是⼀个基于请求驱动的Web框架,并且使⽤了前端控制器模式(是⽤来提供⼀个集中的请求处理机制,所有的请求都将由⼀个单⼀的处理程序处理来进⾏设计,再根据请求…...
测试工具LoadRunner Professional脚本编写-脚本设置
勾选扩展日志-全选 原因:在并发完成后,通过抽查关键用户日志的方式,检查参数化是否如预期一致,比如抽查用户1(仓库一,物品一),用户11(仓库二,物品一),用户100(仓库十,物品十) 设置忽略思考时间 原因:是否忽略思考时间,请求数可能会有几十倍的差距…...
运用蓝光三维扫描仪的艺术与科技的完美融合-石膏头像模型3D扫描真实复刻
石膏头像具有独特的魅力,每一处细节都彰显着艺术之美。无论是深邃的眼神,还是精致的轮廓,都让人陶醉其中。 随着雕塑形式的日渐丰富,越来越多的新材料和新的塑造手法被运用到雕塑创作中,蓝光三维扫描技术的应用&#…...
文本域设置高度 加上文字限制并show出来:
文本域设置高度 :rows"4" 加上文字限制并show出来: maxlength"30" show-word-limit 效果: <el-form-item label"产品备注" prop"remark"><el-input v-model"form.remark" type"textarea"…...
探索数据确权、隐私保护、安全共享等方面的挑战与解决方案
在数据确权、隐私保护、安全共享等方面,当前确实面临着诸多挑战,同时也存在一些有效的解决方案。以下是对这些方面的详细探讨: 一、数据确权 挑战 权属关系模糊:由于数据具有复杂性和隐蔽性等特点,使得数据的权属关…...
麒麟 V10(ky10.x86_64)无网环境下 openssl - 3.2.2 与 openssh - 9.8p1 升级【最全教程】
目录 背景 安装包下载 上传解压安装包 安装zlib 安装OpenSSL 安装OpenSSH 验证 背景 近期,项目上线已进入倒计时阶段,然而在至关重要的安全检查环节中,却惊现现有的 OpenSSH 存在一系列令人担忧的漏洞: OpenSSH 资源管理错…...
前端技术(23) : 聊天页面
来源: GPT生成之后微调 效果图 HTML代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>聊天</t…...
ArcMap 处理河道坡度、计算污染区、三维爆炸功能
ArcMap 处理河道坡度、计算污染区、三维爆炸功能今天分析 一、计算河道方向坡度 1、折线转栅格 确定 2、提取河道高程值 确定后展示河流的高程值 3、计算坡向数据 确定后展示 4、计算坡度数据 确定后展示 二、计算上游集水区污染值 1、填挖处理 确定 2、计算流向 确定 3、计算…...
数据结构 (30)计算式查找法——哈希法
前言 数据结构中的计算式查找法,特别是哈希法(又称散列法、杂凑法、关键字地址计算法),是一种高效的查找技术。 一、哈希法的基本概念 哈希法是通过一个哈希函数将关键字映射到哈希表中的某个位置,从而实现快速查找的技…...
电子商务人工智能指南 4/6 - 内容理解
介绍 81% 的零售业高管表示, AI 至少在其组织中发挥了中等至完全的作用。然而,78% 的受访零售业高管表示,很难跟上不断发展的 AI 格局。 近年来,电子商务团队加快了适应新客户偏好和创造卓越数字购物体验的需求。采用 AI 不再是一…...
交易系统:线上交易系统流程详解
大家好,我是汤师爷~ 今天聊聊线上交易系统流程详解。 线上交易系统为新零售连锁商家提供一站式线上交易解决方案。其核心目标是,通过数字化手段扩大商家的服务范围,突破传统门店的地理限制。系统支持电商、O2O等多种业务形态,为…...
如何通过自学成长为一名后端开发工程师?
大家好,我是袁庭新。最近,有星友向我提出了一个很好的问题:如何通过自学成为一名后端开发工程师? 为了解答这个疑问,我特意制作了一个视频来详细分享我的看法和建议。 戳链接:如何通过自学成长为一名后端开…...
实际车辆行驶轨迹与预设路线偏离检测的Java实现
准备工作 本项目依赖于两个关键库:JTS Topology Suite(简称JTS),用于几何对象创建和空间分析;以及GeoTools,用于处理坐标转换和其他地理信息任务。确保开发环境中已经包含了这两个库,并且正确配…...
pci_resource相关函数
一、介绍 pci_resource_start函数用于获取PCI设备中指定Bar寄存器记录资源起始地址, 函数原型: resource_size_t pci_resource_start(struct pci_dev *dev, int bar) 参数: dev: PCI 设备结构体指针 bar: BAR 寄存器索引 (0-5) 返回&a…...
Android Studio 历史版本下载
Android Studio 历史版本下载 官方链接:https://developer.android.google.cn/studio/archive 通过gradle插件版本反查Android Studio历史版本 Android Studio Ladybug | 2024.2.1 October 1, 2024 【https://redirector.gvt1.com/edgedl/android/studio/ide-zip…...
Jupyter Lab打印日志
有时候在 jupyter 中执行运行时间较长的程序,且需要一直信息,但是程序执行到某些时候就不再打印了。 可以开启 日志控制台,将日志信息记录在控制台中。 参考:https://www.autodl.com/docs/jupyterlab/...
guava缓存的get方法的回调函数讲解一下
CacheBuilder.newBuilder()//设置缓存初始大小,应该合理设置,后续会扩容.initialCapacity(10)//最大值.maximumSize(100)//并发数设置.concurrencyLevel(5)//缓存过期时间,写入后10分钟过期.expireAfterWrite(600,TimeUnit.SECONDS)//统计缓存…...
【双分派小结】
双分派(Double Dispatch)是一种面向对象编程中的设计模式,通常用于实现多态性,尤其是在涉及多个对象交互时。它的基本思想是通过两个不同的对象来确定方法调用,而不仅仅是依赖于一个对象。 双分派的工作原理 在普通的…...
Python100道练习题
Python100道练习题 BIlibili 1、两数之和 num1 20 num2 22result num1 num2print(result)2、一百以内的偶数 list1 []for i in range(1,100):if i % 2 0:list1.append(i) print(list1)3、一百以内的奇数 # 方法一 list1 [] for i in range(1,100):if i % 2 ! 0:lis…...
Scala—Slice(提取子序列)方法详解
Scala—Slice(提取子序列)方法详解 在 Scala 中,slice 方法用于从集合中提取一个连续的子序列(切片)。可以应用于多种集合类型,如 List、Array、Seq 等。 一、slice 方法的定义 slice 根据提供的起始索引…...
nginx根据报文里字段转发至不同地址
nginx接收到post请求.请求报文里是一个json字符串,字符串里有个字段id。 根据id不同,转发到不同地址。 如果idaaa,转发到www.aaa.com.test 如果idbbb,转发到www.bbb.com.test 如何配置,请提供一个nginx.conf 要在 Nginx 中根据 POST 请求的 JSON 负载中的…...
Kafka单机及集群部署及基础命令
目录 一、 Kafka介绍1、kafka定义2、传统消息队列应用场景3、kafka特点和优势4、kafka角色介绍5、分区和副本的优势6、kafka 写入消息的流程 二、Kafka单机部署1、基础环境2、iptables -L -n配置3、下载并解压kafka部署包至/usr/local/目录4、修改server.properties5、修改/etc…...
TCP Robot Send Recive
Function main String data$ 定义字符串变量 SetNet #205, "192.168.0.1", 2004, CRLF, NONE, 0 设置端口号IP地址 OpenNet #205 As Server 端口号对应pc机的端口号 Print "等待201端口连接" WaitNet #201 等待201网…...
旅游管理系统|Java|SSM|VUE| 前后端分离
【重要1⃣️】前后端源码万字文档部署文档 【重要2⃣️】正版源码有问题包售后 【包含内容】 【一】项目提供非常完整的源码注释 【二】相关技术栈文档 【三】源码讲解视频 【其它服务】 【一】可以提供远程部署安装…...
qt-everywher交叉编译e-src-5.15.2
简化配置的方式: 你完全可以通过直接配置 安装目录、编译链 和 目标架构 来完成交叉编译,而不需要修改 mkspecs 配置。以下是如何通过简化配置来进行交叉编译 Qt 的步骤。 准备交叉编译工具链 首先,确保你已经安装了交叉编译工具链ÿ…...
Cursor vs VSCode:主要区别与优势分析
Cursor - The AI Code Editor 1. AI 集成能力 Cursor的优势 原生AI集成: # Cursor可以直接通过快捷键调用AI # 例如:按下 Ctrl K 可以直接获取代码建议 def complex_function():# 在这里,你可以直接询问AI如何实现功能# AI会直接在编辑器中…...
Qt 小项目 学生管理信息系统
主要是对数据库的增删查改的操作 登录/注册界面: 主页面: 添加信息: 删除信息: 删除第一行(支持多行删除) 需求分析: 用QT实现一个学生管理信息系统,数据库为MySQL 要求…...
Hadoop3集群实战:从零开始的搭建之旅
目录 一、概念 1.1 Hadoop是什么 1.2 历史 1.3 三大发行版本(了解) 1.4 优势 1.5 组成💗 1.6 HDFS架构 1.7 YARN架构 1.8 MapReduce概述 1.9 HDFS\YARN\MapReduce关系 二、环境准备 2.1 准备模版虚拟机 2.2 安装必要软件 2.3 安…...
软件工程复习记录
基本概念 软件工程三要素:方法、工具、过程 软件开发方法:软件开发所遵循的办法和步骤,以保证所得到的运行系统和支持的文档满足质量要求。 软件开发过程管理 软件生命周期:可行性研究、需求分析、概要设计、详细设计、编码、测…...
爬虫运行后数据如何存储?
爬虫运行后获取的数据可以存储在多种不同的存储系统中,具体选择取决于数据的规模、查询需求以及应用场景。以下是一些常见的数据存储方法: 1. 文件系统 对于小型项目或临时数据存储,可以直接将数据保存到本地文件中。常见的文件格式包括&…...
【C语言】C语言的潜规则:运行环境对C程序执行特性的影响
C语言的潜规则:C语言的执行会因为它的运行环境被赋予不同的特性 C语言是一种非常底层、高效、灵活的编程语言,但这种灵活性也带来了很多不确定性。C语言的行为在很大程度上依赖于其运行环境(编译器、操作系统、硬件架构等)。这也…...
Win11 24h2 不能正常ensp
Win11 24h2 不能正常ensp 因为Win11 24h2的内核大小更改,目前virtualbox在7.1.4中更新解决了。而ensp不支持5.2.44之后的virtualbox并已停止维护,不再进行5.2.44修复,virtualbox 5.2.24的ntdll文件sizeofimage问题,此问题导致ens…...
【认证法规】安全隔离变压器
文章目录 定义反激电源变压器 定义 安全隔离变压器(safety isolating transformer),通过至少相当于双重绝缘或加强绝缘的绝缘使输入绕组与输出绕组在电气上分开的变压器。这种变压器是为以安全特低电压向配电电路、电器或其它设备供电而设计…...
【北京迅为】iTOP-4412全能版使用手册-第六十七章 USB鼠标驱动详解
iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、…...