自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 收藏
  • 关注

转载 ubuntu 开机出错disk by-uuid ########### does not exist dropping to a shell

ubuntu似乎经常出现这个情况,这已是我第三次遇到这个问题,前两次直接重新装个ubuntu, 这次因为有重要的工作数据和众多已安装的软件工具,重装代价实在太大,果断还是修一修吧 1.在initramfs命令下查看/dev的sda文件节点,我的下面有三个sda1, sda2, sda5,我的系统分区时sda1 2.系统启动到 GRUB 界面时,按e键进入 GRUB 启动菜单编辑,将linux

2015-12-07 23:26:00 7915 2

转载 嵌入式操作系统介绍分析

一,各种嵌入式操作系统介绍1.uC/OS-IIu C / OS 是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。 μC/OS-II 的前身是μC/OS,最早出自于1992 年美国嵌入式系统专家Jean J.Labrosse 在《嵌入式系统编程》杂志的5月和6月刊上刊登的文章连载,并把μC/OS 的源码发布在该杂志的BBS上。 μC/OS 和μC/OS-II 是专门为计算机的嵌入

2015-11-24 23:30:58 4259

转载 C++类中的枚举类型

有时我们希望某些常量只在类中有效。 由于#define 定义的宏常量是全局的,不能达到目的,于是想当然地觉得应该用 const 修饰数据成员来实现。const 数据成员的确是存在的,但其含义却不是我们所期望的。const 数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的,因为类可以创建多个对象,不同的对象其 const 数据成员的值可以不同。 不能在类声明中初始化 con

2015-11-24 23:12:20 1444

转载 用C/C++来实现 Node.js 的模块(下)

温故而知新,可以为湿矣   首先请大家记住这个 V8 的在线手册——http://izs.me/v8-docs/main.html。   还记得上次的 building.gyp 文件吗?{ "targets": [ { "target_name": "addon", "sources": [ "addon.cc" ] } ]}就像这样,举一反三,

2015-11-15 23:07:20 1778

转载 用C/C++来实现 Node.js 的模块(上)

N久之前的一个坑——用 Node.js 来重构 NBUT 的 Online Judge,包括评测端也得重构一遍。(至于什么时候完成大家就不要关心了,(/‵Д′)/~ ╧╧   总之我们现在要做的其实简而言之就是——用C/C++来实现 Node.js 的模块。 一、准备工作   工欲善其事,必先耍流氓利其器。 1.node-gyp   首先你需要一个 node-gyp 模块。   在任意角

2015-11-15 22:45:42 2643

转载 vim 替换^M

原因:回车表示:dos中CRLF 回车(CR, ASCII 13, r) 换行(LF, ASCII 10, n),两个符号。linux中只有一个。在Linux下使用vi来查看一些在Windows下创建的文本文件,有时会发现在行尾有一些“^M”。有几种方法可以处理。1.使用dos2unix命令。一般的分发版本中都带有这个小工具(如果没有可以根据下面的连接去下载),使用起来很方便: $ dos2uni

2015-11-15 21:16:22 480

转载 C++ 构造过程和析构过程

1、C++构造和析构的过程,类似于穿衣脱衣的过程。穿衣是:先穿内衣,再穿外套。脱衣是:先脱外套,再脱内衣。C++构造过程:首先调用父类构造方法,再调用子类构造方法。C++析构过程:首先调用子类析构方法,再调用父类析构方法。2、子类不能继承父类的构造方法和析构方法,除此之外,其他的成员都能继承,包括父类的private成员,只不过子类不能访问private成员。3、思考一下,为什么子类不能继承父类的构

2015-11-13 21:41:01 1705

转载 #ifdef和#if defined之间的区别

#ifdef和#if defined之间的区别 两者的用法基本上一样,不过后者的应用范围更大,可以支持多个预编译变量的检查:#if (!defined(_DEBUG) && defined(USE_MYLIB))..........#endif这种情况用前一种方式就只能写一个嵌套的条件判断:#ifndef _DEBUG#ifdef USE_MYLIB................#en

2015-11-13 21:38:54 785

转载 成员函数后面加const,没有const,以及使用的区别

函数后面加const 编译器会自动给每一个函数加一个this指针。在一个类的函数后面加上const后,就表明这个函数是不能改变类的成员变量的(加了mutable修饰的除外,后面有讲)。实际上,也就是对这个this指针加上了const修饰。#include <iostream> using namespace std; class CTest { public: void s

2015-11-13 21:33:40 778

转载 C++类的多继承

派生类都只有一个基类,称为单继承。除此之外,C++也支持多继承,即一个派生类可以有两个或多个基类。 多继承容易让代码逻辑复杂、思路混乱,一直备受争议,中小型项目中较少使用,后来的 Java、C#、PHP 等干脆取消了多继承。想快速学习C++的读者可以不必细读。 多继承的语法也很简单,将多个基类用逗号隔开即可。例如已声明了类A、类B和类C,那么可以这样来声明派生类D:class D: public

2015-11-13 21:18:02 429

转载 关于C++中子类调用父类方法的一个问题

在写代码时遇到了以下类似情况:#include <iostream>#include <string>using namespace std;class A {public: void func1(string prefix) { cout << prefix << "A::func1" << endl; } void func2(string prefi

2015-11-13 21:11:34 3039

转载 C++中this指针的用法详解

1. this指针的用处:   一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。例如,调用d

2015-11-13 21:03:49 373

转载 结构体和类的区别

1.C的结构体和C++结构体的区别C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数。所以C的结构体是没有构造函数、析构函数、和this指针的。C的结构体对内部成员变量的访问权限只能是public,而C++允许public,protected,private三种。C语言的结构体是不可以继承的,C++的结构体是可以从其他的结构体或者类继承过来的。以上都是表面的区别,实际区别就

2015-11-13 20:53:53 312

转载 虚函数、纯虚函数、普通函数的区别

1.虚函数(impure virtual)  C++的虚函数主要作用是“运行时多态”,父类中提供虚函数的实现,为子类提供默认的函数实现。子类不一定要重写虚函数,子类可以重写父类的虚函数实现子类的特殊化。如下就是一个父类中的虚函数:class A{public: virtual void out2(string s) { cout<<"A(out2):"<<s<<e

2015-11-12 23:34:32 984

转载 关于宏定义中#和##符号的使用和宏定义展开问题

有一道经典的C语言问题,关于宏定义中#和##符号的使用和宏定义展开问题程序如下:#include <stdio.h>#define f(a,b) a##b#define g(a) #a#define h(a) g(a)int main(){ printf("%s\n", h(f(1,2))); printf("%s\n", g(f(1,2)));

2015-11-12 23:24:11 1165

转载 C++ 结构体初始化方法

C++结构体初始化有以下几种方法:使用构造函数 在C++中,struct可以当做类(class)来使用,同样支持成员函数,构造函数,析构函数。所以可以写对应的构造函数,实现自由初始化。定义时,按照成员变量位置,写初始化列表。 如struct test中有成员int a, char b, 和float c,那么初始化一个变量可以写作struct test t1 = {100, 'A', 1.

2015-11-12 23:15:33 7087

转载 C++类中定义的类

类中定义类主要是为了数据封装,要访问B类,可以使用A::B来用。class A{public: void test1(){cout<<"test1"<<test->test2()<<endl;} class B { public: char* test2(){return "_test2";} protected: private: }; B *test;};

2015-11-12 22:59:12 4971 2

转载 C++template中typename 和class的区别

由于历史原因,以前是用class,后来C++ Standard 出现后,引入了typename, 实际上可以说没有区别。按 C++ 标准来说,template <typename T> 用于基础数据类型,typename 指类型名,T 可以取 char int double 等。template<class T> 用于类,T 可以取任何类。但是这里有一个问题,结构体应该用 typename 还是 c

2015-11-12 22:49:25 578

转载 C++之友元类

什么是友元类当一个类B成为了另外一个类A的“朋友”时,那么类A的私有和保护的数据成员就可以被类B访问。我们就把类B叫做类A的友元。友元类能做什么友元类可以通过自己的方法来访问把它当做朋友的那个类的所有成员。但是我们应该注意的是,我们把类B设置成了类A的友元类,但是这并不会是类A成为类B的友元。说白了就是:甲愿意把甲的秘密告诉乙,但是乙不见得愿意把乙自己的秘密告诉甲。友元类的声明方法和其用法声明友元类

2015-11-12 22:35:09 549

原创 ubuntu&windows下安装使用tftp

什么是tftpTftp全称为Trivial File Transfer Protocol,中文名叫简单文件传输协议。大家可以从它的名称上看出,它适合传送“简单”的文件。与FTP不同的是,它使用的是UDP的69端口,因此它可以穿越许多防火墙。不过它也有缺点,比如传送不可靠、没有密码验证等。虽然如此,它还是非常适合传送小型文件的。ubuntu下的TFTP1.ubuntu下安装 apt-get ins

2015-11-11 22:26:07 421

原创 CMake入门和使用(下)

单个源文件目录时编写CMakeLists.txt的方法学习CMake最主要还是学习如何编写CMakeList.txt. CMakeLists.txt 的语法比较简单,由命令、注释和空格组成,其中命令是不区分大小写的,符号”#”后面的内容被认为是注释。命令由命令名称、小括号和参数组成,参数之间使用空格进行间隔。例如上节的例子:cmake_minimum_required(VERSION 2.8)pr

2015-11-08 23:24:46 1501

原创 CMake入门和使用(上)

CMake入门和使用(上)出去嗨将近一个月,回来好多事情堆到一起等着处理,可是先前的做的东西怎么做的基本忘了而且又没做记录,重新捡起是一个比较痛苦和耗时的事,以此为训,养成个好习惯,记录开发的点滴点滴,不积跬步,无以成千里,不积小流,无以成江河,千里之行,始于足下,给自己五年时间,现在已经过去一年半了,屌丝青年,继续加速努力吧!今晚从捡起CMake开始!CMake是什么? 引用百度的话就是CMa

2015-11-06 23:38:45 7724

原创 system V与systemd

system V体系发展到今天,大多数基于Linux的操作系统,使用的是System-V风格的init守护进程,换句话说,它们的启动处理由init进程管理,其管理功能在一定程度上继承了基于System V 的Unix操作系统。该守护进程根据运行级别(run level)的原则,系统的运行级别表示当前计算机的状态。system V 7个运行级别含义runlevel0: 系统停机状态,系统默认运行级别不

2015-09-28 23:32:23 7631

原创 intel edison固件更新

intel edison开发板目前有两种固件更新方法,一种是使用flash tool lite工具更新,一种是dfu-util工具更新,个人更倾向后种方法。dfu-util方法具体如下: 1.intel edison官网下载最新固件,下载dfu-util for windows工具,用7z解压工具解压,如下图,将dfu-util.exe拷贝到固件根目录下。 2.双击执行固件根目录下flash

2015-09-25 21:49:53 1039

原创 Node-red catch节点

catch用于捕获流程中的节点在处理message时抛出的异常,类似于js的try{}catch(){}。 catch节点的js和html文件源码分别如下: catch.js注册input事件,在捕获的异常时,输出异常msg,如有错误,msg中会包含错误信息error,error下含有message,source.id和source.type等错误具体信息和位置;module.exports =

2015-09-24 00:33:30 3200

原创 基于 Node-red实现opencv边缘检测节点

基于 Node-red实现opencv边缘检测节点最近在学习如何将opencv的一些用例以节点的形式加入到Node-red供用户使用,由于opencv边缘检测最简单,所以用其练手,来熟悉下开发流程。node-red上opencv节点基本框架三部分模块构成。opencv边缘检测模块基于V8的js调用C++模块nodejs边缘检测模块下面是opencv边缘检测模块用例,共有三个函数分别供node

2015-09-12 14:52:32 4943 3

翻译 基于node-red工具实现自定义节点

本文参考了node-red官方文档并结合自己的学习过程进行了总结,node-red虚拟化开发工具是一个基于nodejs的可在浏览器上进行开发和设计的iot工具,它本身自带了一部分组件,同时用户也可以根据需要自定义新的组件加入到工具中,这些组件本身可以是硬件设备,web API或者在线服务,通过这些组件用户可以向搭建流程图一样编写自己的应用程序,组件本身屏蔽了一些底层具体实现,可以让用户把更多精力放

2015-08-25 23:50:02 10307

转载 python各种类型转换

int(x [,base ])         将x转换为一个整数    long(x [,base ])        将x转换为一个长整数    float(x )               将x转换到一个浮点数    complex(real [,imag ])  创建一个复数    str(x )                 将对象 x 转换为字符串

2015-07-17 20:54:24 386

转载 python 多线程两种实现方式

目前python 提供了几种多线程实现方式 thread,threading,multithreading ,其中thread模块比较底层,而threading模块是对thread做了一些包装,可以更加方便的被使用。2.7版本之前python对线程的支持还不够完善,不能利用多核CPU,但是2.7版本的python中已经考虑改进这点,出现了multithreading  模块。threading

2015-07-15 23:07:37 1011

转载 Python 列表(List)操作方法详解

列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表的数据项不需要具有相同的类型。列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。Python有6个序列的内置类型,但最常见的是列表和元组。序列都可以进行的操作包括索引,切片,加,乘,检查成员。此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。

2015-06-28 18:05:36 516

转载 举例详解Python中的split()函数的使用方法

函数:split()Python中有split()和os.path.split()两个函数,具体作用如下:split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)os.path.split():按照路径将文件名和路径分割开一、函数说明1、split()函数语法:str.split(str="",num=string.count

2015-06-28 17:42:05 411

转载 python的类变量和成员变量用法

本文实例形式讲解了python的类变量和成员变量用法,对于Python程序设计有一定的参考价值。分享给大家供大家参考。具体如下:先看看下面这段代码:?123456789101112131415161718

2015-06-27 23:11:20 1611

转载 arduino servo的用法

1.servo类成员函数函数说明attach()设定舵机的接口,只有9或10接口可利用。write()用于设定舵机旋转角度的语句,可设定的角度范围是0°到180°。writeMicroseconds() 用于设定舵机旋转角度的语句,直接用微秒作为参数。

2015-06-27 18:19:43 29692 5

转载 Arduino串口的一些高级用法

1.配置串口通信数据位、校验位、停止位通常我们使用Serial.begin(speed)来完成串口的初始化,这种方式,只能配置串口的波特率。而使用Serial.begin(speed, config)可以配置数据位、校验位、停止位等。例如Serial.begin(9600,SERIAL_8E2)是将串口波特率设为9600,数据位8,偶校验,停止位2。config可用配置如下:

2015-06-27 17:57:28 14648 1

转载 Linux内核中等待队列的几种用法

1. 睡眠等待某个条件发生(条件为假时睡眠): 睡眠方式:wait_event, wait_event_interruptible唤醒方式:wake_up (唤醒时要检测条件是否为真,如果还为假则继续睡眠,唤醒前一定要把条件变为真)2. 手工休眠方式一:1)建立并初始化一个等待队列项DEFINE_WAIT(my_wait) wait_queue_t my_wait; init_wai

2015-06-18 16:07:36 336

转载 关于数组长度不需要编译时确定

一直深信,数组长度必须是一个编译时可确定的常数,最近才发现自己真的是out了,自己真的是老了。    C99标准已经支持变长数组,换言之,数组的长度可以在运行时确定,没有任何问题。但是有个问题,就是数组只能够声明,不能初始化,因为编译器并不知道数组的长度,无法初始化。    请看下面的例子:    第一个例子,表明数组长度可以直到运行时才确定。    第二个例子表明

2014-01-02 22:23:08 2623

翻译 C++对C语言的非面向对象特性扩充(1)

我将分3篇来介绍C++相对于C在非对象特性上的扩充,今天要讲的是C++在注释,输入输出,局部变量说明的扩充,以及const修饰符与C中的#define的比较。  1.C++注释除了包括原有C的块注释/*...*/,还提供了行注释//,另外要注意的是对于注释/*...*/的方式是不能嵌套的,比如/*C++/*C++*/C*/,这是不允许的。但是嵌套注释//是可以的。  2.我想大家对

2013-11-16 21:28:35 814

转载 C++之模板

有以下这样3个求加法的函数: int Add(int x,int y){return x+y;}double Add(double x,double y){return x+y;}long Add(long x,long y){return x+y;}它们拥有同一个函数名,相同的函数体,却因为参数类型和返回值类型不一样,所以是3个完全不同的函数。即使它们是

2013-11-14 14:24:06 380

转载 C++运算符重载补充之不同数据间的类型转换

我们在使用重载的运算符时,往往需要在自定义数据类型和系统预定义的数据类型之间进行转换,或者需要在不同的自定义数据类型之间进行转换。今天就来讲讲C++中数据类型的转换。  1.对于系统的预定义基本类型数据,C++提供了两种类型转换方式:隐式类型转换和显式类型转换。int a=5,sum;double b=5.55; sum=a+b;//-------(1) std:

2013-11-14 13:33:55 765

转载 C++之运算符重载(2)

上一节主要讲解了C++里运算符重载函数,在看了单目运算符(++)重载的示例后,也许有些朋友会问这样的问题。++自增运算符在C或C++中既可以放在操作数之前,也可以放在操作数之后,但是前置和后置的作用又是完全不同的(q前置运算符:先加1,再赋值;后置运算符:先赋值,再加1)。那么要怎么重载它们,才可以有效的区分开来呢?今天我就来说说C++中是怎么处理前置运算符和后置运算符的重载的。以及介绍一下插入运

2013-11-14 13:02:36 646

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除