第118讲__吴铭:成本评估是技术leader的关键素质

在互联网公司中,技术与业务的关系一直是焦点,我们对于技术与业务之间的矛盾也早已司空见惯,相信大家在工作中都看到过类似的场景:
业务问,“对手产品的某功能我们什么时候能上线?”
技术回答,“目前不行,这个版本我们需要做重构。”
业务问,“性能慢一点没关系,明天能不能发版?”
技术回答,“不行,我们要多花两三天时间将性能提高百分之百。”
业务抱怨,“我和别的公司谈妥了合作营销,技术却总是不给力。”
技术也抱怨道,“你们一个月提一百个需求,没几个有用的。”

第119讲__汤力嘉:CTO如何进行产品决策(一)

你好,我是一下科技 CTO 汤力嘉,我经常开玩笑说,要做技术里最懂产品,产品里最懂技术的,今天就想跟大家分享一些我在产品决策上的理念和心得。

决策方法论

做一款产品前,首先需要做产品决策,那如何做好产品决策呢?引用乔布斯的一段话,“一个问题看上去很简单,是因为你并没有理解其复杂性;当你把问题搞清楚之后,又会发现其实很复杂,然后拿出了一套复杂的方案来,实际上你只实现了一半,大多数人也都会到此为止;但真正伟大的人会继续前进,找到问题的关键和内在的深层次原因,再拿出优雅的、堪称完美的解决方案”。

第11讲__Java提供了哪些IO方式?_NIO如何实现多路复用?

IO 一直是软件开发中的核心部分之一,伴随着海量数据增长和分布式系统的发展,IO 扩展能力愈发重要。幸运的是,Java 平台 IO 机制经过不断完善,虽然在某些方面仍有不足,但已经在实践中证明了其构建高扩展性应用的能力。

第11讲__TCP协议(上):因性恶而复杂,先恶后善反轻松

上一节,我们讲的 UDP,基本上包括了传输层所必须的端口字段。它就像我们小时候一样简单,相信“网之初,性本善,不丢包,不乱序”。

后来呢,我们都慢慢长大,了解了社会的残酷,变得复杂而成熟,就像 TCP 协议一样。它之所以这么复杂,那是因为它秉承的是“性恶论”。它天然认为网络环境是恶劣的,丢包、乱序、重传,拥塞都是常有的事情,一言不合就可能送达不了,因而要从算法层面来保证可靠性。

第11讲__最合适的技术才是最有价值的技术

很多技术人在最开始工作的时候,都会有一种误解:做技术主要的工作是要和计算机打交道,而不是和人打交道。只要技术足够牛,不用考虑太多其他的事情。但是随着时间的推移,大部分人的看法也有了很大的改变。

第11讲_如何载入“飞机”和“敌人”?

上周,我向你解释了如何载入背景图片,以及如何使用坐标值的变换来移动背景图片。今天,我们要载入主角“飞机”和一些“敌人”。

导入随机函数

我们选择 Python 做为开发语言。在开始之前,需要用到一个随机函数,这个随机函数会在之后的代码中用到,具体用作什么,我会在后面揭晓。

第11讲:产品、测试与开发如何协作?

在敏捷宣言核心的四句话中,第一句就是“个体与协作胜于流程和工具”,在敏捷中,强调自我管理,团队对质量负责、对测试负责,这些也离不开协作。Lisa 和 Janet 在 2017 年给出的“敏捷测试定义”中认为:敏捷测试就是从开始到交付的协作测试实践,并支持高质量产品的频繁交付……。如果高度概括的话,敏捷测试就是协作测试实践。这些都说明,协作在敏捷测试中是非常重要的。

第11讲:如何使用Redi快速实现分布式锁?

本课时我们来讨论如何使用 Redis 快速实现分布式锁。

分布式锁有很多种解决方案,前面简单介绍过,Redis 可以通过 set key 方式来实现分布式锁,但实际情况要更加复杂,比如如何确保临界资源的串行执行,如何及时释放,都是需要额外考虑的。

第11讲:为什么说JavaScript不适合大型项目?

随着前端快速发展,JavaScript 语言的设计缺陷在大型项目中逐渐显露。

第 10 课时提到的模块问题就是其中之一,但庆幸的是,ES6 模块在原生层面解决了这个问题,不同环境下的兼容性问题也可以由工具转化代码来解决。