
c/c++
文章平均质量分 73
晚起的鸟
哈哈哈
展开
-
c++的一些开源库(待补充修改)
C++开源库,欢迎补充。C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年。因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应 用。当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的曾经的C++程序员,以为C++要就此沉沦,未料,这三年来,C++的生命力突然被 严重地增强了。主力原因就是开源的软件、基础软件(比如并发原生支持,比如A原创 2015-01-28 14:14:29 · 974 阅读 · 0 评论 -
c/c++原子锁应用(跨平台)
前言:今天在修改amf库时发现两个函数,InterlockedIncrement()、InterlockedDecrement(),查资料知道这是关于原子锁的,而这是windows下的系统函数,那么对应的linux下也应该有此函数了......一.windows下的原子锁。。。。(待续)二.linux下的原子锁进化2.1网上先是找到了atomic_t ,atomic_inc原创 2015-01-10 17:44:18 · 2962 阅读 · 0 评论 -
typedef-------typedef void (*sighandler_t)(int)的区别
typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sighandler_t handler);此处由于加了typedef自定义了一个新类型sighandler_t,所以第二行的函数原型看起来顺眼多了,形式跟int func(char c, int i)无异,但是如果看不懂typedef语句,这两句原创 2015-01-08 15:51:38 · 791 阅读 · 0 评论 -
c++模板
1.什么是模板假设现在我们完成这样的函数,给定两个数x和y求式子x^2 + y^2 + x * y的值 .考虑到x和y可能是 int , float 或者double类型,那么我们就要完成三个函数:int fun(int x,int y);float fun(float x,float y);double fun(double x,double y);并且每个fun函数内部所要原创 2014-12-25 17:07:14 · 698 阅读 · 0 评论 -
c++运算符重载2
上一节主要讲解了C++里运算符重载函数,在看了单目运算符(++)重载的示例后,也许有些朋友会问这样的问题。++自增运算符在C或C++中既可以放在操作数之前,也可以放在操作数之后,但是前置和后置的作用又是完全不同的(q前置运算符:先加1,再赋值;后置运算符:先赋值,再加1)。那么要怎么重载它们,才可以有效的区分开来呢?今天我就来说说C++中是怎么处理前置运算符和后置运算符的重载的。以及介绍一下插入运原创 2014-12-18 17:05:40 · 784 阅读 · 0 评论 -
c++运算符重载1
在前一节中曾提到过,C++中运行时的多态性主要是通过虚函数来实现的,而编译时的多态性是由函数重载和运算符重载来实现的。这一系列我将主要讲解C++中有关运算符重载方面的内容。在每一个系列讲解之前,都会有它的一些基础知识需要我们去理解。而运算符重载的基础就是运算符重载函数。所以今天主要讲的是运算符重载函数。 1.运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用域不同类型的数据导致不同行原创 2014-12-18 16:40:19 · 767 阅读 · 0 评论 -
关于openssl加解密文件的几个API
今天心血来潮突然想搞搞openssl了,趁着端午小假,刚好有空可以鼓捣孤岛自己喜欢的东西,出去东奔西跑的实在太造孽了,还是宅起来给自己充充电吧。下载openssl最新代码1.0.1g,修复了“心血漏洞”那个版本。编译安装那些小儿科的东西就不再浪费笔墨了,如果出现头文件或者库文件之类的错误,请在本人博客里寻找相关文章,应该主要集中在动态库那几篇博文。反正我在自己虚拟机里安装的时候是妥妥滴。原创 2014-12-04 08:34:08 · 3931 阅读 · 0 评论 -
linux下apache+openssl配置记录
最近在研究linux下的apache-ssl配置,写点个人小心得,新人发博,敬请见谅。 软件环境 Apache Httpd 2.2.29 (http://httpd.apache.org ) OpenSSL 1.0.1h (http://www.openssl.org/source )SSL-Tools (http://www.openssl.org/contrib/s原创 2014-09-29 09:49:11 · 2111 阅读 · 0 评论 -
linux串口编程总结
串口本身,标准和硬件 †串口是计算机上的串行通讯的物理接口。计算机历史上,串口曾经被广泛用于连接计算机和终端设备和各种外部设备。虽然以太网接口和USB接口也是以一个串行流进行数据传送的,但是串口连接通常特指那些与RS-232标准兼容的硬件或者调制解调器的接口。虽然现在在很多个人计算机上,原来用以连接外部设备的串口已经广泛的被USB和Firewire替代;而原来用以连接网络的串口则被以太网替代,原创 2014-09-18 14:29:01 · 1175 阅读 · 0 评论 -
c++11线程之条件变量condition_variable(二)
题目:编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。采用C++11实现:[cpp] view plaincopyprint?#include #include #include #include using names原创 2014-08-21 16:00:07 · 1416 阅读 · 0 评论 -
c++11线程之条件变量condition_variable(一)
题目:子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码。[cpp] view plaincopyprint?#include #include #include #include using namespace std; mutex m; co原创 2014-08-21 14:51:39 · 1374 阅读 · 0 评论 -
c++xml解析之tinyxml2
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。原创 2014-08-20 11:10:13 · 931 阅读 · 0 评论 -
C++IO之文件操作
前两节介绍了C++的IO流类库,标准设备IO操作流中部分预定义流对象的成员函数以及IO格式控制。那今天我将继续介绍关于C++中的流操作内容——文件IO操作流fstream。并会着重讲解C++是如何对文件进行操作的。 文件指存放在外部介质上的数据的集合。大家都知道操作系统是以文件为单位来对数据进行管理的。因此如果你要查找外部介质的数据,则先要按文件名找到指定文件,然后再从文件中读取数据,如果要原创 2014-08-12 16:24:23 · 882 阅读 · 0 评论 -
c++IO之预定义格式控制
在C语言里,我们可以通过函数printf和scanf来进行格式化控制。而在C++中仍然包含了前者,但还提供了以下两种格式控制的方法:(1)使用流成员函数进行格式控制;(2)使用预定义操作符进行格式控制。下面我来一一介绍: 1.流成员函数主要是指ios类(流基类)中的,分别有:(1).设置状态标志流成员函数setf一般格式:long ios::setf(long flags),调用格式原创 2014-08-11 12:42:41 · 832 阅读 · 0 评论 -
c++IO之标准设备操作流
每种语言系统都会提供IO操作的类库,用于对预定义类型数据进行输入输出的操作。C++也是如此,它是以字节流的形式实现的。在输入操作时,字节流从输入设备(键盘、磁盘)流向内存;在输出操作时,字节流由内存流向输出设备(显示器、打印机);字节流可以是ASCII字符、二进制数据、图形图像、音频视频等信息。文件和字符串也可以看成是有序的字节流,又称为文件流和字符串流。C++的编译系统自带一个面向对象的输入输出原创 2014-08-11 11:02:38 · 1255 阅读 · 0 评论 -
linuxc多线程参数传递
#include #include struct stu { int age; char *name; char *num;}; void thread1(void){ int i; for(i=0;i { printf("This is a pthread1.\n");原创 2014-08-08 10:47:28 · 1462 阅读 · 0 评论 -
linuxc线程信号-pthread_cond_wait理解
pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t*mutex)函数传入的参数mutex用于保护条件,因为我们在调用pthread_cond_wait时,如果条件不成立我们就进入阻塞,但是进入阻塞这个期间,如果条件变量改变了的话,那我们就漏掉了这个条件。因为这个线程还没有放到等待队列上,所以调用pthread_cond_wait前要先原创 2014-07-17 15:21:45 · 964 阅读 · 0 评论 -
pthread_count_t与pthread_mutex_t的运用
#include #include #include pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;/*初始化互斥锁*/pthread_cond_t cond = PTHREAD_COND_INITIALIZER;/*初始化条件变量*/void *thread1(void *);void *thread2(void *)原创 2014-07-17 15:09:11 · 938 阅读 · 0 评论 -
linuxc_线程锁pthread_mutex_t
在线程实际运行过程中,我们经常需要多个线程保持同步。这时可以用互斥锁来完成任务;互斥锁的使用过程中,主要有pthread_mutex_init,pthread_mutex_destory,pthread_mutex_lock,pthread_mutex_unlock这几个函数以完成锁的初始化,锁的销毁,上锁和释放锁操作。一,锁的创建 锁可以被动态或静态创建,可以用宏PTHRE原创 2014-07-17 10:52:07 · 1309 阅读 · 0 评论 -
linux c中的僵尸问题
给进程设置僵尸状态的目的是维护子进程的信息,以便父进程在以后某个时间获取。这些信息包括子进程的进程ID、终止状态以及资源利用信息(CPU时间,内存使用量等等)。如果一个进程终止,而该进程有子进程处于僵尸状态,那么它的所有僵尸子进程的父进程ID将被重置为1(init进程)。继承这些子进程的init进程将清理它们(init进程将wait它们,从而去除僵尸状态)。 但通常情况下,我们是原创 2014-06-04 09:15:51 · 832 阅读 · 0 评论 -
linuxc多进程与外部程序调用(转载)
最近在学习linux环境高级编程,多进程编程算是编程中的最重要的一个部分了,本文让我学习和明白了很多,所以转载过来。让更多想多线程编程的人学习。只有顶到首页才能让更多的人学习。文章摘要: 多线程程序设计的概念早在六十年代就被提出,但直到八十年代中期,Unix系统中才引入多线程机制,如今,由于自身的许多优点,多线程编程已经得到了广泛的应用。本文我们将介绍在Linux下编写多进程和多线程原创 2014-03-28 09:57:57 · 3327 阅读 · 1 评论 -
c++文件操作总结
一.概括:C++ 通过以下几个类支持文件的输入输出:ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstream: 可同时读写操作的文件类 (由iostream引申而来) 二.打开文件:对这些类的一个对象所做的第一个操作通常就是将它和一个真正的文件联系起来,也就是说打开一个文原创 2014-03-26 10:29:10 · 1048 阅读 · 0 评论 -
linux下关于服务端断开后客户端自动退出的问题
问题描述:谢了一个客户端和服务端,正常运行后,客户端不断向服务端发送消息,当服务端跟客户端断开连接或者把服务端关闭后,客户端会再发送一次消息后自动退出。而有些情况我们不希望这种情况发生。原因分析:简单的说就是服务端关闭后,客户端给服务端发送了一条信息,服务端已经关闭,则客户端收到信息,产生SIGPIPE信号,这个信号告诉进程关闭,我们要做的就是捕获这个信号让它按自己的意愿进行解决方法:原创 2014-03-25 16:47:00 · 3570 阅读 · 0 评论 -
c++容器总结
在面向对象程序中,大多引入了容器的概念。那么什么是容器?实质上是一组相同类型对象的集合,但它不仅仅是数组那么简单,它实现了比数组更复杂的数据结构,能够实现更复杂的功能。C++标准模版库里提供了10种通用的容器,它基本可以解决程序中遇到的大部分问题。什么是容器C++中容器的定义如下:数据存储上,有一种对象类型,它可以持有其他对象或指向其他对象的指针,这种对象类型叫容器。通俗的说容器就原创 2014-03-01 10:47:50 · 1107 阅读 · 0 评论 -
map函数应用总结
一.insert()直接上直接上代码,两种方式:map m_map;m_map.insert(map::value_type("hello",5)); m_map.insert(make_pair("hello",5)); //makepair就是value_type也就是说,insert后面的数据是pair类型或者是value_type类型了,然而对C++有了原创 2014-02-28 13:31:00 · 939 阅读 · 0 评论 -
C++适配器概括
C++ primer中关于适配器的定义——适配器(adaptor): 是使一种事物的行为类似于另外一事物的行为的一种机制。这个定义初学时觉得好抽象。为了理解C++中的适配器,不妨先了解物理上的适配器。物理上的适配器就是一个接口转换器,它可以是一个独立的硬件接口设备,允许硬件或电子接口与其它硬件或电子接口相连,也可以是信息接口。比如:电源适配器、三角架基座转接部件、USB与串口的原创 2014-02-27 15:02:15 · 1001 阅读 · 0 评论 -
gcc编译静态库和动态库
环境:linux、gcc一。静态编译与动态编译 动态编译的可执行文件需要附带一个的动态链接库。在执行时,需要调用其对应动态链接库中的命令。所以其优点一方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了系统资源。缺点一是哪怕是很简单的程序,只用到了链接库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没有安装对应的运行库,则用原创 2014-01-15 09:48:22 · 1188 阅读 · 0 评论 -
arm交叉编译器编译boost库并调用(记录)
环境:ubuntu12.04 arm9 arm-none-linux-gnueabi-g++安装:1. 确保ARM编译成功安装,并配置好环境变量。 2. 解压boost压缩包 3. 进入目录执行./bootstrap.sh, 此时形成bjam文件和project-config.jam 4. 编辑project-config.jam, 仅修改using gcc这行。因为我原创 2014-01-13 17:39:32 · 10512 阅读 · 0 评论 -
boost库安装测试
1. 安装boost库 sudo apt-get install libboost-all-dev2测试test.cpp#include #include int main(){ using boost::lexical_cast; int a = lexical_cast("123");原创 2014-01-11 10:29:13 · 3605 阅读 · 0 评论 -
linuxc计算CPU使用率/c+shell获取系统top信息
说明:在linux环境下实现2秒一次的监控cpu使用率。#include #include #include // cpu infostruct occupy { char name[20]; unsigned int user; unsigned int nice; unsigned int system; unsigned int idle;原创 2014-01-08 11:24:37 · 2897 阅读 · 0 评论 -
linuxc获取shell输出值
1. 前言 Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。比如实现一个ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统的ping命令呢?通常在程序中通过 system函数来调用shell命令。但是,system函数仅返回命令是否执行成功,而我原创 2014-01-07 17:15:21 · 1709 阅读 · 0 评论 -
static作用
1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令; 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。 3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。 4)栈——增长方向:自顶向下增长;自动变量以及每次函数调用时所需要保存的信息(返回地址原创 2013-11-11 16:32:10 · 1095 阅读 · 0 评论