自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用AI能力编译ARM版本的截图软件

其实笔者试图使用AI写一个截图工具,但是AI还是不是很行,写的乱七八糟,当然有可能笔者没写过桌面程序,所以干脆使用开源项目编译。但是即使编译也遇到了很多问题,如果使用AI解决估计大部分没有程序经验的解决不了,因为实际的问题和代码不一定有直接的关联,所以AI辅助解决问题,笔者成功的使用开源项目编译了ARM版本的mac截图app。但是还是有warn未解决,不影响使用就不解决了。

2026-04-09 17:54:02 358

原创 使用AI的能力编译ARM版本RDM

本文记录了在M芯片Mac上编译开源RDM显示管理工具的过程。作者在使用4K显示器时发现该工具仅支持x86架构,于是尝试自行编译ARM版本。通过分析源码发现头文件引用缺失和变量名不一致的问题,在AI帮助下修改了utils.h文件,添加了必要的CoreGraphics框架引用。成功编译后测试运行正常,但发现项目中仍存在多个macOS废弃API的警告。文章展示了借助AI工具完成小型开源项目移植的可行性,同时也指出随着系统更新,使用私有API可能导致兼容性问题。最终生成的ARM原生应用可供M芯片Mac用户使用。

2026-03-18 17:01:06 276

原创 MySQL单表分页优化

MySQL分页查询优化方案分析:针对不同数据量和场景,文章对比了多种分页方案性能。默认limit在10万以下数据表现良好;覆盖索引+子查询适合大数据量跳页场景,能减少40%耗时;游标模式性能最优但不支持跳页,适合移动端刷新;范围查找性能极佳但要求数据连续。建议根据实际需求选择:小数据量用limit,大数据跳页用子查询,移动端用游标模式。核心优化思路是缩小主键ID范围,减少回表查询成本。

2026-03-16 18:06:46 384

原创 spring ai支持tools mcp服务调用

本文介绍了基于Spring AI框架实现MCP(模型控制协议)服务的实践过程。作者以DDR4内存价格分析为案例,展示了如何构建一个支持工具调用的智能代理系统。文章详细说明了服务端和客户端的配置实现,包括模型选择(Gemma3和Qwen3.5)、MCP工具注解的使用以及YAML配置。在遇到Gemma3不支持工具调用的问题后,作者改用Qwen3.5模型,并优化了系统架构,将实时数据获取与LLM推理分离以提升性能。最后指出MCP服务的核心价值在于扩展LLM的实时数据处理能力,为构建智能代理系统提供基础支持。

2026-03-09 18:18:57 436

原创 spring ai运行本地ollama大模型聊天

本文介绍了使用SpringAI 1.1.2版本与Ollama结合实现AI聊天功能的实践。通过配置ChatClient构建多轮对话系统,分析了HTTP交互过程和消息传递机制。实验表明,AI在逻辑分析方面表现良好,但存在模型知识更新滞后、结果不确定性等问题。文章还探讨了多轮对话实现方式、token消耗优化以及外部工具集成的必要性,指出当前AI仍需结合MCP服务、知识库等外部能力才能满足复杂需求,整体上呈现API编程的特征。

2026-02-10 17:33:03 664

原创 python ollama chat示例demo

文章摘要:作者在开发大模型周边支持项目时,尝试使用Python自由线程模式运行ollama库时遇到问题。发现自由线程版本与普通Python版本存在差异,导致无法识别已安装的ollama包。解决方案是通过指定解释器安装依赖(python -m pip install ollama)。该问题揭示了自由线程版本实际上被视为"不同"的Python版本,需要特别注意路径和依赖管理。作者建议开发者在使用自由线程模式时,要明确指定解释器来安装和管理依赖包。

2026-02-05 17:22:33 440

原创 译:MySQL counting-rows、function_count

本文探讨了MySQL中COUNT()、COUNT(1)和COUNT(column)的区别及性能优化。在InnoDB引擎下,COUNT()和COUNT(1)性能相当,都优于COUNT(column),因为InnoDB不维护精确行数。MyISAM引擎则直接存储行数,COUNT()能快速返回。文档还介绍了COUNT与GROUP BY的组合使用,以及在不同条件下的查询优化策略。

2026-02-03 17:30:03 698

原创 macOS安装python并在PyCharm下启用自由线程

Python 3.14自由线程实践指南 摘要:本文记录了在Python 3.14中启用自由线程功能的实践过程。作者发现官方二进制包默认仍使用GIL锁,经查阅文档发现自由线程版本被单独命名为python3.14t。解决方法包括:1)使用特定命令安装自由线程版本;2)在PyCharm中配置使用新解释器;3)源码编译时通过--disable-gil参数关闭GIL。官方采用新旧版本并存策略,而非直接替换原有实现。最终成功实现多核CPU的充分利用,证明了自由线程的可行性。

2026-01-30 21:40:02 600

原创 使用fyne做一个桌面ipv4网段计算程序

本文介绍了一个用Go语言开发的跨平台桌面工具,用于简化内网环境下IPv4网段计算工作。作者使用Fyne框架开发了图形界面,包含IP地址和子网掩码输入框,通过字符串处理实现网段计算功能。工具采用表单布局简化样式调整,虽未使用位运算但能满足需求。文章指出该工具适合单机使用,避免了服务端部署的维护成本,但跨平台编译需注意系统UI依赖问题。最后作者建议根据实际使用环境选择编译方式,为需要频繁计算网段的运维人员提供了便捷的本地解决方案。

2026-01-28 14:24:27 404

原创 MySQL explain format的差异

摘要:MySQL 9.5.0版本对EXPLAIN命令进行了优化,新增了TREE和JSON两种输出模式,默认采用TREE模式。TREE模式简洁直观,显示索引命中情况和执行成本评估;JSON模式提供更详细的信息但略显冗长。传统表格模式虽完整但不够直观。通过EXPLAIN ANALYZE可获取实际执行数据,包括预估成本、返回行数和执行时间等关键指标。新版EXPLAIN最大的改进是加入了成本评估功能,能清晰展示索引优化效果(如2万条数据下索引命中成本0.35vs全表扫描1960)。作者推荐使用TREE模式进行SQL

2026-01-20 18:44:32 650

原创 Java应用Native内存泄漏分析

本文探讨了Java应用中JNI调用导致的内存泄漏问题。通过故意设计一个不回收指针对象的C++程序,演示了JNI调用中Native内存泄漏的场景。文章介绍了使用NativeMemoryTracking(NMT)工具监控Native内存的方法,但指出NMT无法跟踪C/C++直接分配的内存。作者建议采用排除法,通过比较容器RSS与NMT总内存的差值来定位问题,并介绍了pmap等系统工具辅助排查。最后强调,虽然Java堆内存有上限,但Native内存泄漏会持续消耗系统内存,导致性能下降而不触发OOM。

2026-01-16 18:56:25 620

原创 spring-data-jpa saveall慢的原因

摘要:本文分析了Spring Data JPA中saveAll方法性能问题的根源。通过实验发现,当使用自定义ID而非JPA自动生成时,saveAll会执行大量查询操作,导致批量插入性能低下。关键因素包括:1)ID字段索引设计不合理;2)手动设置ID值触发merge操作而非直接插入。调整索引结构并改用JPA自动生成ID后,saveAll性能可超越JDBC Template的batchUpdate。建议在使用JPA批量操作时,确保ID由框架自动生成并优化索引设计。

2026-01-13 09:34:10 593

原创 关于hash取模算法的优化

摘要:本文探讨了分库分表和顺序消息场景中常用的Hash取模算法优化方案。针对高并发业务场景,分析了传统取模运算的性能瓶颈,提出参考JDK HashMap的Hash槽位计算方法,利用位运算替代取模运算。通过将模数设为2的整数倍,采用(n-1)&hash的位运算方式,显著提升计算效率。文章详细阐述了该优化方案的数学原理,包括二进制进位机制和位运算取模的等价性证明,为高并发场景下的分片计算提供了性能优化思路。

2026-01-07 15:45:51 527

原创 容器下的WSS和RSS监控指标的心得

容器下使用namespace和cgroup技术,其中cgroup限制资源,有v1和v2版本,v2的层级管理更简单,从技术原理看,容器的隔离很弱,在容器中可以直接通过free top拿到宿主机的内存信息,而容器自己的使用内存是通过cgroup的memory特性监控的,可以直接获取到,一般是看WSS和RSS指标。

2026-01-06 19:28:05 1202

原创 commons-beanutils在lombok的Access注解下属性复制失效

本文分析了使用Commons-beanutils和Lombok时出现的属性复制失效问题。当Lombok的@Accessors(chain=true)注解生成的非void返回值set方法时,Commons-beanutils无法识别这些方法,导致复制失败。而Spring的BeanUtils能正确处理这种情况,但存在浅拷贝问题。文章建议使用MapStruct进行属性复制,虽然需要编写更多代码但能保证性能和稳定性。最终结论是:框架封装方法虽提高开发效率,但在性能和兼容性上存在妥协,手写set/get方法才是最稳定

2026-01-03 00:19:22 744

原创 mybatis-plus SQL 注入漏洞导致版本升级引发的问题

摘要:本文记录了MyBatis-Plus升级至3.5.7版本时遇到的问题及解决方案。主要存在两个问题:一是与MyBatis 3.5.7存在兼容性问题,需升级MyBatis至3.5.16;二是与Spring Data JPA存在jsqlparser依赖冲突。此外还发现QueryWrapper的IN查询处理逻辑在3.4+版本对空集合的处理方式发生变化,导致SQL语法错误。建议在项目中避免同时使用MyBatis-Plus和Spring Data JPA,并减少使用动态SQL拼接,改用代码动态拼接方式以降低风险。

2025-11-03 22:45:22 1169

原创 http trailer 与 http2

本文探讨了gRPC通信中HTTP Trailer的实现机制。通过Go和Java示例代码,作者发现HTTP/1.1下使用chunked传输时可以在body后附加Trailer头信息,但在HTTP/2环境下因协议限制无法直接使用chunked传输。实验表明,虽然HTTP Trailer设计允许在body传输后附加元数据,但在HTTP/2中实现与gRPC相同的Trailer机制仍存在技术障碍。文章揭示了HTTP Trailer这一较少使用的协议特性,并为理解gRPC通信机制提供了实践参考。

2025-10-24 23:11:17 670

原创 Jsch连接openSSH高版本出现Algorithm negotiation fail

摘要:OpenSSH升级后,Java SFTP客户端因算法协商失败报错"Algorithm negotiation fail"。官方JSch库已停止维护,最新版本0.1.55虽可使用但存在安全隐患。测试发现OpenSSH 8+移除了旧算法导致兼容性问题。解决方案是切换到社区维护版jsch(0.2.15+),该版本兼容性好且支持新算法。建议逐步迁移至社区版,而非通过修改SSH配置添加已移除的算法,以兼顾安全性和兼容性。SSH算法的演进与HTTPS类似,需要客户端和服务端保持算法库同步更新。

2025-09-06 14:49:14 989

原创 3DES加解密的算法Java Python Golang

实际上仅仅是对称加密,实际上并不安全,不仅面临碰撞攻击,还面临着秘钥保存的问题,根据HTTPS的TLS密码设计,应该动态生成对称加密密钥,使用非对称加密算法交换密钥,根据会话动态变化。但是没有绝对的安全,实际上是加密和性能的取舍问题。非对称加密非常消耗计算性能,但是安全等级很高,对称加密对性能消耗较低,但是安全等级较低。以TLSv1.2为例,先通过非对称加密(证书)交换对称加密的秘钥,加密回话报文。

2025-08-31 20:52:17 959

原创 macOS 15.6 ARM golang debug 问题

macOS15.4及以上版本存在CommandLineTools工具链的严重bug,导致Go语言调试功能异常,所有断点都会被重定向到系统底层代码。该问题最早出现在macOS15.4,至今未修复。解决方案是手动下载安装CommandLineTools16.2版本,并禁止自动更新。虽然苹果硬件质量优秀,但软件开发工具链问题频发,如该调试bug和Chrome本地网络问题,给开发者带来诸多困扰。文章提供了具体的解决步骤和JetBrains官方问题追踪链接。

2025-08-30 19:25:13 805

原创 Maven 编译打包一个比较有趣的问题

Java项目中出现包名错误但能正常编译的现象,根源在于编译机制不依赖目录结构,而是基于文件中的package定义。虽然IDEA会报错,但javac编译器会根据源码中的package声明生成正确的class文件路径。这表明class文件的定位本质上是依赖字节码中的全限定名,而非源文件存放目录。这一特性也解释了为何其他JVM语言(如Kotlin、Groovy)生成的class文件同样有效。

2025-08-28 21:55:35 399

原创 linux中已经启用的命令和替代命令

摘要:本文介绍了Linux系统中常用命令的更新替代情况,如ifconfig被ip命令取代、netstat被ss取代等。重点探讨了sftp文件传输的配置与使用,包括创建sftp用户、设置文件目录权限、配置sshd_config文件等操作,并详细说明了如何通过scp和sftp实现带宽限速(以Kbit/s为单位)。作者指出虽然新命令功能相似,但老用户需要适应新语法。文中还分享了在Ubuntu服务器上搭建sftp服务的完整流程,强调限速功能在共享带宽环境中的重要性,可避免大文件传输占用全部带宽影响其他业务。

2025-08-17 16:46:23 955

原创 springboot 2.4跨域变化和swagger结合的问题

摘要: 本文分析了SpringBoot 2.4-2.7版本升级后出现的跨域配置问题。当allowCredentials=true时,使用通配符""会导致IllegalArgumentException异常。问题根源是Spring 5.3修改了校验逻辑,该版本被SpringBoot 2.4引入。解决方案有两种:1) 不使用通配符"";2) 改用allowedOriginPatterns配置。作者发现自测时未出现该问题是因为Swagger的跨域配置先加载,掩盖了错误。

2025-08-09 17:23:46 742

原创 项目中MySQL遇到的索引失效的问题

摘要:本文总结了MySQL使用中常见的索引失效问题及其解决方案。主要原因包括数据隐式转换(如数字与字符串类型不匹配)、统计信息更新不及时(在大批量数据变更后)等。这些问题在小数据量时不易察觉,但随着数据增长会导致全表扫描、查询超时等严重性能问题。建议:1) 尽量使用int而非varchar作为索引字段;2) 在大批量数据操作后执行ANALYZE TABLE更新统计信息;3) 建立监控机制及时发现全表扫描问题。这些措施能有效预防生产环境中的数据库性能问题。

2025-08-06 21:05:14 1049

原创 macOS 15.4.1 Chrome不能访问本地网络

在使用macOS 15系统的Mac Mini M4时,遇到了Chrome浏览器无法访问本地网络的问题,包括路由器和局域网内的其他设备。尽管Safari浏览器可以正常访问,但Chrome的问题持续存在。经过调查,发现这是macOS 15.2版本的一个系统bug。尝试了多种解决方法,包括重启和修改网络设置,但均未奏效。最终,通过关闭系统完整性保护(SIP),删除特定的网络配置文件,并在恢复模式下重新启用SIP,才暂时解决了问题。这一过程不仅繁琐,而且反映了macOS 15系统在更新迭代中存在的稳定性和兼容性问题

2025-05-10 10:27:19 2467 1

原创 组装一台intel n95纯Linux Server服务器

时代变化很快,以前macmini2018是intel cpu,而且可以自己安装内存,现在已经arm cpu,内存已经是黄金内存了,还得益于炒ai概念,否则8G永流传,不过intel 12代性能提升还可以,所以干脆组装了专门的服务器,测试小主机满载也就23w左右,平时10w左右,还是x86的,在docker环境下很友好,毕竟很多镜像还是基于x86基础镜像做的,如果ARM自己编译也很麻烦。

2025-04-20 09:56:24 1514

原创 nginx自编译重现gzip和chunked的现象

其实gzip并不是最近才有的,以前我们经常压缩html,节省前端资源的传输带宽,只不过最近发现一些老旧项目对chunked支持不友好,导致nginx 1K以上就chunked导致请求报错。然后发现SpringBoot默认就chunked😁。nginx编译中实际上网上很多内容是复制的,笔者自己实践发现有些参数实际上不应该加上,理解也是跟我们认知有一定的理解偏差,实践发现without 状态要为disable,表示默认已经支持了,不需要加参数, with的模块需要编译加上参数,状态为enable。

2025-04-15 22:02:14 920

原创 K8S下nodelocaldns crash问题导致域名请求响应缓慢

实际上这个问题并不是应用的问题,是平台搭建的时候就有问题,但是仅仅是nodelocaldns并不影响最终的结果,毕竟coredns还是正常的,所以仅仅是超时,对于业务研发人员,K8S里面的逻辑是不可见的,所以问题很难解决,最终需要应用分析,抓包和基础设施层共同配合才能解决问题。

2025-03-15 19:43:38 1346

原创 M4 Mac mini运行DeepSeek-R1模型

仅仅是分享体验感受,实际上体验本地的AI模型的门槛是很低的,一般的Intel 核显就行,也需要一定的显存,不过不是特别消耗,如果实在不足那么也可以降低模型的大小,当然蒸馏模型越小失真就越严重,物理定律是不能违背的。另外也可以配置一个UI界面,如果是生产环境就建议部署docker应用,自己本地体验实际上用免费的桌面软件就好了。

2025-03-01 13:31:13 5487

原创 MySQL数据库连接池泄露导致MySQL Server超时关闭连接

我们在写代码时,尽量还是使用框架封装的逻辑,比如连接池,比如Spring声明式事务,可以避免编程式事务在写代码时的逻辑漏洞,因为在没触发的时候很难出现,测试很多时候不充分。实际上一起写jdbc的时候还很少出现这个问题,因为那个时候会非常注意连接的回收,事务的提交逻辑,但是Spring自动管理后,这个就很少注意了,因为注解声明式事务太方便了,只有特殊时候才会自己管理事务。

2025-02-24 23:37:04 1136

原创 kafka 3.5.0 raft协议安装

kafka从3.0.0开始推出了raft模式的元数据中心,实际上类似zk,kafka自己命名kraft。使用这种方式搭建kafka集群将不再需要zk,同理,kafka的集群的每个节点可以同时是broker和controller(以前zk充当),也可以是单独的broker,controller(负载不重,不建议单独controller,跟zk没区别),官方说明需要jdk11及以上,实测jdk8可以运行,但是生成建议严格按照官方标定的jdk执行,jdk是向下兼容的,但是不确定是否会涉及新api或新特性的使用。

2025-02-08 17:07:11 1358

原创 flowable expression和json字符串中的双引号内容

通过示例可以看到字符串包括json需要对字符串的"内容进行转义,包括代码编写,class文件,但是jvm内存是不认"的转义符的,存储的就是真实的值,不存在转义的说法,而类似groovy脚本这样的类class语言实际上也是如此,毕竟操作在内存操作,class虚拟机不会有任何不同,毕竟class不一定能反编译Java,但是Java一定是编译为class,所以groovy并不会影响值操作的"结果。

2025-01-31 17:09:52 1064

原创 springboot kafka在kafka server AUTH变动后consumer自动销毁

kafka在发送者和消费者是区分开的,发送者如果连接kafka broker失败后可以一直重试直到成功,但是消费者确有各种各样的逻辑,可以精准控制,比如消费者重启的配置可以控制消费者在停止时重启,如果仅仅是授权失败,而且不需要反复重启(消耗资源),那么可以通过。

2024-12-01 18:38:14 1954 1

原创 mapstruct和lombok同时使用的问题解析

mapstruct实际使用过程一言难尽啊,本身与idea有兼容性问题,不过新版本确实在一定程度上规避了问题,不过与lombok一起使用必须依赖lombok-mapstruct-binding才行,否则因为与lombok的顺序问题,运行过程并不会报错,结果很难保证。建议还是自己写getter和setter吧,性能没区别。

2024-11-13 23:11:34 2570

原创 Tomcat servlet response关于中文乱码的经验

实际上这个问题很简单,而且也很容易解决,只不过不同的软件有不同的标准,所以即使是utf-8并不能解决问题,而是需要根据实际的情况,比如http,根据mime-type明显比指定utf-8更能表达具体的意义,毕竟mime是具体的标准。

2024-10-30 22:33:12 1190 1

原创 springboot kafka多数据源,通过配置动态加载发送者和消费者

如果消费者或者发送者逻辑需要写在当前kafka网关应用,那么只能通过自定义扫描方式支持配置不同,所有配置的生成者和消费者必须代码实现逻辑,通过配置加载方式,自定义扫描注入bean即可。以消费者为例,生产者不涉及注解发送方式相对简单。});写了一个初始化的bean,用于通过配置加载bean。消费者是注解方式扫描,bean需要根据配置加载,不能写在代码里面这里仅仅是注册bean,并不会被beanpostprocessor处理关于第1点。

2024-10-07 15:55:46 1916 2

原创 hutool 解压缩读取源文件和压缩文件大小失败导致报错

最近处理老项目中的问题,升级安全jar,发现hutool的jar在解压缩的时候报错了,实际上是很简单的防御zip炸弹攻击的手段,但是却因为hutool的工具包取文件大小有bug,造成了解压缩不能用,报错:invalid sizes: compressed -1, uncompressed -1,理论上使用这个API的所有方法都有问题。影响范围hutool 5.8.11~5.8.16,5.8.17修复。demo准备构建一个demo吧:JDK8+hutool 5.8.16没考虑流关闭问题,实际生

2024-09-21 14:23:11 2787

原创 关于数字存储和byte[]数组的一些心得

实际上这次是一些碎碎念,核心还是计算机的原理,计算机因为电气性能只设计有0、1,所以是2进制,存算都是2进制。而且计算机在设计之初只设计了加法,没设计或者设计减法有问题,导致数据相减运算都是加运算,所以需要存储和运算负数,那么就需要定义负数的存储和相加逻辑,就设计了反码和补码来存储负数。另外一个字节存储能力有限,往往需要很多字节来存储一个内容,那么符号位的定义在总体结构很明晰,但是对于字节数组的单个字节就会存在歧义,造成数据可读性很迷惑,因为符号位的特殊意义。

2024-08-31 23:07:13 1632

原创 雪花算法的一些问题解析

雪花算法实际上设计极为巧妙,通过时间戳,机器码,序列号(自增)来达到某个时间段(默认1毫秒)在某个并发下(并发超出自增ID就会重复或者阻塞等问题,不过我们一般达不到,且可以通过负载均衡增加资源规避),不重复ID。实现了加资源的方式来达到分布式ID不重复,且自增的特性。

2024-07-29 18:05:59 1045

原创 Tomcat get请求传数组集合参数

最近做项目,需要通过GET传参,来实现查询的能力,本来是RPC调用,直接参数序列化即可。但是服务最近修改为HTTP,本来Spring Cloud的feign也可以直接传参数,但是当使用Nginx访问时参数到底传啥呢,笔者传入?list=['xxx']直接就报错了,错误类型。

2024-06-24 22:54:32 1452

使用AI的能力编译ARM版本RDM

RDM ARM程序

2026-03-18

使用AI的能力编译ARM版本RDM

RDM ARM程序

2026-03-18

桌面ipv4网段计算程序

桌面ipv4网段计算程序

2026-01-28

lldb工具包。macos x64

lldb工具包。macos x64

2022-10-08

空空如也

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

TA关注的人

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