- 博客(111)
- 资源 (7)
- 收藏
- 关注
原创 LLM + RAG + Vanna 综合实战
这篇文章介绍如何将LLM + RAG + Vanna结合起来,在一个项目中通过和LLM对话的方式查询数据库中的记录,并显示结果。而不需要人为的手动的通过执行SQL的方式来查询数据库记录。
2025-05-30 16:31:06
548
转载 一文秒懂AI核心:Agent、RAG、Function Call与MCP全解析
如今大语言模型(LLM)的风头一时无两,它们能写诗、能聊天、能编程,简直无所不能!但你有没有发现,有时候它们也挺“傻白甜”的?比如问它今天的天气,它可能给你一个“根据我的知识库...”的过时答案;让它帮你整理本地文件,它只能表示爱莫能助。
2025-05-27 10:33:44
24
原创 RAG 和 Fine-Tuning
RAG(Retrieval-Augmented Generation)和Fine-Tuning是两种用于提高自然语言处理模型性能(准确性)的方法,单纯的LLM存在下面两个问题, 1. 一旦LLM训练好模型后其知识库就静态和固化了,时间久了就缺乏新的知识输入 2. 一个模型可能无法学到企业和组织内部的私有数据或专有领域的数据,知识面有限RAG和Fine-Tuning在一定程度上能解决上面的问题,让LLM的回答能尽可能的准确。
2025-05-23 11:05:28
542
原创 向量数据库及ChromaDB的使用
向量数据库(Vector Database),也叫矢量数据库,主要用来存储和处理向量数据。在数学中,向量是有大小和方向的量,可以使用带箭头的线段表示,箭头指向即为向量的方向,线段的长度表示向量的大小。图像、文本和音视频这种非结构化数据都可以通过某种变换或者嵌入学习转化为向量数据存储到向量数据库中,从而实现对图像、文本和音视频的相似性搜索和检索。这意味着您可以使用向量数据库根据语义或上下文含义查找最相似或相关的数据,而不是使用基于精确匹配或预定义标准查询数据库的传统方法。
2025-05-22 11:01:48
855
原创 使用O_DIRECT + 批量写数据到磁盘对丢包率的优化
当前项目是基于DPDK的全流量存储系统,需要将收集到的网络数据包保存成PCAP文件(类似tcpdump),并实时生成metadata信息(MAC,IP,Port,Offset等),并将metadata保存到数据库(ClickHouse)。通过查询数据库,能够将查询结果组装成新的PCAP文件,提供下载和分析。网络流量20Gbps,数据包平均大小~865 bytes。
2025-04-29 16:28:15
822
原创 IPv4/IPv6结构
IPv4 首部的选项字段允许 IP 首部被扩展,由此导致数据报首部长度可变,故不能预先确定数据字段从何开始,同时也使路由器处理一个 IP 数据报所需时间差异很大(有的要处理选项,有的不需要)。这个字段的作用是为了描述 IP 报头的长度,因为在 IP 报头中有变长的可选部分,长度不是固定的。IPv4 的总长度字段是 16 位的,但 IPv6 的有效载荷长度字段却是 20 位,这就意味着该字段能够指定更长的有效载荷(1 048 575 字节,相对 IPv4 中只有 65 535 字节)。这是一个可变长的字段。
2025-04-16 11:58:58
905
原创 ClickHouse总结
OLAP(联机分析处理) 是一种用于在大规模数据集上进行复杂分析的数据处理方法。与OLTP(联机事务处理)系统专注于支持日常业务交易和操作不同,OLAP系统旨在提供对多维数据的快速、灵活的查询和分析能力。: 数据库主要用于读取操作,而写入操作相对较少。: 更新操作通常以相当大的批次进行,而非单行更新,并且可能是禁止或较少进行的。: 一旦数据添加到数据库,就不能修改。: 数据表包含大量列,可能是宽表结构。: 查询数量相对较少,但每个查询可能涉及提取大量行的一小部分列,且查询可能是复杂的。
2024-09-12 11:46:33
1612
原创 DPDK概述
DPDK是一种用户空间数据平面开发工具包,它的主要目标是为开发人员提供一个。DPDK开发者能够用C语言、汇编与新型Intel架构的linux内核进行交互,使得数据平面应用程序在高度优化的环境中运行。随着芯片技术与高速网络接口技术的一日千里式发展,报文吞吐需要处 理10Gbps 端口处理能力,世面上大量的 25G、 40G 甚至100G 高速端口已经出现,主流处理器的主频仍停留在 3GHz 左右。IO 超越 CPU 的运行速率,是横在行业面前的技术挑战。
2024-09-02 14:58:28
954
原创 K8S 运维管理
Node是K8S中负责运行业务的计算节点,常见的操作有:1)将一个新的Node加入到集群,2)对某个存在的Node进行升级维护(扩大内存,增加磁盘,升级OS,重启等),3)将一个不再使用的Node从集群中删除。
2024-03-30 14:50:54
1557
原创 K8S Storage
一般情况下,K8S中的Pod都不应该将数据持久化到Pod中,因为Pod可能被随时创建和删除(扩容活缩容),即便是StatefulSet或Operator的Pod,也都不建议在Pod里面存放数据,可以将数据持久化到Host上。K8S提供了非常丰富的存储相关的功能,使得我们可以方便的让Pod访问存储设备。在K8S里面,都统一通过Volume挂载的方式让Pod来访问存储设备,Volume与Pod绑定并与Pod有相同的生命周期,Volume在Pod中定义,而Pod中的容器只需要使用volumeMounts就可...
2024-03-21 11:15:06
1410
原创 K8S CNI
本章讲解K8S CNI及其周边相关技术,包括CNI,OCI,CRI,网桥,Sandbox,IPIP,VXLan等,以及要自己实现一个CNI的步骤有哪些。
2024-03-15 11:32:55
1363
原创 K8S Pod
Pod是K8S中非常重要的概念之一,是整个K8S架构的基础和核心。Pod是K8S调度的最小单位,是一个不可拆分的独立个体,K8S将多个业务上相关联的容器(Docker容器)合并到一起,组合成一个Pod,这些业务上相关的容器共享Pod中的网络和存储等资源。每个Pod都有一个唯一的IP地址,Pod中的所有容器都共享此IP地址。每个Pod在创建的时候K8S都会为其先创建一个根容器,即pause容器,这个容器非常简单,就是一个主要包含for代码的死循环,主要起一个占位的作用。
2024-03-09 14:27:12
1326
1
原创 K8S Service
K8S 服务(Service)是K8S实现微服务架构最重要的组件之一,主要作用:1)为Pod提供稳定的访问地址(域名或IP),2)实现负载均衡,3)自动屏蔽后端Endpoints的变化。
2024-03-06 13:56:39
808
原创 K8S 概述
Kubernetes 是一个基于容器化技术的分布式应用程序编排平台,其核心概念主要包括 Node、Pod、Service、Namespace、Deployment、StatefulSet、DaemonSet、Job 和 CronJob 等。
2024-01-22 21:48:49
590
2
原创 Kafka中Zero-Copy的相关总结
Kafka用到了零拷贝(Zero-Copy)技术来提升性能。所谓的零拷贝是指数据直接从磁盘复制文件到网卡设备,而无需经过应用程序,减少了内核和用户空间之间的上下文切换。
2022-06-29 09:46:40
807
原创 Kafka设计的奥秘
Kafka是一款高效的流处理平台和消息队列系统,Kafka在设计上有很多值得学习和借鉴的地方。这篇文章对Kafka设计的亮点进行了总结,通过这篇文章,我们可以学习到Kafka的设计奥秘以及其相关的技术,对于我们理解消息队列和Kafka本身有着非常重要的帮助。
2022-06-28 09:51:33
171
原创 搭建 Kubernetes 集群环境
经过几个晚上的折腾,终于成功搭建了一套K8S集群环境,我想说的是,真的很繁琐。该集群环境由一个Master节点和两个Worker节点组成,
2021-12-11 20:32:02
517
原创 Java安全编程需要考虑的问题
这篇文章简要讨论了Java安全编程需要考虑的若干问题,通过对这些问题的深入理解,能够帮助我们在实际编码过程中避免出现安全相关的问题,从而提高代码质量。由于时间关系,没有给出每个场景的示例代码,仅说明了该场景可能出现的安全问题以及对应的解决办法。概述一般而言,安全编程的目标有以下三点:机密性 完整性 可用性机密性要求数据不被他人轻易获取,需要进行数据加密。完整性要求数据不被他人随意修改,需要进行指纹计算。可用性要求服务不被他人恶意攻击,需要进行数据校验。在Java中,安全.
2021-12-08 23:36:15
5208
原创 CMake/CTest简单示例及C++编译过程
CTest是CMake集成的一个测试工具,在使用CMakeLists.txt文件编译工程的时候,CTest会自动配置、编译、测试并给出测试结果。创建目录 hello_world,包含以下内容:sunny@sunny-virtual-machine:~/work/C++/cmake/hello_world$ tree.├── CMakeLists.txt├── header│ └── Solution.h├── src│ ├── CMakeLists.txt│ └── So...
2021-12-04 12:43:16
3000
1
原创 OpenSSL动态链接库的使用
在上一篇文章 OpenSSL动态链接库源码安装 中我们介绍了如何在Windows和Linux环境中编译OpenSSL动态链接库,这篇文章我们将介绍如何在C代码中引用OpenSSL动态链接库。测试代码以下测试代码 main.c 将分别在Windows和Linux环境中编译,该代码的作用是计算任意文件的SHA256值,#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#inclu.
2021-11-13 17:14:24
4257
原创 OpenSSL动态链接库源码安装
Openssl 是一个开放源代码的SSL协议的产品实现,它采用C语言作为开发语言,具备了跨系统的性能。调用Openssl的函数就可以实现一个SSL加密的安全数据传输通道,从而保证客户端和服务器之间数据的安全。OpenSSL整个软件包大概可以分成三个主要的功能部分:SSL协议库、应用程序以及密码算法库。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供
2021-11-13 16:22:27
2084
原创 Docker常用知识点总结(持续更新)
Docker常用知识点总结(持续更新)目录MySQL相关MySQL相关创建MySQL容器,并使用Navigator连接localhost:~ # docker run --name mysql -e MYSQL_ROOT_PASSWORD=changeme -d -p 3306:3306 mysql:latest101ef9ff09cdb9c0312d4fb980256065072d795a48f7598fbb30a3f1b871aca3localhost:~ # docker ps
2021-04-27 11:59:20
250
1
原创 数据结构 - B, B+树原理及其在MySQL中的应用
数据结构 - B, B+树原理及其在MySQL中的应用该文章介绍B,B+树的原理及其在MySQL中的应用,包含以下内容,背景 B树简介 B树的查找,增加,删除 B+树简介 B+树的查找,增加,删除 B+树在MySQL中的应用背景B树和B+树一般应用于文件系统或数据库索引,其能够在很大程度上提高文件系统或数据库的查询性能。这里有一个疑问,文件系统或数据库为什么要使用B,B+树,而不使用AVL,红黑树等呢?单从查询的逻辑上来说,AVL和红黑树的效率要高于B,B+树,因为前者都是二叉树,而
2021-03-17 17:38:48
843
原创 数据结构 - 红黑树原理及其在Java中的应用
简介红黑树又名Red Black Tree(RBT),是一种平衡二叉查找树,每个节点都有颜色,要么红色要么黑色。有以下性质:根节点是黑色 叶子节点都是不存储数据的黑色空节点 红色节点的儿子节点都是黑色 任何一个节点到其所有叶子节点路径上的黑色节点数相同注意:特性2中的叶子节点,是只为空(NIL或null)的黑色节点,不存储任何数据。 特性3和4可以保证没有一条路径会比其他路径长出一倍,因为最坏情况就是某节点的一个子树的每个黑色节点中间都有一个红色节点,而另一个子树中全都是黑色节点。下
2021-03-15 10:58:14
746
原创 机器学习-使用FP-Growth算法来高效发现频繁项集
机器学习-使用FP-Growth算法来高效发现频繁项集FP-Growth算法是这里要介绍的第三个非监督学习算法,FP(Frequent Pattern)代表频繁模式。FP-Growth算法相对于Apriori算法来说效率更高,其只需要对数据集进行两轮扫描即可发现频繁项集,而Apriori确做不到。通常情况,FP-Growth会比Apriori快两个数量级。FP-Growth只能发现频繁项集,但不能发现关联规则。FP-Growth发现频繁项集的过程包括构建FP树和从FP树中找出频繁项集两个部分。本
2021-02-24 15:37:12
1428
原创 机器学习-使用Apriori进行关联分析
Apriori算法是我们要介绍的第二个非监督学习算法,通过Apriori算法我们可以非常容易的找到数据集中的内在关系,例如:哪些数据出现的频率较高,哪些数据之间存在着相互关系等等。本节包含以下内容:背景 频繁项集 关联规则部分内容引用自《Machine Learning in Action》背景设想这样一个场景,一个超市里共有N种商品,客户可以一次购买其中的任何多种商品。目前我们有该超市一年的销售记录,希望从中找到哪些商品经常被一起购买,以及客户如果买了哪些商品后最有可能购买另外哪些商
2021-01-21 16:41:08
546
原创 机器学习-K均值聚类
前面文章介绍的都是机器学习中的监督学习算法,本章开始介绍第一个非监督学习算法-K均值聚类算法。监督学习包含分类和回归,其共同点是我们事先知道要求解的目标变量,而非监督学习中不存在类似的目标变量。非监督学习通常可以解决以下问题,数据集S可以分成哪些类(注意,此时我们并不知道S中存在哪些类别,而监督学习事先是知道的) 数据集S中哪些特征最频繁出现 数据集S中哪些特征有相互关系本章介绍K均值聚类算法,其可以高效的对数据集进行分类。包含以下内容:K均值算法 局部收敛的问题分析 二分K均值算法
2020-12-31 15:24:13
392
原创 机器学习-树回归
在前面文章机器学习-回归中,我们讨论了一般的线性回归,这里面有一些强大的方法,而且也非常实用。但这些方法有一些不足,需要拟合所有的样本点(局部加权线性回归除外),计算量较大 现实生活中很多问题是非线性的,不能使用线性模型这篇文章会介绍一种非线性回归模型-树回归,通过CART(Claqssification And Regression Tree,分类回归树)来构建模型算法。该算法可用于分类(找出类别),也可用于回归(预测)。CART有可能出现过拟合的问题,通过树剪枝技术,可以解决此问题。本章包含
2020-12-25 12:25:22
602
5
原创 概率论数字特征及Python实现
本节简单讨论概率论数字特征及Python实现,概率论数字特征包括:期望 方差(标准差/均方差) 协方差 相关系数 协方差矩阵期望期望反应的是随机变量X的平均值,是试验中每次可能结果的概率乘以其结果的总和,定义如下,离散型随机变量:连续型随机变量:有以下性质:方差方差用来衡量随机变量或一组数据的离散程度,定义如下,也就是每一个样本和期望的差的平方后取其平均值,方差越小,说明数据越集中,越大说明数据越分散。(例如:学生成绩是否偏科。)标准差也叫均方差
2020-11-30 13:46:40
641
原创 机器学习-回归
这里的回归是指线性回归,也存在非线性回归,不在这篇文章的范围内。回归与分类一样,最终目的都是预测目标值。回归用于预测连续型变量,而分类用于预测离散型变量。回归是统计学中最有力的工具之一。先解释几个容易混淆的概念:拟合:根据离散的数据点找到一个近似函数,该函数能够大致的反应出原数据点的分布规律(不一定通过原数据点),通过该函数能够预测原数据点区间外的未知数据。找到该函数的过程称为拟合。插值:根据离散的数据点找到一个最佳的函数,该函数能够反应出原数据点在此区间的分布规律(需要通过原数据点)。通过
2020-11-27 12:22:16
518
原创 机器学习-曲线拟合
这篇文章介绍在Python中如何做曲线拟合。曲线拟合的目的是根据给定的数据找到某种函数关系,再通过该函数来预测未知数据。包含以下内容,简单的多项式拟合 高阶多项式拟合复杂曲线 基于scipy拟合复杂曲线 可化为线性函数的非线性拟合简单的多项式拟合我们知道,一般的函数都可以做泰勒展开,展开后可以通过多项式函数来近似计算。同时,我们可以基于最小二乘法对给定的数据点做多项式拟合,请参考我下面的两篇文章:数学 - 泰勒公式,常见麦克劳林公式及Maple函数拟合最小二乘法多项式拟合的Java实
2020-11-26 21:32:42
15825
6
原创 机器学习-支持向量机
支持向量机的全称是Support Vector Machine (SVM),它是一种用于二分类的监督学习算法。问题提出假设我们有以下二维平面上的数据点,现在要求使用一条直线分割不同颜色的小球,我们可以这样分割,但如果再增加更多的小球,上面的分割方法可能会出现问题。如下图所示,其中一个红球被分割到了左边,那怎样的分割才是最好的分割呢?SVM的思想就是在某个最好的位置进行分割,使得在该位置上的分割线的两边有尽可能大的间隙。下图中黄色区域就是间隔区域,按此分割,在一定程
2020-11-11 15:21:25
985
原创 机器学习-逻辑回归
机器学习-逻辑回归本节简单介绍逻辑回归(Logistic Regression)的原理以及Python实现,包含以下内容,概念 Sigmoid函数 梯度上升算法 Python实现 随机梯度上升算法概念逻辑回归(Logistic Regression)是一种用于解决二分类问题的机器学习算法,用于估计某种事物的可能性。比如某病人患有某种疾病的可能性,某个员工是否离职的可能性,今天是否下雨的可能性等等。 注意,这里用的是“可能性”不是数学上的“概率”,逻辑回归的结果并非数学定义中的概率值,不
2020-09-29 09:18:43
978
原创 机器学习-朴素贝叶斯
机器学习-朴素贝叶斯本节介绍基于概率论的分类方法:朴素贝叶斯(Naive Bayes),包含以下内容,原理 条件概率 从文本中构造词向量 计算词向量的条件概率 测试分类器 实例-过滤垃圾邮件原理很多时候我们很难让分类器给出类似“某个数据属于哪个分类”的明确答案,即便分类器给出了,但结果也有可能是错误的。这时,我们可以让分类器给出一个最有可能的猜测结果,同时给出相应的概率。假设数据集有两个分类,C1和C2,给定某个元素a,如果a在C1中的概率大于a在C2中的概率,即 p(a|c1)
2020-09-17 09:26:14
463
1
原创 机器学习-决策树
机器学习-决策树本章介绍机器学习中一个非常重要的监督学习算法思想,决策树,决策树有很多种算法,例如CART,C4.5,ID3等,这里介绍ID3。包括以下内容:决策树的原理 信息,熵,信息增益的概念 如何划分数据集 如何选择最好的数据划分 构建决策树 图形化查看决策树 测试决策树 存储和加载决策树 ID3的优缺点 案例 - 使用决策树预测隐形眼镜类型决策树的原理问题:假定某个数据集S包含M个元素,每个元素都有属性E1,E2,...,En,且已知每个元素的分类为C1,C2
2020-09-11 21:59:38
924
1
原创 机器学习-kNN
机器学习-kNN本节介绍机器学习中比较简单的一种监督学习算法,kNN算法,以及其Python实现。概述监督学习明确知道想要得到什么。例如判断某辆机动车的类型(小车,卡车,公交车),预测明天是下雨,天晴还是多云,对某个曲线做拟合等等。如果目标变量是离散型,则使用分类算法,如果目标变量是连续型,则可以使用回归算法。无监督学习不需要预测目标变量的值。如果需要将数据划分为离散的组,可以使用聚类算法。如果还需要估计数据与每个分组的相似程度,则需要使用密度估计算法。kNN简介kNN(k
2020-09-08 16:11:55
540
原创 Python基础之random
Python基础之random本节将介绍Python中的内置模块random,用于随机数相关的操作。random模块支持生成随机浮点数,随机整数,从list,tuple,str 中随机选择某一个或多个元素,混淆某个list。例如:import randomimport string# float_n is a float number in [0,1)float_n = random.random()print(float_n)# int_n is a int number in
2020-09-03 18:55:21
283
Setup K8S Cluster Environment.docx
2021-12-11
k8images_1.23.0.tar.gz
2021-12-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人