- 博客(426)
- 资源 (1)
- 收藏
- 关注
转载 浅谈多态基类析构函数声明为虚函数
为什么基类的析构函数需要声明为virtual??主要内容:1、C++类继承中的构造函数和析构函数2、C++多态性中的静态绑定和动态绑定3、C++多态性中析构函数声明为虚函数1、C++类继承中的构造函数和析构函数在C++的类继承中,建立对象时,首先调用基类的构造函数,然后在调用下一个派生类的构造函数,依次类推;析构对象时,其顺序正好与构造相反;具体参考文章:...
2019-03-31 19:29:08
589
转载 C++ 对象的内存布局(下)
重复继承下面我们再来看看,发生重复继承的情况。所谓重复继承,也就是某个基类被间接地重复继承了多次。下图是一个继承图,我们重载了父类的f()函数。其类继承的源代码如下所示。其中,每个类都有两个变量,一个是整形(4字节),一个是字符(1字节),而且还有自己的虚函数,自己overwrite父类的虚函数。如子类D中,f()覆盖了超类的函数, f1() 和f2() 覆...
2019-03-31 15:56:31
429
转载 C++ 对象的内存布局(上)
前言07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里一并对大家的留言表示感谢。这也是我为什么再写一篇续言的原因。因为,在上一篇文章中,我用了的示例都是非常简单的,主要是为了说明一些机理上的问题,也是为了图一些表达上方便和简单。不想,这篇文章成为了打开C++对象模型内存布局的一个引子,引发了...
2019-03-31 15:46:30
507
转载 [转]C++ 虚函数表解析
前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不...
2019-03-17 13:26:57
247
转载 linux free命令输出详解
解释一下Linux上free命令的输出。 下面是free的运行结果,一共有4行。为了方便说明,我加上了列号。这样可以把free的输出看成一个二维数组FO(Free Output)。例如:FO[2][1] = 24677460 FO[3][2] = 10321516 1 2 3 ...
2019-01-26 17:01:34
609
原创 TCP有效带宽
1 查看网卡信息lspci -vvv | grep -i ethcat /proc/net/devvim /etc/sysconfig/network-scripts/ifcfg-eth02 tcp有效带宽测试2.1 tcp理论上的有效带宽以千兆网为例,首先要明确千兆网的速度为1000Mbps,即每秒可传输1000M个bit,且这儿1M = 1000 K = 1000...
2019-01-26 16:01:05
1455
原创 linux 软件管理方式
linux系统中软件的安装,升级,卸载centos软件管理方式:二进制文件(注意兼容问题)源代码编译安装,软件管理器rpm软件管理器前段工具yum软件包组成:二进制文件:/bin /usr/bin...库文件:/lib /usr/lib (头文件 /usr/include)配置文件:/etc帮助文件:手册, README, INSTALL (/usr/s...
2019-01-06 14:29:12
548
2
原创 linux 信号机制
本文旨在弄懂linux中的信号工作原理1 查看所有信号kill -l 命令可以查看linux下所有信号2 信号产生2.1 用户在终端按下某些键时,终端驱动程序会发送信号给前台进程例如Ctrl-C产生SIGINT信号,Ctrl-\产生SIGQUIT信号,Ctrl-Z产生SIGTSTP信号2.2 硬件异常产生信号,这些条件由硬件检测到并通知内核,然后内核向当前进程发送适当的...
2018-12-02 15:12:11
272
原创 c++ new operator和operator new,delete operator和operator delete
1 new operator 和 operator new,delete operator 和 operator deletenew operator: c++中的关键字new,如A *a = new A;operator new:c++中的一个操作符,并且可以被重载(类似加减乘除操作符)operator new can be called explicitly as a regula...
2018-11-18 16:04:50
708
原创 linux性能监控工具汇总
1 iftop2 sar3 valgrind4 top1 显示所有cpu信息c 查看完整的命令M 按内存占用排序进程P 按cpu占用排序进程top -Hp pid 命令可以查看某个进程的所有线程ps -T -p <pid> 命令也可以列出进程号pid下面创建的所有线程5 free6 dmesg进程消失的情况下(谁杀了我的进程),可以使用d...
2018-11-11 20:07:42
472
原创 vim常见操作
vim的一些常见有用操作,记录在此,便于遗忘的时候查看,后续发现新的好用操作,也会不断补充1 替换:{作用范围}s/{目标}/{替换}/{替换标志}%s/foo/bar/g会在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g):s/foo/bar/g当前行查找foo并替换为bar:5,12s/foo/bar/g在5-12行内替换:'<,'&g...
2018-09-24 20:14:02
272
原创 显示器系列1-我常用设备的分辨率等
自己对电子设备的显示要求挺高,如果显示不清晰,不管配置多高,都无法让自己满意;下面记录下自己使用的几款电子设备的分辨率设备 屏幕大小(英寸) 分辨率 ppiiphone 6s 4.7 13...
2018-07-01 16:16:44
564
转载 linux cpu显示信息
最近某台服务机器偶尔遇到了一种告警:cpu steal 过高;咨询了sre,sre解答是宿主机上的其它虚拟机负载较高,cpu抢占厉害;正好借此机会了解下cpu的相关信息=========================================================================1 top命令输出的cpu信息使用top命令查看cpu信息时会看到这样一行:里面的各个...
2018-06-10 20:31:53
699
转载 显示器系列1--常见参数详解
最近打算入手一个显示器,所以对显示器的一些常见参数做了下调研==============================================================================屏幕尺寸,分辨率,像素,ppi今天我给大家来讲讲这几个咱们经常打交道的词到底啥意思,以及他们之间到底有什么关系。这篇文章是我花了一个下午从N多篇文章里提炼出的一个白话版,保证让你看得懂...
2018-06-10 15:31:17
2781
转载 linux 进程占用内存详解
想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过top命令查看进程占用了多少内存。这里我们可以看到VIRT、RES和SHR三个重要的指标,他们分别代表什么意思呢?这是本文需要跟大家一起探讨的问题。当然如果更加深入一点,你可能会问进程所占用的那些物理内存都用在了哪些地方?这时候top命令可能不能给到你
2018-01-21 17:39:20
2480
转载 nginx配置详解
最近写了一个接入层服务,对这个对外暴露的服务要求既支持http,又支持https,因此需要熟悉nginx配置之前觉得很难,现在沉下心来想想,其实很简单。大致的分块下,基本就分为以下几块:main(全局设置)、events(nginx工作模式)、http(http设置)、 sever(主机设置)、location(URL匹配)、upstream(负载均衡服务器设置)。main
2016-09-04 17:43:18
1769
转载 nginx最大并发连接数的思考:worker_processes、worker_connections、worker_rlimit_nofile
无论是看过的nginx有关书还是网上看到的有关nginx 配置说明的文章(http://wiki.nginx.org/EventsModule#worker_connections),无一例外,在讲到 worker_connections 和 max_clients这两个概念的关系时都一致的一笔带过,尤其是在讲到nginx作为反向代理时max_clients的计算时,都是想当然的贴出max_cli
2016-09-04 17:36:23
27778
3
原创 nginx 代理 proxy_pass /etc/hosts
在项目总遇到这样一个需求:需要将nginx作为代理使用,在nginx.conf文件中配置了proxy_pass到目标网址,如下:proxy_pass http://$host;(A配置)其中域名使用了变量,并且目标域名和ip地址的对应关系保存在本机的/etc/hosts文件中,运行时报502错误,error.log 下 显示 domainname could not be resolve
2016-08-20 23:10:36
6872
转载 php配置文件详解
[PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ; 而php.ini的设置更改可以反映出相当的变化, ; 在使用新的PHP版本前,研究一下php.ini会有好处的;;;;;;;;;;;;;;;;;;; ; 关于这个文件 ; ;;;;;;;;;;;;;;;;;;;; 这个文件控制了PHP许多方面的观点。为了让PHP读取这个文件,它必须被
2016-08-20 19:38:27
602
转载 linux /etc/resolv.conf /etc/hosts配置文件详解
/etc/resolv.conf该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件该文件是DNS域名解析的配置文件,它的格式很简单,每行以一个关键字开头,后接配置参数。resolv.conf的关键字主要有四个,分别是:nameserver #定义DNS服务器的IP地址domain #定义本地域名search
2016-08-20 17:41:33
8764
转载 php socket编程
php socket相关函数socket_accept() 接受一个Socket连接socket_bind() 把socket绑定在一个IP地址和端口上socket_clear_error() 清除socket的错误或者最后的错误代码socket_close() 关闭一个socket资源socket_connect() 开始一个socket连接socket_create_l
2016-08-08 22:33:26
422
转载 php curl详解
在介绍php的中curl之前,先看看curl的几个不同意思curl的不同含义1.curl指的是curl命令行工具,可以从命令行或者脚本或者批处理文件中运行curl。curl创建于1998年,并且提供了100多个选项去控制它。2.cURL是一个软件项目的名字。该软件项目包含了上面所说的curl和libcurl,并且都是开源的。3.CURL通常用作PHP中libcurl扩展的名字。这个
2016-08-07 20:01:34
1145
6
转载 linux curl命令详解
curl是一个利用URL语法在命令行方式下工作的文件传输工具。本文介绍了它的简单用法。它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。curl同样支持HTTPS认证,HTTP POST方法, HTTP PUT方法, FTP上传, kerberos认证, HTTP上传, 代理服务器, cookies,
2016-08-07 17:18:10
1278
转载 php中和mysql数据库相关函数
什么是API?一个应用程序接口(Application Programming Interface的缩写),定义了类,方法,函数,变量等等一切 你的应用程序中为了完成特定任务而需要调用的内容。在PHP应用程序需要和数据库进行交互的时候所需要的API 通常是通过PHP扩展暴露出来(给终端PHP程序员调用)。API可以是面向过程的,也可以是面向对象的。对于面向过程的API,我们通过调用函数来完
2016-07-31 21:03:36
511
转载 php sha1 hmac
sha1 算法安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位(20B)的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程
2016-07-30 18:04:49
678
转载 php中base64_encode base64_decode加密解密函数
base64_encode算法原理 Base64编码,是我们程序开发中经常使用到的编码方法。它是一种基于用64个可打印字符来表示二进制数据的表示方法。它通常用作存储、传输一些二进制数据编码方法!也是MIME(多用途互联网邮件扩展,主要用作电子邮件标准)中一种可打印字符表示二进制数据的常见编码方法!它其实只是定义用可打印字符传输内容一种方法,并不会产生新的字符集!Base64实现转换原理
2016-07-30 10:57:27
3593
转载 linux 查看CPU个数
首先弄明白几个概念物理CPU实际Server中插槽上的CPU个数物理cpu数量,可以数不重复的 physical id 有几个逻辑CPU /proc/cpuinfo 用来存储cpu硬件信息信息内容分别列出了processor 0 –processor n 的规格。这里需要注意,n是逻辑cpu数一般情况,我们认为一颗cpu可以有多核,加上intel的超线程技术(
2016-07-30 09:56:39
544
转载 php主机字节序和网络字节序
使用php编写socket程序时,也需要注意主机字节序和网络字节序的转换主机字节序就是我们平常说的大端和小端模式:不同的 CPU 有不同的字节序类型,这些字节序是指整数在内存中保存的顺序 这个叫做主机序。Big-Endian和Little-Endian。引用标准的Big-Endian和Little-Endian的定义如下: a) Little-Endian就是低位字节排放在内存的低地址端
2016-07-24 22:01:51
3391
转载 http协议中的头部字段:Transfer-Encoding
最近项目用到了nginx和php-fpm,所以自己写了个http客户端,发现每次使用客户端发送请求后,服务器返回的数据前面都多了一个莫名其妙的16进制字符串,并且头部信息中包含Transfer-Encoding:chunked,怀疑和此字段有关,所以网上google整理了此篇文章。http是基于tcp的无消息边界保护的协议,所以接受时必须要确定接受数据的数量才能完整接收数据。传统的方式,只要先
2016-07-24 11:23:26
5558
转载 php中的$_REQUEST、$_GET、$_POST
php中的$_REQUEST、$_GET、$_POST的联系和区别1. $_REQUEST php中$_REQUEST可以获取以POST方法和GET方法提交的数据,但是速度比较慢 2. $_GET 用来获取由浏览器通过GET方法提交的数据。GET方法是通过把参数数据加在提交表单的action属性所指的URL中,值和表单内每个字段一一对应,然后在URL中可以看到,但是有如下缺
2016-07-24 10:35:32
1705
转载 linux shell 编程(四)
linux shell 编程for选好讲解for循环对一个变量的可能的值都执行一个命令序列。赋给变量的几个数值既可以在程序内以数值列表的形式提供,也可以在程序以外以位置参数的形式提供。for循环的一般格式为: for 变量名 [in 数值列表] do 若干个命令行 done变量名可以是用户选择的任何字符串,如果变量名是var,则在in之后给出的数值将顺序替换
2016-07-17 11:28:28
363
转载 linux shell 编程(三)
linux shell 编程流程控制:if elseshell程序中的条件分支是通过if条件语句来实现的,其一般格式为: if 条件命令串 then 条件为真时的命令串 else 条件为假时的命令串 fi大多数情况下,可以使用测试命令来对条件进行测试,比如可以比较字符串、判断文件是否存在及是否可读等等……通常用" [ ] "来表示条件测试,注意这里的空格很
2016-07-17 10:35:56
350
转载 linux shell 编程(二)
linux shell编程test语法的使用test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试,其测试符和相应的功能分别如下:一、数值测试:-eq:等于则为真-ne:不等于则为真-gt:大于则为真-ge:大于等于则为真-lt:小于则为真-le:小于等于则为真二、字符串测试:=:等于则为真!=:不相等则为真-z字符串
2016-07-17 10:33:56
389
转载 linux shell 编程(一)
工作中经常发现需要使用shell脚本的时候不知道怎么下手,看来有必要总结下shell脚本相关知识一、Shell定义变量需要遵循的规则Shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则:首个字符必须为字母(a-z,A-Z)中间不能有空格,可以使用下划线(_)不能使用标点符号不能使用bash里的关键字(可用help命令查看保留关键字)二、shell变
2016-07-16 19:16:19
411
原创 ffmpeg常用命令记录
ffmpeg工具集功能强大,现在记录其常见操作转码ffmpeg -i test.mp3 -ab 16k -ac 1 -ar 8000 -f wav test.wav -ab:码率-ac:通道数-ar:采样率-f:转码格式获取流信息ffprobe -v quiet -print_format json -show_streams -select_str
2016-07-16 17:28:29
923
转载 SecureCRT 自定义标签
在公司中,使用SecureCRT登录服务器时经常遇到一个问题,就是在服务器上cd进入不同目录后,SecureCRT的标签名称也会随着改变,标签有时会被撑的很长,一个标签占据了太宽的空间,解决办法如下:方法一、在securecrt软件中设置的方法选择options--->global options--->general---->default session---->edit
2016-07-16 17:07:43
5854
1
转载 nginx 内置预定义变量
在配置nginx的时候,难免会使用到变量。本编文章主要总结了nginx内置的预定义变量,并讲解如何自定义变量。nginx内置变量内置变量存放在 ngx_http_core_module 模块中,变量的命名方式和apache 服务器变量是一致的。总而言之,这些变量代表着客户端请求头的内容,例如$http_user_agent, $http_cookie, 等等。下面是nginx支持的所有内
2016-07-06 23:09:38
1697
转载 linux 查找大目录和大文件
今天,在机器上执行命令的时候,发现tab键无法补全了,原因竟然是磁盘空间满了,使用df命令看了一下,确实如此,每个分区的使用率都得到100%了,因此想找到系统中的大目录和大文件,删除一部分。主要涉及到两个命令 du和finddu命令(查找系统中的大目录):-h已易读的格式显示指定目录或文件的大小-s选项指定对于目录不详细显示每个子目录或文件的大小-m或–megabytes 以1
2016-07-05 22:33:17
2185
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人