08 2018 档案

摘要:前言查看本文之前最好先看这篇文章:C++ 虚函数表解析---陈皓改进版07年12月,我写了一篇《C++ 虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的... 阅读全文
posted @ 2018-08-31 20:41 Adano1 阅读(240) 评论(0) 推荐(0)
摘要:class base { virtual void f1() {}};base bs;问:“为什么bs虚函数表的地址(int*)(&bs)与虚函数f1()地址(int*)*(int*)(&bs) 不是同一个?”... 阅读全文
posted @ 2018-08-31 12:57 Adano1 阅读(232) 评论(0) 推荐(0)
摘要:修正了一些原文中的错误。前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这... 阅读全文
posted @ 2018-08-29 22:37 Adano1 阅读(313) 评论(0) 推荐(0)
摘要:C++ 继承面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行时间的效果。当创建一个类时,您不需要重新编... 阅读全文
posted @ 2018-08-29 20:36 Adano1 阅读(667) 评论(0) 推荐(0)
摘要:char str[20]="0123456789"; int a=strlen(str); // a=10;strlen 计算字符串的长度,以'\0'为字符串结束标记,长度不包括'\0'。 int b=s... 阅读全文
posted @ 2018-08-29 14:22 Adano1 阅读(310) 评论(0) 推荐(0)
摘要:C++ 多线程多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序。一般情况下,两种类型的多任务处理:基于进程和基于线程。基于进程的多任务处理是程序的并发执行。 基于线程的多任务处理... 阅读全文
posted @ 2018-08-29 00:39 Adano1 阅读(433) 评论(0) 推荐(0)
摘要:项目--属性--设置属性--常规--字符集,VS2015默认为Unicode字符集。一、工程字符集属性工程属性里,字符集可以选择“使用Unicode字符集”和“使用多字节字符集”。此选项只控制代码里的API是用宽... 阅读全文
posted @ 2018-08-28 22:18 Adano1 阅读(1071) 评论(0) 推荐(0)
摘要:锲子:本文源于在VCKBASE C++论坛和周星星大哥的一番讨论,这才使我追根索源,找到了理论依据和实践的证明。(本文一些资料和测试代码由周星星提供)《The C++ Programming Language 3... 阅读全文
posted @ 2018-08-28 19:59 Adano1 阅读(157) 评论(0) 推荐(0)
摘要:多线程在编程中有相当重要的地位,我们在实际开发时或者找工作面试时总能遇到多线程的问题,对多线程的理解程度从一个侧面反映了程序员的编程水平。 其实C++语言本身并没有提供多线程机制(当然目前C++ 11新特性... 阅读全文
posted @ 2018-08-28 18:44 Adano1 阅读(719) 评论(0) 推荐(0)
摘要:对于windows来说,进程和线程的概念都是有着明确定义的,进程的概念对应于一个程序的运行实例(instance),而线程则是程序代码执行的最小单元。也就是说windows对于进程和线程的定义是与经典OS课程中所... 阅读全文
posted @ 2018-08-28 17:14 Adano1 阅读(514) 评论(0) 推荐(0)
摘要:1、前言 之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊。今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧... 阅读全文
posted @ 2018-08-27 20:12 Adano1 阅读(135) 评论(0) 推荐(0)
摘要:进程和程序区别和联系表现在以下方面:1)程序只是一组指令的有序集合,它本身没有任何运行的含义,它只是一个静态的实体。而进程则不同,它是程序在某个数据集上的执行。进程是一个动态的实体,它有自己的生命周期。它因创建而... 阅读全文
posted @ 2018-08-26 22:27 Adano1 阅读(465) 评论(0) 推荐(0)
摘要:什么是调用约定函数的调用约定,顾名思义就是对函数调用的一个约束和规定(规范),描述了函数参数是怎么传递和由谁清除堆栈的。它决定以下内容:(1)函数参数的压栈顺序,(2)由调用者还是被调用者把参数弹出栈,(3)以及... 阅读全文
posted @ 2018-08-26 21:12 Adano1 阅读(695) 评论(0) 推荐(0)
摘要:答:希望用图片的形式能帮你建立起OSI分层的概念,更多细节需要你阅读教材。图1至图4展示了一个完整的ICMP报文。图1可见,该报文的结构为:Frame,Ethernet,IP,ICMP。选中Frame可以看到整个... 阅读全文
posted @ 2018-08-26 19:48 Adano1 阅读(318) 评论(0) 推荐(0)
摘要:问:socket的英文原义是“孔”或“插座”,这个多好理解,套什么接什么字?答:作为一条刻(wu)苦(liao)钻(tou)研(ding)的IT狗,告诉你……不……可……考……理论上对于计算机界的新名词,我们国家... 阅读全文
posted @ 2018-08-26 18:46 Adano1 阅读(252) 评论(0) 推荐(0)
摘要:BFPRT算法是解决从n个数中选择第k大或第k小的数这个经典问题的著名算法,但很多人并不了解其细节。本文将首先介绍求解这个第k小数字问题的几个思路,然后重点介绍在最坏情况下复杂度仍然为O(n)的BFPRT算法。一... 阅读全文
posted @ 2018-08-25 22:35 Adano1 阅读(1773) 评论(0) 推荐(0)
摘要:事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元,也是恢复和并发控制的基本单位。事务处理技术主要包括数据库恢复技术和并发控制技术。本篇博文主要总结下并发控制技术。事务:是用户定义的一个数据库操作序列,这些... 阅读全文
posted @ 2018-08-25 14:27 Adano1 阅读(551) 评论(0) 推荐(0)
摘要:中午看《编程之美》的第2.5节中有这么一小段程序:float array[100000000];这个1亿个float变量,这样就有8亿个字节,转化为二进制单位G,就是小于等于1G。这样大小的数组量只能用堆(动态申... 阅读全文
posted @ 2018-08-23 16:27 Adano1 阅读(1960) 评论(0) 推荐(0)
摘要:#include #include int main(void) { char str[] = "中文"; wchar_t wstr[] = L"中文"; printf("1:%s\n", st... 阅读全文
posted @ 2018-08-08 16:24 Adano1 阅读(190) 评论(0) 推荐(0)
摘要:常量表达式是指值不会改变且在编译过程中就能够得到计算结果的表达式,能在编译时求值的表达式。例1:#include using namespace std;int main(){ const int a1 = 1... 阅读全文
posted @ 2018-08-05 14:01 Adano1 阅读(144) 评论(0) 推荐(0)
摘要:由于历史原因,以前是用class,后来C++ Standard 出现后,引入了typename, 所以他们基本上是一样的,但也有区别。例1:// 定义一个返回参数中较大者的通用函数template const T... 阅读全文
posted @ 2018-08-02 18:58 Adano1 阅读(309) 评论(0) 推荐(0)
摘要:今天在github看到有人抛出如下异常:throw std::exception("Invalid input."); 即抛出了一个匿名对象。就比较了一下c++标准和各平台的实现:https://blog.csd... 阅读全文
posted @ 2018-08-01 21:35 Adano1 阅读(439) 评论(0) 推荐(0)
摘要:C++98标准:C++11标准:g++ 5.4.0实现如下:VS2015实现如下:可见,g++只是实现了标准中的默认构造函数;而VS扩展了标准,新增了explicit exception(char const* ... 阅读全文
posted @ 2018-08-01 14:25 Adano1 阅读(488) 评论(0) 推荐(0)