自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 CRI容器运行时接口

CRI 本质上是 Kubernetes 定义的一组 gRPC API 规范Kubelet 作为 Kubernetes 在每个 Node 上的代理,充当 CRI 的客户端。它根据 API Server 的指令,调用 CRI 接口,要求容器运行时执行相应的操作(例如,为新的 Pod 创建 PodSandbox,拉取所需的镜像,然后在 PodSandbox 内创建并启动容器。

2025-09-14 16:18:40 1006 1

原创 kuberentes框架

kube-controller-manager 管理cluster的资源,kube-controller-manager由多种controller组成,包括replication controller、namespacecontroller等。kubelet 是Node的agent,当Scheduler确定在某个Node上运行Pod后,会将Pod的具体配置信息(image、volume等)发送给该节点的kubelet,kubelet根据这些信息创建和运行容器,并向Master报告运行状态。

2025-08-30 11:46:53 257

原创 MVCC和日志

MVCC是一种并发控制的方法,在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存主要是为了提高数据库并发性能,更好的处理读写冲突,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读MVCC多版本并发控制指“维持一个数据的多个版本,使得读写操作没有冲突”的概念MySQL中快照读就是实现MVCC理想模型其中一个非阻塞读功能,相对而言,当前读就是悲观锁的具体功能实现快照读本身也是抽象概念。MVCC模型在MySQL中实现由3个隐式字段:undo日志,read view等完成。

2025-08-10 23:00:38 664

原创 计算机网络

低三层为通信子网,负责数据传输,高三层为资源子网,相当于计算机系统,完成数据处理,传输层承上启下。含一系列构成互联网基础的网络协议,是Internet的核心协议,被广泛应用于局域网和广域网。防止服务器端因接收了早已失效的连接请求报文,从而一直等待客户端请求,最终导致死锁,浪费资源。TCP建立连接的三次握手,握手成功后建立一条TCP连接,即可传送应用层数据。服务器,同时多个客户端发起连接请求,从而需进行多个请求TCP连接资源分配。通信结束后,双发释放连接,需要四次挥手。无连接,不可靠,面向报文,无拥塞控制。

2025-08-03 23:22:36 1203

原创 Map和slice

数据存储在bmap的数据结构中,最多存放8个键值对oldbuckets 在下次访问时不断将值转移到 buckets 中,并不直接释放内存,而是通过不引用,交由gc释放hmap 核心结构是 buckets ,属于 bucket 数组,每个 bucket 是一个链表,一个散列表,通过拉链法消除hash冲突数组中每个元素是链表的头节点在哈希表结构中有一个加载因子,一般是散列包含的元素除以位置总数,加载因子越高,冲突概率越高,到达阈值(6.5)触发扩容机制(键值对数目除以哈希桶数目[包含溢出桶])

2025-07-28 08:38:11 576

原创 垃圾回收(GC)

内存管理策略,在业务进程运行的过程中,由垃圾收集器以类似守护协程的方式在后台运行,按照指定策略回收不再被使用的对象,释放内存空间进行回收优势:屏蔽内存回收的细节:屏蔽复杂的内存管理工作,更好聚焦于业务逻辑以全局视野执行任务:全局管理临界资源的使用劣势:提高下限但降低了上限:失去控制主权,除运用有限的GC调优参数外,更多的自由度都被阉割,需要向系统看起,服从设定增加额外成本:需要额外的状态信息用以存储全局的内存使用情况,有时需要中断整个程序用以支持垃圾回收工作。

2025-07-19 14:46:34 400

原创 Go内存分配

go内置运行时,采用了自主管理,实现更好的内存使用模式,不需要每次内存分配都进行系统调用采用TCMalloc算法:把内存分为多级管理,从而降低锁的粒度将可用的堆内存采用二级分配的方式进行管理:每个线程都会自行维护一个独立的内存池,内存分配时优先从内存池中分配,内存池不足时向全局内存池申请,避免对全局内存池的频繁竞争在程序启动时,向操作系统申请一块内存arena:堆区,go动态分配内存,把内存分割为8kb大小的页,一些页组合称为mspan。

2025-07-12 20:25:42 833

原创 LangChainGo

【代码】LangChainGo。

2025-06-22 16:20:48 207

原创 Qdrant向量数据库的增删改查

Qdrant是一个开源的向量相似度搜索引擎,它提供了一个生产就绪的服务,通过便捷的API来存储、搜索和管理带有额外有效载荷的向量。存储高维向量数据快速进行相似度搜索管理带有元数据的向量支持多种距离度量方式。

2025-06-15 16:13:20 351

原创 DDD和MVC架构

在软件所属领域之后对软件进行结构化和建模的一种方法,首先考虑编写软件的领域,软件的编写应该反映该领域领域:软件处理的主题或问题DDD主张工程团队必须与主题专家(SME)交谈,将知识反映在软件中。

2025-06-07 19:58:45 446

原创 Kafka

在分布式系统之间的数据交换队列作为数据的缓冲区,做数据的存储栈内存是独立的,堆内存是所有线程共享的进程申请的内存是不一样的进程之间进行通信都是通过网络数据流传输当发送和处理的速率不匹配,长时间就会导致数据积压,导致资源被大量消耗进程之间直接进行数据交互,会造成耦合的问题进程之间进行传输的时候,在发送数据时需要根据业务进行逻辑处理,会导致消耗更多的资源,降低响应速度添加缓冲区,在接收方可以根据自己的需求从数据缓冲区中获取数据降低耦合性,增加扩展性。

2025-06-01 14:59:24 318

原创 etcd基础

分布式系统中最关键数据的分布式,可靠的键值存储用于提供可靠的分布式键值存储,配置共享和服务发现等功能默认处理数据都是控制数据,对于应用数,只推荐数据量很小,但更新访问频繁的情况,常见etcd使用场景:服务发现,分布式锁,分布式队列,分布式通知和协调,主备选举等。

2025-05-18 17:15:03 1119

原创 RPC协议

将消息类型用在RPC系统中,要在.proto文件中定义一个RPC服务端口,protocol buffer将会根据选择不同语言生成服务接口代码和存根// rpc 服务函数名 (参数) 返回 (返回参数)

2025-05-11 09:28:17 484

原创 WebSocket 编程

在同一级目录下新建四个 go 文件、、、,以下是各文件代码及说明:(二)hub.go(三)data.go(四)connection.go运行命令:,运行之后执行文件。

2025-04-26 13:35:39 1249

原创 SQL优化

单条插入语句,每条都需要与数据库建立连接进行网络传输一次批量插入不建议数据超过1000条自动事务每条插入语句都会开启事务,提交,导致过于频繁顺序插入性能高于乱序插入当需要插入大批量数据,可以使用Load指令进行插入通过一个符合规则的文件进行插入。

2025-04-16 21:58:57 821

原创 MySQL进阶-锁

协调多个进程或线程并发访问某资源的机制。

2025-04-08 20:36:19 1025

原创 MySQL进阶

存储数据,建立索引,更新/查询数据等技术的实现方式,基于表而不是库默认存储引擎是InnoDB查看存储引擎指定存储引擎。

2025-04-05 19:04:17 969

原创 Gorm复习

参考 GORM 的默认 logger来定义您自己的 loggerLogger 需要实现以下接口,它接受context,所以你可以用它来追踪日志自定义的数据类型必须实现Scanner和Valuer接口,以便让 GORM 知道如何将该类型接收、保存到数据库// 实现 sql.Scanner 接口,Scan 将 value 扫描至 Jsonb// 用于从数据库中扫描值到json.RawMessage类型if!ok {// 用于表示原始的 JSON 数据。

2025-03-30 14:43:07 826

原创 Gorm基础知识

提示:这里使用了SQLite数据库驱动,需要通过命令安装。将以上代码保存在main.go中并执行。执行完成后,我们将在当前目录下得到test.dbSQLite 数据库文件。SQLite① 进入 SQLite 命令行。② 查看已存在的数据库表。③ 设置稍后查询表数据时的输出模式为按列左对齐。④ 查询表中存在的数据。有过使用 ORM 框架经验的同学,以上代码即使我不进行讲解也能看懂个大概。Productgorm.OpenProductProduct有些同学可能有个疑问,以上示例代码中并没有类似。

2025-03-23 08:38:39 1156

原创 基础准备点

OSI 开放式系统互联Http:无状态协议,是互联网中使用HTTP实现计算机和计算机之间的请求和响应HTTP使用纯文本方式发送和接收协议数据,不需要借助专门工具进行分析就可以知道协议中数据HTTP报文组成请求方式软件模型。

2025-03-22 19:56:15 330

原创 Go Web

模版想要调用函数,前提是模版中已经存在该函数当调用自定义函数,需要借助html/template包下的FuncMap进行映射FuncMap 本质是map的别名map[string]interface{}函数被添加映射后,只能通过函数在FuncMap中的key调用函数(而不是函数名调用)// 把自定义函数绑定到FuncMap上// 绑定FuncMap和指定模版// 先新建一个空模板,进行绑定// 再将指定模版解析到空模板中。

2025-03-12 20:13:56 720 1

原创 Go SQL

加载失败可以尝试在 Go 中,database/sql 包默认使用连接池来管理数据库连接,这意味着每次您执行数据库操作时,可能会使用不同的连接。这种行为在大多数情况下是高效的,但在某些情况下可能会导致问题,尤其是在需要将多个操作绑定到单个连接时。

2025-03-09 11:17:35 729

原创 Redis

开源的基于内存的数据存储系统:数据库,缓存和消息队列等以键值对的形式区分大小写的默认使用字符串存储数据,且二进制安全键和值默认是不支持中文,因为键值以二进制形式存储type 键 查看键的类型。

2025-02-26 16:05:19 1184

原创 MySQL

session 当前会话global 全局脏数据:在一个事务还没提交时,另一个数据已经可以读取到修改后的数据不可重复读幻读解决脏读不可重复读:同一事务,对同一个表的读取结果不同解决脏读和不可重复读幻读:一个事务前后读取的数据量不同在一个事务获取到锁后,会禁止其他事务的增删改,因为无法获取到锁net start 服务名 启动mysqlnet stop 服务名 停止mysqlmysql (-h 主机名 -p 端口号) -u 用户名 -p密码 登录。

2025-02-23 16:19:31 1059

原创 Docker

自定义网络会修复docker0的缺点,自带用容器名连接–net bridge 不写会是个默认参数subnet 配置子网gateway 配置网关部署在自定义网络下容器互联连通后将tomcat02放到mynet网络下,一个容器两个IP指令详解。

2025-02-16 08:37:50 992

原创 Linux

find+目录+ -name+“文件名” +>+文件目录+& 在后台运行后将内容输出到重定向文件内,当命令结束执行时,进程也会被结束,获取到的内容不完全。chown+ -R+用户名:用户组名+文件夹 修改文件夹的所属名和所属组的同时递归修改文件夹内所有的所属名和所属组。grep+ -n+关键字+文件目录 显示该内容在文件中的行号同时输出包含有关键字的文件内容,关键字高亮显示。cut+ -d+分隔符+ -f+数字 -+文件目录 获取到从数字开始之后的所有部分(包括当前数字)

2025-01-17 11:15:42 985

原创 go进阶知识

go.mod文件常量使用const修饰在定义的时候,必须需初始化常量不能修改只能修饰bool,数值类型(int,float系列),string类型通过首字母的大小写来控制常量的访问范围方法go的方法是作用在指定数据类型上的(和数据类型相互绑定),所以自定义类型,都可以有方法需要声明方法,比如Person结构体除字段外,还有行为用方法完成方法首字母小写只能本包访问,首字母大写可以所有包访问通过自定义类型的指针调用指定方法,修改变量内的数据在方法内进行运算其他自定义

2025-01-09 17:03:56 977

原创 go基础知识

学习目标: 一周掌握go基础知识学习内容:起名规则go语言中有25个关键字和36个预定标识符包名:保持package名字和目录一致,简短,有意义,不和标准库冲突main包是程序入口包,所以main函数所在的包应该叫main包,否则无法编译生成可执行文件包名是从$GOPATH/src/后开始计算的,使用 / 进行路径分隔变量名,函数名,常量名:驼峰命名法实现权限控制:变量名,函数名,常量名首字母大写,可以被其他的包访问。小写只能本包访问go命令go run 编译+运行

2024-12-15 18:06:47 777

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除