为什么日志系统普遍用标准错误输出stderr?而不是标准输出stdcout? 因为stderr是不带缓冲的,每个输出都会立即flush。而stdout是行缓冲的,要等到缓冲满了才flush,或者手动调fflush。前者更符合作为日志的需要,不然你程序执行过程中core了,缓冲里的遗言可能就丢了,而丢掉的往往是最接近出问题的地方的。参考:APUE第5.4节 https://www.zhihu.com/question/67629357...
【C++学习笔记】03-图说C++对象模型:对象内存布局详解 0.前言文章较长,而且内容相对来说比较枯燥,希望对C++对象的内存布局、虚表指针、虚基类指针等有深入了解的朋友可以慢慢看。本文的结论都在VS2013上得到验证。不同的编译器在内存布局的细节上可能有所不同。文章如果有解释不清、解释不通或疏漏的地方,恳请指出。1.何为C++对象模型?引用《深度探索C++对象模型》这本书中的话:有两个概念可以解释C++对象模型:语言中直接支持面向对象程序设计的部分。 对于各种支持的底层实现机制。直接支持面向对象程序设计,包括了构造函数、析构函数、
WSL的坑 在WSL下测试消息队列实现多进程通信,在执行到msgget时报错,错误信息“function not implemented”。在下面链接中发现,WSL不支持消息队列。https://github.com/microsoft/WSL/issues/1443...
【C++学习笔记】02-传递常量引用比传值更好 转载自:https://blog.csdn.net/Function_Dou/article/details/86608247在c++中引入了引用, 而引用其实也就是指针, 只是使用起来更加的方便. 使用使用使得在函数传值时可以为对象创造一个别名, 操作时实际上就是操作原对象本身, 这样的传引用可以避免对象传递时产生临时对象. 这样避免就可以减少很多不必要的时间和空间的开销.实际例子以Eff...
【C++学习笔记】01-理解const引用传递 第一次看到C++中的const引用传递有点困惑。在我的理解中,之所以用引用传递,是因为函数可以修改传递的参数。而不是像值传递那样,只创建参数的副本,无法修改参数。但是加上const,又表示不能修改该参数。那这const引用传递有啥用呢?先不讨论引用传递和值传递。直接默认使用引用传递,看非const引用传递和const引用传递的区别。实际例子考虑如下代码#include<iostrea...
版本控制工具git之生成ppk及使用 本人用的是Git Extensions,用SSH传输。在配置秘钥时遇到问题,参考下面博客解决。转载自:https://www.cnblogs.com/TingJie/p/4992111.html一、简介Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Gi...
信号处理学习笔记6——自适应滤波器4-递归最小二乘(RLS)自适应滤波器 前面学习的LMS自适应滤波器的核心思想是最速下降法,并根据当前输入信号和期望输出对代价函数的瞬时梯度进行估计。但它只使用了当前时刻的输入和期望信号,没有充分利用过去的信息。这就导致LMS自适应滤波器误差大、收敛慢。 一个直接的想法就是,如果能把过去的信息也都利用起来,那么梯度估计的误差就会大大减小,算法便会很快收敛。最小二乘(Least Squares,LS)算法正好就实现了这一过程,...
信号处理学习笔记5——自适应滤波器3-LMS自适应滤波器 LMS算法全称最小均方算法(least mean square),是一种线性自适应滤波算法。它不需要计算相关函数,也不需要矩阵求逆计算。由于其简单性,LMS算法成为其它线性自适应滤波算法的参照标准。 LMS一般包含两个基本过程:滤波过程:a. 计算线性滤波器输出对输入信号的响应;b. 通过比较输出结果与期望响应产生估计误差自适应过程:根据估计误差自动调整滤波器参数1.LMS自...
信号处理学习笔记4——自适应滤波器2-最速下降法用于FIR型维纳滤波 几点说明:上面提到的式(4.4)就是最速下降法中的权值更新公式。在维纳滤波中,期望响应一般就是噪声。因为维纳滤波本身就假设信号和噪声是(即这里的抽头输入u(n)和期望响应w(n))广义联合平稳的,所以输入相关矩阵R\bold RR以及输入和噪声的互相关向量p\bold pp是恒定的。因此式(4.9)和式(4.10)的计算结果仅与迭代时的权值向量有关,并且是可以精确计算的(这是与后面LM...
信号处理学习笔记3——自适应滤波器1-最速下降法理论 关于什么是自适应滤波器,在参考文献1的“关于&amp;amp;amp;amp;amp;amp;lt;自适应滤波器原理&amp;amp;amp;amp;amp;amp;gt;一书”一节中,有如下描述: 自适应信号处理可以在无需先验知识的条件下,通过自学习适应或跟踪外部环境的非平稳随机变化,并最终逼近维纳滤波器和卡尔曼滤波器的最优滤波性能。 由于没有先验知识,自适应滤波器的性能一般只能逼近维纳滤波器和卡尔曼滤波器。这是可以理解的。1. 先导知识——最速下降法最
信号处理学习笔记2——维纳滤波器 在讨论维纳滤波之前,先来看看维纳滤波器在线性滤波器体系中处于什么位置。 经典的FIR和IIR滤波器要求已知信号和噪声的频谱信息,并且信号和噪声的频谱没有交叠。信号和噪声的频谱有交叠时,如果硬要使用FIR和IIR当然也可以,但要么会造成噪声滤除不干净,要么会造成滤除噪声的同时对有用信号造成“误伤”。 实际上,在信号和噪声频谱有交叠时,滤波问题演变为在已知观测量的前提下,对未知信号进行最佳估计的问题(所以这里信号也称为估计量)。既然希望估计是最佳,那必然要有个评价准则,不同的评价准则便衍生出不同的估
信号处理学习笔记1——滤波概述 什么是滤波?按照我个人的理解,滤波就是从观测信号中去除噪声,留下想要信号的过程。线性滤波与非线性滤波根据滤波器的输出是否为输入的线性函数,可将它分为线性滤波器和非线性滤波器两种。若噪声为加性,即噪声是叠加到“干净”信号上的,则可用线性滤波器将噪声滤除。若噪声不是加性,则需要非线性滤波器。典型的线性滤波如经典IIR、FIR滤波,典型的非线性滤波如中值滤波、形态学滤波、同态滤波、基于小波分...
实时嵌入式软件开发的25个常见错误 转载自:https://blog.csdn.net/lulubooboo/article/details/7370808 英文原文由David B. Stewart撰写, 这篇论文对实时嵌入式软件开发的易犯错误做了深入分析,对我们的开发非常有指导意义。 David B. StewartSoftware Engineering for Real-Time Systems ...
《程序设计与数据结构》读书笔记1——2.2节结构体相关 结构体定义时需要注意字节对齐的问题,在串口/网络等数据传输时,有时为了传输帧格式设计方便,将帧格式设计为结构体,这时更要注意结构体对齐,防止出现不希望的补零。为保险起见,可在定义结构体时声明结构体为1字节对齐。因为结构体指针比整个结构体小的多,所以需要向函数传递结构体时,最好传递结构体指针,而不是结构体本身。这样在函数调用时,压入堆栈的效率要更高。结构体的成员不仅可以是变量,还可以是函数指针...
浅谈嵌入式 MCU 软件开发之应用工程的堆与栈 转载自:http://huxiongwei.spaces.eepw.com.cn/articles/article/item/136717 内容提要 概述与案例分析1. 嵌入式 C 语言应用工程中堆栈的定义和作用2. 嵌入式 C 语言应用工程的栈大小确定3. 嵌入式 C 语言应用工程的堆栈溢出定义、危害以及应对措施 概述与案例分析过去工作中,我经常遇到客户非...
关于嵌入式开发中堆栈的理解 转载自:https://blog.csdn.net/Eric_01230/article/details/86299949 今天去面试,面试官再一次问到了对堆栈的理解这个问题,答的不是太好,在网上又查阅了一些讲的比较清楚的博客,现在来梳理一下内容,以备下次之需。一个由C/C++编译的程序占用的内存包括下列几项:栈区(stack) 堆区(heap)静态区(全局区)常量区代码区它...
STM32学习笔记11——HardFault_Handler处理方法 根据网络资料及自己调试经验总结如下:STM32 出现 HardFault_Handler 故障的原因主要有两个方面:1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。2、堆栈溢出。增加堆栈的大小。排查方法:发生异常之后可首先查看 LR 寄存器中的值,确定进入异常前一刻使用的堆栈为 MSP 或 PSP,然后找到相应堆栈的指针?注:在 HardFault_Ha...
嵌入式linux开发板web服务器搭建2——CGIC移植 移植完Boa后,还需要利用C语言的CGI库“CGIC”,并结合html完成Web开发,实现前端网页和设备的数据交互。主要步骤参考https://wenku.baidu.com/view/8d5dd954f01dc281e53af08f.html中的描述,主要步骤如下:CGIC简单测试先编写个test.c程序,如下:#include &amp;amp;amp;lt;stdlib.h&amp;amp;amp;gt;int main(...
嵌入式linux开发板web服务器搭建1——Boa移植 嵌入式linux开发板web服务器Boa移植笔记环境Ubuntu10.04.4boa-0.94.13主要步骤主要参考https://wenku.baidu.com/view/8d5dd954f01dc281e53af08f.html和https://blog.csdn.net/lyiya/article/details/50865947两篇博客的步骤。从http://www.boa....
linux下移植libcurl记录 移植过程主要参考博客:https://blog.csdn.net/wuzhiwuweisun/article/details/79129838也借鉴了博客:https://blog.csdn.net/zhouzhenhe2008/article/details/53768854 下载的文件为:curl-7.61.1.tar.gz,网址为:https://curl.haxx.se/d...