- 博客(80)
- 收藏
- 关注
原创 你真的了解switch吗?
switch分支作用域问题我们做条件选择时,经常会用到switch语句,相信大家对于它的使用也都是得心应手。前几天有人问我switch分支中为什么使用临时变量会报错,借此就写了个简单的Demo演示了一把,有疑问的小伙伴可以参照Demo亲自测试一下,实践才是检验真理的唯一标准。以下是错误程序,小伙伴们不妨瞜一眼先,看自己平时是不是也是这样编写的,而只是碰巧平时没有在case分支中使用临时变量罢了...
2020-02-08 11:15:14
610
原创 Linux系统性能分析——iostat
I/O子系统的监视器——iostat一、iostat是什么?iostat是I/O statistics(输入/输出统计)的缩写,用来动态监视系统的磁盘操作活动。二、iostat能做什么?通过iostat方便查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况, 负载信息。三、iostat怎么使用?用法: iostat [ 选项 ] [ <时间间隔> ...
2020-02-03 16:13:45
291
原创 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
2686
原创 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
447
原创 Linux系统实用工具——lsof
眼里只有文件——lsof一、lsof是什么?lsof(list opened files),列举系统中已经被打开的文件。在 linux 系统中,一切皆文件。通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以 lsof 命令不仅可以查看进程打开的文件、目录,还可以查看进程监听的端口等 socket 相关的信息。二、lsof能做什么?查看指定端口或端口范围被哪些进程占用,查看...
2020-01-17 21:47:23
514
原创 Linux系统性能分析——sar
寻找系统瓶颈的利器——sar一、sar是什么?sar是System Activity Reporter(系统活动情况报告)的缩写。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据;取样数据和分析的结果都可以存入文件,所需的负载很小。sar是目前Linux上最为全面的系统性能分析工具之一,可以从14个大方面对...
2020-01-16 17:07:51
1617
原创 I/O多路复用机制(三)
在实际的开发中,我们经常会遇到这样的场景,我们需要接受多个端口的数据、多个终端的数据抑或是多个文件描述符对应的数据。那么,遇到这样的问题,你在程序中该怎么做呢?通常的做法,在程序中对数据交互的描述符进行轮询。那么问题来了,轮询的时间设置为多少呢?设置的太短,可以保证处理性能和速度,但是CPU的使用率太高,一旦处理的描述符数量多了起来,CPU可能就扛不住了。设置的时间太长,描述符处理的时间片太短,处
2017-04-27 10:33:14
471
原创 I/O多路复用机制(二)
在实际的开发中,我们经常会遇到这样的场景,我们需要接受多个端口的数据、多个终端的数据抑或是多个文件描述符对应的数据。那么,遇到这样的问题,你在程序中该怎么做呢?通常的做法,在程序中对数据交互的描述符进行轮询。那么问题来了,轮询的时间设置为多少呢?设置的太短,可以保证处理性能和速度,但是CPU的使用率太高,一旦处理的描述符数量多了起来,CPU可能就扛不住了。设置的时间太长,描述符处理的时间片太短,处
2017-04-27 10:23:48
648
原创 I/O多路复用机制(一)
在实际的开发中,我们经常会遇到这样的场景,我们需要接受多个端口的数据、多个终端的数据抑或是多个文件描述符对应的数据。那么,遇到这样的问题,你在程序中该怎么做呢?通常的做法,在程序中对数据交互的描述符进行轮询。那么问题来了,轮询的时间设置为多少呢?设置的太短,可以保证处理性能和速度,但是CPU的使用率太高,一旦处理的描述符数量多了起来,CPU可能就扛不住了。设置的时间太长,描述符处理的时间片太短,处
2017-04-26 17:45:21
1457
原创 线程间同步机制(一)
我们在开发的过程中,经常遇到多个线程访问同一资源的情况,也就是所谓的临界资源。同一个资源对多个线程同时可见,如果均只是读访问,那没毛病,关键是实际生产中读写是一起的。那么问题来了,一个线程在写数据,另外一个线程在读数据,那么读线程读取的很可能是乱码,即使运气好不是乱码,也不是想要的数据,读取的都是脏数据(这里盗用一下数据库术语)。更糟糕的是,多个线程同时在写数据,你想象一下,那将是多么混乱,数据将
2017-04-21 20:22:41
548
原创 动态链接库编程笔记
我们平时所做的大部分开发都是二次开发,会使用卖方提供的SDK,SDK中只有接口,没有具体业务逻辑实现的代码,我们在SDK接口的基础上做开发,进而实现我们想要的功能。 首先我们来说说静态链接库和动态链接库,静态链接库往往以lib后缀结尾,动态链接库往往以dll后缀结束,但是我们不能仅仅以后缀名作为它们二者的区别。比如动态链接库也存在lib后缀的文件,但是此时的lib文件只是保存一些函
2017-04-19 16:07:46
564
原创 进程间通信方式总结——消息队列
Linux/Unix系统IPC是各种进程间通信方式的统称,但是其中极少能在所有Linux/Unix系统实现中进行移植。随着POSIX和Open Group(X/Open)标准化的推进呵护影响的扩大,情况虽已得到改善,但差别仍然存在。一般来说,Linux/Unix常见的进程间通信方式有:管道、消息队列、信号、信号量、共享内存、套接字等。博主将在《进程间通信方式总结》系列博文中和大家一起探讨学习进
2017-04-16 11:52:25
6428
原创 进程间通信方式总结——共享内存
Linux/Unix系统IPC是各种进程间通信方式的统称,但是其中极少能在所有Linux/Unix系统实现中进行移植。随着POSIX和Open Group(X/Open)标准化的推进呵护影响的扩大,情况虽已得到改善,但差别仍然存在。一般来说,Linux/Unix常见的进程间通信方式有:管道、消息队列、信号、信号量、共享内存、套接字等。博主将在《进程间通信方式总结》系列博文中和大家一起探讨学习进
2017-04-16 11:36:59
1849
原创 进程间通信方式总结——信号量
Linux/Unix系统IPC是各种进程间通信方式的统称,但是其中极少能在所有Linux/Unix系统实现中进行移植。随着POSIX和Open Group(X/Open)标准化的推进呵护影响的扩大,情况虽已得到改善,但差别仍然存在。一般来说,Linux/Unix常见的进程间通信方式有:管道、消息队列、信号、信号量、共享内存、套接字等。博主将在《进程间通信方式总结》系列博文中和大家一起探讨学习进
2017-04-14 17:35:50
2593
原创 进程间通信方式总结——管道(二)
Linux/Unix系统IPC是各种进程间通信方式的统称,但是其中极少能在所有Linux/Unix系统实现中进行移植。随着POSIX和Open Group(X/Open)标准化的推进呵护影响的扩大,情况虽已得到改善,但差别仍然存在。一般来说,Linux/Unix常见的进程间通信方式有:管道、消息队列、信号、信号量、共享内存、套接字等。博主将在《进程间通信方式总结》系列博文中和大家一起探讨学习进
2017-04-13 16:38:57
731
原创 进程间通信方式总结——管道(一)
Linux/Unix系统IPC是各种进程间通信方式的统称,但是其中极少能在所有Linux/Unix系统实现中进行移植。随着POSIX和Open Group(X/Open)标准化的推进呵护影响的扩大,情况虽已得到改善,但差别仍然存在。一般来说,Linux/Unix常见的进程间通信方式有:管道、消息队列、信号、信号量、共享内存、套接字等。博主将在《进程间通信方式总结》系列博文中和大家一起探讨学习进
2017-04-13 16:28:47
3209
原创 Linux系统启动流程
了解Linux系统的启动流程,能够让我们更加深入的去理解操作系统。今天博主就关于Linux系统启动流程做一个简单的总结,希望对小伙伴们有一点启发。其实,前面的几步对于其他操作系统也是通用的,只是不同系统之间在这几步上稍微有那么一点点区别罢了。第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是
2017-03-10 16:51:20
424
原创 diff和patch使用总结
diff是Linux系统的一个很重要的工具程序,我们通常用diff对同一软件(或程序)的不同版本的文件进行对比查看。不过,你不要用diff去比较两个完全不相干的文件,因为那样是比不出结果来的。最后提醒一下,diff是以“行”为单位比较的哦。diff和patch是一对工具,在数学上来说,diff是对两个集合的差运算,patch是对两个集合的和运算。diff比较两个文件或文件集合的差异,并记录下来,生
2017-03-07 18:29:33
4373
原创 Vim使用总结
vim是高级版的vi,vim不但可以用不同的颜色显示文字内容,还能够进行诸如shell脚本,C等程序编辑功能,你可以将vim视为一种程序编辑器。在vi里面,【tab】和【space】所得到的结果是不一样的。移动光标h或向左箭头键光标向左移动一个字符j或向下箭头键光标向下移动一行k或向上箭头键
2017-03-05 15:20:19
381
原创 解决win10升级后无法打开VC问题
最近有不少小伙伴问到:“为什么win10自动升级后,我之前安装的VC怎么打不开了,一直报‘应用程序无法正常启动(0xc0000142)之类的错误’”。有的小伙伴把之前安装过的VC卸载后重装,然而重装后并没有解决问题,VC仍然打不开,还是报上面的错误。博主亲自尝试的一翻,并将报错的截图献给大家(有图有真相),对于有过经历的小伙伴一定很熟悉吧。 好了,咱们就直接进入主题
2017-03-03 14:52:59
3932
2
原创 Delphi7安装及补丁安装详解
在学习Delphi之前,我们要先安装开发环境,博主这里以Delphi7镜像作为安装实例,希望在Delphi学习之路上能给予大家一点帮助。接下来就让我们一起来走一遍这个安装过程。⑴双击Delphi7镜像文件,镜像文件会在DVD驱动器中打开⑵ 双击Install文件夹下setup.exe可执行文件双击之后显示以下界面,单击“Next”按钮
2016-12-25 23:21:20
25981
15
原创 C++运算符重载(五)
C++允许在自己的类中,或是在全局作用域中重定义运算符的含义。由于很多面向对象的语言没有提供这种能力,因此你可能会低估这种特性在C++中的作用。C++中运算符的概念十分广泛,甚至包含[](数组索引)、()(函数调用)、类型转换以及内存分配和释放例程。可以通过运算符重载来改变语言运算符对自定义类的行为。能让自己的类具有内建类型的类似行为,甚至可以编写看上去类似于数组、函数或指针的类。在博主的《C++
2016-12-12 12:12:21
543
原创 C++运算符重载(四)
C++允许在自己的类中,或是在全局作用域中重定义运算符的含义。由于很多面向对象的语言没有提供这种能力,因此你可能会低估这种特性在C++中的作用。C++中运算符的概念十分广泛,甚至包含[](数组索引)、()(函数调用)、类型转换以及内存分配和释放例程。可以通过运算符重载来改变语言运算符对自定义类的行为。能让自己的类具有内建类型的类似行为,甚至可以编写看上去类似于数组、函数或指针的类。在博主的《C++
2016-12-12 12:03:08
458
原创 C++运算符重载(三)
C++允许在自己的类中,或是在全局作用域中重定义运算符的含义。由于很多面向对象的语言没有提供这种能力,因此你可能会低估这种特性在C++中的作用。C++中运算符的概念十分广泛,甚至包含[](数组索引)、()(函数调用)、类型转换以及内存分配和释放例程。可以通过运算符重载来改变语言运算符对自定义类的行为。能让自己的类具有内建类型的类似行为,甚至可以编写看上去类似于数组、函数或指针的类。在博主的《C++
2016-12-10 20:49:54
348
原创 C++运算符重载(二)
C++允许在自己的类中,或是在全局作用域中重定义运算符的含义。由于很多面向对象的语言没有提供这种能力,因此你可能会低估这种特性在C++中的作用。C++中运算符的概念十分广泛,甚至包含[](数组索引)、()(函数调用)、类型转换以及内存分配和释放例程。可以通过运算符重载来改变语言运算符对自定义类的行为。能让自己的类具有内建类型的类似行为,甚至可以编写看上去类似于数组、函数或指针的类。在博主的《C++
2016-12-10 19:29:06
502
原创 C++运算符重载(一)
C++允许在自己的类中,或是在全局作用域中重定义运算符的含义。由于很多面向对象的语言没有提供这种能力,因此你可能会低估这种特性在C++中的作用。C++中运算符的概念十分广泛,甚至包含[](数组索引)、()(函数调用)、类型转换以及内存分配和释放例程。可以通过运算符重载来改变语言运算符对自定义类的行为。能让自己的类具有内建类型的类似行为,甚至可以编写看上去类似于数组、函数或指针的类。在博主的《C++
2016-12-10 17:24:08
647
原创 灵活而奇特的C++语言特性——作用域解析(二)
学习了博主的《漫谈继承技术》系列博文之后,相信大家都有所收获吧!这次博主将和大家一起探讨 《灵活而奇特的C++语言特性》 ,主要包括引用、常量(const)、常量表达式(constexpr)、静态(static)、外部(expert)、类型定义(typedef)、类型别名(aliases)、类型转换、作用域解析、统一初始化、显示转换运算符、特性(attribute)、用户自定义文本、头文件、可变长
2016-12-03 12:40:21
456
原创 灵活而奇特的C++语言特性——作用域解析(一)
学习了博主的《漫谈继承技术》系列博文之后,相信大家都有所收获吧!这次博主将和大家一起探讨 《灵活而奇特的C++语言特性》 ,主要包括引用、常量(const)、常量表达式(constexpr)、静态(static)、外部(expert)、类型定义(typedef)、类型别名(aliases)、类型转换、作用域解析、统一初始化、显示转换运算符、特性(attribute)、用户自定义文本、头文件、可变长
2016-12-03 12:32:40
692
原创 灵活而奇特的C++语言特性——typedef & aliases
学习了博主的《漫谈继承技术》系列博文之后,相信大家都有所收获吧!这次博主将和大家一起探讨 《灵活而奇特的C++语言特性》 ,主要包括引用、常量(const)、常量表达式(constexpr)、静态(static)、外部(expert)、类型定义(typedef)、类型别名(aliases)、类型转换、作用域解析、统一初始化、显示转换运算符、特性(attribute)、用户自定义文本、头文件、可变长
2016-12-03 12:12:10
518
原创 灵活而奇特的C++语言特性——统一初始化
学习了博主的《漫谈继承技术》系列博文之后,相信大家都有所收获吧!这次博主将和大家一起探讨 《灵活而奇特的C++语言特性》 ,主要包括引用、常量(const)、常量表达式(constexpr)、静态(static)、外部(expert)、类型定义(typedef)、类型别名(aliases)、类型转换、作用域解析、统一初始化、显示转换运算符、特性(attribute)、用户自定义文本、头文件、可变长
2016-12-03 12:03:38
512
原创 灵活而奇特的C++语言特性——const(三)
学习了博主的《漫谈继承技术》系列博文之后,相信大家都有所收获吧!这次博主将和大家一起探讨 《灵活而奇特的C++语言特性》 ,主要包括引用、常量(const)、常量表达式(constexpr)、静态(static)、外部(expert)、类型定义(typedef)、类型别名(aliases)、类型转换、作用域解析、统一初始化、显示转换运算符、特性(attribute)、用户自定义文本、头文件、可变长
2016-11-30 23:04:08
480
原创 灵活而奇特的C++语言特性——const(二)
学习了博主的《漫谈继承技术》系列博文之后,相信大家都有所收获吧!这次博主将和大家一起探讨 《灵活而奇特的C++语言特性》 ,主要包括引用、常量(const)、常量表达式(constexpr)、静态(static)、外部(expert)、类型定义(typedef)、类型别名(aliases)、类型转换、作用域解析、统一初始化、显示转换运算符、特性(attribute)、用户自定义文本、头文件、可变长
2016-11-30 22:56:02
501
原创 灵活而奇特的C++语言特性——const(一)
学习了博主的《漫谈继承技术》系列博文之后,相信大家都有所收获吧!这次博主将和大家一起探讨 《灵活而奇特的C++语言特性》 ,主要包括引用、常量(const)、常量表达式(constexpr)、静态(static)、外部(expert)、类型定义(typedef)、类型别名(aliases)、类型转换、作用域解析、统一初始化、显示转换运算符、特性(attribute)、用户自定义文本、头文件、可变长
2016-11-30 22:44:03
797
原创 灵活而奇特的C++语言特性——引用(下)
学习了博主的《漫谈继承技术》系列博文之后,相信大家都有所收获吧!这次博主将和大家一起探讨 《灵活而奇特的C++语言特性》 ,主要包括引用、常量(const)、常量表达式(constexpr)、静态(static)、外部(expert)、类型定义(typedef)、类型别名(aliases)、类型转换、作用域解析、统一初始化、显示转换运算符、特性(attribute)、用户自定义文本、头文件、可变长
2016-11-30 15:56:47
529
原创 灵活而奇特的C++语言特性——引用(上)
学习了博主的《漫谈继承技术》系列博文之后,相信大家都有所收获吧!这次博主将和大家一起探讨《灵活而奇特的C++语言特性》,主要包括引用、常量(const)、常量表达式(constexpr)、静态(static)、外部(expert)、类型定义(typedef)、类型别名(aliases)、类型转换、作用域解析、统一初始化、显示转换运算符、特性(attribute)、用户自定义文本、头文件、可变长度参
2016-11-30 15:37:47
512
原创 漫谈继承技术(八)
如果没有继承,类只是具有一些相关行为的数据结构,这只是对过程语言的一大改进,而继承则开辟了完全不同的新天地。通过继承,可以在已有类的基础上创建新类。这样,类就成为可重用和可扩展的组件。博主的《漫谈继承技术》系列博文将讲述各种利用继承功能的方法。学习继承的语法,和利用继承的一些复制技术。本篇博文先给大家介绍一下virtual在继承中的使用,希望对大家加深对继承技术的理解有一定的帮助。virt
2016-11-27 20:26:09
455
原创 漫谈继承技术(七)
如果没有继承,类只是具有一些相关行为的数据结构,这只是对过程语言的一大改进,而继承则开辟了完全不同的新天地。通过继承,可以在已有类的基础上创建新类。这样,类就成为可重用和可扩展的组件。博主的《漫谈继承技术》系列博文将讲述各种利用继承功能的方法。学习继承的语法,和利用继承的一些复制技术。本篇博文先给大家介绍一下重写方法时的一些特殊情况,希望对大家加深对继承技术的理解有一定的帮助。重写方法时的
2016-11-27 20:20:00
382
原创 漫谈继承技术(六)
如果没有继承,类只是具有一些相关行为的数据结构,这只是对过程语言的一大改进,而继承则开辟了完全不同的新天地。通过继承,可以在已有类的基础上创建新类。这样,类就成为可重用和可扩展的组件。博主的《漫谈继承技术》系列博文将讲述各种利用继承功能的方法。学习继承的语法,和利用继承的一些复制技术。本篇博文先给大家介绍一下using在继承中的使用,希望对大家加深对继承技术的理解有一定的帮助。using
2016-11-27 20:11:20
573
原创 漫谈继承技术(五)
如果没有继承,类只是具有一些相关行为的数据结构,这只是对过程语言的一大改进,而继承则开辟了完全不同的新天地。通过继承,可以在已有类的基础上创建新类。这样,类就成为可重用和可扩展的组件。博主的《漫谈继承技术》系列博文将讲述各种利用继承功能的方法。学习继承的语法,和利用继承的一些复制技术。本篇博文先给大家介绍一下dynamic_cast在继承中的使用,希望对大家加深对继承技术的理解有一定的帮助。
2016-11-27 20:06:54
569
原创 漫谈继承技术(四)
如果没有继承,类只是具有一些相关行为的数据结构,这只是对过程语言的一大改进,而继承则开辟了完全不同的新天地。通过继承,可以在已有类的基础上创建新类。这样,类就成为可重用和可扩展的组件。博主的《漫谈继承技术》系列博文将讲述各种利用继承功能的方法。学习继承的语法,和利用继承的一些复制技术。本篇博文先给大家介绍一下typeid在继承中的使用,希望对大家加深对继承技术的理解有一定的帮助。typei
2016-11-27 19:59:27
439
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人