- 博客(296)
- 资源 (6)
- 收藏
- 关注
原创 LangChain4J 使用实践
一个更复杂的选项是 TokenWindowChatMemory,它同样以滑动窗口方式运行,但专注于保留最近的 N 个 token, 根据需要移除旧消息。更简单的一个,MessageWindowChatMemory,作为一个滑动窗口工作,保留最近的 N 条消息,并移除不再符合条件的老消息。创建记忆提供器,通过id区分用户 在这个场景中,ChatMemory 将由 ChatMemoryProvider 提供,每个内存 ID 对应一个实例。每次问答都把把上一次的问答内容输出给ai。作用是塑造ai的身份。
2025-06-04 18:02:31
275
原创 Aware和InitializingBean接口以及@Autowired注解失效分析
在 Spring 框架里,@Autowired和Aware接口有着不同的设计目的,它们并非简单的替代关系。@Autowired的解析依赖于 bean 后处理器,属于扩展功能。接口相关方法会被调用,在某些场景下,因为@Autowired属于扩展功能,可能会在一些特殊情况下失效,而作为内置功能的 Aware。bean 后处理器来完成的,在 bean 的生命周期中,@Autowired的解析处理是在特定的扩展流程里进行的。例如在某些场景下,使用 Aware 接口注入 ApplicationContext。
2025-05-12 23:20:38
300
原创 Java引用RabbitMQ快速入门
如果没有设置限制话不管你上一条消息是否处理完,消费者会一直接收,设置厚只有处理完消息才会接受下一条。key是谁对应消费者就会接收到对应key的消息。
2025-05-07 00:21:05
596
原创 Spring Bean生命周期原理、常见的后处理器实现
springboot项目启动类定义一个LifeCycleBean,加上@Component注解,再编写一些方法,给这些方法加上Bean的生命周期过程中的注解编写自定义Bean的后处理器,需要实现InstantiationAwareBeanPostProcessor和DestructionAwareBeanPostProcessor接口,并加上@Component注解,对lifeCycleBean的生命周期过程进行扩展。bean的除了四个阶段,每个阶段都可能会有后置增强功能。
2025-04-25 01:01:45
351
原创 深度理解spring——BeanFactory的实现
BeanFactory是SpringApplication类的父类接口BeanFactory才是Spring的核心容器,主要的SpringApplication类都组合了他的功能。通过Ctrl+alt+u可以看到可以从图片中看到SpringApplication是继承了BeanFactory接口对BeanFactory进行了功能性的扩展。比如SpringApplication获取一个bean的对象。
2025-04-24 23:25:35
1428
2
原创 二叉树遍历练习题
由后序遍历确定子树的根,后序遍历从后向前看,最后一个元素为根,和前序遍历刚好相反,从后向前看后序遍历,应该是根,右,左,根据中序遍历确定子树的左右区间。通过前序遍历找到子树的根,在中序遍历中找到根的位置,然后确定根左右子树的区间,即根的左侧为左子树中所有节点,根的右侧为右子树中所有节点。B的左子树:JGDHK B的右子树:空 C的左子树:ELIM C的右子树:F。7的左子树: 4 7的右:空 9的左子树:6 9的右子树:2。D的左子树的根:G D的右子树的根:H E的右子树的根:I。
2024-07-01 16:19:02
323
原创 guli商城业务逻辑-基础篇笔记
删除只能使用逻辑删除,也就是把数据库里的删除字段从0改成1,数据不可以真正的删除掉,所以就要用到mybatis-plus的逻辑删除来执行数据库操作。找到我们之前逆向生成的代码,用的是人人代码逆向生成项目生成的,具体流程看我之前的文章。因为接口的后端api地址跟后台地址不一致,需要通过注册api网关的方式转发来解决。这里先处理人人后台的后端,后面在对接上guli的接口。单独创建一个异常类,他的作用就是用来统一处理异常的。为了避免重复的造轮子,先创建出来一个公共的类category.vue。
2024-06-16 22:25:12
1385
原创 Python 爬取淘宝指定搜索商品评论 标题 销量 计算sign
只需要替换原来的Cookie和token即可使用,自动计算对应链接地址的sign直接使用即可。需要注意是一个账号爬取过多会有验证码。
2024-06-14 14:20:53
611
原创 CTF-Misc学习笔记
我要加密的字符串为 " beyondlight" ,在上表中寻找与明文字母对应的数字组合,组合中第一个数字为横坐标,第二个数字为纵坐标,两个数字共同定位明文字符。在密码学中,凯撒密码(Caesar cipher),或称凯撒加密、凯撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。2.密文中出现的数字范围为1-5,超出这个范围的数字可能是与明文相同的数字。这个可以查看不同的色彩通道。
2024-06-04 14:01:25
576
原创 web安全基础学习笔记
index.php是一个用PHP语言开发的网站的首页,index是普遍意义上的“首页”,也就是你输入一个域名后会打开一个页面,基本上就是index.xxxx(基本上首页都不会把index.xxxx显示在url里,但也不绝对) 使用index.php~下载到源代码。eregi函数在进行匹配的时候,如果碰到%00会意味着字符串的结束,因此我们只需要传入%001234,他截取到%00后匹配的时候就会变成111,111在1114中,成功绕过。只要通过让他的语句结果为真就可以进行注入,找到注入点让他的结果不一样。
2024-06-03 20:07:52
1045
1
转载 创建一个vue项目(webpack 和 vue-cli3)
解释一下这个命令,这个命令的意思是初始化一个项目,其中webpack是构建工具,也就是整个项目是基于webpack的。所以选第一个独立放在一个文件。vue create project-name //project-name是你要创建的文件夹名字。Sass/SCSS (with dart-sass) //运行处时速度比node块。Linter / Formatter //规范层面。
2024-05-17 13:15:29
228
原创 黑马guli商城项目初始化-SpringCloud微服务项目初始化使用SpringCloudAlibaba快速搭建分布式系统
*** 1、如何使用Nacos作为配置中心统一管理配置* 1)、引入依赖,* 2)、创建一个bootstrap.properties。* 3)、需要给配置中心默认添加一个叫 数据集(Data Id)gulimall-coupon.properties。默认规则,应用名.properties* 4)、给 应用名.properties 添加任何配置* 5)、动态获取配置。* @RefreshScope:动态获取并刷新配置* @Value("${配置项的名}"):获取到配置。
2024-05-16 10:58:13
841
原创 Redis学习笔记
业务阻塞后会出现极端情况,一个线程的锁超时释放后,这个进程结束阻塞的同时也会把另一个线程的锁给释放掉了。先刷新用户的token如果不存在就接着往下走,然后走到下一个拦截器中拦截。目前都是同步进行的,优化方案是使用异步。使用独立的线程来解决耗时的部分。解决方案,存放一个线程标识,是自己的锁才能释放不释放别人的锁。在之前的写法高并发的场景下库存会出现超卖的问题。使用map结构来计算同一个线程进入了多少次锁。先操作数据库在写入缓存出现异常的情况较少。乐观锁是用来解决更新数据时候的并发问题,添加redis线程锁。
2024-05-14 10:19:25
1023
原创 linux使用docker 安装mysql redis
https://hub-stage.docker.com/ 前往这里搜索容器来部署。每个容器都有独立的运行环境。
2024-04-24 17:22:00
567
2
原创 归并排序算法
然后得到了一个新的序列,然后对比两个序列的头部看看那个序列的头部最小。第一次排序完成后就会得到一个新的数组,然后重复以上操作继续两两合并。然后把两个序列内容进行排序对比头部移动到新的序列里面去。例如这个数组,进行从大到小的顺序来合并。最后只剩下一组序列,归并排序就到最后了。
2024-04-09 17:53:45
272
原创 我的创作纪念日
提示:你过去写得最好的一段代码是什么?提示:当前创作和你的工作、学习是什么样的关系。提示:可以和大家分享最初成为创作者的初心。提示:在创作的过程中都有哪些收获。提示:职业规划、创作规划等。
2024-03-25 21:08:08
339
原创 【哈希表】Java
给每份数据分配一个编号,放入表格(数组)建立编号与表格索引的关系,将来就可以通过编号快速查找数据1.理想情况编号当唯一,数组能容纳所有数据2.现实是不能说为了容纳所有数据造一个超大数组,编号也有可能重复解决1.有限长度的数组,以【拉链】方式存储数据2.允许编号适当重复,通过数据自身来进行区分。
2024-03-17 20:03:43
169
原创 数据结构中的堆(Java)
在堆的操作中,非叶子节点的重要性体现在维护堆的性质(如最大堆或最小堆)方面。非叶子节点是指至少有一个子节点的节点,它们位于堆的上层。在二叉堆(Binary Heap)中,非叶子节点的数量总是等于总节点数的一半(向上取整)。在堆(Heap)这种数据结构中,节点被分为两类:叶子节点(Leaf Nodes)和非叶子节点(Non-Leaf Nodes)。叶子节点是指没有子节点的节点,它们位于堆的最底层。在堆中,叶子节点的数量总是大于或等于非叶子节点的数量。该方式适用索引为0起点的堆。
2024-03-12 22:28:15
514
原创 ensp实验
network 192.168.1.0他直连的网段 0.0.0.255网段的反掩码。同样的另一台交换机也是一样,lsw2配置完lsw4也要配置。配置好接口的ip地址根据这个ip地址做地址池分配就可以了。acsess只允许通过这个254vlan10的这一个区域。设置完成后设置vlan10的ip地址也就是他的网关。dhcp动态协议给他一个范围他自行分配ip地址。开启他的dhcp 选择他的模式为global。陪完整对应的ip地址之后可以配置ospf了。根据接口的网段来分配ip地址,从大到小的方式。
2023-12-24 01:10:18
1363
原创 软考软件设计师-存储管理-文件管理-计算机网络(中
只有后面没有在使用的才能进行替换,比如3后面的0和2都是马上需要访问到的所以不能换,1排在最后面优先把1替换掉把1换走把3换进来。逻辑块是5我们直接求他的最后一块是多少,第一块是5一共要装256块因为第一块已经装上了那就是256-1减去第一块。接口就是往前推算,从3这个内存块开始,最近使用过8,1,2就不能把他们换走,往前看最久一次使用的是7所以先把7给换走。访问到0的时候0是有的不需要置换,当访问到33在里面没有所以需要置换进去。只要在内存块中没有的都是缺页面的,比如内存块701一直到2才是没有缺页的。
2023-09-23 02:06:23
585
原创 软考软件设计师-计算机组成与体系结构(上
根据前驱图画出六个进程中是v先操作还是p先操作。例如先执行a然后在释放执行b。然后在P2中 S2执行前要先保证a先执行完成了P(a)先把a给锁定住,等a执行完成后在执行s2,执行后又释放Vc和Vd【【2023软件设计师备考】软考中级 | 软件设计师考点理论精讲【零基础适用】】 【精准空降到 41:49】
2023-09-20 17:54:46
1932
原创 Mysql的视图
1.视图可以看做一个虚拟的表,本身是不存储数据的。视图的本质可以看作是存储起来的select语句2.视图中涉及到的表都统称为基表3.针对视图多DML操作,会影响到对应基表中的数据。反之亦然4.视图本身的删除,不会导致基表中数据删除。5.视图的应用场景:针对小型项目,就不推荐使用视图。6.视图的的有点:简单控制。
2023-02-12 20:15:31
466
原创 hutool请求使用POST或者GET响应中文乱码问题解决方案
请求的时候后面加上CharsetUtil.后面是根据响应类型来使用编码,我用的是GBK就能返回中文了。
2022-12-12 20:46:08
3192
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人