- 博客(655)
- 收藏
- 关注
原创 gRPC服务注册发现及负载均衡的实现方案与源码解析
今天聊一下gRPC的服务发现和负载均衡原理相关的话题,不同于Nginx、Lvs或者F5这些服务端的负载均衡策略,gRPC采用的是客户端实现的负载均衡。什么意思呢,对于使用服务端负载均衡的...
2020-10-25 09:22:25 2620 1
原创 Kubernetes Pod入门指南
Pod是Kubernetes项目里定义的最小可调度单元,是Kubernetes对应用程序的抽象。在这篇文章里我将会介绍Kubernetes里Pod的基本概念,使用方式,生命周期以及如何使...
2020-08-05 13:39:39 539
原创 五分钟用Docker快速搭建Go开发环境
挺早以前在我写过一篇用 Docker搭建LNMP开发环境的文章:用Docker搭建Laravel开发环境,里面详细介绍了将 nginx、 mysql和 php三个容器用 docker-compose编排成 LNMP开发环境的步骤,今天来说说怎么用 Docker快速搭建 Go语言项目的开发环境。因为靠Go本身自带的标准库就能实现高...
2020-01-30 11:26:00 7374 3
原创 深入学习用 Go 编写 HTTP 服务器
Go是一门通用的编程语言,想要学习 Go 语言的 Web 开发,就必须知道如何用 Go 启动一个 HTTP 服务器用于接收和响应来自客户端的 HTTP 请求。用 Go实现一个http server非常容易,Go 语言标准库net/http自带了一系列结构和方法来帮助开发者简化 HTTP 服务开发的相关流程。因此,我们不需要依赖任何...
2020-01-28 12:30:00 9101 2
原创 深入浅出|用代码拆解软件设计中类的六种关系
上一节我们学会了怎么把需求分解后提炼成类图,其中类图最难让人掌握的点就是类跟类的关系怎么画,我们上节把类之间的六种关系通过现实中的一些例子进行了说明,这六种关系是:关联继承实现聚合组合依赖在做的各位读者应该大部分都是需要写代码的编程人士,那么心里一定会有一个疑问:类的这些关系看这些例子我是明白了,但在代码里对应什么结构呢?继承、实现还好说,编程语言里都有对应的关键字。可是依赖、聚合、组合这些关系的...
2024-03-27 09:00:17 173
原创 UML类图,这样用即简单又实用
从本节开始,我们正式开始课程第一部分UML的学习。我们要学到的第一个图形是类图,类图可能是我们在各种文档里见到过的最多的一种UML图,许多人一提UML首先想到的也是类图。在各种系统的技术文档里,描述系统或者模块的核心类和业务概念时都会用到类图,比如下面这个呈现了电商系统订单模块的关键业务概念的类图。通过这个类图我们就能清晰地看到系统中都有哪些关键类,以及他们相互之间是怎么整合在一起的。 除了这种相...
2024-03-25 09:01:15 678
原创 程序员画图利器--零成本打造一个好用的在线画图软件
本节我们介绍课程中使用的绘图软件,市面上能供我们用来作为技术画图软件的产品有不少,像processon、excalidraw、omni-uml、draw.io 等。课程里因为要兼顾考虑读者的使用成本、画图专业性、上手简单、支持云端分享复制几个因素,我最终选用的是draw.io这款绘图软件,这样大家启动简单,不需要额外花钱再去买软件,我也能把课程里教大家画的图分享出来供大家参考。我们课程全程使用的绘...
2024-03-20 09:01:53 160
原创 程序员光写代码不行吗,为什么还要画图?
相信很多人选择当程序员除了这个行业起步阶段薪资比其他行业高一些之外,还有一个很大的因素是觉得做研发类的工作只要代码写的好,跟电脑这个“直男”打交道就可以了。但是还没走出校门呢,毕业这一关就得边做毕业设计边写毕业论文。写毕业论文可不是直接把自己的实现代码从IDE粘贴到Word里,但凡代码多一点就会被老师要求修改,老师会告诉你要把你做的毕业设计的功能、设计思路、关键部分的实现细节用绘图结合文字表达清楚...
2024-03-18 08:45:28 467
原创 独家原创--程序员的全能画图课
今天给大家介绍一下我用大半年的时间沉淀和总结出来的一套关于程序员画图分析拆解问题的课程。本课程旨在帮助广大程序员、或即将步入程序员岗位的学生,解决做项目只会埋头写代码、键盘敲的飞起,一让做需求分析、技术方案评审、述职汇报等这些需要画图和表达能力的事情的时候就犯难的痛点,帮助大家摆脱代码的单一维度,从多维度提升自己,从而在职场中更游刃有余。在学习过程中你还将经历一套完整的把项目需求拆解分析,化繁为简...
2024-03-14 08:50:23 568
原创 在“没能力”的领导下面工作时,要记住这三点
相信很多人在职场里待久了,都会遇到自己觉得比较差劲的领导,这些人可能除了向上管理能力很强外(会舔老板),其他能力在你看来都挺一般,专业能力一般,超级缝合怪--上级给他的任何任务他都能分配给你们,然后他再缝合一遍完事。那么遇到这种领导我们该怎么办呢?多数人想到的是跳槽,这确实是一个解法,但你跳到下家公司也保不齐会有这样的领导呀,今天咱们讨论的这个话题就先把条件限定成你不能跳槽,这个时候你该采用什么方...
2024-03-11 11:56:39 314
原创 说一个比内卷更适合互联网打工人的职场生存策略
这篇文章我们接着上一篇文章「为什么互联网员工、程序員们注定要内卷?」继续聊,上一篇我们拆解了下互联网员工、程序员内卷的本质原因:每个时代的人才们为了证明自己「配得上」高收入,会人为制造一些壁垒,最常见的壁垒主要有 3 个:一是制造信息差,二是提高录取门槛,三是在内部卷起来。互联网的目标是连通一切,不可能主动去制造大量信息差;互联网行业又需要大量人,门槛也不能定得太高,于是「证明自己配得上高收入」的...
2024-02-26 09:05:14 234
转载 金融风控领域的 DDD 与中台思考
风控领域作为金融核心领域之一,对金融业务发展有着至关重要的作用。风控直译就是风险控制,其核心是对风险与成本的平衡。风控业务开展离不开风控系统的支持,本文就风控系统如何规划架构与演进,以及对领域驱动设计的思想和风控中台战略的思考。风控与 DDD领域驱动设计(DDD)作为微服务拆分的指导思想随着微服务化火起来,但其过于抽象难懂,网上方法论众多,而案例较少。本文尝试对风控领域如何按 DDD 思想设计给出...
2023-06-16 08:45:33 443
转载 用 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 333
转载 工作20年的程序员不愿用Redis,该嘲笑他吗?
最近逛知乎,被系统推荐了一个问题,看了下题目描述。大概是一个小年轻程序员嘲笑公司工作了20多年的前辈开发系统就愿意用数据库,做接口防重之类的也不愿用Redis。本来是想吐槽前辈死板来着,想着回答问题的答主能站他,结果回答下面清一色的让他解释为什么要用Redis,引入新一层的各位问题该怎么解决。下面贴一位答主对小年轻的灵魂反问你不要告诉我们用不用redis,你得告诉我们你为什么想要用redis...
2023-06-12 08:45:17 324
转载 一分钟搞明白 Go WebAssembly
大家好,最近接触到了 WebAssembly,今天梳理了一版,和大家一起展开学习。先来一张经典图:WebAssembly 是什么以下是 Mozilla 在 MDN 上给出的定义:WebAssembly(缩写:Wasm)是一种新的编码方式,可以在现代的网络浏览器中运行 - 它是一种低级的类汇编语言,具有紧凑的二进制格式,可以接近原生的性能运行,并为诸如 C/C++ 等语言提供一个编译目标,以便它们可...
2023-06-09 08:45:16 249
转载 面试开发,被问了六个CDN的问题,一个比一个难!
对于开发同学来说,CDN这个词,既熟悉又陌生。平时搞开发的时候很少需要碰这个,但却总能听到别人提起。我们都听说过它能加速,也大概知道个原因,但是往深了问。用了CDN就一定比不用更快吗?就感觉有些懵了。但没关系,今天我们换个角度重新认识下CDN。CDN是什么对于数字和文本类型的数据,比方说名字和电话号码相关的信息。我们需要有个地方存起来。我们通常会用mysql数据库去存。文本存在mysql中当我...
2023-06-07 08:50:30 638
原创 合订本|用Go语言实现23种设计模式及学习重点
今天是咱们用Go学设计模式系列的最后一期,整个系列中我带着大家一起学习了经典的23种设计模式用Go语言如何来实现,以及它们在日常工作开发中的应用场景。我看了一下发文记录,从2022年7月18更新第一篇观察者模式,到5月22号发布了最后一种设计模式--中介者模式,一共历时10个月,发布了23篇文章。从最一开始的不准备整理成系列写到哪算哪,到中期形成自己的写作风格,有目标的去学习整理再发布,对自己来说...
2023-06-05 08:45:45 326
转载 从Go源码到可执行文件的编译过程详解
Go 是一门编译型语言,我们平时所编写的 *.go 文本文件称为源文件,源文件里面的内容就是我们的源代码。源代码要想在目标机器上运行,就必须使用 Go compiler )将其先编译成操作系统能够直接识别的二进制机器码文件,或说可执行文件。后续由操作系统加载该文件,并在 CPU 中直接运行机器码。这也是编译型语言运行效率高的主要原因。Go compiler 是用什么实现的编译器本身也是一个程序,它...
2023-06-02 08:46:01 1107
转载 颠覆微服务架构?谷歌最新开源service weaver初体验
合久必分,分久必合,技术圈也是如此。在大家纷纷从单体应用过渡到微服务的时候,谷歌携带着新时代的“单体”应用框架Service Weaver来了!代码仓库位于:https://github.com/ServiceWeaver/weaver 才发布没几天已经超过了2.5k star,不得不感慨谷歌的号召力。谷歌称此框架为模块化单体(modular monolith),谷歌为什么会在这个时候提出如此标新...
2023-05-31 09:57:05 256
转载 快速上手 CGO,掌握在 Go 里写 C!
大家好,最近因为各种奇怪的原因,接触到了 Go 特色之一 CGO。这方面的相关内容也相对少一些,给大家抛砖引玉,有经验的大佬欢迎补充。图片来源于 marlin毕竟很多跨语言调用,还是会依赖 CGO 这个特性。希望大家在真正要用时有个前置知识垫肚子。CGO 是什么CGO 就是 C 和 Go,两个编程语言。指的是能够创建调用 C 代码的 Go 包。对照着 Go 代码中的 “C”:packagemai...
2023-05-29 08:45:26 1138
转载 推荐一个HTTP TCP 视频教程,面试前……
学习计算机网络,有时候确实会比较枯燥,如果一篇技术文章能做到既有深度,又有趣,那对于读者来说,将会大大降低学习门槛。如果是视频动画,效果是不是更好?你可能会问哪有这么好的事儿?还真有,咱们可以点击【阅读原文】体验一下最近做的动画视频,带你学明白计算机网络。这里必须退向大家推荐下视频动画的作者,同时也是一个硬核技术公众号:小白debug,的号主小白。作为多年资深工程师打工人。擅长golang/网...
2023-05-26 08:50:53 85
转载 业务中台已拆,有事烧纸
本文转载自曹春晖的个人公众号:techpaper眼看他起高楼,眼看他宴宾客,眼看他楼塌了。AI 浪潮之下,人的思考渐渐连机器都比不上,这些一直存在脑子里的知识应该都放出来也没什么关系了。我在 2019 年在某司从业期间,曾经写过一篇《中台的末路》,从一线工程师和架构师的视角来思考当前大公司内部的中台架构到底会碰到什么样的问题。在我离职之前,有一些问题已经有了明确的答案。有一些还没有,后续加入猫厂下...
2023-05-24 11:50:05 103
转载 这个线上BUG,让你彻底搞懂了MySQL的字符集,别问我咋知道的
那天,我还在外面吃成都六姐的冒菜。牛肉丸裹上麻酱后,狠狠嘬一口,都要入嘴了。产品经理突然发来消息。"线上有些用户不能注册了"心想着"关我x事,又不是我做的模块",放下手机。不对,那老哥上礼拜刚离职了,想到这里,夹住毛肚的手微微颤抖。对面继续发:"还有些用户不能改名""如果用上表情符号的话,问题必现"可以了,这下问题几乎直接定位了。危,速归。有经验的兄弟们很容易看出,这肯定是因为字符集的缘故。复现问...
2023-05-23 08:45:08 119
原创 Go设计模式--中介者,最后的模式!
大家好,这里是每周都在陪你一起进步的网管~!今天继续学习设计模式,也是我们要学习的最后一个设计模式—中介者模式,对这个模式有一点了解后会觉得它跟我们已经学过的观察者模式挺像,但是两者还是有些区别的,使用场景也不一样,具体我们放在最后再讲,先来一起学习中介者模式。中介者模式是一种行为设计模式, 能让程序减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互, 迫使它们通过一个中介者对象进行...
2023-05-22 08:45:46 313
转载 考虑了很久,还是决定转Go了
在最近的一份程序员薪资报告中,Go的平均薪资位居榜首,平均薪资¥25739。Java、C++、C分别位列13、12、11名,平均薪资在¥18000-19000之间,其实这不足为奇,“物以稀为贵”。Java作为国内目前应用最庞大的语言,用的人多、找工作的人多,可替代性就高。而随着国内Go环境的逐步成熟,企业对Go开发的需求逐渐增大,主动学习Go的人自然是越来越多了。都说 Go 入门容易,但实际上很多...
2023-05-19 09:05:40 123
转载 写给go开发者的gRPC教程-通信安全
使用 TLS 安全传输数据什么是 SSL/TLSSSL 包含记录层(Record Layer)和传输层[1],记录层协议确定传输层数据的封装格式。传输层安全协议使用X.509[2]认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密匙作为会话密匙(Session key[3])。这个会谈密匙是用来将通信两方交换的资料做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通...
2023-05-17 11:36:59 262
原创 Go设计模式--解释器模式
大家好,这里是每周都在陪你一起进步的网管~!今天继续学习设计模式—解释器模式解释器模式是一种行为设计模式,可以用来在程序里创建针对一个特点领域语言的解释器,用于处理解释领域语言中的语句。换句话说,该模式定义了领域语言的抽象语法树以及用示来解释语法树的解释器。模式使用场景解释器模式,用于解决需要解释语言中的句子或表达式的问题。以下是一些可以在 程序中使用解释器模式的真实场景:处理配置文件许多应用程序...
2023-05-15 08:45:50 367
转载 让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 117
转载 图解TCP 三次握手和四次挥手的高频面试题(2023最新版)
大家好,最近重新整理了一版 TCP 三次握手和四次挥手的面试题(2023最新版)。-----任 TCP 虐我千百遍,我仍待 TCP 如初恋。巨巨巨巨长的提纲,发车!发车!imgTCP 基本认识 TCP 头格式有哪些?我们先来看看 TCP 头的格式,标注颜色的表示与本文关联比较大的字段,其他字段不做详细阐述。TCP 头格式序列号:在建立连接时由计算机生成的随机数作为其初始值,通过 SYN 包传给接收...
2023-05-08 08:45:45 191
转载 Go 团队准备在 go mod 和工具链中增强向后兼容性
Go1 兼容性保障在 Go1 引入了 Go 兼容性保障《Go 1 and the Future of Go Programs[1]》,也就是旧版本的 Go 程序也可以在继续 Go 的新版本中正确运行。当然,凡事有例外,像是安全问题就是例外。具体的完整细则如下图:我们常接触到的有以下几个:安全问题:Go 规范或实施中的安全问题可能会被发现,其解决需要破坏兼容性。将会保留解决这些安全问题的权利。未指...
2023-05-06 08:45:18 243
原创 Go设计模式--命令模式
大家好,这里是每周都陪你进步的网管,假期归来咱们继续更新设计模式系列,这次要和大家一起学习的是命令模式,如果你对领域驱动设计感兴趣,这个模式一定要好好学,命令模式是DDD风格的框架中高频使用的一个模式。命令模式是一种行为型模式。它通过将请求封装为一个独立的对象即命令对象,来解耦命令的调用者和接收者,使得调用者和接收者不直接交互。在命令对象里会包含请求相关的全部信息,每一个命令都是一个操作的请求: ...
2023-05-04 08:45:34 156
转载 这些最常用的 Go 工具集命令,新手 Gopher 一定要掌握
本文将介绍一些最基本的 Go 命令行命令。如果你刚接触 Go 语言,那你有必要记住它们,因为这些命令是 Go 开发者日常工作中所必备的。Go version开始 Go 项目前,我们应该确保开发机上已经安装好了 Go 编译器。这可以通过 https://go.dev/doc/install 进行下载安装,如果有多版本安装需求可以参考文章简洁的 Go 多版本管理机制。通过执行以下命令可以查看安装的 G...
2023-04-27 17:03:47 134
转载 盘点一下DNS中那些值得借鉴的技术设计
为什么要有DNS如果我们想要访问某度,你可以在浏览器上的搜索栏里输入112.80.248.76这个IP地址,直达页面。通过IP访问网页这样的行为,合法,但有病。大部分人,连自己对象的电话号码都记不住,又怎么可能记得住这么一串IP地址呢。哦,不好意思,伤害到兄弟们了,你们没对象。但我假设你们有。回想一下,虽然你记不住对象的电话号码,但却不影响你给她打电话。你的操作过程是不是打开通讯录,输入"富婆",...
2023-04-26 11:23:18 125
转载 每个人都能看懂的Go并发编码实战经验分享
我们知道,Go 语言部署简单,自带完善的工具链,不仅容易上手,而且执行性能非常好,已经被越来越多的人当成主要的编程语言。而我当初也算被 Go 的简单高效所打动。它不仅部署方便,自带完善的工具链,特别是 Go 在处理并发场景上表现出的独特性能,更是让我着迷。相对于 Java 语言的繁琐编码,和为了应用设计模式而做的大量冗长设计, Go 提供了便利的并发编程方式 -- 简简单单的语句,就可以创建多个 ...
2023-04-24 09:14:36 140
转载 一个例子让你彻底掌握 Go 工作区模式
阅读本文大概需要 5 分钟。Go1.18 正式发布后,工作区模式有点变化,因为工作区模式真的很有用,今天写一篇文章梳理一下。工作区模式(Workspace mode),可不是之前 GOPATH 时代的 Workspace,而是希望在本地开发时支持多 Module。01 缘起为了大家全面理解工作区模式,通过一个具体例子讲解。本地有两个项目,分别是两个 module:mypkg 和 example。(...
2023-04-23 17:02:10 143
转载 写好Prompt,不给ChatGPT老说片汤话的机会
大家好,有没有感觉ChatGPT回答你的问题老说片汤话,这其实有可能咱们的提示语写的不够sensible。今天主要是针对 ChatGPT 和如何让他回答的更有效展开内容。什么是 ChatGPT以下来自维基百科ChatGPT,全称聊天生成预训练转换器(英语:Chat Generative Pre-trained Transformer),是 OpenAI 开发的人工智能聊天机器人程序,可以基于上下文...
2023-04-21 11:26:03 269
转载 滴滴、开水团 Go 架构师岗2023 面试真题合集
最近“2022五大高薪编程语言”排行榜新鲜出炉,由Techgig发布,该排名从职业建议的角度,列出了今年收入最高的编程语言,Go位列第3,平均薪资30-213万,仅次于Kotlin和SQL。随着国内Go环境的逐步成熟,企业应用范围越来越广,主动学习Go的人也越来越多,希望通过Go弯道超车。对于有语言基础的人来说,Go入门比较容易,大部分程序员基本上用一周的时间也就大致熟悉了。但只做到熟悉就想赢得面...
2023-04-19 09:05:04 261
转载 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 674
原创 Go设计模式--备忘录模式,带暂存的业务功能可以参考它来实现
大家好,这里是每周都在陪你一起进步的网管~!今天继续学习设计模式—备忘录模式备忘录模式(Memento Pattern)又叫作快照模式(Snapshot Pattern), 或令牌模式(Token Pattern), 指在不破坏封装的前提下, 捕获一个对象的内部状态, 并在对象之外保存这个状态。 这样以后就可将该对象恢复到原先保存的状态, 属于行为型设计模式。备忘录模式主要适用于以下应用场景。需要...
2023-04-17 08:45:07 93
转载 别把DNS 当做服务发现,有这些坑
背景分享遇到过这么一个问题,有童鞋的 Go 程序用 DNS 解析做服务发现(内网用的 CoreDNS 做的域名解析服务器)。比如,内网有个服务域名,对应 7 个后端节点。为了做服务发现,故障的剔除等服务,在 Client 端对一个给定的域名调用 Go 标准库的 Resolver.LookupHost 方法来解析 ip 列表。如果解析得到的 ip 列表有变化,那么在 Client 内对相应的对后...
2023-04-14 08:45:50 123
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人