### **工程问题** 提出这么一个问题:A公司为B公司的一条自动化流水线开发一个检测装置,B公司要求可以检测流水线最终的产品是否合格。具体是:- 第一版需要检测产品的涂层颜色是否均匀、外观是否有破损两个指标。- 系统上线运行后,支持B公司可以自主增加新的检测项目。 这个工程需求,简单地讲就是需要A公司开发的检测系统,能自动链接目前尚未出现的、未来的接口,这就需要A公司不是开发出检测外观、涂层颜
原创|函数scanf的前世今生
![](http://i2.51cto.com/images/blog/201804/30/70351740a2995398ec8a6496689a6bdd.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3po
所谓的自我赋值,指得就是一个对象赋值给自己的简单行为,但这种看起来人畜无害动作,在某些情形下却可能会使得你的代码崩溃。自我赋值的语句,就像这样:Widget w;w = w;很明显,这是一段愚蠢的代码。但既然我们提到自我赋值会引发问题,那我们先来澄清一下自我赋值的情况其实有时并不是那么显而易见的,并不一定都像上述代码那么愚蠢,它们还可能是这样:a[i] = a[j];*px = *py
还是女神SQLite的话题,继续讨论有关她的种种常见疑惑。1. 问:女神SQLite是线程安全的吗?1. 答:SQLite是线程安全的,这点确凿无疑。但我要补充的一句话是:线程有时候是恶魔,不要让女神轻易接近他!说线程是恶魔可能有点危言耸听的味道,难道线程不是我们广大编程群众喜闻乐见的基本工具么?都用了多少年啦没啥问题!的确如此,但世界上总有头上长角的牛人,可以在早
SQLite的大名就不做广告了,反正嵌入式设备、手机等领域中,凡是用到数据库的地方她几乎都是主角。这个系列的推文,就来总结日常使用时我们都可能会遇到一些问题。1. 问:怎么创建一个自动递增的域?1. 答:对于这个问题,简短的回答是:任何一个被声明为 INTEGER PRIMARY KEY 的域都将是自动递增的。而更完整的回答是:如果你在一个表中,声明了一个&
嵌入式系统中,诸多设备都可以通过串口来控制,比如WiFi、蓝牙、RFID等等,因此在嵌入式设备中使用串口就显得特别重要。首先,有几个概念简单澄清一下。RS232、RS485和TTL指的是电气电平标准。一般而言,TTL使用0V表示低电平,+5V表示高电平。RS232使用负逻辑电平,即+3V ~ +15V表示低电平,-3V ~ -15V表示高电平。RS485和RS232一样都是基于串口的通讯接口,数据
学习C++的多态性,你必然听过虚函数的概念,你必然知道有关她的种种语法,但你未必了解她为什么要那样做,未必了解她种种行为背后的所思所想。深知你不想在流于表面语法上的蜻蜓点水似是而非,今天我们就一起来揭开挡在你和虚函数(女神)之间的这一层窗户纸。首先,我们要搞清楚女神的所作所为,即语法规范。然后再去探究她背后的逻辑道理。她的语法说来也不复杂,概括起来就这么几条:在类成员方法的声明(不是定义)语句前面
一个含义中立的行为,放在不同的人眼里,就有不一样的解释。就像你帮学妹打开水,如果她喜欢你,那你就是冬天里温柔贴心的暖男,如果她不喜欢你,那你就是路边上自作多情的逗比。类比到C++中,他会你不知情的情况下,自动为你准备好①无参构造函数、②空析构函数、③复制构造函数、④赋值操作符函数等一系列基本类成员方法。你说他这是一种温柔贴心呢,还是一种自作多情呢?这没有标准答案,事情的好坏取决于你所设计的类的需要
虽然这篇文章的标题,看起来是有点找抽——既然一个类是空的,那不就是说里面啥也没有嘛? 比如这样:class empty{ };上面定义了一个真的很空的空类,一对大括号里面除了空气之外,真的什么都没有!根据C++的语法,这样的类是可以通过编译的,并且可以跟别的小朋友一样到处玩耍、奔跑和嬉闹。look:empty e1; // e1:“我很空虚!”e
标题有点拗口,先来解释一下。静态数据包括:在namespace内定义的名字空间域变量√在类中被声明为static的类域变量√在函数中被声明为static的局部静态变量×在文件中被定义的全局变量(不管有没有static修饰)√上面提到的非局部静态数据指的就是除去第3种情形之外,其他的1、2、4情形。而编译单元指的就是.o文件,假如一个工程是由n个单独的cpp和对应的头文件,那么就会被事先编译生成n个
我的课程我的小组
&nbs
给LCD映射显存时,有可见区和虚拟区之分,可见区相当于一个房间里的窗户,虚拟区是窗户外的风景。 拓展:当我们讨论LCD的显存映射的时候,我们的确应该把LCD当做一扇窗户,透过这扇窗户,我们看到了显存中的图像。请看下图:编程时,可见区的大小,一般就是LCD的大小,当我们将虚拟区设置成比可见区大而不是相等时,意味着我们可以在显示图像之前预先缓冲起来,提高整个程序的效率。
Linux内核用一个被称为V4L2的机制来管理摄像头图像信息,它的核心工作原理就像日本料理店常见的流转餐桌,大厨将美食不断放到空盘子里,客人不断拿来吃。 拓展:在内核中,摄像头所捕获的视频数据,我们可以通过一个队列来存储,我们所做的工作大致是这样的:首先配置好摄像头的相关参数,使之能正常工作,然后申请若干个内核视频缓存,并且将它们一一送到队列中,就好比三个空盘子被一一放到传送带上一样。然
摄像头图像数据的主流封装格式是JPEG/MJPG/YUV等,这些都是经过编码压缩的数据,大大减少了图像尺寸,方便传输和存储。 拓展:YUV是视频图像数据的主流格式,它根据人类眼睛的视觉特征设计——由于人类的眼睛对亮度的敏感度比颜色要高许多,而且在RGB三原色中对绿色有尤为敏感,利用这个原理,可以把色度信息减少一点,人眼也无法查觉这一点。 YUV三个字母中,其中"Y&q
Linux系统,除了网络接口卡之外,其他的所有设备都被视为文件,并且统一在/dev下有对应所谓节点文件。
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号