29__沟通经常鸡同鸭讲,说不到一块怎么办?

作为一个团队的管理者,你不可避免地要把很多的时间和精力花在与各种各样的合作者沟通上。而且,随着团队规模的不断扩大,以及级别的不断提高,对沟通能力的要求也会“水涨船高”。

29__混合开发,该用何种方案管理导航栈?

你好,我是陈航。

为了把 Flutter 引入到原生工程,我们需要把 Flutter 工程改造为原生工程的一个组件依赖,并以组件化的方式管理不同平台的 Flutter 构建产物,即 Android 平台使用 aar、iOS 平台使用 pod 进行依赖管理。这样,我们就可以在 Android 工程中通过 FlutterView,iOS 工程中通过 FlutterViewController,为 Flutter 搭建应用入口,实现 Flutter 与原生的混合开发方式。

29__基准测试框架JMH(下)

今天我们来继续学习基准测试框架 JMH。

@Fork 和 @BenchmarkMode

在上一篇的末尾,我们已经运行过由 JMH 项目编译生成的 jar 包了。下面是它的输出结果:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94

$ java -jar target/benchmarks.jar

...

# JMH version: 1.21

# VM version: JDK 10.0.2, Java HotSpot(TM) 64-Bit Server VM, 10.0.2+13

# VM invoker: /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home/bin/java

# VM options: <none>

# Warmup: 5 iterations, 10 s each

# Measurement: 5 iterations, 10 s each

# Timeout: 10 min per iteration

# Threads: 1 thread, will synchronize iterations

# Benchmark mode: Throughput, ops/time

# Benchmark: org.sample.MyBenchmark.testMethod

 # Run progress: 0,00% complete, ETA 00:08:20

# Fork: 1 of 5

# Warmup Iteration   1: 1023500,647 ops/s

# Warmup Iteration   2: 1030767,909 ops/s

# Warmup Iteration   3: 1018212,559 ops/s

# Warmup Iteration   4: 1002045,519 ops/s

# Warmup Iteration   5: 1004210,056 ops/s

Iteration   1: 1010251,342 ops/s

Iteration   2: 1005717,344 ops/s

Iteration   3: 1004751,523 ops/s

Iteration   4: 1003034,640 ops/s

Iteration   5: 997003,830 ops/s

 # Run progress: 20,00% complete, ETA 00:06:41

# Fork: 2 of 5

...

 # Run progress: 80,00% complete, ETA 00:01:40

# Fork: 5 of 5

# Warmup Iteration   1: 988321,959 ops/s

# Warmup Iteration   2: 999486,531 ops/s

# Warmup Iteration   3: 1004856,886 ops/s

# Warmup Iteration   4: 1004810,860 ops/s

# Warmup Iteration   5: 1002332,077 ops/s

Iteration   1: 1011871,670 ops/s

Iteration   2: 1002653,844 ops/s

Iteration   3: 1003568,030 ops/s

Iteration   4: 1002724,752 ops/s

Iteration   5: 1001507,408 ops/s

  Result "org.sample.MyBenchmark.testMethod":

  1004801,393 ±(99.9%) 4055,462 ops/s [Average]

  (min, avg, max) = (992193,459, 1004801,393, 1014504,226), stdev = 5413,926

  CI (99.9%): [1000745,931, 1008856,856] (assumes normal distribution)

  # Run complete. Total time: 00:08:22

 ...

 Benchmark                Mode  Cnt        Score      Error  Units

MyBenchmark.testMethod  thrpt   25  1004801,393 ± 4055,462  ops/s

在上面这段输出中,我们暂且忽略最开始的 Warning 以及打印出来的配置信息,直接看接下来貌似重复的五段输出。

29__加班:加班逃不过,如何用正确姿势加班?

你好,我是臧萌。咱们程序员,尤其是互联网行业的程序员,都基本逃不过加班这件事。加班的原因,我总结了三个:任务太多,有紧急的事情以及强制加班。今天我就根据不同的加班原因,来仔细和你聊聊加班这档子事儿。

29__渐入佳境:使用epoll和多线程模型

你好,我是盛延敏,这里是网络编程实战第 29 讲,欢迎回来。

在前面的第 27 讲和第 28 讲中,我介绍了基于 poll 事件分发的 reactor 反应堆模式,以及主从反应堆模式。我们知道,和 poll 相比,Linux 提供的 epoll 是一种更为高效的事件分发机制。在这一讲里,我们将切换到 epoll 实现的主从反应堆模式,并且分析一下为什么 epoll 的性能会强于 poll 等传统的事件分发机制。

29__考官面对面:面试经验谈之校招与社招

你好,我是曲显平,目前是百度智能运维负责人。2009 年我通过校招加入百度,因为工作关系,自 2011 年便开始参与各种类型的面试,可以说积累了丰富的面试经验。

29__量体裁衣方得最优解:聊聊页面静态化架构和二级CDN建设

上期文章中我们介绍了 CDN 和云存储的实践,以及云生态的崛起之路,今天,我们继续聊一聊 CDN。

我们通常意义上讲的 CDN,更多的是针对静态资源类的内容分发网络,最典型的就是电商的各类图片,还有 JS 和 CSS 这样的样式文件。通过 CDN 能够让用户就近访问,提升用户体验。

29__聊聊性能测试的基本方法与应用领域

你好,我是茹炳晟。今天我和你分享的主题是:聊聊性能测试的基本方法与应用领域。

在上一次分享《带你一起解读不同视角的软件性能与性能指标》这个主题时,我介绍了衡量软件性能的三个最主要的指标:并发用户数、响应时间和系统吞吐量,和你分享了这个指标的内涵和外延。

所以,今天我会先继续上次的话题,和你分享并发用户数、响应时间和系统吞吐量这三个指标之间的关系和约束;然后,我会再和你分享性能测试七种常用方法,以及四大应用领域。

29__流计算与消息(一):通过Flink理解流计算的原理

你好,我是李玥。

在上节课中,我简单地介绍了消息队列和流计算的相关性。在生产中,消息队列和流计算往往是相互配合,一起来使用的。而流计算也是后端程序员技术栈中非常重要的一项技术。在接下来的两节课中,我们一起通过两个例子来实际演练一下,如何使用消息队列配合流计算框架实现一些常用的流计算任务。