- 博客(43)
- 资源 (25)
- 收藏
- 关注
原创 doxygen安装使用
1.先下载解压解压附件中Doxygen.zip(点击打开链接),安装doxygen,没有注意事项全都下一步安装即可2.安装graphviz-2.38.msi,没有注意事项全都下一步安装即可3.安装htmlhelp.exe3.配置doxygen
2017-11-30 11:25:32
750
原创 c++ int、long long 转string int转wstring
int、long long 转stringint 转wstring
2017-06-07 10:29:15
13728
原创 windows 获取当前模块所在文件夹路径
1.getmodulepath.h#ifndef GETMODULEPATH#define GETMODULEPATH#include #include /*** @class getmodulepath* @brief 这个类用来获取当前模块的绝对路径*/class GetModulePath{public: static HMODULE GetModuleH
2017-06-07 10:11:47
4506
原创 TCP网络编程接口详细介绍
1.socket接口(用来创建网络套接字): int socket(int family, int type, int protocol); 参数:family 指明协议族(IPv4:AF_INET)(IPv6:AF_INET6) type TCP只支持字节流协议 SOCK_STREAM
2016-08-10 14:38:31
1704
原创 C++ sqlite数据库增删改查(基于sqlite3)
1.下载sqlite3源码编译库 下载地址:http://download.csdn.net/download/sunxianliang1/9598664 可以直接用vs2013打开,然后编译成库2.使用sqlite3库 1) sqlitebasev.h #ifndef SQLITEBASEV_H#define SQLITEBASEV_H#
2016-08-09 14:31:13
8807
原创 使用zlib库解压*.zip文件
1.编辑zlib静态库1)实现zip文件压缩和解压的zlib库部分代码(基于zlib-1.2.5)这是zlib-1.2.5源码:http://download.csdn.net/download/sunxianliang1/9597876 这是整理好的源代码(只是把需要的挑选出来,可以用vs编译成库使用):http://download.csdn.net/download/sunxia
2016-08-08 14:47:19
8654
原创 C++ 获取当前时间毫秒数(兼容windows和linux)
#ifdef _WIN32 #include #include #else #include #endifunsigned long long GetCurrentTimeMsec(){#ifdef _WIN32 struct timeval tv; time_t clock; struct tm tm; SYSTEMTIME wtm; GetLocalT
2016-08-08 11:29:02
14737
转载 c++ 生成文件MD5
md5.h#ifndef MD5_H #define MD5_H #include #include /* Type define */typedef unsigned char byte;typedef unsigned long ulong;using std::string;using std::ifstream;/* MD5 declaration
2016-08-08 11:24:25
3159
1
原创 设计模式--简单工厂
简单工厂模式,适合不同情况创建不同类对象时使用。缺陷:客户端必须要知道基类和工厂类,耦合性差。//算法基类class COperation{public: virtual double GetResult()=0;protected: int m_nFirst; int m_nSecond;};//加法class AddOperation : public COpera
2016-02-29 14:19:28
354
原创 Ubuntu 15.04 安装google protobuf步骤
1.安装的环境介绍:VMware虚拟机安装的Ubuntu 15.04系统2.安装前准备:确保m4、autoconf、automake、libtool已经正确安装过,如果没有安装一下为安装步骤(在管理员权限下操作)###安装m41. wget http://mirrors.kernel.org/gnu/m4/m4-1.4.13.tar.gz2. tar -xzvf m4-1.4
2016-02-23 15:07:26
3827
原创 KindEditor 添加默认提示信息
Qt中用这个编辑框可以设置提示信息并且禁用跳转链接var editor;var tipFlag = true;var placeholderText = '';KindEditor.ready(function(K) { editor = K.create('textarea[name="detailContent"]', { cssData : 'body {font-f
2016-02-04 17:30:21
4539
原创 QT JS KindEditor 禁用超链接默认跳转功能
用Qt的QWebview发现加载KindEditor粘贴的超链接有个默认跳转功能,估计这是Qt的bug,浏览器就没这个问题。怎样仅用这个跳转?在网页中创建KindEditor时,添加如下代码即可禁用,但是样式还是小手,恶心啊,不知道怎么更改鼠标样式,试了各种方式都无效 afterCreate:function(){//阻止点击链接默认跳转操作v
2016-01-26 16:14:35
1304
原创 设计模式--单例模式
概述:保证一个类仅有一个实例,并提供一个访问它的全局访问点。示例如下(非线程安全的,如果是多线程的单例模式需要加锁控制):#includeusing namespacestd; //单例类的声明class Singelton{private://构造函数私有,外部无法调用 Singelton(){}//静态类对象指针 stati
2016-01-20 14:15:51
313
原创 C++预处理器
预处理操作是发生在程序编译开始之前,对C++源代码进行一些简单的处理。 预处理器的任务如下:1.解析#开始的命令,如下常用预处理命令 #include 在 程序中包含头文件 #if 条件#else 否则#elif 否则如果#endif 结束条件#ifdef 或 #if defined 如果定义了一个符号,
2016-01-19 10:32:38
386
原创 TCP连接的建立和终止
1.TCP连接的建立三路握手如下图所示:建立一个TCP连接情形如下:(1)服务器进程必须准备好接受外来的连接。通过调用socket,bind,listen这三个函数来完成,也可以称为被动打开。(2)客户进程通过connect函数发起连接(可以称为主动打开),客户端TCP会发送一个SYN(建立连接)分节,这个分节告诉服务器客户在连接中发送的数据的初始序列号。通常情况下SYN分节不
2016-01-04 16:03:18
554
原创 OSI模型、网际网协议模型
OSI模型和网际网协议模型对应关系如下图所示:计算机网络各层对等实体间交换的单位信息称为协议数据单元(protocol data unit,PDU)。按照协议与服务之间的关系(物理层除外),每层的PDU都是由紧邻下层提供给本层的服务接口,作为下层的服务数据单元(service data unit,SDU)传递给下层,并由下层间接完成本层的PDU交换。如果本层的PDU大小超过紧邻下层
2015-12-30 15:11:58
551
原创 大端、小端、网络字节序
网络字节序(Network Byte Order)一般是指大端(Big-Endian,对大部分网络传输协议而言)传输,大端小端的概念是面向多字节数据类型的存储方式定义的,小端就是低位在前,大端就是高位在前,(其中“前”是指靠近内存低地址,存储在硬盘上就是先写那个字节)。一、大小端概念1、首先大小端是面向多字节类型定义的,比如2字节、4字节、8字节整型、长整型、浮点型等,单字
2015-12-30 10:51:07
850
原创 Qt5主要机制和模块概述
Qt的几个主要机制1、The Meta-Object System,元对象系统 2、The Property System,属性系统 3、Object Model,对象模型 4、Object Trees & Ownership,对象树和所有权 5、Signals & Slots,信号和槽Qt的几个常用模块1.QtCore模块这是qt最核心的module,提供了几种q
2015-12-22 10:56:45
1281
1
原创 Qt reentrant、thread-safe
解释一下贯穿整个Qt帮助文档的俩个关键字reentrant、thread-safe。(通常用来修饰函数或者类)1.reentrant(可重入的):可以被多个线程同时调用,但是只能调用自己的数据(言外之意就是不能调用共享数据,负责会出现不可预知的结果)。2.thread-safe(线程安全的):可以被多个线程同时调用,而且可以使用共享数据和自身的数据。以上可以看出,thr
2015-12-10 15:20:16
836
转载 C++引用深度分析
引言 我选择写 C++ 中的引用是因为我感觉大多数人误解了引用。而我之所以有这个感受是因为我主持过很多 C++ 的面试,并且我很少从面试者中得到关于 C++ 引用的正确答案。 那么 c++ 中引用到底意味这什么呢?通常一个引用让人想到是一个引用的变量的别名,而我讨厌将 c++ 中引用定义为变量的别名。这篇文章中,我将尽量解释清楚, c++ 中根本就没有什么叫做别名的东
2015-10-28 10:20:55
446
原创 AJAX POST数据中有特殊符号处理方法
postData = ~!@#¥%……&*()—— ++++++——)&……%¥#postData = postData..replace(/%/g, "%25");postData = postData..replace(/\&/g, "%26");postData = postData..replace(/\+/g, "%2B");"+
2015-10-15 14:37:33
2618
转载 register、volatile、inline
1、register在函数内定义变量时,默认是 auto 类型,变量存储在内存中,当程序用到该变量时,由控制器发出指令将内存中该变量的值送到运算器,计算结束后再从运算器将数据送到内存。如果一个变量用 register 关键字修饰,编译器则尽可能将该变量存放在CPU的内部寄存器中,这样就不用通过内存寻址来访问变量,可以大大提高访问效率。2、volatilevolatile关键
2015-08-17 10:37:29
552
原创 Qt QTimer测试定时精度
调试信息输出窗口可以查看超时误差dialog.h文件#ifndef DIALOG_H#define DIALOG_H#include #include namespace Ui {class Dialog;}class QTimer;class Dialog : public QDialog{ Q_OBJECTpublic: explicit
2015-07-24 18:14:26
4839
原创 测试QTimer定时器精准度的小程序
可以在dialog上添加三个label查看时间和异常次数,也可以在打印输出栏看每次timer超时事件误差适度少(都是ms级别的)#ifndef DIALOG_H#define DIALOG_H#include #include namespace Ui {class Dialog;}class QTimer;class Dialog : public QDialog{
2015-07-24 17:24:49
1250
原创 Qt GUI 通过鼠标事件剖析整个事件处理流程(基于Qt4.5.2源码windows平台)
/*以下分析的是Windows平台 Qt GUI程序的事件产生,分发,处理全过程(基于Qt5.4.2源码整理)以一个鼠标按压的事件为例子讲述...表示省略掉一些代码(skip code)事件起源: 基于事件如何被产生与分发,可以把事件分为以下三类。Spontaneous 事件——自发事件由窗口系统产生,它们被放到系统队列中,通过事件循环逐个处理。(例如鼠标事件、键盘事件)Pos
2015-07-23 15:46:20
3713
转载 剖析Qt 事件的产生、分发、接受、处理流程
1、谁来产生事件: 最容易想到的是我们的输入设备,比如键盘、鼠标产生的keyPressEvent,keyReleaseEvent,mousePressEvent,mouseReleaseEvent事件(他们被封装成QMouseEvent和QKeyEvent),这些事件来自于底层的操作系统,它们以异步的形式通知Qt事件处理系统,后文会仔细道来。当然Qt自己也会产生很多事件,比如QObject
2015-07-22 11:03:28
4878
1
原创 CPU 读、修改内存数据过程
之前一直不明白为什么一个线程修改了数据(不用volatile修饰),而另一个线程读取时还是之前的值,网上查找了一些资料做了个总结,纯属个人理解如有不对请指正1.CPU缓存(Cache Memory)是位于CPU和内存之间的临时存储器,它的容量小但是数据交换速度很快。2.内存:它的容量比较大,但是CPU访问内存的效率相对缓存较低有了缓存和内存,内存储器(缓存+内存)就变成既有缓存
2015-07-21 17:05:48
6277
1
转载 QAtomicInt Memory Ordering
Memory OrderingBackground 很久很久很久以前,CPU忠厚老实,一条一条指令的执行我们给它的程序,规规矩矩的进行计算和内存的存取。 很久很久以前, CPU学会了Out-Of-Order,CPU有了Cache,但一切都工作的很好,就像很久很久很久以前一样,而且工作效率得到了很大的提高。 很久以前,我们需要多个CPU一起工作,于是出现了传说中的
2015-07-21 14:24:15
2822
原创 Qt与JSON
Qt的json解析相关类说明QJsonObject、QJsonValue、QJsonArray、QJsonDocument、QJsonParseError。
2015-06-17 17:19:14
510
转载 Qt Creator 快捷键
一般操作的键盘快捷键 操作 快捷键操作快捷键打开文件或项目Ctrl+O新建文件或项目Ctrl+N在外部编辑器中打开Alt+V,Alt+I选择全部
2015-06-10 10:51:28
562
转载 linux中使用内存映射(mmap)操作文件的方法
在使用内存映射操作文件之前,我们先按照常规的方式来读写文件,这种方式操作如下:1,打开或创建文件,得到文件描述符,2,将内存中的数据以一定的格式和顺序写入文件,或者将文件中的数据以一定的格式和顺序读入到内存;3,关闭文件描述符;下边是按照常规方式操作固定格式的文件的方法,包含读写两个示例;[cpp] view plaincopy
2015-06-06 15:27:19
604
转载 HTTP GET POST 详解
一 原理区别 一般在浏览器中输入网址访问资源都是通过GET方式;在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETEURL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HT
2015-05-28 15:35:10
588
1
转载 http Get Post
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。 1
2015-05-28 15:33:19
414
转载 Qt Application的插件开发流程
创建一个QT的库项目,删除自动生成的.h和.cpp文件,添加一个接口定义.h文件和一个接口实现类(一个.h一个.cpp).代码如下:1.接口文件源码#ifndef PLUGININTERFACE_H#define PLUGININTERFACE_H#include class EchoInterface{public: virtual ~Echo
2015-05-27 11:07:30
520
zlib-1.2.5源码
2016-08-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人