- 博客(15)
- 收藏
- 关注
原创 Spring Boot Events教程
实现效果如下 - 同步异步各发送消息,实现接口和使用注解的方式都监听到消息打印,一共打印四条消息。扩展的类(或自 Spring 4.2 以来的任何自定义 POJO)。是一个对象,它携带有关已发生的事情的信息,它被发布以通知感兴趣。:默认情况下,事件是同步的。,允许应用程序的不同部分进行通信,而无需紧密耦合。Spring 将事件分派给侦听器。,发布者不知道谁在听,听众也不在乎谁发布。使用 (或) 创建侦听器。a) 创建事件(自定义 POJO)c) 发布事件(异步发送事件)b) 发布事件(同一线程)
2025-10-24 11:58:30
336
原创 el-upload + minio实现预签名浏览器文件上传
前提:minio的版本要选RELEASE.2025-04-22T22-12-26Z版本之前的,之后的版本页面隐藏了很多功能,bucket要开好权限,默认是Private,要开成Public,或者自定义Custom,还可以定义规则设置目录的访问权限。前端使用el-upload组件进行图片上传,代码如下 (当前使用的是element-ui的vue2版本,跟vue3版本有所区别,vue3版本的组件可以设置请求方式为PUT,vue2只能是自定义请求方法)
2025-08-19 18:18:17
519
原创 基于Dify构建企业级数据智能助手:从表结构解析到自然语言SQL的实践
工作流构建好之后就可以运行查看效果了。dify能实现的,代码肯定也能够实现的,只是把工作流转换成代码的方式,工具的调用的话使用MCP的方式调用就能实现了,感兴趣的就去试试把。
2025-08-07 12:24:19
641
原创 基于Python的RAG全流程实战:从文档处理到智能问答
提取内容try:# 获取请求数据和会话 IDreturn JsonResponse({'error': '缺少消息内容'}, status=400)return JsonResponse({'error': '缺少会话ID'}, status=400)
2025-07-25 17:23:56
791
原创 java-agent学习 + 实战demo
Java Agent技术解析与实现摘要:Java Agent分为Premain和Attach两种类型,主要区别在于触发时机不同。Premain Agent在JVM启动时加载,通过premain方法入口和Instrumentation API修改字节码;Attach Agent则在JVM运行后通过VirtualMachine.attach()动态加载。两种方式都通过ClassFileTransformer实现对类字节码的修改,可使用Javassist等工具库进行代码增强。本文详细介绍了两种Agent的实现方
2025-07-24 18:09:39
913
原创 解决sharding-jdbc执行内置库查询库名被截取的问题
下面有两条SQL是ShardingSphere打印的第一条是Logic SQL,是我们提供的SQL,第二条是Actual SQL,是分表组件处理过后真正会执行的SQL,其中可以看到information_schema.已经被截取掉了,导致执行的时候报错。通过connection.getMetaData().getConnection();获取原始的Hikari连接。获取数据源连接 - 是ShardingSphereConnection。用原始的Hikari连接去执行sql语句就正常查询到结果了。
2025-03-19 11:26:29
406
原创 MySQL一条查询语句的SQL执行顺序是怎么样的?
如果指定了 OUTER JOIN(如 LEFT OUTER JOIN、RIGHT OUTER JOIN),那么保留表中未匹配的行作为外部行添加到虚拟表 VT2 中,产⽣虚拟表 VT3。如果 FROM ⼦句包含两个以上表,则对上⼀个连接⽣成的结果表 VT3 和下⼀个表重复执⾏步骤 1)~步骤 3),直到处理完所有的表为⽌。对虚拟表VT3应用WHERE过滤条件,只有符合的记录才被插入虚拟表VT4中。将虚拟表VT9中记录按照进行排序操作,产生虚拟表VT10,11。去除重复数据,产生虚拟表VT9。
2025-03-17 11:04:14
163
原创 RabbitMQ学习总结及配置化扩展
结论:Q1收到routingKey为quick.orange.rabbit、quick.orange.fox的消息 Q2收到routingKey为quick.orange.rabbit、lazy.brown.fox、lazy.pink.rabbit、lazy.orange.new.rabbit的消息。现在我们需要将我们的消息标记为持久性。再有两个工作进程的情况下,假如所有奇数消息都很复杂,处理时间较久,而偶数消息很轻,处理时间较快,那么就会导致一个工作进程会一直很忙,另一个工作进程几乎不会做任何工作。
2025-02-05 17:11:35
1127
原创 Mybatis源码,原理学习
1.1.1.加载全局配置文件:Resources.getResourceAsStream(“mapConfig.xml”);1.2.2.构建SqlSessionFactory对象:SqlSessionFactoryBuilder().build(resourceAsSteam);1.3.3.构建SqlSessionFactory对象,需要Configuration对象(MyBatis核心配置类),所以通过解析XML文件,将配置信息全部封装到Configuration对象中。
2024-11-27 16:53:40
1295
原创 Docker学习及实践笔记
当我们利用Docker安装应用时,Docker会自动搜索并下载应用镜像(image)。镜像不仅包含应用本身,还包含应用运行所需要的环境、配置、系统函数库。Docker会在运行镜像时创建一个隔离环境,称为容器(container)。镜像仓库:存储和管理镜像的平台,Docker官方维护了一个公共仓库:docker hub命令说明文档地址拉取镜像推送镜像到DockerRegistry查看本地镜像docker rmi删除本地镜像docker rmidocker run创建并运行容器(不能重复创建)
2024-10-31 17:01:26
684
原创 Sonarqube学习和实践记录
sonarqube扫描flowservice的一个demo,操作过程同样适应于java、python等主流开发语言
2023-03-15 15:33:44
502
原创 Failed at the node-sass,node-sass安装失败
npm ERR! code ELIFECYCLEnpm ERR! errno 1npm ERR! node-sass@6.0.1 postinstall: node scripts/build.jsnpm ERR! Exit status 1npm ERR!npm ERR! Failed at the node-sass@6.0.1 postinstall script.npm ERR! This is probably not a problem with npm. There is like
2022-05-11 18:33:15
1894
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅