自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(146)
  • 资源 (4)
  • 收藏
  • 关注

转载 Linux Netlink基本使用

1. 什么是Netlink什么是Netlink?Netlink是linux提供的用于内核和用户态进程之间的通信方式。但是注意虽然Netlink主要用于用户空间和内核空间的通信,但是也能用于用户空间的两个进程通信。只是进程间通信有其他很多方式,一般不用Netlink。除非需要用到Netlink的广播特性时。那么Netlink有什么优势呢?一般来说用户空间和内核空间的通信方式有三种:/proc

2017-07-30 17:11:20 1353

转载 centos7安装openstack mitaka版本

前言openstack真是一个庞然大物,想要吃透还真不容易,所以在对openstack大概有了一个了解的时候,就应该是部署,虽然openstack的安装方式有rdo或者devstack等一键安装工具,但是最好浅尝辄止,有了大概的使用经验之后就应该是从头到尾的安装一遍了,不然对于那些报错,以及故障的解决一定是不够气定神闲的,因此,当你有了openstack的基本认识后,开始安装吧~ 注:

2017-07-23 16:23:58 3101

转载 DNS Bind配置详解

前面所介绍的服务器服务大多是用在内部网络环境中的﹐不过﹐以现代的情况和未来的趋势来看﹐每个网络或多或少都需要 Internet 联机以及向 Internet 提供服务。从这一章开始﹐我们将为大家陆续介绍一些在 Internet 环境中常用到的服务器之架设技巧。就算您目前还没真的需要架设 Internet 相关的服务器﹐但许多企业的 Intranet 环境中﹐也需要相类似的服务器来为企业内部网络提供

2017-07-23 12:23:49 1703

转载 Bind最小配置详解

一、简介相对于存储和大数据领域,CDN是一个相对小的领域,但行行出状元,BIND就是CDN领域的蝉联N届的状元郎。BIND是一款非常常用的DNS开源服务器,全球有90%的DNS用BIND实现。值得一提的是,BIND9.8.1用C语言实现,代码量巨大,其设计实现几乎涵盖了服务器编程的所有细节。 本文简要介绍一下BIND9.8.1最简单配置,其中穿插介绍BIND中的最基本概念,不涉及BIN

2017-07-23 09:36:26 944

转载 IPsec技术介绍

IPsecIPsec简介IPsec(IP Security)是IETF制定的三层隧道加密协议,它为Internet上传输的数据提供了高质量的、可互操作的、基于密码学的安全保证。特定的通信方之间在IP层通过加密与数据源认证等方式,提供了以下的安全服务: l  数据机密性(Confidentiality):IPsec发送方在通过网络传输包前对包进行加密。 l  数据完整性(Da

2017-07-22 21:25:14 7489

原创 SourceInsight 支持 Python

1. 首先下载sourceinsight支持python的插件,详见附件。2. 按照下图步骤安装。

2017-06-24 13:17:58 1637

转载 iptables详解

一、前言          防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。          目前市面上比较常见的有3、4层的防火墙,叫网络层的防火墙,还有7层的

2017-06-24 12:20:25 241

转载 【DPDK】虚拟机开发环境配置

正文本文介绍的步骤基本适用于dpdk 1.7.0 - dpdk 2.0.0 各版本。只是setup.sh显示的菜单有一些小的不同;同样的,也适用于ubuntu更高版本(已在ubuntu 12.04+及14.04上验证过) 1. 所用系统与软件版本系统:Ubuntu 12.04.3 LTS 64位, CentOS Linux release 7.0.1406 64位dpdk:

2017-06-11 10:06:09 2255

转载 “惊群”,看看nginx是怎么解决它的

在说nginx前,先来看看什么是“惊群”?简单说来,多线程/多进程(Linux下线程进程也没多大区别)等待同一个socket事件,当这个事件发生时,这些线程/进程被同时唤醒,就是惊群。可以想见,效率很低下,许多进程被内核重新调度唤醒,同时去响应这一个事件,当然只有一个进程能处理事件成功,其他的进程在处理该事件失败后重新休眠(也有其他选择)。这种性能浪费现象就是惊群。 惊群通常发生在serv

2017-05-03 13:09:57 276

转载 一致性 hash 算法( consistent hashing )

consistent hashing 算法早在 1997 年就在论文Consistent hashing and random trees 中被提出,目前在 cache 系统中应用越来越广泛;1 基本场景比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的

2017-05-01 18:51:39 295

转载 C/C++宏定义的可变参数详细解析

在1999年版本的ISO C 标准中,宏可以象函数一样,定义时可以带有可变参数。宏的语法和函数的语法类似。编写代码的过程中,经常会输出一些调试信息到屏幕上,一般会调用printf这类的函数。但是当调试解决之后,我们需要手工将这些地方删除或者注释掉。最近在看《Linux C编程一站式学习》这本书,就想到一个方法:void myprintf(char* fmt, ...){}#

2017-05-01 18:19:54 4629

转载 HTTP 请求头中的 X-Forwarded-For

背景通过名字就知道,X-Forwarded-For 是一个 HTTP 扩展头部。HTTP/1.1(RFC 2616)协议并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP。如今它已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用,并被写入 RFC 7239(Forwarded HTTP Extension)标准之中。X-

2017-02-19 21:20:44 13950

转载 HTTP 请求头中的 Proxy-Connection

平时用 Chrome 开发者工具抓包时,经常会见到 Proxy-Connection 这个请求头。之前一直没去了解什么情况下会产生它,也没去了解它有什么含义。最近看完《HTTP 权威指南》第四章「连接管理」和第六章「代理」之后,终于搞明白了这是因为给浏览器设置了代理(Proxy)。而神器 Fiddler 的抓包原理就是让浏览器请求走它开的本地代理,所以开了 Fiddler 必然会产生这个请求头。

2017-02-19 21:10:01 1007

转载 HTTP cookie详解

HTTP Cookie:Cookie通常也叫做网站cookie,浏览器cookie或者httpcookie,是保存在用户浏览器端的,并在发出http请求时会默认携带的一段文本片段。它可以用来做用户认证,服务器校验等通过文本数据可以处理的问题。Cookie不是软件,所以它不能被携带病毒,不能执行恶意脚本,不能在用户主机上安装恶意软件。但它们可以被间谍软件用来跟踪用户的浏览行为。所以近年来,已

2017-02-12 21:36:37 17768

转载 HTTP 协议中的 Transfer-Encoding

本文作为我的博客「HTTP 相关」专题新的一篇,主要讨论 HTTP 协议中的 Transfer-Encoding。这个专题我会根据自己的理解,以尽量通俗的讲述,结合代码示例和实际场景来说明问题,欢迎大家关注和留言交流。Transfer-Encoding,是一个 HTTP 头部字段,字面意思是「传输编码」。实际上,HTTP 协议中还有另外一个头部与编码有关:Content-Encoding(内容

2017-02-12 19:35:53 827

原创 chrome和Firefox浏览器http抓包

一、chrome浏览器抓包谷歌浏览器chrome自带的http抓包工具打开方式:点击chrome浏览器右上角的菜单-->工具-->开发者工具。(或者Ctrl+shift+I)工具打开之后默认就是监测状态,点击工具左上方的小红点record network log,可以记录下整个访问过程中所有抓包结果,否则只记录当前页面的抓包结果,用于记录存在跳转页面的抓包时该项非常

2017-02-05 19:12:55 30363 4

转载 Python装饰器

装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。先来看一个简

2016-12-31 18:23:26 268

转载 x86函数调用堆栈的操作

这篇blog试图讲明当一个c函数被调用时,一个栈帧(stack frame)是如何被建立,又如何被消除的。这些细节跟操作系统平台及编译器的实现有关,下面的描述是针对运行在Intel奔腾芯片上Linux的gcc编译器而言。c语言的标准并没有描述实现的方式,所以,不同的编译器,处理器,操作系统都可能有自己的建立栈帧的方式。 一个典型的栈帧      ESP==>|         

2016-12-31 18:15:44 4820

转载 Python中的闭包实例详解

这篇文章主要介绍了Python中的闭包,针对闭包的定义、用法及注意事项进行了实例讲解,有助于读者深入理解闭包的概念及用法,需要的朋友可以参考下一般来说闭包这个概念在很多语言中都有涉及,本文主要谈谈python中的闭包定义及相关用法。Python中使用闭包主要是在进行函数式开发时使用。详情分析如下: 一、定义python中的闭包从表现形式上定义(解释)为:如果在一个内部函数里,对在外

2016-12-04 13:52:39 388

转载 Python数据持久存储:pickle模块

python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。 基本接口pickle.dump(obj,file, [,protocol])  注解:将对象obj保存到文件file中去。protocol为序列化使用

2016-12-04 13:49:50 361

转载 Python标准异常和异常处理详解

这篇文章主要介绍了Python标准异常和异常处理详解,本文讲解了python标准异常、什么是异常、异常处理的多种方法和实例等内容,需要的朋友可以参考下python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以使用该功能来调试python程序。1.异常处理: 本站Python教程会具体介绍。2.断言(Assertions):本站Python教程会具体介绍。

2016-12-04 13:45:48 4578

转载 Python3 输入和输出

在前面几个章节中,我们其实已经接触了 Python的输入输出的功能。本章节我们将具体介绍 Python的输入输出。输出格式美化Python两种输出值的方式:表达式语句和 print()函数。第三种方式是使用文件对象的 write()方法,标准输出文件可以用 sys.stdout引用。如果你希望输出的形式更加多样,可以使用 str.format()

2016-12-04 11:47:32 3840 1

转载 Python 字符串

字符串是 Python中最常用的数据类型。我们可以使用引号('或")来创建字符串。创建字符串很简单,只要为变量分配一个值即可。例如:var1 = 'Hello World!'var2 = "Python Runoob"Python访问字符串中的值Python不支持单字符类型,单字符也在Python也是作为一个字符串使用。Python访问子字符

2016-12-04 11:43:57 302

转载 Python 字典(Dictionary)

字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:d = {key1 : value1, key2: value2 }键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。一个简单的字典实例

2016-12-04 11:41:09 246

转载 Python 元组

Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。如下实例:tup1 = ('physics','chemistry',1997, 2000);tup2 = (1, 2, 3,4, 5 );tup3 = "a", "b","c"

2016-12-04 11:38:57 334

转载 Python 列表

序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 -它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。Python有6个序列的内置类型,但最常见的是列表和元组。序列都可以进行的操作包括索引,切片,加,乘,检查成员。此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。列表是最常用的Python数据类型,它可以作为一个方括号内的逗号

2016-12-04 11:36:32 248

转载 Python 文件I/O

本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档。打印到屏幕最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式。此函数把你传递的表达式转换成一个字符串表达式,并将结果写到标准输出如下:#!/usr/bin/python# -*- coding: UTF-8 -*-  print "Python 是一个非常棒的语

2016-12-04 11:28:56 204

转载 Python 函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。 定义一个函数你可以定义一个由自己想要功能的函数,以下是简单的规则:§  函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。§  任何传入参

2016-12-04 11:21:15 212

转载 Python3 模块

在前面的几个章节中我们脚本上是用 python解释器来编程,如果你从 Python解释器退出再进入,那么你定义的所有的方法和变量就都消失了。为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块。模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使

2016-12-04 11:02:44 323

转载 Python 面向对象

Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程。接下来我们先来简单的了解下面向对象的一些基本特征。

2016-12-04 10:54:42 215

转载 gdb 条件断点

GDB是linux上的调试利器,是我们每个基于linux系统编程coder必须掌握的一门技术。在此记录一个使用gdb条件断点的小例子:gdb条件调试一般应用在循环、链表的遍历、或者其他变量的值可能被多次改变的场合。先上一个例子: 调试用例gdb_condition.c源码:   1/**********************************************

2016-11-13 18:41:31 14454

转载 gdb 信号处理

信号(Signals) 信号是一种软中断,是一种处理异步事件的方法。一般来说,操作系统都支持许多信号。尤其是UNIX,比较重要应用程序一般都会处理信号。UNIX定义了许多信号,比如SIGINT表示中断字符信号,也就是Ctrl+C的信号,SIGBUS表示硬件故障的信号;SIGCHLD表示子进程状态改变信号; SIGKILL表示终止程序运行的信号,等等。信号量编程是UNIX下非常重要的一种技术

2016-11-13 18:40:14 527

转载 gdb watch

这里大概说下gdb调试程序时,watch的使用。至于原理尚不清楚,以后再做补充,还请见谅。watch通常需要和break,run,continue联合使用。下面举例说明:代码如下:调试的时候过程如下:(gdb) l1    #include 2    3    int main()4    {5        int a=0;6  

2016-11-13 18:39:18 406

转载 Linux静态库与动态库

这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。 什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是

2016-11-13 12:32:24 372

转载 以boost function和bind取代虚函数

这是一篇比较情绪化的blog,中心思想是“继承就像一条贼船,上去就下不来了”,而借助boost::function和boost::bind,大多数情况下,你都不用上贼船。boost::function和boost::bind已经纳入了std::tr1,这或许是C++0x最值得期待的功能,它将彻底改变C++库的设计方式,以及应用程序的编写方式。Scott Meyers的Effective C

2016-11-12 15:51:39 593

转载 boost function和bind,实现Linux线程类封装

最近在看陈硕的MUDUO网络通信库的过程中,发现作者大量使用了Boost::function以及Boost::bind功能,为了能够正常的学习作者的代码,决定先弄明白function以及bind的功能。Boost::Function 是对函数指针的对象化封装,在概念上与广义上的回调函数类似。相对于函数指针,function除了使用自由函数,还可以使用函数对象,甚至是类的成员函数,这个就很强大了

2016-11-12 15:41:12 446 1

转载 boost thread使用方法

一、创建一个线程创建线程   boost::thread myThread(threadFun);   需要注意的是:参数可以是函数对象或者函数指针。并且这个函数无参数,并返回void类型。   当一个thread执行完成时,这个子线程就会消失。注意这个线程对象不会消失,它仍然是一个还处在它的生存期的C++对象。同理,当对一个堆上的线程对象的指针调用delete时候,线程对象被销毁

2016-11-12 15:29:13 10907

转载 boost shared_ptr的使用方法

1. boost::shared_ptr的用法 下面用一个简单的例子说明shared_ptr的用法: #include #include  class A {public:    void print() {        printf("classA print!\n");    }}; int main(int argc, char **ar

2016-11-12 15:19:12 885

转载 boost function用法详解

要开始使用 Boost.Function, 就要包含头文件 "boost/function.hpp", 或者某个带数字的版本,从"boost/function/function0.hpp" 到"boost/function/function10.hpp". 如果你知道你想保存在 function 中的函数的参数数量,这样做可以让编译器仅包含需要的头文件。如果包含 "boost/function.h

2016-11-12 15:05:42 1571

转载 boost bind的使用方法

头文件: boost/bind.hppbind 是一组重载的函数模板。用来向一个函数(或函数对象)绑定某些参数。bind的返回值是一个函数对象.它的源文件太长了. 看不下去. 这里只记下它的用法: 1 对于普通函数假如有函数 fun() 如下:  voidfun(int x, int y) { cout  } 现在我们看看怎么用 bind 向其绑定参

2016-11-12 14:51:46 241

radix树-路由表的设计原理

radix树-路由表的设计原理: BSD路由表使用的是 radix 树。 这种树的设计思想来源于patricia树。

2018-03-23

local_settings

openstack dashboard 配置 /etc/openstack-dashboard/local_settings

2017-07-30

sourceinsight支持python插件

sourceinsight支持python插件

2017-06-24

深入理解Nginx模块开发与架构解析

深入理解Nginx模块开发与架构解析

2017-01-14

空空如也

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

TA关注的人

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