caimouse
在IT行业有20多年的经验。拥有20多年的C和C++开发经验,5年以上Python开发经验,资深数据库开发、上百G数据库优化经验。曾经任职嵌入式工程师、P2P开发工程师、银行信用卡交易系统工程师、全自动化电池测试部门经理。
展开
-
智能指针的动态数组的使用
在C++编程里,最基本的操作就是内存分配和删除,也即是内存管理,这个特性是C++的主要优点也是缺点,为什么这样说呢?因为管理得好,是性能提升很高,其它语言是无法比拟的,管理不好就是坏处一大堆,比如内存泄漏,这样的问题常常会导致程序运行一段时就会死掉,因为内存不断地分配而没有删除,并且要找到那里分配的内存没有删除,也是费力的事情,经常是夜夜加班去解决,特别是那些不够细心的程序员,更加是恶梦不断。因此,不够细心,不够专业的程序员怎么办呢?当然是采用java、python这样的语言了。像C++这样语言在整个开原创 2020-07-27 09:12:01 · 1284 阅读 · 0 评论 -
你可以输在人生起跑点,但决不能输在人生转折点
某日,“人生”与“机遇”碰在了一起,“人生”说:“你是我的属下,是我促使你能够被人们所接受,所以你要服从我。”“机遇”不服气,反驳说:“我们是互相依存的,没有我,你就不会有闪光点。”“人生”说:“离开你我依旧会有闪光点!我不需要你。”二者争论不休,话不投机。于是,“机遇”离“人生”而远去。结局是:人生因为没有机遇而暗淡。机遇因为没有人生而消逝。哲人说:“人生因为机遇而精彩,机遇因为人生而辉煌。”故,精彩的人生需要机遇。那么,对于一个人来说,更是需要拥抱变化,抓住机遇,方能原创 2020-07-07 18:39:45 · 882 阅读 · 0 评论 -
致2020年的高考:教育改变命运
今年注定是不平凡的一年,因为今年上半年就经历了很多前所未闻的事情,前所没有想到的事情,这些事情深刻地影响到今年和以后的生活。特别今年高考的学生更加不平凡,往年的高考时间早已经就完成了,但是今年整整地推迟一个月才考,意味着大家多了一个月的时间复习知识。但是很多人在想“上了好大学,是不是将来就会有好工作、好生活?”我想说:“不是的,以后还需要努力一辈子。”这时他们又想问:“既然以后还需要努力一辈子,为什么要接受好的教育?不是很多人退学也能创业成功吗?”这个问题问得特别好,问到了教育的关键点上了。首先原创 2020-07-06 18:13:35 · 724 阅读 · 0 评论 -
闲聊操作系统(2)
继续来闲聊一下操作系统,很多人都使用过操作系统,但要精确给出操作系统的定义却很困难,部分原因是操作系统具备两种特别的功能实现。对于多数计算机来说,在机器语言这一级的体系结构上编程是很困难的,因为需要开发人员熟悉指令集、存储结构、I/O的定义和总线结构,尤其是输入输出操作。比如我们常用的固态硬盘(SSD),要对它进行操作是相当复杂的。如下图结构:固态硬盘(SSD)是基于闪存的数据存储设备。每个数据位保存在由浮栅晶体管制成的闪存单元里。SSD整个都是由电子组件制成的,没有像硬盘那样的移动或者原创 2020-07-06 12:04:15 · 520 阅读 · 0 评论 -
闲聊操作系统(1)
由于近来这段时间主要关注嵌入式操作系统,那么就来闲聊一下操作系统,也可以增加一些基本常识,这样对于嵌入式linux开发是有益的,也可以增广系统的知识。计算机科学的迅速发展是20世纪科学发展史上最伟大的事件之一,直到目前21世纪20年代,还在高速地发展,没有看到停止的状态,特别是AI的发展。从1946年第一台笨重而体积庞大的计算机的发明至今,仅仅半个多世纪,计算机已经变得小巧无比,却又能力非凡,比如移动时代的手机。它的应用已经渗透到了社会的各个方面,成为当今所谓的信息社会的最显著的特征。处于21世原创 2020-07-05 14:00:53 · 1302 阅读 · 0 评论 -
准备嵌入式Linux开发环境
无论做什么事情之前,都需要准备好工具,俗话说得好磨刀不误砍柴功。接着下来要进行嵌入式Linux的开发,那么什么才是最基本的工具呢?前面已经说了开发板,具备了开发的第一步,接着下来就是需要编写程序、编译程序和烧录程序的工具了。因为刚刚有开发板是不能解决问题,开发板就像做饭的米,但是要把饭做好,还需要锅,而在这里这个锅就是开发环境。开发环境随着不同的工作内容而改变,比如对stc51开发,需要的单片机开发环境,对Windows开发需要Windows的SDK和VS,对STM32使用Keil,而对于本系列里的嵌入原创 2020-07-04 11:32:28 · 839 阅读 · 0 评论 -
学习嵌入式开发是需要忍耐
当我们在学习任何知识过程中,都是需要忍耐的性格,特别是在嵌入式开发的学习过程中更加需要这个忍耐的特性。因为嵌入式系统更加具有隐蔽性,它的响应和显示不像应用程序那么具体,也不像界面程序那样触手可及。在学习嵌入式开发之前,先要让自己的思想作一些准备,因此来学习一下下面这个故事来帮助一下自己的认识,当你学不下去的时候,就可以回头来看看这个故事,又有勇气走下去了。一位年轻人刚刚毕业后被分配到一个海上油田钻井队工作。在海上工作的第一天,领班要求他在限定时间内登上几十米高的钻井架,把一个包装好的漂亮盒子拿给在井架顶原创 2020-06-24 10:50:57 · 752 阅读 · 0 评论 -
使用C++智能指针的树结构的问题
现在C++17版本里,基本上都是使用智能指针了。在std::shared_ptr被引入之前,C++标准库中实现的用于管理资源的智能指针只有std::auto_ptr一个而已。std::auto_ptr的作用非常有限,因为它存在被管理资源的所有权转移问题。这导致多个std::auto_ptr类型的局部变量不能共享同一个资源,这个问题是非常严重的。因为我个人觉得,智能指针内存管理要解决的根本问题是:一个堆对象(或则资源,比如文件句柄)在被多个对象引用的情况下,何时释放资源的问题。何时释放很简单,就是在最原创 2020-06-12 16:27:13 · 760 阅读 · 0 评论 -
嵌入式Linux学习选择什么样的开发板?
无论谁都会面临着这个选择的问题,因为总需要一块开发板来调试,来测试系统,没有开发板是学不会嵌入式软件开发的,就像学习游泳的人,从来不下水一样,怎么可能学会游泳呢。既然要选择一块开发板,一定要选择一块稳定的,当然不能最新的开发板,因为最新的,一般来说不太稳定。第二个条件就是开源的,如果没有开源的代码,你学习什么呢?看不到代码,根本没法学习。第三个条件就是具备多核心的,因为现在的处理器设计,都是多核心时代,没有多核的异步性设计,以后的系统怎么样才能设计,怎么样才能调试稳定软件呢,怎么样才会关注到多处理器的异步性原创 2020-06-10 21:44:37 · 4069 阅读 · 0 评论 -
嵌入式的上位机界面测试例子
在开发嵌入式软件时,经常要使用一些界面测试例子,如果让别人帮忙开发,当然是比较好的事情,但是在小公司,或者功能不是太复杂时,协调成本太高时,就要自己去开发一些界面测试例子了,这样会大大地提高开发效率。因此,本文主要来实现linux里的python界面开发,在这里使用开源的界面库wxpython。由于嵌入式linux都是在linux下开发,那么在linux写一些界面测试例子,就非常方便了,并且采用不收费的界面库wxpython,也可以为公司节省成本,也可以为客户节省成本,让你的产品更具有竞争优势。首要是安原创 2020-05-31 23:02:00 · 2566 阅读 · 0 评论 -
为什么要嵌入式Linux
随着技术的发展,嵌入式的硬件越来越好,价格越来越便宜,可以开发的功能也越来越多,要求完成的功能越来越快,面对这样的需求,就需要使用更好的平台,嵌入式的linux就是这样的平台,并且这个平台是不收钱的,开发文档也多,从业人员也多。因此学习嵌入式linux已经成为基本的要求了。当然,如果只是开发简单的功能,还是选择合适的、低成本的MCU,比如51单片机STC系列,因为这样很低的成本可以提高产品的竞争力,并且开发的速度也很快,但是不要想在这样的MCU里实现复杂的功能。当前嵌入式系统的硬件发展很快,比如在这原创 2020-05-31 17:11:40 · 1173 阅读 · 0 评论