08__管程:并发编程的万能钥匙
并发编程这个技术领域已经发展了半个世纪了,相关的理论和技术纷繁复杂。那有没有一种核心技术可以很方便地解决我们的并发问题呢?这个问题如果让我选择,我一定会选择管程技术。Java 语言在 1.5 之前,提供的唯一的并发原语就是管程,而且 1.5 之后提供的 SDK 并发包,也是以管程技术为基础的。除此之外,C/C++、C# 等高级语言也都支持管程。
并发编程这个技术领域已经发展了半个世纪了,相关的理论和技术纷繁复杂。那有没有一种核心技术可以很方便地解决我们的并发问题呢?这个问题如果让我选择,我一定会选择管程技术。Java 语言在 1.5 之前,提供的唯一的并发原语就是管程,而且 1.5 之后提供的 SDK 并发包,也是以管程技术为基础的。除此之外,C/C++、C# 等高级语言也都支持管程。
前面第一模块的七篇文章,都是围绕着“why”的问题展开,探讨你是否要做管理,以及如何面对刚刚做管理时的茫然、疑虑与纠结。如果你已经理顺了内心的力量,希望在管理这条路上大干一场,那么接下来,你还会遇到一个关于“what”的问题:管理到底都要做哪些事呢?
你好,我是乔新亮。
上一讲,我们聊了聊管理者最重要的三个任务之一:组织调整到位,也顺便讲解了下「IT 能力建设的增长飞轮」。因为怕有些同学忘了,所以我们再看一遍这张飞轮图:
你好,我是王磊,你也可以叫我 Ivan。
这一讲是我们课程的答疑篇,我会集中讨论前 7 讲布置的思考题,以及留言区中大家关注的一些内容。
在第 1 讲中,我们通过层层递进式的分析,给这门课程要讨论的“分布式数据库”下了一个定义:分布式数据库是服务于写多读少、低延时、海量并发 OLTP 场景的,具有海量数据存储能力和高可靠性的关系型数据库。在“内部构成”这一节,我们还着重讨论了几种不属于分布式数据库的解决方案。
你好,我是任杰。这一讲我想和你聊一聊怎么保证计算结果的正确性。
在前面几节课里我们学习了如何保证数据输入的正确性,如何用事件溯源的架构来保证数据计算的正确性。但这只能保证一个组件是正确的。系统里还有很多其他组件,我们也需要保证它们的交互也是正确的,这就需要一个系统性的指导方案。所以,这节课我们一起来看看如何保证最终计算结果正确性。
经过上一讲的学习,你是否已经在自己的电脑上搭建好了“最小化”的 HTTP 实验环境呢?
我相信你的答案一定是“Yes”,那么,让我们立刻开始“螺蛳壳里做道场”,在这个实验环境里看一下 HTTP 协议工作的全过程。
你好,我是郭忆。
在上一节课中,我们讨论了如何保障数据中台的数据质量,让数据做到“准”。我认为,除了“快”和“准”,数据中台还离不开一个“省”字。尤其是随着数据规模越来越大,成本越来越高,如果不能合理控制成本,还没等你挖掘出数据的应用价值,企业利润就已经被消耗完了。
你好,我是庄振运。
今天这一讲是”数理基础“这一部分的最后一讲,我在这一讲会给你总结一组性能相关的常用的数字。这些数字在做性能和设计方面的工作时经常用到。它们就像九九乘法表一样,我希望你能熟记在心。
你好,我是石雪峰。
提到敏捷开发方法,你可能会情不自禁地联想到双周迭代、每日站会、需求拆分等。的确,作为一种快速灵活、拥抱变化的研发模式,敏捷的价值已经得到了行业的普遍认可。但是,即便敏捷宣言已经发表了将近 20 个年头,很多公司依然挣扎在敏捷转型的道路上,各种转型失败的案例比比皆是。
你好,我是朱晓峰。今天,我来和你聊一聊聚合函数。
MySQL 中有 5 种聚合函数较为常用,分别是求和函数 SUM()、求平均函数 AVG()、最大值函数 MAX()、最小值函数 MIN() 和计数函数 COUNT()。接下来,我就结合超市项目的真实需求,来带你掌握聚合函数的用法,帮你实现高效的分组统计。