自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 收藏
  • 关注

原创 你真的了解switch吗?

switch分支作用域问题我们做条件选择时,经常会用到switch语句,相信大家对于它的使用也都是得心应手。前几天有人问我switch分支中为什么使用临时变量会报错,借此就写了个简单的Demo演示了一把,有疑问的小伙伴可以参照Demo亲自测试一下,实践才是检验真理的唯一标准。以下是错误程序,小伙伴们不妨瞜一眼先,看自己平时是不是也是这样编写的,而只是碰巧平时没有在case分支中使用临时变量罢了...

2020-02-08 11:15:14 548

原创 Linux系统性能分析——iostat

I/O子系统的监视器——iostat一、iostat是什么?iostat是I/O statistics(输入/输出统计)的缩写,用来动态监视系统的磁盘操作活动。二、iostat能做什么?通过iostat方便查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况, 负载信息。三、iostat怎么使用?用法: iostat [ 选项 ] [ <时间间隔> ...

2020-02-03 16:13:45 235

原创 Linux系统实用工具——ldd

看你缺点啥——ldd一、ldd是什么?ldd(list dynamic dependencies),列出动态库依赖关系。 ldd不是个可执行程式,而只是个shell脚本。 ldd显示可执行模块的dependency的工作原理,其实质是通过ld-linux.so(elf动态库的装载器)来实现的。ld-linux.so模块会先于executable模块程式工作,并获得控制权,因此当上述的那些环境...

2020-02-01 11:55:59 1981

原创 free引发的cache、buffer、swap讨论

free引发的cache、buffer、swap讨论$ free total used free shared buffers cachedMem: 8062624 7910056 152568 0 5232 964468-/+ buffers/cache:...

2020-01-19 16:34:30 366

原创 Linux系统实用工具——lsof

眼里只有文件——lsof一、lsof是什么?lsof(list opened files),列举系统中已经被打开的文件。在 linux 系统中,一切皆文件。通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以 lsof 命令不仅可以查看进程打开的文件、目录,还可以查看进程监听的端口等 socket 相关的信息。二、lsof能做什么?查看指定端口或端口范围被哪些进程占用,查看...

2020-01-17 21:47:23 375

原创 Linux系统性能分析——sar

寻找系统瓶颈的利器——sar一、sar是什么?sar是System Activity Reporter(系统活动情况报告)的缩写。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据;取样数据和分析的结果都可以存入文件,所需的负载很小。sar是目前Linux上最为全面的系统性能分析工具之一,可以从14个大方面对...

2020-01-16 17:07:51 358

原创 I/O多路复用机制(三)

在实际的开发中,我们经常会遇到这样的场景,我们需要接受多个端口的数据、多个终端的数据抑或是多个文件描述符对应的数据。那么,遇到这样的问题,你在程序中该怎么做呢?通常的做法,在程序中对数据交互的描述符进行轮询。那么问题来了,轮询的时间设置为多少呢?设置的太短,可以保证处理性能和速度,但是CPU的使用率太高,一旦处理的描述符数量多了起来,CPU可能就扛不住了。设置的时间太长,描述符处理的时间片太短,处

2017-04-27 10:33:14 404

原创 I/O多路复用机制(二)

在实际的开发中,我们经常会遇到这样的场景,我们需要接受多个端口的数据、多个终端的数据抑或是多个文件描述符对应的数据。那么,遇到这样的问题,你在程序中该怎么做呢?通常的做法,在程序中对数据交互的描述符进行轮询。那么问题来了,轮询的时间设置为多少呢?设置的太短,可以保证处理性能和速度,但是CPU的使用率太高,一旦处理的描述符数量多了起来,CPU可能就扛不住了。设置的时间太长,描述符处理的时间片太短,处

2017-04-27 10:23:48 575

原创 I/O多路复用机制(一)

在实际的开发中,我们经常会遇到这样的场景,我们需要接受多个端口的数据、多个终端的数据抑或是多个文件描述符对应的数据。那么,遇到这样的问题,你在程序中该怎么做呢?通常的做法,在程序中对数据交互的描述符进行轮询。那么问题来了,轮询的时间设置为多少呢?设置的太短,可以保证处理性能和速度,但是CPU的使用率太高,一旦处理的描述符数量多了起来,CPU可能就扛不住了。设置的时间太长,描述符处理的时间片太短,处

2017-04-26 17:45:21 1409

原创 线程间同步机制(一)

我们在开发的过程中,经常遇到多个线程访问同一资源的情况,也就是所谓的临界资源。同一个资源对多个线程同时可见,如果均只是读访问,那没毛病,关键是实际生产中读写是一起的。那么问题来了,一个线程在写数据,另外一个线程在读数据,那么读线程读取的很可能是乱码,即使运气好不是乱码,也不是想要的数据,读取的都是脏数据(这里盗用一下数据库术语)。更糟糕的是,多个线程同时在写数据,你想象一下,那将是多么混乱,数据将

2017-04-21 20:22:41 514

原创 动态链接库编程笔记

我们平时所做的大部分开发都是二次开发,会使用卖方提供的SDK,SDK中只有接口,没有具体业务逻辑实现的代码,我们在SDK接口的基础上做开发,进而实现我们想要的功能。       首先我们来说说静态链接库和动态链接库,静态链接库往往以lib后缀结尾,动态链接库往往以dll后缀结束,但是我们不能仅仅以后缀名作为它们二者的区别。比如动态链接库也存在lib后缀的文件,但是此时的lib文件只是保存一些函

2017-04-19 16:07:46 509

原创 进程间通信方式总结——消息队列

Linux/Unix系统IPC是各种进程间通信方式的统称,但是其中极少能在所有Linux/Unix系统实现中进行移植。随着POSIX和Open Group(X/Open)标准化的推进呵护影响的扩大,情况虽已得到改善,但差别仍然存在。一般来说,Linux/Unix常见的进程间通信方式有:管道、消息队列、信号、信号量、共享内存、套接字等。博主将在《进程间通信方式总结》系列博文中和大家一起探讨学习进

2017-04-16 11:52:25 6279

原创 进程间通信方式总结——共享内存

Linux/Unix系统IPC是各种进程间通信方式的统称,但是其中极少能在所有Linux/Unix系统实现中进行移植。随着POSIX和Open Group(X/Open)标准化的推进呵护影响的扩大,情况虽已得到改善,但差别仍然存在。一般来说,Linux/Unix常见的进程间通信方式有:管道、消息队列、信号、信号量、共享内存、套接字等。博主将在《进程间通信方式总结》系列博文中和大家一起探讨学习进

2017-04-16 11:36:59 1760

原创 进程间通信方式总结——信号量

Linux/Unix系统IPC是各种进程间通信方式的统称,但是其中极少能在所有Linux/Unix系统实现中进行移植。随着POSIX和Open Group(X/Open)标准化的推进呵护影响的扩大,情况虽已得到改善,但差别仍然存在。一般来说,Linux/Unix常见的进程间通信方式有:管道、消息队列、信号、信号量、共享内存、套接字等。博主将在《进程间通信方式总结》系列博文中和大家一起探讨学习进

2017-04-14 17:35:50 2469

原创 进程间通信方式总结——管道(二)

Linux/Unix系统IPC是各种进程间通信方式的统称,但是其中极少能在所有Linux/Unix系统实现中进行移植。随着POSIX和Open Group(X/Open)标准化的推进呵护影响的扩大,情况虽已得到改善,但差别仍然存在。一般来说,Linux/Unix常见的进程间通信方式有:管道、消息队列、信号、信号量、共享内存、套接字等。博主将在《进程间通信方式总结》系列博文中和大家一起探讨学习进

2017-04-13 16:38:57 677

原创 进程间通信方式总结——管道(一)

Linux/Unix系统IPC是各种进程间通信方式的统称,但是其中极少能在所有Linux/Unix系统实现中进行移植。随着POSIX和Open Group(X/Open)标准化的推进呵护影响的扩大,情况虽已得到改善,但差别仍然存在。一般来说,Linux/Unix常见的进程间通信方式有:管道、消息队列、信号、信号量、共享内存、套接字等。博主将在《进程间通信方式总结》系列博文中和大家一起探讨学习进

2017-04-13 16:28:47 3100

原创 Linux系统启动流程

了解Linux系统的启动流程,能够让我们更加深入的去理解操作系统。今天博主就关于Linux系统启动流程做一个简单的总结,希望对小伙伴们有一点启发。其实,前面的几步对于其他操作系统也是通用的,只是不同系统之间在这几步上稍微有那么一点点区别罢了。第一步--加载BIOS       当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是

2017-03-10 16:51:20 352

原创 diff和patch使用总结

diff是Linux系统的一个很重要的工具程序,我们通常用diff对同一软件(或程序)的不同版本的文件进行对比查看。不过,你不要用diff去比较两个完全不相干的文件,因为那样是比不出结果来的。最后提醒一下,diff是以“行”为单位比较的哦。diff和patch是一对工具,在数学上来说,diff是对两个集合的差运算,patch是对两个集合的和运算。diff比较两个文件或文件集合的差异,并记录下来,生

2017-03-07 18:29:33 4227

原创 Vim使用总结

vim是高级版的vi,vim不但可以用不同的颜色显示文字内容,还能够进行诸如shell脚本,C等程序编辑功能,你可以将vim视为一种程序编辑器。在vi里面,【tab】和【space】所得到的结果是不一样的。移动光标h或向左箭头键光标向左移动一个字符j或向下箭头键光标向下移动一行k或向上箭头键

2017-03-05 15:20:19 344

原创 解决win10升级后无法打开VC问题

最近有不少小伙伴问到:“为什么win10自动升级后,我之前安装的VC怎么打不开了,一直报‘应用程序无法正常启动(0xc0000142)之类的错误’”。有的小伙伴把之前安装过的VC卸载后重装,然而重装后并没有解决问题,VC仍然打不开,还是报上面的错误。博主亲自尝试的一翻,并将报错的截图献给大家(有图有真相),对于有过经历的小伙伴一定很熟悉吧。       好了,咱们就直接进入主题

2017-03-03 14:52:59 3779 2

原创 Delphi7安装及补丁安装详解

在学习Delphi之前,我们要先安装开发环境,博主这里以Delphi7镜像作为安装实例,希望在Delphi学习之路上能给予大家一点帮助。接下来就让我们一起来走一遍这个安装过程。⑴双击Delphi7镜像文件,镜像文件会在DVD驱动器中打开⑵ 双击Install文件夹下setup.exe可执行文件双击之后显示以下界面,单击“Next”按钮

2016-12-25 23:21:20 23850 13

原创 C++运算符重载(五)

C++允许在自己的类中,或是在全局作用域中重定义运算符的含义。由于很多面向对象的语言没有提供这种能力,因此你可能会低估这种特性在C++中的作用。C++中运算符的概念十分广泛,甚至包含[](数组索引)、()(函数调用)、类型转换以及内存分配和释放例程。可以通过运算符重载来改变语言运算符对自定义类的行为。能让自己的类具有内建类型的类似行为,甚至可以编写看上去类似于数组、函数或指针的类。在博主的《C++

2016-12-12 12:12:21 498

原创 C++运算符重载(四)

C++允许在自己的类中,或是在全局作用域中重定义运算符的含义。由于很多面向对象的语言没有提供这种能力,因此你可能会低估这种特性在C++中的作用。C++中运算符的概念十分广泛,甚至包含[](数组索引)、()(函数调用)、类型转换以及内存分配和释放例程。可以通过运算符重载来改变语言运算符对自定义类的行为。能让自己的类具有内建类型的类似行为,甚至可以编写看上去类似于数组、函数或指针的类。在博主的《C++

2016-12-12 12:03:08 398

原创 C++运算符重载(三)

C++允许在自己的类中,或是在全局作用域中重定义运算符的含义。由于很多面向对象的语言没有提供这种能力,因此你可能会低估这种特性在C++中的作用。C++中运算符的概念十分广泛,甚至包含[](数组索引)、()(函数调用)、类型转换以及内存分配和释放例程。可以通过运算符重载来改变语言运算符对自定义类的行为。能让自己的类具有内建类型的类似行为,甚至可以编写看上去类似于数组、函数或指针的类。在博主的《C++

2016-12-10 20:49:54 320

原创 C++运算符重载(二)

C++允许在自己的类中,或是在全局作用域中重定义运算符的含义。由于很多面向对象的语言没有提供这种能力,因此你可能会低估这种特性在C++中的作用。C++中运算符的概念十分广泛,甚至包含[](数组索引)、()(函数调用)、类型转换以及内存分配和释放例程。可以通过运算符重载来改变语言运算符对自定义类的行为。能让自己的类具有内建类型的类似行为,甚至可以编写看上去类似于数组、函数或指针的类。在博主的《C++

2016-12-10 19:29:06 461

原创 C++运算符重载(一)

C++允许在自己的类中,或是在全局作用域中重定义运算符的含义。由于很多面向对象的语言没有提供这种能力,因此你可能会低估这种特性在C++中的作用。C++中运算符的概念十分广泛,甚至包含[](数组索引)、()(函数调用)、类型转换以及内存分配和释放例程。可以通过运算符重载来改变语言运算符对自定义类的行为。能让自己的类具有内建类型的类似行为,甚至可以编写看上去类似于数组、函数或指针的类。在博主的《C++

2016-12-10 17:24:08 483

原创 灵活而奇特的C++语言特性——作用域解析(二)

学习了博主的《漫谈继承技术》系列博文之后,相信大家都有所收获吧!这次博主将和大家一起探讨 《灵活而奇特的C++语言特性》 ,主要包括引用、常量(const)、常量表达式(constexpr)、静态(static)、外部(expert)、类型定义(typedef)、类型别名(aliases)、类型转换、作用域解析、统一初始化、显示转换运算符、特性(attribute)、用户自定义文本、头文件、可变长

2016-12-03 12:40:21 417

原创 灵活而奇特的C++语言特性——作用域解析(一)

学习了博主的《漫谈继承技术》系列博文之后,相信大家都有所收获吧!这次博主将和大家一起探讨 《灵活而奇特的C++语言特性》 ,主要包括引用、常量(const)、常量表达式(constexpr)、静态(static)、外部(expert)、类型定义(typedef)、类型别名(aliases)、类型转换、作用域解析、统一初始化、显示转换运算符、特性(attribute)、用户自定义文本、头文件、可变长

2016-12-03 12:32:40 605

原创 灵活而奇特的C++语言特性——typedef & aliases

学习了博主的《漫谈继承技术》系列博文之后,相信大家都有所收获吧!这次博主将和大家一起探讨 《灵活而奇特的C++语言特性》 ,主要包括引用、常量(const)、常量表达式(constexpr)、静态(static)、外部(expert)、类型定义(typedef)、类型别名(aliases)、类型转换、作用域解析、统一初始化、显示转换运算符、特性(attribute)、用户自定义文本、头文件、可变长

2016-12-03 12:12:10 452

原创 灵活而奇特的C++语言特性——统一初始化

学习了博主的《漫谈继承技术》系列博文之后,相信大家都有所收获吧!这次博主将和大家一起探讨 《灵活而奇特的C++语言特性》 ,主要包括引用、常量(const)、常量表达式(constexpr)、静态(static)、外部(expert)、类型定义(typedef)、类型别名(aliases)、类型转换、作用域解析、统一初始化、显示转换运算符、特性(attribute)、用户自定义文本、头文件、可变长

2016-12-03 12:03:38 461

原创 灵活而奇特的C++语言特性——const(三)

学习了博主的《漫谈继承技术》系列博文之后,相信大家都有所收获吧!这次博主将和大家一起探讨 《灵活而奇特的C++语言特性》 ,主要包括引用、常量(const)、常量表达式(constexpr)、静态(static)、外部(expert)、类型定义(typedef)、类型别名(aliases)、类型转换、作用域解析、统一初始化、显示转换运算符、特性(attribute)、用户自定义文本、头文件、可变长

2016-11-30 23:04:08 444

原创 灵活而奇特的C++语言特性——const(二)

学习了博主的《漫谈继承技术》系列博文之后,相信大家都有所收获吧!这次博主将和大家一起探讨 《灵活而奇特的C++语言特性》 ,主要包括引用、常量(const)、常量表达式(constexpr)、静态(static)、外部(expert)、类型定义(typedef)、类型别名(aliases)、类型转换、作用域解析、统一初始化、显示转换运算符、特性(attribute)、用户自定义文本、头文件、可变长

2016-11-30 22:56:02 434

原创 灵活而奇特的C++语言特性——const(一)

学习了博主的《漫谈继承技术》系列博文之后,相信大家都有所收获吧!这次博主将和大家一起探讨 《灵活而奇特的C++语言特性》 ,主要包括引用、常量(const)、常量表达式(constexpr)、静态(static)、外部(expert)、类型定义(typedef)、类型别名(aliases)、类型转换、作用域解析、统一初始化、显示转换运算符、特性(attribute)、用户自定义文本、头文件、可变长

2016-11-30 22:44:03 730

原创 灵活而奇特的C++语言特性——引用(下)

学习了博主的《漫谈继承技术》系列博文之后,相信大家都有所收获吧!这次博主将和大家一起探讨 《灵活而奇特的C++语言特性》 ,主要包括引用、常量(const)、常量表达式(constexpr)、静态(static)、外部(expert)、类型定义(typedef)、类型别名(aliases)、类型转换、作用域解析、统一初始化、显示转换运算符、特性(attribute)、用户自定义文本、头文件、可变长

2016-11-30 15:56:47 482

原创 灵活而奇特的C++语言特性——引用(上)

学习了博主的《漫谈继承技术》系列博文之后,相信大家都有所收获吧!这次博主将和大家一起探讨《灵活而奇特的C++语言特性》,主要包括引用、常量(const)、常量表达式(constexpr)、静态(static)、外部(expert)、类型定义(typedef)、类型别名(aliases)、类型转换、作用域解析、统一初始化、显示转换运算符、特性(attribute)、用户自定义文本、头文件、可变长度参

2016-11-30 15:37:47 464

原创 漫谈继承技术(八)

如果没有继承,类只是具有一些相关行为的数据结构,这只是对过程语言的一大改进,而继承则开辟了完全不同的新天地。通过继承,可以在已有类的基础上创建新类。这样,类就成为可重用和可扩展的组件。博主的《漫谈继承技术》系列博文将讲述各种利用继承功能的方法。学习继承的语法,和利用继承的一些复制技术。本篇博文先给大家介绍一下virtual在继承中的使用,希望对大家加深对继承技术的理解有一定的帮助。virt

2016-11-27 20:26:09 405

原创 漫谈继承技术(七)

如果没有继承,类只是具有一些相关行为的数据结构,这只是对过程语言的一大改进,而继承则开辟了完全不同的新天地。通过继承,可以在已有类的基础上创建新类。这样,类就成为可重用和可扩展的组件。博主的《漫谈继承技术》系列博文将讲述各种利用继承功能的方法。学习继承的语法,和利用继承的一些复制技术。本篇博文先给大家介绍一下重写方法时的一些特殊情况,希望对大家加深对继承技术的理解有一定的帮助。重写方法时的

2016-11-27 20:20:00 346

原创 漫谈继承技术(六)

如果没有继承,类只是具有一些相关行为的数据结构,这只是对过程语言的一大改进,而继承则开辟了完全不同的新天地。通过继承,可以在已有类的基础上创建新类。这样,类就成为可重用和可扩展的组件。博主的《漫谈继承技术》系列博文将讲述各种利用继承功能的方法。学习继承的语法,和利用继承的一些复制技术。本篇博文先给大家介绍一下using在继承中的使用,希望对大家加深对继承技术的理解有一定的帮助。using

2016-11-27 20:11:20 502

原创 漫谈继承技术(五)

如果没有继承,类只是具有一些相关行为的数据结构,这只是对过程语言的一大改进,而继承则开辟了完全不同的新天地。通过继承,可以在已有类的基础上创建新类。这样,类就成为可重用和可扩展的组件。博主的《漫谈继承技术》系列博文将讲述各种利用继承功能的方法。学习继承的语法,和利用继承的一些复制技术。本篇博文先给大家介绍一下dynamic_cast在继承中的使用,希望对大家加深对继承技术的理解有一定的帮助。

2016-11-27 20:06:54 449

原创 漫谈继承技术(四)

如果没有继承,类只是具有一些相关行为的数据结构,这只是对过程语言的一大改进,而继承则开辟了完全不同的新天地。通过继承,可以在已有类的基础上创建新类。这样,类就成为可重用和可扩展的组件。博主的《漫谈继承技术》系列博文将讲述各种利用继承功能的方法。学习继承的语法,和利用继承的一些复制技术。本篇博文先给大家介绍一下typeid在继承中的使用,希望对大家加深对继承技术的理解有一定的帮助。typei

2016-11-27 19:59:27 394

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除