- 博客(82)
- 收藏
- 关注
原创 【前端】【canvas】图片颜色填充工具实现详解
本文介绍了使用HTML5 Canvas实现类似Photoshop油漆桶工具的颜色填充功能。通过种子填充算法(泛洪填充),从点击点开始向四周扩散填充颜色相近的像素区域。文章详细讲解了递归实现原理,包括边界检查、颜色差异计算和终止条件判断,并提供了完整的HTML和JavaScript代码示例。针对递归可能导致栈溢出的问题,还提出了基于队列迭代的优化方案,使用访问记录集避免重复处理,提高性能。该实现可用于Web图像处理场景,支持自定义填充颜色和容差范围。
2025-12-22 16:05:48
250
原创 【前端】【canvas】【pixi.js】水波纹滤镜实现教程 - 支持随机波动与鼠标交互
本文介绍了如何使用Pixi.js 7.4.2框架实现动态水波纹特效。通过创建Pixi应用、添加背景图片和文字元素,结合ShockwaveFilter和DisplacementFilter实现水波纹效果。文章详细讲解了随机水波纹生成、鼠标点击交互的实现方法,以及窗口自适应处理。代码示例展示了如何通过滤镜叠加创建复杂的视觉体验,包括3个水波纹滤镜的协同工作。该特效具有自动随机生成和手动触发两种交互方式,适合用于Web图形开发中的动态背景效果。
2025-12-16 11:41:54
415
原创 【Python】Anaconda基本使用命令
摘要:Anaconda是专为数据科学设计的Python发行版,包含常用库和开发工具。其核心组件Conda是跨平台的包与环境管理系统,支持Python及其他语言的包管理,能解决依赖冲突并创建隔离环境。与pip相比,Conda管理范围更广且自带环境隔离功能。用户可通过命令行创建(支持指定路径)、激活/退出、查看及删除虚拟环境,例如conda create -n myenv python=3.10创建环境,conda activate myenv激活环境。Conda有效简化了多版本项目管理流程。
2025-12-09 11:28:13
152
原创 【Python】Anaconda下载
清华大学开源软件镜像站(TUNA)提供Anaconda历史版本下载服务,用户可通过该镜像站快速获取Anaconda的过往发行版本。访问地址为:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/。该服务有效解决了国内用户访问国外源速度慢的问题,为Python开发者提供了便利。所有版本均经过官方同步,确保安全可靠。建议开发者优先使用清华镜像源以提升下载效率。
2025-12-08 21:24:08
75
原创 【LangChain】【Python】【NL2SQL】sql解释器简单实现
摘要:本文介绍了一个基于大模型实现的SQL解释器系统,通过数据库说明文档和大模型接口实现智能SQL查询功能。系统首先编写了包含LC数据表详细信息的Markdown文档,然后开发了数据库查询工具函数,最后构建了一个对话流程来自动判断是否需要调用SQL查询工具。当用户提问涉及数据库查询时,系统会生成相应SQL语句并执行,再将结果返回给大模型进行总结输出。该系统结合了大模型的理解能力和传统数据库查询功能,为金融数据分析提供了智能化解决方案。
2025-12-08 17:39:09
516
原创 【Java】使用国密2,3,4.仿照https 统一请求响应加解密
本文介绍了一种基于国密算法的前后端数据传输加解密方案。主要内容包括: 设计了分层加密机制:前端使用国密2公钥加密,后端用对应私钥解密;响应则使用国密4密钥加密,并用国密2公钥保护国密4密钥 实现了请求体可重复读取的Filter包装器,解决Servlet请求流只能读取一次的问题 通过拦截器实现请求解密逻辑,并支持通过@NoReqDecrypt注解跳过特定接口的解密 响应数据结构包含加密内容、时间戳、加密密钥和签名,确保数据安全性和完整性 该方案在保证安全性的同时,提供了灵活的加解密控制机制。
2025-11-14 16:22:46
1165
原创 【Python】爬虫html提取内容基础,bs4
本文介绍了BeautifulSoup(bs4)在爬虫中的核心用法。主要包括:1)使用find()和find_all()查找标签;2)通过get()方法获取标签属性,.text获取文本内容;3)可以对查找到的标签继续查找子标签。文章提供了安装方法和示例代码,演示了如何查找特定li标签及其下级a标签,并获取href属性和文本内容。最后总结了bs4的三个主要功能点,这些方法足以应对大多数爬虫场景。
2025-09-10 20:35:43
286
原创 【Python】打印日志神器——loguru
对于一个日志框架一般需要有以下几个功能不同等级日志输出配置日志输出位置配置日志输出格式异常日志输出下面我们来看看这款简单好用的日志框架是如何使用的。如下我们给console的日志输出的消息进行了格式化,并且给消息加上了黄色的背景import sys也可以通过这个特殊的标签,loguru会自动给消息加上特定的颜色。import sys。
2025-09-01 17:35:54
984
原创 【Python】包管理,弄明白import,package,module
本文探讨了Python中的包管理机制,重点分析了import语句的工作原理。通过实例演示了同级目录下的模块导入方式,解释了import本质上是创建module实例并赋值的操作。文章详细说明了Python如何通过sys.path查找模块文件,以及目录结构和__init__.py文件对导入过程的影响。同时介绍了环境变量PYTHONPATH的配置方法,并对子目录导入进行了验证。实验表明,Python会优先加载带有__init__.py的目录作为package,即使没有该文件也能正常加载目录作为module。
2025-08-27 17:52:35
842
原创 【Nginx】nginx+lua+redis实现限流
nginx、lua访问redis的三种方式: 基于nginx开源版本的一个。集成了大量的精良的lua库。所以接下来我们就使用OpenResty来实现相应的功能。
2025-07-18 11:46:29
588
原创 【前端】【原理】Proxy比defineProperty到底好在哪?为什么Vue3改用Proxy
了解Proxy和defineProperty的基本使用,从源码层面理解vue2,vue3是如何实现数据监听的。
2025-07-16 12:20:50
179
原创 【前后端】【原理】CORS解决跨域问题
从原理上讲解了CORS的是怎么校验的。一篇完全弄懂CORS,不会再出现为什么我明明加了跨域的配置还是报了跨域的问题。提供了java的解决方法,但是弄懂原理后,无论什么后端语言都能轻松解决
2025-07-15 17:48:18
704
原创 【前端】【原理】浏览器的事件循环
浏览器采用多进程多线程模型运行,其中渲染进程负责解析和执行网页内容。渲染主线程是浏览器最繁忙的线程,采用事件循环机制处理任务:进入无限循环,从消息队列中取出任务执行。为防阻塞,浏览器通过异步方式处理计时器、网络请求等任务,将回调加入队列。任务队列有优先级区分,微队列任务(如Promise)优先级最高。JS执行会阻碍页面渲染,因为二者共享同一主线程。计时器无法精确计时,受硬件、系统偏差和事件循环影响。这种设计保证了单线程流畅运行,避免浏览器卡死。
2025-07-11 11:56:16
699
原创 【Python】【uv】Python最好用的项目管理、环境管理工具
一个工具即可替代 pip 、 pip-tools 、 pipx 、 poetry 、 pyenv 、 twine 、 virtualenv 等众多工具。
2025-06-25 15:44:11
797
原创 【前端】JS模块化解析-ESModule
JavaScript没有模块化一直是**它的痛点**,所以才会产生我们前面学习的社区规范:`CommonJS`、`AMD`、`CMD`等 所以在ES推出自己的模块化系统时,大家也是兴奋异常。
2025-06-24 17:29:09
1085
原创 【Java】mybatis-plus乐观锁与Spring重试机制
上一篇讲到了mybatis-plus的基本使用,简单的使用`@Version`和一个基础配置类即可实现乐观锁。但是mybatis-plus本身并没有自带重试机制。即当我们带上版本号去更新数据,但是由于另一个线程已经将版本号修改了,导致这次的修改失败,那么应该重新读取数据,再次更新,这就是重试机制。
2025-06-03 16:04:57
605
原创 【Java】mybatis-plus乐观锁-基本使用
乐观锁(Optimistic Locking)是解决并发问题的重要机制。它通过在数据更新时验证数据版本来确保数据的一致性,从而避免并发冲突。与悲观锁不同,乐观锁并不依赖数据库的锁机制,而是通过检查数据的版本或标志字段来判断数据是否被其他事务修改过。MyBatis-Plus 提供了便捷的乐观锁支持,通过在实体类中添加版本号字段(通常是一个 int 或 long 类型的字段),并在更新操作时检查版本号,以确保数据的一致性和完整性,同时不影响系统的并发性能。
2025-05-30 12:09:47
735
原创 【Java】Spring的声明事务在多线程场景中失效问题。
在Spring的声明式事务中,多线程环境下事务会失效,因为子线程无法继承父线程的事务上下文。DataSourceTransactionManager的doBegin()方法通过ThreadLocal存储事务连接,导致子线程无法访问父线程的连接。为解决此问题,可以在创建子线程时,使用TransactionSynchronizationManager.bindResource()方法,将父线程的ConnectionHolder传递给子线程,确保父子线程使用同一个事务连接。
2025-05-15 18:06:57
523
原创 【Java】Spring IoC中的相关注解
Spring IoC中除了基础的@Bean@Compoent还有一些其他的注解可以用来控制Bean注入的时机一起来了解一下吧。
2025-05-15 16:14:46
427
原创 【工具】文件传输工具croc
croc 是一个开源的文件传输工具,允许任何两台计算机简单且安全地传输文件和文件夹。该项目由 schollz 开发,支持跨平台传输(Windows、Linux、Mac),允许多个文件传输,支持中断传输的恢复,无需本地服务器或端口转发,优先使用 IPv6 并支持 IPv4 回退,还可以使用代理如 Tor。
2025-04-18 12:05:52
597
原创 【Java】SpringBoot优雅的策略模式
SpringBoot中使用策略模式还是很简单的。一个接口多个实现,多个实现都使用@Service注册到Spring容器中,然后在策略分发器中注入成一个实现类的集合列表。同样实现一个一模一样的方法parse()然后通过stream流找到支持解析的实现类调用该实现类的parse()后续有新增实现类,实现接口后@Service注册即可。
2025-03-26 15:01:08
719
原创 【Java】SpringBoot模拟流式输出,前端使用流式接收数据并打印
现在AI的接口由于生成内容比较慢都是采用的流式输出的方式。这里将模拟一下流式输出。
2024-11-15 16:49:10
2676
1
原创 【Java】SpringBoot使用@Sync注解 异步批量插入百万条数据
多线程方式可以提高插入数据的效率,网络对数据新增的影响也很大。如下:写了一个简单案例,创建了100w条数据,然后调用。然后进行分割每1000条一组,然后交给异步方法进行调用。对于IO密集型 更多的线程池对于提升速度效果不明显。进行线程阻塞,这样方便查看所有线程执行完成的耗时。是不推荐使用的,但是我们可以自定义线程池。一般springBoot默认自带的。线程池方式对于提升速度有显著效果。同样是创建了10w条数据。使用注解标记方法使用异步。启动类上需要加上这个注解。批量插入数据的简单案例。
2024-09-26 16:40:57
826
1
原创 【Java】List按照某个属性进行分组,形成二维List,相同的类型放在同一个集合
【代码】【Java】List按照某个属性进行分组,形成二维List,相同的类型放在同一个集合。
2024-09-04 11:02:29
526
1
原创 【Java】Logbook优化接口调用日志输出,优雅!
很多人可能没有接触过logbook,但它的确是一个很好用的日志框架。引用官网的介绍Logbook 是一个可扩展的 Java 库,可以为不同的客户端和服务器端技术启用完整的请求和响应日志记录。
2024-07-01 00:47:58
804
原创 【Java】Map中的merge方法,分组合并数据,好用!
循环list判断key是否存在,不存在就存入值,存在就取出值累加后再存入。merge()方法最后的一个参数的回调函数说明。现有如下数据,需要统计各个学生的总分数。可以只需要一行代码搞定!
2024-07-01 00:26:48
872
原创 【Oracle】调用HTTP接口
在oracle中发起http请求对oracle压力比较大,建议不要将完整报文都丢给oracle进行调用。建议的方式是,请求报文在某个地方存储起来,然后入参就传递一个ID。接收方通过ID进行查询完整的报文。公司唯有oracle被允许访问内外网,因此在oracle中发起HTTP请求。
2024-06-19 23:37:56
1295
原创 【Oracle】修改已经存在的序列的当前值
在oracle中一般使用序列来实现ID自增。但是oracle中序列维护的没有mysql那么好。只是单存的递增。比如新建了一个序列,从1开始,每次递增1。此时我向数据库里插入一条id=10的数据。那么在序列查询到10的时候,插入就会报错。所以比较简单的解决办法就是,让现在序列的起始值>目前id的最大值。
2024-05-31 10:00:26
1969
原创 【Git】项目源码迁移到另一个gitlab(保留原来提交历史记录)
推送的时候可能会报错,这是gitlab的保护机制,因为这么推送会覆盖新代码仓库的所有操作,所以推送前保证我们新的代码仓库是空的!然后可以执行如下命令进行强制推送。公司原来是自己私有部署的gitlab。有了研发云后就希望将代码推送到研发云的代码仓库上。这时候需要迁移并保留原来提交的历史记录。也可以使用如上的IDEA操作界面进行修改远程仓库地址。右键项目->Git->Manage Remotes。可以在此处管理多个远程仓库的地址。代码推送仓库地址选择。
2024-03-05 11:48:51
2379
1
原创 【Nginx】Nginx配置反向代理 和 https
进入linux /etc/nginx/ 打开nginx.conf 进行以下配置。nginx.conf配置。
2024-02-22 19:35:15
1401
原创 【Docker】Docker容器挂载单个文件,符号链接单个文件
我们知道Docker通常使用数据卷挂载来持久化一些配置或者数据。但是数据卷的挂载都是整个目录。宿主机目录映射容器内目录。但是有些情况下,我只想将宿主机的某个配置文件映射到容器内的某个配置文件。也就是挂载单个文件,这种情况该如何实现呢?接下来以nginx为例。
2024-02-22 11:19:08
1603
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅