03__DevOps的实施:到底是工具先行还是文化先行?

你好,我是石雪峰。

当一家企业好不容易接纳了 DevOps 的思想,并下定决心开始实施的时候,总会面临这样一个两难的选择:工具和文化,到底应该哪个先行?

的确,在 DevOps 的理论体系之中,工具和文化分别占据了半壁江山。在跟别人讨论这个话题的时候,我们往往会划分为两个不同的“阵营”,争论不休,每一方都有自己的道理,难以说服彼此。在 DevOps 的世界中,工具和文化哪个先行的问题,就好比豆浆应该是甜的还是咸的一样,一直没有一个定论。

03__Equifax信息泄露始末

相信你一定有所耳闻,9 月份美国知名征信公司 Equifax 出现了大规模数据泄露事件,致使 1.43 亿美国用户及大量的英国和加拿大用户受到影响。今天,我就来跟你聊聊 Equifax 信息泄露始末,并对造成本次事件的原因进行简单的分析。

03__HTML语义:div和span不是够用了吗?

你好,我是 winter。

今天这篇是我们正式开篇的第一篇文章,我想和你聊聊 HTML。

我猜屏幕那一边的你估计会说:“HTML 我很熟悉了,每天写,这不是初级程序员才学的内容么,这我还能不会吗?”

03__HTTP请求流程:为什么很多站点第二次打开速度会很快?

上一篇文章中我介绍了 TCP 协议是如何保证数据完整传输的,相信你还记得,一个 TCP 连接过程包括了建立连接、传输数据和断开连接三个阶段。

而 HTTP 协议,正是建立在 TCP 连接基础之上的。HTTP 是一种允许浏览器向服务器获取资源的协议,是 Web 的基础,通常由浏览器发起请求,用来获取不同类型的文件,例如 HTML 文件、CSS 文件、JavaScript 文件、图片、视频等。此外,HTTP 也是浏览器使用最广的协议,所以要想学好浏览器,就要先深入了解 HTTP。

03__HTTP世界全览(上):与HTTP相关的各种概念

在上一讲的末尾,我画了一张图,里面是与 HTTP 关联的各种技术和知识点,也可以说是这个专栏的总索引,不知道你有没有认真看过呢?

那张图左边的部分是与 HTTP 有关系的各种协议,比较偏向于理论;而右边的部分是与 HTTP 有关系的各种应用技术,偏向于实际应用。

03__Java虚拟机是如何加载Java类的_

听我的意大利同事说,他们那边有个习俗,就是父亲要帮儿子盖栋房子。

这事要放在以前还挺简单,亲朋好友搭把手,盖个小砖房就可以住人了。现在呢,整个过程要耗费好久的时间。首先你要请建筑师出个方案,然后去市政部门报备、验证,通过后才可以开始盖房子。盖好房子还要装修,之后才能住人。

03__Kafka只是消息引擎系统吗?

你好,我是胡夕。今天我们来聊一个老生常谈的话题:Kafka 只是消息引擎系统吗?

要搞清楚这个问题,我们不可避免地要了解一下 Apache Kafka 的发展历程。有的时候我们会觉得说了解一个系统或框架的前世今生似乎没什么必要,直接开始学具体的技术不是更快更好吗?其实,不论是学习哪种技术,直接扎到具体的细节中,亦或是从一个很小的点开始学习,你很快就会感到厌烦。为什么呢?因为你虽然快速地搞定了某个技术细节,但无法建立全局的认知观,这会导致你只是在单个的点上有所进展,却没法将其串联成一条线进而扩展成一个面,从而实现系统地学习。

03__SRE切入点:选择SLI,设定SLO

你好,我是赵成,欢迎回来。

还是先来复习下上节课讲的“系统可用性”的两种计算方式,一种是从故障角度出发,以时长维度对系统进行稳定性评估;另一种是从成功请求占比角度出发,以请求维度对系统进行稳定性评估。同时,我们还讲到,在 SRE 实践中,通常会选择第二种,也就是根据成功请求的比例来衡量稳定性:

03__WebAssembly_是一门新的编程语言吗?

你好,我是于航。

“WebAssembly(缩写为 Wasm)是一种基于堆栈式虚拟机的二进制指令集。Wasm 被设计成为一种编程语言的可移植编译目标,并且可以通过将其部署在 Web 平台上,以便为客户端及服务端应用程序提供服务”。这是 Wasm 官网给出的一段,对“Wasm 是什么?”这个问题的解答。

03__备忘录:如何避免递归中的重复计算?

你好,我是卢誉声。

从前面的课程中我们已经看到,动态规划问题的一般形式就是求最值。因此我先讲解了什么是最优解问题,在考虑整体最优的情况下,我们需要找到一种办法获取最优解。那么最简单直接的做法是什么呢?

03__标准化体系建设(上):如何建立应用标准化体系和模型?

今天我专门来讲讲标准化这个工作。可以说这项工作是运维过程中最基础、最重要的,但也是最容易被忽视的一个环节。

我做过多次公开演讲,每次讲到这个环节,通常会有单独的一页 PPT,就放四个字,字号加大加粗,重复三遍,这四个字就是“标准先行”,然后演讲过程中会大声说出“标准先行,标准先行,标准先行”,重要的事情说三遍,目的就是想反复强调这件事情的重要程度,一定不要忽视。

03__表:怎么创建和修改表?

你好,我是朱晓峰。今天,我们来聊一聊怎么创建和修改数据表。

创建和修改数据表,是数据存储过程中的重要一环。我们不仅需要把表创建出来,还需要正确地设置限定条件,这样才能确保数据的一致性和完整性。同时,表中的数据会随着业务需求的变化而变化,添加和修改相应的字段也是常见的操作。这节课,我们就来学习下具体的方法。

03__并行设计(下):如何高效解决同步互斥问题?

你好,我是尉刚强。

我曾经主导过一个性能优化的项目,该项目的主要业务逻辑是在线抢货并购买。在原来的设计方案中,我们为了保证库存数据的一致性,后端服务在请求处理中使用了 Redis 互斥锁,而这就导致系统的吞吐量受限于 30TPS,不能通过弹性扩展来提高性能。

03__产品大观:不同金融业务都有哪些技术实现要点?

你好,我是任杰。这节课我和你聊一聊不同的金融业务都有哪些技术实现要点。

和前两节课一样,在聊技术之前我们先聊一聊业务。提到金融,你可能第一个想到的是金融行业很赚钱。金融行业赚钱的方法有很多种,但是最核心的原理只有一个,那就是利用信息不对称赚钱

03__从理解用户开始:故事、生态、画像、旅程

你好,我是苏杰。今天让我们一起来聊聊“对用户的理解”,这是 4 轮 MVP 中第一轮 Paperwork 环节的第一讲,我认为,这是创新的起点、是基本功。

在和许多创业者交流的过程中,我发现很多问题都出在他们“不了解用户”这一点上。很多创业者在有了一个“很好”的想法后,到处找投资人、潜在合作伙伴、各路大神交流,可就是不去见用户。

03__导读:专栏是怎么设计的?需要哪些知识?

你好,我是庄振运。

在前面两讲中,我们看到了性能优化和容量效率提升的重要性,如果程序员在这方面的技能和知识有欠缺,只知道写代码,那么写出来的代码很可能效率低、性能差。在代码性能差的情况下,如果你再被老板或者同事威逼利诱去做性能优化,那么就成了赶鸭子上架的苦差事了,你只能感叹:“问君能有几多愁,恰似写完代码去调优”。

03__到底该怎么理解技术采用生命周期?

你好,我是郭蕾。在开始今天的课程之前,我想先问你一个问题,“作为媒体,我们都知道 InfoQ 应该关注新技术,那具体什么样的技术才是新技术呢?”

五年前的时候,我就曾经被这个问题给难住了。有一次偶然的机会,我听 InfoQ 创始人 Floyd 详细阐述了我们的内容价值观,其中,他提到了一个新的名词“技术采用生命周期”,听完之后我恍然大悟,原来技术发展的状态除了从“新”到“老”,居然还有一个高度抽象的模型,通过它,我就可以大致了解一个“新技术”的发展规律,真是太令人兴奋了。

03__颠覆传统流程定义,真正实现以流程创造价值

你好,我是蒋伟良博士。聚焦战略,简化管理,实现有效增长。欢迎你和我一起学习《流程型组织 15 讲》这门课。

今天是第 3 讲,我们来重新定义流程。之前我讲过了,我们要以客户为中心。世界级的大师哈默发现,连接客户的并不是组织,也并不是内部,而是流程。所以我们需要重新定义流程。流程其实就在我们身边,我们美团下一个外卖订单就是一个流程,我们看到骑手在按时到达按时送货;我们坐飞机和坐高铁的体验是不一样的,我们发现坐飞机的流程比较复杂,体验性就很差,并且飞机经常不准点,而高铁相对好很多,所以我们会朴素地理解,流程就在我们身边,这是完全正确的。

03__动态容器:如何生动地记录对话?

你好,我是高伟。欢迎你继续跟我学习视觉笔记。

我们在前面已经学习了点、线、面的内容,也学习了人物的一些画法和用法,现在开始,我们要通过工作中的场景来学习视觉化笔记中常见容器的画法。容器与场景息息相关,所以,它可以快速地被运用到视觉笔记中。

03__梵高的画到底好在哪里?

你好!我是罗桂霞。

假设我们今天有一场投票活动,主题是“我认识的艺术家”,除了达芬奇、米开朗基罗和毕加索之外,你觉得谁的票数会是最多的呢?我想,你应该猜到了,就是梵高

03__分布式互斥:有你没我,有我没你

你好!我是聂鹏程。今天,我来继续带你打卡分布式核心技术。

通过前面的两篇文章,相信你已经对此次的分布式世界之行有了一个初步了解,想必对此次旅行也是充满期待。今天,我就带你正式踏上第一站:分布式协调与同步。在这一站,我将带你学习如何让分布在不同计算机上的程序具有“团队精神”,换句话说就是如何让程序通过协作共同去达成一个业务目标。

03__分组与引用:如何用正则实现更复杂的查找和替换操作?

你好,我是伟忠。今天我打算和你聊聊分组与引用。那什么场合下会用到分组呢?

假设我们现在要去查找 15 位或 18 位数字。根据前面学习的知识,使用量词可以表示出现次数,使用管道符号可以表示多个选择,你应该很快就能写出\d{15}|\d{18}。但经过测试,你会发现,这个正则并不能很好地完成任务,因为 18 位数字也会匹配上前 15 位,具体如下图所示。

03__复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?

我们都知道,数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代码更省存储空间。所以,执行效率是算法一个非常重要的考量指标。那如何来衡量你编写的算法代码的执行效率呢?这里就要用到我们今天要讲的内容:时间、空间复杂度分析。

03__复杂而又重要的购物车系统,应该如何设计?

你好,我是李玥。

今天这节课我们来说一下购物车系统的存储该如何设计。

首先,我们来看购物车系统的主要功能是什么。就是在用户选购商品时,下单之前,暂存用户想要购买的商品。购物车对数据可靠性要求不高,性能也没有特别的要求,在整个电商系统中,看起来是相对比较容易设计和实现的一个子系统。

03__高性能IO模型:为什么单线程Redis能那么快?

你好,我是蒋德钧。

今天,我们来探讨一个很多人都很关心的问题:“为什么单线程的 Redis 能那么快?”

首先,我要和你厘清一个事实,我们通常说,Redis 是单线程,主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程。但 Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。

03__光圈与景深:拍照片可以不对焦?

你好,我是小麥。

今天这节课我会带你了解相机操作的第一个基本概念——光圈,让你知道光圈是什么,它是怎么影响我们的拍摄结果的,我们又该怎么掌握它,并由此展开到对“景深”这一概念的探讨。在学习完这节课以后,你会彻底搞清楚那些摄影师是怎么仅靠调节光圈就让眼前明亮、刺眼的画面变成柔和、昏暗的成片的,还有那些背景虚化的照片是怎么拍出来的。

03__哈希检索:如何根据用户ID快速查询用户信息?

你好,我是陈东。

在实际应用中,我们经常会面临需要根据键(Key)来查询数据的问题。比如说,给你一个用户 ID,要求你查出该用户的具体信息。这样的需求我们应该如何实现呢?你可能会想到,使用有序数组和二叉检索树都可以来实现。具体来说,我们可以将用户 ID 和用户信息作为一个整体的元素,然后以用户 ID 作为 Key 来排序,存入有序数组或者二叉检索树中,这样我们就能通过二分查找算法快速查询到用户信息了。

03__核心分析逻辑:所有的性能分析,靠这七步都能搞定

你好,我是高楼。

我之前看过一些性能分析方法论,比如 SEI 负载测试计划过程、RBI 方法论、性能下降曲线分析法等等,这些观点很多只是停留在概念和方法论的层面,并没有具体的落地细节,让人看了之后也不知道怎么进一步做下去。像这样的方法论,在我看来完全没有必要存在。

03__互斥锁(上):解决原子性问题

第一篇文章中我们提到,一个或者多个操作在 CPU 执行的过程中不被中断的特性,称为“原子性”。理解这个特性有助于你分析并发编程 Bug 出现的原因,例如利用它可以分析出 long 型变量在 32 位机器上读写可能出现的诡异 Bug,明明已经把变量成功写入内存,重新读出来却不是自己写入的。

03__汇编:编程语言的诞生

你好,我是七牛云许式伟。

在上一篇文章中,我们一起解剖了架构大厦的地基:冯·诺依曼体系。接下来,我们就开始沿着这座大厦攀登,一起来聊聊编程语言。

对于现代计算机来说,虽然 CPU 指令是一个很有限的指令集,但是 CPU 执行的指令序列(或者叫“程序”)并不是固定的,它依赖于保存在存储中的数据,由软件工程师(或者叫“程序员”)编写的软件决定。

03__架构思维:数字化转型如何落地?

你好!我是付晓岩。

前面两节课,我们学习了历史思维,弄清楚了数字时代的特征和要注意的发展趋势,同时,我们还学习了生态思维,找到了建立核心能力和生态关系的思路,那么,我们怎么把这些认知和思路落地呢?这就要用到架构思维了。可以说,架构思维是这门课里最核心的、起到方法论与实践连接作用的思维模式。

03__教练技术:怎么做复盘才能化解冲突?

你好,我是张鹏!

上一讲我介绍了 CLAP 模型的使用方法。但是在实际做复盘的时候,你可能会经常遇到一个问题,那就是不同部门的员工之间发生冲突。

其实,大部分的冲突都是心态失衡引发的情绪冲突,也就是说,出于某些原因在主观情感上盲目地相信或者刻意地回避一些事情,所以固执地坚持错误的判断。比如,因为被质疑挑战之后面子上挂不住,就上头了,激动地跟人抬杠;又比如因为害怕被追责惩罚,就拼命地甩锅。