自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王大阳的博客

技术总结

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

原创 微服务相关

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

2020-11-25 22:28:56 334

原创 【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 652

原创 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 1733 1

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

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

2024-01-29 23:31:15 637

原创 【Go】Channel底层实现 ②

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

2024-01-27 23:54:45 1062

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

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

2024-01-27 23:49:43 1279

原创 【Go】锁相关 ③

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

2023-08-17 12:55:00 743

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

FreeCacheBigCache

2023-04-23 15:12:33 208 1

原创 【数据结构】记录

对于任意一个节点 n,

2023-04-19 23:26:33 163

原创 【Vue3】学习记录

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

2023-04-12 14:17:34 451

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

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

2023-02-07 21:56:14 1199

原创 【操作系统】知识点

1

2023-01-30 16:46:18 452

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

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

2022-11-14 16:19:01 2187

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

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

2022-10-25 22:17:17 181

原创 【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 1499 2

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

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

2022-09-20 23:13:26 1087

原创 k8s CRD相关

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

2022-09-10 16:40:16 1887

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

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

2022-08-02 15:17:38 1354

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

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

2022-07-14 23:06:31 455

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

k8s

2022-06-26 00:30:18 301

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

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

2022-06-09 15:30:28 345 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 210

原创 【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 592

原创 【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 1695

原创 《微服务治理》服务网格-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 1728 1

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

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

2022-04-04 00:27:48 2693

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

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

2022-04-02 00:22:48 3920

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

文章目录注册中心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 946 1

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

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

2021-12-26 17:24:00 805

原创 【面试】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 1831

原创 【面试】系统架构设计(持续更新)

微博热搜数据设计设计一个限流器,满足100w QPS 的限流。令牌桶。100w的计数器,然后每次请求去获取令牌,拿到就请求,拿不到就丢弃或者等待,等待超时就丢弃。然后面试官问怎么实现?我回答了,然后不满足他的要求,让我继续优化。然后我说在代理层面做,他说不一定能抗住这么大的请求量,你的处理延时怎么处理。然后我说分发在每个服务器上面做,每个服务器限小流,然后如果负载均衡就可以实现整体限流满足要求。......

2021-10-29 18:15:05 3069

原创 【计算机基础】

什么是死锁?什么情况下会发生(避免)死锁?

2021-10-29 17:22:21 324

原创 【后端】设计模式总结

文章目录导读1. 设计模式2. 设计模式的分类3. 面向对象设计模式实现1.单例模式2.简单工厂3.抽象工厂导读1. 设计模式设计模式是对软件设计中普遍存在或反复出向的各种问题所提出的解决方案。每一个设计模式系统地被命名、解释和评价了面向对象系统中一个重要和重复出现的设计。2. 设计模式的分类创建型模式:工厂方法模式、抽象工厂模式、创建者模式、原型模式、单例模式。隐藏底层模块的逻辑,关注怎么创建对象。结构型模式:适配器模式、桥模式、组合模式、装饰模式、外观模式、享元模式、代理模式。类之间如何协同

2021-10-23 12:33:20 1025

原创 【数据库篇】NoSQL数据库

Cassandra高可用性和可扩展的分布式数据库, 它提供了跨云服务提供商、数据中心和地理位置的操作简便性和轻松的复制,并且可以在混合云环境中每秒处理PB级信息和数千个并发操作。高可用性和高可伸缩性是Cassandra最闪亮的特点。没有单点故障(2)数据模型Key Space(对应 SQL 数据库中的 database)一个Key Space中可包含若干个CF,如同SQL数据库中一个database可包含多个table。Key(对应 SQL 数据库中的主键)在Cassandra中,每一行数据记

2021-09-21 19:35:10 129

原创 【Python】Django知识点记录

最近在做django 项目,重温动态语言的魅力如何区分项目配置(生产、测试)本地调试: 终端指定 settingspython3 manage.py runserver --settings=AIService.debug_settings部署: Dockerfile中指定不同的wsgi.py文件来区分CMD ["gunicorn", "-c", "gunicorn.conf.py", "AIService.debug_wsgi"]CMD ["gunicorn", "-c", "gunico

2021-09-07 23:36:17 428

原创 【Go】标准库底层实现 ①

文章目录数据类型引用类型slicemapchannelchannel存在3种状态:context原理panic revover为什么defer才能recoverreflect什么是反射为什么要用反射,(需要反射的 2 个常见场景)defernew make数据类型引用类型slice扩容规则当需要的容量超过原切片容量的两倍时,会使用需要的容量作为新容量。(长度是奇数就+1为容量,是偶数就长度为容量)当原切片长度小于1024时,新切片的容量会直接翻倍。而当原切片的容量大于等于1024时,会反复地

2021-08-20 00:49:31 1166 1

原创 【微服务】【GO训练营总结】

gRPC 和服务发现这是为了解决去中心化的核心目标而引入的。选择 gRPC 的原因gRPC 是基于 http2 双向流且可复用连接,比 http1.1 的单向流省 tcp 连接;代码即文档,表现力比 http restful 强,能提高接口的标准化;可支持在公网,统一内网外通信healthCheck,端对端异步检测,辅助平滑发布服务发现客户端:每个客户端实现服务实例的发现和相同的负载均衡算法,并直连服务实例进行通信;服务端:中间加入网关层,网关实现服务实例的发现,客户端只连网关,好

2021-08-17 00:01:55 629

原创 【微服务】分布式一致性算法-Paxos、Raft、ZAB、Gossip

RaftConsul如何通过Raft协议实现强一致性?首先,库存服务注册到Leader Server的时候,会采取Raft协议,要求必须让Leader Server把这条注册数据复制给大部分的Follower Server才算成功。这就保证了,如果你认为自己注册成功了,那么必然是多台Consul Server都有这条注册数据了。如果你刚发送给Leader Server他自己就宕机了,那么这次注册会认为失败。此时,Consul Server集群会重新选举一个Leader Server出来,你需要再次重新注

2021-08-07 14:37:13 562

原创 【微服务】RPC和HTTP

文章目录RPCRPC工作模式gRPCgRPC的特性与优缺点1.基于HTTP/22.IDL使用ProtoBuf3.多语言支持HTTP和RPC的优缺点Go语言中的RPC支持与处理grpcprotobuffer 为什么高效Protocol buffers 反序列化RPCRPC(Remote ProcedureCall,远程过程调用) 是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络细节的应用程序通信协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OS

2021-08-06 11:13:27 4441

原创 【Go】面试题篇 三

根对象到底是什么?根对象在垃圾回收的术语中又叫做根集合,它是垃圾回收器在标记过程时最先检查的对象,包括:全局变量:程序在编译期就能确定的那些存在于程序整个生命周期的变量。执行栈:每个 goroutine 都包含自己的执行栈,这些执行栈上包含栈上的变量及指向分配的堆内存区块的指针。寄存器:寄存器的值可能表示一个指针,参与计算的这些指针可能指向某些赋值器分配的堆内存区块。有了 GC,为什么还会发生内存泄露?形式1:预期能被快速释放的内存因被根对象引用而没有得到迅速释放(局部变量被全局变量引用

2021-08-04 12:24:13 220

worldAreaSql.zip

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

2020-08-03

intern_test.rar

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

2019-11-29

template-matching-ocr.rar

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

2019-11-01

ROSTCM6.zip

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

2019-08-24

opencc-1.0.zip

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

2019-07-22

个人简易博客系统.rar

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

2019-06-14

Pandas_exercises-master.rar

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

2019-05-22

Python数据分析与应用资源

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

2019-05-05

python+pyqt图书管理系统

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

2019-05-05

空空如也

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

TA关注的人

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