关于乱序 c++程序中,没有依赖关系的语句的执行顺序是无法预测的。 乱序的原因 编译器优化。编译器优化假设程序是单线程环境时,如果编译器出于某种原因会对程序执行顺序并且不会改变其结果,此时是可以乱序执行的。编译器一般不会将函数之后的指令移到函数前面,因为编译器一般不知道函数体内是否含有memory barrier 处理器优化。处理器允许指令乱序,这样避免指令等待资源而暂时hang住,处于闲置状态。eg. cache miss。如果当前指令cache miss,下一条命中,则可能会乱序执行。 存储系统。在每个cpu核中都存在一个store…

右值 右值定义 右值与左值其实并没有详细官方的定义,官方的其实是一个类似映射表(这个是左值,这个是右值)。但通常来说,下面这个图能覆盖大多数情况。 纯右值(pure right value) 对于大多数临时变量皆为右值。这里的临时变量是指,不能被程序员读写,不存在于内存,其可能只会在寄存器中存在数秒,或者直接被优化掉的变量。 literal (不含string literal): 42 true nullptr 返回值不是引用类型的函数…

cnn全称卷积神经网络(Convolutional Neural Networks),常用于图像分类,语音,机器翻译等。其中最为常见的还是图像分类。 LeNet 总结 各层主要作用 卷积层:提取特征 池化层:降低计算量 全连接:联系各个区域,在分类中结合softmax起到分类器的作用 AlexNet 2012 主要工作与改进点 引入ReLU激活函数: ReLU的全称是修正线性单元(Rectified Linear…

工作以后单例确实经常用到,复习的时候再次翻开偶然翻到这个 代码来自陈硕的《Linux多线程服务器编程》, 其核心就是用了pthread_once template<typename T> class Singleton: boost::noncopyable { public: static T& instance() { pthread_once(&ponce_, &…

前言 python的logging是python内置打印模块,近期因为需要解决框架里的日志耗时长的问题,所以拜读了一下源码,其基础功能的实现源码并不长,截至今日11.15日,python3.8的logging/init.py 大概有4000+行,再算上一些内置方便的handler与config的话,大概会有6000行,总体来说并不是很多。 basicConfig basicConfig是快速且简单配置 root logger 的函数,在一个进程中,默认情况下,这个函数它只会生效一次。因为它有如下判断…