04 2012 档案

摘要:提示找不到msvcr71.dll 怎么办msvcr71.dll文件下载,下载之后、解压然后复制到C:\WINDOWS\system32文件夹下即可。 阅读全文
posted @ 2012-04-28 15:20 笑笑小白 阅读(1935) 评论(0) 推荐(0)
摘要:程序移植到新vs2008环境中发现不能设置断点,查了下才知道是源文件版本对应问题,这样设置一下就可以了:VS 2008中选择工具->选项->调试->常规中有个选项,要求源文件与原始版本完全匹配,vs2008默认的是选中的,取消就OK了!如果是在debug下:1.检查工程配置是否设置正确。C++>General->Debug Information Format->Program Database (/Zi)C++>Optimization->Optimization->Disabled (/Od)Linker->Debugging-& 阅读全文
posted @ 2012-04-28 11:54 笑笑小白 阅读(4618) 评论(1) 推荐(0)
摘要:原帖与示例代码地址:http://www.codeproject.com/KB/cpp/MemoryPool.aspx译者点评:一个简单的内存池实现,附有源码,简单易懂,适合入门。概述在c/c++中,内存分配(如malloc或new)会使用很多时间。一个程序会随着长时间的运行和内存的申请释放而变得越来越慢,内存也会随着时间逐渐碎片化。特别是高频率的进行小内存申请释放,此问题变得尤其严重。解决方案:定制内存池为解决上述问题,一个(可能的)的解决方案就是使用内存池。“内存池”在初始化时,分配一个大块内存(称 原始内存块),并且将此内存分割为一些小的内存块。当你需要请求分配内存时,则从内存池中取出事 阅读全文
posted @ 2012-04-27 17:50 笑笑小白 阅读(8514) 评论(0) 推荐(3)
摘要:今天本来是问内存池的问题问着问着 就变成 原来我对 new和malloc的区别都没有整明白new 是相当于 malloc加上构造函数对话:ly 15:16:11 内存池的那一块 比如WEB 上面基本就是主要是 new HttpEventHandler 这个 要对这个 做一个内存池那可以这样设计吗?比如建一个list 保存 n个HttpEventHandler 一次性的new 这n个HttpEventHandler 然后来一个请求 就从队列中取一个 这种方式?xx15:17:04 你想问什么呢?你是想问怎么做,还是想问你这种想法可不可以?ly 15:20:00 这种方法可不可... 阅读全文
posted @ 2012-04-27 16:13 笑笑小白 阅读(343) 评论(0) 推荐(0)
摘要:没有内存池的时候,你只是用new直接创建了一个对象,但是new的过程分为两步,首先是分配内存,然后是调用构造函数。内存池就只是负责内存的分配,有了内存池后,你再去创建对象时候,只需要先从内存池中取出内存,然后再在取出的内存上调用对象的构造函数,产生你需要的对象如何让new操作符不分配内存,只调用构造函数问题:c++中的new操作符 通常完成两个工作 分配内存及调用相应的构造出世核函数。请问:1)如何让new操作符不分配内存,只调用构造函数?2) 这样的用法有什么用?解答:(要求new显式调用构造函数,但不分配内存。)题目要求不能生成内存 还要调用构造函数 说明这个类里面没有对内部操作 但可以. 阅读全文
posted @ 2012-04-27 15:58 笑笑小白 阅读(7338) 评论(3) 推荐(0)
摘要:(所有示例的运行,将#序号所在main()函数去掉序号即可,参考[url]http://www.codeguru.com/cpp/cpp/cpp_mfc/stl/article.php/c15361/[/url])#1 #2get() 返回对象指针use_count() 返回对象的引用计数#3shared_ptr构造函数中,行参指定构造对象和析构对象的函数#4get() 返回对象指针,使用->调用成员函数#5get() 返回对象指针,if判断是否为null#6swap() 交换两个shared_ptr所指向的对象#7使用=赋值#8unique() 判断当前对象的引用计数==1?#9res 阅读全文
posted @ 2012-04-27 09:46 笑笑小白 阅读(5181) 评论(0) 推荐(0)
摘要:1、概要软件一般都有维护自己的日志,日志有一下几个作用:Ø通过查看日志,了解软件正在执行的操作,这一功能可以用于调试;Ø当软件发生错误时,可以从日志中找出错误原因。软件完善日志功能和日志库工具是两个不同的概念,前者需要程序员考虑所有可能的异常情况,并将其捕获然后写进日志,而后者是这一过程中的工具。本文将要介绍的是一款linux下用于C++的日志库:log4cplus。2、安装与配置安装#tar –jxvflog4cplus-1.0.4-rc4.tar.bz2*.tar.bz2#cd log4cplus-1.0.4-rc4#configure --prefix=/usr/lo 阅读全文
posted @ 2012-04-26 09:49 笑笑小白 阅读(3728) 评论(0) 推荐(0)
摘要:#include "stdlog.h"#include <log4cplus/logger.h>#include <log4cplus/consoleappender.h>#include <log4cplus/fileappender.h>#include <log4cplus/layout.h>#include <cstdio>#include <cstdarg>#include <vector>#include <sstream>// #include <iostre 阅读全文
posted @ 2012-04-25 17:58 笑笑小白 阅读(1609) 评论(0) 推荐(0)
摘要:网上一个热心的大牛分享了一个c++配置类,如下:Config.h[cpp]view plaincopy//Config.h#pragmaonce#include<string>#include<map>#include<iostream>#include<fstream>#include<sstream>/**\briefGenericconfigurationClass**/classConfig{//Dataprotected:std::stringm_Delimiter;//!<separatorbetweenkeyand 阅读全文
posted @ 2012-04-25 17:53 笑笑小白 阅读(951) 评论(0) 推荐(0)
摘要:1. 简介log4cplus是C++编写的开源的日志系统,The purpose of this project is to port the excellentLog for Java(log4j)logging library to C++。log4cplus具有灵活、强大、使用简单、多线程安全的特点,实在是杂牌军、游击队的福音。2. 安装使用(Linux)log4cplus安装使用非常简单,从其官网:http://log4cplus.sourceforge.net/ 下载最新版本运行:tar xvzf log4cplus-x.x.x.tar.gzcd log4cplus-x.x.x./c 阅读全文
posted @ 2012-04-25 14:46 笑笑小白 阅读(7183) 评论(1) 推荐(0)
摘要:网上一个热心的大牛分享了一个c++配置类,如下:Config.h[cpp]view plaincopy//Config.h#pragmaonce#include<string>#include<map>#include<iostream>#include<fstream>#include<sstream>/**\briefGenericconfigurationClass**/classConfig{//Dataprotected:std::stringm_Delimiter;//!<separatorbetweenkeyand 阅读全文
posted @ 2012-04-25 14:45 笑笑小白 阅读(676) 评论(0) 推荐(0)
摘要:1 下载log4cpp并解压。2 打开\log4cpp-0.3.4b\msvc6\msvc6.dsw 编译log4cpp工程Release版。3 将编译后的log4cpp.lib复制到VC的Lib目录中。4 将头文件的目录log4cpp-0.3.4b\include\log4cpp\ 复制到VC的Include目录. (或者添加log4cpp-0.3.4b\include到VC的Include环境变量)6 目标工程包含库log4cpp.lib ws2_32.lib(要选择库连接方式相同的库)5 包含头文件日志记录#include日志配置读取#includeNDC#include9 日志代码每个 阅读全文
posted @ 2012-04-25 11:58 笑笑小白 阅读(2453) 评论(1) 推荐(0)
摘要:tar格式: tar [选项] [文件目录列表]功能: 对文件目录进行打包备份选项:-c 建立新的归档文件-r 向归档文件末尾追加文件-x 从归档文件中解出文件-O 将文件解开到标准输出-v 处理过程中输出相关信息-f 对普通文件操作-z 调用gzip来压缩归档文件,与-x联用时调用gzip完成解压缩-Z 调用compress来压缩归档文件,与-x联用时调用compress完成解压缩1.用tar打包一个目录下的文件:#tar -cvf /mnt/lgx/a1.doc生成一个以.tar为扩展名的打包文件2.用tar解开打包文件:#tar -xvf /mnt/lgx/a1.doc.tar通常情况下 阅读全文
posted @ 2012-04-25 09:44 笑笑小白 阅读(4863) 评论(0) 推荐(0)
摘要:log4cplus在很多方面做的都很出色,但是使用过程有些地方感觉不爽。在继续吹捧之前我先把不爽之处稍微提一提,然后继续介绍关于线程和套接字的知识。### 一些可以改进之处 ###1. 用户自定义LogLevel的实现机制不够开放在第五篇中曾经介绍过如何实现用户自行定义LogLevel,为了实现比较理想的效果,甚至还需要改log4cplus的源代码。:(2. 生成Logger对象的机制可以改进我在使用时候,经常需要在不同的文件、函数中操作同一个logger,虽然log4cplus实现了树状存储以及根据名称生成Logger,却没有充分利用这样的特点确保同一个名称对应的logger对象的唯一性,比 阅读全文
posted @ 2012-04-25 09:40 笑笑小白 阅读(1011) 评论(0) 推荐(0)
摘要:经过短暂的熟悉过程,log4cplus已经被成功应用到了我的项目中去了,效果还不错,:)除了上文提及的功能之外,下面将介绍log4cplus提供的线程和套接字的使用情况。### NDC ###首先我们先了解一下log4cplus中嵌入诊断上下文(Nested Diagnostic Context),即NDC。对log系统而言,当输入源可能不止一个,而只有一个输出时,往往需要分辩所要输出消息的来源,比如服务器处理来自不同客户端的消息时就需要作此判断,NDC可以为交错显示的信息打上一个标记(stamp), 使得辨认工作看起来比较容易些,呵呵。这个标记是线程特有的,利用了线程局部存储机制,称为线程私 阅读全文
posted @ 2012-04-25 09:40 笑笑小白 阅读(1568) 评论(0) 推荐(0)
摘要:日志系统的另一个基本功能就是能够让使用者按照自己的意愿来控制什么时候,哪些log信息可以输出。如果能够让用户在任意时刻设置允许输出的LogLevel的信息就好了,log4cplus通过LogLevelManager、LogLog、Filter三种方式实现了上述功能。### 优先级控制 ###在研究LogLevelManager之前,首先介绍一下log4cplus中logger的存储机制,在log4cplus中,所有logger都通过一个层次化的结构(其实内部是hash表)来组织的,有一个Root级别的logger,可以通过以下方法获取: Logger root = Logger::getRoo 阅读全文
posted @ 2012-04-25 09:39 笑笑小白 阅读(2828) 评论(0) 推荐(1)
摘要:将log信息记录到文件应该说是日志系统的一个基本功能,log4cplus在此基础上,提供了更多的功能,可以按照你预先设定的大小来决定是否转储,当超过该大小,后续log信息会另存到新文件中,依次类推;或者按照日期来决定是否转储。本文将详细介绍这些用法。### 如何将log记录到文件 ###我们在例5中给出了一个将log记录到文件的例子,用的是FileAppender类实现的,log4cplus提供了三个类用于文件操作,它们是FileAppender类、RollingFileAppender类、DailyRollingFileAppender类。1. FileAppender类实现了基本的文件操作 阅读全文
posted @ 2012-04-25 09:38 笑笑小白 阅读(2988) 评论(0) 推荐(1)
摘要:本文介绍了三种控制输出格式的布局管理器的概念和使用情况,通过掌握这些知识,可以更有效地控制log系统输出尽可能贴近你需求的信息来。### 如何控制输出消息的格式 ###前面已经讲过,log4cplus通过布局器(Layouts)来控制输出的格式,log4cplus提供了三种类型的Layouts,分别是SimpleLayout、PatternLayout、和TTCCLayout。其中:1. SimpleLayout是一种简单格式的布局器,在输出的原始信息之前加上LogLevel和一个"-"。比如以下代码片段: ... ... /* step 1: Instantiate an 阅读全文
posted @ 2012-04-25 09:38 笑笑小白 阅读(3167) 评论(0) 推荐(1)
摘要:本文介绍了使用log4cplus有六个步骤,并提供了一些例子引导你了解log4cplus的基本使用。### 基本使用 ###使用log4cplus有六个基本步骤:1. 实例化一个appender对象2. 实例化一个layout对象3. 将layout对象绑定(attach)到appender对象4. 实例化一个logger对象,调用静态函数:log4cplus::Logger::getInstance("logger_name")5. 将appender对象绑定(attach)到logger对象,如省略此步骤,标准输出(屏幕)appender对象会绑定到logger6. 设 阅读全文
posted @ 2012-04-25 09:37 笑笑小白 阅读(1989) 评论(0) 推荐(0)
摘要:log4cplus是C++编写的开源的日志系统,功能非常全面,用到自己开发的工程中会比较专业的,:),本文介绍了log4cplus基本概念,以及如何安装,配置。### 简介 ###log4cplus是C++编写的开源的日志系统,前身是java编写的log4j系统.受Apache Software License保护。作者是Tad E. Smith。log4cplus具有线程安全、灵活、以及多粒度控制的特点,通过将信息划分优先级使其可以面向程序调试、运行、测试、和维护等全生命周期; 你可以选择将信息输出到屏幕、文件、NT event log、甚至是远程服务器;通过指定策略对日志进行定期备份等等。 阅读全文
posted @ 2012-04-25 09:35 笑笑小白 阅读(2104) 评论(1) 推荐(0)
摘要:1.static有什么用途?(请至少说明两种)1)函数体内,声明为static的变量,在函数调用中其值不变。2) 在同一个文件内(但在函数体外),声明为静态的变量,可被本文件内所有函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用( &)与指针(*)有什么区别?1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可以改变所指的对象。3) 不存在指向空值的引用,但是存在指向空值的指针。4) 引用没有 const,指针有 const 阅读全文
posted @ 2012-04-24 12:06 笑笑小白 阅读(2466) 评论(0) 推荐(2)
摘要:互斥锁和条件变量是出自Posix线程标准,用来同步一个进程中各个线程的,同时也可以用来同步几个进程间的,不过这需要此互斥锁和条件变量是存放在多个进程间共享的某个内存区的。互斥锁上锁与解锁:1#include <pthread.h>23intpthread_mutex_lock(pthread_mutex_t *mutex);4intpthread_mutex_trylock(pthread_mutex_t *mutex);5intpthread_mutex_unlock(pthread_mutex_t *mutex);互斥锁初始化的问题:可以通过两种方式初始化一个互斥锁变量:1,如 阅读全文
posted @ 2012-04-24 10:10 笑笑小白 阅读(2436) 评论(0) 推荐(0)
摘要:#ifndef PROCESS_THREAD_H#define PROCESS_THREAD_H#include "ace/Thread.h"#include "ace/Thread_Mutex.h"#include "ace/Synch.h"#include "IProcess.h"static ACE_THR_FUNC_RETURN ProcessThreadFunc(void* pVoid);class ProcessThread{public: ProcessThread(); ~ProcessThread 阅读全文
posted @ 2012-04-24 10:04 笑笑小白 阅读(1760) 评论(0) 推荐(1)
摘要:等待线程 1。使用pthread_cond_wait前要先加锁 2。pthread_cond_wait内部会解锁,然后等待条件变量被其它线程激活 3。pthread_cond_wait被激活后会再自动加锁 激活线程: 1。加锁(和等待线程用同一个锁) 2。pthread_cond_signal发送信号 3。解锁 激活线程的上面三个操作在运行时间上都在等待线程的pthread_cond_wait函数内部。 程序示例: #include <stdio.h> #include <pthread.h> #include <unistd.h> pthread_mute 阅读全文
posted @ 2012-04-24 09:57 笑笑小白 阅读(395) 评论(0) 推荐(0)
摘要:[cpp]view plaincopyprint?<spanstyle="font-family:'LucidaGrande',Verdana,Lucida,Helvetica,Arial,Simsun,sans-serif;"><spanstyle="white-space:normal;"><spanstyle="font-family:monospace;"><spanstyle="white-space:pre;"></span>& 阅读全文
posted @ 2012-04-20 09:38 笑笑小白 阅读(971) 评论(0) 推荐(0)
摘要:一、简介由于C++语言没有自动内存回收机制,程序员每次new出来的内存都要手动delete。程序员忘记delete,流程太复杂,最终导致没有delete,异常导致程序过早退出,没有执行delete的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::shared_ptr、boost::scoped_array、boost::shared_array、boost::weak_ptr、boost::intrusive_ptr。你可能会想,如此多的智能指针就为了解决new、delete匹 阅读全文
posted @ 2012-04-19 18:12 笑笑小白 阅读(430) 评论(0) 推荐(0)
摘要:Solmyr 的小品文系列之五:垃圾收集 转自pchome午餐时间。zero 坐在餐桌前,机械的重复“夹菜 -> 咀嚼 -> 吞咽”的动作序列,脸上用无形的大字写着:我心不在焉。在他的对面坐着 Solmyr ,慢条斯理的吃着他那份午餐,维持着他一贯很有修养的形象 ——— 或者按照 zero 这些熟悉他本质的人的说法:假象。“怎么了 zero ?胃口不好么?”,基本填饱肚子之后,Solmyr 觉得似乎应该关心一下他的学徒了。“呃,没什么,只是 …… Solmyr ,C++ 为什么不支持垃圾收集呢?(注:垃圾收集是一种机制,保证动态分配了的内存块会自动释放,Java 等语言支持这一机制 阅读全文
posted @ 2012-04-19 18:09 笑笑小白 阅读(329) 评论(0) 推荐(1)
摘要:当类中有指针成员时,一般有两种方式来管理指针成员:一是采用值型的方式管理,每个类对象都保留一份指针指向的对象的拷贝;另一种更优雅的方式是使用智能指针,从而实现指针指向的对象的共享。 智能指针(smart pointer)的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。 每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;对一个对象进行赋值时,赋值操作符减少左操作数所指对象的引用计数(如果引用计数为减至0... 阅读全文
posted @ 2012-04-19 17:42 笑笑小白 阅读(1273) 评论(0) 推荐(0)
摘要:一、指针指针能做什么在编写C++程序的时候,让我们最头痛的问题就是内存泄露,也就是说:int* pt = new int;delete pt;必须保证new和delete必须成对出现。作为程序员,我们最理想的指针,是可以像使用普通变量一样来使用的指针,这个指针可以在恰当的时候被自动释放。智能指针就是这样的一个指针,它的任务是要保证每一个被动态分配的内存块都能够被释放。就像我们在写handle = CreateSession(...);和CloseSession(handle);的时候,因为要保证这两者成对出现,我们习惯的做法是将其分别放在一个类的构造和析构函数当中。这样,就能保证每一个Crea 阅读全文
posted @ 2012-04-19 16:02 笑笑小白 阅读(269) 评论(0) 推荐(0)
摘要:这篇文章主要介绍 boost中的智能指针的使用。 内存管理是一个比较繁琐的问题,C++中有两个实现方案: 垃圾回收机制和智能指针。垃圾回收机制因为性能等原因不被C++的大佬们推崇, 而智能指针被认为是解决C++内存问题的最优方案。1. 定义 一个智能指针就是一个C++的对象, 这对象的行为像一个指针,但是它却可以在其不需要的时候自动删除。注意这个“其不需要的时候”, 这可不是一个精确的定义。这个不需要的时候可以指好多方面:局部变量退出函数作用域、类的对象被析构……。所以boost定义了多个不同的智能指针来管理不同的场景。shared_ptr<T>内部维护一个引用计数器来判断此指针是 阅读全文
posted @ 2012-04-19 15:59 笑笑小白 阅读(810) 评论(0) 推荐(0)
摘要:位操作篇共分为基础篇和提高篇,基础篇主要对位操作进行全面总结,帮助大家梳理知识。提高篇则针对各大IT公司如微软、腾讯、百度、360等公司的笔试面试题作详细的解答,使大家能熟练应对在笔试面试中位操作题目。下面就先来对位操作作个全面总结,欢迎大家补充。在计算机中所有数据都是以二进制的形式储存的。位运算其实就是直接对在内存中的二进制数据进行操作,因此处理数据的速度非常快。在实际编程中,如果能巧妙运用位操作,完全可以达到四两拨千斤的效果,正因为位操作的这些优点,所以位操作在各大IT公司的笔试面试中一直是个热点问题。因此本文将对位操作进行如下方面总结:一.位操作基础,用一张表描述位操作符的应用规则并详细 阅读全文
posted @ 2012-04-19 12:17 笑笑小白 阅读(477) 评论(0) 推荐(0)
摘要:本文转自http://blog.csdn.net/yincheng01/article/details/5781840一个男人在外工作20年,终于要回家了,老板问他:你是要20年的工资还是要3句忠告?男人说我明天上路,明早给您答案好吗?老板说可以。当晚男人未眠…早晨,他对老板说:我要3个忠告。于是老板给他3句话。一、不要试图寻找不可能的捷径,世上没有便宜的事,只有脚踏实地才是最好的方法…无论做何事。二、不要对明知不是好事的事过分好奇,有可能你会因此而丧命。三、不要在冲动时做任何决定,否则这个决定就有可能成为你一辈子的遗憾。说完老板给男人一些钱和三个面包,并叮嘱:最大的面包在到家后才能吃。男人上 阅读全文
posted @ 2012-04-19 11:27 笑笑小白 阅读(585) 评论(0) 推荐(0)
摘要:在VOIP的音频算法中,回音处理已经成为一个关系通话质量的主要问题。回声的产生在IP网络主要有两种:1.声学回声2.电路回声声学回声主要又分成以下几种:a ) 直接回声:由扬声器产生的声音未经任何反射直接进入麦克风b ) 间接回声: 由扬声器发出的声音经过多次反射后,再进入Mic对于第二种回声,拥有多路径,时变性的特点.是比较难处理的.由于IP网络下的传输的延迟较大,而一般情况下,对于人耳,如果声音延迟达到了10ms以上的话,那么回声就会越来越明显.一般来讲,VOIP中的声音延迟主要来自于几个方面:1. 编码延迟: 一般情况下编码算法在声音压缩时都会产生延迟,就我们采用的Speex来讲,延迟大 阅读全文
posted @ 2012-04-18 15:39 笑笑小白 阅读(5207) 评论(0) 推荐(1)
摘要:前言:Speex官网:http://speex.org/可以再Documentation下找到PDF版或HTML OL版的英文手册。可能会由于英文技能的匮乏或语音解码领域的不熟悉会有翻译错误,所以每段我都会付上英文原段落,也望各位发现后能够不吝赐教,大家共同进步。PS:如需转载,注明出处,不胜感激2.1 概念 采样率 比特率 质量(可变) 复杂度(可变) 变比特率 平均比特率 静音检测 非连续性传输 知觉增强 延时算法2.2 编解码2.3 预处理器2.4 自适应抖动缓冲2.5 回声消除2.6 重采样后记This section describes Speex and its features 阅读全文
posted @ 2012-04-18 15:34 笑笑小白 阅读(3052) 评论(0) 推荐(0)
摘要:前言:没搜到Speex相关的中文资料,所以想将Speex的英文手册中会用到的部分翻译出来。Speex官网:http://speex.org/可以再Documentation下找到PDF版或HTML OL版的英文手册。每段我都会付上英文原段落,可能会由于英文技能的匮乏或语音解码领域的不熟悉会有翻译错误,也望各位发现后能够不吝赐教,大家共同进步。PS:如需转载,注明出处,不胜感激简介1.1 获得帮助1.2 关于此文档后记简介:The Speex codec (http://www.speex.org/) exists because there is a need for a speech cod 阅读全文
posted @ 2012-04-18 15:34 笑笑小白 阅读(4320) 评论(1) 推荐(1)
摘要:转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx引言HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。HTTP协议的主要特点可概括如下:1.支持客户/服务器模式。2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有G 阅读全文
posted @ 2012-04-17 14:03 笑笑小白 阅读(382) 评论(0) 推荐(0)
摘要:gdb -args ./Recvor -P 7000 -C ../server.conf -M true -D 带参数的调试GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-32.el5)Copyright (C) 2009 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>This is free software: you are free to change and red 阅读全文
posted @ 2012-04-13 12:01 笑笑小白 阅读(3157) 评论(0) 推荐(0)
摘要:1.以行号设置断点 (gdb)break 7 (gdb)run2.以函数名设置断点(gdb)break function_name(gdb)run3.以条件表达式设置断点(gdb)break 7 if i==99(gdb)run4.另一种,以表达式设置断点的方法 (gdb)watch i==99 这个命令必须在变量i被定义之后才会成功运行,为了解决这个问题,首先在变量 i 被定义的后一行设置中断,然后使用run命令运行程序,程序暂停后就可以使用watch i==99设置断点了。##############################单步执行(gdb)next################ 阅读全文
posted @ 2012-04-13 11:52 笑笑小白 阅读(39108) 评论(1) 推荐(1)
摘要:编译时必须加上参数-g ,例:g++ -g temp.cpp -o temp.通过Gcc编译生成可执行文件才能用Gdb进行调试。进入gdb界面:gdb temp.提示符变成(gdb)(1)查看文件在Gdb中键入”l”(list)就可以查看所载入的文件(2)设置断点只需在”b”后加入对应的行号即可(这是最常用的方式,另外还有其他方式设置断点)。如下所示:(gdb)b 6代码运行到第五行之前暂停(并没有运行第五行)。(3)查看断点情况(Gdb)info b(4)运行代码Gdb默认从首行开始运行代码,可键入”r”(run)即可(若想从程序中指定行开始运行,可在r后面加上行号)。(5)查看变量值查看断 阅读全文
posted @ 2012-04-13 10:03 笑笑小白 阅读(11605) 评论(0) 推荐(0)
摘要:在你调试程序时,当程序被停住时,你可以使用print命令(简写命令为p),或是同义命令inspect来查看当前程序的运行数据。print命令的格式是:printprint /是表达式,是你所调试的程序的语言的表达式(GDB可以调试多种编程语言),是输出的格式,比如,如果要把表达式按16进制的格式输出,那么就是/x。一、表达式print和许多GDB的命令一样,可以接受一个表达式,GDB会根据当前的程序运行的数据来计算这个表达式,既然是表达式,那么就可以是当前程序运行中的const常量、变量、函数等内容。可惜的是GDB不能使用你在程序中所定义的宏。表达式的语法应该是当前所调试的语言的语法,由于C/ 阅读全文
posted @ 2012-04-12 18:26 笑笑小白 阅读(81656) 评论(1) 推荐(2)
摘要:Linux中包含有一个很有用的调试工具--gdb(GNU Debuger),它可以用来调试C和C++程序,功能不亚于Windows下的许多图形界面的调试工具。和所有常用的调试工具一样,gdb提供了以下功能: # 监视程序中变量的值 # 在程序中设置断点 # 程序的单步执行在使用gdb前,必须先载入可执行文件,因为要进行调试,文件中就必须包含调试信息,所以在用gcc或cc编译时就需要用-g参数来打开程序的调试选项。调试开始时,必须先载入要进行调试的程序,可以用以下两种方式: * 在启动gdb后执行以下命令: file 可执行文件路径 * 在gdb启动时就载入程序: gdb 可执行文件路径... 阅读全文
posted @ 2012-04-12 18:01 笑笑小白 阅读(1604) 评论(0) 推荐(0)
摘要:数据传输通常数据传输的过程是将对象中的数据按照某种格式序列化成连续的字节流,然后发送到网络上,当另一端接收到字节流后,按照此格式反序列化成对象。当连接建立好后,通信双方都有两个可以发送和接收数据的ACE_SOCK_Stream对象。该对象提供了发送和接收的方法。send_n/recv_n用于发送和接收确定数量的字节流,如果没有发送或者接收完,该方法将阻塞。而send/recv就不保证这一点,可能实际发送或者接收的数据比参数指定的少,该方法不会阻塞,而是返回实际发送或者接收的数据大小。send/recv方法实际是从父类ACE_SOCK_IO继承而来的。网络传输的一种高效的方法是集中写和分散读。不 阅读全文
posted @ 2012-04-12 10:59 笑笑小白 阅读(2218) 评论(0) 推荐(0)
摘要:一般来说GDB主要调试的是C/C++的程序。要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中。使用编译 器(cc/gcc/g++)的 -g 参数可以做到这一点。如:> cc -g hello.c -o hello> g++ -g hello.cpp -o hello如果没有-g,你将看不见程序的函数名、变量名,所代替的全是 运行时的内存地址。当你用-g把调试信息加入之后,并成功编译目标代码以后,让我们来看看如何用gdb来调试他。启动 GDB的方法有以下几种:1、gdb <program>program也就是你的执行文件,一般在当然目录下。2、g 阅读全文
posted @ 2012-04-10 14:19 笑笑小白 阅读(165189) 评论(2) 推荐(13)
摘要:1、将文件checkout到本地目录svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co2、往版本库中添加新的文件 svn add file 例如:svn add test.php(添加test.php) svn add *.php(添加当前目录下所有的php文件)3、将改动的文件提交到版本库 svn commit -m "LogMessage" [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关) 例如:sv 阅读全文
posted @ 2012-04-10 08:56 笑笑小白 阅读(8632) 评论(0) 推荐(0)
摘要:1、TCP连接手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。建立起一个TCP连接需要经过“三次握手”:第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此 阅读全文
posted @ 2012-04-09 22:59 笑笑小白 阅读(2985) 评论(0) 推荐(0)
摘要:TTPS(Secure Hypertext Transfer Protocol)--安全超文本传输协议它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的完全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。WWW的核心——HTTP协议众所周知,Internet的基本协 阅读全文
posted @ 2012-04-09 22:54 笑笑小白 阅读(942) 评论(0) 推荐(1)
摘要:网络由下往上分为:对应物理层--数据链路层--网络层-- IP协议传输层-- TCP协议会话层--表示层和应用层-- HTTP协议socket则是对TCP/IP协议的封装和应用(程序员层面上)。也可以说,TPC/IP协议是传输层协议,主要解决数据 如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如 果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也 阅读全文
posted @ 2012-04-09 22:34 笑笑小白 阅读(555) 评论(1) 推荐(1)
摘要:术语TCP/IP代表传输控制协议/网际协议,指的是一系列协议。“IP”代表网际协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。你应该能理解,TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。虽然TCP和UDP都是用来传输其他协议的,它们却有一个显著的不同:TCP提供有保证的数据传输,而UDP不提供。这意味着TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另一个端点,而UDP不提供任 阅读全文
posted @ 2012-04-09 22:28 笑笑小白 阅读(9287) 评论(2) 推荐(1)
摘要:VIM快捷键:光标移动:四个方向 kh 0 l jctrl+f, ctrl+b 向下翻页,向上翻页ctrl+d, ctrl+u 向下半翻页,向上半翻页$ 移动行尾0 移动行首w 移动下一个词b 移动到上一个词gg 跳到文档的开始处G 跳到文档的末尾% 跳到匹配的括号处("{ }""[]""()")ctrl+i,tab 跳到下一个jump pointctrl+o 跳到上一个jump point23gg, 23G, :23 跳到第23行ctrl+i, tab 跳到下一个跳点(Jump Point)ctrl+o 跳到上一个跳点查找替换:# 阅读全文
posted @ 2012-04-09 15:51 笑笑小白 阅读(319) 评论(0) 推荐(0)