自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 收藏
  • 关注

原创 物流项目第十一期(智能调度之分配快递员)

【代码】物流项目第十一期(智能调度之分配快递员)

2025-05-30 14:01:49 523

原创 物流项目第十期(轨迹微服务)

【代码】物流项目第十期(轨迹微服务)

2025-05-30 14:01:24 953 1

原创 物流项目第九期(MongoDB的应用之作业范围)

在项目中,会有两个作业范围,分别是机构作业范围和快递员作业范围,这两个作业范围的逻辑是一致的,就是在地图中进行画出范围,就是其作业范围。对于作业范围是一个由多个坐标点组成的多边形,并且必须是闭合的多边形,这个就比较适合用MongoDB来存储。现在想一个实际需求,用户小王下了订单,如何找到属于该服务范围内的快递员呢?这个就需要使用MongoDB的。查询操作,其原理就是查找小王的位置坐标点与哪个多边形有交叉,这个就是为其服务的快递员。

2025-05-28 22:25:42 770

原创 MongoDB入门之Java的使用

【代码】MongoDB入门之Java的使用。

2025-05-28 22:25:19 758

原创 物流项目第八期(线路规划之Neo4j的应用)

【代码】物流项目第八期(线路规划之Neo4j的应用)

2025-05-27 09:41:59 592

原创 物流项目第七期(路线规划之Neo4j的应用)

对于运输路线规划,总的需求有两个,一个是机构管理,一个是路线管理。

2025-05-27 09:41:20 332

原创 Neo4j入门第二期(Spring Data Neo4j的使用)

*** 运输路线相关操作*//*** 查询两个网点之间最短的路线,查询深度为:10* @param start 开始网点* @param end 结束网点* @return 路线*/

2025-05-23 18:49:52 1014

原创 Neo4j入门第一期(Cypher入门)

Neo4j部署安装。

2025-05-23 18:49:07 567

原创 物流项目第六期(短信微服务——对接阿里云第三方短信服务JAVA代码实现、策略模式 + 工厂模式的应用)

是一个基于自定义注解和 Spring 容器的短信处理器选择工厂,它让系统可以根据不同的短信渠道自动匹配到对应的实现类,实现了解耦、统一调度、高扩展性的架构设计目标。/*** 短信渠道处理器工厂类* 用于根据短信发送渠道(如阿里云、腾讯云等)动态获取对应的 SmsSendHandler 实现类。* 这是典型的【策略模式】 + 【工厂模式】结合使用,实现了解耦和统一调度。*//*** 私有化构造函数,防止外部实例化此类。* 因为这是一个工具类/工厂类,不需要也不应该被 new 出来。*/

2025-05-21 21:50:26 1746

原创 物流项目第五期(运费计算实现、责任链设计模式运用)

*** 运费模板处理链的抽象定义* 该抽象类定义了一个运费模板处理链的基本结构,允许通过链式调用来查找适用的运费模板。* 每个具体的处理器(Handler)需要继承此类并实现 doHandler 方法。*//*** 下一个处理器对象,用于形成处理链。* 如果当前处理器无法找到合适的运费模板,则将请求传递给下一个处理器。*//*** 抽象方法:执行过滤方法,根据输入参数查找运费模板。* @param waybillDTO 输入参数,包含运单的相关信息(如发件城市、收件城市等)

2025-05-21 21:49:15 1008

原创 物流项目第四期(运费模板列表实现)

在查询模板列表时,返回数据时需要将Entity转化成DTO,像这样的转化是可以封装工具类来完成的,下面我们来封装。

2025-05-20 23:38:46 435

原创 物流项目第三期(统一网关、工厂模式运用)

spring:gateway:routes:- id: sl-express-ms-web-manager #路由标识,需要唯一uri: lb://sl-express-ms-web-manager #最终请求转发的微服务,指定的是微服务名,并开启负载均衡predicates: #断言filters: #配置过滤器- ManagerToken #自定义局部过滤器。

2025-05-20 23:37:43 650

原创 物流项目第二期(用户端登录与双token三验证)

小程序端 |v| 调用微信登录接口 || 获取 openid |v| 根据 openid 注册/查询用户 |v| 调用微信获取手机号接口 || 需要先获取 access_token |v| 更新用户手机号(如有变化)|v| 生成你自己的 JWT Token || 返回给前端 |

2025-05-19 18:38:24 432

原创 物流项目第一期(登录业务)

【代码】物流项目第一期(登录业务)

2025-05-19 18:37:17 278

原创 OJ判题系统第6期之判题逻辑开发——设计思路、实现步骤、代码实现(策略模式)

判题逻辑是具体判断用户提交的代码是否正确的核心算法或规则集。它专注于解析沙箱返回的结果,并根据预定义的标准(如测试用例、时间限制、内存限制等)判断代码的正确性。这是一个低层次的模块,主要关注具体的判题细节。策略模式是一种行为型设计模式,它定义了一系列算法或策略,并将每一个算法封装起来,使它们可以互相替换,独立于使用它们的客户端。策略模式就像给系统装上了一个“可插拔的大脑”,你可以根据不同情况(比如语言类型)自动选择最合适的判题规则,而无需改动主流程代码。优势描述✅ 解耦将判题逻辑与业务流程分离。

2025-05-13 15:35:58 1074

原创 OJ判题系统第5期之判题服务开发——设计思路、实现步骤、代码实现

判题服务是整个判题流程的协调者,它负责从外部获取必要的信息(如题目、提交记录),调用沙箱执行代码,并最终处理结果。这是一个高层次的服务,通常与外部接口(如用户提交、数据库更新)打交道。/*** 判题服务接口*//*** 判题主方法* @param questionSubmitId 题目提交 ID* @return 判题完成后的题目提交对象*//*** 判题服务实现类* 主要负责接收一个题目提交 ID,调用远程接口获取题目信息和提交信息,

2025-05-12 09:39:18 949

原创 OJ判题系统第4期之判题机模块架构——设计思路、实现步骤、代码实现(工厂模式、代理模式的实践)

之后我们的项目代码只调用接口,不调用具体的实现类,这样在你使用其他的代码沙箱实现类 时,就不用去修改名称了, 便于扩展。@Data@Builder/*** 接口信息*//*** 执行状态*//*** 判题信息*/// 使用 Lombok 的 @Slf4j 注解,自动生成一个日志对象 log,用于记录运行时信息(例如调试、错误等)@Slf4j/*** 执行用户提交的代码,并返回执行结果。* 这是一个示例实现类,不实际执行任何真实代码,仅模拟响应结果。

2025-05-12 09:38:49 1025

原创 Java 原生实现代码沙箱之代码沙箱 Docker 实现(OJ判题系统第3期)——设计思路、实现步骤、代码实现

这里的话我们不对Docker做过多的讲解,我们会另外出一篇专门讲解Docker,本期主要讲如何通过java来操作Docker。为了进一步提升系统的安全性,把不同的程序和宿主机进行隔离,使得某个程序(应用)的执 行不会影响到系统本身。Docker 技术可以实现程序和宿主机的隔离。至此,代码沙箱系列完结。

2025-05-11 16:11:41 667

原创 Java 原生实现代码沙箱之Java 程序安全控制(OJ判题系统第2期)——设计思路、实现步骤、代码实现

我们不能让每个 java 进程的执行占用的 JVM 最大堆内存空间都和系统默认的一致(鱼皮的 JVM 默认最大占用 8G 内存),实际上应该更小(执行用户的题目代码也不需要这么多),比 如说 256MB。Java 安全管理器(Security Manager)是 Java 提供的保护 JVM、Java 安全的机制,可以实 现更严格的资源和操作限制。1. 如果要做比较严格的权限限制,需要自己去判断哪些文件、包名需要允许读写。本质上还是程序层面的限制,没深 入系统的层面。至此,第二期结束,但是。

2025-05-10 15:39:00 998

原创 Java 原生实现代码沙箱(OJ判题系统第1期)——设计思路、实现步骤、代码实现

至此,第一期的内容结束,不过我们可以发现一个问题,如果想要上线的话,安全么?用户提交恶意代码,怎么办?在受控环境下运行用户代码,并捕获其输出(包括标准输出和错误输出)。将程序执行的标准输出、错误输出、退出码等信息整合后返回给调用者。对所有可能出现的异常进行捕获和处理,避免沙箱自身崩溃。那针对这种情况,我们可以来提高程序安全性。字节码文件,供 JVM 执行。文件及目录,防止磁盘爆满。这部分我放到下一期来讲!

2025-05-09 23:08:00 1475

原创 线程池(面试问答+代码案例)

线程池是一种用于管理和复用线程的机制,它允许在应用程序中创建一组可用线程,并在需要执行 任务时将任务分配给这些线程。线程池的主要目的是优化线程的创建、销毁和管理,以提高多线程应用程序的性能和效率。可以把线程池理解为公司(或者管理机制),线程理解为员工,任务理解为公司的工作具体的好处如下:1. 降低线程创建和销毁的开销:线程的创建和销毁是开销较大的操作,线程池可以重复利用线 程,减少这些开销。(理解为公司不会每个任务都去招新人、用完再开除)

2025-05-07 13:29:38 533

原创 分布式限流(令牌桶限流)——面试答问+代码案例

RateLimiter 是 Redisson 基于 Redis 实现的分布式限流组件,底层使用令牌桶算法,能够控制某 个操作或服务在一定时间内的请求频率,保护系统不被过多的请求压垮。在项目中,考虑到 AI 生成图表是一个耗时且耗费资源的操作,我决定给 AI 生成图表接口增加限 流,具体的策略是:单个用户每秒内最多执行 2 次生成图表操作。具体的实现方式如下:1)集中管理限流器:创建一个 RedisLimiterManager 类,集中管理整个项目中所有的限流器,并提供创建限流器的接口。

2025-05-06 13:22:35 396

原创 一篇文章快速了解AOP(概念+案例代码)

AOP英文全称:Aspect Oriented Programming(面向切面编程、面向方面编程),其实说白了,面向切面编程就是面向特定方法编程。

2025-05-06 10:34:50 761

原创 基于Redis实现优惠券秒杀——第4期(秒杀优化)

如果充足,则在Redis中判断用户是否可以下单,如果set集合中没有该用户的下单数据,则可以下单,并将userId和优惠券存入到Redis中,并且返回0,整个过程需要保证是原子性的,所以我们要用Lua来操作,同时由于我们需要在Redis中查询优惠券信息,所以在我们新增秒杀优惠券的同时,需要将优惠券信息保存到Redis中。在这六个步骤中,有很多操作都是要去操作数据库的,而且还是一个线程串行执行,这样就会导致我们的程序执行很慢,所以我们需要异步程序执行,那么如何加速呢?但是这里还存在两个难点。

2025-05-05 16:12:53 1172

原创 基于Redis实现优惠券秒杀——第3期(分布式锁-Redisson)

为了保证原子性,所以流程图中的业务逻辑也是需要我们用Lua来实现的。2.配置Redisson客户端,在config包下新建。3.使用Redisson的分布式锁。4.替换我们上一期自己写的分布式锁。

2025-05-05 15:52:59 1358

原创 基于Redis实现优惠券秒杀——第2期(分布式锁)

分布式锁的核心思想就是让大家共用同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行执行,这就是分布式锁的核心思路。注意:这里说的可见性并不是并发编程中指的内存可见性,只是说多个进程之间都能感知到变化的意思。分布式锁:满足分布式系统或集群模式下多线程课件并且可以互斥的锁。那么分布式锁应该满足一些什么条件呢?常见的分布式锁有三种。

2025-05-04 16:43:05 689

原创 基于Redis实现优惠券秒杀——第1期(解决超卖问题、一人一单问题)

失败原因分析:由于我们部署了多个Tomcat,每个Tomcat都有一个属于自己的jvm,那么假设在服务器A的Tomcat内部,有两个线程,即线程1和线程2,这两个线程使用的是同一份代码,那么他们的锁对象是同一个,是可以实现互斥的。但是如果在Tomcat的内部,又有两个线程,但是他们的锁对象虽然写的和服务器A一样,但是锁对象却不是同一个,所以线程3和线程4可以实现互斥,但是却无法和线程1和线程2互斥。发送两次请求,header携带同一用户的token,尝试用同一账号抢两张优惠券,发现是可行的。

2025-05-04 16:42:26 926

原创 基于Redis实现商品缓存(解决缓存穿透、缓存雪崩、缓存击穿问题)

思路分析:布隆过滤器其实采用的是哈希思想来解决这个问题,通过一个庞大的二进制数组,根据哈希思想去判断当前这个要查询的数据是否存在,如果布隆过滤器判断存在,则放行,这个请求会去访问redis,哪怕此时redis中的数据过期了,但是数据库里一定会存在这个数据,从数据库中查询到数据之后,再将其放到redis中。如果布隆过滤器判断这个数据不存在,则直接返回。如果获取到了锁的线程,则进行查询,将查询到的数据写入Redis,再释放锁,返回数据,利用互斥锁就能保证只有一个线程去执行数据库的逻辑,防止缓存击穿。

2025-05-03 16:05:57 1091

原创 短信登录功能实现(黑马点评)

早期的方案是session拷贝,就是说虽然每个tomcat上都有不同的session,但是每当任意一台服务器的session修改时,都会同步给其他的Tomcat服务器的session,这样的话,就可以实现session的共享了。所以我们后面都是基于Redis来完成,我们把session换成Redis,Redis数据本身就是共享的,就可以避免session共享的问题了。但是这种方案具有两个大问题。修改sendCode方法。

2025-05-03 15:21:26 1004

原创 关于我的算法文章学习路线

蓝桥杯java真题代刷+详细解析。蓝桥杯练习题代刷+详细解析。

2025-04-30 18:17:00 220

原创 数据结构与算法-贪心算法

给你一个整数数组coins表示不同面额的硬币,另给一个整数amount表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回0。假设每一种面额的硬币有无限个。题目数据保证结果符合 32 位带符号整数。4有四种方式可以凑成总金额:5=55=2+2+15=2+1+1+10只用面额 2 的硬币不能凑成总金额 3。1。

2025-03-02 14:35:37 422

原创 数据结构算法-动态规划

一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?283从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下2. 向下 -> 向下 -> 向右3. 向下 -> 向右 -> 向下286。

2025-03-02 14:35:16 433

原创 数据结构与算法-二叉树

给你二叉树的根节点root,返回它节点值的遍历。

2025-02-20 21:46:19 1034

原创 数据结构与算法-AVL树

【代码】数据结构与算法-AVL树。

2025-02-20 21:45:51 159

原创 数据结构与算法-图

【代码】数据结构与算法-图。

2025-02-20 21:45:33 318

原创 数据结构与算法-排序算法

每轮冒泡不断地比较的两个元素,如果它们是逆序的,则交换它们的位置下一轮冒泡,可以调整未排序的右边界,减少不必要比较每一轮选择,找出最大(最小)的元素,并把它交换到合适的位置。

2025-02-18 21:50:32 1392

原创 数据结构与算法-阻塞队列

【代码】数据结构与算法-阻塞队列。

2025-02-18 21:50:11 300

原创 数据结构与算法-哈希表

"ball" 出现了两次(没有其他单词出现这么多次),因此它是段落中出现频率最高的非禁用词。,除了某个元素只出现一次以外,其余每个元素均出现两次。并且尽管 "hit" 出现的次数更多,但它不能作为答案,因为它是禁用词。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。是由重新排列源单词的所有字母得到的一个新单词。,返回出现频率最高的非禁用词。"hit" 出现了 3 次,但它是禁用词。它的第一个不重复的字符,并返回它的索引。请注意,段落中的单词不区分大小写,整数,并返回它们的数组下标。

2025-02-15 17:57:00 975

原创 数据结构与算法-堆

/ 返回 1.5 ((1 + 2) / 2)是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。返回到目前为止所有元素的中位数。请注意,你需要找的是数组排序后的第。你必须设计并实现时间复杂度为。个最大的元素,而不是第。以内的答案将被接受。

2025-02-15 17:56:43 565

原创 数据结构与算法-双端队列

/ 设置容量大小为3。// 已经满了,返回 false。// 返回 true。// 返回 true。// 返回 true。// 返回 true。// 返回 true。// 返回 true。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。

2025-02-14 10:08:08 474

基于一份网易云音乐数据集,使用python对该该数据集进行数据清洗,包括缺失值处理、异常值检测和处理、重复值处理、数据类型转换、统一化数据格式、数据一致性处理、数据采样、特征工程等

数据加载与合并 首先,我们利用`pandas.read_csv()`函数分别读取了音乐、用户和个人记录三个数据集。为了建立这些数据之间的联系,我们采用了内连接(`inner join`)的方式将`record`表与`user`表基于用户ID进行关联,再通过左连接(`left join`)把合并后的表格与`music`表基于歌曲名相联,从而创建了一个包含所有相关信息的数据框架。 数据清洗与转换 接下来是数据清洗阶段,主要包括删除不必要的列、替换无效值为缺失值并移除含有缺失值的行,以及去重操作。此外,我们还对某些字段进行了特定的格式调整:例如,歌曲名被标准化,只保留主标题;评论时间被拆分为年、月、日三个新特征;地区信息简化到主要地理标识;生日字段则被转换成年龄区间;歌手名字也经过清理确保唯一性。 数据增强 为了便于统计分析,在原始数据基础上添加了一列表示数量,即每条记录对应一个计数单位。这一步骤对于后续的分组汇总至关重要,它允许我们轻松计算不同维度下的频次分布。

2024-12-25

使用scrapy框架爬取微博热搜榜单并保存到mongodb中

使用 Scrapy 框架结合 Selenium 爬取微博热搜榜 1. 实验目标 - 使用 Scrapy 框架与 Selenium 结合,实现对微博热搜榜的自动化爬取。 - 确保能够获取完整的热搜榜数据,并处理需要登录验证的情况。 2. 技术栈 - Scrapy:用于定义爬虫逻辑和管理请求/响应。 Selenium:用于模拟浏览器行为,特别是处理 JavaScript 动态加载的内容。 - webdriver-manager:自动管理 WebDriver 的安装和版本控制。 - ChromeDriver:作为浏览器驱动,模拟 Chrome 浏览器的操作。 3. 实验过程 3.1 初始化项目 - 创建了 Scrapy 项目,并定义了一个名为 `WeiboHotsearchItem` 的 Item 类来存储每条热搜信息。 - 编写了 Spider (`HotSearchSpider`),配置了起始 URL 和允许的域名。

2024-12-24

Tesseract-ocr-w64-setup

### Tesseract-OCR-W64-Setup 下载内容描述 #### 内容概要 **Tesseract OCR** 是一个开源的光学字符识别(Optical Character Recognition, OCR)引擎,由 HP 和 Google 共同开发。Tesseract OCR 支持多种语言,能够从图像中提取文本信息,广泛应用于各种文本识别和数据录入场景。Tesseract-OCR-W64-Setup 是专门为 64 位 Windows 操作系统设计的安装包,包含了 Tesseract OCR 的所有核心组件和依赖项,安装过程简单快捷。 **主要内容包括:** - **Tesseract OCR 引擎**:核心 OCR 引擎,用于从图像中提取文本。 - **语言数据包**:支持多种语言的训练数据,包括英语、中文、日语等。 - **命令行工具**:`tesseract` 命令行工具,用于执行 OCR 任务。 - **示例图像**:一些示例图像,用于测试和验证 OCR 功能。 - **文档和示例**:详细的安装指南、使用说明和示例代码,帮助用户快速上手。 ####

2024-11-18

mongodb-windows-x86下载

### MongoDB Windows x86 下载内容描述 #### 内容概要 **MongoDB** 是一个开源的、高性能的、文档型的 NoSQL 数据库,广泛应用于现代应用程序中。MongoDB Windows x86 版本是专门为 32 位 Windows 操作系统设计的安装包。该版本包含了 MongoDB 数据库的所有核心功能,包括但不限于: - **文档存储**:以 JSON 样式的 BSON 文档形式存储数据。 - **灵活的模式**:支持动态模式,允许在同一个集合中存储不同结构的文档。 - **高性能**:通过内存映射文件和索引优化,实现高效的读写操作。 - **水平扩展**:支持分片和复制集,实现数据的水平扩展和高可用性。 - **丰富的查询语言**:支持复杂的查询操作,包括聚合框架、地理空间查询等。 - **安全特性**:提供身份验证、授权、加密等安全措施。 - **管理工具**:包括 `mongod`(数据库服务)、`mongo`(命令行工具)、`mongos`(分片路由服务)等。 #### 适用人群 **MongoDB Windows x86 版本适用

2024-11-18

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除