- 博客(305)
- 资源 (5)
- 收藏
- 关注
转载 C++ 对象的内存布局(下)
其中,每个类都有两个变量,一个是整形(4字节),一个是字符(1字节),而且还有自己的虚函数,自己overwrite父类的虚函数。而在D中,其有B1和B2的实例,于是B的成员在D的实例中存在两份,一份是B1继承而来的,另一份是B2继承而来的。在查看D之前,我们先看一看单一虚拟继承的情况。虽然我们消除了二义性的编译错误,但B类在D中还是有两个实例,这种继承造成了数据的重复,我们叫这种继承为重复继承。也就是说,先是B1(黄色),然后是B2(绿色),接着是D(灰色),而B这个超类(青蓝色)的实例都放在最后的位置。
2025-02-21 09:50:39
21
转载 C++ 对象的内存布局(上)
因为,在上一篇文章中,我用了的示例都是非常简单的,主要是为了说明一些机理上的问题,也是为了图一些表达上方便和简单。注意:子类只overwrite了父类的f()函数,而还有一个是自己的函数(我们这样做的目的是为了用g1()作为一个标记来标明子类的虚函数表)。我们使用以下程序作为测试程序:(下面程序中,我使用了一个int** pVtab 来作为遍历对象内存布局的指针,这样,我就可以方便地像使用数组一样来遍历所有的成员包括其虚函数表了,在后面的程序中,我也是用这样的方法的,请不必感到奇怪,)
2025-02-21 09:49:28
20
转载 C++ 虚函数表解析
在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一个地图一样,指明了实际所应该调用的函数。另外,如果父类的虚函数是private或是protected的,但这些非public的虚函数同样会存在于虚函数表中,所以,我们同样可以使用访问虚函数表的方式来访问这些non-public的虚函数,这是很容易做到的。
2025-02-21 09:47:57
29
转载 虚函数实现原理
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家一个清晰的剖析。
2025-02-21 09:44:31
29
转载 Linux环境下的GDB调试方法
1、GDB简介 GDB(GNU Debugger)是GCC的调试工具。其功能强大,现描述如下: GDB主要帮忙你完成下面四个方面的功能:1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 2.可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) 3.当程序被停住时,可以检查此时你的程序中所发生的事。 4.动态的改变你程序的执行环境。2、GDB基本调试命令2.1 准备 通过 gcc 的 -g 选项,将调试信息加到可执行文件中。$ gcc
2020-12-20 16:20:01
810
原创 【C#基础知识】获取网卡的ip地址和MAC
一:适用于单网卡情形二:适用于多网卡情形foreach (NetworkInterface netInt in NetworkInterface.GetAllNetworkInterfaces()) { netmac = netInt.GetPhysicalAddress().ToString();
2017-10-16 15:47:23
4016
转载 ARP协议工作原理[同网段及跨网段]
一、ARP在同个网段下的工作原理 首先,每台主机都会在自己的ARP缓冲区中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP
2017-10-16 15:06:55
9259
4
转载 C++ 高性能服务器网络框架设计细节
[+]GitChat 作者:范蠡 原文:C++ 高性能服务器网络框架设计细节 关注微信公众号:「GitChat 技术杂谈」 一本正经的讲技术前言这篇文章我们将介绍服务器的开发,并从多个方面探究如何开发一款高性能高并发的服务器程序。需要注意的是一般大型服务器,其复杂程度在于其业务,而不是在于其代码工程的基本框架。大型服务器一般有多个
2017-10-16 14:23:43
6202
原创 iperf网络性能测试工具
iperf命令是一个网络性能测试工具。iperf可以测试TCP和UDP带宽质量。iperf可以测量最大TCP带宽,具有多种参数和UDP特性。iperf可以报告带宽,延迟抖动和数据包丢失。利用iperf这一特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。 Iperf有两种版本,windows版和linux版本。linux版本下载地址为:https://sour
2017-10-11 16:25:36
3509
原创 windows下添加路由
1. 首先在“运行”窗口输入cmd(按WIN+R打开运行窗口),然后回车进入命令行。2. 在命令行下输入route命令,会有对应的提示信息。ROUTE [-f] [-p] [-4|-6] command [destination] [MASK netmask] [gateway] [METRIC metric] [IF interface]
2017-08-31 16:16:42
144527
5
转载 VS2010调试-显示堆栈窗口
以中断模式或运行模式显示“调用堆栈”窗口在“调试”菜单中选择“窗口”,然后单击“调用堆栈”。或者(ALT + 7)更改显示的可选信息右击“调用堆栈”窗口,然后设置或清除“显示 ”。在“调用堆栈”窗口中显示非用户代码帧右击“调用堆栈”窗口,然后选择“显示外部代码”。切换到另一个堆栈帧在“调
2017-08-31 14:01:03
26217
原创 linux下串口(serial)和串口驱动
PC上的串口一般是ttyS,板子上Linux的串口一般叫做ttySAC,是usb口转串口的是ttyUSB外插串口卡的话默认是dev下的ttyS* ,一般ttyS0对应com1,ttyS1对应com21. 查看串口的驱动信息 #cat /proc/tty/driver/serial2. 查看串口的波特率 # stty -a -F /dev/ttySAC
2017-08-04 17:37:21
31297
1
转载 IP数据报格式详解
IP协议提供不可靠无连接的数据报传输服务,IP层提供的服务是通过IP层对数据报的封装与拆封来实现的。IP数据报的格式分为报头区和数据区两大部分,其中报头区是为了正确传输高层数据而加的各种控制信息,数据区包括高层协议需要传输的数据。IP数据报的格式如下:注意,上图表示的数据,最高位在左边,记为0位;最低位在右边,记为31位。在网络中传输数据时,先传输0~7位,其次是8~15位,然后传输1
2017-07-05 16:22:04
97721
11
原创 C# 线程中打开新窗体
方法一:MethodInvoker MethInvk = new MethodInvoker(ShowForm5);BeginInvoke(MethInvk); private void ShowForm5(){ Form5 form5 = new Form5(); form5.Show();}这种 委托方法不能带参数方法二:带参数的委托
2017-06-29 17:53:52
7537
转载 常用OID(SNMP)
系统参数(1.3.6.1.2.1.1)OID描述备注请求方式.1.3.6.1.2.1.1.1.0获取系统基本信息SysDescGET.1.3.6.1.2.1.1.3.0监控时间sysUptime
2017-06-22 09:36:01
15892
1
转载 SNMP协议详解
简单网络管理协议(SNMP)是TCP/IP协议簇的一个应用层协议。在1988年被制定,并被Internet体系结构委员会(IAB)采纳作为一个短期的网络管理解决方案;由于SNMP的简单性,在Internet时代得到了蓬勃的发展,1992年发布了SNMPv2版本,以增强SNMPv1的安全性和功能。现在,已经有了SNMPv3版本。一套完整的SNMP系统主要包括管理信息库(MIB)、管理信息结构
2017-06-15 14:08:53
1396
转载 Linux启动过程(开机启动顺序)
启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。启动第二步--读取MBR众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Ma
2017-05-17 13:38:19
8242
转载 C#读写xml文件
XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极
2017-05-16 17:43:51
777
转载 linux网卡绑定
1、单网卡绑定多个IP有时,我们需要在一块网卡上配置多个IP,例如,在上面的例子中,我们还需要为eth0配置IP 192.168.168.2和192.168.168.3。那么需要再在/etc/sysconfig/network-scripts下新建两个配置文件:ifcfg-eth0:0内容如下:DEVICE=eth0:0BOOTPROTO=staticIPADDR=192.1
2017-04-24 10:18:50
411
转载 linux网络配置文件
linux网络相关配置文件linux系统一般来说分为两大类:1、RedHat系列:Redhat、Centos、Fedora等;2、Debian系列:Debian、Ubuntu等。linux系统中,TCP/IP网络是通过若干个文本文件来进行配置的,需要配置这些文件来联网,下面对linux两大类系统中基本的TCP/IP网络配置文件做学习总结。第一类Debian中Ubun
2017-04-24 10:13:49
1889
原创 QT下 cannot find -IGL的解决办法
QT的版本是QT5.0.0解决方法一:系统安装对应的libGL库sudo apt-get install libgl1-mesa-dev解决方法二:已安装库,但是安装的路径不对,需要做个软链接$ locate libGL/usr/lib/i386-linux-gnu/mesa/libGL.so.1/usr/lib/i386-linux-gnu/mesa/libG
2017-03-27 17:09:05
12688
原创 json解析开源代码【C++】
一:jsoncppJsonCpp 是一个 C++ 用来处理 JSON 数据的开发包https://sourceforge.net/projects/jsoncpp/二:RapidJSONRapidJSON是一个C++的JSON解析器及生成器。它的灵感来自RapidXml。RapidJSON是一个解析及生成JSON的C++库,可用于前台、后台程序,甚至是离线处理J
2017-03-23 09:40:43
1931
原创 VS2010下QT5.0的安装与配置
一:环境win7 + VS2010二:需要下载的QT5以及VS插件qt-vs-addin-1.2.4-opensource.exe qt-windows-opensource-5.0.0-msvc2010_32-x86-offline.exe下载网址见链接中内容:http://blog.youkuaiyun.com/wangzhen209/article/details/60954
2017-03-22 16:11:00
4831
转载 dirname与basename命令
一:dirname【`】,学名叫“倒引号”, 如果被“倒引号”括起来, 表示里面需要执行的是命令。比如 `dirname $0`, 就表示需要执行 dirname $0 这个命令【“”】 , 被双引号括起来的内容, 里面 出现 $ (美元号: 表示取变量名) `(倒引号: 表示执行命令) \(转义号: 表示转义), 其余的才表示字符串。【’‘】, 被
2017-03-22 15:35:51
836
原创 linux qt 打包安装程序
一、Linux下qt程序动态打包步骤: 1.从可运行程序的文件中拿出可执行文件; 2.终端下 使用ldd命令查看需要的连接库; 3.把ldd查询到的所有需要的库导出; 4.编写.sh文档,书写环境变量,或者在/etc/profile文件中书写环境变量:export $LD_LIBRARY_PATH=$LD_LIBRARY_PATH + 链接库目录,在运行so
2017-03-22 15:28:13
2346
转载 C# 窗口传递信息
方法1在Form1中通过PostMessage发送消息,在Form2通过DefWndProc截获消息来相互作用,具体参见我先前的文章《C# 收发和处理自定义的WINDOWS消息》 方法2通过第三方 公共类的公共静态成员来实现 class class1 { public static string str;//公用字符串
2017-03-21 16:39:02
1971
1
转载 Qt delete
强类型语言在创建对象时总会显式或隐式地包含对象的类型信息。也就是说,强类型语言在分配对象内存空间时,总会关联上对象的类型。相比之下,弱类型 语言则不会这样做。在分配了内存空间之后,有两种方法释放空间:手工释放,或者是使用垃圾收集器。C++ 要求开发者手工释放内存空间。这样做的好处是,开发者对内存有完全的控制能力,知道什么时候释放比较合适。Java 则使用垃圾收集器。它在后台会有一个线程根据一定的算
2017-03-17 10:40:48
615
原创 C# 获取文件名和扩展名
string fullPath = @"d:\test\default.avi";string filename = Path.GetFileName(fullPath);//返回带扩展名的文件名 "default.avi"string extension = Path.GetExtension(fullPath);//扩展名 ".aspx"string fileName
2017-03-10 10:12:42
22409
原创 RPM包下载网址
可供下载的RPM网址:http://rpm.pbone.net/http://fr.rpmfind.net/linux/rpm2html/search.php
2017-03-09 09:29:20
5060
转载 FTP文件传输协议两种模式-主动模式和被动模式
TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过ftp协议对话,并且能访问Internet, 你可以用ftp命令来传输文件。每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。
2017-02-28 14:14:03
3444
转载 史上最全设计模式导学目录(完整版)
转载地址: http://blog.youkuaiyun.com/lovelion/article/details/17517213 2012年-2013年,Sunny在优快云技术博客中陆续发表了100多篇与设计模式学习相关的文章,涵盖了七个面向对象设计原则和24个设计模式(23个GoF设计模式 + 简单工厂模式),为了方便大家学习,现将所有文章的链接进行了整理,希望能给各位带来帮助
2017-02-16 14:15:39
409
转载 C# 重构
2009年,Sean Chambers在其博客中发表了31 Days of Refactoring: Useful refactoring techniques you have to know系列文章,每天发布一篇,介绍一种重构手段,连续发文31篇,故得名“重构三十一天:你应该掌握的重构手段”。此外,Sean Chambers还将这31篇文章【即31种重构手段】整理成一本电子书, 以下是博客
2017-01-18 16:36:30
1071
转载 Eric Lippert推荐的C#书单
Eric Lippert是微软C#编译器和C#语言设计小组的重要成员,他还经常出没于Stack Overflow社区,解答开发者提出的问题。其中被问到最多的问题是:能否推荐一些学习C#的好书。最近,在接受InformIT采访时也被问到了这个问题,于是Eric列出了一份C#书单。Sams Teach Yourself Visual C# 2010 in 24 Hours by Sco
2017-01-18 16:30:55
1018
原创 C# 调试动态库(DLL)
将调用DLL文件的工程中的“引用”上右键,选择“添加引用”,在弹出的对话框中,选择“dll文件的工程生成动态库的路径”下对应的DLL文件即可。
2017-01-17 10:01:07
7566
转载 连接SQL Server 2008 R2 error 40处理方法
转载地址:http://blog.sqlauthority.com/2009/05/21/sql-server-fix-error-provider-named-pipes-provider-error-40-could-not-open-a-connection-to-sql-server-microsoft-sql-server-error/SQL SERV
2017-01-13 08:56:45
7351
转载 C# 调用 C++ 回调函数
转载地址:http://www.cnblogs.com/dipwater/archive/2012/11/07/dipwater_delegate.html同类可参考:http://www.cnblogs.com/cssmystyle/archive/2012/03/15/2397524.html1. 定义回调函数对应的委托1 [UnmanagedFunctionP
2017-01-06 14:08:01
2285
转载 C#与C++类型对应关系总结
Windows Data Type.NET Data TypeBOOL, BOOLEANBoolean or Int32BSTRStringBYTEByteCHARCharDOUBLEDoubleDWORD
2016-12-30 10:22:27
11133
转载 C# @符合的作用
一.忽略转义字符C# 中字符串常量可以以@ 开头声名,这样的优点是转义序列“不”被处理,按“原样”输出。string s_FilePath ="C:\\Program Files\\Microsoft.NET\\test.txt";相当于string s_FilePath =@"C:\Program Files\Microsoft.NET\test.txt";2.如
2016-12-30 09:52:26
681
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人