自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王大阳的博客

技术总结

  • 博客(306)
  • 资源 (9)
  • 收藏
  • 关注

原创 微服务相关

基于etcd做服务发现和注册开启服务注册开启服务注册只需配置Etcd即可,配置如下:Etcd: Hosts: - 127.0.0.1:2379 Key: hello.rpcHosts为etcd服务节点地址,Key为服务地址对应的key前缀,当服务启动的时候即可自动的进行服务注册...

2020-11-25 22:28:56 475

原创 【Go】Golang小技巧总结

初步整合GraphQL+ginjson与 map转换为structpackage mainimport ( "encoding/json" "fmt" "github.com/goinggo/mapstructure")func JsonToMap() { jsonStr := ` { "name":"liangyongxing", "age":12 } ` var mapResult map[string]interface{

2020-09-15 00:10:40 943

原创 K8S知识点记录

在本地调试运行在 Pod 中的数据库查看podkubectl get podkubectl port-forward 端口映射kubectl port-forward dev-db-5959f58bd7-88zlm 5432:5432 --address=0.0.0.0启动Django 本地环境DJANGO_SETTINGS_MODULE=project_name.settings_local python3 ./manage.py runserver........

2020-07-31 18:13:45 2286 1

原创 【AI】mem0:面向大模型应用的记忆工程框架

随着大模型从「单轮对话」走向「长期任务 + 多 Agent 协作」,记忆(Memory)正在成为 LLM 应用的基础设施能力之一。面向大模型应用的、可插拔的记忆工程抽象层它屏蔽底层存储差异,让开发者可以用统一的方式管理、检索、更新“记忆”,并在需要时自由切换 Redis、Elasticsearch、Milvus、Qdrant 等后端。在SCHEMAhash TAGrun_id TAGDIM 1536📌要点PREFIX决定哪些 key 会被索引TAG用于精确过滤支持时间排序VECTOR。

2025-12-28 19:22:22 1098

原创 【AI】利用语义缓存,优化AI Agent性能

query文档

2025-12-20 19:31:25 1247

原创 IM 顶层设计

WebSocket 服务 (有状态):维护和用户的连接通道,可以接收消息,也可以推送消息。IM 服务 (无状态):负责消息的发送逻辑,处理单聊/群聊的消息。Logic 服务:处理用户的心跳、上下线、联系人、加好友、创群组等逻辑。Auth 服务:处理用户认证、权限等需求。Router:推送消息时,负责确保消息被正确、可靠地推送到用户所在的 WebSocket 服务上。单聊消息多:用精准投递。群聊消息多:用集群广播推送。MallChat 倾向:MallChat 倾向于使用集群广播推送。

2025-12-05 22:18:29 863

原创 【数据库】分布式事务篇

本文介绍了分布式系统中的事务处理协议与模式,主要包括两阶段提交(2PC)和三阶段提交(3PC)协议,以及XA、TCC和SAGA三种分布式事务模式。2PC通过准备和提交两个阶段保证原子性但存在阻塞问题;3PC增加预提交阶段以提高容错性。XA规范定义了全局事务管理器和局部资源管理器的接口,而TCC通过Try-Confirm-Cancel三阶段实现补偿性事务。SAGA模式则将长事务拆分为多个短事务,失败时按相反顺序调用补偿操作。文章比较了各方案的优缺点,指出实际应用中2PC结合异步补偿机制较为常见,3PC虽减少阻

2025-11-10 16:52:21 480

原创 【MySQL】MySQL Online DDL

spring层c3p0 数据库连接池spring-dao.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.or

2025-10-29 10:45:37 793

原创 【Go】Gin 社区超时中间件的坑:fatal error: concurrent map writes

Gin 超时中间件的坑:fatal error: concurrent map writes

2025-08-12 19:56:17 698

原创 【BUG】http2: server sent GOAWAY and closed the connection; LastStreamID=1999, ErrCode=NO_ERROR, debug

场景:API聚合层 通过域名调用服务 发生报错。

2025-05-06 14:25:14 820

原创 【Go】context标准库

看一下官方定义Package context defines the Context type:Go语言中的context包定义了一个名为Context的类型。

2024-12-26 12:04:48 1137

原创 【BUG】记一次context canceled的报错

当服务端在处理业务的同时,后台有个协程监控链接的状态,如果链接有问题就会把context cancel掉。Update函数最终会调用到底层数据库驱动的QueryContext方法,这个方法接受一个context.Context对象作为参数。conn方法会处理context的取消和超时信号,如果context被取消或超时,它会中断数据库连接操作并返回错误。最终,会调用到processor.Execute(db *DB)方法,这个方法会遍历并执行一系列注册的回调函数。这个后台读取的协程里了。

2024-12-17 17:15:47 1997 1

原创 【架构设计】秒杀架构设计

总结来源:B站河北王校长。

2024-12-03 11:43:54 2136

原创 【BUG】golang gorm导入数据库报错 “unexpected type clause.Expr“

通过SQL自动生成自动代码model时,尽量用公司内部的组件或者可靠的三方工具,自己写非常容易出错。

2024-01-29 23:31:15 909

原创 【Go】Channel底层实现 ②

如果没有缓冲区,单纯的往其中放入元素立马就会进入阻塞状态,必须有其他的线程从其中取走元素。通俗的讲要有一个线程不断的取这个管道的元素,才能往其中放入元素。G2因为有runnext指针,因为亲和性的原因优先级较高,会把G2调度到原来的P local quene中(p.runext指针)而有一个缓冲区的管道想一段地道,放入的元素不会马上进入阻塞状态,只有第二个准备进入而第一个还没有进入的情况下才会阻塞。这一次会优先判断缓冲数据区域是否已满,如果未满,则将数据保存在缓冲数据区域,即环形队列里。

2024-01-27 23:54:45 1311

原创 【Go】深入理解 Go map:赋值和扩容迁移 ①

Map 的赋值难点在于数据的扩容和数据的搬迁操作。扩容不是一定会新增空间,也有可能是只是做了内存整理。tophash 的标志即可以判断是否为空,还会判断是否搬迁,以及搬迁的位置为X or Y。delete map 中的key,有可能出现很多空的kv,会导致搬迁操作。如果可以避免,尽量避免。

2024-01-27 23:49:43 3118

原创 【Go】Mutex锁相关 ③

Mutex 就实现了这个接口,Lock请求锁,Unlock释放锁Locked:表示该 mutex 是否被锁定,0 表示没有,1 表示处于锁定状态;Woken:表示是否有协程被唤醒,0 表示没有,1 表示有协程处于唤醒状态,并且在加锁过程中;Starving:Go1.9 版本之后引入,表示 mutex 是否处于饥饿状态,0 表示没有,1 表示有协程处于饥饿状态;Waiter: 等待锁的协程数量。方法解析。

2023-08-17 12:55:00 1002

原创 【Go】FreeCache BigCache源码分析【未完结】

FreeCacheBigCache

2023-04-23 15:12:33 342

原创 【数据结构】记录

对于任意一个节点 n,

2023-04-19 23:26:33 269

原创 【Vue3】学习记录

块级作用域是指变量的作用范围被限制在一个代码块内,通常用大括号表示,比如if语句、for语句、函数等。使用let声明的变量只能在声明的块内使用,不能跨越代码块。var:在JavaScript中,var是声明变量的最常用的关键字。var声明的变量的作用域是函数级的,如果在函数内部声明的变量,其作用域将限制在函数体内部。如果在函数外部声明的变量,则其作用域将是全局的。const:const也用于声明变量,但声明的变量必须被初始化,并且初始化后不能再被修改。const声明的变量也是块级作用域的,不能跨越代码块。

2023-04-12 14:17:34 714

原创 【数据库篇】MySQL知识点

如果比较2个字符串的字符集不同,MySQL会先将其转成同一个字符集再进行比较,如果2个字符集不兼容,则会出错。Mysql5.0以后的版本会做隐式转换。还可以使用前缀和collate子句来指定字符串的字符集和校对字符集。这里有一个通用原则可以供我们使用:先为服务器或者数据库选择一个合理的字符集,然后根据不同的实际情况,让某个列选择自己的字符集。原来对于数字与非数字混合的字符串,在进行大小比较的时候,如果两字符串长度相等,那么两字符串就会比较相同位置的字符,比较时若字符是数字,则直接比较,

2023-02-07 21:56:14 1994

原创 【操作系统】知识点

1

2023-01-30 16:46:18 864

原创 【微服务架构】Protocol Buffer序列化原理解析

通过将 结构化的数据 进行 串行化(序列化),从而实现 数据存储 / RPC 数据交换的功能序列化: 将 数据结构或对象 转换成 二进制串 的过程反序列化:将在序列化过程中所生成的二进制串 转换成 数据结构或者对象 的过程。

2022-11-14 16:19:01 2853

原创 【微服务】服务注册与发现

所谓服务注册中心就是一个保存可用服务实例的数据库服务注册与服务发现是在分布式服务架构中常常会涉及到的东西,业界常用的服务注册与服务发现工具有 ZooKeeper、etcd、Consul 和 Eureka。Consul 的主要功能有服务发现、健康检查、KV存储、安全服务沟通和多数据中心。Consul 与其他几个工具的区别可以在这里查看 Consul vs. Other Software。

2022-10-25 22:17:17 294

原创 【Kubernetes】K8S下gRPC负载均衡问题

答案是 HTTP/1.1 的 复用是串行的,当请求到达的时候,如果没有空闲连接那么就新创建一个连接,如果有空闲连接那么就可以复用,同一个时间点,连接里最多只能承载一个请求,结果是 HTTP/1.1 可以连接多个 pod;而 HTTP/2 的复用是并行的,当请求到达的时候,如果没有连接那么就创建连接,如果有连接,那么不管其是否空闲都可以复用,同一个时间点,连接里可以承载多个请求,结果是 HTTP/2 仅仅连接了一个 pod。为什么 HTTP/1.1 的复用没问题,而 HTTP/2 的复用就有问题?

2022-10-14 20:35:48 1828 2

原创 【数据库篇】MySQL 事务篇

之所以出现快照读的情况,是基于提高并发性能的考虑,快照读的实现是基于多版本并发控制,即MVCC,可以认为MVCC是行锁的一个变种,但它在很多情况下,避免了加锁操作,降低了开销;MVCC 的目的就是多版本并发控制,在数据库中的实现,就是为了解决读写冲突,它的实现原理主要是依赖记录中的 3个隐式字段,undo日志 ,Read View(读视图) 来实现的。不可重复读:事务A首先读取了一条数据,然后执行逻辑的时候,事务B将这条数据改变了,然后事务A再次读取的时候,发现数据不匹配了,就是所谓的不可重复读了。

2022-09-20 23:13:26 1657 1

原创 k8s CRD相关

Kubernetes 1.7之后,提供了CRD(CustomResourceDefinitions)自定义资源的二次开发能力来扩展kubernetes API,通过此扩展可以向kubernetes API中增加新的资源类型,会比修改kubernetes apiserver的源代码或创建自定义的apiserver来的更加的简洁和容易。

2022-09-10 16:40:16 2193

原创 【微服务架构】分布式限流策略

在k8s中,服务是动态扩缩容的,相应的,每个节点应该都要有所变化,如果对外宣称限频100qps,而且后续业务方真的要求百分百准确,只能把LoadingCache的过期时间调小一点,让它能够近实时的更新单节点的qps。在实际的服务中,数据上报服务一般无法确定客户端的上报时间、上报量,特别是对于这种要求高性能,服务一般都会用到HPA来实现动态扩缩容,所以,需要去间隔一段时间去获取服务的副本数。如果服务的节点动态调整,单个服务的qps也能动态调整。......

2022-08-02 15:17:38 2008

原创 【微服务架构】分布式事务

基于本地消息表的方案中,将本事务外操作,记录在消息表中其他事务,提供操作接口定时任务轮询本地消息表,将未执行的消息发送给操作接口。操作接口处理成功,返回成功标识,处理失败,返回失败标识。定时任务接到标识,更新消息的状态定时任务按照一定的周期反复执行对于屡次失败的消息,可以设置最大失败次数超过最大失败次数的消息,不进行接口调用等待人工处理。..................

2022-07-14 23:06:31 694

原创 【k8s】Kubernetes 原理剖析与实战应用(更新中)

k8s

2022-06-26 00:30:18 420

原创 【框架篇】Gin框架源码解读【更新中】

中间件的实现 依照设计模式中责任链模式

2022-06-09 15:30:28 497 1

原创 【备忘】Docker run standard_init_linux.go:211: exec user process caused “no such file or directory“

文章目录方案一:修改文件格式(check所有打进镜像启动需要的文件,重点关注docker-entrypoint.sh)方案二:更换基础镜像方案三:静态编译 – Golang Build过程中报的这个错。方案四:方案一:修改文件格式(check所有打进镜像启动需要的文件,重点关注docker-entrypoint.sh)是文件格式问题,需要修改 fileformat=unix方案二:更换基础镜像换基础镜像 为FROM centos方案三:静态编译 – Golang Build过程中报的这个错。go

2022-05-30 20:43:12 356

原创 【k8s】kubernetes网络

文章目录k8s网络模型同一节点同一个POD上Container通信同一个 Node 下 不同Pod 间通信模型:不同一节点不同node节点上pod和pod通信k8s网络接口 CNI路由网络覆盖网络pod与service之间的网络阿里云k8s在pod内访问 自建数据库k8s网络模型Kubernetes 的网络利用了 Docker 的网络原理,并在此基础上实现了跨 Node 容器间的网络通信。Kubernetes之POD、容器之间的网络通信同一节点三个网络设备:eth0: 节点主机网卡dock

2022-05-13 15:12:59 1124

原创 【Devops】ArgoCD实战

argocd官网:https://argo-cd.readthedocs.io/en/stable/#getting-started整体发布流程如图所示用户提交 应用发布文件(k8s manifest yaml / helm / kustomize 等)到 git 仓库(gitlab/github 等)argocd 监听 git 仓库的文件变化,根据配置手动或者自动把应用发布文件同步变更到 k8s 集群中创建名称空间,下载yaml文件kubectl create ns argo//在安装y

2022-04-25 10:56:26 2282

原创 《微服务治理》服务网格-Istio实战

Istio的安装与部署参考:https://github.com/AliyunContainerService/k8s-for-docker-desktopcurl -L https://istio.io/downloadIstio | sh -配置环境变量source .bash_profile安装 Istioyang@192 ~$ istioctl manifest apply --set profile=demoThis will install the Istio 1.13.2

2022-04-17 22:02:51 2151 1

原创 《后端》开放平台API安全设计

在设计开放平台接口过程中,往往会涉及接口传输安全性相关的问题,加上之前面试中也被问到项目中开放平台的安全相关问题,因此有时间整理下思路,对于接口加密及签名的相关知识做了一个系统性的总结开放平台API接口加密,签名策略参考各大平台策略支付宝支付: appid+ PrivateKey私匙转账+退款:1.RSA2(非对称)公匙加密 2.根证书 3.应用公匙证书func (s *transferAccountService) newClient() *alipay.Client { client, e

2022-04-04 00:27:48 2941

原创 【后端】消息队列--Kafka篇

parition中的消息采用多个小文件段的方式存储,很容易实现消息定期清除或删除已经消费完的文件。通过索引文件可以快速定位message在日志文件中的位置。索引文件通过Mmap技术直接映射到内存中,这样对索引的操作就不需要操作磁盘IO,也减少了数据在内存中的拷贝次数。索引文件采用稀疏存储,可以大幅降低索引文件映射到内存中时占用的内存空间大小。它把所有的消息都变成一个批量的文件,并且进行合理的批量压缩,减少网络IO损耗通过mmap提高I/O速度,写入数据的时候由于。

2022-04-02 00:22:48 5002

原创 《微服务架构》注册配置中心

文章目录注册中心consul1、Consul服务注册中心的整体架构2.1 Consul Agent2.2 Consul Server3、Consul如何通过Raft协议实现强一致性?4、Consul如何通过Agent实现分布式健康检查?5、consul acl访问控制注册中心因为服务是单独部署的,因此服务间要想相互调用只能通过RPC的方式:部署在机器A上的用户服务通过RPC的方式调用部署在机器B上的订单服务。这就引入了微服务架构中一个重要的组件:服务发现与注册中心。你要调用订单服务的接口,首先你得知道

2022-03-10 22:15:25 1222 1

原创 【微服务】微服务配置中心

为什么要配置中心?1.配置数据脱敏2.防止出错,微服务数量多起来后,配置多不好管理配置中心nacosconsul、etcd服务配置热更新想要使程序在不重启的前提下更新配置,探索了以下几种方式:信号量触发更新API 手动触发更新监听文件触发更新使用第三方包配置中心主动推送如nacos等信号量触发更新对系统进程调用监听,当接收到 syscal.SIGHUP 或者 syscal.SIGUSR1 信号时,调用 reload () 函数对 config 进行重新读取赋值。核心代码:h

2021-12-26 17:24:00 947

原创 【面试】Docker 面试篇

文章目录为什么容器技术在docker之前没有爆发的原因?docker 如何做到资源隔离?namespace有五种容器与镜像的关系docker重要组件有哪些?dockerdrunC 与 containerd剖析 Docker 网络实现及 Libnetwork 底层原理Dcoker 网络标准docker 网络模式host模式container模式bridge 桥接模式linux veth bridgenone模式docker同宿主机容器和不同宿主机容器之间怎么通信?你对k8s的理解为什么容器技术在docker

2021-11-19 15:49:52 2105

Python数据分析与应用资源

《Python数据分析与应用》,测试资料,源代码以及PPT讲义。

2019-05-05

python+pyqt图书管理系统

python+pyqt模块实现的图书管理系统,自带小型数据库,解压即可使用。

2019-05-05

ROSTCM6.zip

ROST CM是专为即将毕业的用户推出的一款专业论文查重软件,可以方便用户查看自己的论文是否被剽窃了,或者论文的重复率,拥有全网分析、浏览分析、微博分析,情感分析等特色。下载解压即可使用!

2019-08-24

opencc-1.0.zip

opencc-1.0.1繁体转中文工具包,win64位,下载解压即可使用!

2019-07-22

template-matching-ocr.rar

# 银行卡识别 - Python3 - 所用到的库: opencv imutils--图像处理工具包 numpy

2019-11-01

个人简易博客系统.rar

基于ThinkPHP,基于Flask两种方式搭建的个人博客,直接下载安装好库直接就能用

2019-06-14

worldAreaSql.zip

整理了一份世界国家、省、市、区的sql文件,也有从腾讯抓取的数据Sql, 包含表结构 直接导入数据库就可以用, 数据准确度比较高

2020-08-03

Pandas_exercises-master.rar

Pandas是入门Python做数据分析所必须要掌握的一个库,本篇精选了十套练习题以及数据文件,帮助读者上手Python代码,完成数据集探索。

2019-05-22

intern_test.rar

1道关于python面试数据分析的面试题,xml文件解析并提取数据,生成csv文件,已给出标准答案,下载即可运行。

2019-11-29

空空如也

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

TA关注的人

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