19 caimouse

尚未进行身份认证

我要认证

毕业于西北工业大学,在IT行业有20多年的经验。

等级
TA的排名 26

学习算法笔记(2)

学习算法的时候,让我想起看过的小说《三体》的黑暗森林,在罗辑与叶文洁的那段对话中,大意就是叶文洁让罗辑去研究宇宙社会学,但是开创一个新学科,需要一些先决条件,也就是我们大家普通认可的公理,叶文洁提出了宇宙社会学的两条公理:第一、生存是文明的第一需要;第二、文明不断增长和扩张,但宇宙中的物质总量保持不变。由此可见,要从一门科学入门,必须要认识它的基本公理,这些是大家认可的基本条件。这样的方式是整个科学史里最重要的思想之一,也是为什么西方可以在整个科学发展上起到决定性作用的原因。比如几何学,就是假定了几

2020-09-18 11:54:37

学习算法笔记(1)

这段时间一直在乡下,每天都想去做点事情,但是局限于乡下的条件,做工作上的事情不太方便,并且零碎的时间很多,并不能整段整段时间投入到工作中,导致做工作上的开发效率相当低下,因此就把这些断断续续的时间再来学习一遍算法相关的书,同时把学习过程中的一些想法记录下来,跟大家来分享整个学习过程,或许让大家也能在算法上更深入地理解它。算法的重要性是不言而喻,因为整个计算机科学里全部都要使用到算法,即使在古代里,也要使用算法,算法是在计算机出现之前就有了,并不是计算机专用的,只是计算机出现之后,更多的算法可以在计算

2020-09-17 09:51:20

智能指针的动态数组的使用

在C++编程里,最基本的操作就是内存分配和删除,也即是内存管理,这个特性是C++的主要优点也是缺点,为什么这样说呢?因为管理得好,是性能提升很高,其它语言是无法比拟的,管理不好就是坏处一大堆,比如内存泄漏,这样的问题常常会导致程序运行一段时就会死掉,因为内存不断地分配而没有删除,并且要找到那里分配的内存没有删除,也是费力的事情,经常是夜夜加班去解决,特别是那些不够细心的程序员,更加是恶梦不断。因此,不够细心,不够专业的程序员怎么办呢?当然是采用java、python这样的语言了。像C++这样语言在整个开

2020-07-27 09:12:01

你可以输在人生起跑点,但决不能输在人生转折点

某日,“人生”与“机遇”碰在了一起,“人生”说:“你是我的属下,是我促使你能够被人们所接受,所以你要服从我。”“机遇”不服气,反驳说:“我们是互相依存的,没有我,你就不会有闪光点。”“人生”说:“离开你我依旧会有闪光点!我不需要你。”二者争论不休,话不投机。于是,“机遇”离“人生”而远去。结局是:人生因为没有机遇而暗淡。机遇因为没有人生而消逝。哲人说:“人生因为机遇而精彩,机遇因为人生而辉煌。”故,精彩的人生需要机遇。那么,对于一个人来说,更是需要拥抱变化,抓住机遇,方能

2020-07-07 18:39:45

致2020年的高考:教育改变命运

今年注定是不平凡的一年,因为今年上半年就经历了很多前所未闻的事情,前所没有想到的事情,这些事情深刻地影响到今年和以后的生活。特别今年高考的学生更加不平凡,往年的高考时间早已经就完成了,但是今年整整地推迟一个月才考,意味着大家多了一个月的时间复习知识。但是很多人在想“上了好大学,是不是将来就会有好工作、好生活?”我想说:“不是的,以后还需要努力一辈子。”这时他们又想问:“既然以后还需要努力一辈子,为什么要接受好的教育?不是很多人退学也能创业成功吗?”这个问题问得特别好,问到了教育的关键点上了。首先

2020-07-06 18:13:35

闲聊操作系统(2)

继续来闲聊一下操作系统,很多人都使用过操作系统,但要精确给出操作系统的定义却很困难,部分原因是操作系统具备两种特别的功能实现。对于多数计算机来说,在机器语言这一级的体系结构上编程是很困难的,因为需要开发人员熟悉指令集、存储结构、I/O的定义和总线结构,尤其是输入输出操作。比如我们常用的固态硬盘(SSD),要对它进行操作是相当复杂的。如下图结构:固态硬盘(SSD)是基于闪存的数据存储设备。每个数据位保存在由浮栅晶体管制成的闪存单元里。SSD整个都是由电子组件制成的,没有像硬盘那样的移动或者

2020-07-06 12:04:15

闲聊操作系统(1)

由于近来这段时间主要关注嵌入式操作系统,那么就来闲聊一下操作系统,也可以增加一些基本常识,这样对于嵌入式linux开发是有益的,也可以增广系统的知识。计算机科学的迅速发展是20世纪科学发展史上最伟大的事件之一,直到目前21世纪20年代,还在高速地发展,没有看到停止的状态,特别是AI的发展。从1946年第一台笨重而体积庞大的计算机的发明至今,仅仅半个多世纪,计算机已经变得小巧无比,却又能力非凡,比如移动时代的手机。它的应用已经渗透到了社会的各个方面,成为当今所谓的信息社会的最显著的特征。处于21世

2020-07-05 14:00:53

准备嵌入式Linux开发环境

无论做什么事情之前,都需要准备好工具,俗话说得好磨刀不误砍柴功。接着下来要进行嵌入式Linux的开发,那么什么才是最基本的工具呢?前面已经说了开发板,具备了开发的第一步,接着下来就是需要编写程序、编译程序和烧录程序的工具了。因为刚刚有开发板是不能解决问题,开发板就像做饭的米,但是要把饭做好,还需要锅,而在这里这个锅就是开发环境。开发环境随着不同的工作内容而改变,比如对stc51开发,需要的单片机开发环境,对Windows开发需要Windows的SDK和VS,对STM32使用Keil,而对于本系列里的嵌入

2020-07-04 11:32:28

学习嵌入式开发是需要忍耐

当我们在学习任何知识过程中,都是需要忍耐的性格,特别是在嵌入式开发的学习过程中更加需要这个忍耐的特性。因为嵌入式系统更加具有隐蔽性,它的响应和显示不像应用程序那么具体,也不像界面程序那样触手可及。在学习嵌入式开发之前,先要让自己的思想作一些准备,因此来学习一下下面这个故事来帮助一下自己的认识,当你学不下去的时候,就可以回头来看看这个故事,又有勇气走下去了。一位年轻人刚刚毕业后被分配到一个海上油田钻井队工作。在海上工作的第一天,领班要求他在限定时间内登上几十米高的钻井架,把一个包装好的漂亮盒子拿给在井架顶

2020-06-24 10:50:57

在VC里实现长按键时,解决窗口不更新的问题

在修改一个老程序时,发现有这样一个问题,当按下一次向下或向上方向键时窗口里的数据可以向上或向下滚动一条,也会立即更新到窗口里显示。但是,当长按,不弹起按键时,就会发现数据有滚动,但窗口不更新的现象。这种现象就会给客户一种假死的感觉,体验非常不好。为了解决这个问题,仔细地看了一下VC里MFC的消息体系。为什么一次按下再弹起就可以更新窗口呢?因为这里使用InvalidateRect函数,通知窗口有区域无效了,也就是作了一个标记,但这是Windows并不会立即更新窗口里的数据,等到弹起按键,没有操作时才会处理

2020-06-19 10:17:28

使用C++智能指针的树结构的问题

现在C++17版本里,基本上都是使用智能指针了。在std::shared_ptr被引入之前,C++标准库中实现的用于管理资源的智能指针只有std::auto_ptr一个而已。std::auto_ptr的作用非常有限,因为它存在被管理资源的所有权转移问题。这导致多个std::auto_ptr类型的局部变量不能共享同一个资源,这个问题是非常严重的。因为我个人觉得,智能指针内存管理要解决的根本问题是:一个堆对象(或则资源,比如文件句柄)在被多个对象引用的情况下,何时释放资源的问题。何时释放很简单,就是在最

2020-06-12 16:27:13

外国软件被禁用之后,怎么解决?

昨天看到微信朋友圈里一大波刷屏,哈工大和哈工程被MATLAB公司禁用了,即使是已经购买过的软件。这种事件很可怕,如果有一天所有外国软件被禁用了,怎么办呢?难道就放任不管吗?那么未来中国的软件又应该怎么样使用国外的软件呢?以前大家都不会担心这种事情,认为是市场经济,有钱就可以买到的,但现实很打脸,这个社会不是市场经济,而是计划经济,什么东西可买,不可以卖,不是你想当然就行的。确确实实是计划之中的市场经济,不是自由的市场经济。因此,未来必须认清楚到这个现实,能不用外国的软件,就不要使用,因为它们随时可以给你

2020-06-12 08:55:20

嵌入式Linux学习选择什么样的开发板?

无论谁都会面临着这个选择的问题,因为总需要一块开发板来调试,来测试系统,没有开发板是学不会嵌入式软件开发的,就像学习游泳的人,从来不下水一样,怎么可能学会游泳呢。既然要选择一块开发板,一定要选择一块稳定的,当然不能最新的开发板,因为最新的,一般来说不太稳定。第二个条件就是开源的,如果没有开源的代码,你学习什么呢?看不到代码,根本没法学习。第三个条件就是具备多核心的,因为现在的处理器设计,都是多核心时代,没有多核的异步性设计,以后的系统怎么样才能设计,怎么样才能调试稳定软件呢,怎么样才会关注到多处理器的异步性

2020-06-10 21:44:37

嵌入式的上位机界面测试例子

在开发嵌入式软件时,经常要使用一些界面测试例子,如果让别人帮忙开发,当然是比较好的事情,但是在小公司,或者功能不是太复杂时,协调成本太高时,就要自己去开发一些界面测试例子了,这样会大大地提高开发效率。因此,本文主要来实现linux里的python界面开发,在这里使用开源的界面库wxpython。由于嵌入式linux都是在linux下开发,那么在linux写一些界面测试例子,就非常方便了,并且采用不收费的界面库wxpython,也可以为公司节省成本,也可以为客户节省成本,让你的产品更具有竞争优势。首要是安

2020-05-31 23:02:00

为什么要嵌入式Linux

随着技术的发展,嵌入式的硬件越来越好,价格越来越便宜,可以开发的功能也越来越多,要求完成的功能越来越快,面对这样的需求,就需要使用更好的平台,嵌入式的linux就是这样的平台,并且这个平台是不收钱的,开发文档也多,从业人员也多。因此学习嵌入式linux已经成为基本的要求了。当然,如果只是开发简单的功能,还是选择合适的、低成本的MCU,比如51单片机STC系列,因为这样很低的成本可以提高产品的竞争力,并且开发的速度也很快,但是不要想在这样的MCU里实现复杂的功能。当前嵌入式系统的硬件发展很快,比如在这

2020-05-31 17:11:40

在linux里安装python3.8.3版本

由于旧版本的linux里安装的是3.5版本,现在官方已经升级最新的版本了,为了跟上了最新的科技,跟上最新步伐,那么就需要与时俱进,安装和使用最新的版本。下面就来记录一下升级python3.8.3版本的过程。第一步是先安装依赖包:sudo apt install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel

2020-05-30 21:09:41

Linux访问Windows共享目录

近来要使用Linux来开发一些程序,需要从百度云盘上下载一个大的开发源码包,由于在ubuntu 16.04上运行百度网盘软件失败,只能到win上下载,下载完之后,发现这个文件比较大,居然有6G大小,那么就需要从win上拷贝到linux的开发电脑上。这时就需要访问win上的共享目录,那么linux上就需安装一个软件,才可以访问win上的共享目录,这个软件就是:samba-client,需要使用下面的命令来安装:sudo apt install samba-client安装完成之后,就可以使用ubuntu

2020-05-30 18:31:20

代码与牙痛(二)

前面已经说过牙痛虽然是小病,但是它的痛直接影响到大脑的,并且以最快的速度,持续地刺激大脑,导致坐卧不安,根本没办法去写代码。另外由于写代码的过程,也是精神比较集中,常常是咬紧牙根地工作,导致吞口水的机会都少,因此一定要注意口腔卫生,否则更加容易得牙痛。特别在软件开发行业,由于使用大脑太多,会导致脑细胞活动量增加,因此消耗太多血液里的营养,导致大脑很快就缺少营养,这时候人就极容易产生饥饿感,想吃东西,因此经常吃东西就容易导致牙齿损坏了,我就是犯这种问题。既然牙齿已经产生了问题,也在医院通过拍摄CT查看到是

2020-05-17 20:08:22

代码与牙痛

前几周,加班写一些代码,第二天起床,就感觉牙有点不舒服。刚开始不感觉到怎么痛,因而不太理会它。继续写了几天代码,接着发现牙齿越来越痛了。有一句话很多出名”牙痛不是病,痛起来真要命!“,因此当晚怎么也睡不着,更不要说写代码了,就这样开始耽误项目的延期了。这种痛,坐不得,睡不得,行也不得。因为牙痛直接影响到三叉神经,而这三叉神经又直接最短的路径连接到大脑,可想而知,这种痛是持续的,没有间断的,更加没有延时。从而导致脑门胀痛,根本无法再进行写代码的工作,想思考一下都不行。看来不找方法解决不行了。接着下来第二

2020-05-12 20:53:48

使用C++17编译时出错:error C2872: 'byte': ambiguous symbol

现在已经是2020年了,因此使用C++的标准要提高到C++17的方式,因为C++17提高了不少性能,在语言上改进也很多。这样需要在VC2017或VC2019里使用下面的设置来使用C++17的标准:主要设置C++ Language Standard: ISO C++ 17设置完成之后,就可以使用最新的C++17的特性,同时也强制地按这个标准编译了。如果是旧的代码,也许会提示一个如下的BUG:c:\program files (x86)\microsoft sdks\windows\v7.1a\

2020-05-11 09:49:42

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 签到达人
    签到达人
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv3
    阅读者勋章Lv3
    授予在CSDN APP累计阅读博文达到30天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 1024超级勋章
    1024超级勋章
    授予原创文章总数达到1024篇的博主,感谢你对CSDN社区的贡献,CSDN与你一起成长。
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 博客之星-入围
    博客之星-入围
    授予每年博客之星评选结果第21-200名的用户