- 博客(102)
- 收藏
- 关注
原创 AI系统性学习—LangChain入门
LangChain是一个开源的Python库,它提供了构建基于大模型的AI应用所需的模块和工具。通过LangChain,开发者轻松地与大语言模型(LLM)集成,完成文本生成、问答、翻译、对话等任务。LangChain降低了AI应用开发的门槛,让任何人都可以基于LLM构建属于自己的创建应用。LLM和Prompt:LangChain对所有LLM大模型进行了API抽象,统一了大模型访问API,同时提供了Prompt提示模型管理机制。Chain:这些是对LLM或其他使用程序的调用序列。
2024-03-19 17:26:06 1648
原创 Kubernetes Pod 健康问题:CrashLoopBackoff
搭建 Prometheus 的过程中,alertmanager-main 的 Status状态为. 我的alertmanager-main svc下有三个alertmanager-main-0 alertmanager-main-1 alertmanager-main-2。
2024-06-20 15:22:21 262
原创 Golang:malformed module path “xxx“: missing dot in first path element
首先,这个问题往往是在golang中引入自己创建的包时发生的错误。解决方案如下。
2024-06-06 11:28:11 847
原创 python操作minio中常见错误
错误4:'utf-8' codec can't decode byte 0xa1 in position 10: invalid start byte
2024-05-07 10:37:22 1063
原创 Golang中四种gRPC模式
应用层传输安全(ALTS)是谷歌开发的一种相互验证和传输加密系统。它用于确保谷歌基础设施内 RPC 通信的安全。ALTS 类似于相互 TLS,但经过设计和优化,可满足 Google 生产环境的需要。使用ALTS作为传输协议创建gRPC的服务端和客户端;ALSTS是一个端到端的保护,具有隐私性和完成性;应用可以访问对等信息比如对等服务账户;支持客户端和服务端的认知;最小的代码更改就能使用ALTS;值得注意的是ALTS被全部发挥作用如果应用程序运行在CE或者GKE中。
2024-03-29 19:15:13 1353
原创 AI系统性学习05—向量数据库
Qdrant是一个开源向量数据库,专为下一代AI应用程序设计。它是面向云原生的,并提供RESTful和gRPC API以管理嵌入。Qdrant的特性强大,支持图像、语音和视频搜索,以及与AI引擎的集成。向量数据库是一种专门设计用于高效存储和查询高维向量的数据库。在传统的OLTP和OLAP数据库中(如上图所示),数据以行和列的方式组织(这些被称为表),查询是基于这些列中的值进行的。
2024-03-18 17:07:03 3105
原创 AI系统性学习04—文本嵌入模型
文本嵌入(text embedding)是自然语言中的一个中重要概念,它的目标是将文本的词表示成固定长度的稠密向量,也称为词向量(word vector)。例如:Girl和Boy,Queen和King,Sport和Game这三对词都有相近的意思,所以他们文本向量的几何距离都比较接近。操作中,文本嵌入可以通过神经网络模型进行无监督学习得到,比如word2vec中的CBOW、SKIP-GRAM模型、GloVe等。这些模型通过大规模文本的统计信息来学习每个词的向量表示。
2024-03-18 15:31:02 1952
原创 AI系统性学习06—开源中文语言大模型
ChatGLM-6B的github地址:https://github.com/THUDM/ChatGLM-6BChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。
2024-03-18 08:29:33 475
原创 AI系统性学习03—ChatGPT开发教程
实际上,官网提供了python和node.js的sdk,因此在这里不做过多的赘余,针对类似Go语言,目前也有一些封装的SDK,以下是通过Go 的做出的演示:3、OpenAI API KEY&API 认证如果你有账号可以自己去创建这里的API KEY如果没有可以通过某宝直接搜API KEY购买即可,跳过注册账号的一步,不过仍然建议自己去申请账号然后获取KEY。OpenAI API使用API密钥进行身份验证。主要是通过http请求头设置前面提到的API KEY即可API认证例子输出如下4、O
2024-03-17 11:48:46 1304
原创 OpenAI开发中常见错误:OpenAIError和BadRequestError
在通过openai创建客户端必须要设置api key,如果你事先已经在本机的环境中设置未起效可以手动设置,注意手动设置时不要用下面的形式。
2024-03-17 11:48:02 8986 4
原创 AI系统性学习01- Prompt Engineering
基础LLM和指令微调LLM。基础LLM:假设你以“从前有一只独角兽”作为提示,基础的LLM可能会继续预测“生活在一个与所有的独角兽朋友的神奇森林中”。但是如果以"法国的首都是什么?,其回答可能为"法国的人口是多少?法国最大的城市是什么?。因为其训练的语料可能是有关法国国家的问答题目列表。指令微调LLM:指的是被训练来能够遵循特定指令的LLM。而这样的模型通常是在基础LLMs上,使用输入的指令、输出是其应该返回的结果来对其进行微调,要求它遵循这些指令。
2024-03-14 22:49:45 1172
原创 构建LangChain应用出现的TypeError错误
错误原因是引入ChatOpenAI的包不对,原始的引入是。即可,修改上面2处问题后,即可正确运行代码。
2024-01-04 15:33:52 2385
原创 macos下安装科研绘图软件Origin
科研人必备软件Origin,主要是考虑到很多期刊都要求绘制origin可编辑的图,所以有些时候必须用这个软件,但是这个软件macos并不支持,所以必须考虑其他的方案,我没有安装虚拟机,而是使用crossover。
2023-12-10 22:45:47 9851 5
原创 报错解决MaxRetryError(“HTTPSConnectionPool(host=‘huggingface.co‘, port=443):xxx“)
那我的机器就是没有数据传输过来,当然前提是你自己的服务器一定要有网络连接(可以尝试ping www.baidu.com来检测自己机器是否有网络)。首先造成这种错误的原因主要是因为你的服务器没有办法连接huggingface的原因,你可以直接在你的服务器上尝试能否直接ping。就可以运行你的代码了,但是这里运行的时候有个小问题,
2023-10-03 20:08:50 26162 9
原创 Golang使用消息队列(RabbitMQ)
最近在使用Golang做了一个网盘项目(类似百度网盘),这个网盘项目有一个功能描述如下:用户会删除一个文件到垃圾回收站,回收站的文件有一个时间期限,比如24h,24h后数据库中记录和oss中文件会被删除,在之前的版本中,可以使用定时任务来检查数据库记录中删除时间来判断是否删除,但是这不是最佳的,因此考虑如何基于RabbitMQ来实现这个功能。
2023-08-20 20:15:19 1246
原创 Golang使用MinIO
最近在使用Golang做了一个网盘项目(学习),文件存储一直保存在本地(各厂商提供的oss贵),所以就在思考怎么来处理这些文件,类似的方案很对hdfs、fastdfs,但这其中MinIO是最近几年比较火热的一个项目,所以尝试使用这个试一试。
2023-08-18 17:10:25 2162
原创 解决Debian10乱码以及远程连接ssh的问题
为了使用xshell或者finallshell这样的工具,我们有必要来正确配置一哈ssh文件。在正式配置文件之前,确定自己已经下载ssh,如果没有就使用apt-get进行下载。输入上述命令后会进入到以下页面【然后输入reboot重启即可。看见上面的都done了即可。
2023-07-31 15:44:04 768
原创 误操作zsh或bash_profile导致conda不能使用
我当时因为把整个跟conda有管的全部删除了,所以直接使得conda命令也不能使用了,你可以通过以下命令查看成功输出的话,表示你的conda没问题,你可以直接跳到第5步,如果这一步显示,那说明你的conda命令被从环境中删除了,需要重新配置一哈环境,很简单。
2023-06-03 10:54:37 1268
原创 消息认证码以及数字签名的认识
从哈希函数入手,将需要发送的数据进行哈希运算,将哈希值和原始值一并发送,需要在进行哈希运算的时候引入加密的步骤。在user1对数据进行哈希运算的时候引入一个密钥,让其参与哈希运算,生成的散列值一并发送。这一行为一般是有消息的接受者来完成的,但也可以由需要验证消息的第三方来完成。生成签名就是对消息内容计算数字签名的值。相比于上面的RSA加密方式,如果你的message比较大,需要设置一个合适的bits,但是椭圆曲线不需要这样的问题。在进行这一步的前提是你已经生成了这样一对的RSA的密钥对(以文件的形式)。
2023-05-12 14:42:06 2991 1
原创 后端常用的加密算法及hash运算
对称加密加密算法分组长度密钥长度DES8字节8字节3DES8字节24字节AES16字节16字节、24字节、32字节分组模式分组模式推荐条件EBC不推荐CBC常用方式初始化向量(长度等于明文分组长度)OFB不推荐CFB不推荐CTR推荐,效率高初始化向量(长度等于明文分组长度)简单来说,就是通过哈希算法,我们可以得到一段标识的唯一信息。
2023-05-10 17:36:10 2180
原创 简单理解内存分页机制
因为系统空间是所有进程共享的,所以对应的页表也是共享的,而大多数进程并不会申请大量的用户空间内存,用不到的页表也不会被分配,所以进程的页表是。想象一下下面这样的场景,因为没有页表机制,所以类似如下图这种段式访问是直接作用于物理内存上的,那如果现在一个新的进程需要11M的空间,按照目前的内存划分情况,即使总的空闲区域的内存空间是能满足需要的,但是由于物理内存的连续性,造成了这种。,然而硬件32位的地址总线只能寻址4GB的物理内存,在多进程的操作系统上,每个进程能够映射到的物理页面远远不足2GB。
2023-04-26 20:37:51 1483
原创 Golang程序报错:fatal error: all goroutines are asleep - deadlock
先分析可能发生阻塞的地方;【尤其是管道读取的地方】从主函数入手,依次分析并理清阻塞处的逻辑执行顺序;针对一块阻塞处,判断其写操作会不会在其后面,程序永远到不了;理清调用链逻辑,确定协程开启的地方。【开启协程的地方不会阻塞,立即往下执行】如果实在还无法执行,将你的代码post到评论区,让大家一起帮你解决!
2023-04-12 20:10:44 1738 1
原创 Golang中是否可以无限开辟协程以及如何控制协程的数量?
例如使用一个有缓冲的channel。当channel满了的时候,其会发生阻塞,避免一直不断的开辟goroutine。按照上面的方式使得能够一直运行。其实实际上,执行的只有3个(还有一个main goroutine)。这些资源实际上是用户态程序共享的资源,所以大批的goroutine最终引发灾难不仅仅是自身,还会关联其他运行的程序。,直到之前三个中有一个完成了任务,阻塞接触,才开辟一个新的goroutine。首先我们在linux操作系统上运行以下这段程序,看会发生什么?我们知道goroutine具备。
2023-04-11 11:26:21 1975
原创 Golang:impossible type switch case或cannot have dynamic type
这段代码的目的是Phone和Car分别识别Usb接口,但是Phone有一个自己的私人方法Call,然后Car有一个私人方法Run。相通过类型的断言搭配switch在Factory函数中进行指定函数的调用。
2023-04-10 16:21:10 873
原创 使用Golang完成一个内存局部性测试实验
上述是验证特征的一段代码。如果step选择3,第一次遍历会被遍历的nums下标为0、3、6、9、12……,第二次遍历会遍历的nums下标为1、4、7、10、13……,第三次遍历会遍历的nums下标为2、5、8、11、14……。那么三次外循环就会将全部遍历完整个nums数组。
2023-03-30 09:41:14 988
原创 初识传输协议Protocol Buffer
由于protobuf并没有直接支持支持go语言需要我们手动安装插件。3.将生成的protoc-gen-go可执行文件,放在对应目录下。1、序列化后的体积相比于json和xml很小,适合网络传输;1.获取proto包(Go语言的proto API接口)4、序列化反序列化速度很快,快于json的处理速度;1、应用范围不够广(相比于xml和json);开发场景:常用于前后端的数据传输。3、消息格式升级和兼容性还不错;2、二进制格式导致可读性差;2、支持跨平台的多语言;劣势:编解码比较耗时;开发场景:前端/网页。
2023-03-24 14:43:32 1281
原创 基于Golang实现多人在线游戏的AOI算法
游戏的AOI(Area of Interest)算法应该算作游戏的基础核心了,许多逻辑都是因为AOI进出事件驱动的,许多网络同步数据也是因为AOI进出事件产生的。因此,良好的AOI算法和基于AOI算法的优化,是提高游戏性能的关键。为此,需要为每一个玩家设置一个AOI,当一个对象状态发生改变时,需要将信息广播给全部玩家,那些AOI覆盖到的玩家会收到这条广播消息,从而做出对应的响应状态。服务器的玩家或NPC状态发生变化时,将消息广播到附近的玩家。
2023-03-23 19:26:16 1717
原创 Golang如何比较两个slice是否相等?
(Golang中map的底层实现原理)仅对元素做浅拷贝,这就要求散列表里面的键在散列表的整个生命周期内必须保持不变。因此正常情况下,我们无法让一个slice作为一个map的键,但是如果有这样的业务需要我们怎么来实现呢?自己写一个方法,首先比较两个slice的长度,再比较两个slice对应位置元素是否相等。%q 该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示。使用反射包中提供的DeepEqual可以更加简洁的实现。和数组不同的是,slice无法做比较,因此不能使用。
2023-03-19 21:27:08 2432 1
原创 Golang中解决Tcp粘包的问题
当然这个具体设计细节需要跟随自己的业务进行改变,在这里我还设计了一个id,主要是方便我后面的一些相关业务。主要解决粘包的还是前面的datalen,读取时会首先读取len,根据这个len来读取后面具体长度的data,进而解决Tcp粘包的问题。在客户端传输的时候,如果我们想要进行消息的连发,或者说一次性发送多个消息包,就必要要解决Tcp粘包的问题。即实现了上述的功能。如果你的业务非常的复杂,那么在这里就需要按照自身的业务对消息进行封装,然后分别根据自己对消息的封装然后分别设计自身的封包和拆包的方法。
2023-03-16 17:38:35 1684
原创 一个conda引起的CPU异常
根据上面输出的进程命令,发现似乎是运行了一个关于conda的脚本,而且子用户退出后,通过root用户发现没有CPU异常,说明这与用户的登录有关,同时知道登陆的时候会加载两个环境变量,因此打开。早上向往常一样打开机器,突然感觉CPU有点"乱飙",因为是个人机器,没有别人使用,所以感觉有点问题。,因此是此前我装conda没有成功,没有卸载造成它返回执行该脚本来初始化。但是发现没有该进程,后来通过进一步的观测,发现但是这个进程一直在跳动,无法通过常用的。的方式来删除,总是显示没有这个进程。
2023-03-11 10:19:54 1881 1
原创 Golang中的GPM模型【面试必考2】
GMP的含义G表示goroutine协程P表示processor处理器M表示thread线程整体架构⭐️⭐️⭐️全局队列:存放等待运行的G;本地队列:有数量限制(不超过256G),新创建的G优先放在本地队列中,如果本地队列满了就放到全局队列当中;P列表:程序启动的时间就创建,最多有GOMAXPROCS(可配置)M列表:当前操作系统分配到当前Go程序的内核线程数P和M的数量。
2023-03-09 08:25:55 1645
原创 Golang中GC和三色屏障机制【面试必考1】
Go V1.3 使用普通标记清除法,整体过程需要STW,效率极其低Go V1.5 三色标记法,堆空间启动写屏障,栈空间不启动,全部扫描一次后,需要重新扫描一次栈(需要STW),效率极其普通Go V1.8 三色标记法+混合写屏障机制,堆空间启动,栈空间不启动,整体过程几乎不需要STW,效率较高。
2023-03-07 19:34:35 1896
原创 centos7安装RabbitMQ
首先这里的版本一定要引起注意,80%的安装失败都是因为版本的错误,这里的错误不但是指erlang和RabbitMQ的对应关系错误,更多是erlang的版本选择方面。分别上传到/usr/local/software/erlang和/usr/local/software/rabbitmq中。注意如果这里出现以下图中这种情况,你可以先尝试去安装这些依赖,如果很复杂我建议一去更换更低版本的erlang。查看Linux发行版本。RabbitMQ的安装。
2023-02-19 15:50:31 1192
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人