- 博客(64)
- 收藏
- 关注
原创 AI从头开始-黑马LongGraph-简单学习
视频网址:【挑战19分钟搞定,LangGraph快速入门与原理剖析】 https://www.bilibili.com/video/BV1HVFLzfEeS/?
2026-04-21 22:44:01
167
原创 AI从头开始-黑马LongChain-整个教程中的缺少知识点的补充
大体就是下面的流程,其实我们的智能机器人已经实现了很多部分了,比如工具、智能体以及记忆存储部分都已经实现了,现在只需要暴露前端接口以及实现一个前端页面进行对接就可以了。安装FastApi。
2026-04-21 22:05:49
473
原创 AI从头开始-黑马LongChain-Agent智能体项目-扫地机器人
此时RAG也变成了一种工具这个写法里的 @tool(description=“从向量存储中检索参考资料”),本质上是一个装饰器:它会把你下面定义的普通 Python 函数,包装成一个可被 Agent / 大模型调用的“工具”对象,而不再只是一个单纯的函数。LangChain 官方文档明确说明,tool 的作用就是把 Python 函数或 Runnable 转换成 LangChain tool,并且可以用装饰器形式直接写在函数上面。
2026-04-20 23:59:33
421
原创 AI从头开始-黑马LongChain-Agent智能体
model 的 stream 更像“内容流”,它通常是在生成同一条回复时,把这条回复的文本按 token 或片段逐步吐出来;
2026-04-20 17:13:40
77
原创 AI从头开始-黑马LongChain-RAG开发3
有了这个自定义方法,我们就可以构建各种各样的自定义操作,比如各种的结果处理,以及各种的输入处理等等。
2026-04-19 14:49:22
244
原创 AI从头开始-黑马LongChain-RAG开发2
直接调用接口也可以访问本地模型再次强调一下,end是作用于print的,因为原本print是以回车结尾的,这样我们的段落太过于散乱。所以使用end=“”就能保证输出是连续而不是一段一个回车这样的。flush就是结果立刻显示出来,而不是最后统一输出我的实现有点错误。因为直接从前面复制过来,问题出现在最后的输出部分,直接输出了chunk,但是聊天模型和前面的大模型还是有点不同的。这里需要修改成chunk.content修改后因此更加推荐简写形式。注意,嵌入模型不使用in
2026-04-18 20:44:50
94
原创 AI从头开始-黑马LongChain-RAG开发1
其实主要的工作流程就是三个大部分第一步提取新的信息并生成对应的文本嵌入。第二步根据提问生成内容嵌入,然后将内容嵌入与文本嵌入进行比对,找到相关信息。第三步就是拼接问题与相关知识,打包给大模型进行提问。
2026-04-13 21:16:55
62
原创 AI从头开始-黑马LongChain-OpenAI库基础使用
api-key不建议直接在代码中写,建议直接放在环境变量中这里面就是模型的一些回复内容,包含各种信息,其中最终要的是一个choices的内容,这里面就是模型的返回值
2026-04-13 16:26:28
42
原创 java从头开始-黑马点评-用户签到
BitMap就是位图,核心思想是将每一个比特位和一个特定的业务状态建立映射。可以大幅缩小存储所需的空间取钱两比特位的结果是3,这是因为前两位是11,二进制转10进制就是3签到实现
2026-04-03 00:17:17
36
原创 java从头开始-黑马点评-达人探店
这里其实比较有意思的一点就是,需要用redis实现一人一赞这里我们要换成有序集合,使用ZSCORE来代替原本的Set中的查询值是否存在的操作,其实也就是查一个有序set中值的的分数,有当然就有分数,没有当然就返回没有,因此可以实现查找是否存在。使用ZRANGE来实现取前五名查前五但是这里实际上运行以后发现了一个bug,就是此时点赞用户的顺序完全反了。检查日志发现从redis中并没有顺序错误,则此时应该是在后端的处理或者查数据库的错误。最终发现,其实是sql语句中的in的问题。因为使用
2026-04-02 20:04:10
79
原创 java从头开始-黑马点评-秒杀后续优化与消息队列
两个问题,第一个内存限制,因为此时阻塞队列使用的是jvm中的内存,如果不对阻塞队列加以限制就会导致内存爆炸,因此需要设置队列上限。第二个就是数据安全问题,如果阻塞队列执行的时候宕机了,将会导致各种库存信息以及订单信息消失,此时又该如何解决呢?
2026-03-31 21:28:51
204
原创 java从头开始-黑马点评-分布式锁-redis实现基础版
注意此处使用的是uuid而不是线程号,因为多个进程线程id依然有可能冲突。解决问题的关键就是释放的时候判断线程号是否相同,不同就无需释放了。完整调用,此时变成一行代码了,就保证了原子性。
2026-03-30 22:52:58
70
原创 java从头开始-黑马点评-项目导入以及短信登录
这之所以要修改拦截器,是因为我们要实现redis中存储用户有效时长的更新,因为我们在存储redis中的时候设置了有效时长,但是此时我们发现一个问题就是这个时长是一个固定的,不能像session中那样只要登录就重置有有效期,因此需要修改拦截器部分来更新有效期。这三点首先要能够实现数据共享,其次由于Session是存储在内存中的,因此这个替代方案也要在内存中。还有一点就是这里的获取用户并不是使用的get方法,因为get方法取出的只是hash中的一个键值对,而不是完整的hash,因此使用entries方法。
2026-03-23 22:53:56
365
原创 java从头开始-苍穹外卖-day10-订单状态定时处理、来单提醒、用户催单
cron表达式有一个点需要注意,这里的周是指周几,一般和日不会一起出现,因为可能冲突具体使用流程在支付后面添加了下面的代码这个代码的具体流程为剩余代码和上一个基本一样
2026-03-15 20:06:02
45
原创 java-从头开始-苍穹外卖-day08用户下单
以及https://blog.youkuaiyun.com/weixin_29327977/article/details/158988298。链接为:https://blog.youkuaiyun.com/XZY__one/article/details/135818055。
2026-03-15 12:00:53
27
原创 java从头开始-苍穹外卖-day07-缓存菜品、缓存套餐
大量用户访问的时候,将会频繁调用sql。可能会比较慢,影响用户体验,因此我们将菜品进行缓存。
2026-03-12 23:33:29
366
原创 java从头开始-苍穹外卖day05-Redis及店铺营业状态设置
是一个测试用的命令,如下就是正确运行了。客户端的退出是exit命令,和服务器端不太一样。有时候想要链接别的地方别的端口的服务,可以使用下面的命令。左侧插入以后发现是一个倒叙的,说明此时下面是表尾部,上面是表头部,因为这里面都是从头插入,从尾部取出,有点像队列。启动redis的客户端,输入命令:redis-cli.exe。需要注意的是这个有序集合是自动排序的。这里的L表示是left表示从左侧查询,如果是R就是从右侧。注意集合中的成员都是唯一的,不能重复。,就是查找所有类型的key。比如keys set。
2026-03-11 14:53:53
409
原创 java从头开始-苍穹外卖-day04-菜品分页
这个VO是一个比较关键的点,主要原因就在于,其实这个里面有一个菜品分类,但是这个菜品分类实际上是一个外键,是从其他表中查询出来的,因此需要额外查询。需要格外注意的是,这里的返回值是DishVO,写错了是没办法正确返回的。我第一次就写错名称了,可以看到查询到了10条数据,但是一看内容全是空,就是因为类型没有对齐导致最终无法对对象正确赋值。具体错误原因是没有给if里面的name、status之类的执行具体的数据集,也就是应该写成dish.name
2026-03-09 23:20:52
29
原创 java从头开始-苍穹外卖-day04公共字段自动填充
比如下面这个类中有很多方法,我想记录每个方法的执行时间,如果用左侧写法需要修改所有方法,太慢太复杂。而使用右侧的AOP,就可以构建一个类然后他的输入其实是我们对应的目标方法,然后把统计时间增加到输入方法的两端来统计运行时间。上面的注释其实就是一个设置拦截那些方法的注释,这里显示的是我们会拦截这个service包里面的所有类中的方法。
2026-03-09 12:42:38
54
原创 java从头开始-苍穹外卖-day03-启用禁用员工账户以及修改用户
中间重新启动程序的时候出现了问题,就是上面配置环境中的sql语句写的有点问题,删去以后就可以正常执行了。通过这个路径参数可以将状态返回给后端。
2026-03-08 15:10:02
50
原创 java从头开始-苍穹外卖-day03-员工分页
首先找到service层的配置文件,可以看到这里面其实实现了一个针对登录的拦截器,而我们此时增加的是一个额外的拦截器,需要重写父类的一个具体的java转为JSON的类看如下目录中的类。
2026-03-07 21:56:12
55
原创 java从头开始-苍穹外卖-day03-新增员工
这个地方的难点在于拦截器可以取得用户id,但是拦截器并不直接调用service类,导致后面存储操作用户id的时候其实取不到id。注意如果接受的是一个json格式的数据一定要在前面增加一个@RequestBody注解。方法路径在类上面已经增加过了所以这里加上@PostMapping注解但是不用写路径。他会捕获请求,并判断是不是需要验证,之所以401是因为我们没有登陆,也就没有令牌。然后通过设置全局参数,可以加入一个token到请求头中,这样就可以通过验证了。然后根据异常的关键字,可以进行不同的处理。
2026-03-06 20:50:54
225
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1