- 博客(52)
- 资源 (5)
- 收藏
- 关注
转载 C/C++:头文件与cpp文件的声明/定义
一、头文件1、 一般来说,头文件仅仅用于声明,相应的定义要放在对应的cpp文件中。 声明的内容一般可以是:1. 类定义体;2.类中的成员方法; 3. 类外的函数; 4. 类外的变量;5. 类型。 一个文件(比如main.cpp)包含(#include)了一个头文件(比如item.h),就相当于声明了Item.h中声明的所有内容。2、但是const常量,inline函数,static函数...
2020-03-16 16:45:50
4922
原创 C/C++ #define的作用域
#define macro的作用域有点类似于C/C++全局静态变量编译器处理宏的时机是预处理阶段 编译器按文本顺序处理 遇到宏时就定义一个宏变量假设这种情况void test() {#define MACRO 1}int main() {#ifdef MACRO// do some thing#endif}main函数也是看得到MACRO宏的 因为文本顺序上test在...
2019-07-25 17:33:04
595
转载 linux C/C++服务器后台开发面试题总结
一、编程语言1.根据熟悉的语言,谈谈两种语言的区别?主要浅谈下C/C++和PHP语言的区别:1)PHP弱类型语言,一种脚本语言,对数据的类型不要求过多,较多的应用于Web应用开发,现在好多互联网开发公司的主流web后台开发语言,主要框架为mvc模型,如smarty,yaf,升级的PHP7速度较快,对服务器的压力要小很多,在新浪微博已经有应用,对比很明显。2)C/C++开发语言,C语...
2018-08-04 07:38:56
419
转载 如何在Linux上实现文件系统的自动检查和修复?
平常Linux管理方面最重要的任务之一就是,检查文件系统的完整性。Linux文件系统有可能在各种各样的情况下受到损坏,比如系统崩溃、突然断电、磁盘断开,或者文件节点(i-node)不小心被覆盖等等。因此,定期检查文件系统的完整性是个好主意,以便尽量减小文件系统受到损坏的风险。而说到检查和修复Linux文件系统,fsck是一款实用的工具。我在本教程中将介绍如何借助fsck工具,实现文件系统的
2016-10-13 16:14:49
8068
原创 Linux下修改文件的时间属性
用法:1. 同时修改文件的修改时间和访问时间touch -d "2010-05-31 08:10:30" test.doc2. 只修改文件的修改时间touch -m -d "2010-05-31 08:10:30" test.doc3. 只修改文件的访问时间touch -a -d "2010-05-31 08:10:30" test.doc
2014-10-23 19:46:01
480
原创 Qt之中文显示(QMessageBox、QLineEdit右键菜单等)
在编写Qt程序的时候,总会碰到中文问题,一直都很困惑,原本在使用QLineEdit的时候总会出现右键英文的情况,开始的时候是将邮件功能屏蔽掉。使用setContextMenuPolicy(Qt::NoContextMenu)来设置无右键菜单,但是后来发现这虽然省事,但是有不足之处,密码框可以没有右键菜单、不可复制、粘贴,但是普通的文本框还是得需要此项功能的,所以就摸索着如何实现,做起来也很是简单!
2014-03-07 15:21:04
1682
1
原创 QCompleter自动补全
知识永远是那么多,想到什么就总结什么,今天记录一下关于我对QComplete的一些小见解。官方文档中叙述如下: 可以在任何Qt的窗口小部件中使用QCompleter提供自动补全功能,如:QLineEdit和QComboBox。当用户开始输入一个字符,QCompleter根据单词列表提示完成单词。这个单词列表是作为一个QAbstractItemModel被提供的(对于简单的应用
2014-03-07 14:53:57
2584
转载 使用VS2008动态编译并发布qt
用QT的默认安装,把生成的release下的exe文件,和下面几个核心文件放在一个文件夹里:QTGUI4.DLLQTCORE4.DLL文件在X:\Qt\4.7.1\bin目录中,切忌是对应Qt版本的dll,笔者就曾因此出现发布的程序点击没反应的情况,纠结了良久。VS2008编译程序运行时需要的几个dll文件Microsoft.VC90.CRT.man
2013-07-06 22:11:14
1539
转载 C++一些注意点之型别转换
命名的强制类型转换符号的一般形式如下: cast_name(expression);其中, cast_name可以为dynamic_cast、static_cast、const_cast和reinterpret_cast的一种,type为转换的目标类型,而expression则是被强制转换的值。下面分别讲一下他们的具体含义。1、const
2013-06-13 11:39:52
498
转载 编写高效的C++程序方法之使用对象池
对象池技术可以避免在程序的生命期中创建和删除大量对象。如果知道程序需要同一类型的大量对象,而且对象的生命周期都很短,就可以为这些对象创建一个池(pool)进行缓存。只要代码中需要一个对象,就可以向对象池请求.用完此对象时,要把它放回池中。对象池只创建一次对象,因此它们的构造函数只调用一次,而不是每次使用时都调用。因此,当构造函数要完成一些设置动作,而且这些设置可以应用与该对象的多次使用时,对象池就
2013-06-06 20:27:53
2135
1
原创 深入理解C++中的mutable关键字
mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面
2013-06-06 15:39:46
497
转载 C++Vector的使用误区
初始化vector并传引用到DLL中,DLL中为该引用添加节点,vector内存释放时会报堆栈错误,原因?这个问题其实挺好避免的,说白了就是不要一个模块new,另一个模块delete,不要认为你的vector的节点数据在栈上,vector的本质就是一个变长数组,怎么会在栈上呢,数据肯定是在堆上的,这样你就是在dll中申请的存储,在主程序里面释放的存储,出错很正常。原因简要的分析一下
2013-06-06 13:25:13
664
原创 C/C++语言二维数组的传参方法总结
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8886687,作者:gqb666C/C++语言将二维数组作为参数传递容易使人迷惑且易出错,本文将常用的几种方法列出,以方便用时查阅。三种方法总结如下(GCC验证成功):方法一:形参为二维数组并给定第二维长度 此方法是最简单最直观的方法,形
2013-05-07 15:19:43
673
翻译 STL中的内存分配器原理
题记:内存管理一直是C/C++程序的红灯区。关于内存管理的话题,大致有两类侧重点,一类是内存的正确使用,例如C++中new和delete应该成对出现,用RAII技巧管理内存资源,auto_ptr等方面,很多C/C++书籍中都使用技巧的介绍。另一类是内存管理的实现,如linux内核的slab分配器,STL中的allocator实现,以及一些特定于某种对象的内存管理等。最近阅读了一些内存管理实现方面的
2013-05-02 14:48:55
616
原创 C语言指针声明探秘
前言我对C指针的理解一直停留在:指针本身是一块内存,它保存了一块内存的地址,可以引用,但是最近在读代码的时候,各种指针的声明搞得我异常苦恼,赶紧去学习了一番,也只是明白了最基本的使用,总结如下。基本知识指针的基本使用正如前言中说的,先看这样一段代码:[cpp] view plaincopy#include int
2013-04-22 21:49:53
491
原创 安全的代码之内存的申请和释放
计算机的程序由代码和数据构成,一个程序占用的内存可以分为代码段和数据段,而数据区又分为常量存储区、静态存储区、堆和栈。这里主要讨论一下堆内存和栈内存。栈内存由自动申请和释放,所申请的内存在变量作用域内有效,退出变量作用域时被释放,这个过程由编译器来完成,安全系数相对较高,效率较堆内存高。堆上的内存由程序员显式的申请并显式的释放,如果只申请不释放,便会造成内存泄露,申请后重复释放,则会造成程序崩
2013-04-21 22:58:24
664
转载 C库函数手册
分类函数,所在函数库为ctype.hint isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9') 返回非0值,否则返回0int isascii(int ch) 若ch是字符(ASC
2013-03-21 10:24:36
869
原创 C/C++ 取整函数ceil(),floor()
#include double floor(double x); float floorf(float x); long double floorl(long double x);double floor(double x);double ceil(double x);使用floor函数。floor(x)返回的是小于或等于x的最大整数。如: floo
2013-03-21 09:28:28
1234
转载 C++通过DLL调用C#代码
本文将介绍C++中通过DLL来调用C#代码。首先建立C#的“类库”工程CShapeDLL。然后输入如下代码:[csharp] view plaincopy//C++通过DLL调用C#代码 //http://blog.csdn.net/morewindows/article/details/8678431 //By More
2013-03-19 19:29:48
817
转载 专业程序员必知必会的技巧:驯服复杂代码
你从入职第一天起就要应对复杂代码。若是还未遇到过无法理解的程序,那说明你编程的年头还不够长。在行业里,要不了多久你就会碰到让人发懵的混乱代码:巨兽、面条工厂、来自地狱的遗留系统。我曾接手过一个程序,它的前任在听说要增加一个分量不轻的新特性时,选择了辞职。(我并不怪他。)软件系统的复杂度是不可避免的。有些问题就是很难,它们的解决方案很复杂。然而,你在软件中找到的大多数复杂度是
2013-03-18 18:21:18
609
转载 C++检查内存泄露
说明,我使用的ide是vs20081. 工程设置为debug内存泄露的检测一般在debug模式下进行2.在需要检查内存泄露的cpp头部加上[cpp] view plaincopy#ifdef _DEBUG #define _CRTDBG_MAP_ALLOC #inc
2013-03-18 14:04:28
897
转载 C,C++中使用可变参数
可变参数即表示参数个数可以变化,可多可少,也表示参数的类型也可以变化,可以是int,double还可以是char*,类,结构体等等。可变参数是实现printf(),sprintf()等函数的关键之处,也可以用可变参数来对任意数量的数据进行求和,求平均值带来方便(不然就用数组或每种写个重载)。在C#中有专门的关键字parame,但在C,C++并没有类似的语法,不过幸好提供这方面的处理函数,本文将重点
2013-03-15 14:52:11
440
原创 C# using 三种使用方式
1.using指令。using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到。 例如:using System; 一般都会出现在*.cs中。2.using别名。using + 别名 = 包括详细命名空间信息的具体的类型。 这种做法有个好处就是当同一个cs引用了两
2013-03-07 19:01:25
414
转载 定义string变量为str,内存流变量为ms,比特数组为bt
1.字符串转比特数组(1)byte[] bt=System.Text.Encoding.Default.GetBytes("字符串");(2)byte[] bt=Convert.FromBase64String("字符串");2.字符串转流(1)MemoryStream ms=new MemoryStream(System.Text.Encoding.Default
2013-03-04 14:06:12
477
原创 C语言函数入栈顺序与可变参数函数
C/C++函数调用约定与函数名称修饰规则探讨使用C/C++语言开发软件的程序员经常碰到这样的问题:有时候是程序编译没有 问题,但是链接的时候总是报告函数不存在(经典的LNK 2001错误),有时候是程序编译和链接都没有错误,但是只要调用库中的函数就会出现堆栈异常。这些现象通常是出现在C和C++的代码混合使用的情况下或 在C++程序中使用第三方的库的情况下(不是用C++语言开发的),其实这都是函
2013-02-26 11:16:01
489
转载 有关TCP和UDP 粘包 消息保护边界
在socket网络程序中,TCP和UDP分别是面向连接和非面向连接的。因此TCP的socket编程,收发两端(客户端和服务器端)都要有一一成对的socket,因此,发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样,接收端,就难于分辨出来了,必须提供科学的拆包机制。对于UDP,不会使用块的
2013-02-22 09:01:49
352
转载 C#线程同步lock,Monitor,Mutex,同步事件和等待句柄(下)
前两篇简单介绍了线程同步lock,Monitor,同步事件EventWaitHandler,互斥体Mutex的基本用法,在此基础上,我们对它们用法进行比较,并给出什么时候需要锁什么时候不需要的几点建议。最后,介绍几个FCL中线程安全的类,集合类的锁定方式等,做为对线程同步系列的完善和补充。 1.几种同步方法的区别 lock和Monitor是.NET用一个特殊
2013-02-21 14:09:20
831
转载 多线程:C#线程同步lock,Monitor,Mutex,同步事件和等待句柄(中)
本篇继续介绍WaitHandler类及其子类Mutex,ManualResetEvent,AutoResetEvent的用法。.NET中线程同步的方式多的让人看了眼花缭乱,究竟该怎么去理解呢?其实,我们抛开.NET环境看线程同步,无非是执行两种操作:一是互斥/加锁,目的是保证临界区代码操作的“原子性”;另一种是信号灯操作,目的是保证多个线程按照一定顺序执行,如生产者线程要先于消费者线程执行。.NE
2013-02-21 14:00:01
555
转载 多线程:C#线程同步lock,Monitor,Mutex,同步事件和等待句柄(上)
本篇从Monitor,Mutex,ManualResetEvent,AutoResetEvent,WaitHandler的类关系图开始,希望通过本篇的介绍能对常见的线程同步方法有一个整体的认识,而对每种方式的使用细节,适用场合不会过多解释。让我们来看看这几个类的关系图: 1.lock关键字 lock是C#关键词,它将语句块标记为临界区,确保当一个线程位
2013-02-21 13:51:23
372
原创 归纳一下:C#线程同步的几种方法
我们在编程的时候,有时会使用多线程来解决问题,比如你的程序需要在后台处理一大堆数据,但还要使用户界面处于可操作状态;或者你的程序需要访问一些外部资源如数据库或网络文件等。这些情况你都可以创建一个子线程去处理,然而,多线程不可避免地会带来一个问题,就是线程同步的问题。如果这个问题处理不好,我们就会得到一些非预期的结果。 在网上也看过一些关于线程同步的文章,其实线程同步有好几种方法,下面我就
2013-02-21 09:07:38
346
原创 __stdcall,__cdecl,__fastcall的区别
一、三者区别一览表 __stdcall__cdecl__fastcall参数传递方式右->左 压栈右->左 压栈左边开始的两个不大于4字节(DWORD)的参数分别放在ECX和EDX寄存器,其余的参数仍旧自右向左压栈传送清理栈方被调用函数清理(即函数自己清理
2013-02-19 16:39:55
806
转载 COM技术初探(一)
目录一. COM是一个更好的 C++ 1. COM 是什么 2. 从 C++ 到 DLL 再到 COM 2.1 C++ 2.2 DLL 2.3 COM二. COM基础 1. COM基本知识 1.1 返回值HRESULT 1.2 初识idl 1.3 IUnkown接口
2013-02-18 15:58:53
5478
原创 从Windows 的动态库中引入类
一般从Windows的动态库引入类的方法比较简单,只需要在DLL的类的申明出加入EXPORT就可以,但是这种方法只限于编译的时候引入 DLL,就是通过Lib的方式引入DLL,但是很多情况下需要在程序的运行期来引入Dll,就像在程序运行的时候使用LoadLibrary获得动态库, 然后通过GetProcAddr来取得函数在库中的地址。怎样能够在运行的时候从动态库中引入类的申明呢?首先在Win
2013-02-05 15:54:57
809
原创 C# String.Format大全
C# String.Format大全???十进制的数字??string.Format("{0:D3}",23)023格式化十进制的数字string.Format("{0:D2}",1223)1223精度说明符指示结果字符串中所需的最少数
2013-01-14 11:52:03
19902
原创 C++中数组参数详解
在C++中,数组永远不会按值传递。它是传递第一个元素(准确地说是第0个)的指针。例如,如下声明: void putValues(int[10]);被编译器视为: void putValues(int*);数组的长度与参数声明无关。因此,下列三个声明是等价的: void putValues(int*); void putValues(int[]); void
2013-01-11 13:52:32
469
原创 C++简单角度类
[代码] 角度类的定义与实现文件,Angle.h01#include 02using namespace std;03const double pi=3.1415926;04
2013-01-10 09:25:15
1385
原创 面试中常见的链表题目
最近参加面试遇到的一些常见的单链表题目,总结思路和实现代码。1.单链表的反序2.给单链表建环3.检测单链表是否有环4.给单链表解环5.检测两条链表是否相交6.不输入头节点,删除单链表的指定节点(只给定待删除节点指针)7.合并两个有序链表1.单链表的反序01//逆转链表,并返回
2013-01-10 08:56:49
417
转载 C++面向对象总结
C++的面向对象思想博大精深,现在到了面向对象的多态性。强烈推荐:C++编程思想(第2版) 第1卷 标准C++引导 第15章 多态性和虚函数 我觉得这章讲得很清楚,包括编译器对虚函数的实现,还有C++的多态性,都挺不错的。看书就得取我所需,以免浪费太多时间。一、多态性多态性是指不同类型的对象接受相同的消息时产生不同的行为。在C++中,多态性可以分为两种:编译时的多态性和运行
2012-11-23 16:33:15
1064
原创 thow()
成员函数声明后面跟上throw(),表示告诉类的使用者:我的这个方法不会抛出异常,所以,在使用该方法的时候,不必把它至于 try/catch 异常处理块中。声明一个不抛出异常的函数后,你有责任保证在你的函数的实现里面不会抛出异常。void A::foo() throw() {throw (5); // 程序会在这里崩溃.(编者注:如果该异常被处理,不会崩溃)}
2012-11-23 16:29:03
852
原创 线程总结
关键段:1.关键段共初始化化、销毁、进入和离开关键区域四个函数。2.关键段可以解决线程的互斥问题,但因为具有“线程所有权”,所以无法解决同步问题。3.推荐关键段与旋转锁配合使用。事件Event1.事件是内核对象,事件分为手动置位事件和自动置位事件。事件Event内部它包含一个使用计数(所有内核对象都有),一个布尔值表示是手动置位事
2012-11-23 16:22:16
398
MFC重绘控件(项目用)
2013-01-06
MFC重绘控件(在项目用)
2013-01-06
MFC介面和远程控制
2011-08-27
在Android HAL层实现与RIL的通信
2011-05-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人