[漫谈] 软件设计的目标和途径
记录一下笔者关于软件设计的一些相关认知。在开始之前,先引入两个概念目标和途径(这里可能会有些咬文嚼字,不过主要是为了区分主观和客观的一些细微差异)。 1 目标和途径 我们在做某一件事情的时候,总是会带有一定的目的性的:比如说一日三餐,是为了给身体补充所需的能量。那么这三餐具体如何落实呢,则会有多种多 ...
解Bug之路-Nginx 502 Bad Gateway
解Bug之路-Nginx 502 Bad Gateway 前言 事实证明,读过Linux内核源码确实有很大的好处,尤其在处理问题的时刻。当你看到报错的那一瞬间,就能把现象/原因/以及解决方案一股脑的在脑中闪现。甚至一些边边角角的现象都能很快的反应过来是为何。笔者读过一些Linux TCP协议栈的源码 ...
CPU瞒着内存竟干出这种事
还记得我吗,我是阿Q,CPU一号车间的那个阿Q。 今天忙里偷闲,来到厂里`地址翻译部门`转转,负责这项工作的小黑正忙得满头大汗。 看到我的到来,小黑指着旁边的座椅示意让我坐下。 ![](https://img2020.cnblogs.com/blog/659280/202009/659280-202 ...
不要把异常当做业务逻辑,这性能可能你无法承受
一:背景 1. 讲故事 在项目中摸爬滚打几年,应该或多或少的见过有人把异常当做业务逻辑处理的情况(┬_┬),比如说判断一个数字是否为整数,就想当然的用try catch 包起来,再进行 int.Parse,如果抛异常就说明不是整数,简单粗暴,也不需要写正则或者其他逻辑,再比如一个字符串强制转化为En ...
大数据算法——布隆过滤器
本文始发于个人公众号: TechFlow ,原创不易,求个关注 今天的文章和大家一起来学习大数据领域一个经常用到的算法——布隆过滤器。如果看过《数学之美》的同学对它应该并不陌生,它经常用在集合的判断上,在海量数据的场景当中用来快速地判断某个元素在不在一个庞大的集合当中。它的原理不难,但是设计非常巧妙 ...
为什么 K8s 在阿里能成功?| 问底中国 IT 技术演进
作者: 曾凡松 阿里云云原生应用平台高级技术专家 张振 阿里云云原生应用平台高级技术专家 导读 :本文描述了阿里巴巴在容器管理领域的技术演进历程,解读了为什么 K8s 最终能够大获成功的原因,以及到今年 双11 阿里巴巴内部的 K8s 应用情况。内容着重描述了阿里巴巴基于 K8s 的云原生改造实践过 ...
从零开始入门 K8s | 手把手带你理解 etcd
作者 | 曾凡松(逐灵) 阿里云容器平台高级技术专家 本文整理自 "《CNCF x Alibaba 云原生技术公开课》" 第 16 讲。 导读 :etcd 是用于共享配置和服务发现的分布式、一致性的 KV 存储系统。本文从 etcd 项目发展所经历的几个重要时刻开始,为大家介绍了 etcd 的总体架 ...
我是如何失去团队掌控的?
我是一个不合格的技术总监,在过去的快三个月里。我带着从40多个人的研发团队(包含需求、开发、测试)里抽调出20多个人去为公司开疆拓土。在这快三个月中,我们一起奋战奋斗拼搏。在过程中,我通宵时间超过半个月,干到凌晨4/5点的日子数不胜数,干到凌晨1/2点日子更是习以为常。整个团队绝大多数人近乎两个月没 ...
阿里terway源码分析
背景 随着公司业务的发展,底层容器环境也需要在各个区域部署,实现多云架构, 使用各个云厂商提供的CNI插件是k8s多云环境下网络架构的一种高效的解法。我们在阿里云的方案中,便用到了阿里云提供的CNI插件terway。terway所提供的VPC互通的网络方案,方便对接已有的基础设施,同时没有overl ...
Code Review最佳实践
我一直认为Code Review(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题。包括像Google、微软这些公司,Code Review都是基本要求,代码合并之前必须要有人审查通过才行。 然而对于我观察到的大部分软件开发团队来说,认真做Code Rev ...
如何以计算机的方式去思考
从上大学第一天开始接触编程,老师便给我们讲过各式各样的算法。从各种查找、排序,到递归、贪心等算法,大一的时候一直在和这些算法搏斗。直到工作后,为了应付面试,仍不得不回过头去啃算法书或者去刷一些算法习题,才能够拾回一些上学时的记忆。为什么算法就这么难以记住呢?或者说,为何计算机的算法不能更直观一些呢? ...
某618大促项目的复盘总结
一、前言 618期间上线一个活动项目。但上线不顺利,当天就出现了性能问题,接口超时,用户无法打开网页,最后不得的临时下线。花了三天两夜,重构了后台核心代码,才让活动进行下去。 回头看了一下自己的时间记录,从5月31号那天晚上8点25分开始准备上线,发现异常,分析原因,重构代码,离开公司时已经是6月2 ...
不懂数据库索引的底层原理?那是因为你心里没点b树
本文在个人技术博客不同步发布,详情可用力戳 亦可扫描屏幕右侧二维码关注个人公众号,公众号内有个人联系方式,等你来撩... 前几天下班回到家后正在处理一个白天没解决的bug,厕所突然传来对象的声音: 对象:xx,你有《时间简史》吗? 我:我去!妹子,你这啥癖好啊,我有时间也不会去捡屎啊! 对象:... ...
我为能准时下班而做的准备,以及由此的收获,同时总结下不足
可能有人会说,做IT的想准时下班很难,尤其是在互联网公司。有些外企或国企倒能准时下班,原因是公司更像养老院。 其实这里存在个误区:能否准时下班其实和工作效率和质量有关,取决于自己,而不在于其它因素。公司的氛围让不让准时下班是一回事,能不能高效高质工作,从而能准时下班又是另一回事。比如在工作中高效了, ...
深入认识二进制序列化--记一次生产事故的思考
一 概要 二进制序列化是公司内部自研微服务框架的主要的数据传输处理方式,但是普通的开发人员对于二进制的学习和了解并不深入,容易导致使用过程中出现了问题却没有分析解决的思路。本文从一次生产环境的事故引入这个话题,通过对于事故的分析过程,探讨了平时没有关注到的一些技术要点。二进制序列化结果并不像Json ...
一次给女朋友转账引发我对分布式事务的思考
本文在个人技术博客不同步发布,详情可用力戳 亦可扫描屏幕右侧二维码关注个人公众号,公众号内有个人联系方式,等你来撩... 前两天发了工资,第一反应是想着要给远方的女朋友一点惊喜!于是打开了平安银行的APP给女朋友转点钱!填写上对方招商银行卡的卡号、开户名,一键转账!搞定!在我点击的那瞬间,就收到了a ...
【面试】一篇文章帮你彻底搞清楚“I/O多路复用”和“异步I/O”的前世今生
曾经的VIP服务在网络的初期,网民很少,服务器完全无压力,那时的技术也没有现在先进,通常用一个线程来全程跟踪处理一个请求。因为这样最简单。其实代码实现大家都知道,就是服务器上有个ServerSocket在某个端口监听,接收到客户端的连接后,会创建一个Socket,并把它交给一个线程进行后续处理。线程 ...