- 博客(68)
- 问答 (1)
- 收藏
- 关注
原创 Linux线程技术的概念与技术发展
Linux是一个多用户、多任务的操作系统。多用户是指多个用户可以在同一时间使用计算机系统;多任务是指Linux可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。在操作系统设计上,从进程(Process)演化出线程(Thread),最主要的目的就是更好地支持多处理器,并且减小(进程/线程)上下文切换的开销。进程和线程的关系 根据操作系统的定义,进程是系统资源管理
2014-07-30 15:14:12 384
转载 c++对象模型阅读笔记
C++对象模型阅读笔记默认构造函数,在下面四种情况下会生成nontrivial default constructor,这些constructor只能够满足编译器的需要,仅仅初始化base class subobject和member class object,所有其他的nonstatic member如指针、整数指针、整数数组等都不会被初始化。 带有“default constructor“的
2016-04-17 08:08:52 421
转载 linux信号详解
一 信号的种类可靠信号与不可靠信号, 实时信号与非实时信号可靠信号就是实时信号, 那些从UNIX系统继承过来的信号都是非可靠信号, 表现在信号不支持排队,信号可能会丢失, 比如发送多次相同的信号, 进程只能收到一次. 信号值小于SIGRTMIN的都是非可靠信号.非可靠信号就是非实时信号, 后来, Linux改进了信号机制, 增加了32种新的信号, 这些信
2016-04-02 21:19:27 604
转载 linux异步IO
Linux® 中最常用的输入/输出(I/O)模型是同步 I/O。在这个模型中,当请求发出之后,应用程序就会阻塞,直到请求满足为止。这是很好的一种解决方案,因为调用应用程序在等待 I/O 请求完成时不需要使用任何中央处理单元(CPU)。但是在某些情况中,I/O 请求可能需要与其他进程产生交叠。可移植操作系统接口(POSIX)异步 I/O(AIO)应用程序接口(API)就提供了这种功能。在本文中,
2016-04-02 21:16:02 290
原创 cpp头文件相关
1. cpp程序头文件主要描述了程序间共享的类,全局变量等,起到描述性的作用,应该尽量include其他头文件,把include其他头文件的行为放在源文件中进行,可以减少依赖的程度;2. 头文件或者源文件中include的头文件,最好不要包含路径信息,而是将路径放在Makefile中用-I指定,可以提高移植性;3. 在g++中INCLUDE用来指定include的头文件,-I指定头文件所在
2016-03-06 11:12:21 565
转载 C++的默认拷贝构造函数/深拷贝/浅拷贝详解
http://www.cnblogs.com/xwdreamer/archive/2012/04/01/2428016.html
2015-06-11 08:12:35 459
转载 讲解c++ shared_ptr很好的资料
http://www.cnblogs.com/hujian/archive/2012/12/10/2810754.html
2015-05-28 16:23:07 457
转载 C++流状态的查询和控制
源自c++primer 4th, 248页代码#include #include #include using namespace std;int main(){ int ival; while(cin >> ival, !cin.eof()) { cout "hello:" endl; if(cin
2015-05-20 15:50:20 545
转载 C++中的cout高阶高级化操作
这篇文章主要讲解如何在C++中使用cout进行高级的格式化输出操作,包括数字的各种计数法(精度)输出,左或右对齐,大小写等等。通过本文,您可以完全脱离scanf/printf,仅使用cout来完成一切需要的格式化输入输出功能(从非性能的角度而言)。更进一步而言,您还可以在、上使用这些格式化操作,从而代替sprintf和fprintf函数。为方便描述,下文仅以cout为例进行介绍。 一、综述
2015-05-19 22:09:00 442
转载 STL运用的C++技术——后记
至此,STL运用的C++技术系列的文章告一段落。一共是7篇文章。主要参考了《C++ Primer》和《STL源码剖析》两本书,另外源码参考的是HP的STL源码。 STL运用的C++技术(1)——成员模板 STL运用的C++技术(2)——模板特化 STL运用的C++技术(3)——模板实参推断
2015-05-16 15:58:58 416
转载 STL运用的C++技术(7)——代码整合
本文将6篇文章中出现的代码整合在一起,主要参考了HP的STL源码。通过这些代码,不仅可以看到这些C++技术在STL中的运用,同时也能大致了解STL的架构组织及实现方法。首先给出一个测试用例,所有代码都是自定义的,未用到STL。读者可以建立一个C++工程,把这些代码加进去,就可以运行起来。方便之处在于,读者可以修改这些代码,实现一些自己的功能,以加深对于STL的理解。 STL真
2015-05-16 15:58:14 418
转载 STL运用的C++技术(6)——函数对象
STL是C++标准库的重要组成部分之一,它不仅是一个可复用的组件库,更是一个包含算法与数据结构的软件框架,同时也是C++泛型编程的很好例子。STL中运用了许多C++的高级技术。本文介绍函数对象,其实是接上一篇的话题,因为函数对象本质上还是重载操作符。主要参考了《C++ Primer》和《STL源码剖析》。 可以为类类型的对象重载函数调用操作符,定义了调用操作符的类,其对象称之为函
2015-05-16 15:57:33 352
转载 STL运用的C++技术(5)——重载操作符
STL是C++标准库的重要组成部分之一,它不仅是一个可复用的组件库,更是一个包含算法与数据结构的软件框架,同时也是C++泛型编程的很好例子。STL中运用了许多C++的高级技术。本文介绍重载操作符。主要参考了《C++ Primer》和《STL源码剖析》。 重载操作符是具有特殊名称的函数:保留了operator后接需定义的操作符符号。这是《C++ Primer》中的定义。在STL中
2015-05-16 15:55:47 355
转载 STL运用的C++技术(3)——模板实参推断
STL是C++标准库的重要组成部分之一,它不仅是一个可复用的组件库,更是一个包含算法与数据结构的软件框架,同时也是C++泛型编程的很好例子。STL中运用了许多C++的高级技术。本文介绍模板实参推断的运用。主要参考了《C++ Primer》和《STL源码剖析》。 STL利用模板模板实现的,比如它的算法都是一个个的函数模板。我们知道模板是一个公式或是蓝图,本身不是类或是函数,需进行
2015-05-16 15:54:55 381
转载 STL运用的C++技术(2)——模板特化
STL是C++标准库的重要组成部分之一,它不仅是一个可复用的组件库,更是一个包含算法与数据结构的软件框架,同时也是C++泛型编程的很好例子。STL中运用了许多C++的高级技术。本文介绍模板特化技术的运用。主要参考了《C++ Primer》和《STL源码剖析》。 STL中大量运用了模块,可以说模板是创建类或函数的公式。但是,我们并不总能写出对所有可能被实例化的类型都最合适的模板。举个
2015-05-16 15:54:53 356
转载 STL运用的C++技术(1)——成员模板
STL是C++标准库的重要组成部分之一,它不仅是一个可复用的组件库,更是一个包含算法与数据结构的软件框架,同时也是C++泛型编程的很好例子。STL中运用了许多C++的高级技术。本文介绍成员模板的运用。主要参考了《C++ Primer》和《STL源码剖析》。 成员模板 member template 任意类(模板或非模板)可以拥有本身为类模板或函数模板
2015-05-16 15:54:09 366
转载 STL运用的C++技术(4)---函数重载
STL是C++标准库的重要组成部分之一,它不仅是一个可复用的组件库,更是一个包含算法与数据结构的软件框架,同时也是C++泛型编程的很好例子。STL中运用了许多C++的高级技术。本文介绍重载操作符。主要参考了《C++ Primer》和《STL源码剖析》。 重载操作符是具有特殊名称的函数:保留了operator后接需定义的操作符符号。这是《C++ Primer》中的定义。在STL中
2015-05-16 15:51:29 338
转载 skiplist详解
skiplist介绍跳表(skip List)是一种随机化的数据结构,基于并联的链表,实现简单,插入、删除、查找的复杂度均为O(logN)。跳表的具体定义,请参考参考维基百科 点我,中文版。跳表是由William Pugh发明的,这位确实是个大牛,搞出一些很不错的东西。简单说来跳表也是链表的一种,只不过它在链表的基础上增加了跳跃功能,正是这个跳跃的功能,使得在查找元
2015-05-14 09:51:00 783
转载 c++中的四种类型转化详解
隐式转换(implicit conversion)short a=2000;int b;b=a;short是两字节,int是四字节,由short型转成int型是宽化转换(bit位数增多),编译器没有warning,如下图所示。宽化转换(如char到int,int到long long,int到float,float到double,int到double等)构成隐式转换,
2015-05-13 21:44:59 3726
转载 typedef函数指针的用法(C++)
代码简化, 促进跨平台开发的目的. typedef 行为有点像 #define 宏,用其实际类型替代同义字。 不同点:typedef 在编译时被解释,因此让编译器来应付超越预处理器能力的文本替换。用法一:typedef int (*MYFUN)(int, int);这种用法一般用在给函数定义别名的时候上面的例子定义MYFUN 是一个函数指针, 函数类
2015-05-11 23:13:46 351
转载 shell命令行工具curl详解
curl是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。它支持多种协议,下面举例讲解如何将它用于网站开发。一、查看网页源码直接在curl命令后加上网址,就可以看到网页源码。我们以网址www.sina.com为例(选择该网址,主要因为它的网页代码较短): curl www.sina.com
2015-05-11 22:51:32 6341
转载 C++中explicit关键字的作用
explicit用来防止由构造函数定义的隐式转换。要明白它的作用,首先要了解隐式转换:可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换。例如:class things{ public: things(const std::string&name =""): m_name(name),height
2015-03-23 10:21:31 283
转载 C++之标准转换const_cast讲解
前面讲了C++继承并扩展C语言的传统类型转换方式,最后留下了一些关于指针和引用上的转换问题,没有做详细地讲述。C++相比于C是一门面向对象的语言,面向对象最大的特点之一就是具有“多态性(Polymorphism)”。要想很好的使用多态性,就免不了要使用指针和引用,也免不了会碰到转换的问题,所以在这一篇,就把导师讲的以及在网上反复查阅了解的知识总结一下。C++提供了四个转换运算符:
2015-03-08 11:44:21 521
转载 string==NULL 和*str=='\0'的不同
if(*str == '\0') if(str == NULL)前面是判断str指向的内容,前提是str要指向可访问的区域,判断了一个字符大小的内容;后面是判断str本身指向的地方是什么地方。前面可用来判断str指向的字符串是否为空;后面可用来判断str字符串是否存在。
2015-02-08 07:58:31 665
转载 C++ STL 一般总结
一、一般介绍 STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高
2015-01-29 20:55:01 391
转载 Python 标准库 urllib2 的使用细节
Python 标准库中有很多实用的工具类,但是在具体使用时,标准库文档上对使用细节描述的并不清楚,比如 urllib2 这个 HTTP 客户端库。这里总结了一些 urllib2 库的使用细节。 1 Proxy 的设置2 Timeout 设置3 在 HTTP Request 中加入特定的 Header4 Redirect5 Cookie6 使用 HTT
2015-01-05 14:49:32 370
转载 IP欺骗
IP欺骗 即使是很好的实现了TCP/IP协议,由于它本身有着一些不安全的地方,从而可以对TCP/IP网络进行攻击。这些攻击包括序列号欺骗,路由攻击,源地址欺骗和授权欺骗。本文除了介绍IP欺骗攻击方法外,还介绍怎样防止这个攻击手段。 上述攻击是建立在攻击者的计算机(包括路由)是连在INTERNET上的。这里的攻击方法是针对TCP/IP本身的缺陷的,而不是某一具体的实现。实
2015-01-02 19:49:42 1939
转载 linux的hostname修改详解
Linux操作系统的hostname是一个kernel变量,可以通过hostname命令来查看本机的hostname。也可以直接cat /proc/sys/kernel/hostname查看。 #hostname #cat /proc/sys/kernel/hostname 上面两种输出结果相同。 修改运行时Linux系统的hostname,即不需要重启
2014-12-05 22:45:43 434
原创 消息队列的介绍和原理
消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走。通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。 消息中间件概述消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走。通过消息队列,应用程序可独立地执行--它
2014-10-08 00:22:11 808
转载 求递增正数数组的子数组之和等于给定值
问题:1. 给定一个数组其每个元素都是正数,和一个给定值M,求所有连续的子数组其和等于M。2. 给定一个正数N,求所有和为N的连续正数序列。这类求子数组之和的问题与编程之美2.12——快速寻找满足条件的两个数或三个数问题的求解思路相似,都是可用双指针法在O(n)的时间内解决。1.解法:我们让两个指针i,j都从数组的第一个元素开始,记变量sum
2014-09-26 17:14:52 655
转载 最长回文串的解法
最长回文子串是最初我在网易笔试的时候遇见的,当时天真的把原字符串S倒转过来成为S‘,以为这样就将问题转化成为了求S和S’的最长公共子串的问题,而这个问题是典型的DP问题,我也在前面的文章中介绍了3中解决这个问题的方法。但是非常可惜,后来才知道这个算法是不完善的。那么到底为什么呢?听我慢慢道来。S=“c a b a” 那么 S' = “a b a c”, 这样的情况下 S和 S‘的最长公
2014-09-26 16:51:00 664
原创 C语言中的内存分类
(1)栈(stack):由编译器自动分配释放,存放函数的参数值、局部变量的值、返回地址等,其操作方式类似于数据结果中的栈。栈又称堆栈, 是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{ }”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回
2014-09-17 23:16:47 493
转载 linux core文件介绍
1. core文件的简单介绍在一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。2. 开启或关闭core文件的生成用以下命令来阻止系统生成core文件:ulimit -c 0下面的命令可以检查生成core文件的选项是否打开:ulimit -a该命令将显示所有的用户定制,其中选项
2014-09-03 20:32:29 296
转载 gdb调试多线程基础解析
先介绍一下GDB多线程调试的基本命令。info threads 显示当前可调试的所有线程,每个线程会有一个GDB为其分配的ID,后面操作线程的时候会用到这个ID。 前面有*的是当前调试的线程。thread ID 切换当前调试的线程为指定ID的线程。break thread_test.c:123 thread all 在所有线程中相应的行上设置断点thread app
2014-08-25 23:12:48 363
转载 二叉树先序、中序、后序三种遍历的非递归算法
本贴给出二叉树先序、中序、后序三种遍历的非递归算法,此三个算法可视为标准算法。1.先序遍历非递归算法#define maxsize 100typedef struct{ Bitree Elem[maxsize]; int top;}SqStack;void PreOrderUnrec(Bitree t){ SqStack s;
2014-08-05 23:09:16 498
转载 c语言中的字符数组与字符串
1、字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定
2014-08-02 10:53:41 496
转载 linux pthread线程详解
Posix线程编程指南(1) 内容: 一、 线程创建 二、线程取消 关于作者 线程创建与取消 杨沙洲(pubb@163.net) 2001 年 10 月 这是一个关于Posix线程编程的专栏。作者在阐明概念的基础上,将向您详细讲述Posix线程库API。本文是第一篇将向您讲述线程的创建与取消。 一、 线程创建 1.1
2014-08-01 18:14:34 3591
转载 C语言——定义&&声明
1.变量的定义&声明变量的声明有两种情况:一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。另一种是不需要建立存储空间的。 例如:extern int a 其中变量a是在别的文件中定义的。前者是“定义性声明(defining declaration)”或者称为“定义(definition)”,而后者是“引用性声明(referncing d
2014-07-31 15:42:22 386
转载 深入Phtread(一):线程的一生
我们每个人都并行地活在这个世界上 ,每一天每个人都干着不同的事情。每个人的人生都是不同的,从出生 -> 活着 -> 死去, 个中滋味,只能自己体味了。我们的线程兄弟也一样,只不过它的环境没有人类社会这么复杂,它的一生,被操作系统控制,被我们程序员控制着!呵呵,想想都觉得这兄弟可怜啊!不过这哥们可不许小瞧了,功能大了去了!具体线程的定义和好处参考其它关于线程的资料。该篇主要讲线程兄弟的大体的一生(从
2014-07-30 15:18:50 411
转载 深入Phtread(二):线程的同步-Mutex
并行的世界,没有同步,就失去了秩序,就会乱作一团!试想,交通没有红绿灯,生产线产品装配没有一定的顺序... 结果是显而易见的。多个线程也需要同步,否则程序运行起来结果不可预测,这是我们最不能容忍的。交通的同步机制就是红绿灯,Pthread提供了互斥量(mutex)和条件变量(Condition Variables)两种机制去同步线程。不变量,临界区和判定条件互斥量(Mute
2014-07-30 15:15:41 341
空空如也
关于xcap中的一个问题
2014-04-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人