自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 资源 (4)
  • 收藏
  • 关注

原创 DDD 到底是银弹还是垃圾

每过一段时间,就会有人跳出来批判 DDD,这东西到底是垃圾还是银弹?在某某公司干活的时候,有一批人声称要用 DDD 改造老旧系统,彻底解决核心流程规模化之后,项目难以维护的问题。之前某篇文章里的这张图,就是在用 DDD 做项目重构之前的烂摊子:大家都很聪明,聪明到最后没人知道这新需求到底该往哪里写了。架构师们聚在一起学习 DDD 精神,产出学习报告,大半年过去,终于出了一些成果,有些子项目完成了用 DDD 进行的重构,年底可以拿来在酒会上邀功了,这下我们跟上了业界业务开发的主流方法论,可喜可贺,可喜可

2021-12-02 15:57:50 346

原创 Go 1.17 的调用规约

Go 1.17 修改了用了很久的基于栈的调用规约,在了解 Go 的调用规约之前,我们得知道什么是调用规约。x86 calling convention,简单概括一下,其实就是语言对于函数之间传参的一种约定。调用方要知道我要把参数按照什么形式,什么顺序传给被调用函数,被调用函数也遵守该规范去相应的位置找到传入的参数内容。老版本的 Go 的参数传递图我们已经在很多很多地方见过了,这里贴一个我之前画的:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Pum18rH-16304

2021-08-31 20:53:15 317

原创 Go 语言的信号式抢占原理

从 Go 1.14 开始,通过使用信号,Go 语言实现了调度和 GC 过程中的真“抢占“。抢占流程由抢占的发起方向被抢占线程发送 SIGURG 信号。当被抢占线程收到信号后,进入 SIGURG 的处理流程,将 asyncPreempt 的调用强制插入到用户当前执行的代码位置。本节会对该过程进行详尽分析。抢占发起的时机抢占会在下列时机发生:STW 期间在 P 上执行 safe point 函数期间sysmon 后台监控期间gc pacer 分配新的 dedicated worker 期间

2021-07-26 17:08:47 439 1

原创 Go 语言中的一些不太常见的优化

这次去 Gopher China 和不少老朋友见了个面,还有不少在微信上认识已久,一直没见过面的网友。同时也和各个公司的一线开发们聊了聊,互相交流了彼此使用 Go 时的一些心得和痛点。综合近期了解的一些相关分享,我把到目前为止见到的,不那么常见的,各方对 Go 的优化和 hack 集中在这篇文章里。因为考虑到一些公司情况比较特殊,所以本文中列出的点就不标记是哪个公司做的了。未来他们觉得时机成熟应该也会自己出来做一些分享。网络方面当前 Go 的网络抽象在效率上有些低,每一个连接至少要有一个 gorout

2021-07-10 14:01:14 262

原创 消息队列能解耦?骗你的

有一个观点已经被说烂了:使用 MQ 可以帮助业务系统解耦。想法很简单,在业务状态流转时,如果没有 MQ,那么其它系统想要知道状态变了,那就需要核心流程系统去主动做通知。比如电商系统里订单从创建到处理中状态切换了,客服系统需要知道,风控系统需要知道,用户系统也需要知道。这里的通知通过 RPC 来进行,下游系统需要的数据可以在这次 RPC 里携带上,也可以在请求的时候让下游系统自己去查。下游系统增加的时候,核心业务的代码也需要修改,比如新做了一个积分系统,现在订单状态流转积分系统也想知道。核心系统

2021-05-30 17:23:56 257 3

原创 在业务系统中寻找技术含量

从进入互联网公司开始工作起,每个人都在问自己,CRUD 到底有什么技术含量?别觉得 CRUD 只是业务工程师的问题,无论你在写什么程序,基本上都是在和数据打交道,除了读就是写。只不过读写的时候还会附带一些领域相关的行为。比如:编译器:读文本,做 parse网络程序:读连接,decode,encode,写连接数据库:从磁盘上读,从内存里读,向磁盘里写,向内存里写工程上,谁也没有权力鄙视谁,你觉得领域的技术含量高,只不过是领域内的工作做的人少罢了。不管门槛多么高的工程领域,只要工程师红利们蜂拥而至,总

2021-05-09 21:41:03 74

原创 程序员必备画图工具

偶尔讲讲工具,放松一下。现在写技术文章不但要写技术细节,图还得画的好看。对于表达思路和架构来说,图确实挺直观的,这篇文章介绍一下常见的绘图工具。大家可以看自己的喜好自行选择。在早期写 golang-notes 的时候,想要向那些写 RFC 文档和早期的 unix 大神们致敬,所以比较喜欢 ascii 图,这种图的好处是你可以直接将图表内嵌在文档内部,不需要有附件。有利于单文件传播。用来画 ascii 的图工具有不少。textiktextik 是一个在线项目:https://textik.com,可

2021-05-09 16:55:52 2542

原创 Google 是怎么解决长尾延迟问题的

The Tail at Scale,是 Google 2013 年发表的一篇论文,大规模在线服务的长尾延迟问题。要知道怎么解决长尾问题,先要理解长尾延迟是个什么问题,在开发在线服务的时候,我们都知道要关注服务的 p99/p999 延迟,要让大部分用户都能够在预期的时间范围内获得响应。下面是一个不同响应时间的请求数分布图:大部分系统也都遵循这种分布规律,现在互联网的系统规模比较大,一个服务依赖几十上百个服务的情况都是有可能的。单一模块的长尾延迟会在有大量依赖的情况下,在服务粒度被放大,《The Tai

2021-05-09 16:42:09 739

原创 plan9 assembly 完全解析

众所周知,Go 使用了 Unix 老古董(误 们发明的 plan9 汇编。就算你对 x86 汇编有所了解,在 plan9 里还是有些许区别。说不定你在看代码的时候,偶然发现代码里的 SP 看起来是 SP,但它实际上不是 SP 的时候就抓狂了哈哈哈。本文将对 plan9 汇编进行全面的介绍,同时解答你在接触 plan9 汇编时可能遇到的大部分问题。本文所使用的平台是 linux amd64,因为不同的平台指令集和寄存器都不一样,所以没有办法共同探讨。这也是由汇编本身的性质决定的。基本指令栈调整int

2021-05-09 16:33:36 846 1

原创 工程师应该如何学习

只要一日自诩工程师,就没有办法放弃学习。本文不算是技术文,只是介绍一些个人的学习方法和经验。如果很多点你已经做到并且做好,一笑了之便可。阅读书籍对于工程师来说,从书籍得来的知识是必不可少的。现在很多年轻的程序员会从网络博客来学习技术,但博客内容大多缺乏体系(主要说总结性质的博客内容),不系统。很多博主为了掩饰自己的未知,遇到不知道的关键点就一笔带过,进而导致缺失。即使原作者非常努力,内容上没有缺失,你能从中获取的也只是别人总结好的知识,没有自己的主动思考,这中间便缺少过程式的沉淀,一味地满足于背诵别人总

2021-05-09 16:28:44 314

原创 线性时间复杂的洗牌算法

昨天在wiki上看到的线性时间复杂度的算法,把他用代码实现出来了函数里的shuffle_func2具体参见这里http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle以下代码帖到你的编译器里,可以看到两种算法明显的效率之差了。[code="C++"]#include #include #include #incl...

2010-10-03 20:06:06 114 1

0daydown 2017-2018 全部视频教程资源

从 2017-2018 所有 VIP 会员才能看到的视频资源的百度盘链接和密码

2018-07-20

Linux内核编码风格

Linux内核编码风格文档pdf 总结了linux的内核编码规范

2014-05-12

Assignment 1

国外某大学作业要求,基本比较简单……wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

2011-10-04

空空如也

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

TA关注的人

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