- 博客(209)
- 资源 (1)
- 收藏
- 关注
原创 DeepSeek Agent 版本对比与使用指南
DeepSeek Agent版本对比与使用指南 本文详细对比了DeepSeek Agent在新老LangChain版本中的实现差异: 导入路径变化:从langchain.schema迁移到langchain_core.messages API调用方式:推荐使用invoke()代替直接调用 参数命名更新:如openai_api_base改为base_url 工具调用方式:从手动JSON处理升级为@tool装饰器 常见问题解决方案包括升级pydantic、调整导入路径等。推荐使用虚拟环境安装最新LangChai
2025-11-17 14:53:37
424
原创 33. 搜索旋转旋转排序数组
在一个 “旋转后的的升序数组” 中查找目标值,要求时间复杂度为O(log n)。旋转数组的特点是:原数组是升序(如在某个未知点旋转后,分为两个升序子数组(如分为[4,5,6,7]和[0,1,2]左子数组的所有元素 > 右子数组的所有元素。
2025-10-22 17:49:28
239
原创 柱状图中最大的矩形
本文介绍了柱状图中寻找最大矩形的两种解法。暴力法通过双向遍历确定每个柱子的扩展边界,时间复杂度O(n²)。优化方法采用单调栈,维护递增序列,在O(n)时间内解决问题。关键步骤包括:添加哨兵节点、栈存储索引、弹出时计算面积(右边界为当前索引,左边界为栈顶)。通过实例[2,1,5,6,2,3]详细演示了栈操作过程,最终得出最大面积10。代码实现展示了哨兵技巧和宽度计算公式,相比暴力法显著提升了效率。
2025-10-22 16:18:40
458
原创 动态规划解题指南:从分析到实现
本文系统讲解了动态规划(DP)的解题思路。DP适用于具有最优子结构和重叠子问题特性的问题,通过存储子问题解避免重复计算。解题步骤包括:1)定义状态(如dp[i]表示以i结尾的解);2)推导状态转移方程;3)初始化状态;4)确定遍历顺序;5)计算结果。以最长有效括号问题为例,详细说明了如何定义dp[i]为以i结尾的最长有效子串长度,并分情况推导状态转移方程。最后给出了完整代码实现,并对比了斐波那契数列、爬楼梯等经典DP问题的状态定义和转移方程。掌握DP需要多练习分解问题的能力。
2025-10-21 16:15:20
877
原创 CFS CSI 驱动深度解析:从原理到实现
CFS CSI 驱动深度解析:本文详细剖析了Cloud File System (CFS) CSI驱动的实现原理与架构。内容涵盖CSI基础概念、项目架构和核心代码实现,包括驱动主体(Driver)、三大服务组件(Identity/Controller/Node Service)的设计与交互流程。重点解析了Node Service的卷挂载实现机制,展示了从参数验证到实际挂载的完整流程,为开发云原生存储驱动提供了完整参考。文章通过代码片段和架构图直观呈现了CSI驱动的模块化设计和关键实现细节。
2025-10-20 17:16:57
668
原创 从零到一:Kubernetes HostPath CSI 驱动程序完整实现指南
本文详细介绍了如何从零开始实现一个完整的Kubernetes HostPath CSI驱动程序。文章首先阐述了项目目标,包括支持动态卷供应、卷挂载卸载、数据持久化存储等核心功能。然后展示了CSI组件的架构设计,包括控制平面和节点平面的部署结构。接着提供了项目目录结构规范,并指导初始化Go模块。核心代码实现部分包含主程序入口和CSI驱动主体,通过Go语言实现了与Kubernetes CSI接口的对接。全文提供了一个完整的实现指南,帮助开发者掌握Kubernetes存储插件的开发流程。
2025-10-20 10:32:10
1044
原创 Kubelet原理解析:Kubernetes集群的“节点管家”
Kubelet是Kubernetes集群中每个工作节点的核心组件,负责管理Pod生命周期和节点资源。它通过API Server接收指令,与容器运行时、网络插件等交互,完成Pod创建、监控、维护等工作。Kubelet具备静态Pod管理、节点状态报告、镜像垃圾回收等重要特性,并采用心跳机制保持与控制平面的通信。当资源不足时,Kubelet会根据优先级驱逐Pod。通过健康检查机制确保容器可用性。作为连接控制平面与工作节点的桥梁,Kubelet的稳定运行对整个集群至关重要,理解其工作原理有助于故障排查和性能优化。
2025-10-17 10:20:54
707
原创 Helm 完整学习指南:从入门到实战
Helm 是 Kubernetes 的包管理器,可以理解为 Kubernetes 的 "apt-get" 或 "yum"。service:port: 80ingress:size: 20Giresources:requests:limits:mariadb:auth:primary:size: 10Gi# 创建新的 Chart# 查看生成的文件结构my-webapp/image:service:port: 80ingress:hosts:paths:- path: /
2025-10-16 19:10:42
408
原创 Kubernetes 自定义 CRD 开发完整指南:从零开发 ConfigMap 热更新 Operator
本文介绍了使用Operator SDK和Go语言开发ConfigMap热更新Operator的完整步骤。首先通过operator-sdk初始化项目并创建API/Controller,定义CRD结构包含ConfigMap和工作负载信息。核心控制器逻辑包括:监听ConfigMap变化、计算哈希值、触发关联Deployment滚动重启(通过修改annotation实现)。文章详细展示了代码实现,包括Reconcile逻辑、事件映射和状态更新。最后提供了测试方法:创建示例Deployment、ConfigMap和R
2025-10-15 16:36:24
370
原创 Kubernetes完整工作流程详解:从kubectl提交到Pod运行的奇幻之旅
Kubernetes组件协同工作全流程解析:以音乐会为比喻,系统阐述了从Deployment提交到Pod运行的全过程。1)核心组件角色:kubectl(总指挥)、APIServer(控制室)、ETCD(工作记录板)、ControllerManager(编排系统)、kube-scheduler(座位分配师)、Kubelet(舞台管理员);2)完整工作流:用户提交YAML→APIServer验证→ETCD存储→ControllerManager创建副本→调度器分配节点→Kubelet运行容器;3)关键机制:声明
2025-10-14 17:48:54
647
原创 深入解析 kube-proxy:Kubernetes 服务发现的网络基石
摘要: kube-proxy是Kubernetes集群中实现服务发现与负载均衡的核心组件,通过动态配置Linux内核的iptables/IPVS规则,将Service虚拟IP的请求透明转发到后端Pod。其工作模式经历了从低效的userspace到高性能iptables/IPVS的演进,其中IPVS模式基于哈希表实现L4负载均衡,适合大型集群。以ClusterIP为例,数据包经过PREROUTING链的DNAT转换后,由内核直接路由到目标Pod。NodePort和LoadBalancer类型分别在Cluste
2025-10-14 16:20:05
738
原创 深入浅出 Istio 服务网格:从原理到实践
本文介绍了云原生架构中Istio服务网格的核心原理与应用实践。文章首先阐述了Istio的架构设计,包括控制平面(istiod)和数据平面(Envoy)的协作机制;然后详细说明了使用Helm安装部署Istio的方法;重点解析了Gateway、VirtualService和DestinationRule等关键模块的功能与关系;最后通过Bookinfo示例应用演示了按版本路由、金丝雀发布、A/B测试等流量治理场景。全文系统性地展现了Istio如何通过非侵入式方式简化微服务治理,为构建现代化云原生应用提供强大支持。
2025-10-13 17:39:27
950
原创 基于LangChain的智能体开发实战
工具描述即API文档:精确的description可提升70%以上的路由准确率模块化设计:保持工具功能单一性测试驱动开发:需覆盖边界案例(如模糊指令、异常输入)可扩展架构:预留IoT设备对接接口通过本案例,我们实现了从基础工具封装到智能决策的完整开发链路。随着工具集的丰富,这种模式可扩展至智能家居、工业自动化等复杂场景。
2025-02-27 23:03:28
854
原创 golang http文件上传操作
beego作为服务器 通过post formData的格式上传报文格式如下:package mainimport ( "bytes" "fmt" "io" "io/ioutil" "mime/multipart" "net/http" "os")func main() { req, _ := newfileUploadRequest("http://192.168.2.144:8956/v1/body-eval/data-info", nil, "file_name"
2021-01-18 15:42:26
2821
原创 操作系统知识整理
一、全局解释器锁(GIL)1、什么是全局解释器锁 每个CPU在同一时间只能执行一个线程,那么其他的线程就必须等待该线程的全局解释器,使用权消失后才能使用全局解释器,即使多个线程直接不会相互影响在同一个进程下也只有一个线程使用cpu,这样的机制称为全局解释器锁(GIL)。GIL的设计简化了CPython的实现,使的对象模型包括关键的内建类型,如:字典等,都是隐含的,可以并发访问的,锁住全局解释器使得比较容易的实现对多线程的支持,但也损失了多处理器主机的并行计算能力。2、全局解释器锁的好处1
2021-01-05 22:22:36
368
1
转载 并发环境下,先操作数据库还是先操作缓存?
前言在分布式系统中,缓存和数据库同时存在时,如果有写操作的时候,先操作数据库还是先操作缓存呢?先思考一下,可能会存在哪些问题,再往下看。下面我分几种方案阐述。缓存维护方案一假设有一写(线程A)一读(线程B)操作,先操作缓存,在操作数据库。,如下流程图所示:1)线程A发起一个写操作,第一步del cache2)线程A第二步写入新数据到DB3)线程B发起一个读操作,cache miss,4)线程B从DB获取最新数据5)请求B同时set cache这样看,没啥问题。我们再看第二
2020-12-15 10:37:09
288
转载 Linux服务器性能查看分析调优
一 linux服务器性能查看1.1 cpu性能查看1、查看物理cpu个数:cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l2、查看每个物理cpu中的core个数:cat /proc/cpuinfo |grep "cpu cores"|wc -l3、逻辑cpu的个数:cat /proc/cpuinfo |grep "processor"|wc -l物理cpu个数*核数=逻辑cpu个数(不支持超线程技术的情况下
2020-10-28 16:05:09
792
转载 Go orm框架gorm学习
之前咱们学习过原生的Go连接MYSQL的方法,使用Go自带的"database/sql"数据库连接api,"github.com/go-sql-driver/mysql"MYSQL驱动,通过比较原生的写法去写sql和处理事务。目前开源界也有很多封装好的orm操作框架,帮我们简省一些重复的操作,提高代码可读性。gorm就是这样的一款作品,我们来学习一下gorm的操作流程。安装#go get...
2020-03-31 10:44:27
2318
转载 Linux下查看CPU信息[/proc/cpuinfo]
最近在研究linux系统负载的时候,接触到一些关于CPU信息查看的知识,和大家分享一下。通过对/proc/cpuinfo文件中的参数的分析,也学到了不少东西。在linux操作系统中,CPU的信息在启动的过程中被装载到虚拟目录/proc下的cpuinfo文件中,我们可以通过 cat /proc/cpuinfo 查看一下:上图是本人电脑的CPU信息,下面我们来分析其中几个比较重要的指...
2020-03-02 18:33:02
726
原创 问题总结
简单归纳:fd只是一个整数,在open时产生。起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针filp。文件描述符的操作(如: open)返回的是一个文件描述符,内核会在每个进程空间中维护一个文件描述符表, 所有打开的文件都将通过此表中的文件描述符来引用;而流(如: fopen)返回的是一个FILE结构指针, FILE结构是包含有文件描述符的,FILE结构函数可...
2020-03-02 18:20:57
2469
转载 虚拟地址和物理地址及其映射
前一段时间在面试总监的时候,总监问了我这样的一个问题:你个我说说物理内存和虚拟内存到底是怎么一回事?其实之前我看过这个问题,据我理解的,当时是这么回答的“进程在运行的时候,操作系统都为其分配一个4GB的地址空间,即所谓的虚拟地址空间,一般情况下,当我们的程序很大的时候,实际的物理内存根本不能满足我们的需求的时候,这个时候操作系统就会借助磁盘空间来做虚拟的内存空间,把当前进程不需要的数据放在磁盘上,...
2020-03-02 15:46:55
3321
1
转载 [Linux] 同步异步阻塞非阻塞的区别
第一次有人形容的这么形象同步和异步传统意义上的同步,指的是两种事物一样进行同样的动作或者处于同样的状态。在计算机术语中:同步指的是在一次同步方法调用开始时,调用方必须主动等待被调用对象返回才能进行下一步操作。而异步指的是再一次方法调用开始调用者不必等待调用者返回才能去处理别的事情,而是被调用者主动或者其他方通知调用者被调用对象返回了。举例子:你现在需要照顾一个小宝宝,现在小宝宝睡着了...
2020-02-28 18:35:58
297
转载 分布式事务
前言不知道你是否遇到过这样的情况,去小卖铺买东西,付了钱,但是店主因为处理了一些其他事,居然忘记你付了钱,又叫你重新付。又或者在网上购物明明已经扣款,但是却告诉我没有发生交易。这一系列情况都是因为没有事务导致的。这说明了事务在生活中的一些重要性。有了事务,你去小卖铺买东西,那就是一手交钱一手交货。有了事务,你去网上购物,扣款即产生订单交易。事务的具体定义事务提供一种机制将一个活动涉及的...
2019-02-21 10:07:36
2230
转载 Golang GC 垃圾回收机制详解
摘要在实际使用 go 语言的过程中,碰到了一些看似奇怪的内存占用现象,于是决定对go语言的垃圾回收模型进行一些研究。本文对研究的结果进行一下总结。什么是垃圾回收?曾几何时,内存管理是程序员开发应用的一大难题。传统的系统级编程语言(主要指C/C++)中,程序员必须对内存小心的进行管理操作,控制内存的申请及释放。稍有不慎,就可能产生内存泄露问题,这种问题不易发现并且难以定位,一直成为困扰开...
2019-01-29 12:11:35
1229
原创 Linux awk+uniq+sort
需要用到的命令简介cat命令 cat命令主要有三大功能 1.一次显示整个文件 cat filename 2.创建一个文件 cat > fileName 3.将几个文件合并为一个文件 cat file1 file2 > file 参数: -n 或 –number 由 1 开始对所有输出的行数编号 -b 或 –number-nonblank 和 -n...
2019-01-14 15:24:56
673
转载 Sublime text 3搭建Python开发环境及常用插件安装
一、环境准备1、官方网站地址2、Windows 103、Sublime Text 3 + 官网购买license(Just a suggestion,$80) 购买链接,Sublime Text may be downloaded and evaluated for free, however a license must be purchased for continued u...
2018-12-22 11:30:39
494
原创 reflect反射机制
1 概述 reflect 实现运行时反射,允许程序使用任意类型操作对象。典型的用法是用静态类型接口{}取值并通过调用返回类型的TypeOf 来提取其动态类型信息。反射是程序执行时检查其所拥有的结构。反射在程序中应用非常多,例如:动态生成数据:json 序列化/反序列化; orm 映射, proxy 透明代理对象 动态调用方法:plugin 实现 框架自动处理程序:...
2018-10-21 15:02:38
1046
原创 go unsafe的用处
解释不为安排指针: unsafe.Pointer其实就是类似C的void *,在golang中是用于各种指针相互转换的桥梁。uintptr是golang的内置类型,是能存储指针的整型,uintptr的底层类型是int,它和unsafe.Pointer可相互转换。 正常的情况来说go语言的中的结构私有变量不能直接被访问或者直接被修改,但是可以通过unsafe的操作来直接对么有变量进入取值...
2018-09-21 19:29:27
876
1
原创 go语言限制Goroutine数量
package mainimport ( _ "ORMTest/routers" "fmt" "runtime" "time")func main() { runtime.GOMAXPROCS(runtime.NumCPU()) c := make(chan bool, 100) t := time.Tick(time.Second) go func() { fo...
2018-09-21 17:02:32
2915
转载 [区块链技术] 吐血推荐!区块链从入门到放弃(区块链入门汇总整理)
一个完整的入门整理帖,所以到处搜罗搬运了一些觉得挺不错的来,直接贴链接应该不算侵权吧 入门介绍与原理: 一、比特币1.比特币白皮书这是一切的开始2.精通比特币讲比特币很详细的一本书,看完基本对比特币的认识就清楚了。3.TheProof-of-Work ConceptPoW机制理论介绍,英文4.比特币的原理及运作机制这篇是新手向,适合向圈外人介绍什么是比...
2018-08-31 21:28:16
537
转载 fastdfs 原理与过程
前言:(1)每次上传文件后都会返回一个地址,用户需要自己保存此地址。(2)为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。 网摘...
2018-07-23 19:06:44
431
转载 beego orm的使用
在使用beego model 去操作数据库时 有一些疑惑 找到了一个比较好的博文 原文地址 : https://my.oschina.net/u/252343/blog/829912 (KelvinQ )侵删 模型定义复杂的模型定义不是必须的,此功能用作数据库数据转换和自动建表默认的表名规则,使用驼峰转蛇形:AuthUser -> auth_userA...
2018-07-22 12:03:27
10253
转载 go-ethereum 部署私有链
go-ethereum 部署私有链说明服务器上传 geth 可执行程序第一台服务器节点创建创世区块配置文件初始化启动节点查看信息第二台服务器节点创建创世区块配置文件初始化启动节点查看信息添加静态节点文件第三台服务器节点挖矿测试go-ethereum 部署私有链说明服务器这里使用 30303 端口,所以需要确定该端口在三台服务器上都打开了,否则不能添加其他服务器节点。代号内网 IP操作目录说明eve...
2018-06-09 21:48:35
1340
转载 只用200行Go代码写一个自己的区块链!
“用不到200行 Go 代码就能实现一个自己的区块链!” 听起来有意思吗?有什么能比开发一个自己的区块链更好的学习实践方法呢?那我们就一起来实践下! 因为我们是一家从事医疗健康领域的科技公司,所以我们采用人类平静时的心跳数据(BPM心率)作为这篇文章中的示例数据。让我们先来统计一下你一分钟内的心跳数,然后记下来,这个数字可能会在接下来的内容中用到。通过本文,你将可以做到: 创建自己的区块链理解 h...
2018-02-28 21:26:53
729
转载 深入理解HDFS的架构和原理
(一) HDFS主要是用于做什么的? HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它所具有的高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集(Large ...
2018-02-26 12:14:03
738
原创 zookeeper关于go的负载均衡实例
搭建zookeeper的服务就不说,上网一大堆,直接上代码common.gopackage mainimport ( "fmt" "time" "github.com/go-zookeeper/zk")func GetConnect() (conn *zk.Conn, err error) { hosts := []string{"localhost:8090"} conn,...
2018-02-08 17:33:22
2444
转载 RabbitMQ分布式集群架构
RabbitMQ分布式集群架构和高可用性(HA)(一) 功能和原理设计集群的目的允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行通过增加更多的节点来扩展消息通信的吞吐量1 集群配置方式RabbitMQ可以通过三种方法来部署分布式集群系统,分别是:cluster,federation,shovelcluster:不支持跨网段,用于同一个网段内的
2017-11-13 16:19:57
841
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅