22__NWR算法:如何修改读写模型以提升性能?

你好,我是陶辉。

前两讲我们介绍数据库的扩展时,写请求仍然在操作中心化的 Master 单点,这在很多业务场景下都是不可接受的。这一讲我将介绍对于无单点的去中心化系统非常有用的 NWR 算法,它可以灵活地平衡一致性与性能。

22__panic函数、recover函数以及defer语句(下)

你好,我是郝林,今天我们继续来聊聊 panic 函数、recover 函数以及 defer 语句的内容。

我在前一篇文章提到过这样一个说法,panic 之中可以包含一个值,用于简要解释引发此 panic 的原因。

22__ReplicaFetcherThread:Follower拉取Leader消息是如何实现的?

你好,我是胡夕。今天,我们继续学习 Follower 是如何拉取 Leader 消息的。

要弄明白这个问题,在学习源码的时候,我们需要从父类 AbstractFetcherThread 开始学起,因为这是理解子类 ReplicaFetcherThread 的基础。上节课,我们已经学习了 AbstractFetcherThread 的定义,以及 processPartitionData、truncate、buildFetch 这三个方法的作用。现在,你应该掌握了拉取线程源码的处理逻辑以及支撑这些逻辑实现的代码结构。

22__Spring_Test_常见错误

你好,我是傅健。

前面我们介绍了许多 Spring 常用知识点上的常见应用错误。当然或许这些所谓的常用,你仍然没有使用,例如对于 Spring Data 的使用,有的项目确实用不到。那么这一讲,我们聊聊 Spring Test,相信你肯定绕不开对它的使用,除非你不使用 Spring 来开发程序,或者你使用了 Spring 但是你不写测试。但话说回来,后者的情况就算你想如此,你的老板也不会同意吧。

22__包体积优化(上):如何减少安装包大小?

曾经在 15 年的时候,我在 WeMobileDev 公众号就写过一篇文章《Android 安装包相关知识汇总》,也开源了一个不少同学都使用过的资源混淆工具AndResGuard

现在再看看这篇 4 年前的文章,就像看到了 4 年前的自己,感触颇多啊。几年过去了,网上随意一搜都有大量安装包优化的文章,那还有哪些“高深”的珍藏秘笈值得分享呢?

22__不要做微观的管理者

今天我和你聊一聊管理的粒度问题,在进入正题之前,我先来说说自己的故事。

第一个故事发生在我离开 Square 之前不久。那时候正值 Square 准备 IPO 的前期,公司频繁重组,很多人的顶头上司在短时间内可能更换了好几个,我也不例外,最后的那个老板,我和他的共事时间一共也就一两个月。他的主要背景是前端,而我一直做服务器端和系统架构相关的工作。成为我的老板的时候,他刚刚转为管理者。

22__产品设计之道:DevOps产品设计的五个层次

你好,我是石雪峰。

在上一讲中,我们聊到了企业 DevOps 平台建设的三个阶段。那么,一个平台产品到底做到什么样,才算是好的呢?不知道你有没有想过这个问题,反正做产品的这些年来,我一直都在思考这个事儿。直到我听到了梁宁的专栏里面讲到的用户体验的五层要素,才发现,无论什么产品,其实都是为了解决一群特定的人在特定场景的特定问题

22__处理数据类型变化和错误:optional、variant、expected和Herbception

你好,我是吴咏炜。

我们之前已经讨论了异常是推荐的 C++ 错误处理方式。不过,C++ 里有另外一些结构也很适合进行错误处理,今天我们就来讨论一下。

optional

在面向对象(引用语义)的语言里,我们有时候会使用空值 null 表示没有找到需要的对象。也有人推荐使用一个特殊的空对象,来避免空值带来的一些问题 [1]。可不管是空值,还是空对象,对于一个返回普通对象(值语义)的 C++ 函数都是不适用的——空值和空对象只能用在返回引用 / 指针的场合,一般情况下需要堆内存分配,在 C++ 里会引致额外的开销。