计算机(网络)的文章分为了三部分:
此为第二部分。
计算机(网络)的文章分为了三部分:
此为第二部分。
C++ 55, Matlab 26, python 23, Excel 20, VBA 14, 数据库 12, 办公自动化 10, folly 9, 编程和算法效率 9, Linux 8
/tmp
文件夹就会特别乱。动则成千上万的文件,连删除清空都很困难,因为rm /tmp/* -rf
导致命令行过长。
=
。如果全文对齐,可以用ggvG=
(ggvG
可以选中全文)。但对于某些复杂的代码(比如html
),其对齐可能会乱。
rsync
命令同步文件夹时:
request.post
提交json
数据:
s2
就是一个普通的pandas.DataFrame
,可以继续处理:
axios.get
:
json
库处理 JSON 很方便,但它只支持标准的 JSON 格式。rapidjson 库来自于 json 的 C++库,速度比json
库快五倍,而且支持一些非标准的 JSON 字符串。
<leader>c
快速切换注释状态(不是注释就改成注释,已经是注释则取消注释):
[first, last)
(first
、last
都是iterator
,可简单理解为位置指针),以及指定值v
,标准库直接提供二分查找的函数std::lower_bound
和std::upper_bould
:
std::getline
或者简单的std::cin >>
获取用户输入,有一个问题是,它会阻塞掉整个程序,用户必须有输入后才能继续执行。如果这个输入是单独的线程,它还会阻止整个程序的退出。
std::vector
有两个大小:
path
是一个已存在的文件夹),但处理结果会有所差异。
unicode
字符串,以下将不再重复强调。
threading.Thread
:
abc
定义了类似于 C++的纯虚函数的功能:
popen
函数可以获取比std::system
函数更详细的程序输出。只是正常调用 popen 只能获取 stdout 的输出,而 stderr 的输出被忽略。
imp.load_source
在动态载入 python 模块时非常有用,但需要注意其特性。
ldd bin/auto
应该是下面的结果:
fmt::format
格式化库,由于效率高,功能强大,相关的 API 已经进入C++20
,但其文档和 API 细节无法恭维。
popen
是否正常执行:
Python
的命令行包argparse
内置了-h, --help
命令。但它没有分组,和其它的命令混在一起,并且显示在最前面。我更喜欢把它放在单独的「LOG 和帮助」分组:
sys.path
里的位置,直到找到模块为止。下面命令可以查看当前的搜索路径:
boost
的命令行库program_options
解析命令行,在解释布尔命令行时使用下面代码:
boost
和folly
库都采用了这种方式:
std::shared_ptr
有三个缺陷:
std::shared_ptr
使用了和数据无关的引用计数,这带来两个问题:
timespec_get
,可参考https://zh.cppreference.com/w/c/chrono/timespec_get。
folly::MicroSpinLock
,而folly:PicoSpinLock
则只需要一个位!实现代码在https://github.com/facebook/folly/blob/master/folly/synchronization/PicoSpinLock.h。
C++
中运行系统命令,可以直接使用std::system
函数:
folly::MicroSpinLock
,代码文件地址:https://github.com/facebook/folly/blob/master/folly/synchronization/MicroSpinLock.h。
folly::small_vector
,代码文件地址:https://github.com/facebook/folly/blob/master/folly/small_vector.h。
std::thread
是 C++ 11 新引入的标准线程库。在同样是 C++ 11 新引入的 lambda 函数的辅助下,std::thread
用起来特别方便:
std::string
还是folly:fbstring
都做了SSO
( small string optimization )。而folly::FixedString
是一个很有意思的实现,它可以把任意长度的字符串都放在堆上。代码可见https://github.com/facebook/folly/blob/master/folly/FixedString.h。
folly::MicroLock
,代码文件地址:https://github.com/facebook/folly/blob/master/folly/MicroLock.h。
std::tuple
的原理并不复杂,但有些细节非常有意思。其中有一个是至少在gnu C++ std
的实现中,std::tuple
是倒序存储的:
std::unique_ptr
, C++的程序就不应该出现普通指针了。所有普通指针都可以用std::unique_ptr
代替,避免手动删除对象。
folly::fbstring
是一个完全兼容std::string
的类,可以做到无缝替换,而且性能更高。其代码参见https://github.com/facebook/folly/blob/master/folly/FBString.h。
folly::dynamic
提供类似于C++
的动态类型。和std::any
可以容纳任意类型不一样,folly::dynamic
只支持保存以下几种类型:
javascript
以及Python 3.6+
中,所有的dict
都保留了插入顺序。但在 C++中,无论是std::map
还是std::unordered_map
,都没有保留插入顺序。当遍历时,std::map
得到的是一个根据键值排序的有序序列,而std::unordered_map
则基本是乱序。
javascript
以及Python 3.6+
中,所有的dict
都保留了插入顺序。但在 C++中,无论是std::map
还是std::unordered_map
,都没有保留插入顺序。当遍历时,std::map
得到的是一个根据键值排序的有序序列,而std::unordered_map
则基本是乱序。
folly::sorted_vector_set
和folly::sorted_vector_map
,是std::map
和std::set
在小数据集上的优化版。代码见:
https://github.com/facebook/folly/blob/master/folly/sorted_vector_types.h。
md5sum
检验文件内容时,原始文件和目标文件的内容并不一样。
armadillo
是一个线性代数 C++库,封装了blas
和lapack
,提供更直观的接口。
git
经常出现类似于HEAD detached at origin/development
的错误提示。这是因为当前的 HEAD 没有位于任何一个分支上的缘故。
pypyodbc
会爆下面错误:
C++11
引入的一种初始化方法。
protected
或public
。
parfor
适用于
startup.m
。在这个脚本里可以自动修改当前目录,修改显示方式等等。比如
which
函数可用来获取 Matlab 函数的全路径(包含路径和文件名)。
VBA
在出错时会停留在出错之处。Excel/VBA 提供On Error
关键词来处理程序运行过程中的错误,具体有下面两种用法:
ipconfig /all
来举例,这条命令行语句用来获得机器的网路配置信息,包括 IP、网关等信息。它可以替换成任何一个 bash 脚本和命令行代码。