- 博客(15)
- 收藏
- 关注
原创 C++虚函数的调用过程
C++编译阶段,没办法知道一个基类的指针或引用所指对象的类型,所以没办法通过这个指针判断调用的虚函数到底是谁的,所以只能通过查找虚函数表来找到函数的入口地址。 一个类,如果有虚函数,那么编译器在编译这个类的时候就会为它添加一个虚函数表,以及指向这个虚函数表的指针。继承这个基类的之类,也会新建一个虚函数表,如果没有重载,那么这个新的虚函数表中的函数指针就被拷贝为父类该函数的地址,否则为新的函数地址。
2016-04-17 21:49:42 2535
原创 C++中的哑类
C++,哑对象?C++中的哑对象指没有任何数据成员也没有虚函数的类, C++在处理这种类时,会增加一个哑成员,使得类的尺寸为1,因为如果不这么做的话:对象的尺寸则为0,则不需要在内存中存放这个对象 对这个对象的取地址也将成为非法行为,比较两个哑对象的地址也将没有任何意义。 但是如果有虚函数,类中则至少有一个指向虚函数表的指针,所以成员数不可能为0,就不要添加哑成员了。
2016-04-17 19:49:08 1840
原创 Linux - 消息队列
消息队列是由内核维护的消息链表。每个消息链表有一个名字和标识id,名字在进程之间通用,标识id被内核使用,名字也称为key,被用户使用,一个消息队列有一个公共的key,这个公共的key是大家都知道的,但是为了避免冲突,可以使用key_t ftok(const char *path, int id);来获得一个key。第一个参数是文件路径,第二个参数是项目id。这样所有的进程都只引用同一个文件和相同的
2015-05-30 01:08:50 532
原创 线程 - 读书笔记
线程控制原语:创建: int pthread_create(pthread_t* id, pthread_attr_t *attr, void *(*rtn)(void*), void* param); 退出: 主动退出:int pthread_exit(void*); 被动退出:int pthread_cancel(pthread_t id); 数据收集: 获取数据:int pthread
2015-05-17 21:34:34 526
原创 二叉查找树
不知道为什么,之前写的二叉查找树被CSDN删掉了,往上搜了一下好像好挺多这种情况,不管了,就当是为了学习吧,再写一遍好了。二叉查找树什么是二叉查找树二叉查找树是一种特殊的二叉树,之所以特殊是因为它的查找效率很高,而查找效率高的原因是对节点的组织方式遵从下面的两条规则: 1. 所有的父节点的左子树中的元素的key小于父节点的key 2. 所有的父节点的右子树中的结
2015-04-11 00:09:58 466
原创 散列
今天开始学习散列了,我现在对散列的理解可能还比较片面,但至少先记录下来。为什么要有散列在一本字典里,所有的单词都应该很快的被索引到,线性查找是不切实际的。在计算机中,能根据索引以O(1)时间找到值的,就只有数组了。也就是,根据数组下标找到这个下标所对应值是最快的。所以,如果把单词和存放到数组中,然后根据每个单词对应的索引就可以以非常快的速度找到这个单词。这里的单词所对应的索引称为key。但是问题在于
2015-04-06 15:33:38 748
原创 计数排序
计数排序让我惊呆了我写了个计数排序,让它对1亿个随机数进行排序,结果只需要两秒的时间。插入排序就不说了,堆排序和快速排序越需要1分钟以上,而计数排序却只要不到2秒。这差距有点大呀。对于计数排序来说,它的时间复杂度是线性的,也就是n的却界限。但是正应了鱼和熊掌不可兼得这句话,计数排序不是原地排序,它对内存的要求是排序数个数的两倍加上计数所需内存。下面介绍一下计数排序:计数排序不是比较排序,也就是说
2015-04-04 01:50:16 549
原创 linux下socket编程accept出现参数错误
accept函数原型如下: int accept(int sock, struct sockaddr* adress, socklen_t* ); 使用之前需要把adress和len都清零。
2015-02-23 19:17:42 1837
原创 Ubuntu下Eclipse打开源代码文件退出 菜单异常
The problem is caused by unity global menu. if I start eclipse "env UBUNTU_MENUPROXY= eclipse" then there is no problem.where there has a space before eclipse which is actually the eclipse path.
2014-12-16 01:35:21 579
翻译 解决Ubuntu Nvidia显卡闪烁
sudo add-apt-repository ppa:townsend/compiz-nvidia-refresh-testsudo apt-get updatesudo apt-get dist-upgrade
2014-11-29 13:44:58 1367
转载 64位ubuntu运行adt缺少libstdc++.so.6和libz.so.1文件
64位ubuntu运行adt缺少libstdc++.so.6和libz.so.1文件2014-08-19 03:08:37 标签:Ubuntu系统:ubuntu 14.04 64位ADT版本:adt-bundle-linux-x86_64-20140702.zip错误1:adb: error while loading shared libraries: libstdc++
2014-09-25 16:48:13 1722
转载 Y470 Ubuntu 13.04 Nvidia
Lenovo Y470,从物理上说,拥有1块集成Intel显卡和1块nVidia GeForce550M独立显卡,平时在Windows7/8下是可以通过nVidia自家的Optimus技术实现无缝热切换技术,使得系统可智能地根据当前环境,或是根据用户需要,来自由选择使用哪一块显卡来运行特定程序。但在Linux环境下,nVidia公司并没有提供这样的技术。于是民间就出现了Bumblebee,来实现与
2014-08-31 18:19:36 1062
转载 修改系统启动项 grub2配置的方法 ubuntu[转]
在 早期的Ubuntu中,使用Grub作为系统的启动引导程序,想修改系统启动项非常简单,只要用gedit打开系统菜单设定文件( sudo gedit /boot/grub/menu.lst ),修改该文件中到内容即可,但是到了Grub 2中,不能采用这种方式修改系统启动项了。Grub 2特性Grub 2(GRand Unified Bootloader, version 2)是Grub
2014-08-30 23:13:21 573
原创 ubuntu 14.04 vsfptd command not found
如果是 14.04https://help.ubuntu.com/14.04/servergui ... erver.htmlsudo restart vsftpd
2014-08-27 18:29:52 732
原创 关于出现J-link仿真出现:The connected emulator is a J-Link clone.的解决方法。
将Jlink驱动目录:Segger 下的JLinkARM.dll替换掉MDK安装目录下的./ARM/Segger/JLinkARM.dll就可以了。
2014-03-30 19:36:22 9519 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人