- 博客(250)
- 收藏
- 关注
原创 Python 的pathlib文件处理
在使用Python处理文件路径时,强烈建议使用pathlib。pathlib以面向对象的方式处理文件路径,既避免了很多陷阱,也能使执行许多路径的相关操作变得更容易。本篇总结了常用的使用pathlib进行文件路径处理的方法。
2025-01-14 15:15:53
445
原创 Java如何实现大正整数相加
对于,计算机,无法计算太大的数,进行加运算。我们可以将大的数,转成一个个小的整数,创建两个int[],长度是较大整数的位数+1。大整数一般是使用字符串进行存储的,倒序转化到两个整数数组中,倒叙是为了,满足习惯的顺序遍历数组。然后按位相加,记录结果到,多一位的数组中,多出来的哪一位就是为了给可能出现的进位,预留的位置。给出两个很大的正整数,要求实现程序求出两个正整数之和。超出Java中的Long类型的范围的正整数,如何求和。使用到小学的数学了,对于大的数,小学老师会教,列竖式进行计算。时间复杂度为O(n)。
2025-01-13 15:01:57
285
原创 Java删去k个数字后的那个最小值
很简单,把原整数的所有数字从左到右进行比较, 如果发现某一位数字大于它右面的数字,那么在删除该数字后,必然会使该数位的值降低,因为右面比它小的数字顶替了它的位置。但是不代表,优先删除最高位的整数,例如1593210,如果移除最高位1,结果是593210,这不是最小值,因为有193210就比593210小。这删除一位的分析,最小值,能直接看出来,移除9是最小的,153210。但是计算机,是不能看的,所以要找出,删除一位时的规律,才能写程序。此时,无论删除那个数字,结果都是从7位整数,变为6位整数。
2025-01-13 15:00:35
322
原创 死锁故障排查留存
现在,回到项目中来,由于我们的项目中有一个比较耗时的操作,超时时间固定是60秒,这个方法本来应该在Seata代理数据源之后做,不知道为什么服务器上先执行了,导致main线程等待了60秒,之后才执行SeataDataSourceBeanPostProcessor#postProcessAfterInitialization()因此,main线程很有可能会先持有该锁,当初始化到Seata的时候,又要获取该锁,于是出现了锁争用。(PS:我猜测可能是环境不同造成的,包括操作系统不同和JDK版本不同)
2025-01-08 09:16:11
855
原创 Spring Retry是如何解问题的
工作中,经常遇到需要重试的场景,最简单的方式可以用try...catch...加while循环来实现。那么,有没有统一的、优雅一点儿的处理方式呢?有的,Spring Retry就可以帮我们搞定重试问题。接下来,带着这些思考,一起看下Spring Retry是如何解决这些问题的首先,引入依赖。有两种使用方式:命令式和声明式1. 命令式命令式主要是利用RetryTemplate。RetryTemplate 实现了 RetryOperations 接口。RetryTemplate 也支持流式配置。
2025-01-08 09:13:40
644
原创 Spring Retry就可以帮我们搞定重试问题
工作中,经常遇到需要重试的场景,最简单的方式可以用try...catch...加while循环来实现。那么,有没有统一的、优雅一点儿的处理方式呢?有的,Spring Retry就可以帮我们搞定重试问题。接下来,带着这些思考,一起看下Spring Retry是如何解决这些问题的。
2025-01-02 08:15:00
630
原创 Maven的依赖管理
依赖管理,可以将有关依赖项的所有信息放在共同的POM中,并对子POM中的工件进行更简单的引用。举个例子:父POM两个子POM在<dependencyManagement>区域,实际上是根据来进行依赖匹配的。自从<type>字段的默认值是jar以后,最简单的标识只需要设置即可。依赖管理的另一个重要的作用是统一管理(控制)依赖的版本。这一点不再赘述。
2025-01-02 02:00:00
1018
原创 performance_schema 对于排查问题是非常有用的
MySQL安装以后,我们会看到有这么两个数据库:information_schema 和 performance_schema ,它们对于排查问题是非常有用的。Performance Schema 是一种存储引擎,默认情况下,它是启用的。performance_schema数据库的名称是小写的,其中的表的名称也是小写的。查询应该用小写字母指定名称。
2025-01-01 08:15:00
2068
原创 SpringBoot Seata 死锁问题排查
现在,回到项目中来,由于我们的项目中有一个比较耗时的操作,超时时间固定是60秒,这个方法本来应该在Seata代理数据源之后做,不知道为什么服务器上先执行了,导致main线程等待了60秒,之后才执行SeataDataSourceBeanPostProcessor#postProcessAfterInitialization()因此,main线程很有可能会先持有该锁,当初始化到Seata的时候,又要获取该锁,于是出现了锁争用。(PS:我猜测可能是环境不同造成的,包括操作系统不同和JDK版本不同)
2025-01-01 06:15:00
1713
原创 InnoDB加锁规则分析
1、主键索引等值查询,命中,则被命中的主键索引加记录锁等值查询,未命中,则继续向后(向右)查找,直到找到第一个不满足的记录,对该记录加间隙锁,即锁住该记录之前的间隙,以防止其它事务向其中插入数据范围查找,找到的(满足条件的)记录的主键加记录锁,扫描过的区间加间隙锁2、非主键唯一索引与主键索引类似,唯一的区别是锁住辅助索引记录的同时会锁住对应的主键索引3、非唯一索引向右查找直到遇到一条不满足条件的记录,然后对扫描到的区间加间隙锁,对扫描到的辅助索引记录加记录锁,同时对与其对应的主键加记录锁。
2024-12-31 06:46:02
553
原创 Sentinel的源码学习记录
1、每个线程过来之后,创建上下文,然后依次经过各个功能插槽2、每个资源都有自己的处理器链,也就是说多次访问同一个资源时,用的同一套处理器链(插槽)3、Node相当于是一个载体,用于保存资源的实时统计信息4、第一次进入插槽后,创建一个新Node,后面再补充Node的信息;第二次进入的时候,由于上下文的名称都是一样的,所以不会再创建Node,而是用之前的Node,也就是还是在之前的基础上记录统计信息。可以这样理解,每个DefaultNode就对应一个特定的资源。
2024-12-31 06:42:56
1318
原创 Java的SpringMVC
页面传递的参数是String类型的,而在控制器中接收的参数是不固定的,对于基本数据类型,SpringMVC提供了类型转换器,对于不支持的目标类型,如:日期、自定义类型,则需要自定义类型转换器顶层接口:Converter——— 将类型 S 转换成 T/***/@Nullable。
2024-12-30 06:48:45
1041
原创 Java校园闲置物品交易系统
在网络发展的时代,众多的软件被开发出来,给用户带来了很大的选择余地,而且人们越来越追求更个性的需求。在这种时代背景下,校园商家只能以用户为导向,以产品的持续创新作为校园商家最重要的竞争手段。系统采用了Java技术,将所有业务模块采用以浏览器交互的模式,选择MySQL作为系统的数据库,开发工具选择My eclipse来进行系统的设计。基本实现了闲置物品交易网站设计与实现应有的主要功能模块,本系统有管理员、卖家和用户,管理员;
2024-12-30 06:43:02
563
原创 Redisson的分布式锁
在 Redisson 中,方法是分布式锁续期机制的核心部分。该方法的主要作用是延长锁的过期时间,确保持有锁的线程在执行任务期间不会因为锁的超时而被其他线程抢占。下面将详细分析方法的实现及其工作原理。方法通常是在锁被持有时定期调用的,用于更新 Redis 中存储的锁状态,以防止锁过期。检查当前线程是否仍然持有锁。如果是,则更新锁的过期时间。方法在 Redisson 分布式锁中起到了至关重要的作用,它通过持续更新锁的过期时间,避免了由于任务执行时间过长导致的锁自动释放。
2024-12-29 19:04:39
977
原创 Crawler实现英语单词的翻译
具体用到的两个依赖,一个是对于网页的解析Jsoup,这个和python的BS4基本原理一致,还有一个就是用于网络请求的http依赖。可以看到请求体里面没有任何的数据段,这样去进行多次读取页面的操作会让百度感觉很”陌生“,所以现在要去请求头里加一些数据,让这个访问看起来就是真实的。接下来的任务就是要把这么一大堆的单词进行翻译,我们想要得到每个单词的音标,有什么词性以及对应的翻译。最终的results当然是多个map映射的列表了,不要嫌麻烦,我们继续转换数据,把得到的词性翻译列表转换成一个可以直观的字符串。
2024-12-29 07:28:19
753
原创 为什么在阿里巴巴Java开发手册中明确指出,不允许使用Executors创建线程池呢
即可创建一个固定大小的线程池。但是为什么在阿里巴巴Java开发手册中也明确指出,不允许使用Executors创建线程池呢。
2024-12-28 08:53:08
460
原创 指定Bean加载顺序的能力
其实在工作中,我相信很多人碰到过复杂的依赖关系的bean加载,把这种不确定性交给spring去做,还不如我们自己去控制,这样在阅读代码的时候 ,也能轻易看出bean之间的依赖先后顺序。
2024-12-27 21:36:09
780
原创 Spring 的AOP入门
AOP,面向切面编程,作为面向对象的一种补充,将公共逻辑(事务管理、日志、缓存、权限控制、限流等)封装成切面,跟业务代码进行分离,可以减少系统的重复代码和降低模块之间的耦合度。切面就是那些与业务无关,但所有业务模块都会调用的公共逻辑。先看一个例子:如何给如下UserServiceImpl中所有方法添加进入方法的日志,@Override@Override将记录日志功能解耦为日志切面,它的目标是解耦。进而引出AOP的理念:就是将分散在各个业务逻辑代码中相同的代码通过横向切割。
2024-12-27 10:24:35
634
原创 Spring的IoC容器初始化分析
AbstractBeanDefinitionReader的loadBeanDefinitions方法源码如下:java@Override// 模式匹配类型的解析器,这种方式是加载多个满足匹配条件的资源try {// 获取到要加载的资源// 委派调用其子类XmlBeanDefinitionReader的方法,实现加载功能= null) {else {// 只能通过绝对路径URL加载单个资源.= null) {
2024-12-26 15:37:55
975
原创 Bean的实例化解析
每次客户端请求 prototype 作用域的 Bean 时,Spring 容器都会创建一个新的实例,并且不会管那些被配置成 prototype 作用域的 Bean 的生命周期。而对于 prototype 作用域的 Bean,Spring 只负责创建,当容器创建了 Bean 的实例后,Bean 的实例就交给客户端代码管理,Spring 容器。//其实就是Spring自动的根据某个类中的set方法来找bean, byName 就是根据基个set方法所对应的属性名去找Bean。
2024-12-26 15:32:33
995
原创 java的动态代理解析
代理模式(Proxy pattern): 为另一个对象提供一个替身或占位符以控制对这个对象的访问动态代理就是,在程序运行期,创建目标对象的代理对象,并对目标对象中的方法进行功能性增强的一种技术。在生成代理对象的过程中,目标对象不变,代理对象中的方法是目标对象方法的增强方法。可以理解为运行期间,对象中方法的动态拦截,在拦截方法的前后执行功能操作。
2024-12-25 13:06:48
856
原创 【无标题】
每次客户端请求 prototype 作用域的 Bean 时,Spring 容器都会创建一个新的实例,并且不会管那些被配置成 prototype 作用域的 Bean 的生命周期。而对于 prototype 作用域的 Bean,Spring 只负责创建,当容器创建了 Bean 的实例后,Bean 的实例就交给客户端代码管理,Spring 容器。这里只关心单例Bean的销毁。特别注意:.在实例化前如果获取到了bean那么将不执行spring正常创建bean的流程,而是直接调用初始化后的方法完成初始化后的操作。
2024-12-22 11:58:32
569
原创 通过网络来实现单词的翻译
接着我们上一讲的结尾,我们获取到了一个高频次排序好的列表,接下来的任务就是要把这么一大堆的单词进行翻译,我们想要得到每个单词的音标,有什么词性以及对应的翻译。具体用到的两个依赖,一个是对于网页的解析Jsoup,这个和python的BS4基本原理一致,还有一个就是用于网络请求的http依赖。根据这种写法就得到了我们的音标。最终的results当然是多个map映射的列表了,不要嫌麻烦,我们继续转换数据,把得到的词性翻译列表转换成一个可以直观的字符串。这样的话,我们就把所有的一个简易的爬虫式的单词翻译讲清楚了。
2024-12-22 11:53:03
869
原创 使用java怎么去统计每个词出现的频率
继上一讲Java用PDFTextStripper来解析pdf文件提取文字讲了如何接收和解析pdf之后,我们把pdf文件全部转为了String类型的字符串,那么这一讲聊聊怎么去统计每个词出现的频率。
2024-12-21 06:21:45
827
原创 如何使用java来解析一个pdf文件呢?
我们可以看到表单提交的action就是我们controller里面的路径,提交之后我们在做一个简单的文件类型判断之后就返回给了业务层进行解析。它提供了一种简单而有效的方法来遍历 PDF 的内容,并将其中的文本元素抽取出来形成字符串。是 Java 中的一个类,它提供了可变的字符序列,允许你高效地构建、修改和操作字符串。其主要功能是解析文档的内容流,所以我们需要定义一个流来提取其中的文字内容。这是比较完整的一套依赖。,可以确保提取的文本按照其在页面上的实际位置进行排序,这有助于保持文本的自然阅读顺序。
2024-12-21 06:19:34
1308
原创 Java 设计模式
当冬季的寒风拂过大地,冰雪经济如同一颗璀璨的明珠,在寒冷中散发着炽热的魅力。滑雪场、冰雕展、冰雪主题酒店等各类冰雪产业蓬勃发展,其背后的运营逻辑和策略,与 Java 设计模式有着奇妙的相似之处,为我们深入理解和运用 Java 设计模式提供了独特的视角。
2024-12-20 06:42:05
885
原创 Jedis的使用方法及一些需要注意的地方
Jedis 是一个 Java 客户端,用于与 Redis 数据库进行交互。它提供了一系列简单易用的 API,使得在 Java 应用程序中使用 Redis 变得非常方便。以下是 Jedis 的使用方法及一些注意事项。
2024-12-20 06:37:19
766
原创 Java的Spring循环依赖
Spring 如何解决循环依赖Spring通过三级缓存去解决,一级缓存为单例池(),二级缓存为早期曝光对象(),三级缓存为早期曝光对象工厂(当A、B两个类发生循环依赖时,在A完成实例化后,就使用实例化后的对象创建一个对象工厂,并添加到三级缓存中,如果A被AOP代理,那么通过这个工厂获取到的是A代理后的对象;如果A没有被AOP代理,那么这个工厂获取到的就是A的实例化对象。当A进行属性注入时,会去创建B,同时B又依赖于A,所以创建B的同时又会调用getBean(a)来获取需要的依赖,此时。
2024-12-19 08:27:35
650
原创 领域驱动设计的学习分享
在应用服务的实现中,它负责编排和转发,它将要实现的功能委托给一个或多个领域对象来实现,它本身只负责处理业务用例的执行顺序以及结果的拼装。应用层相对来说是较“薄”的一层,除了定义应用服务之外,在该层我们可以进行安全认证,权限校验,持久化事务控制,或者向其他系统发生基于事件的消息通知,另外还可以用于创建邮件以发送给客户等。并且保证它是无状态的。防腐层(Anticorruption Layer):简称ACL,在集成两个上下文,如果两边都状态良好,可以引入防腐层来作为两边的翻译,并且可以隔离两边的领域模型。
2024-12-19 08:24:49
773
原创 Backend For Frontend的学习分享
降低后端开发联调成本:直接提供RPC接口将基础数据返回即可;降低前端开发联调成本:直接对接一两个接口就可以拿到全部数据,并且可以将很多前端写死的逻辑交给BFF网关做下发,提高前端展示的灵活性;方便需求迭代升级:当大量前端逻辑移植到BFF网关,很多需求的上线不再依赖前后端发版,直接让BFF快速上线更新即可;BFF网关可以较低成本的做异常降级处理,为前后端包装错误提示,统一异常捕获类型;提高系统性能:虽然引入BFF网关相当于多加了一层,但BFF。
2024-12-18 17:39:27
883
原创 Apollo的学习体会
ConfigDB用于存储各种配置Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端,多实例,需要注册到Eureka中保持心跳检测Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面),多实例,需要注册到Eureka中保持心跳检测Eureka提供服务注册和发现,为了简单起见,目前Eureka在部署时和Config Service是在一个JVM进程中Meta Server用于封装Eureka的服务发现接口。
2024-12-18 17:37:18
1025
原创 springcloud eureka原理和机制
在微服务架构下,服务端环境通常包含多个服务,同时每个服务也是一个无状态的多实例集群。这些服务和实例一般都是会动态变化的,可能会因为意外的故障或者人为的重启发版等原因,这些服务和实例的信息和数量随时会发生改变。因此微服务环境下需要一个服务注册中心来集中管理集群中各个服务实例的状态,这样服务的调用方就可以动态地从服务注册中心获取到当前可用的服务实例来发起调用。Eureka 就是服务发现中心的一种。
2024-12-17 15:21:30
1511
原创 如何在Playwright中操作窗口的变化
Playwright 简介Playwright 是一种自动化测试工具,通过直接与浏览器进程通信,发送和接收命令来控制浏览器行为。它提供了丰富的 API,可以模拟用户操作,如点击、输入、导航等,非常适合用于 Web 测试自动化、UI 兼容性测试和数据采集。窗口最大化需求在自动化测试中,窗口最大化是一个常见的需求。这有助于确保在最大化窗口时,网页布局仍然符合设计预期,验证应用程序在不同屏幕尺寸下的表现,以及获取更全面的信息。实现方式Playwright 本身没有提供一个直接的maximize。
2024-12-17 15:16:16
1048
原创 根据前端传递的参数来动态查询数据库中的数据
开发中,我们经常需要根据前端传递的参数(如字段名)来动态查询数据库中的数据。这种需求通常出现在需要实现通用查询功能或者复杂查询接口的场景中。为了实现这个功能,我们需要结合Java的反射机制、MyBatis或JPA等持久层框架,以及SQL动态拼接等技术。
2024-12-16 08:08:58
738
原创 Python开发IM及时通讯
在现代社会中,即时通讯工具已经成为人们日常沟通的重要工具。开发一个IM聊天工具不仅能够提高我们的编程技能,还能让我们更好地理解即时通讯系统的原理。本文将详细介绍如何开发一个简单的IM聊天工具,包括开发思想、开发流程以及详细的代码示例。
2024-12-16 08:06:01
870
原创 详细解析 bridge 网络模式
Docker 的网络模型是 Docker 容器之间以及与宿主机之间进行通信的基础。Docker 提供了几种不同的网络模式,包括bridge(桥接模式,默认模式)、host(主机模式)、none(无网络模式)、container(容器模式)以及自定义网络(如overlay网络,用于 Docker Swarm)。这里,我们将详细解析bridge网络模式,并提供一个实际的代码示例,展示如何创建容器并让它们在同一桥接网络上通信。
2024-12-15 19:58:42
469
原创 尝试一下前端网页设计案例
下面我将提供一个简单的JavaScript网页设计案例,该案例将实现一个动态的待办事项列表(Todo List)。这些案例涵盖了网页设计的不同方面,从基本的图片展示到实用的天气查询,再到动态的数据处理。除了上述的待办事项列表案例外,还有许多其他类似的JavaScript网页设计案例,这些案例展示了不同的功能和设计思路。部分定义了页面的基本结构,包括一个输入框用于输入待办事项,一个按钮用于添加待办事项,以及一个无序列表用于显示待办事项。部分美化了页面,包括待办事项列表的样式、输入框和按钮的样式。
2024-12-15 19:57:22
776
毕业设计深度学习驾驶员分心驾驶行为识别项目源码+数据集+毕设论文.zip
2025-03-31
毕业设计深度学习驾驶员分心驾驶行为识别项目源码+数据集+论文(高分项目)
2025-03-31
基于Java的超市管理系统.zip
2025-03-25
基于python的NBA球员数据可视化分析源码+报告(大作业)
2025-03-25
基于 Spring Boot 框架的人事管理系统的设计与实现 完整论文+代码+毕设+PPT
2025-03-25
基于BP神经网络的电力负荷预测,基于BP神经网络的短期电力负荷预测(高分大作业)
2025-03-25
基于Python的PCA人脸识别算法的原理及实现代码详解+文档说明.zip
2025-03-24
使用Python进行气象数据分析与可视化源码+文档说明.zip
2025-03-24
基于C语言的Qt5实现打地鼠游戏源码(98分大作业)
2025-03-24
基于Java的打地鼠小游戏源码.zip
2025-03-24
基于jsp+servlet+mysql的实验室设备管理系统源码+文档说明.zip
2025-03-24
基于Pytorch热门深度学习框架 从零开发NLP聊天机器人.zip
2025-03-24
基于flask+python的ERP管理系统源码(高分课程设计)
2025-03-24
基于51单片机RFID智能门禁系统红外人流量计数统计(毕业设计)
2025-03-23
MATLAB实现移动机械臂的避障轨迹规划(基于快速随机扩展树算法)项目实战
2025-03-23
MATLAB实现移动机械臂的避障轨迹规划(基于快速随机扩展树算法)项目实战
2025-03-23
基于Python+Flask深度学习的中文语音识别系统源码+数据集+文档说明(高分毕设)
2025-03-21
基于QT+C+++MySQl+OpenCV的车牌识别搭建停车场管理系统源码+文档说明(高分毕设)
2025-03-21
基于C++&QT+MySQl+OpenCV的车牌识别搭建停车场管理系统源码+论文(高分毕设)
2025-03-21
机器学习大作业-基于神经网络的MNIST手写数字识别源代码+数据集+文档说明
2025-03-21
基于STM32单片机老人防跌倒报警系统GSM短信上报(高分毕业设计)
2025-03-20
基于STM32单片机老人防跌倒报警系统GSM短信上报(毕业设计)
2025-03-20
基于yolov5+大疆教育无人机Tello TT实现目标识别检测+追踪测距完整源码+数据集+训练好的模型+操作说明文档.zip
2025-03-19
基于yolov5+大疆教育无人机Tello TT实现目标识别检测+追踪测距完整源码+数据集+训练好的模型+操作说明文档
2025-03-19
基于javaweb的网络购物平台源码+数据库(高分期末大作业)
2025-03-19
基于Java web的药品管理系统(源码+数据库).zip
2025-03-19
基于python开发的粒子群算法多无人机任务分配源码-毕业设计&课程设计&项目开发
2025-03-19
基于python的自动组卷评卷考试系统.zip
2025-03-16
基于python的自动组卷评卷考试系统.zip
2025-03-16
基于Faster-RCNN网络模型的车辆行人及交通信号目标检测算法python源码+数据集+项目报告+详细注释
2025-03-13
基于Faster-RCNN网络模型的车辆行人及交通信号目标检测算法python源码+数据集+项目报告
2025-03-13
Java实现基于SSM的企业资产管理系统源码+数据库(高分毕设)
2025-03-11
基于Springboot+Vue的企业资产管理系统源码案例设计带文档说明.zip
2025-03-11
图书管理系统C++语言带说明文档.zip
2025-03-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人