自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (16)
  • 收藏
  • 关注

转载 C++ 对象的内存布局(上)---陈皓改进版

前言查看本文之前最好先看这篇文章:C++ 虚函数表解析---陈皓改进版07年12月,我写了一篇《C++ 虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里一并对大家的留言表示感谢。这也是我为什么再写一篇续言的原因。因为,在上一篇文章中,我用了的示例都是非常简单的,主要是为了说明一些机理上的问题,也是为了图一些表达上方便...

2018-08-31 20:40:50 2226

转载 不同编译器虚函数的实现方式的区别

class base { virtual void f1() {}};base bs;问:“为什么bs虚函数表的地址(int*)(&bs)与虚函数f1()地址(int*)*(int*)(&bs) 不是同一个?”注:题主理解错了,其实(int*)(&bs)是对象bs的地址,即虚函数表的地址的地址。(int*)*(int*)(&bs)才是虚函数表地址...

2018-08-31 12:56:47 819

转载 C++ 虚函数表解析---陈皓改进版

修正了一些原文中的错误。前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术(Run-Time Type Identification),虚函数技术,要...

2018-08-29 22:36:35 3608 7

原创 C++ public、protected 、 private和friend(最通俗易懂)

C++ 继承面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行时间的效果。当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。继承代表了 is a 关系。例如,哺乳动物是动物,狗是哺乳动物...

2018-08-29 20:35:44 17338 2

原创 sizeof与strlen的区别和#pragma pack的具体含义(非常详细)

char str[20]="0123456789"; int   a=strlen(str); // a=10;strlen 计算字符串的长度,以'\0'为字符串结束标记,长度不包括'\0'。 int   b=sizeof(str); // b=20;sizeof 计算的则是分配的数组str[20] 所占的内存空间的大小,不受里面存储的内容影响。 #pragma pack的具体含义...

2018-08-29 14:22:16 440

转载 Linux下C++多线程编程(入门实例)

C++ 多线程多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序。一般情况下,两种类型的多任务处理:基于进程和基于线程。基于进程的多任务处理是程序的并发执行。 基于线程的多任务处理是同一程序的片段的并发执行。多线程程序包含可以同时运行的两个或多个部分。这样的程序中的每个部分称为一个线程,每个线程定义了一个单独的执行路径。本教程假设您使用的是 Linu...

2018-08-29 00:39:18 21507 2

原创 VS工程属性“字符集”和源文件“高级保存选项”字符集区别

项目--属性--设置属性--常规--字符集,VS2015默认为Unicode字符集。一、工程字符集属性工程属性里,字符集可以选择“使用Unicode字符集”和“使用多字节字符集”。此选项只控制代码里的API是用宽字符版(即Unicode)的还是ANSI字符版(即GBK)的,它控制不了代码里的字符是用Unicode编码还是ANSI编码。如果选择了“使用Unicode字符集”,则...

2018-08-28 22:17:57 3328

转载 宽字符标量L"xx"在VC6.0/7.0和GNU g++中的不同实现。

锲子:本文源于在VCKBASE C++论坛和周星星大哥的一番讨论,这才使我追根索源,找到了理论依据和实践的证明。(本文一些资料和测试代码由周星星提供)《The C++ Programming Language 3rd》中有这么两段话:from 4.3:A type wchar_ t is provided to hold characters of a larger character s...

2018-08-28 19:59:13 311

转载 Windows下C++多线程编程(入门实例)

  多线程在编程中有相当重要的地位,我们在实际开发时或者找工作面试时总能遇到多线程的问题,对多线程的理解程度从一个侧面反映了程序员的编程水平。  其实C++语言本身并没有提供多线程机制(当然目前C++ 11新特性中,已经可以使用std::thread来创建线程了,因为还没有系统地了解过,所以这里不提了。),但Windows系统为我们提供了相关API,我们可以使用他们来进行多线程编程。创建线...

2018-08-28 18:44:09 62474 10

原创 Windows和Linux进程与线程的区别

对于windows来说,进程和线程的概念都是有着明确定义的,进程的概念对应于一个程序的运行实例(instance),而线程则是程序代码执行的最小单元。也就是说windows对于进程和线程的定义是与经典OS课程中所教授的进程、线程概念相一致的。提供API,CreateThread()用于建立一个新的线程,传递线程函数的入口地址和调用参数给新建的线程,然后新线程就开始执行了。windows下,...

2018-08-28 17:14:25 5632 3

转载 孤儿进程与僵尸进程[总结]

1、前言  之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊。今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧。晚上回来google了一下,再次参考APUE,认真总结一下,加深理解。2、基本概念  我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的...

2018-08-27 20:11:43 192

转载 程序,进程,线程的区别和联系

进程和程序区别和联系表现在以下方面:1)程序只是一组指令的有序集合,它本身没有任何运行的含义,它只是一个静态的实体。而进程则不同,它是程序在某个数据集上的执行。进程是一个动态的实体,它有自己的生命周期。它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消。反映了一个程序在一定的数据集上运行的全部动态过程。2)进程和程序并不是一一对应的,一个程序执行在不同的数据集上...

2018-08-26 22:27:18 57782 8

原创 调用约定__cdecl、__stdcall和__fastcall的区别

什么是调用约定函数的调用约定,顾名思义就是对函数调用的一个约束和规定(规范),描述了函数参数是怎么传递和由谁清除堆栈的。它决定以下内容:(1)函数参数的压栈顺序,(2)由调用者还是被调用者把参数弹出栈,(3)以及产生函数修饰名的方法。历史背景在微机出现之前,计算机厂商几乎都会提供一份操作系统和为不同编程语言编写的编译器。平台所使用的调用约定都是由厂商的软件实现定义的。 在Apple...

2018-08-26 21:12:08 15897 3

转载 为什么ICMP的ping和tracert不经过tcp或udp?

答:希望用图片的形式能帮你建立起OSI分层的概念,更多细节需要你阅读教材。图1至图4展示了一个完整的ICMP报文。图1可见,该报文的结构为:Frame,Ethernet,IP,ICMP。选中Frame可以看到整个报文都被选中。图1 选择Ethernet后,如图2显示。下面被选中的数据就是Ethernet报文的头部,Ethernet位于数据链路层。那Ethernet的数据部在...

2018-08-26 19:47:37 9913 2

转载 socket为什么要翻译成套接字?

问:socket的英文原义是“孔”或“插座”,这个多好理解,套什么接什么字?答:作为一条刻(wu)苦(liao)钻(tou)研(ding)的IT狗,告诉你……不……可……考……理论上对于计算机界的新名词,我们国家有个中国计算机学会,下面有个“计算机术语审定工作委员会”,其职责就是“负责计算机新术语的审定工作,收集、翻译、释义、审定和推荐计算机术语,将审定过的新术语报全国名词审定委员会,...

2018-08-26 18:46:27 3159 9

转载 bfptr算法(即中位数的中位数算法)

BFPRT算法是解决从n个数中选择第k大或第k小的数这个经典问题的著名算法,但很多人并不了解其细节。本文将首先介绍求解这个第k小数字问题的几个思路,然后重点介绍在最坏情况下复杂度仍然为O(n)的BFPRT算法。一 基本思路关于选择第k小的数字有许多方法,其效率和复杂度各不一样,可以根据实际情况进行选择。将n个数排序(比如快速排序或归并排序),选取排序后的第k个数,时间复杂度为O(nlo...

2018-08-25 22:35:16 22585 1

原创 数据库并发控制技术

事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元,也是恢复和并发控制的基本单位。事务处理技术主要包括数据库恢复技术和并发控制技术。本篇博文主要总结下并发控制技术。事务:是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。例如,在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。一般来说,一个程序中包含多个事务。ACID,是...

2018-08-25 14:27:19 3840

转载 关于栈、堆、静态存储区最大可分配大小的探讨

中午看《编程之美》的第2.5节中有这么一小段程序:float array[100000000];这个1亿个float变量,这样就有8亿个字节,转化为二进制单位G,就是小于等于1G。这样大小的数组量只能用堆(动态申请内存变量)或者静态存储区(全局变量)来申请。好了,转入今天要讲的正题。到底栈、堆、静态存储区能申请的最大分配大小是多少呢?栈(stack)栈大小与编译器有关。默认...

2018-08-23 16:26:53 3796

转载 printf,wprintf与setlocale,char与wchar_t区别

#include <stdio.h>#include <wchar.h>int main(void) { char str[] = "中文"; wchar_t wstr[] = L"中文"; printf("1:%s\n", str); wprintf(L"2:%s\n", wstr); return 0;}Windows

2018-08-08 16:24:00 1609

原创 C++常量表达式、const、constexpr(C++11新增)的区别

常量表达式是指值不会改变且在编译过程中就能够得到计算结果的表达式,能在编译时求值的表达式。例1:#include <iostream>using namespace std;int main(){ const int a1 = 10; // a1是常量表达式。 const int a2 = a1 + 20; // a2是常量表达...

2018-08-05 14:01:03 2997 2

原创 C++中class和typename的区别

由于历史原因,以前是用class,后来C++ Standard 出现后,引入了typename, 所以他们基本上是一样的,但也有区别。例1:// 定义一个返回参数中较大者的通用函数template <typename T>const T& max(const T& x, const T& y){ return x > y ? x : y...

2018-08-02 18:57:35 1020 1

原创 C++的匿名对象

今天在github看到有人抛出如下异常:throw std::exception("Invalid input."); 即抛出了一个匿名对象。就比较了一下c++标准和各平台的实现:https://blog.csdn.net/a3192048/article/details/81329976顺便也整理下c++的匿名对象。C++中的匿名对象是pure RValue, 因而不能作为引用传进去...

2018-08-01 21:35:05 7771

原创 std::exception标准和各平台实现的不同

C++98标准:C++11标准:g++ 5.4.0实现如下:VS2015实现如下:可见,g++只是实现了标准中的默认构造函数;而VS扩展了标准,新增了explicit exception(char const* const _Message) throw()和exception(char const* const _Message, int) throw();即像t...

2018-08-01 14:25:26 1328

jdk-8u211-windows-x64安装包.rar

jdk-8u211-windows-x64.exe 截至2019.07.15 最新版JDK for Windows 64位系统。

2019-07-21

jdk-8u211-Linux-x64安装包.rar

jdk-8u211-Linux-x64.tar.gz 截至2019.07.15 最新版JDK for Linux 64位系统

2019-07-21

jdk-8u211苹果电脑64位系统版.rar

jdk-8u211-macosx-x64.dmg 截至2019.07.15 最新版JDK for Mac OS X x64位

2019-07-15

《Redis设计和实现 黄建宏著》配套 Redis 3.0 中文注释版源码

与《Redis设计和实现 》黄建宏著配套的, Redis 3.0 中文注释版源码。

2019-05-01

代码阅读方法与实践.2004.中文版(38.4M清晰版)

代码阅读有自身的一套技能,重要的是能够确定什么时候使用哪项技术。本书中,作者使用600多个现实的例子,向读者展示如何区分好的(和坏的)代码,如何阅读,应该注意什么,以及如何使用这些知识改进自己的代码。养成阅读高品质代码的习惯,可以提高编写代码的能力。 阅读代码是程序员的基本技能,同时也是软件开发、维护、演进、审查和重用过程中不可或缺的组成部分。本书首次将阅读代码作为一项独立课题,系统性地加以论述。本书引用的代码均取材于开放源码项目——所有程序员都应该珍视的宝库。本书围绕代码阅读,详细论述了相关的知识与技能。“他山之石、可以攻玉”,通过仔细阅读并学习本书,可以快速地提高读者代码阅读的技能与技巧,进而从现有的优秀代码、算法、构架、设计中汲取营养,提高自身的开发与设计能力。 本书适用于对程序设计的基本知识有一定了解,并想进一步提高自身开发能力的读者。

2018-10-04

linux学习资料(包含五本书)

包含《鸟哥的 Linux 私房菜 基础篇 第四版》、《Shell脚本学习指南》、《Linux命令全集(中文版)》、《Linux系统命令及Shell脚本实践指南》、《Linux命令行与shell脚本编程大全(第2版)》五本入门书

2018-07-26

<<21天学通Python>>PDF

本书全面、系统、深入地讲解了 Python 编程基础语法与高级应用。在讲解过程中,通过大量实际操作的实例将 Python 语言知识全面、系统、深入地呈现给读者。此外,作者专门为本书录制了大量的配套教学视频,让读者通过分析实例、运行实例尽快熟悉 Python 编程,在学习中遇到问题时,也可以作为参考。 本书共分三篇。篇介绍 Python 语言的特点、安装、语法基础、程序流程控制、面向过程的编程方法、面向对象的编程方法、程序异常的处理;第二篇介绍了 Python 语言中的包与模块、迭代器、生成器、装饰器、上下文管理器等进阶语法,同时介绍了使用 Python 标准库中的文件系统处理、图形化界面编程、正则表达式、网络编程、多进(线)程编程、数据库编程。此外,还介绍了运用第三方库的 Web网站编程、图片处理;第三篇通过两个案例介绍 Python 的综合编程技术。 本书在内容上涉及面广,从基本操作到高级技术及综合案例,涉及 Python 语言的基础语法和编程特性。本书在设计上浅显易懂、实例丰富,尤其适合广大编程初学者自学,也适合对 Python 语言感兴趣的爱好者作为参考用书。

2018-07-10

21天学通Python光盘(源代码+PPT+视频)和PDF

全面、系统、深入地讲解了 Python 编程基础语法与高级应用。在讲解过程中,通过大量实际操作的实例将 Python 语言知识全面、系统、深入地呈现给读者。此外,作者专门为本书录制了大量的配套教学视频,让读者通过分析实例、运行实例尽快熟悉 Python 编程,在学习中遇到问题时,也可以作为参考。 本书共分三篇。篇介绍 Python 语言的特点、安装、语法基础、程序流程控制、面向过程的编程方法、面向对象的编程方法、程序异常的处理;第二篇介绍了 Python 语言中的包与模块、迭代器、生成器、装饰器、上下文管理器等进阶语法,同时介绍了使用 Python 标准库中的文件系统处理、图形化界面编程、正则表达式、网络编程、多进(线)程编程、数据库编程。此外,还介绍了运用第三方库的 Web网站编程、图片处理;第三篇通过两个案例介绍 Python 的综合编程技术。 本书在内容上涉及面广,从基本操作到高级技术及综合案例,涉及 Python 语言的基础语法和编程特性。本书在设计上浅显易懂、实例丰富,尤其适合广大编程初学者自学,也适合对 Python 语言感兴趣的爱好者作为参考用书。

2018-07-09

PDFdo PDF Converter3.0免安装破解版

PDFdo PDF Converter3.0是一款非常强大的PDF转换工具,可以很随意和方便的把图片,WORD等格式转换成PDF格式,也可以把PDF格式转换成图片或者WORD格式软件,软件是绿色破解版的,直接解压运行exe即可,第一次需要输入注册码,注册码随意输入即可。

2018-06-13

BackTrack 5 Cookbook中文版 渗透测试实用技巧荟萃

BackTrack是一个基于Linux的渗透测试和安全审计平台,旨在帮助网络安全人员对网络黑客行为进行评估,如今被世界各地的安全社区和安全人员所使用。   《BackTrack 5 Cookbook中文版——渗透测试实用技巧荟萃》分为10章,以示例方式讲解了BackTack中很多流行工具的使用方法,其内容涵盖了BackTrack的安装和配置、BackTrack的调整、信息采集、漏洞识别、漏洞利用、提权、无线网络分析、VoIP、密码破解、电子取证等内容。   《BackTrack 5 Cookbook中文版——渗透测试实用技巧荟萃》讲解详细,示例丰富,无论你是经验丰富的渗透测试老手,还是打算紧跟时代潮流,希望掌握BackTack 5中常用软件使用方法的新手,都会从本书中获益匪浅。

2018-06-13

林肯实验室darpa数据集_2000年(Lincoln Laboratory Scenario (DD0S) 2.0.2)

林肯实验室darpa数据集_2000年(Lincoln Laboratory Scenario (DD0S) 2.0.2)

2018-06-12

初学者C和C++编程规范

分别为谷歌,华为公司的c/c++编程规范。ps: 对于初学者,一开始养成编程风格很重要。

2018-06-10

如何在cmd下ping端口

cmd下默认不支持ping端口,该小工具可帮助ping端口。 使用说明: 1.将"tcping.exe"复制到 C:\Windows\System32 路径下 2.打开cmd,输入"tcping+空格+IP地址+空格+端口" 如:tcping www.baidu.com 3389 (注:如不指定端口则默认80端口!)

2018-06-10

jfreechart表绘制类库及jcommon源代码

包含jfreechart-1.0.19,jcommon-1.0.19,jcommon-1.0.23,jfreechart-1.0.19-fx-javadocs,jfreechart-1.0.19-install.pdf

2018-06-10

SGI STL的源码

1.由于HPE收购了SGI,所以官网已无法下载SGI STL源码。2.Ubuntu16.04自带glibc版本是2.23

2018-05-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除