【C++核心技术】
铭毅天下
《一本书讲透 Elasticsearch》作者,Elastic认证专家、Elastic中国官方合作培训讲师、阿里云MVP、Elastic中文社区2018年、2023年杰出贡献者、CSDN2013年、2016年博客征文特等奖得主、博客全网累计阅读1000万+、已带领国内外近200人+通过Elastic认证专家考试。
展开
-
C++结构体对齐
现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 1、字节对齐作用和原因: 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的转载 2012-02-15 22:48:22 · 1976 阅读 · 0 评论 -
多玩YY语音的面试题:C++中如何在main()函数之前执行操作?
多玩YY语音的面试题:C++中如何在main()函数之前执行操作? 第一反应main()函数是所有函数执行的开始。但是问题是main()函数执行之前如何执行呢? 联想到MFC里面的 C**App类的theApp对象,其执行顺序就在main函数之前。道理相通,顺理推下,能够想到:如果在main函数之前声明一个类的全局的对象。那么其执行顺序,根据全局对象原创 2013-04-18 18:09:13 · 16839 阅读 · 27 评论 -
字节流与位流的相互转换实现
字节流与位流的相互转换实现 引言:在项目开发中,我们会遇到字节流与比特流相互转换、逐字节、逐位操作的场景。没有现成的库供我们调用,需要我们自己实现之。 一、字节流、位流介绍 【维基百科--字节流】:在计算机科学里面,字节流(byte stream)是一种位流,不过里面的比特被打包成一个个我们叫做字节(Bytes)的单位。 【字节流范例】:在网络传原创 2013-12-14 00:02:09 · 12214 阅读 · 0 评论 -
国外程序员面试经验
国外程序员面试经验导读:面试准备的重要性不用编者多言,大家都很清楚。本文是加拿大的一位程序员所写。大家可以看看国外程序员是怎么准备面试。不管你是否认同他的说法,《诗经》中有句话非常好——“它山之石,可以攻玉”。如果你还有其他面试准备方法,不妨在评论或微博中和大家一起讨论分享。 一、开门见山一般来说,你(求职者)在面试中会花很多时间谈论以前的经历。如果你还没有想出你的最具代表性的经历转载 2012-07-23 23:35:29 · 3787 阅读 · 0 评论 -
ini格式数据生成与解析详解
1、ini格式数据长啥样?2、ini适用场景3、Ini数据生成4、ini数据解析5、后记原创 2015-07-05 19:00:26 · 7943 阅读 · 0 评论 -
JSON数据构造及解析详解
1、JSON格式数据长啥样?2、JSON简介3、JSON适用场景4、常用开源的CPPJson注意事项?5、构造Json格式数据6、解析Json格式数据(串&文件格式)7、6、Json解析源码下载8、后记与反思原创 2015-07-04 21:23:41 · 8469 阅读 · 1 评论 -
windows C++ 多任务并发执行设计
1、问题描述 如图: (1)服务端负责下发任务;且每次下发一个任务,下发任务个数不固定(通过下发界面勾选下发),但总个数<=4个。 (2)客户端负责接收任务,接收任务后要循环执行,除非接收到停止指令后停止执行。 指令类型分为: 1)心跳指令——用于保活连接; 2)任务开始指令——用于开始执行任务; 3)任务中止指令——用于结束任务;2、设计详解 (1)客户端要并发运行,且会调用相同接原创 2015-08-30 11:56:06 · 4318 阅读 · 0 评论 -
Socket传输结构体数据注意事项
【1 背景】在Socket通信中,要传输结构化的数据或者要进行协议数据传输的时候,发送端必须要构造结构体进行数据传输。接收端也必须通过同样的结构体进行解析。但Socket传输结构体数据时候,稍有不慎就会出现:1)解析数据出错;2)接收数据不完整;3)解析为乱码等的Bug。【2 举例】如下是接收端解析数据为乱码甚至崩溃的一类常见错误。原创 2015-08-07 17:35:23 · 8112 阅读 · 2 评论 -
Oracle字符乱码、数据越界访问典型Bug分析
Oracle字符乱码、数据越界访问典型Bug分析前言: 作为乙方,在甲方客户那里验收阶段发现两个诡异Bug。以下就问题来源、问题根因、解决方案、如何避免做详细描述。一、Bug1:Oracle读写字符乱码。1、问题来源Oracle数据库监听http://blog.csdn.net/laoyang360/article/details/46524519 需要获取最新插入的中文类别字符原创 2015-12-13 13:53:13 · 2741 阅读 · 0 评论 -
值得推荐的C/C++框架和库(深度好文)
【本文系外部转贴,原文地址:http://www.cppblog.com/merlinfang/archive/2014/12/26/209311.html http://coolshell.info/c/c++/2014/12/13/c-open-project.htm】留作存档公交车上看到的好文,忍不住转发!下次造轮子前先看看现有的轮子吧--值得学习的C语言开源项目- 1. Webbench转载 2016-03-03 08:35:11 · 4534 阅读 · 0 评论 -
一篇文章通透理解序列号实现原理
1.序列号的本质序列号等价于注册码,是软件发行商的一种维权手段,也就是正版软件的一个身份证。本质:防止盗版、按功能收费等。 目前,商用软件和共享软件绝大部份都是采用注册码授权的方式来保证软件本身不被盗用,以保证自身的利益。尽管很多常用的许多软件系统的某些版本已经被别人破解,但对于软件特殊行业而言,注册码授权的方式还是一种保护软件系统本身的一种有效的手段。 序列号一般会和产品的名称(具体到硬件产品原创 2016-03-23 21:16:25 · 38427 阅读 · 4 评论 -
如何区分虚拟网卡和物理网卡?
一、什么是物理网卡和虚拟网卡?图示如下:红色部分包含VMWare的为虚拟网卡。 通常,我们部署VMWare虚拟机、VMSphere虚拟集群、XenCenter虚拟集群是都会涉及虚拟网卡。 二、辨别物理网卡和虚拟网卡的应用场景场景一:一般部署虚拟集群的时候会用到。 场景二:通过抓包分析数据请求来源是物理网卡发出的数据包,还是虚拟网卡地址发出的包时候会用到。辨识都是通过mac地址区分的。 场原创 2016-10-08 23:58:47 · 18969 阅读 · 1 评论 -
Centos下 jsoncpp使用详解
Windows环境下的jsoncpp使用举例之前有讲述,详见: http://blog.csdn.net/laoyang360/article/details/46757751 Linux之前一直没有用过,第一次用,特备忘如下:1、Centos下 jsoncpp的安装步骤第一步:下载jsoncpp0.5.0版本地址:https://sourceforge.net/projects/jsoncpp原创 2016-09-21 20:58:28 · 7169 阅读 · 3 评论 -
深入浅出变长结构体
深入浅出变长结构体1、 问题的引出 项目中用到数据包的处理,但包的大小是不固定的,其长度由包头的2字节决定。比如如下的包头:88 0f 0a ob cd ef 23 00 。长度由头2个字节880f决定,考虑字节序,转为0f88,转为10进制3976个字节的包长度。 这个时候存储包的时候,一方面可以考虑设定包的大小固定:如4K=4*1024=4096个字节,原创 2013-09-22 21:44:29 · 13928 阅读 · 0 评论 -
三个类之间的相互调用实现
三个类之间的相互调用 由来:在项目开发的时候,定义了三个核心类(ClassA,ClassB, ClassC),三个类之间存在调用关系如下:ClassC是管理类,需要调用ClassA, ClassB的接口;同时作为被管理类,ClassA, ClassB需要又需要调用ClassC的接口。 理清楚三类之间的关系: 1)定义顺序:ClassA, Clas原创 2013-08-10 01:22:19 · 7483 阅读 · 9 评论 -
C++数组指针、指针数组、函数指针的核心概念
1.什么叫数组指针? 数组指针:一个指向一维或者多维数组的指针。 比如:int * b=new int[10];指向一维数组的指针b ; 注意,这个时候释放空间一定要delete [] ,否则会造成内存泄露,b 就成为了空悬指针。 int (*b2)[10]=new int[10][10]; 注意,这里的b2指向了一个二维int型数组转载 2012-02-17 22:47:16 · 2296 阅读 · 0 评论 -
孙鑫老师谈如何学好编程
《孙鑫老师谈如何学好编程》1找一本好书适合你的水平Amazon排行Java编程思想 深入浅出MFC 并不太适合初学者看不懂会打击自信心把自己的基础告诉别人去书店实际看一些,看一下前面是否能看懂看书不要太快,需要一个细嚼慢咽的过程用心,动手看到知识点时,要进行验证2帮助文档的使用MSDN Java API验证自己觉得有问题的地方,找到程转载 2012-05-03 22:51:15 · 2738 阅读 · 1 评论 -
360面试 总结 2013年 校园招聘 2012-4-4
一面:1.C++基础:结构体对齐、静态对象、虚函数。2.Windows编程基础:1)线程、窗口、消息队列的关系;2)事件响应机制;3)进程与线程的区别,线程注意事项;4)三态按钮;5)你做过最好的项目讲一下;6)调试方法举例;(窥调试、知编程)个人感觉很基础,答的不好。应该是侯捷老师《深入浅出MFC》就能搞定。加油!二面:必须深入!算法+数据结构;原创 2012-04-23 23:35:36 · 2506 阅读 · 0 评论 -
临界区线程对象的使用
临界区线程对象的使用#include #include using namespace std;CRITICAL_SECTION g_cs;bool g_bContinue = true;int g_count1 = 0;int g_count2 = 0;DWORD WINAPI ThreadProc(LPVOID lpParameter);int main(){ H原创 2012-07-06 07:20:09 · 3699 阅读 · 0 评论 -
new和delete必须成对出现吗?【网上集合贴+个人总结】
new和delete必须成对出现吗?【网上集合贴+个人总结】1.从内存泄露与否的角度考虑new 和 delete不一定要成对出現。理论上是這樣的。但是从习惯上來說,new delete成對出現是一個好的習慣。爲什麽說不一定要成對出現呢?这个问题在csdn上有一個牛人写过很长的文章,不知道有沒有人还能找到?我記得大概是這個意思。(1)认为一定要成对出現的,主要是因为动态分配内存之后,原创 2012-07-19 23:21:22 · 4434 阅读 · 2 评论 -
深究递归和迭代的区别、联系、优缺点及实例对比
深究递归和迭代的区别、联系、优缺点及实例对比1.概念区分递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量.递归的能力在于用有限的语句来定义对象的无限集合.使用递归要注意的有两点:1)递归就是在过程或函数里面调用自身;原创 2012-08-11 22:47:26 · 32850 阅读 · 5 评论 -
九连环的递归算法(C和C++)
九连环的递归算法(C和C++)九连环的递归算法一、九连环简介九连环游戏是中国人自己发明的,它的历史非常悠久,据说是起源于战国时期。九连环主要是由一个框架和九个圆环组成:每个圆环上连有一个直杆,而这个直杆则在后面一个圆环内穿过,九个直杆的另一端用一块木板或圆环相对固定。二、九连环的规律通过玩九连环你就会发现存在这样一个规律:(1)第 1环可以自由上下(2)而上/下第 n环原创 2012-08-12 20:47:13 · 11399 阅读 · 1 评论 -
C/C++经典面试50题(挑重点整理)2
面试题17:简述类成员函数的重写、重载和隐藏的区别(1)重写和重载主要有以下几点不同。范围的区别:被重写的和重写的函数在两个类中,而重载和被重载的函数在同一个类中。 参数的区别:被重写函数和重写函数的参数列表一定相同,而被重载函数和重载函数的参数列表一定不同。 virtual的区别:重写的基类中被重写的函数必须要有virtual修饰,而重载函数和被重载函数可以被virtual原创 2012-07-30 06:57:38 · 11900 阅读 · 7 评论 -
关于联合体union的详细解释
1.概述联合体union的定义方式与结构体一样,但是二者有根本区别。在结构中各成员有各自的内存空间,一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间,一个联合变量的长度等于各成员中最长的长度。2.联合体长度在The C Programming Language里面讲述union内存分配的原话是1)联合体就是一个结构2)联合体的所有成员转载 2012-05-23 21:48:39 · 2049 阅读 · 0 评论 -
Trie树/字典树的简介及实现
Trie树|字典树的简介及实现1综述又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来节约存储空间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。Trie树结构的优点在于:1) 不限制子节点的数量; 2) 自定原创 2012-10-22 11:07:49 · 4650 阅读 · 6 评论 -
warning C4250: “MyClassD”: 通过域控制继承“MyClassC::MyClassC::MyMethod”
warning C4250: “MyClassD”: 通过域控制继承“MyClassC::MyClassC::MyMethod”菱形继承的警告,如下代码所示:#include #include class MyClassA{public: virtual void MyMethod() = 0;}; class MyClassB原创 2012-11-13 19:01:44 · 5339 阅读 · 0 评论 -
四种不同对象的生存方式(栈、堆、全局、局部静态)
四种不同对象的生存方式(栈、堆、全局、局部静态)//东软2012-11月笔试题class Sample{ int x;public: Sample(int a) { x = a; cout << "constructing object: x =" << x << endl;原创 2012-11-15 07:21:31 · 4313 阅读 · 0 评论 -
如何在windowsXP下运行用c 编写cgi
如何在windowsXP下运行用c 编写cgi? 前提是安装apache服务器,apache服务器的conf里面在里面配置好。AddType text/html .exeAddHandler cgi-script .exe .cgi然后只要把exe文件放到cgi-bin下面就好了http://127.0.0.1/cgi-bin/1.exe就可以访问了cout原创 2012-12-12 23:53:06 · 3244 阅读 · 0 评论 -
Windows编程命名规则(转)
由于一直在命名方面很乱,这次决定好好规范下。 转载至:http://blog.sina.com.cn/s/blog_52cbfc3f0100fdy6.html 匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对象描述。其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。命名要基于容易记忆容易理解的原则。目前在Windows程序开转载 2012-12-25 22:59:33 · 2346 阅读 · 0 评论 -
虚析构函数、虚函数结合考题变种
虚析构函数、虚函数结合考题变种1.[Effective C++原则07]:为多态基类声明virtual 析构函数。[如果不]: 如果不声明为析构函数,可能出现的结果如下:Derived对象的成分没有被销毁,形成资源泄露、在调试上会浪费很长时间。class CSimpleClass{public:CSimpleClass(){ cout << "CSimpleClass"原创 2012-10-14 08:40:41 · 2297 阅读 · 2 评论 -
一个换行符引发的思考!
0、背景在生成注册号开发中,初步的规律已经得到。整个某省分为175个区域,累计注册号>1亿条。 生成注册号的前期程序都是在程序里面构造的,且充分验证ok,某区域的有效数据累计2万条为证据。 为了实现程序自动化生成一个省的所有注册记录,特采取了读配置的策略。如:前6位机关号写入配置文件。 结果就跑了4个小时以上生成了近一亿条数据。本来,到这里也就完了。 可是,Bug出现了。 当我在将近2万条原创 2016-09-29 23:11:09 · 1716 阅读 · 0 评论