langchaingo
1. LangChain Go 简介LangChain Go 是 LangChain 框架的 Go 语言实现版本,它为开发者提供了一套完整的工具链来构建基于大语言模型(LLM)的应用程序。LangChain Go 继承了 LangChain 的核心理念,旨在简化与各种 AI 模型的集成和交互过程。 主要特点 模块化设计:提供了清晰的模块化架构,包括 llms、Prompts、Memory、Chains 等核心组件 多模型支持:支持 OpenAI、Anthropic、Cohere、HuggingFace 等多种主流 AI 服务提供商 链式调用:支持复杂的链式操作,可以将多个步骤组合成一个完整的工作流 内存管理:提供多种内存管理策略,支持对话历史的持久化和管理 Go 语言优势:充分利用 Go 语言的并发特性和性能优势 核心概念 LLM(Large Language Model):大语言模型的抽象接口 Prompt:用于与模型交互的提示模板 Chain:将多个组件串联起来的执行链 Memory:用于存储和管理对话历史的组件 Agent:能够使用工具并做出决策的智能代理 2....
go中的字符串与字符处理
前言在Go语言开发中,字符串和字符处理是非常重要的基础技能。Go语言提供了丰富的标准库来处理字符串操作,本文将深入介绍Go语言中的字符串和字符类型,以及如何高效地进行字符串处理。 1. Go语言中的字符串和字符类型1.1 字符串类型(string)在Go语言中,字符串是一个不可变的字节序列。字符串类型用string关键字表示,底层实际上是一个字节数组。 123456789101112package mainimport "fmt"func main() { // 字符串声明和初始化 var str1 string = "Hello, 世界" str2 := "Go语言字符串处理" fmt.Printf("str1: %s, 长度: %d 字节\n", str1, len(str1)) fmt.Printf("str2: %s, 长度: %d 字节\n", str2,...
域名配置
网站域名配置开发记录项目概述本文档记录了为 WaitingToDo 项目配置域名 waitingtodo.cn 的完整过程,包括前端、后端、存储服务和反向代理的配置。 项目信息: 项目名称:WaitingToDo 域名:waitingtodo.cn 服务器IP:101.34.246.32 项目类型:前后端分离的 Web 应用 技术架构12345678用户浏览器 ↓ HTTPS (443)Nginx 反向代理 ↓┌─────────────────┬─────────────────┬─────────────────┐│ Vue.js 前端 │ Go API 后端 │ MinIO 存储服务 ││ (端口: 7070) │ (端口: 8080) │ (端口: 9000) │└─────────────────┴─────────────────┴─────────────────┘ 技术栈: 前端: Vue.js + Vite 后端: Go + Gin 框架 存储: MinIO 对象存储 反向代理: Nginx SSL:...
Web应用抵御恶意攻击
前言作为一个开发者,想必或多或少都有过开发Web的经历。Web应用由于其开放性和易用性,成为了攻击者的主要目标之一。常见的攻击方式包括SQL注入、跨站脚本(XSS)、跨站请求伪造(CSRF)等。恶意攻击可能会造成敏感数据泄露、服务崩溃等问题。最近,博主部署的Web应用就遭到了恶意攻击,并且还造成了panic异常,导致后端服务崩溃重启了。 攻击记录以下是部分攻击记录 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869[GIN] 2025/08/05 - 17:24:59 | 401 | 38.121µs | 43.129.179.168 | GET ...
MySQL的Order By
在使用MySQL的过程中,常常会用到Order By来对查询结果进行排序。Order By可以按照一个或多个列进行排序,默认是升序排列(ASC),也可以指定为降序排列(DESC)。 但是需要注意的是,如果排序字段有多个重复的值,那么排序结果的顺序是不确定的,MySQL可以随意返回这些记录的顺序,可能导致每次查询的结果不一致。特别是在分页查询的情况下,如果重复值的行数超过了每页的行数,可能会导致结果重复或丢失。 例如下面的sql语句 12345SELECT *FROM tasksWHERE user_id = 2 AND type = 0ORDER BY ddl DESCLIMIT 5 OFFSET 0 该sql语句使用ddl作为排序字段,当ddl字段重复值少于5条时,由于少于分页限制数,MySQL会返回所有重复值的记录。这种情况下不容易发生bug。但是一旦ddl字段重复值超过5条,特别是排序在最前面的重复ddl记录数超过5条时,非常容易发生记录重复或丢失的情况。 因此在使用Order...
build your own gopher
地鼠(Gopher)是 Golang 的官方吉祥物,golang的开发者也常常称自己为gopher。它通常长这样 随着golang越来越受欢迎,gopher也越来越多的出现在各种场合。比如在一些开源项目的logo中,或者在一些网站的图标中。gopher的形象也越来越多。作为一个golang开发者,拥有一个属于自己的gopher是非常有趣的事。 而在网站 https://gopherize.me/ 中,你可以根据自己的喜好,定制一个属于自己的gopher。你可以选择不同的服装、配饰、发型等,让你的gopher更符合你的口味。例如我的gopher是这样的 参考自 https://blog.wolfogre.com/posts/gopherize-me/
Github中的License选择
引言在GitHub上创建新项目时,有一个经常被忽视但极其重要的步骤——选择适当的开源许可证。许多开发者会直接跳过这一步,认为”反正我的代码是开源的,别人随便用就行”。但事实上,不添加许可证的代码默认是保留所有权利的,这意味着从法律上讲,其他人甚至没有权利查看或使用你的代码 这篇博客将介绍GitHub中常见的许可证类型,以及如何根据项目特点选择合适的许可证。 什么是开源许可证?开源许可证是一种法律文件,明确规定了他人在使用、修改和分发你的源代码时可以做什么和不可以做什么。它既保护了原作者的权利,也为使用者提供了明确的使用指南。 GitHub提供了便捷的许可证选择功能,当你在GitHub上创建新仓库时,可以点击Add a license按钮,从多种常用开源许可证中选择适合你项目的。 主流开源许可证简介MIT License特点: 非常宽松的许可证 允许商业使用、修改、分发和私有使用 唯一要求是保留原始许可证和版权声明 适用场景: 你想让代码能被尽可能广泛地使用 不关心别人是否将你的代码用于闭源商业项目 小型个人项目或工具库 Apache License...
记录前端遇到的一些问题
前言最近博主在前端开发中遇到了一些问题,想通过写下这个博客记录一下,方便以后遇到相同问题时查阅或者有更好的解决办法时可以即使记录。 vue3引入组件标红在vue3中引入组件时,vscode爆出has no default export的错误提示。 出现该错误的原因是由于vscode安装的是Vetur插件,该插件是Vue2时代的工具,并且强制export default的写法,对Vue3的兼容适配不够彻底,对于<script setup>语法糖的支持不够好。所以导致出错。 解决办法是将Vetur插件卸载,安装Vue Official插件,该插件是Vue官方出品的,完全支持Vue3 无法加载预加载脚本在使用Electron-Vite时,遇到了Unable to load preload...
vue+vite迁移electron-vite
前言最近博主正在尝试将之前开发的vue项目迁移到electron-vite,提供desktop端。写下该博客记录一下过程。同时希望能帮助到有同样需要的人。 Electron-viteElectron-Vite 是一个基于 Vite 的构建工具,专为 Electron 应用开发设计,旨在提供高效的开发体验和优化的生产构建。它将 Vite 的快速开发能力与 Electron 的桌面应用框架结合,简化了 Electron 项目的配置和构建流程。 官方文档:https://cn.electron-vite.org/guide/introduction 安装必要依赖1npm install electron electron-vite -D 由于npm下载速度缓慢。可以考虑使用代理或设置国内镜像来加速下载 12#...
http 413错误
博主最近在开发自己项目的文件相关模块。在部署到docker,前后端交互测试时,提示文件上传异常,遇到了413错误。错误信息:Request failed with status code 413 这个错误 Request failed with status code 413 是 HTTP 协议中的一个状态码,表示 Payload Too Large(请求实体过大)。发生该错误的原因通常是Web服务器(如Nginx)或后端服务对请求大小做了限制,而这次请求的负载超过了限制。 解决方法: 对于过大的文件选用分块上传方案,以及限制用户上传文件大小、数量。 调整Web服务器或后端服务对请求大小限制。 Web服务器 Nginx:修改 client_max_body_size(默认1MB): 123http { client_max_body_size 10M; # 例如限制为10MB} 后端 Spring...