- 博客(24)
- 问答 (1)
- 收藏
- 关注
原创 图论算法经典题目解析:DFS、BFS与拓扑排序实战
本文解析了图论中的四大经典算法问题:1)岛屿数量(DFS遍历标记连通区域);2)腐烂橘子(BFS层序遍历模拟感染过程);3)课程表(拓扑排序检测有向图环);4)Trie树实现(前缀树结构处理字符串)。每道题目均配有Java代码实现、详细解题思路和关键易错点分析,涵盖DFS/BFS的核心应用场景及实现技巧,帮助读者掌握图论基础算法。所有解法均来自LeetCode高频题库,具有典型性和实战价值。
2025-07-24 21:17:27
568
原创 Java并发编程实战:三种线程池任务执行策略对比
本文对比了Java中三种线程池任务执行策略:1) CountDownLatch同步执行方案,适合串行化短任务;2) CompletableFuture异步方案,支持真正并发和精确超时控制;3) 基础线程池提交,适合简单后台任务。文章分析了各方案的适用场景和优缺点,并提供了线程池配置建议、异常处理和监控增强等最佳实践。开发者应根据业务需求选择合适策略,在高并发场景中往往需要组合多种方案,才能构建高效可靠的系统。
2025-07-23 15:31:46
664
原创 Redis + Caffeine 实现高效的两级缓存架构
本文介绍了如何使用Redis和Caffeine构建高性能的两级缓存系统。通过对比纯Redis方案,两级缓存在性能(P99响应时间从8ms降至2ms)和系统稳定性(网络异常时成功率仍保持92%)方面具有显著优势。文章展示了三个版本的演进:版本1直接在Service中实现缓存逻辑;版本2利用Spring Cache注解简化代码;最终版本通过自定义CacheManager实现更灵活的控制。这种架构特别适合电商等高并发场景,能有效应对秒杀等流量洪峰,同时提高系统容错能力。项目源码已在GitHub和Gitee开源。
2025-07-23 15:17:36
834
原创 基于redis的Zset实现作者的轻量级排名
本文介绍了一种基于Redis有序集合(ZSet)构建轻量级作者排名系统的实现方案。该系统针对笔记分享平台的需求,通过Redis的高效排序和检索能力,实现了按用户笔记数量进行实时排名的功能。文章详细阐述了系统架构设计、核心代码实现(包括获取排行榜、Redis操作方法和API接口),并强调了性能优化和容错处理的关键点。此外,还提出了扩展思路,如多维度综合排序、时间窗口动态排名以及异步处理优化方案,为系统进一步优化提供了方向。该方案具有轻量、高效、可扩展的特点,适用于各类需要实时排行榜功能的场景。
2025-07-14 21:17:10
287
原创 计算机网络期末考试简答题
实现:当内部网络中的一台主机想传输数据到外部网络时,它先将数据报传输到NAT路由器,路由器检查数据报的包头,获取该数据的源IP信息,并从他的映射表中找出与该IP匹配的转换条目,所选用的内部全局地址来替换内部局部地址。当外部网络对内部主机进行应答时,数据报被送到NAT路由器上,路由器接受目的地址为全局地址的数据报后,通过映射表查找出内部局部地址,然后将数据报的目的地址替换成内部局部地址,并将数据报转发到内部主机。二、什么是CSMA/CD,它是如何工作的?十、什么是HTTP,它的作用是什么?
2023-06-12 10:51:34
705
原创 计算机网络期末知识点总结
DNS:采用客户/服务器模型,运行在UDP上,端口号为53。FTP:采用客户/服务器模型,运行在TCP上,控制端口为21,数据端口为20。主动模式使用规定端口,被动模式端口号取决于客户端。STMP:采用客户/服务器模型,运行在TCP上,端口号为25。POP3:采用客户/服务器模型,运行在TCP上,端口号为110。HTTP:采用客户/服务器模型,运行在TCP上,端口号为80。
2023-06-04 13:58:45
287
原创 《计算机网络自顶向下方法》第二章套接字编程作业——邮件客户端
对于下面所述的实验,您可能需要尝试连接到您的大学邮件服务器和流行的Webmail服务器(如AOL邮件服务器)。由于现在的邮箱都有保护机制,禁止第三方脚本进行发送邮件任务,所以我们必须先对发送方邮箱进行一下设置。通常情况下,我们只需要使用smtplib包即可,若邮件发送成功,则会打印邮件发送成功。您的客户端将需要连接到邮件服务器,使用SMTP协议与邮件服务器进行对话,并向邮件服务器发送电子邮件。代码运行结果如下,同时你也要注意你的邮箱是否收到邮件,如果没受到,请记得检查一下垃圾邮箱。
2023-05-03 15:01:52
469
原创 《计算机网络自顶向下方法》第二章套接字编程作业——UDP Ping程序
您首先需要研究一个用Python编写的简单的ping服务器程序,并实现对应的客户端程序。然而,我们的程序使用更简单的UDP协议,而不是标准互联网控制消息协议(ICMP)来进行通信。在开发过程中,您应该先在计算机上运行`UDPPingerServer.py`,并通过向`localhost`(或127.0.0.1)发送数据包来测试客户端。在这个服务器代码中,30%的客户端的数据包会被模拟丢失。其中*sequence_number*从1开始,一直到10,共10条消息,而*time*则是客户端发送消息时的时间。
2023-04-29 20:57:00
1205
原创 《计算机网络自顶向下方法》第二章套接字编程作业——Web服务器
您的Web服务器应该接受并解析HTTP请求,然后从服务器的文件系统获取所请求的文件,创建一个由响应文件组成的HTTP响应消息,前面是首部行,然后将响应直接发送给客户端。如果你在运行python代码期间修改了html文件的内容,请先重启一遍python程序再刷新网址,才能看见修改后的内容,原因详见上面的代码注释。当你运行这段代码时,会出现 “Ready to serve...” 表示服务器在等待客户机请求传送报文,然后你需要在这段代码文件的相同目录下创建一个html文件,然后填写你想要在浏览器中显示的内容。
2023-04-28 09:22:39
910
原创 【C++】回溯算法——“字符串切割问题”
回溯算法也可以叫做回溯搜索算法,简称回溯法,是一种搜索的方式。回溯是递归的“副产品”,只要有递归的地方就会有对应回溯的过程。在后续内容中,回溯函数就是递归函数,指的都是一个函数。
2023-01-25 16:54:15
739
原创 【C++】回溯算法——“组合问题”
回溯算法也可以叫做回溯搜索算法,简称回溯法,是一种搜索的方式。回溯是递归的“副产品”,只要有递归的地方就会有对应回溯的过程。在后续内容中,回溯函数就是递归函数,指的都是一个函数。
2023-01-23 02:10:38
2430
原创 【蓝桥杯省赛】2013年C++ A组真题及详解
大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。高斯获得博士学位的那天日记上标着:8113请你算出高斯获得博士学位的年月日。
2023-01-19 12:35:19
342
原创 【C++停车场管理系统】理解并学会如何使用队列的相关知识
队列:是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出的线性表,简称FIFO。
2023-01-13 01:25:20
1802
原创 【Python】可视化案例二——动态柱形图的实现
文件的读取操作以及按行读取f.readlines()data_lines.pop(0)删除第一行操作,利用了pop()函数对于没有组织的数据形式,我们可以将其装进数据容器进行处理,例如用split转化为列表进行处理对于给字典的key值添加数据,需要利用捕获异常操作,再进行append添加的操作取出字典所有key值用dict.keys()sorted是默认进行升序排序但不能自定义排序方式,sort可以自定义排序方式,常与lambda一起使用。
2023-01-03 22:52:59
1883
1
原创 【Python】可视化案例一——折线图的开发
Python语言在处理大数据方面具有很强悍的能力。面对海量的数据,我们根本无法通过去阅读一条一条的数据来进行分析,很多时候我们需要将海量的数据处理成我们肉眼可以进行分析的形式。对于肉眼来说,通过图表的形式来进行数据的分析往往是效率比较高的。因此,利用Python处理大数据的能力与将数据进行可视化相结合无疑是相得益彰的。
2022-12-30 22:12:29
1780
原创 【C++双指针法】5道题带你认识双指针法
所谓双指针法,就是利用两个指针(不一定是真指针,能储存相应元素的位置就行)分别标识两个位置,然后通过指针所指元素的性质对数组(或者链表结点)进行修改,同时移动指针完成目标的方法。
2022-11-22 09:37:11
1373
原创 C语言每日一题解:填充每个节点的下一个右侧节点的指针
由题意可知,本题给出的条件是一个完美的二叉树。所以在考虑具体操作和边界问题的时候,可以不需要判断左右儿子是否存在的问题。
2022-11-06 08:51:04
181
原创 数据结构与算法——栈的链式存储结构及实现
由于单链表中有头指针,而栈顶指针也是必不可少的。所以,我们将它们合二为一,即对于栈链来说是不需要头结点的。
2022-07-26 22:11:17
3490
原创 数据结构与算法——线性表的链式储存结构
链式储存结构:n个结点链组成一个链表,即为线性表的链式存储结构。因为此链表的每个结点中只包含一个指针域,所以叫做单链表。我们把链表中第一个结点的存储位置叫做头指针。在单链表中第一个结点前附设一个结点,称为头结点。(头结点的数据域可以不储存任何信息)...
2022-07-23 12:02:36
2428
原创 数据结构与算法——线性表的顺序储存结构
顺序储存结构就是在内存中找了一块地,将一组数据以连续的方式将其储存在这块内存中。而且每个元素的数据类型相同,所以我们可以用C语言的一维数组来实现顺序储存结构。即,把第一个数据元素存到下标为0的位置,接着把线性表相邻的元素储存在数组中相邻的位置。......
2022-07-20 22:26:35
7186
原创 数据结构与算法——时间复杂度
众所周知,设计算法需要提高效率。那么,如何度量一个算法的执行时间呢?我们的计算机前辈们,为了对算法的评判更加科学,研究出了一种叫做事前分析估算的方法。实际上,就是通过在程序运行前通过对代码语句执行的次数进行求和,以此来评判一个算法的效率。所谓的时间复杂度,也就跟这个代码语句的执行次数密切相关。提示以下是本篇文章正。...
2022-07-18 17:43:20
3144
1
空空如也
latex这是什么情况啊,就是出现了?
2021-11-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人