03 2019 档案

摘要:今天在linux下编译一个cpp文件时,报出了一个奇怪的错误:arning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] 改了好一会也不知道哪出问题了,一度怀疑人生.... 原来,当g++编译版本比较 阅读全文
posted @ 2019-03-16 21:26 leoncumt 阅读(6784) 评论(1) 推荐(2)
摘要:ifconfig 查看ip地址 cat cat主要有三大功能: 1.一次显示整个文件:cat filename 2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件. 3.将几个文件合并为一个文件:cat file1 file2 > file -b对非空输出行号 - 阅读全文
posted @ 2019-03-10 17:07 leoncumt 阅读(136) 评论(0) 推荐(0)
摘要:查看线程id函数: std::this_thread::get_id() 强制取引用: std::ref(); 如果不用ref()对对象强制取引用的话,在运行的时候,即使在函数声明时已经说明了使用引用接收,编译器还是会重新拷贝一个widget_data的对象。 阅读全文
posted @ 2019-03-10 16:56 leoncumt 阅读(152) 评论(0) 推荐(0)
摘要:使用detach()函数,让主线程和子线程分开运行,即使主线程运行完了,也就是这个进程已经结束了,而子线程还在继续运行,它将会交由操作系统托管,这将会导致很多的问题。 如果使用detach(): 1.如果线程传参数传递int这种简单的类型,不要传递引用,亲测编译器会报错。 2.如果传递的是一个类对象 阅读全文
posted @ 2019-03-10 16:25 leoncumt 阅读(534) 评论(0) 推荐(0)
摘要:我们知道,线程的创建方式有三种:通过函数入口创建,通过类对象创建,通过lambda表达式创建。 在创建线程的同时,可以同时传递多个参数,传参方式有以下几种: 1.传入函数参数 可以看到,使用join()函数,让主线程等待子线程执行完毕,主线程再输出。join的好处是使程序受我们自己控制。输出是: 2 阅读全文
posted @ 2019-03-10 16:12 leoncumt 阅读(3828) 评论(0) 推荐(0)
摘要:C++中的thread对象通常来说表达了执行的线程(thread of execution),这是一个OS或者平台的概念。 当thread::join()函数被调用后,调用它的线程会被block,直到线程的执行被完成。基本上,这是一种可以用来知道一个线程已结束的机制。当thread::join()返 阅读全文
posted @ 2019-03-07 21:25 leoncumt 阅读(7363) 评论(0) 推荐(0)
摘要:C++11语言本身支持了多线程。在以往,linux和windows下创建线程的方式是不一样的,这也就降低了程序的可移植性和可读性。 以前对多前程的了解不多,最近在看一些C++11的新特性,看到多线程这里,故做以记录。 创建线程的两种方式: 1.线程的入口必须是一个函数,那么就可以用函数的方式: 1) 阅读全文
posted @ 2019-03-07 21:20 leoncumt 阅读(3826) 评论(0) 推荐(0)
摘要:一.为何需要多进程(或者多线程),为何需要并发? 这个问题或许本身都不是个问题。但是对于没有接触过多进程编程的朋友来说,他们确实无法感受到并发的魅力以及必要性。 我想,只要你不是整天都写那种int main()到底的代码的人,那么或多或少你会遇到代码响应不够用的情况,也应该有尝过并发编程的甜头。就像 阅读全文
posted @ 2019-03-07 21:04 leoncumt 阅读(156) 评论(0) 推荐(0)
摘要:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 这里需要注意的是,必须创建一 阅读全文
posted @ 2019-03-07 20:59 leoncumt 阅读(129) 评论(0) 推荐(0)
摘要:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 阅读全文
posted @ 2019-03-07 20:50 leoncumt 阅读(113) 评论(0) 推荐(0)
摘要:以下程序的输出结果是( abc+abc=defdef) 1 char 2 cchar(char ch) 3 { 4 if(ch>=‘A’&&ch<=‘Z') ch=ch-‘A'+‘a';return ch; 5 } 6 main() 7 { char 8 s[]="ABC+abc=defDEF",* 阅读全文
posted @ 2019-03-07 20:41 leoncumt 阅读(249) 评论(0) 推荐(0)
摘要:今天工作中,linux下生成了一个4.9G的dump文件,当我想去统计dump文件的某个字符串的时候,却犯了难~ 这么大的文件,拷贝到winsows上得用多久啊,而且Notepad++不一定打得开。 这是就想到了可以使用vim中的查找字符串啊,查了以下怎么找,很快就解决了,果然vim大法好! 查找某 阅读全文
posted @ 2019-03-07 20:04 leoncumt 阅读(584) 评论(0) 推荐(0)
摘要:再记录一些.. > 或 >> 输出重定向,将命令行打印的内容重定向至文件中 & 后台运行,这个很赞,后台运行之后,还可以做其他的是,不用再新开一个窗口了 ulimit -a 查看关于线程的所有信息,相关的还有: -s 查看当前线程栈的大小 linux默认线程栈10M,windows默认线程栈1M(进 阅读全文
posted @ 2019-03-07 19:58 leoncumt 阅读(164) 评论(0) 推荐(0)
摘要:静态绑定和动态绑定是C++多态性的一种特性。 1、对象的静态类型和动态类型: 对象的静态类型: 对象在声明是采用的类型,在编译期确定; 对象的动态类型: 当前对象所指的类型,在运行期决定,对象的动态类型可以更改,但静态类型无法更改。 2、静态绑定和动态绑定 静态绑定: 绑定的是对象的静态类型,某特性 阅读全文
posted @ 2019-03-07 19:45 leoncumt 阅读(3029) 评论(0) 推荐(0)
摘要:上一篇说到了virtual关键字的使用范围以及虚函数。 先上一段代码: 输出是: 我是父类的构造函数我是子类1的构造函数~我是父类的析构函数 可见子类的析构函数并未被调用,因为delete掉的是指向父类的指针,子类的对象还是仍然存在,这是很危险的,子类的那一片内存空间并未被释放。 想要同时调用子类的 阅读全文
posted @ 2019-03-07 19:42 leoncumt 阅读(133) 评论(0) 推荐(0)
摘要:上一篇说到了virtual关键字的使用范围以及虚函数。 先上一段代码: 输出是: 我是父类的构造函数我是子类1的构造函数~我是父类的析构函数 可见子类的析构函数并未被调用,因为delete掉的是指向父类的指针,子类的对象还是仍然存在,这是很危险的,子类的那一片内存空间并未被释放。 想要同时调用子类的 阅读全文
posted @ 2019-03-07 19:41 leoncumt 阅读(329) 评论(0) 推荐(0)
摘要:写一个字符串拷贝函数,之前在笔试遇到过,发现这里面还有一些需要注意到的地方,故做以记录; 1.实现一个字符串拷贝功能,需要指向源串和目的串的指针,当遇到源串的值为‘\n’,表示拷贝结束 void strcpy(char* destStr,char* srcStr){ while((*destStr+ 阅读全文
posted @ 2019-03-07 08:03 leoncumt 阅读(506) 评论(0) 推荐(0)
摘要:使用指针的指针: 对于int **pp1 = &p1; 我们可以理解成取得p1的地址赋值给指针pp1,*pp1就是p1,**pp1就是val1。用下面的图来表示就是: 现在改写 *pp1 = p2 ,就是将p2存放的地址赋值给了p1,现在p1指向的地址为val2的值,所以现在int num= *p1 阅读全文
posted @ 2019-03-04 22:31 leoncumt 阅读(551) 评论(0) 推荐(0)