- 博客(648)
- 收藏
- 关注

原创 gRPC服务注册发现及负载均衡的实现方案与源码解析
今天聊一下gRPC的服务发现和负载均衡原理相关的话题,不同于Nginx、Lvs或者F5这些服务端的负载均衡策略,gRPC采用的是客户端实现的负载均衡。什么意思呢,对于使用服务端负载均衡的...
2020-10-25 09:22:25
2444
1

原创 Kubernetes Pod入门指南
Pod是Kubernetes项目里定义的最小可调度单元,是Kubernetes对应用程序的抽象。在这篇文章里我将会介绍Kubernetes里Pod的基本概念,使用方式,生命周期以及如何使...
2020-08-05 13:39:39
516

原创 五分钟用Docker快速搭建Go开发环境
挺早以前在我写过一篇用 Docker搭建LNMP开发环境的文章:用Docker搭建Laravel开发环境,里面详细介绍了将 nginx、 mysql和 php三个容器用 docker-compose编排成 LNMP开发环境的步骤,今天来说说怎么用 Docker快速搭建 Go语言项目的开发环境。因为靠Go本身自带的标准库就能实现高...
2020-01-30 11:26:00
7256
3

原创 深入学习用 Go 编写 HTTP 服务器
Go是一门通用的编程语言,想要学习 Go 语言的 Web 开发,就必须知道如何用 Go 启动一个 HTTP 服务器用于接收和响应来自客户端的 HTTP 请求。用 Go实现一个http server非常容易,Go 语言标准库net/http自带了一系列结构和方法来帮助开发者简化 HTTP 服务开发的相关流程。因此,我们不需要依赖任何...
2020-01-28 12:30:00
8497
2
转载 金融风控领域的 DDD 与中台思考
风控领域作为金融核心领域之一,对金融业务发展有着至关重要的作用。风控直译就是风险控制,其核心是对风险与成本的平衡。风控业务开展离不开风控系统的支持,本文就风控系统如何规划架构与演进,以及对领域驱动设计的思想和风控中台战略的思考。风控与 DDD领域驱动设计(DDD)作为微服务拆分的指导思想随着微服务化火起来,但其过于抽象难懂,网上方法论众多,而案例较少。本文尝试对风控领域如何按 DDD 思想设计给出...
2023-06-16 08:45:33
154
转载 用 Go 实现一个基于epoll 的 IO库
目前Go圈有很多款异步的网络框架:evio,nbio,gnet,cloudwego/netpoll......,排名不分先后。这里面最早的实现是evio。evio也存在一些问题,之前也写过evio文章介绍过。其他比如nbio和gnet也写过一些源码分析。这些框架在应用层上做了很多优化,比如:Worker Pool,Buffer,Ring Buffer,NoCopy......。都分析了好几...
2023-06-13 08:47:36
110
转载 工作20年的程序员不愿用Redis,该嘲笑他吗?
最近逛知乎,被系统推荐了一个问题,看了下题目描述。大概是一个小年轻程序员嘲笑公司工作了20多年的前辈开发系统就愿意用数据库,做接口防重之类的也不愿用Redis。本来是想吐槽前辈死板来着,想着回答问题的答主能站他,结果回答下面清一色的让他解释为什么要用Redis,引入新一层的各位问题该怎么解决。下面贴一位答主对小年轻的灵魂反问你不要告诉我们用不用redis,你得告诉我们你为什么想要用redis...
2023-06-12 08:45:17
118
转载 一分钟搞明白 Go WebAssembly
大家好,最近接触到了 WebAssembly,今天梳理了一版,和大家一起展开学习。先来一张经典图:WebAssembly 是什么以下是 Mozilla 在 MDN 上给出的定义:WebAssembly(缩写:Wasm)是一种新的编码方式,可以在现代的网络浏览器中运行 - 它是一种低级的类汇编语言,具有紧凑的二进制格式,可以接近原生的性能运行,并为诸如 C/C++ 等语言提供一个编译目标,以便它们可...
2023-06-09 08:45:16
129
转载 面试开发,被问了六个CDN的问题,一个比一个难!
对于开发同学来说,CDN这个词,既熟悉又陌生。平时搞开发的时候很少需要碰这个,但却总能听到别人提起。我们都听说过它能加速,也大概知道个原因,但是往深了问。用了CDN就一定比不用更快吗?就感觉有些懵了。但没关系,今天我们换个角度重新认识下CDN。CDN是什么对于数字和文本类型的数据,比方说名字和电话号码相关的信息。我们需要有个地方存起来。我们通常会用mysql数据库去存。文本存在mysql中当我...
2023-06-07 08:50:30
230
原创 合订本|用Go语言实现23种设计模式及学习重点
今天是咱们用Go学设计模式系列的最后一期,整个系列中我带着大家一起学习了经典的23种设计模式用Go语言如何来实现,以及它们在日常工作开发中的应用场景。我看了一下发文记录,从2022年7月18更新第一篇观察者模式,到5月22号发布了最后一种设计模式--中介者模式,一共历时10个月,发布了23篇文章。从最一开始的不准备整理成系列写到哪算哪,到中期形成自己的写作风格,有目标的去学习整理再发布,对自己来说...
2023-06-05 08:45:45
173
转载 从Go源码到可执行文件的编译过程详解
Go 是一门编译型语言,我们平时所编写的 *.go 文本文件称为源文件,源文件里面的内容就是我们的源代码。源代码要想在目标机器上运行,就必须使用 Go compiler )将其先编译成操作系统能够直接识别的二进制机器码文件,或说可执行文件。后续由操作系统加载该文件,并在 CPU 中直接运行机器码。这也是编译型语言运行效率高的主要原因。Go compiler 是用什么实现的编译器本身也是一个程序,它...
2023-06-02 08:46:01
491
转载 颠覆微服务架构?谷歌最新开源service weaver初体验
合久必分,分久必合,技术圈也是如此。在大家纷纷从单体应用过渡到微服务的时候,谷歌携带着新时代的“单体”应用框架Service Weaver来了!代码仓库位于:https://github.com/ServiceWeaver/weaver 才发布没几天已经超过了2.5k star,不得不感慨谷歌的号召力。谷歌称此框架为模块化单体(modular monolith),谷歌为什么会在这个时候提出如此标新...
2023-05-31 09:57:05
86
转载 快速上手 CGO,掌握在 Go 里写 C!
大家好,最近因为各种奇怪的原因,接触到了 Go 特色之一 CGO。这方面的相关内容也相对少一些,给大家抛砖引玉,有经验的大佬欢迎补充。图片来源于 marlin毕竟很多跨语言调用,还是会依赖 CGO 这个特性。希望大家在真正要用时有个前置知识垫肚子。CGO 是什么CGO 就是 C 和 Go,两个编程语言。指的是能够创建调用 C 代码的 Go 包。对照着 Go 代码中的 “C”:packagemai...
2023-05-29 08:45:26
399
转载 推荐一个HTTP TCP 视频教程,面试前……
学习计算机网络,有时候确实会比较枯燥,如果一篇技术文章能做到既有深度,又有趣,那对于读者来说,将会大大降低学习门槛。如果是视频动画,效果是不是更好?你可能会问哪有这么好的事儿?还真有,咱们可以点击【阅读原文】体验一下最近做的动画视频,带你学明白计算机网络。这里必须退向大家推荐下视频动画的作者,同时也是一个硬核技术公众号:小白debug,的号主小白。作为多年资深工程师打工人。擅长golang/网...
2023-05-26 08:50:53
44
转载 业务中台已拆,有事烧纸
本文转载自曹春晖的个人公众号:techpaper眼看他起高楼,眼看他宴宾客,眼看他楼塌了。AI 浪潮之下,人的思考渐渐连机器都比不上,这些一直存在脑子里的知识应该都放出来也没什么关系了。我在 2019 年在某司从业期间,曾经写过一篇《中台的末路》,从一线工程师和架构师的视角来思考当前大公司内部的中台架构到底会碰到什么样的问题。在我离职之前,有一些问题已经有了明确的答案。有一些还没有,后续加入猫厂下...
2023-05-24 11:50:05
59
转载 这个线上BUG,让你彻底搞懂了MySQL的字符集,别问我咋知道的
那天,我还在外面吃成都六姐的冒菜。牛肉丸裹上麻酱后,狠狠嘬一口,都要入嘴了。产品经理突然发来消息。"线上有些用户不能注册了"心想着"关我x事,又不是我做的模块",放下手机。不对,那老哥上礼拜刚离职了,想到这里,夹住毛肚的手微微颤抖。对面继续发:"还有些用户不能改名""如果用上表情符号的话,问题必现"可以了,这下问题几乎直接定位了。危,速归。有经验的兄弟们很容易看出,这肯定是因为字符集的缘故。复现问...
2023-05-23 08:45:08
49
原创 Go设计模式--中介者,最后的模式!
大家好,这里是每周都在陪你一起进步的网管~!今天继续学习设计模式,也是我们要学习的最后一个设计模式—中介者模式,对这个模式有一点了解后会觉得它跟我们已经学过的观察者模式挺像,但是两者还是有些区别的,使用场景也不一样,具体我们放在最后再讲,先来一起学习中介者模式。中介者模式是一种行为设计模式, 能让程序减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互, 迫使它们通过一个中介者对象进行...
2023-05-22 08:45:46
268
转载 考虑了很久,还是决定转Go了
在最近的一份程序员薪资报告中,Go的平均薪资位居榜首,平均薪资¥25739。Java、C++、C分别位列13、12、11名,平均薪资在¥18000-19000之间,其实这不足为奇,“物以稀为贵”。Java作为国内目前应用最庞大的语言,用的人多、找工作的人多,可替代性就高。而随着国内Go环境的逐步成熟,企业对Go开发的需求逐渐增大,主动学习Go的人自然是越来越多了。都说 Go 入门容易,但实际上很多...
2023-05-19 09:05:40
70
转载 写给go开发者的gRPC教程-通信安全
使用 TLS 安全传输数据什么是 SSL/TLSSSL 包含记录层(Record Layer)和传输层[1],记录层协议确定传输层数据的封装格式。传输层安全协议使用X.509[2]认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密匙作为会话密匙(Session key[3])。这个会谈密匙是用来将通信两方交换的资料做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通...
2023-05-17 11:36:59
160
原创 Go设计模式--解释器模式
大家好,这里是每周都在陪你一起进步的网管~!今天继续学习设计模式—解释器模式解释器模式是一种行为设计模式,可以用来在程序里创建针对一个特点领域语言的解释器,用于处理解释领域语言中的语句。换句话说,该模式定义了领域语言的抽象语法树以及用示来解释语法树的解释器。模式使用场景解释器模式,用于解决需要解释语言中的句子或表达式的问题。以下是一些可以在 程序中使用解释器模式的真实场景:处理配置文件许多应用程序...
2023-05-15 08:45:50
285
转载 让Go代码变整洁的五个步骤
今天带大家来一段代码的变换之旅,代码篇幅较多,主要参考自one-way-to-do-it-six-variations,在这里加了一些自己的理解。文章:https://phlatphrog.medium.com/one-way-to-do-it-six-variations-cd58602ac06d代码仓库:https://github.com/pdk/oneway我们先来模拟一段开车去商场购...
2023-05-12 08:50:15
57
转载 图解TCP 三次握手和四次挥手的高频面试题(2023最新版)
大家好,最近重新整理了一版 TCP 三次握手和四次挥手的面试题(2023最新版)。-----任 TCP 虐我千百遍,我仍待 TCP 如初恋。巨巨巨巨长的提纲,发车!发车!imgTCP 基本认识 TCP 头格式有哪些?我们先来看看 TCP 头的格式,标注颜色的表示与本文关联比较大的字段,其他字段不做详细阐述。TCP 头格式序列号:在建立连接时由计算机生成的随机数作为其初始值,通过 SYN 包传给接收...
2023-05-08 08:45:45
97
转载 Go 团队准备在 go mod 和工具链中增强向后兼容性
Go1 兼容性保障在 Go1 引入了 Go 兼容性保障《Go 1 and the Future of Go Programs[1]》,也就是旧版本的 Go 程序也可以在继续 Go 的新版本中正确运行。当然,凡事有例外,像是安全问题就是例外。具体的完整细则如下图:我们常接触到的有以下几个:安全问题:Go 规范或实施中的安全问题可能会被发现,其解决需要破坏兼容性。将会保留解决这些安全问题的权利。未指...
2023-05-06 08:45:18
137
原创 Go设计模式--命令模式
大家好,这里是每周都陪你进步的网管,假期归来咱们继续更新设计模式系列,这次要和大家一起学习的是命令模式,如果你对领域驱动设计感兴趣,这个模式一定要好好学,命令模式是DDD风格的框架中高频使用的一个模式。命令模式是一种行为型模式。它通过将请求封装为一个独立的对象即命令对象,来解耦命令的调用者和接收者,使得调用者和接收者不直接交互。在命令对象里会包含请求相关的全部信息,每一个命令都是一个操作的请求: ...
2023-05-04 08:45:34
84
转载 这些最常用的 Go 工具集命令,新手 Gopher 一定要掌握
本文将介绍一些最基本的 Go 命令行命令。如果你刚接触 Go 语言,那你有必要记住它们,因为这些命令是 Go 开发者日常工作中所必备的。Go version开始 Go 项目前,我们应该确保开发机上已经安装好了 Go 编译器。这可以通过 https://go.dev/doc/install 进行下载安装,如果有多版本安装需求可以参考文章简洁的 Go 多版本管理机制。通过执行以下命令可以查看安装的 G...
2023-04-27 17:03:47
98
转载 盘点一下DNS中那些值得借鉴的技术设计
为什么要有DNS如果我们想要访问某度,你可以在浏览器上的搜索栏里输入112.80.248.76这个IP地址,直达页面。通过IP访问网页这样的行为,合法,但有病。大部分人,连自己对象的电话号码都记不住,又怎么可能记得住这么一串IP地址呢。哦,不好意思,伤害到兄弟们了,你们没对象。但我假设你们有。回想一下,虽然你记不住对象的电话号码,但却不影响你给她打电话。你的操作过程是不是打开通讯录,输入"富婆",...
2023-04-26 11:23:18
77
转载 每个人都能看懂的Go并发编码实战经验分享
我们知道,Go 语言部署简单,自带完善的工具链,不仅容易上手,而且执行性能非常好,已经被越来越多的人当成主要的编程语言。而我当初也算被 Go 的简单高效所打动。它不仅部署方便,自带完善的工具链,特别是 Go 在处理并发场景上表现出的独特性能,更是让我着迷。相对于 Java 语言的繁琐编码,和为了应用设计模式而做的大量冗长设计, Go 提供了便利的并发编程方式 -- 简简单单的语句,就可以创建多个 ...
2023-04-24 09:14:36
70
转载 一个例子让你彻底掌握 Go 工作区模式
阅读本文大概需要 5 分钟。Go1.18 正式发布后,工作区模式有点变化,因为工作区模式真的很有用,今天写一篇文章梳理一下。工作区模式(Workspace mode),可不是之前 GOPATH 时代的 Workspace,而是希望在本地开发时支持多 Module。01 缘起为了大家全面理解工作区模式,通过一个具体例子讲解。本地有两个项目,分别是两个 module:mypkg 和 example。(...
2023-04-23 17:02:10
76
转载 写好Prompt,不给ChatGPT老说片汤话的机会
大家好,有没有感觉ChatGPT回答你的问题老说片汤话,这其实有可能咱们的提示语写的不够sensible。今天主要是针对 ChatGPT 和如何让他回答的更有效展开内容。什么是 ChatGPT以下来自维基百科ChatGPT,全称聊天生成预训练转换器(英语:Chat Generative Pre-trained Transformer),是 OpenAI 开发的人工智能聊天机器人程序,可以基于上下文...
2023-04-21 11:26:03
173
转载 滴滴、开水团 Go 架构师岗2023 面试真题合集
最近“2022五大高薪编程语言”排行榜新鲜出炉,由Techgig发布,该排名从职业建议的角度,列出了今年收入最高的编程语言,Go位列第3,平均薪资30-213万,仅次于Kotlin和SQL。随着国内Go环境的逐步成熟,企业应用范围越来越广,主动学习Go的人也越来越多,希望通过Go弯道超车。对于有语言基础的人来说,Go入门比较容易,大部分程序员基本上用一周的时间也就大致熟悉了。但只做到熟悉就想赢得面...
2023-04-19 09:05:04
145
转载 MySQL的varchar字段最大长度真的是65535吗?
在mysql建表sql里,我们经常会有定义字符串类型的需求。CREATETABLE`user`(`name`varchar(100)NOTNULLDEFAULT''COMMENT'名字')ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;比方说user表里的名字,就是个字符串。mysql里有两个类型比较适合这个场景。char和varchar...
2023-04-18 08:45:34
114
原创 Go设计模式--备忘录模式,带暂存的业务功能可以参考它来实现
大家好,这里是每周都在陪你一起进步的网管~!今天继续学习设计模式—备忘录模式备忘录模式(Memento Pattern)又叫作快照模式(Snapshot Pattern), 或令牌模式(Token Pattern), 指在不破坏封装的前提下, 捕获一个对象的内部状态, 并在对象之外保存这个状态。 这样以后就可将该对象恢复到原先保存的状态, 属于行为型设计模式。备忘录模式主要适用于以下应用场景。需要...
2023-04-17 08:45:07
41
转载 别把DNS 当做服务发现,有这些坑
背景分享遇到过这么一个问题,有童鞋的 Go 程序用 DNS 解析做服务发现(内网用的 CoreDNS 做的域名解析服务器)。比如,内网有个服务域名,对应 7 个后端节点。为了做服务发现,故障的剔除等服务,在 Client 端对一个给定的域名调用 Go 标准库的 Resolver.LookupHost 方法来解析 ip 列表。如果解析得到的 ip 列表有变化,那么在 Client 内对相应的对后...
2023-04-14 08:45:50
68
转载 云计算的核心概念:深入了解云计算的基础知识和架构
现在IT圈都被GPT刷屏了!在过去的半个多月的时间里,我们看到了GPT-4在文字之外的图像和编程等领域的能力,也见证了微软发布的Copilot为生产力带来的巨大革新小编运维行业举例:Chat-GPT如何应用运维和通信领域↓↓↓由于资料较多,今天就不在这里具体展示了,大家可以本文下方去领取~在这些大模型应用的背后,都需要强大的算力和海量的训练数据未来大量应用进入,云计算行业获得大模板收入可...
2023-04-13 12:30:41
101
转载 推荐一个计算机网络动画教程,面试前先别告诉你同桌
学习计算机网络,有时候确实会比较枯燥,如果一篇技术文章能做到既有深度,又有趣,那对于读者来说,将会大大降低学习门槛。如果是视频动画,效果是不是更好?你可能会问哪有这么好的事儿?还真有,咱们可以点击【阅读原文】体验一下最近做的动画视频,带你学明白计算机网络。这里必须退向大家推荐下视频动画的作者,同时也是一个硬核技术公众号:小白debug,的号主小白。作为多年资深工程师打工人。擅长golang/网...
2023-04-11 09:05:23
44
原创 Go设计模式--访客模式
大家好,这里是每周都在陪你一起进步的网管~!今天继续学习设计模式—访客模式访客模式也叫访问者模式(Visitor Pattern)是一种将数据结构对象与数据操作分离的设计模式,可以在不改变数据结构对象类结构的前提下定义作用于这些对象的新的操作, 属于行为型设计模式。访问者模式主要适用于以下应用场景:数据结构稳定,作用于数据结构的操作经常变化的场景。需要数据结构与数据操作分离的场景。需要对不同数据类...
2023-04-10 08:45:13
58
转载 深入浅出 Kubernetes Pod 实现原理
在 Kubernetes 中,Pod 是容器组的概念,一个 Pod 可以包含多个容器。这些容器共享网络、存储等资源,为应用程序提供了一个更加灵活的运行环境。容器的本质是一个特殊的进程,特殊在为其创建了 NameSpace 隔离运行环境,并用 Cgroups 控制资源开销,还借助了一些Linux 网络虚拟化技术解决了网络通信的问题。Pod 所做的则是让多个容器加入同一个 NameSpace 以实现...
2023-04-07 08:45:34
65
转载 一分钟!快速掌握 Go WebAssembly
最近因为各种奇怪的原因,更多的接触到了 WebAssembly。虽然之前很多博客也翻过写过各种文章,但总感觉欠些味道。于是今天梳理了一版,和大家一起展开学习。先来一张经典图:WebAssembly 是什么以下是 Mozilla 在 MDN 上给出的定义:WebAssembly(缩写:Wasm)是一种新的编码方式,可以在现代的网络浏览器中运行 - 它是一种低级的类汇编语言,具有紧凑的二进制格式,可以...
2023-04-03 08:45:54
154
转载 被ChatGPT的刷屏了?别怕,推荐本AI科普丛书给大家
最近两个月互联网总算因为ChatGPT出了点动静,用美团老板王兴的话:”2016年已经进入了中国互联网的下半场",想想也是,从2016年共享单车大战以后,中国互联网因为进入存量竞争好像一直在走下坡路,校招生的工资和咱们这年丝毫不涨的工资就是这个”下半场“给咱们的最直观的感受。因为ChatGPT火了,又让AI领域重新走入了咱们的视野,以前咱们都以为AI是人工智障,其实AI从上世纪90年代开始已经发展...
2023-03-30 08:50:12
94
转载 深入解析非阻塞Golang IO框架nbio
在本篇文章中,我们将深入分析一个高性能的网络编程框架:nbio。nbio项目里也包含了在nbio之上构建的nbhttp,这个不在我们讨论范围。nbio同样采用了经典的Reactor模式,事实上,Go语言中的许多异步网络框架都是基于这种模式设计的。老规矩,先运行nbio程序代码,Server:使用nbio.NewGopher()函数创建一个新的Engine实例。传入nbio.Config结构体来配置...
2023-03-29 08:50:46
226
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人