之前我们讨论了C++中将结构体放置在std::vector
容器内的操作风险。这里我们来进一步讨论如何处理在容器中存储的结构体数据。
- Categories · 编程研究-
2019
有一组长度不固定的参数需要传输,且参数形式为结构体,那么一个比较简单的方法是将这些参数作为一个std::vector
。例如
1 | void f(std::vector<struct ExampleStruct> data); |
由于 C++是采用值传递的方式,每次对std::vector
进行元素的存取操作时,都会对涉及的结构体进行复制。如果结构体的数量比较多,或者结构体的体积比加大,那么这种方式对于计算和内存资源的浪费就比较大了。
2018
在上一篇文章中我们初步讨论的 Dependency Injection 的一些理念。在这篇文章中,我翻译了 awilix 模块的作者 Jeff Hansen 的文章:Dependency Injection in Node.js - 2016 edition。原文包含三个部分,我在这里直接整理成为一篇完整的文章。
Dependency Injection 这个概念是我之前在实习的时候做 Java 开发的时候接触的。Dependency Injection 可以大大降低模块之间的耦合度,提高系统的可扩展性和鲁棒性,不过这个概念对于新人来说理解起来还是存在比较大的障碍。由于当时实习的时间比较短,对于这个概念我并没有吃透。这次学习 Node.js 的时候,又在 awilix 这个库里面遇到了这个概念。以此为契机就来好好学习一些 Dependency Injection 和其后的设计逻辑与方法。
下面的内容翻译自:Dependency Injection in Node.js。这篇文章浅显地介绍了 Dependency Injection 的基本理念。选择这篇文章是因为我在阅读 awilix 模块作者关于 Dependency Injection 的系列文章中时,作者在开篇提议阅读此文。
不过这篇文章毕竟是 2015 年的文章,在 js 的一些语法和模块细节上和今时今日的有些不同,但是并不妨碍我们对于其核心理念的理解。
网络数据包如果一次发送太多,就会造成网络拥堵;如果发送太少,就浪费了带宽,延长了通信时间。TCP 协议有一个拥堵窗口机制,负责动态调整每次发送数据包的数量。本文通俗地解释了这种算法的细节。