- 博客(69)
- 资源 (1)
- 收藏
- 关注
转载 原码,反码,补码详解
感谢原作者分享:https://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助
2017-08-19 19:08:59
457
转载 浅谈C++容器
感谢原作者分享:http://www.cnblogs.com/yymn/p/5157841.html浅谈C++容器(一)在面向对象的语言中,大多引入了容器的概念。那么 什么 是 容器?实质上就是一组相同类型对象的集合,但是它又不仅仅像数组那样简单,它实现了比数组更复杂的数据结构,当然也实现了比数组更强大的功能。C++ 标准模板库里提供了10 种通用的容器类,它基本上
2017-08-13 20:52:08
384
原创 IP地址、子网掩码、网络号、主机号、网络地址、主机地址的关系及相关计算
IP地址:4段十进制,共32位二进制,如:192.168.1.1 二进制就是:11000000|10101000|00000001|00000001子网掩码可以看出有多少位是网络号,有多少位是主机号: 255.255.255.0 二进制是:11111111 11111111 11111111 00000000网络号24位,即全是1 主机号8位,即全是0129.168.1.1
2017-08-13 14:22:44
2428
原创 C++进阶之虚函数表
C++通过继承(inheritance)和虚函数(virtual function)来实现多态性。所谓多态,简单地说就是,将基类的指针或引用绑定到子类的实例,然后通过基类的指针或引用调用实际子类的成员函数(虚函数)。本文将介绍单继承、多重继承下虚函数的实现机制。一、虚函数表为了支持虚函数机制,编译器为每一个拥有虚函数的类的实例创建了一个虚函数表(virtual ta
2017-08-11 22:01:25
334
原创 C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法
有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括:a.引用b.常量c.静态d.静态常量(整型)e.静态常量(非整型) 常量和引用,必须通过参数列表进行初始化。 静态成员变量的初始化也颇有点特别,是在类外初始化且不能再带有static关键字,其本质见文末。参考下面的
2017-08-10 21:59:17
1510
转载 C++的数组元素为什么不能是引用类型
感谢原作者分享:http://blog.xinspace.space/2015/01/25/cpp-array-element-not-ref/这几天在看c++基础内容,看到数组的时候,书里提到数组元素的约束条件:1.元素类型支持赋值操作。2.元素类型支持复制。因此,除了引用类型对象和流对象外,其他的任意内置类型和满足上述约束的类类型均能成为数组的元素。
2017-07-31 22:15:46
7078
转载 C++ 智能指针详解
C++ 智能指针详解 一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_p
2017-07-26 14:13:52
209
转载 C++中的静态绑定和动态绑定
C++中的静态绑定和动态绑定(感谢原作者分享:http://www.cnblogs.com/lizhenghn/p/3657717.html)C++在面向对象编程中,存在着静态绑定和动态绑定的定义,本节即是主要讲述这两点区分。我是在一个类的继承体系中分析的,因此下面所说的对象一般就是指一个类的实例。首先我们需要明确几个名词定义:静态类型:对象在声明时采用的类
2017-07-26 14:11:10
336
原创 堆和栈的区别(非常经典的文章)
一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(s
2017-07-15 22:57:15
294
原创 虚拟内存,虚拟内存地址,物理内存,物理内存地址
在解释第一个问题之前,先说明一下计算机内存管理的中的四个名词:虚拟内存,虚拟内存地址,物理内存,物理内存地址。先说说为什么会有虚拟内存和物理内存的区别。正在运行的一个进程,他所需的内存是有可能大于内存条容量之和的,比如你的内存条是256M,你的程序却要创建一个2G的数据区,那么不是所有数据都能一起加载到内存(物理内存)中,势必有一部分数据要放到其他介质中(比如硬盘),待进程需要访问那部
2017-07-14 13:49:42
2696
4
原创 如何在C中调用C++函数 与 如何在C++中调用C的函数(待修改)
第一个问题:如何在C中调用C++函数网上有一翻译C++之父的文章可以作为解答,遂拿来Mark一下。 将 C++ 函数声明为``extern "C"''(在你的 C++ 代码里做这个声明),然后调用它(在你的 C 或者 C++ 代码里调用)。例如:// C++ code:extern "C" void f(int);void f(int i){ // ...
2017-07-13 22:00:38
510
转载 linux下动态链接库(.so)的显式调用和隐式调用
感谢原作者分享:http://blog.csdn.net/lc_910927/article/details/42393121一、显式调用和隐式调用的区别 我们知道,动态库相比静态库的区别是:静态库是编译时就加载到可执行文件中的,而动态库是在程序运行时完成加载的,所以使用动态库的程序的体积要比使用静态库程序的体积小,并且使用动态库的程序在运行时必须依赖所使
2017-07-13 21:14:05
557
原创 memcpy memmove区别和实现(如何处理内存重叠问题)
memcpy与memmove的目的都是将N个字节的源内存地址的内容拷贝到目标内存地址中。但当源内存和目标内存存在重叠时,memcpy会出现错误,而memmove能正确地实施拷贝,但这也增加了一点点开销。memmove的处理措施:(1)当源内存的首地址等于目标内存的首地址时,不进行任何拷贝(2)当源内存的首地址大于目标内存的首地址时,实行正向拷贝(3)当源内存的首地址小于目标内存
2017-07-12 20:47:34
742
原创 C++动态绑定
[TOC] 首先明确C++中引用或指针的动态类型(dynamic type)与静态类型(static type)是C++支持多态性(polymorphism)的根本所在。首先说明四个概念: 静态类型:对象声明时采用的类型,一旦确定就无法更改,编译期已经确定动态类型:通常是指一个指针或引用在调用时所指向的类型,可以理解为赋值号右侧对象的类型(当然采用直接赋值就是括号中的对象的类型),可以在运行
2017-07-10 16:51:53
514
原创 TCP连接建立过程中为什么需要“三次握手”
传输控制协议(Transmission Control Protocol, TCP)是一种面向连接的、可靠的、基于字节流的运输层(Transport layer)通信协议。是专门为了在不可靠的互联网络上提供一个可靠的端到端字节流而设计的。互联网络与单个网络不同,因为互联网络的不同部分可能有着截然不同的拓扑、带宽、延迟、分组大小和其他参数。TCP的设计目标是能够动态的适应互联网络的这些特性,而且当面对
2017-06-29 21:09:03
333
转载 大端与小端存储模式详解
端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian(这句话最为形象)。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。在计算机业Big E
2017-06-29 11:34:49
368
原创 C++中类的访问权限针对的是类而不是对象!(为什么类中的函数可以访问对象的私有成员?)
我们首先看一段程序:class A {private: int i;public: A(int i): i(i) {} void print(A a) { cout << a.i <<endl; }};int main() { A B(5); A C(4); B.print(C); return 0;}编译通过,
2017-06-22 21:18:23
4533
原创 面试中的单链表种种
链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力。链表的操作也离不开指针,指针又很容易导致出错。综合多方面的原因,链表题目在面试中占据着很重要的地位。首先我们给出链表的基本数据结构以及构建和遍历函数:```c++//Definition for singly-linked list.struct ListNode {
2017-06-22 10:35:19
420
原创 二分查找变形记:从循环不变量说起
首选我们介绍标题中提到的两个名词:二分查找: 二分查找的搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则查找成功;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。循环不变量: 其主要用来帮助理解算法的正确性。形式上很类似
2017-06-15 18:45:04
1342
原创 VMware: ubuntu 与Windows设置共享文件夹
在VMware workstation新版之后设置共享文件夹有两种方式安装VMware tools。具体操作可参加:Install_doc。但此种安装方法,较为繁琐,且每次ubuntu系统升级后,有可能会导致共享文件夹莫名丢失,此时就需要卸载旧版安装新版VMware tools。使用open-vm-tools,这也是本文大力推荐的一个方法。open-vm-tools其实是VMware tools
2017-06-12 17:35:37
10104
原创 Git Windows version default option false(core.ignorecase is true)
Git Windows版本默认选项中有一个隐藏的fault 及 core.ignorecase = true;即不区分大小写。 这样的话就会产生一系列问题:目录下不创建如下两个问题:aa/ , AA/;本地创建了一个 aa/ 文件夹,但添加到暂存区、版本库时可能会对应到一个名为 AA/ 的文件
2017-06-02 11:26:20
969
转载 前置++ 和后置++的区别(C++ 为什么不叫++C)
这篇文章不是讨论(i++)+(i++)+(i++)的计算结果,更不是讨论(i++)+(++i)+(i++)。 在C++教程中,我们都会学到:i++和++i是两个表达式,他们都会对i进行自增,但是呢,作为表达式,i++的值是自增之前的值,++i的值是自增之后的值。 本文在此基础上,进行一些稍微深入的讨论。 从操作符重载的角度,看i++和++i的区别,是
2017-05-27 22:22:17
1201
原创 重载(overload), 覆盖(override), 隐藏(hide)的区别
[TOC] 正文开始之前,首先介绍一下3个关键字对应的英文:重载(overload), 覆盖(override), 隐藏(hide)。 下面我们依次介绍。 * 隐藏(hide),直接看代码#include <iostream>using namespace std;class CB {public: void f(int i) { cout << "CB::f
2017-05-25 22:30:06
435
转载 C++多态性(待补充)
感谢原作者分享,原文地址http://blog.csdn.net/hackbuteer1/article/details/7475622C++编程语言是一款应用广泛,支持多种程序设计的计算机编程语言。我们今天就会为大家详细介绍其中C++多态性的一些基本知识,以方便大家在学习过程中对此能够有一个充分的掌握。 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面
2017-05-25 15:57:57
238
原创 常量指针与指针常量
常量指针//指向const对象的指针const int * ptr;//指向一个int类型常量的指针,const限制其指向对象的类型,并非 ptr本身ptr 本身不是一个常量,不需要对其初始化。同时,也允许对其进行二次复制,使其指向另一个const对象。 唯一不行的就是,不能通过该指针修改其指向的const 对象const int a = 1;const int b = 2;int c =
2017-05-10 17:48:32
370
原创 C++的const类成员函数(解释为什么非const成员函数不能访问const对象的数据成员)
1. 在C++中只有被声明为const的成员函数才能被一个const类对象调用。如果要声明一个const类型的类成员函数,只需要在成员函数列表后加上关键字const, 例如:class Screen { public: char get() const;};在类体之外定义const成员函数时,还必须加上const关键字,例如:char Screen :: get() c
2017-05-09 20:55:39
3829
1
转载 算法分析:大O符号/大Ω符号/大Θ符号/小o符号/小w符号
感谢作者分享,原文链接:http://blog.csdn.net/u012816041/article/details/49888631大O,渐进表示法,接下来我尝试用最简单的方式进行说明。学习算法我经常听到这个词汇,我一开始很难理解,什么鬼?其实简单的说,就是描述一个算法的好坏词。大O,可以认为它的含义是“order of”(大约是)。简单列举几个,当人们形容:
2016-03-30 22:03:05
51726
5
原创 for循环的条件判断中为什么用'!='而不用'<'
感学原作者分享,原文地址:http://blog.csdn.net/njnu_mjn/article/details/7648730翻阅《C++ Primer中文版(第4版)》,里面出现的for大多都是类似如下的循环:[cpp] view plain copy print?vectorint> ivec(10); for (ve
2016-02-20 13:41:03
2398
原创 几种压缩算法的原理介绍
本文主要内容由罗蒙·迪翁发表于2006-01-07 20:38:00 IP: 222.95.162.*静态数据和动态数据的压缩策略是完全不同的。作者的见解还是值得学习的。可惜LZW(LZ78)压缩算法是有版权的,不然可以拿来用用。 下面是几种常见文件压缩算法原理介绍:字典算法字典算法是最为简单的压缩算法之一。它是把文本中出现频率比较多的单词或词汇组合做成一个对应的
2016-01-28 22:00:19
5077
原创 欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2016-01-25 14:40:04
374
转载 B树、B-树、B+树、B*树略解
原文地址:http://www.blogjava.net/supercrsky/articles/185167.htmlB树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;
2015-12-22 23:10:49
357
原创 win7(64位)php5.5-Apache2.4-mysql5.6环境安装
参考百度经验:http://jingyan.baidu.com/article/9faa723152c5d6473d28cb47.html前提:安装的电脑要支持VC11,下载地址为:https://download.microsoft.com/download/9/C/D/9CD480DC-0301-41B0-AAAB-FE9AC1F60237/VSU4/vcredist_x64.exe
2015-11-05 19:28:45
472
转载 Git中三种文件状态及其转换
Git作为一种版本控制解决方案,由于其具有的分布式特性,正被越来越多的用户熟知,一些有名的开源项目,如:Linux kernel,CakePHP,Ruby on Rails等,都在使用Git进行版本管理。 在Git中,文件状态是一个非常重要的概念,不同的状态对应不同的操作。因此,要想熟练掌握Git的用法,需要了解Git的几种文件状态。 为了说明的方便,现在初始化一个项目,也就是将项
2015-11-05 11:04:42
480
转载 Win7下Android开发环境的搭建
原文转载于:http://blog.csdn.net/mxsgoden/article/details/44342563,感谢作者分享!Win7下Android开发环境的搭建——JDK + Eclipse + Android SDK + ADT 的安装、配置Android开发环境搭建并不复杂,就是资源不好下,本文针对目前win7环境下,基于JDK+Eclipse+SDK+ADT的A
2015-11-03 13:47:16
374
转载 Git远程操作详解
转自:http://www.ruanyifeng.com/blog/2014/06/git_remote.html感谢作者分享Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能。Git有很多优势,其中之一就是远程操作非常简便。本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Git远程操作。git clonegit remoteg
2015-11-02 10:56:47
365
转载 JAVA的类名与文件名必须一致
1.Java保存的文件名必须与类名一致;2.如果文件中只有一个类,文件名必须与类名一致;3.一个Java文件中只能有一个public类;4.如果文件中不止一个类,文件名必须与public类名一致;5.如果文件中不止一个类,而且没有public类,文件名可与任一类名一致。 当编写一个Java源代码文件时,此文件通常被称为编译单元(有时也称为转译单元)。每个编译单元都必
2015-07-24 15:18:49
1048
转载 JAVA 对象引用,以及对象赋值
关键字: java对象 引用Java对象及其引用关于对象与引用之间的一些基本概念。 初学Java时,在很长一段时间里,总觉得基本概念很模糊。后来才知道,在许多Java书中,把对象和对象的引用混为一谈。可是,如果我分不清对象与对象引用, 那实在没法很好地理解下面的面向对象技术。把自己的一点认识写下来,或许能让初学Java的朋友们少走一点弯路。
2015-07-16 20:37:41
348
转载 关于(void**)及其相关的理解
关于(void**)及其相关的理解#define LOADBASSFUNCTION (f) *((void **)&f)=(void*)GetProcAddress (hBass,# f)这一句话使用*((void**)&f)的原因在于,转化目标为左值(即转化f为void*类型(*)的函数指针)。注意这里的(void**)强制类型转换仅仅只是重新声明了指针解引用的方式,
2015-04-27 00:32:34
786
原创 c指针的一些理解
C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的,两者可以说是相反的。右左法则的英文原文是这样说的:The right-left rule: Start readin
2015-04-27 00:20:45
385
转载 __FILE__,__LINE__(注意这里是两个_)
注:本文转自蚂蚁跳楼博客园,感谢作者整理 前言:我们在写程序的时候,总是或多或少会加入一些printf之类的语句用于输出调试信息,但是printf语句有个很不方便的地方就是当我们需要发布程序的时候要一条一条的把这些语句删除,而一旦需要再次调试的时候,这些语句又不得不一条条的加上,这给我们带来了很大的不便,浪费了我们很多的时间,也造成了调试的效率低下。所以,很多人会选择使用宏定义的方式
2015-04-24 13:12:27
541
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人