- 博客(19)
- 收藏
- 关注
原创 Netty tcnative boringssl windows 32-bit 编译
本文详细介绍了在Windows 32位环境下编译netty-tcnative-boringssl的步骤。主要内容包括:1) 环境准备(VS2017、Java8 32位);2) 源码修改关键点(pom.xml配置调整、VS模板修改、jnilib.c修正);3) BoringSSL源码获取;4) 编译执行过程。文章指出编译时需要注意平台工具集版本匹配、JNI调用规范等问题,并提供了编译好的jar文件作为参考。该指南解决了官方缺失32位版本的问题,相关PR已被Netty项目采纳。
2025-06-25 08:30:00
427
原创 从50M+到7.6M:Java客户端极致瘦身实战指南
Java客户端体积优化方案 针对Java客户端初始体积过大的问题(JRE+功能jar常超50M),本文提出一套系统优化方案,通过三大核心方向将体积控制在10-20M以内: 组件替换:选用轻量级替代库(如Gson替代Jackson),减少依赖体积 资源精简: 删除JRE和jar中无用文件(平台无关DLL、未使用类文件) 使用FontSubsetPack裁剪字体文件(示例从162KB降至6KB) 压缩技术: 采用Pack200专有算法压缩jar文件(压缩率可达20%) 结合NSIS安装包实现运行时解压 通过Pr
2025-06-24 08:30:00
783
原创 arduino红外遥控库IRremote的IRsend类sendRaw函数溢出问题及其解决方法
摘要:调试格力空调红外遥控时,发现使用sendRaw函数发送的原始码因delayMicroseconds函数参数溢出(上限16383)导致空调无响应。分析发现IRremote库中的delayMicroseconds和space/mark函数存在数值溢出问题。解决方案是新增支持大数值的sendRaw2、mark2和space2函数,将超限时间分段处理。具体实现是:当时间值≥16384时,先循环执行delayMicroseconds(16383)若干次,再执行剩余微秒数。示例代码展示了如何使用sendRaw2发
2025-06-24 08:00:00
623
原创 PostgreSQL 性能调优总结:从慢查询到闪电响应
本文系统介绍了PostgreSQL数据库的优化策略。硬件层建议迁移至阿里云RDS,获得50倍IOPS提升,并设置动态扩容机制;软件层强调使用专业工具(如PEV)分析慢查询和执行计划。针对常见瓶颈提出具体方案:全表扫描需合理建索引、内存不足调整shared_buffers、大表采用分区、复杂报表使用物化视图等。测试环节强调使用生产相同环境,执行30次压测确保P95指标达标。核心优化理念包括成本优先、善用工具、设置合理阈值(如1000万行触发分区)等,主张借助成熟工具而非重复造轮子。
2025-06-23 08:30:00
739
原创 直接在x86硬件上显示图片(无os)
为了学习计算机底层和os,我给自己布置了一个任务:在x86硬件上,使用c和nasm来显示一张bmp图片。完成这个任务,前后估计花了2个月的业余时间。这个任务涉及了很多知识点,包括:启动区、保护模式、nasm汇编、c和nasm汇编互调、ld链接、硬盘io读取、显卡调色板模式、bmp图片格式、bios中断指令、c指针操作内存、borch虚拟机、binutils工具集、makefile等。
2025-06-22 09:00:00
1190
原创 pdfjs优化,实现按需加载,节省流量和内存
摘要:本文介绍了如何优化pdfjs的PDF预览功能,解决带宽和内存占用过高的问题。通过使用HTTP Range请求实现按需加载PDF页面,而非下载整个文件。关键步骤包括:1)确保服务器支持分片下载(206状态码);2)在pdfjs中设置disableAutoFetch=true关闭自动加载;3)验证效果,确认仅加载当前预览页面的数据。该方法有效降低了带宽消耗和内存占用,特别适合移动设备和公网部署场景。
2025-06-21 08:15:00
1075
原创 《TCP/IP详解 卷1》读书心得及基于RFC手撮一个TFTP Server
《TCP/IP网络编程工具与实践》摘要 本书面向网络开发者与系统管理员,重点讲解协议分析工具与Java网络编程技术。核心工具包括Wireshark抓包(依赖WinPcap驱动)和RFC文档查询;Java方面对比了Socket API/NIO与JPCap的适用场景,后者支持底层协议操作但需注意版本兼容性。实践部分以TFTP服务器开发为例,解析RFC1350/2347等协议规范,展示UDP数据包结构实现,并推荐基于Netty的生产级开源实现netty-tftp,支持大文件传输、块大小协商等扩展功能。全书强调协议
2025-06-20 11:52:12
1014
原创 Web富文本编辑器实现从Word中复制图片
摘要:本文提出了一种解决Word文档复制到Web富文本编辑器时图片无法显示的方法。通过分析发现,复制时图片使用file协议存储在临时目录。解决方案是将剪贴板中的HTML内容进行转换,使用jsoup库将img标签的src属性从file协议改为base64编码的data协议。关键代码演示了如何读取剪贴板内容、转换图片格式并写回剪贴板,实现Word图片在Web编辑器中的正确粘贴。该方法已在summernote编辑器上测试成功。
2025-06-20 08:15:00
768
原创 netty 使用字典提升短文本的压缩效果
摘要:针对Netty中JdkZlibEncoder对短文本(<2K)压缩率差(80%-120%)的问题,研究发现使用字典可显著提升效果。通过提取XML文本中的重复字符串作为字典,测试显示压缩率从86%提升至54%。测试使用EmbeddedChannel模拟数据流,对比有无字典的压缩效果。此外,推荐使用zstd工具自动生成字典。结果表明,预定义字典可以有效改善短文本压缩效率。
2025-06-19 08:15:00
1345
原创 Windows下使用Graalvm将Javafx应用编译成exe
摘要:GraalVM作为新型虚拟机可将Java代码编译为多平台本地代码,显著提升启动速度。本文记录在Windows 10环境下使用GraalVM社区版20.0.2编译JavaFX应用的实践过程,包括环境配置(安装VS2019、Native-image工具)、示例项目编译(Gluon提供的HelloFX)及效果验证(58MB可执行文件实现秒启动)。实验证实Windows平台支持已实现,但当前仅限64位系统。编译耗时约230秒,需5GB以上内存。未来有望扩展32位支持,为JavaFX云原生和客户端应用部署提供高
2025-06-18 19:28:21
1016
原创 Vaadin开源富文本编辑器解决方案:基于wangEditor的深度集成实践
本文介绍一款基于wangEditor开发的Vaadin富文本编辑器组件,作为官方收费Editor的替代方案。该组件已发布至Maven中央仓库,提供完整的富文本编辑功能,支持图片上传、自定义配置等企业级特性,同时保持开源免费。
2025-06-18 08:30:00
672
原创 极简实现:基于Vaadin的PDF预览功能(仅需10行代码)
本文介绍了一种基于Vaadin框架的轻量级PDF预览解决方案,仅需10行核心Java代码即可实现浏览器端PDF渲染。该方案采用Spring Boot技术栈,无需外部依赖,支持缩略图导航、缩放等基本功能。实现步骤包括项目初始化、添加PDF组件依赖、创建预览视图等,最终效果可通过Vaadin认证的vcf-pdf-viewer组件呈现完整的PDF浏览功能。该方案具有开发高效、零客户端依赖、企业级支持等特点,适用于Java Web应用快速集成PDF预览需求。
2025-06-17 18:15:00
959
原创 10倍加速!免费热部署全攻略:基于HotswapAgent与JetBrains Runtime
摘要: 本文介绍了一种高性能的免费热部署方案,整合HotswapAgent与JetBrains Runtime(JBR),支持Spring和非Spring应用。该方案性能远超Spring Boot DevTools(提升10倍以上),完全开源免费。配置步骤包括:下载JBR和HotswapAgent,整合工具包,并在IDE中设置JVM参数。使用时需手动或自动编译触发热部署,控制台出现"restartedMain"线程即表示配置成功。推荐启用IDE自动构建功能实现保存即热更新。
2025-06-12 18:15:00
888
原创 Spring Boot Initializr 正式支持 Vaadin:快速构建现代化 Java Web 应用
Spring Boot Initializr正式支持Vaadin框架,标志着该技术获得Java生态权威认证。这包含多重价值:1)技术可靠性验证,确保生产就绪;2)深度生态整合,实现开箱即用;3)优化开发者体验,降低使用门槛;4)反映技术趋势风向;5)提升商业价值。Vaadin的优势在于服务端优先开发、丰富组件库和完美Spring集成。通过Initializr三步即可创建应用:初始化项目、编写Java UI逻辑、运行调试。这种官方收录比任何推荐都更具技术背书价值,是Java组件成熟度的重要标尺。
2025-06-10 18:15:00
833
原创 基于SpringAI搭建一个查询ip归属地的MCP Server(SSE模式)
本文介绍基于SpringAI 1.0.0搭建支持SSE模式的MCP Server,实现自然语言查询IP归属地功能。使用JDK 17+SpringBoot 3.5.0开发,通过Spring Initializer初始化项目并添加SSE依赖。核心实现包括:封装百度IP查询API为工具类,自动生成JSON对应的Java DTO;使用@Tool注解开发MCP服务;配置/sse端点提供服务。最后通过Cherry Studio测试验证,输入IP(如122.224.33.10)可返回归属地信息(如"浙江省杭州市")。
2025-06-09 18:15:00
2314
1
原创 使用Cherry Studio搭建mysql mcp应用2(sse模式)
本文介绍了Cherry Studio接入mcp-server的SSE模式配置方法。与stdio模式不同,SSE模式支持mcp server和client运行在不同机器上。文章详细说明了环境准备、项目创建、MySQL服务器配置(需安装mysql_mcp_server_pro并配置.env文件)、防火墙设置(开放9000端口)等步骤,并演示了如何在Cherry Studio中配置MCP服务器以及通过对话查询MySQL数据。最终实现了跨网络访问MySQL数据库的功能,验证了SSE模式的可行性。
2025-06-03 23:40:39
757
原创 使用Cherry Studio搭建mysql mcp应用1(stdio模式)
本文详细介绍了在Cherry Studio上搭建MySQL MCP应用的完整流程。通过配置自然语言数据库接口,用户无需编写SQL语句即可完成查询操作。环境要求包括Windows 10、Cherry Studio 1.3.12、Python 3.13和MySQL 8.x。主要步骤包括:注册Cherry Studio账户并获取API密钥,安装uv包管理工具,部署mysql-mcp-server,配置MCP服务器连接,以及创建测试数据验证功能。最终实现了通过自然语言查询数据库的功能,如"查询年龄最大的用户"等操作
2025-06-03 23:39:02
1179
原创 Jacoco的一种基本用法和两种高阶用法
JaCoCo(Java Code Coverage)是一个用于分析Java代码覆盖率的工具,帮助开发者评估测试的有效性并发现未被覆盖的代码区域。它支持多种覆盖率类型,包括行覆盖率、分支覆盖率、方法覆盖率、类覆盖率、指令覆盖率和圈复杂度覆盖率。JaCoCo可以通过Maven插件或直接使用二进制包进行调用,适用于单元测试、迭代测试和老项目重构等场景。在使用时需注意兼容性问题,避免在中文路径下使用。基本用法是通过Maven插件生成测试覆盖率报告,而高阶用法包括在迭代测试中验证测试团队的用例覆盖率,以及通过长期运行
2025-05-22 03:43:52
845
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人