- 博客(205)
- 收藏
- 关注
原创 Spring Boot 从Socket 到Netty网络编程(下):Netty基本开发与改进【心跳、粘包与拆包、闲置连接】
【摘要】本文介绍了基于Netty框架的网络编程实现方案。通过对比传统Socket的BIO/NIO模式,指出Netty作为NIO封装框架的优势:简化API设计,让开发者聚焦业务逻辑而非底层细节。文章详细展示了服务端(ServerBootstrap)和客户端(Bootstrap)的核心代码结构,包括线程组配置、通道初始化、消息处理器绑定等关键步骤。针对网络通信常见问题,提出了心跳机制(IdleStateHandler)和粘包拆包(LengthFieldBasedFrameDecoder)的解决方案,并给出了自定
2025-06-04 14:57:57
1061
原创 Spring Boot 从Socket 到Netty网络编程(上):SOCKET 基本开发(BIO)与改进(NIO)
本文探讨了Socket网络编程的核心概念与技术实现。首先介绍了TCP连接的三次握手和断开四次握手机制,以及Java中ServerSocket和Socket类的关键方法。通过BIO(阻塞式IO)实现案例展示了多线程模型存在的资源消耗问题,进而引入NIO(非阻塞式IO)单线程解决方案,使用Selector实现高效事件监听。虽然NIO提升了并发性能,但代码复杂度较高,文章最后指出Netty框架将作为更优解决方案在后续介绍。全文从基础到进阶,循序渐进地分析了不同IO模型的优缺点。
2025-06-04 14:57:36
1189
1
原创 Spring Boot 3.X 下Redis缓存的尝试(四):进阶:使用Redis API操作缓存
本文介绍了在SpringBoot3.X中使用Redis API实现缓存服务的具体方法。通过改造Service层,利用RedisTemplate操作缓存数据,实现了学生信息的查询、更新和删除功能。文章展示了三个核心方法:getStuById(查询并缓存学生信息)、update(更新缓存数据)和delete(删除缓存),并提供了对应的Controller测试接口。该方法既保证了程序性能,又保持了业务逻辑的完整性,是一种有效的缓存实现方案。
2025-06-03 08:30:00
372
原创 Spring Boot 3.X 下Redis缓存的尝试(三):精进-用Jason进行序列化
【摘要】针对SpringBoot 3.x中使用Redis缓存时JDK默认序列化导致int类型数据无法正常显示的问题,通过自定义RedisTemplate和RedisCacheManager实现了JSON序列化方案。关键配置包括:使用Jackson2JsonRedisSerializer进行对象序列化,设置StringRedisSerializer处理键值,并配置缓存管理器支持注解的JSON存储方式。该方法有效解决了基本数据类型显示异常问题,同时通过设置1天的缓存有效期和空值过滤优化了缓存性能。
2025-06-03 08:15:00
306
原创 Spring Boot 3.X 下Redis缓存的尝试(二):自动注解实现自动化缓存操作
本文介绍了在SpringBoot项目中通过注解方式简化Redis操作的方法。首先需添加Swagger3.0和缓存相关依赖,然后通过@EnableCaching启用缓存功能。文章详细展示了如何使用@Cacheable、@CachePut和@CacheEvict注解分别实现Redis的查询、更新和删除操作,无需编写额外代码。同时配置了Swagger接口文档便于测试,并提供了完整的实体类、服务层和控制层代码示例。通过注解方式可以更高效地实现对Redis的CRUD操作,简化开发流程。
2025-06-02 17:18:14
766
原创 Spring Boot 3.X 下Redis缓存的尝试(一):初步尝试
摘要:本文介绍了使用Redis缓存优化系统权限查询的方案。针对多层级权限关系(角色-菜单-按钮)查询耗时的问题,提出将不频繁更新的数据存入Redis以减少数据库压力。提供了SpringBoot整合Redis的详细步骤:1)创建项目并配置pom依赖;2)编写Redis配置类,设置键值序列化方式;3)通过测试类演示String、List、Set、Hash等数据结构的操作。该方案能有效提升查询性能,实现业务解耦,适用于更新不频繁但查询耗时的场景。
2025-06-02 16:47:32
472
原创 Delphi实现域名转IP地址的两种思路与实现方法
因为域名是固定的,而域名指向的IP是不同的,我们想通过域名转IP的时候可以利用如下两种方式进行实现。代码来自于网络中的一款注入工具的代码片段,分离出来如下。二、利用WinSock单元实现。一、NMHTTP控件。
2025-05-04 10:03:49
149
原创 Delphi创建IIS虚拟目录的方法
服务安装后配置很麻烦,想像一下你的客户不懂这些配置,你又烦于这些流水线式的配置,如果写一个工具实现一键部署显得那么高档,逼格高的一批。以下实现Delphi创建IIS虚拟目录的方法。
2025-05-04 09:35:53
221
原创 虚拟Ubuntu系统 开机提示:SMBus Host controller not enabled 后正常启动,去除这个提示提升开机速度。
如题,虚拟机中的Ubuntu系统开机提示:SMBus Host controller not enabled,虽然能正常启动,但不仅影响开机速度,而且还膈应人。1.编辑blacklist.conf文件(/etc/modprobe.d/blacklist.conf)或者使用以下命令编辑。以上操作仅限虚拟机操作,如果不是虚拟机需要去BIOS上启用SMBus控制器。发现i2c_piix4有问题, 禁止 i2c_piix4 模块。2.使用命令重置引导。
2025-04-09 15:50:07
539
原创 VMware 虚报化Ubuntu 卡成一B,如何接招?
Win10 专业版 安装VMware pro ,虚拟化出一个Window10,另一个是UBuntu.自从使用起来去不去就卡死。开始是以为驱动或者升级造成的,重新安装一段时间问题照旧。更气人的这种现象具有不定期性,说不定什么时候就来这么一出。第一步关闭Windows的Hyper -V ,据说它与VMware八字不合。据说Win11 下虚拟机也是这个尿性,反正我这样配置下来,测试了一周正常。
2025-04-01 16:13:01
302
原创 IDEA2024又一坑:连接Docker服务连不上,提示:Cannot run program “docker“: CreateProcess error=2
为新电脑安装了IDEA2024版,因为局域网中安装有Docker,所以这台电脑上没有安装,当运行时发现死活连不上Docker报:Cannot run program “docker“: CreateProcess error=2。为这台电脑安装Docker,但是仍然显示连接超时,升级一下更新Docker,正常了。发现主要是没有找到Docker的执行文件,那么是不是安装Docker就好了呢。换较老点的版本IDEA2023版,可以正常连接。Ping 不仅通,测试远程端口正常。其它电脑都能连,排除。
2025-03-11 15:11:43
706
原创 手把手教你一步步通俗理解Spring Boot MyBatis 精髓(四):笑傲江湖
上一篇我们讲了动态SQL足以让我们应付常见的问题,但是如何让MyBatis更高效呢,那么本节会抛砖引玉式的讲解几个实例并实现分布查询。
2025-01-21 10:00:00
518
原创 手把手教你一步步通俗理解Spring Boot MyBatis 精髓(三):葵花宝典
上节针对MyBatis进行了基本的增删改查,这显然不足以应付更多的需求,比如:批量删除、条件查询等等,对于业务而言,新增、修改、删除的业务并没有查询需求场景多,这样查询多样化意味着我们需要对MyBatis有更深的理解。
2025-01-21 07:45:00
721
原创 手把手教你一步步通俗理解Spring Boot MyBatis 精髓(二):牛刀小试
书接上篇,我们为项目搭建了一个Spring Boot 的基本项目,并做了相关配置,今天你们将就部门表(sys_dept)进行实现一个简单的功能并借此向大家介绍MyBatis的最基本用法。
2025-01-20 08:30:00
443
原创 手把手教你一步步通俗理解Spring Boot MyBatis 精髓(一):厉兵秣马
我认为在学习一个技术前需要了解以下几个基本问题并给出答案:1.为什么学? 几乎大部分程序都会与数据库打交道,那么MyBatis就是处理数据库中的数据的(简单的讲就是增删改查),Spring Boot是的持久层就是干这事的(官方叫ORM)。因此,我们如果搞不定持久层的技术就像说相声的四门功课少了一门一样!2.怎么学会? 我会从最基本配置讲起并试图用通俗化的语言来一步的讲解,但只保证了我教了,至于你们会不会仍需要你们亲手实践,这里在教程的最后我会提供完整的项目代码供大家参考。
2025-01-20 07:45:00
1160
原创 警惕IDEA 2024版重大Bug问题:LomBok失效、Gradle冲突、Spring Boot启动错误
一直以来我认为工具类的软件是越新越好,因为工具代表着一定的先进性;但是IDEA 2024好好的给我上了一课,比如lombok 不起作用、比如Spring Boot 3.4.x 启动报错、再比如MyBatis log plus冲突、再比如Gradle插件冲突.
2025-01-17 15:59:07
1684
4
原创 Spring Boot 下的Swagger 3.0 与 Swagger 2.0 的详细对比
先说结论:Swgger 3.0 与Swagger 2.0 区别很大,Swagger3.0用了最新的注释实现更强大的功能,同时使得代码更优雅。就个人而言,如果新项目推荐使用Swgger 3.0,对于工具而言新的一定比旧的好;对接于旧项目原有Swagger 2.0版本不变就不要变,因为它作为辅助功能能达到你的需求就可以了(当然我一再声明这只代表我的个人看法,欢迎留言讨论)。
2025-01-14 13:15:06
1610
原创 Spring boot 项目报:‘启动项目时控制台报错:“Host ‘192.168.XX.XX’ is blocked because of many connection errors;
Spring Boot 项目在Docker上运行错误,完整提示如下:java.sql.SQLException: null, message from server: “Host ‘服务器上的IP' is blocked because of many connection errors;
2025-01-09 10:15:15
424
原创 Docker 中的SpringBoot项目的 SQL injection violation,comment not allow
Spring Boot项目在开发环境下(mac + idea 连线上数据库)调试正常,项目上传到Docker上面报错:SQL injection violation,comment not allow。
2025-01-04 10:14:49
428
原创 Delphi 对ini、txt文件的操作与应用
1、在Interface的Uses节增加IniFiles;2、在Var变量定义部分增加一行:然后,就可以对变量myinifile进行创建、打开、读取、写入等操作了。
2024-12-24 11:37:26
900
原创 MySQL 8.0+ 出现‘sql_mode = only_full_group_by‘ 错误解决方案
在旧系统数据库迁移到新的数据库运行时;数据做部分条件查询时会报:sql_mode = only_full_group_by,原因是新版本的MySQL关掉了对only_full_group_by的支持造成的,以下是在不修改SQL语句的情况下重新支持only_full_group_by的解决方案。
2024-12-16 08:30:00
889
原创 Delphi编写涂鸦桌面的小程序
首先,新建一个Application,将Form1的WindowState设为wsMaximized,BorderStyle设为bsNone。用Delphi编写涂鸦桌面的小程序,类似于腾讯会议中的画板功能的实现。接下来,在Form的OnCreate事件中写入使窗口的客户区域显示屏幕画面的代码(关键步骤)Brush.Style :=bsClear;//这里的实现方法用Delphi是最简单的了。可以使窗口的Client区域充满整个屏幕,那么我们就可以在上面随意的画画了。
2024-12-12 10:01:54
571
原创 delphi 检测程序内存泄漏
A)、将CheckMem.pas单元加入到工程中B)、修改工程文件,将'CheckMem.pas'放到uses下的第一句C)、正常的编译、运行应用程序D)、退出应用程序后,将在应用程序目录下生成报告(如果有漏洞的话,如果没有则不生成)。
2024-12-12 09:47:14
1366
原创 硬核Delphi(二):Delphi 进程防杀之HOOK API法
用过"xx安全卫士"、"XX管家"等的的朋友都知道,它的进程是无法杀掉的,在任务管理器中杀进程的话,会弹出一个消息框提示拒绝访问!那么这是怎么实现的呢?很简单,就是使用了HOOK API的方法。
2024-12-10 07:45:00
390
原创 硬核Delphi(四):程序不被识别为病毒的思路【免杀】
现在很多打着安全软件的名义对于是不是病毒的都认识为病毒,这里提供一些思路给大家。虽然现在已经2024年了,很多思路可能已经不好用了,但大家抱以学习的心态;
2024-12-09 08:00:00
612
原创 硬核Delphi(一): 实现自我删除、自我复制、自我启动、进程检测、进程保护
前言作者不得不提醒各位网友;我这里提供的思路代码仅供学习,切不可做违法的事;做为技术无好坏之分,但我们人却有好坏之分。以下相关代码仅研究参考并保护自己的权益使用。
2024-12-09 07:45:00
729
原创 Delphi 实现键盘模拟、锁定键盘,锁定鼠标等操作
说明: 调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否则该函数不会返回SendMessage所包含4个参数:1. hwnd 32位的窗口句柄窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可视对象的句柄2. wMsg 用于区别其他消息的常量值,这些常量可以是Windows单元中预定义的常量,也可以是自定义的常量3. wParam 通常是一个与消息有关的常量值,也可能是窗口或控件的句柄4. lParam 通常是一个指向内存中数据的指针。
2024-12-05 10:03:34
1916
原创 Delphi 驱动开发:实现原理与环境搭建
Delphi能不能开发Windows的驱动程序(这里的驱动程序当然不是指VxD了^_^)一直是广大Delphi fans关注的问题。姑且先不说能或者不能,我们先来看看用Delphi开发驱动程序需要解决哪些技术上问题。Delphi的链接器是无法生成Windows内核模式程序的,因此用delphi无法直接生成驱动程序。M$的链接器是可以生成Windows内核模式程序的,那么是否可以用Delphi生成目标文件,然后用M$链接呢?
2024-12-05 09:48:48
1122
原创 Delphi 内存流与文件流 通俗教程
所谓"流", 就是一段数据或是一块内存;在进行流操作时, 我们不必关心流中的数据到底是什么;只需要知道流的大小和当前的指针位置. 所以流只有两个属性:对流的操作, 不过就是读取和写入. 所以流最主要的方法就是 Read 和 Write.在很多控件的使用中, 读取主要用 LoadFromStream;写入主要用 SaveToStream.
2024-12-03 08:00:00
344
原创 Delphi WebBrowser 基本操作与常见问题的解决方案
前言WebBrowser 作为Delphi 常见的网络浏览控件,我这里整理了一些它的基本操作,遇到了一些问题,我梳理了一下并给出解决方案。
2024-12-03 07:45:00
1583
原创 Delphi 手把手教你DLL 文件的创建、调用及常见问题
前言我们有时候会把相关的方法封装到DLL,不仅可以减少EXE主程序的体积,而且可以减少了把代码写在一起的维护成本,这点有些想分布式开发的味道。
2024-12-02 07:45:00
1749
原创 delphi 加壳原理与简单实现加壳
2.增加一段壳头xor $50的代码function AttachStart-function AttachEnd。AddShell()源自于前一段时间有写的addsection()新增区段代码,3.修改原启动代码入口点所在区段的段属性可写并进行xor $50运算加密。不支持addshell()处理已经过addshell的exe。这一段代码是先填充,再被修改成合适原EXE的壳头。在增加区段代码的基础上,追加了。1.修改启动入口点位置。
2024-12-02 07:30:00
421
原创 Delphi 内存管理(读取、修改、补丁)
Windows 是多任务的操作系统, 一个任务就是一个应用(应用程序)、一个应用占一个进程;在一个进程里面, 又可以运行多个线程(所以就有了很多"多线程编程"的话题).对 Win32 来讲, 系统给每个进程 4GB 的地址空间:低端 2GB($00000000 - $7FFFFFFF) 给用户支配;高端 2GB($80000000 - $FFFFFFFF) 留给系统使用.文件或程序要调入内存才能工作, 先看看我们的内存到底有多大吧.
2024-11-28 09:40:25
1171
原创 Delphi Windows系统服务控制与监视
有时候我们为了程序能稳定运行会把程序写成系统服务里,并监控它的状态,以下就是关于Delphi 的相关示例代码。
2024-11-28 09:39:43
540
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人