自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(165)
  • 资源 (2)
  • 收藏
  • 关注

转载 c++异常机制分析

C++异常机制概述 throw 关键字 异常对象 catch 关键字 栈展开、RAII 异常机制与构造函数 异常机制与析构函数 noexcept修饰符与noexcept操作符 异常处理的性能分析正文C++异常机制概述异常处理是C++的一项语言机制,用于在程序中处理异常事件。异

2016-05-03 08:31:51 641

转载 linux虚拟内存和物理内存的理解

首先,让我们看下虚拟内存:第一层理解1.         每个进程都有自己独立的4G内存空间,各个进程的内存空间具有类似的结构 2.       一个新进程建立的时候,将会建立起自己的内存空间,此进程的数据,代码等从磁盘拷贝到自己的进程空间,哪些数据在哪里,都由进程控制表中的task_struct记录,task_struct中记录中一条链表,记录中内存空间的分配情况,哪些地址有

2016-04-26 14:50:05 637

转载 linux虚拟内存

linux内核对整个系统的物理内存是通过类型为struct page的数组mem_map来管理的。系统中的伙伴系统分配算法最终是通过操作这个数组来记录物理内存的分配、回收等操作。在这里不要被系统的高端内存、低端内存等概念搞混淆了,高、低端内存的分类主要在于区分物理内存地址是否可以直接映射到内核线性地址空间中。我们知道,linux的内核地址空间大小为1G(用户空间0~3G,内核空

2016-04-26 14:37:49 634

转载 虚表的存储位置

我看到了很多有意思的答案,都回答的比较好,下面贴出一些具有代表性的:Answer 1:Answer 2:我们都知道,虚函数是多态机制的基础,就是在程序在运行期根据调用的对象来判断具体调用哪个函数,现在我们来说说它的具体实现原理,主要说一下我自己的理解,如果有什么不对的地方请指正在每个包含有虚函数的类的对象的最前面(是指这个对象对象内存布局的最前面,至于为什么是最

2016-04-26 14:36:37 4643 1

转载 算法-求二进制数中1的个数

问题描述任意给定一个32位无符号整数n,求n的二进制表示中1的个数,比如n = 5(0101)时,返回2,n = 15(1111)时,返回4这也是一道比较经典的题目了,相信不少人面试的时候可能遇到过这道题吧,下面介绍了几种方法来实现这道题,相信很多人可能见过下面的算法,但我相信很少有人见到本文中所有的算法。如果您上头上有更好的算法,或者本文没有提到的算法,请不要吝惜您的代码,分享的时候,也

2016-04-24 19:50:57 709

转载 gdb调试正在运行的进程

有时会遇到一种很特殊的调试需求,对当前正在运行的其它进程进行调试(正是我今天遇到的情形)。这种情况有可能发生在那些无法直接在调试器中运行的进程身 上,例如有的进程 只能在系统启动时运行。另外如果需要对进程产生的子进程进行调试的话,也只能采用这种方式。GDB可以对正在执行的程序进行调度,它允许开发人员中断程序 并查看其状态,之后还能让这个程序正常地继续执行。      GDB提供了两种方式来

2016-04-23 21:05:09 4985

转载 Ip冲突检测

有一个IP地址冲突意味着有一个以上的网络设备或计算机的IP地址相同。在给服务器配置IP的时候,如果前期没有做好IP地址规划,IP地址使用明细登记,有可能就将已再用的IP又分配给另一台服务器。那么怎么检测 IP地址冲突呢?可以使用arp-scan工具。该工具在局域网内发送ARP数据包,来收集IP和MAC地址信息。如果一个IP地址对应多个MAC地址,就说明IP冲突了。1. 安装

2016-04-22 16:44:30 18390

转载 python中的赋值操作,与c++做对比

def foo(l):      l += 'b'l = 'abc'foo(l)print(l)        #result   'abc' not 'abcb'l = ['abc']foo(l)print(l)       #result ['abc','b']作个总结,网上已经有相关的内容了,

2016-04-18 10:36:19 632

转载 Golang输出颜色

Go语言要打印彩色字符与Linux终端输出彩色字符类似,以黑色背景高亮绿色字体为例:fmt.Printf("\n %c[1;40;32m%s%c[0m\n\n", 0x1B, "testPrintColor", 0x1B)其中0x1B是标记,[开始定义颜色,1代表高亮,40代表黑色背景,32代表绿色前景,0代表恢复默认颜色。显示效果为:下面代码遍历全部显示效果。

2016-04-06 21:33:53 16130

转载 c++常用特性原理解析

在我的早期印象中,C++这门语言是软件工程发展过程中,出于对面向对象语言级支持不可或缺的情况下,一群曾经信誓旦旦想要用C统治宇宙的极客们妥协出来的一个高性能怪咖。它驳杂万分,但引人入胜,出于多(mian)种(shi)原因,我把它拿出来进行一次重新的学习。这篇笔记从G++编译出的汇编代码出发,对部分C++的常用面向对象特性进行原理性解释和总结,其中包括 引用、类(成员函数,构造函数)、多态(编译时,运

2016-04-05 21:30:32 786

转载 shell脚本显示颜色

shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e 格式如下:复制代码代码如下:echo -e "\033[字背景颜色;文字颜色m字符串\033[0m"例如:复制代码代码如下:echo -e "\033[41;36m something here \033[0m"其中41的位置代表底色

2016-04-05 20:59:29 1619

转载 大型项目使用Automake/Autoconf完成编译配置

使用过开源C/C++项目的同学们都知道,标准的编译过程已经变成了简单的三部曲:configure/make/make install, 使用起来很方便,不像平时自己写代码,要手写一堆复杂的Makefile,而且换个编译环境,Makefile还需要修改(Eclipse也是这样)。 这么好的东东当然要拿来用了,但GNU的Autotool系列博大精深,工具数量又多,涉及的语言也多,要是自己从头看

2016-04-04 21:25:46 1025

转载 构建c/c++项目时添加宏定义

有时候我们希望在构建时能够在命令行添加一些宏定义,改变程序行为。一个典型应用示例是代码里通过检查是否定义了 DEBUG 宏,来决定是否输出调试信息。编译器一般提供命令行选项支持这种做法,例如使用 gcc 时可以在命令行添加 -D 选项,定义一些宏:gcc -DDEBUG=1 a.c不过,大型项目一般都需要自动化构建工具,如 GNU Autotools 或者 CMake。使用它们后,

2016-04-04 21:22:46 11412 1

转载 vim下方便代码阅读的工具ctags

1.ctags简介:        “哦,这个多的文件,我该如何去查看XX函数的实现!”相信这是很多朋友的抱怨。太多的文件导致我们无法去定位一个函数的实现或者一个宏定义的位置。显然对于源码的阅读和个人的学习都是非常不利的。多么希望有一个软件能够输入命令就能够精确的定位函数的位置。是的,现在有这么一个工具:ctags,它需要和vim编辑器配合使用,让源码阅读可以更加轻松。

2016-04-04 17:18:42 461

转载 c++基类和派生类

派生类的继承方式总结:继承方式说明public基类的public和protected的成员被派生类继承后,保持原来的状态private基类的public和protected的成员被派生类继承后,变成派生类的private成员protected 基类的public和protected的成员被派生类继承后,变成派生类的protected成

2016-04-04 17:14:12 395

转载 C++中placement new操作符

placement new是重载operator new的一个标准、全局的版本,它不能被自定义的版本代替(不像普通的operator new和operator delete能够被替换成用户自定义的版本)。它的原型如下:void *operator new( size_t, void *p ) throw()  { return p; } 首先我们区分下几个容易混淆的关键词:new、

2016-04-02 17:18:10 480

转载 逆波兰表达式

将一个中序表达式转化成为逆波兰表达式的方法其实很简单,也是一个成型的算法。通过逆波兰表达式求一个计算式子的值,也是很简单的,只要遇到过会用就行了。1、将一个中序表达式转化成为逆波兰表达式。       首先维护的是两个栈,我们这里暂且称为S1和S2,S1中的结果最后存的就是逆波兰表达式,S2中将用于暂时存放运算符并且在最终形成逆波兰表达式的时候,该栈是会清空的。下面我们看看怎样具体

2016-03-29 09:00:57 403

转载 yum只下载不安装包

1. 安装yum-downloadonly或 yum-plugin-downloadonly 软件包。可以执行以下命令安装yum-downloadonly包:#yum install yum-downloadonly说明:yum-downloadonly是yum的一个插件,使得yum可以从RHN或者yum的仓库只下载包而不安装。安装完成后,查看/etc/yum/pl

2016-03-28 22:40:07 3642

转载 求字符串中最长无重复字符的子串

求字符串中最长无重复字符的子串题目:求一个字符串中最长的没有重复字符的子串。方法一:穷举法,使用2重外循环遍历所有的区间,用2重内循环检验子串是否符合“无重复字符”这一要求。其中外层循环i、j 遍历所有的下标,m、n是内层循环,检查区间[i,j]是否符合要求。空间复杂度是O(1),时间复杂度O(N^4)。//O(N^4)的时间复杂度int max_unique

2016-03-28 18:47:20 440

转载 字节对齐与结构体大小

说明:结构体的sizeof值,并不是简单的将其中各元素所占字节相加,而是要考虑到存储空间的字节对齐问题。这些问题在平时编程的时候也确实不怎么用到,但在一些笔试面试题目中出是常常出现,对sizeof我们将在另一篇文章中总结,这篇文章我们只总结结构体的sizeof,报着不到黄河心不死的决心,终于完成了总结,也算是小有收获,拿出来于大家分享,如果有什么错误或者没有理解透的地方还望能得到提点,也不

2016-03-28 17:26:01 448

转载 A星算法

A星寻路算法介绍你是否在做一款游戏的时候想创造一些怪兽或者游戏主角,让它们移动到特定的位置,避开墙壁和障碍物呢?如果是的话,请看这篇教程,我们会展示如何使用A星寻路算法来实现它!在网上已经有很多篇关于A星寻路算法的文章,但是大部分都是提供给已经了解基本原理的高级开发者的。本篇教程将从最基本的原理讲起。我们会一步步讲解A星寻路算法,幷配有很多图解和例子。不管你使用的是什么编程

2016-03-28 17:10:07 831

转载 inline和宏的优点和缺点

优点:1)inline定义的内联函数,函数代码被放入符号表中,在使用时进行替换(像宏一样展开),效率很高。2)类的内联函数也是函数。编绎器在调用一个内联函数,首先会检查参数问题,保证调用正确,像对待真正函数一样,消除了隐患及局限性。3)inline可以作为类的成员函数,刀可以使用所在类的保护成员及私有成员。缺点:内联函数以复制为代价,活动产函数开销1

2016-03-28 16:14:50 3283

转载 Linux Shell 文本处理工具集锦

本文将介绍Linux下使用Shell处理文本时最常用的工具:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk;提供的例子和参数都是最常用和最为实用的;我对shell脚本使用的原则是命令单行书写,尽量不要超过2行;如果有更为复杂的任务需求,还是考虑python吧;find 文件查找

2016-03-27 11:24:45 278

转载 73条日常Linux shell命令汇总,总有一条你需要!

1.检查远程端口是否对bash开放:echo >/dev/tcp/8.8.8.8/53 && echo "open"2.让进程转入后台:Ctrl + z3、将进程转到前台:fg4.产生随机的十六进制数,其中n是字符数:openssl rand -hex n5.在当前shell里执行一个文件里的命令:source

2016-03-25 09:43:54 1116

转载 数据工程师常用的 Shell 命令

导读:Linux以其强大的命令行称霸江湖,Shell命令是数据极客的必修兵器。探索性数据分析,在需求和数据都不太明确的环境下,使用各种命令进行一次探索与挖掘。从基础的文件查看到简单的统计,再到一些常用的探索性分析命令,其目的都只是为了更好的做数据分析与挖掘而已。01 Shell命令行对于经常和数据打交道的人来说,数据工程师应该也是常常和Linux打交道。Li

2016-03-25 09:19:51 550

转载 Systemd 入门教程:实战篇

上一篇文章,我介绍了 Systemd 的主要命令,今天介绍如何使用它完成一些基本的任务。一、开机启动对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件。如果你想让该软件开机启动,就执行下面的命令(以httpd.service为例)。

2016-03-25 08:53:59 1943 1

转载 Systemd 入门教程:命令篇

Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数发行版的标准配置。本文介绍它的基本用法,分为上下两篇。今天介绍它的主要命令,下一篇介绍如何用于实战。一、由来历史上,Linux 的启动一直采用init进程。下面的命令用来启动服务。$ sudo /etc/in

2016-03-25 08:52:59 347

转载 如何用 sysdig 监控和排查 Linux 服务器

如果你需要跟踪一个进程发出和接收的系统调用,第一个想到是的什么?你很可能想到了 strace,你是对的。 从命令行监控原始网络通信你会用什么工具?如果你想到了 tcpdump,你又做了明智的决定。如果你碰巧需要跟踪打开的文件(换句 Unix 语言来讲就是:一切皆文件),很可能你会用 lsof。strace、tcpdump 和 lsof 确实了不起的工具,应该是每个系统管理员工具箱里的一部分

2016-03-25 08:50:27 1594

转载 共享内存

目录(?)[+]共享内存    共享内存是被多个进程共享的一部分物理内存。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。原理图如下:共享内存的实现分为两个步骤:一、 创建共享内存,使用shmget函数。二、 映射共享内存,将这段创建的共享内存映射到具体的进程空间去,使用shma

2016-03-24 16:19:54 306

转载 进程间通信-管道(PIPE)和有名管道(FIFO)

前面我们学习了一下进程,我们知道多,进程间的地址空间相对独立。进程与进程间不能像线程间通过全局变量通信。 如果想进程间通信,就需要其他机制。        常用的进程间通信方式有这几种A.传统的进程间通信方式无名管道(pipe)、有名管道(fifo)和信号(signal)B.System v IPC对象共享内存(share

2016-03-22 18:52:34 7498

转载 为什么要三次握手

TCP 三次握手TCP 连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。以下步骤概述了通常情况下客户端计算机联系服务器计算机的过程:1. 客户端向服务器发送一个SYN置位的TCP报文,其中包含连接的初始序列号x和一个窗口大小(表示客户端上用来存储从服务器发送来的传入段的缓冲区的大小)。 2. 服务器收到客户端发送过来的SYN报文后,向客户

2016-03-22 16:25:01 424

转载 全排列的递归与非递归算法实现

全排列在近几年各大网络公司的笔试中出现的比较频繁首先来看看题目是如何要求的(百度迅雷校招笔试题)。用C++写一个函数, 如 Foo(const char *str), 打印出 str 的全排列,如 abc 的全排列: abc, acb, bca, dac, cab, cba一、      递归版本1、算法简述简单地说:就是第一个数分别以后面的数进行交

2016-03-19 21:06:58 1202

转载 c结构体对齐深刻理解

最近在实习的公司,作为新人和其他的新人做了一个新人技术交流会,主要是关于C的一些基础知识,包括了C的编译,链接,指针,数组,字符串,结构体等,以及一些项目相关的知识,总的来说技术交流会还是很有用的,大家可以相互讨论,这样更容易理解。好了,言归正传,C中对于结构体的使用可以说是非常的频繁和必要的,正确理解结构体的内存对齐原则,对于用好C是很有必要的(小子在实际项目中确实遇到过一个结构体内存对齐引起的

2016-03-18 17:06:06 3083

转载 库-libuv:概述

libuv 是 Node 的新跨平台抽象层,用于抽象 Windows 的 IOCP 及 Unix 的 libev。作者打算在这个库的包含所有平台的差异性。特性: 非阻塞 TCP 套接字 非阻塞命名管道 UDP 定时器 子进程生成 通过 uv_getaddrinfo 实现异步 DNS 异步文件系统 API:uv_fs_* 高分辨率时间:u

2016-03-18 08:56:14 17367

转载 探讨read的返回值的三种情况

作者:[email protected]博客:blog.focus-linux.net   linuxfocus.blog.chinaunix.net  本文的copyleft归[email protected]所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。===================

2016-03-17 21:33:41 4874

转载 虚函数-运行时多态的理解

形状对外公开一个函数来把自己绘制出来。这是合理的,形状就应该能绘制出来,对吧?由于继承的原因,多边形和圆形也有了绘制自己这个函数。现在我们来讨论在这三个类中的绘制自己的函数都应该怎么实现。在形状中嘛,什么也不做就行了。在多边形中嘛,只要把它所有的顶点首尾相连起来就行了。在圆形中嘛,依据它的圆心和它的半径画一个360度的圆弧就行了。可是现在的问题是:多边形和圆形的绘制自己的函数是从形状继承而

2016-03-16 09:20:29 1399

转载 函数调用过程

引言如何定义函数、调用函数,是每个程序员学习编程的入门课。调用函数(caller)向被调函数(callee)传入参数,被调函数返回结果,看似简单的过程,其实CPU和系统内核在背后做了很多工作。下面我们通过反汇编工具,来看函数调用的底层实现。 基础知识我们先来看几个概念,这有助于理解后面反汇编的输出结果。栈(stack)栈,相信大家都十分熟悉,push

2016-03-15 16:13:52 774

转载 虚函数调用过程

1.(mov ecx,dword ptr [ebp-0Ch])将this指针压入ecx2.(mov edx,dword ptr [ecx])this指针指向该对象的首地址,而该处的前四个字节存放着该对象的虚函数表的首地址,将虚表指针放到edx中。3.(call dword ptr [edx+4])由于edx中存放着虚表指针,则edx+4表示调用该虚表中的第二个函数4.执

2016-03-15 15:54:33 3625

转载 vim设置和插件安装

写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重要啊, 估计很多人就是卡在这个门槛上了, "工欲善其事, 必先利其器"嘛, 我想如果有一个很好用的IDE, 那些Linux牛人也会欢迎的. 这都是劳动人民的美好愿望罢了, 我

2016-03-14 21:47:05 1285

转载 简单的线程池实现

一、什么是线程池应用程序可以有多个线程,这些线程在休眠状态中需要耗费大量时间来等待事件发生。其他线程可能进入睡眠状态,并且仅定期被唤醒以轮循更改或更新状态信息,然后再次进入休眠状态。为了简化对这些线程的管理,.NET框架为每个进程提供了一个线程池,一个线程池有若干个等待操作状态,当一个等待操作完成时,线程池中的辅助线程会执行回调函数。线程池中的线程由系统管理,程序员不需要费力于线程管理,可

2016-03-14 16:51:07 267

php100源码

介意不要直接拿来用,应该跟着张老师的视频学习之后来检查自己所写的有何问题

2014-07-09

W3Cschool手册

web开发手册大全。个人觉得是所有手册中最具体,最全面的手册了!

2012-03-28

空空如也

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

TA关注的人

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