Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 GO 语言如何用好变长参数?

本次主要分享了不同语言的重载和模拟重载的效果,GO 语言中如何用好边长参数,如何实现 选项功能模式,希望对你有点帮助。

2023-10-20 23:26:09 901

原创 GO 语言的方法??

本次主要分享了 GO 语言中方法和函数的关系,GO 语言中的方法集合如何查看、甄别和使用。

2023-10-19 22:51:16 1118

原创 GO 语言的函数??

本次分享了函数相关的基本知识,以及 GO 程序的初始化顺序,对于 defer 的使用有想法的欢迎点击上述连接查看具体 defer 的分享细节。

2023-10-18 23:13:22 923

原创 这些 channel 用法你都用起来了吗?

本次演示了关于 nil channel,有缓冲 channel ,无缓冲 channel , select 如何与 channel 配合使用,上述 demo 完全可以复制下来,xdm 可以自行运行,查看效果。

2023-10-17 22:19:04 14276

原创 GO 语言处理并发的时候我们是选择sync还是channel

如何选择 sync 和 channelsync 锁的使用注意事项sync 互斥锁和读写锁的性能对比sync Once 的使用演示。

2023-10-15 09:15:38 646

原创 GO 语言的并发模式你了解多少?

工作中查看项目代码,发现会存在使用 GO 语言做并发的时候出现各种各样的异常情况,有的输出结果和自己期望和设计的不一致,有的是程序直接阻塞住,实际上,出现上述的情况,还是因为我们对于 GO 语言的并发模型和涉及的 GO 语言基础不够扎实,误解了语言的用法。那么,对于 GO 语言的并发模式,我们一起来梳理一波。在 GO 语言里面,咱们使用使用并发,自然离不开使用 GO 语言的协程 goroutine,通道 channel 和 多路复用 select,接下来就来看看各种模式都是如何去搭配使用这三个关键原语的。

2023-10-14 08:46:52 545

原创 分权分域有啥内容?

可以理解分权,是我们给系统设计和定义有哪些权限,哪些权限可以访问哪些资源分域可以理解为,有相同权限的用户,但是他们的域权限不一样的,那么他们看到的内容也是不一样的,例如,A 部门的 主管只能看到 A 部门的员工的薪资,A 部门的主管就没有办法看到 B 部门的薪资同理,B 部门的主管也是如此。

2023-10-13 22:06:41 659

原创 必知必会的22种设计模式(GO语言)

案例:咱们知道缓存的处理方式,有 FIFO,LFU,LRU, 那么当我们将数据载入缓存的时候,使用的算法进行切换了,我们仍然需要这个缓存是可以正常处理的,这个时候,咱们就可以使用策略模式又如我们需要取到一个目的地,我们可以坐飞机,可以乘高铁,也可以走路去,在过程中仍然可以随意切换交通方式,最终,我们都是抵达目的地,没有问题,同样也可以使用策略模式。

2023-10-12 22:52:05 354

原创 简单使用 Hugo 博客

之前用过 hugo,本次来分享一波,确实简单好用,可以持续使用,尤其是喜欢 GO语言的同学。

2023-10-11 21:32:03 676

原创 Go 语言切片扩容规则是扩容2倍?1.25倍?到底几倍

切片,相信大家用了 Go 语言那么久这这种数据类型并不陌生,但是平日里聊到关于切片是如何扩容的,很多人可能会张口就来,切片扩容的时候,如果老切片的容量小于 1024 那么就再扩容 1倍,也就是新的切片容量是老切片容量的两倍,同理,如果老切片容量大于 1024,那么就扩容1.25 倍一个人这么说,多个人这么说,你可能就信了😂😂,可是大家都这么认为,我们就应该盲从吗?还是要自己去确认真实的扩容逻辑和实现方式,那就开始吧😁结论先行,本文分别从如下几点来聊聊切片的扩容。

2023-10-10 22:33:36 945

原创 Go 语言中的反射

至此,关于反射就聊到这里,一些关于源码的细节并没有详细说,更多的站在一个使用者的角度去看反射需要注意的点关于反射,大多的人是建议少用,因为是会影响到性能,不过如果不太关注这一点,那么用起来还是非常方便的高级功能自然也是双刃剑,你用不好就会 panic,如果你期望去使用他,那么就去更多的深入了解和一步一步的吃透他吧大道至简,反射三定律,活学活用。

2023-10-09 22:29:03 430

原创 Go 语言中 panic 和 recover 搭配使用

至此,相信你已经知道了这些为什么 panic 和 defer ,recover 配合使用的时候要在同一个协程中了吧相信你还知道了 panic 和 recover 的处理流程当然,如果文章对你有帮助的话,欢迎留言评论哦。

2023-10-08 21:56:10 1444 2

原创 我们要不要使用 ORM?

分别从如下 4 个方面来展开。

2023-10-06 11:32:41 428

原创 GO 中优雅编码和降低圈复杂度

主要叮嘱了我们维护和开发的时候,要重视封装,重视抽象,重视降低圈复杂度只要你用心去打磨,自然会变得越来越好但是可别生搬硬套,毕竟一些定制化的需求,定制化的代码你去做接口抽象是没有啥意义的,一起加油吧,xdm至此,本次就是这样,希望能够给你带来一丁点帮助。

2023-10-05 10:49:11 492

原创 GO 中的指针?

如果你学习过 C 语言,你就非常清楚指针的高效和重要性使用 GO 语言也是一样,项目代码中,不知道你是否会看到函数参数中会传递各种 map,slice ,自定义的结构等等这些参数数据量如果比较小的话就算了,可偏偏工作中你能看到很多这种数据量大的结构,也是这样以传值的方式就这样放到函数参数上了而且这个数据量大的结构可能会来来回回传递很多次,就会导致同一份数据被活生生的拷贝了 N 次,对系统的内存资源真是妥妥的浪费啊,那么,我们开始吧以下分别从如下三个方面来聊聊。

2023-10-04 23:28:47 695 1

原创 GO 比较两个对象是否相同

本次主要聊了关于非简单数据类型的比较如何去处理DeepEqual 的使用方式以及注意事项DeepEqual 的原理和其支持的数据类型的判定规则希望能够对你有帮助,用到的时候,可以来这里查阅。

2023-10-01 07:53:40 612 1

原创 Web 中间件怎么玩?

本次主要是, 分为如下四个方面。

2023-09-30 21:17:19 1633

原创 【切片】基础不扎实引发的问题

本次文章主要是来聊聊,如果不小心,则很容易引发线上问题,如果不够理解,可能会出现奇奇怪怪的现象。

2023-09-29 22:00:49 503

原创 你真的知道 GO 中 nil 代表什么吗?

本篇文章主要是,看看有没有你还不知道的情况呢?使用 Golang 的朋友都知道,在 Golang 的世界里面,nil 标识符可以作为多种数据结构的零值,通常我们会将 nil 就认为是空的意思,就像 C 语言里面的 NULL 一样此处说到,对应着的就是一个零值例如:整形的零值,是 0字符串的零值是 “”那么布尔类型的零值自然就是 false接下来分别从零值为 nil 的几种数据类型来聊聊的 nil 的那些事。

2023-09-28 23:37:47 1067

原创 微服务线上问题排查困难?不知道问题出在哪一环?那是你还不会分布式链路追踪

分布式链路追踪,见名知意,这是用在分布式系统中,用于追踪服务调用链路的文章开头有说到,微服务架构中,存在大量的微服务,且维护的团队不尽相同,使用的语言也不太一致线上部署几百上千台服务器,若链路出现了问题,性能出现了瓶颈,我们如何排查, 如何有效的解决呢?分布式链路追踪他就可以将一次分布式请求还原成调用链路,将一次分布式请求的调用状况集中展示,且他还提供友好的 UI 界面,咱们直接在页面上就能直观的看到每一个服务的耗时请求到具体哪台服务器上以及服务相应的状态等等👀👀。在技术上通常使用Tracing。

2023-09-27 21:03:27 471

原创 k8s 服务升级为啥 pod 会部署到我们不期望的节点上??看来你还不懂污点和容忍度

至此,通过上面的知识,我们解决了这样几个场景问题利用节点的亲缘性将 pod 指定部署到某些节点上,如果这样的节点不存在,那么也可以将他们的部署到别的节点上。利用 pod 亲缘性将交互比较频繁的一些服务应用尽可能部署到同一个节点上。利用 pod 的非亲缘性将 pod 分开调度到不同的节点上,更好的保证高可用。

2023-09-26 10:32:03 382

原创 【LFU】一文让你弄清 Redis LFU 页面置换算法

至此,咱们将 Redis 淘汰策略中的 LRU 和 LFU 页面置换算法的思想,演示,以及具体实现都聊了一下,如果有偏差, 还请提出,兄弟们不吝赐教哦感兴趣的,随时可以下载源码,在你的机器上运行哦,

2023-09-25 20:20:45 423

原创 【LRU】一文让你弄清 Redis LRU 页面置换算法

这下对于 Redis 的淘汰策略,心中有个数了吧对于 LRU的具体实现方式相信你可以可以很容易的看明白的,实践起来吧,源码地址为:https://github.com/qingconglaixueit/my_lru_lfu。

2023-09-24 19:01:18 502

原创 什么是单点登录?什么又是 OAuth2.0?

至此,相信你应该知道什么是单点登录,什么是 JWT ,什么是 OAuth2.0 协议了吧单点登录是一种思想JWT 是一种 Token 的形式OAuth2.0 协议是一种授权协议单点登录可以用OAuth2.0 协议来进行实现,实现 OAuth2.0 协议过程中,使用到的 Token 就可以使用JWT的方式来生成 Token。

2023-09-23 20:52:52 526

原创 什么是分布式锁?他解决了什么样的问题?

那么具体分布式锁到底是个啥玩意儿?🧐🧐他自然他也是锁,只不过是用于控制多进程之间并发的他是可以跨微服务,跨虚拟机的一种锁机制,上述的本地锁就完全做不到那么还是上述的例 2,我们就这样使用分布式锁来进行处理可以看到,使用分布式锁,和使用本地锁,其实思想都是一样的,都是为了控制程序的并发访问资源都是属于君子锁,作为君子访问资源之前,先去看看能不能拿到锁,不能坏了规矩,要是坏了这个规矩,那么程序运行就会出问题只不过本地锁是对应控制同一个进程内的多个线程并发而分布式锁是对于多个进程并发。

2023-09-22 21:02:02 578

原创 一文介绍使用 JIT 认证后实时同步用户更加优雅

首先本次说的入,一般用在什么样的场景呢?还记的上次我们说过关于第三方组织结构同步的功能实现,主要目的是将第三方源数据同步到内部平台中来,方便做管控和处理此处的管控有一部分是为了做此处内部平台和第三方 IDaaS 进行对接,一般会使用自然,关于身份认证相关的细节内容,不在本次文章中展现,在后续的文章中再来详细阐述,本次文章中接下来分别聊聊关于如下两种用户录入到内部平台的流程。

2023-09-21 22:25:25 405

原创 【性能优化下】组织结构同步优化二,全量同步/增量同步,断点续传实现方式

这篇文章主要是阐述将临时表中的用户组数据/用户数组,按照既定的步骤同步到我们的正式表,过程中遇到异常中断,可以对我们的正式平台无影响,

2023-09-20 22:24:47 450

原创 【性能优化上】第三方组织结构同步优化一,分状态,分步骤的设计,你 get 到了吗?

之前是自身的系统去和企微,钉钉这样的第三方认证源/同步源进行对接,耗时耗力现在是将这些工作全部由一个叫做 IDaaS 的模块来完成,可以说他也是一个第三方系统,只是集成了常用的一些第三方平台的认证源和同步源,专门的人做专门的事效率是最高的通过上述 3 个接口,配合使用上述说到的同步状态和同步步骤,目前为止,就可以将第三方组织结构的所有数据快速高效的放到 服务 B 的临时表中对于这些临时数据,如果出现了异常中断,那么若再次触发同步任务,我们清空临时数据,写入本次第三方组织结构数据即可。

2023-09-19 23:21:49 334

原创 坑爹,线上同步近 3w 个用户导致链路阻塞引入发的线上问题,你经历过吗?

整个业务架构比较复杂,我们简单的提出出问题的服务链路来进行阐述服务 A - 专门和第三方对接有一个服务 A是专门找第三方同步源读取第三方系统的用户组织结构,并转换成咱们平台自己的数据结构,将数据发送给 服务 B服务 B - 专门处理用户相关数据服务 B 专门处理关于用户组织结构数据的,处理完毕之后落盘,并将数据给到服务 C服务 C - 主要做数据转发服务 C 主要是做数据的通道,会将数据转发给到节点中的应用 D,因为 应用 D 和 服务 A 和 服务 B 没有办法直接通信应用 D,处理处理实际的流量即管控。

2023-09-17 08:18:45 359

原创 你已经应用了哪种服务注册和发现的模式呢?

前面历史文章中我们有说过关于微服务的注册和发现,并以 etcd 作为简单例子简单阐述了关于服务注册和发现的应用。

2023-09-16 22:01:57 423

原创 如何从主机环境演变到云原生开发模式?

哪怕,此时有个 lisi 来环境上部署自己的的。

2023-09-15 21:17:57 561

原创 Golang 单元测试合集整理,(我最常用 gomonkey)欢迎收藏

无论写什么样的语言,,它可以极大的提高我们的代码质量,减少各种低级错误和 bug无论你是一个靠谱合格的码农,,单元测试都是咱们必须落实的一环单元测试比较容易,此处梳理了了基本的单元测试用到的方式和第三方库的使用方式,用到的时候,

2023-09-13 21:00:13 396

原创 我是如何用 redis 分布式锁来解决线上历史业务问题的

当然,实际情况对于单条单条的消息处理基本不会出现这种偏差,但是在批量处理的时候,就会出现实际业务处理顺序与期望不一致的情况,那么就是妥妥的线上问题了(小 d 上网的时候想看视频,可是一直看不了,于是就疯狂投诉。。。

2023-09-11 22:28:07 790

原创 golang validator 包的使用指北

当然,如果认为官方提供的支持的标识还不能满足我们的要求,那么我们也是可以自定义咱们的标识的,例如,咱们要定义的标识是happyhead含义就是,咱们定义的字符串,必须是以 happy 开头的,否则就校验不通过此时咱们就需要使用到 validator 包中的方法,再按照这个方法,提供一个校验实际参数的回调函数即可:我们就可以这样来写至此,咱们将 validator 包中的特殊约束,格式约束,错误处理,范围约束,字符串约束,以及自定义约束都简单过了一下,

2023-09-10 09:24:40 677

原创 golang flag 包的使用指北

实际上 golang 的 flag 包是用于处理命令行参数的工具包,我们可以基于这个包来开发自定义的命令行工具对于命令行,相信大家都不陌生吧,学过 C 的就知道,如下代码是否很熟悉。

2023-09-09 21:06:26 735

原创 为什么需要 TIME_WAIT 状态

再来看第二点其实上面我们隐约已经说到了这一点,只不过不是 ack 包,再使用一下上面的图,我们人为的弄一个异常情况如上图,当我们的 TIME_WAIT 状态不存在,或者设置的时间较小的时候,就可能会发生被动关闭的一方,收不到最后的一个 ack 包的情况一条 tcp 连接的四元组现在我们知道是啥意思了,那么,当上述 server 对应的连接还未是 CLOSED 状态的时候,server 是认为当前连接还是存在的但是client 自身已经是 CLOSED 状态了。

2023-09-08 21:24:49 963

原创 为什么服务端会有那么多的 TimeWait ?

工作中无论是开发环境还是线上环境,我们都出现过大量的 timewait 状态的连接,例如下面这个例子瞬间就可以看到咱们服务端的出现大量的状态的连接这个时候,如果客户端再不停的请求服务端的话,我们就可以看到会出现这样的一个错误这个时候是表示咱们已经没有可以使用的端口, 地址都在被使用中那我们来看一下为什么会出现上述这种情况,以及我们如何去解决他呢?

2023-09-07 22:49:55 414

原创 简单理解微服务限流、降级、熔断

通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理,限流是从整体系统上去进行考虑的最近国庆了,很多人都会去坐火车,坐高铁,咱们排队过安检的时候,我们可以看到保安会隔一会放 10 个人进去,过一会又放一些人进去,一直维持着里面只能有 10个人在进行安全检查那么这 10 个数字,就相当于是服务进行的限流,只要一达到 10 人以上的请求,那么就会服务拒绝,当有空余的时候,才会处理新来的请求,这个应该就不难理解了吧固定时间窗口控制。

2023-09-06 09:08:58 981

原创 线上 udp 客户端请求服务端客户端句柄泄漏问题

那么对于连接池,我们实际上是可以自己来进行造轮子的,仅用于学习,实际使用的话,自然还是会去使用经过大众考研过的公共开源库,我们可以来基本的分析和研究一下一个连接池需要有些什么?创建池子,关闭池子,池子的关闭状态从池子中获取连接,归还连接,销毁当前连接池子中能容纳的最大连接数,最小连接数,当前连接数根据当前实际的连接数来对池子进行扩容和缩容池子中创建连接的函数具体实现当然,我们自己来体会一下连接池以及演示上述 udp 的 demo,我们仅实现如下几个简单功能作为演示创建池子,池子的关闭状态。

2023-09-05 23:31:56 681

原创 如何将自己的镜像使用 helm 部署

Helm 是 Kubernetes 的包管理器,在云原生领域用于应用打包和分发Helm Chart 包含了 Docker 镜像以及其在 k8s 中的基础设施配置,例如 service,deployment 等等,helm 可以把 k8s 的应用进行完成封装,发布给任意一个其他的 k8s 环境使用可以查看 helm 文档地址:https://helm.sh/zh/docs/

2023-09-03 20:57:49 480

空空如也

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

TA关注的人

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