21__为什么我只改一行的语句,锁这么多?

在上一篇文章中,我和你介绍了间隙锁和 next-key lock 的概念,但是并没有说明加锁规则。间隙锁的概念理解起来确实有点儿难,尤其在配合上行锁以后,很容易在判断是否会出现锁等待的问题上犯错。

21__系统架构:每秒1万次请求的系统要做服务化拆分吗?

你好,我是唐扬。

通过前面几个篇章的内容,你已经从数据库、缓存和消息队列的角度对自己的垂直电商系统在性能、可用性和扩展性上做了优化。

现在,你的系统运行稳定,好评不断,每天高峰期的流量,已经达到了 10000/s 请求,DAU 也涨到了几十万。CEO 非常高兴,打算继续完善产品功能,以便进行新一轮的运营推广,争取在下个双十一可以将 DAU 冲击过百万。这时,你开始考虑,怎么通过技术上的优化改造,来支撑更高的并发流量,比如支撑过百万的 DAU。

21__性能CI:性能测试也可以集成到Pipeline中吗?

你好,我是尉刚强。这节课,我们来讲讲如何利用 Pipeline 来实现更好的性能测试效果。

如果你用过开源数据库 MongoDB,那你可能会遇到或者是听说过一个比较典型的性能问题,也就是 N+1 性能问题

21__移动测试神器:带你玩转Appium

在上一篇文章中,我介绍了 Web App、Native App 和 Hybrid App 三种不同类型的移动应用以及对应的测试设计方法,也介绍了移动应用所特有的专项测试知识。

今天,我就以移动应用的自动化测试为主题,介绍目前主流的移动应用自动化测试框架 Appium。Appium 是一个开源的自动化测试框架,支持 iOS 和 Android 上 Web App、Native App 和 Hybrid App 的自动化测试。

21__原子类:无锁工具类的典范

前面我们多次提到一个累加器的例子,示例代码如下。在这个例子中,add10K() 这个方法不是线程安全的,问题就出在变量 count 的可见性和 count+=1 的原子性上。可见性问题可以用 volatile 来解决,而原子性问题我们前面一直都是采用的互斥锁方案。

21__增长黑客的阴暗面

极客时间的专栏读者你好,我是邱岳,今天是我们增长部分的最后一篇内容,我们换个角度,一起来聊聊增长黑客的阴暗面。

1. 对“增长黑客”保持克制

产品的增长其实并不是被发明的流程,它是一直存在的。人们通过各种方式发现产品和服务(获客),被吸引并动手尝试(激活),成为产品的用户不时地来使用它(留存),为它付费(变现),并推荐给更多的用户(传播)。

21__知识串讲(上):带你开发一个书店应用

你好,我是 Chrono。

到今天为止,课程里的 C++ 知识就全部讲完了。前面我们总共学习了四大模块,我再带你做一个简略的回顾。

在“概论”单元,我带你从宏观的层面上重新认识了 C++,讲了它的四个生命周期和五个编程范式,分别介绍了在编码阶段、预处理阶段、编译阶段,C++ 能够做哪些事情,接着又重点说了在 C++ 里,运用哪些特性才能更好地实践面向对象编程。

21_16|循环与文件目录管理如何实现文件的批量重命名

16|循环与文件目录管理:如何实现文件的批量重命名?

你好,我是尹会生。

作为产品经理 / 运营,你经常需要做竞品调研,来跟自家产品对比优劣。这时,你就需要下载大量与该类产品相关的图片,并进行整理归类。而归类操作中,必须要走的一步就是对这些图片进行重命名。