- 博客(55)
- 资源 (66)
- 收藏
- 关注
原创 go设计模式之工厂方法模式
工厂方法模式是一种创建型设计模式,它定义了一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化推迟到其子类。这个接口就是工厂接口,子类就是具体工厂类,而需要创建的对象就是产品对象。客户端代码只需要调用工厂接口的方法,而无需关心具体的产品对象是如何创建的。用于创建对象的过程中将实例化的逻辑封装在一个工厂方法中。把被创建的对象称为“产品”,把创建产品的对象称为“工厂”。在 Go 语言中,工厂方法模式经常被用于对象的创建和初始化。
2024-04-24 17:30:12 411
原创 milvus datanode启动源码分析
datanode是一个接口,实现datanode api功能。components.NewDataNode是一个函数。NewDataNode()用来创建DataNode结构体。grpcdatanode.NewServer()产生的是本结构体Server。dn.NewDataNode()返回一个结构体,是 types.DataNodeComponent接口的一个实现datanode.DataNode结构体。
2024-04-24 14:33:29 188
原创 milvus datacoord启动源码分析
dataCoord是一个接口,实现dataCoord api功能。components.NewDataCoord是一个函数。NewDataCoord()用来创建DataCoord结构体。grpcdatacoordclient.NewServer()产生的是本结构体Server。datacoord.CreateServer()返回一个结构体datacoord.Server,是接口types.DataCoordComponent的实现。
2024-04-23 17:11:54 260
原创 milvus querynode启动源码分析
querynode是一个接口,实现querynode api功能。components.NewQueryNode是一个函数。NewQueryNode()用来创建QueryNode结构体。grpcquerynode.NewServer()产生的是本结构体Server。qn.NewQueryNode()返回一个结构体,是 types.QueryNodeComponen接口的一个实现。
2024-04-17 14:27:34 373
原创 milvus querycoord启动源码分析
分析变量dataCoord、rootCoord是何时赋予的值。queryCoord是一个接口,实现queryCoord api功能。components.NewQueryCoord是一个函数。NewQueryCoord()用来创建QueryCoord结构体。grpcquerycoord.NewServer()产生的是本结构体Server。qc.NewQueryCoord()返回一个结构体,是types.QueryCoordComponent接口的实现。
2024-04-16 15:56:15 398
原创 milvus proxy启动源码分析
分析变量rootCoordClient、dataCoordClient、queryCoordClient是何时赋予的值。proxy是一个接口,实现proxyapi功能。components.NewProxy是一个函数。NewProxy()用来创建Proxy结构体。rc.NewServer()产生的是本结构体Server。proxy.NewProxy()产生结构体,是types.ProxyComponent接口的实现。代码位于。
2024-04-16 10:45:05 514
原创 rootcoord启动源码分析
分析变量rootCoord、dataCoord、queryCoord是何时赋予的值。rootCoord是一个接口,实现rootCoord api功能。components.NewRootCoord是一个函数。NewRootCoord()用来创建RootCoord结构体。rc.NewServer()产生的是本结构体Server。rootcoord.NewCore()产生结构体,是types.RootCoordComponent接口的实现。s.rootCoord的结构体叫做Core。
2024-04-12 18:14:31 515
原创 milvus各组件的结构体分析
只有Proxy和IndexNode没有ctx。为什么这2个没有ctx?由于IndexCoord和DataCoord合并了,这里结构体为空。各组件启动,需要构建各组件的结构体,一共8个。真正的组件功能API都在Server端。每个服务端都有自己的API。
2024-04-11 16:53:39 269
原创 go的option模式
把option定义为函数。函数用于创建一个新的实例。它接受一个或多个Option类型的参数,并使用这些参数来配置的实例。:当需要创建一个对象,并且这个对象有很多可配置的属性时,使用Option模式可以避免构造函数的参数列表变得冗长和难以管理。
2024-04-11 15:10:16 376
原创 milvus的compaction机制
dataCoord.compaction.global.interval = 60 #默认60秒,触发compaction信号。dataCoord.compaction.check.interval = 10 #默认10秒,更新状态。compaction用来合并对象存储的小文件,将小的segment合并为大的segment。dataCoord.compaction.max.segment = 30 #默认30。dataCoord.compaction.min.segment = 3 #默认3。
2024-04-10 16:11:49 491
原创 pymilvus创建IVF_ScaNN向量索引
索引的作用是加速大型数据集上的查询。目前,向量字段仅支持一种索引类型,即只能创建一个索引。milvus支持的向量索引类型大部分使用近似最近邻搜索算法(ANNS,approximate nearest neighbors search)。ANNS 的核心思想不再局限于返回最准确的结果,而是仅搜索目标的邻居。ANNS 通过在可接受的范围内牺牲准确性来提高检索效率。
2024-04-09 14:50:19 470
原创 pymilvus创建IVF_SQ8向量索引
索引的作用是加速大型数据集上的查询。目前,向量字段仅支持一种索引类型,即只能创建一个索引。milvus支持的向量索引类型大部分使用近似最近邻搜索算法(ANNS,approximate nearest neighbors search)。ANNS 的核心思想不再局限于返回最准确的结果,而是仅搜索目标的邻居。ANNS 通过在可接受的范围内牺牲准确性来提高检索效率。
2024-04-08 14:14:12 406
原创 pymilvus创建IVF_PQ向量索引
索引的作用是加速大型数据集上的查询。目前,向量字段仅支持一种索引类型,即只能创建一个索引。milvus支持的向量索引类型大部分使用近似最近邻搜索算法(ANNS,approximate nearest neighbors search)。ANNS 的核心思想不再局限于返回最准确的结果,而是仅搜索目标的邻居。ANNS 通过在可接受的范围内牺牲准确性来提高检索效率。
2024-04-08 14:11:09 423
原创 pymilvus创建IVF_FLAT向量索引
索引的作用是加速大型数据集上的查询。目前,向量字段仅支持一种索引类型,即只能创建一个索引。milvus支持的向量索引类型大部分使用近似最近邻搜索算法(ANNS,approximate nearest neighbors search)。ANNS 的核心思想不再局限于返回最准确的结果,而是仅搜索目标的邻居。ANNS 通过在可接受的范围内牺牲准确性来提高检索效率。
2024-04-07 15:07:32 544
原创 pymilvus创建FLAT向量索引
索引的作用是加速大型数据集上的查询。目前,向量字段仅支持一种索引类型,即只能创建一个索引。milvus支持的向量索引类型大部分使用近似最近邻搜索算法(ANNS,approximate nearest neighbors search)。ANNS 的核心思想不再局限于返回最准确的结果,而是仅搜索目标的邻居。ANNS 通过在可接受的范围内牺牲准确性来提高检索效率。
2024-04-03 15:15:08 158
原创 pymilvus创建向量索引
索引的作用是加速大型数据集上的查询。目前,向量字段仅支持一种索引类型,即只能创建一个索引。milvus支持的向量索引类型大部分使用近似最近邻搜索算法(ANNS,approximate nearest neighbors search)。ANNS 的核心思想不再局限于返回最准确的结果,而是仅搜索目标的邻居。ANNS 通过在可接受的范围内牺牲准确性来提高检索效率。
2024-04-03 11:04:19 484
原创 milvus-2.3.12安装部署
使用Docker Compose安装 Milvus standalone(即单机版),进行一个快速milvus的体验。前提条件:1.系统可以使用centos或者ubuntu2.系统已经安装docker和docker-compose3.milvus版本这里使用2.3.12。
2024-04-01 15:33:25 572
原创 milvus Upsert api数据结构源码分析
该方法将实体更新插入到 Milvus 中。如果集合中已存在指定字段,则该操作将覆盖现有实体;如果指定值尚不存在,则插入新实体。:先insert再delete,并限制不能修改主键列。:主键的autoid必须是false。:会带来一定的性能开销。
2024-02-27 16:56:35 509
原创 milvus Delete API流程源码分析
delete api根据expr走simpleDelete还是complexDelete。complexDelete最终也会转化为simpleDelete。
2024-02-22 15:40:46 927
原创 milvus insert api的数据结构源码分析
FloatVector是一个长度为30的float32数组,插入的是10个3维向量,1个向量是3个float32,在这里展开了。FieldData_Scalars存储标量数据,FieldData_Vectors存储向量数据。FieldsData是一个数组,如果insert有3列,则数组长度为3,按照插入顺序。它有2个实现:FieldData_Scalars和FieldData_Vectors。isScalarField_Data是一个接口。isVectorField_Data是一个接口。
2024-02-18 16:55:34 502
原创 anaconda3轻松解决python环境问题
Anaconda3是一个用于数据科学和机器学习的Python发行版本,包含了大量的科学包和工具。Anaconda3还提供了环境管理功能,允许用户在同一台机器上安装和使用多个版本的Python,并且可以轻松切换。特别是在linux环境,由于python官方只提供了源码安装包,通过源码编译安装可能会出现各种依赖的缺失,安装变得异常麻烦,使用anaconda3能够非常轻松地解决python环境问题。
2024-01-26 18:52:21 449
原创 python grpc客户端通道复用问题
有时候在做性能测试、压测的时候需要关闭这个特性。参考到官方文档,有一个参数可以进行控制。这段代码不会复用连接。二、gRPC工具编译。这段代码会复用连接。
2024-01-26 12:18:18 344
原创 不用找电工自己就能搞定家庭常见开关插座灯泡接线
火线:简写L,英文全称是Live,一般是红色的线。零线:简写N,英文全称是Neutral,一般是蓝色的线。地线:一般用符号代替,,一般是黄色的线。火线用测电笔带电。火线和零线形成回路,负载就会工作。一般插座用1.5平方的线,家里电器一般用2.5平方的线。
2024-01-15 10:17:06 516
原创 milvus的db和collection信息查询
从代码可以看出获取collection的一些信息主要用到了DescribeCollection()、GetCollectionStatistics(),获取精确数量用到了Query()。attu是一个非常好的管理milvus的图形化web工具。在这里显示了数据库名称、collection名称、load状态、一致性隔离级别、近似数量、描述等信息。数据库名称、db所属的collection名称、一致性隔离级别、近似数量、精确数量。然后我们通过go sdk对其中的一些信息进行展示。
2023-12-27 17:32:23 573 2
原创 milvus的delete操作
这里例子指定了2个id需要删除,如果这2个id不存在,【delete count】也会返回2。milvus支持delete操作。milvus版本:v2.3.2。
2023-12-26 11:12:34 404 1
原创 queryCoord的balancer分析
checker.Check()有4个实现,会调用AssignSegment、AssignChannel、BalanceReplica方法。代码位置:internal\querycoordv2\balance\balance.go。milvus版本:v2.3.2。这个接口有3个实现。
2023-12-11 17:31:50 384
原创 dataCoord的Compaction分析2
isCollectionAutoCompactionEnabled()判断是否设置collection级别。compaction用来合并对象存储的小文件,将小的segment合并为大的segment。t.handleSignal(signal) 用来处理collection级别的信号。go t.startGlobalCompactionLoop() 定时触发全局信号。t.handleGlobalSignal(signal) 用来处理全局信号。collection信号在flush的时候触发。
2023-12-08 16:18:07 410
原创 milvus的compaction分析(小文件合并大文件)
Params.DataCoordCfg.SegmentSmallProportion.GetAsFloat()为0.5。第1个goroutine里面,判断compaction信号(signal)是全局还是collection级别。10秒更新一次状态。compaction用来合并对象存储的小文件,将小的segment合并为大的segment。t.isSmallSegment(segment) 判断是否属于small segment。segment.GetMaxRowNum()为3441480。
2023-12-07 17:12:39 380
mongodb-win32-x86_64-2008plus-ssl-3.4.7-signed.z03
2017-08-09
mongodb-win32-x86_64-2008plus-ssl-3.4.7-signed.z02
2017-08-09
mongodb-win32-x86_64-2008plus-ssl-3.4.7-signed.z01
2017-08-09
SpringMvc+Spring+Mybatis+Maven整合示例源码
2017-07-09
mongodb-win32-x86_64-2008plus-ssl-3.4.7-signed.z07
2017-08-09
mongodb-win32-x86_64-2008plus-ssl-3.4.7-signed.z06
2017-08-09
mongodb-win32-x86_64-2008plus-ssl-3.4.7-signed.z05
2017-08-09
mongodb-win32-x86_64-2008plus-ssl-3.4.7-signed.z04
2017-08-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人