40__服务端的业务架构建议

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

相比桌面程序而言,服务端程序依赖的基础软件不只是操作系统和编程语言,还多了两类:

  • 负载均衡(Load Balance);
  • 数据库或其他形式的存储(DB/Storage)。

40__故障管理:故障应急和故障复盘

上周我们分享了故障管理中,应该如何对待故障,怎样做好故障定级和定责方面的管理工作。今天我就和你分享当故障真正发生后,我们在故障通报和故障复盘方面的实践经验。

40__衡量Flutter_App线上质量,我们需要关注这三个指标

你好,我是陈航。

在上一篇文章中,我与你分享了如何捕获 Flutter 应用的未处理异常。所谓异常,指的是 Dart 代码在运行时意外发生的错误事件。对于单一异常来说,我们可以使用 try-catch,或是 catchError 去处理;而如果我们想对异常进行集中的拦截治理,则需要使用 Zone,并结合 FlutterError 进行统一管理。异常一旦被抓取,我们就可以利用第三方数据上报服务(比如 Bugly),上报其上下文信息了。

40__缓存与风暴并存,谁说缓存风暴不可避免?

你好,我是温铭。

在前面缓存的那节课中,我为你介绍了,共享字典和 lru 缓存在高性能方面的一些优化技巧。其实,我们还遗留了一个非常重要的问题,也值得我们今天用单独的一节课来介绍,那就是“缓存风暴”。

40__结构学习:基于约束与基于评分

看完了参数学习,我们再来看看结构学习。

结构学习(structure learning)的任务是找到与数据匹配度最高的网络结构,需要同时学习未知图模型的结构和参数。这也很容易理解:模型的结构都不知道,参数自然也是不知道的,所以需要一并来学习。结构学习的任务是根据训练数据集找到结构最恰当的模型,这无疑比参数学习要复杂得多,也有更多的不确定性。

40__理解内存(上):虚拟内存和内存保护是什么?

我们在专栏一开始说过,计算机有五大组成部分,分别是:运算器、控制器、存储器、输入设备和输出设备。如果说计算机最重要的组件,是承担了运算器和控制器作用的 CPU,那内存就是我们第二重要的组件了。内存是五大组成部分里面的存储器,我们的指令和数据,都需要先加载到内存里面,才会被 CPU 拿去执行。

40__全栈衍化:让全栈意味着更多

你好,我是四火。

专栏更到这里,我们已经把基于 Web 全栈的这棵大树,主要的枝枝丫丫大致都覆盖到了,可是,技术上我们总是希望“更进一步”。这棵大树所在的森林中,还有着广阔的领域等待着探索。当然,我想明确的是,我知道很多程序员还是会继续坚持这条路,因为全栈工程师本身是一个非常理想的职业发展方向,毕竟这个角色,大厂招,创业小团队更是需要;但同时我也知道,也有很多走在 Web 全栈路上的工程师,有着更多的想法,想尝试不一样的“可能性”,而这,就是我想说的个人的“全栈衍化”了。

40__信息流设计(二):通用信息流系统的拉模式要如何做?

你好,我是唐扬。

在前一节课中,我带你了解了如何用推模式来实现信息流系统,从中你应该了解到了推模式存在的问题,比如它在面对需要支撑很大粉丝数量的场景时,会出现消息推送延迟、存储成本高、方案可扩展性差等问题。虽然我们也会有一些应对的措施,比如说选择插入性能更高的数据库存储引擎来提升数据写入速度,降低数据推送延迟;定期删除冷数据以减小存储成本等等,但是由于微博大 V 用户粉丝量巨大,如果我们使用推模式实现信息流系统,那么只能缓解这些用户的微博推送延迟问题,没有办法彻底解决。

40__运用学过的设计原则和思想完善之前讲的性能计数器项目(下)

上一节课中,我们针对版本 1 存在的问题(特别是 Aggregator 类、ConsoleReporter 和 EmailReporter 类)进行了重构优化。经过重构之后,代码结构更加清晰、合理、有逻辑性。不过,在细节方面还是存在一些问题,比如 ConsoleReporter、EmailReporter 类仍然存在代码重复、可测试性差的问题。今天,我们就在版本 3 中持续重构这部分代码。