自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小熊的技术空间

Cdn, Sdn, Tcpip协议学习 / C,Python开发

  • 博客(46)
  • 收藏
  • 关注

原创 java 性能调试

1.  top  : 查看CPU利用率过高的进程2. vmstat测量上下文切换次数的。3. top -p 7516 -H  查看对应的有哪些线程CPU占用率高。7566linux下,所有的java内部线程,其实都对应了一个进程id,也就是说,linux上的sun jvm将java程序中的线程映射为了操作系统进程;我们看到,占用CPU资源最高的那个进程id是’7516 ′,这个进程

2015-08-05 21:05:32 433

原创 jdb 调试工具

1. javac -g hello.java2. jdb hello3. stop in hello.main4. clear/run5. main[1] threadsGroup system: (java.lang.ref.Reference$ReferenceHandler)0x12c Reference Handler cond. waiting (j

2015-08-01 23:01:17 720 1

原创 安装 Sublime Text2 与 markdown

一、安装sublime二、安装Package Control使用Sublime Text2首先就要安装Package Control,这样就能使用丰富的插件包了 也可以直接复制这一段到控制台(Ctrl+~)import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_pa

2015-08-01 22:29:24 401

原创 java 调试工具

1. jmap -histo 233| jmap -histo:live 233可以观察heap中所有对象的情况(heap中所有生存的对象的情况)。包括对象数量和所占空间大小。2. java -XX:+PrintFlagsFinal -version要想看到JVM执行时使用在使用哪些参数以及其各参数默认值,可以使用这个命令:java -XX:+PrintFlagsIni

2015-08-01 17:15:16 102

原创 java jconsole 远程调试

1. linux 服务器执行 (无需验证)java  -Dcom.sun.management.jmxremote.port=1228 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false 程序名称2. windows 客户端:打开jconsole

2015-07-31 16:46:46 583

原创 java 内部类

1.  当我们在创建一个内部类的时候,它无形中就与外围类有了一种联系,依赖于这种联系,它可以无限制地访问外围类的元素。

2015-07-31 16:41:21 296

原创 extends 和 implements

1.  类继承类时,只能是单继承:使用 extends 2. 类实现接口,多实现: 使用 implements 3. 类继承类并且实现接口,可以实现一个类和多个接口,同时使用extends 和implement4.接口继承接口时,多继承:使用 extends

2015-07-27 10:13:05 317

原创 socket编程笔记

1. intlisten(int sockfd, int backlog)参数backlog:进程处理一个一个连接请求的时候,可能还存在其它的连接请求。因为TCP连接是一个过程,所以可能存在一种半连接的状态,有时由于同时尝试连接的用户过多,使得服务器进程无法快速地完成连接请求。如果这个情况出现了,服务器进程希望内核如何处理呢?内核会在自己的进程空间里维护一个队列以跟踪这些完成的连接但服务器

2014-01-23 15:56:10 560

原创 Redis,memcache,MongoDB区别

1、性能都比较高,性能对我们来说应该都不是瓶颈。总体来讲,TPS方面redis和memcache差不多,要大于mongodb。2、操作的便利性memcache数据结构单一。(key-value)redis丰富一些,数据操作方面,redis更好一些,较少的网络IO次数,同时还提供list,set,hash等数据结构的存储。mongodb支持丰富的数据表达,索引,最类似关系型数

2014-01-20 18:57:40 555

原创 路由过程详解

1. 数据包从二层交换到三层路由流程  (1)源主机在发起通信之前,将自己的IP地址与目的主机的IP地址进行比较,如果源主机判断目的主机与自己位于不同网段时,它需要通过网关来递交报文的,所以它首先需要通过一个ARP请求报文获取网关的MAC地址(在源主机不知道网关MAC地址的情形下),即源主机先发送ARP请求帧以获取网关IP地址对应的MAC地址。  (2)网关在收到源主机发来的ARP请求报文

2014-01-15 15:02:43 5226

转载 filter、map、reduce、lambda

Python内置了一些非常有趣但非常有用的函数,充分体现了Python的语言魅力!filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回:>>> def f(x): return x % 2 != 0 and

2013-12-27 10:49:07 489

原创 TCP 协议图解

记得上大学的时候讲 tcp/ip 协议的时候,对协议有很地都不能明白,后来读了Linux内核源码后才有了更深一层的认识。个人觉得理论方面的讲解还是太抽象,要想理解的更深刻还是得看源码才行。  三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。

2013-12-26 19:19:34 659

原创 http 协议详解

为了更好地理解 Web 浏览器和 Web 客户端的交互原理,我们可以研究一下浏览器是如何打开网页的。在本例中,我们采用如下 URL 地址:http://www.hao123.com/index.html。首先,浏览器对 URL 地址的三个组成部分进行分析:1. http (协议或方案)2. www.hao123.com(服务器名称)3. index.html (所要请求的文件名

2013-12-11 19:38:53 798

原创 from * import 的实质

将被import的module(即python文件) 在当前环境下执行一遍。当多次import同一个module时, python会保证只执行一次。与import类似, 被导入的module仍然会执行且仅执行一次.区别是当以 "from *** import " 方式导入module时, python会在当前module 的命名空间中新建相应的命名。即, "from t2 import var

2013-12-10 18:13:30 545

原创 简单工厂模式与策略模式的区别

这几天看了几天设计模式,之前对设计模式也有一定的了解,但是都没有深入地研究过,只是知道怎么用,最近打算再深入研究一下,重新打开了之前写过的用到设计模式的代码,对之前的疑问一个个的刨根问底,同时对简单工厂模式和策略模式进行了对比,个人感觉两个的大概思路没有怎么变,都是通过多态去减少代码的耦合度,怎么看两个都是如出一辙,最后终于找到了两个的本质区别,在此和大家分享下:简单工厂模式:传条件(这条

2013-12-07 15:25:30 794

原创 flod弗洛伊德算法详解

弗洛伊德算法简介:顶点对之间的最短路径是指:对于给定的有向网G=(V,E),要对G中任意一对顶点有序对V、W(V≠W),找出V到W的最短距离和W到V的最短距离。解决此问题的一个有效方法是:轮流以每一个顶点为源点,重复执行迪杰斯特拉算法n次,即可求得每一对顶点之间的最短路径,总的时间复杂度为O(n3)。弗洛伊德(Floyd)提出了另外一个求图中任意两顶点之间最短路径的算法,虽然其时间复杂

2013-12-06 16:54:38 5138

原创 策略模式

策略模式:它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法变化,不会影响到使用算法的客户策略模式就是用来封装算法的,但在实践中,我们发现可以用它来,封装几乎任何类型的规则,只要在分析过程中听到需要在不同时间应用不同的  业务规则,就可以考虑使用策略模式处理这种变化的可能性。#include #include using namespace std;

2013-12-06 15:26:30 558

原创 简单工厂模式

简单工厂模式中包含的角色及其职责1. 工厂(Creator)角色简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。2. 抽象产品(Product)角色简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。3. 具体产品(Concrete Product)角色是简单工厂模式的创建目标,所有创建的对象都是充当这

2013-12-06 11:33:48 571

原创 cdn原理图解

该图片揭示了 cdn的原理:

2013-11-14 17:34:01 1530

原创 IGMP因特网组管理协议学习

IGMP(Internet Group Management Protocol,因特网组管理协议)是TCP/IP协议族中负责IP 组播成员管理的协议。它用来在IP 主机和与其直接相邻的组播交换机之间建立、维护组播组成员关系。IGMP 不包括组播交换机之间的组成员关系信息的传播与维护,这部分工作由各组播路由协议完成。所有参与组播的主机必须实现IGMP 协议。参与IP 组播的主机可以在任意位置、任

2013-11-05 19:45:59 688

原创 QoS实现

QoS(Quality of Service,服务品质保证)是指一个网络能够利用各种各样的技术向选定的网络通信提供更好的服务的能力。QoS是服务品质保证,提供稳定、可预测的数据传送服务,来满足使用程序的要求,QoS不能产生新的带宽,而是根据应用的需求以及网络管理的设置来有效的管理网络带宽。对于L3交换机软件QoS的实现,首先应该给出一个参考模型,而这个模型要求是通用的,成熟的。QoS并不能产生

2013-11-03 22:18:24 1465

原创 python 调试Django程序时错误 "AttributeError: 'module' object has no attribute 'Shell'"

运行django manage.py时出现如下错误:[root@va3 hello]# python manage.py shell Traceback (most recent call last): File "manage.py", line 11, in execute_manager(settings)

2013-11-01 15:12:32 3163

原创 Python 调用super初始化报错 "super() argument 1 must be type, not classobj"

在子类中调用super初始化时发生错误:其中FatherClass为超类,仔细检查并无语法错误。 super(FatherClass, self).__init__()TypeError: super() argument 1 must be type, not classobj原因如下:在python2.2版本之前,直接调用超类的方法,后来改成通过super来调用,原因是

2013-11-01 14:58:59 7445

原创 SimpleXMLRPCServer过滤客户主机

在用SimpleXMLRPCServer库实现rpc服务的时候,经常会要求拒绝某些客户主机的访问,此时可以通过对SimpleXMLRPCServer库进行二次封装来实现。# give the base class a short, readable nicknamefrom SimpleXMLRPCServer import SimpleXMLRPCServer as BaseServe

2013-11-01 10:33:16 1263

原创 python笔记

为什么会报错“UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)”?本文就来研究一下这个问题。字符串在Python内部的表示是unicode 编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(d

2013-10-30 14:38:56 849

原创 python memcache安装与使用

1. 下载memcachedwget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz2. 下载libeventwget http://www.monkey.org/~provos/libevent-1.2.tar.gz3. 先安装libevent$ tar zxvf libevent-1.2.tar.

2013-10-24 14:25:18 1422

原创 python笔记

1.pip笔记:$ pip install SomePackage$ pip search "query"$ pip install --upgrade SomePackage$ pip install --upgrade SomePackage==version2. __main__里有一个变量a,该文件里有一个函数a,则会重复。都属于模块里的东西。3. prin

2013-10-22 14:07:47 548

原创 Python线程池

在多线程程序的构建中容易犯一个常见的错误:根据需要生成任意数目的线程,事实上,大多时候,程序将任务交给固定的,数据相对较少的一群线程(线程池)是较好的架构。该程序主要通过queue.queue来实现线程池。Queue.queue也是线程间通信和同步的最有用最简单的方式。[root@xiaoxiong cb9]# cat cb2_9_4_sol_1.py import threading,

2013-10-21 17:13:28 776

原创 Python双头队列实现缓存环

与上一篇文章类似,本文通过从collections.dequeue派生出一个子类,这个类型提供了“双头队列——因而从任意一头添加或删除数据的效率都非常高。[root@xiaoxiong cb6]# cat cb2_6_11_exm_3.py from collections import dequeclass RingBuffer(deque): def __init_

2013-10-21 16:44:36 1327

原创 Python类转换实现环形队列

定义一个固定大小的缓存,当它被填满时,新加入的元素自动覆盖第一个元素,这种方法经常用在存储日志和历史信息的程序中。[root@xiaoxiong cb6]# cat cb2_6_11_sol_1.py class RingBuffer(object): """ class that implements a not-yet-full buffer """ def

2013-10-21 16:35:04 1573

原创 python 操作sqlite用法

sqlite数据库是非常小巧,非常适用于嵌入式软件开发,且占用资源非常低。打开数据库时返回的对象是一个数据库连接对象,它可以有以下操作:commit()--事务提交    rollback()--事务回滚   close()--关闭一个数据库连接   cursor()--创建一个游标游标对象有以下的操作:execute()--执行sql语句   executemany--执

2013-10-21 15:55:38 1003

原创 python垃圾回收与内存泄露

Python垃圾回收Python垃圾回收的工作原理是:为每个内存对象维护一个引用计数,当对象的引用计数为零时解释器会自动释放内存。在Python中,有2中方式可以触发垃圾回收:一种方式是用户显示调用gc.collect(),另一种方式是每次Python为新对象分配内存时,检查threshold阀值,当对象数量超过threshold设置的阀值就开始进行垃圾回收。但是Python垃圾回收频

2013-10-18 18:30:34 7143

转载 关于python文件夹操作

总是记不住API。昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧:python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()返回指定目录下的所有文件和目录名:os.listdir()函数用来删除一个文件:os.remove()删除多个目录:

2013-10-18 14:22:41 768

原创 python库os.walk的用法

python库函数 os.walk 遍历目录下的所有的文件。#-*- encoding:UTF-8 -*-import os#r=input("type a directory name:")for root,dirs,files in os.walk('.'): print 'haha', (root,dirs,files) for f in fi

2013-10-18 11:09:40 1299

原创 三层交换机原理图解

与传统的二层交换机相比,三层交换机增加了路由功能,可以理解为具有路由功能的交换机。三层交换机可以根据其处理数据的不同而分为纯硬件和纯软件两大类。(1)纯硬件的三层技术相对来说技术复杂,成本高,但是速度快,性能好,带负载能力强。其原理是,采用ASIC芯片,采用硬件的方式进行路由表的查找和刷新。当数据由端口接口芯片接收进来以后,首先在二层交换芯片中查找相应的目的MAC地

2013-10-14 17:57:38 2473

原创 python装饰器闭包学习

下面通过实例来一步一步解释装饰器的用法:实例1: # -*- coding:utf-8 -*-'''示例1: 最简单的函数,表示调用了两次'''def myfunc(): print("myfunc() called.") myfunc()myfunc()输出:[root@vm3 deco]# python 1.py myfunc() called.

2013-10-14 14:03:27 687

原创 python 通过_getframe获取函数名行号和调用函数

程序名为 "1.py" , 代码内容如下:# -*- coding: utf-8 -*- import sysdef abc(): print sys._getframe().f_code.co_filename #当前文件名,可以通过__file__获得 print sys._getframe().f_code.co_name #当前函数名 print

2013-10-11 10:59:35 3643

原创 用python库telnetlib脚本控制交换机详解

In [1]: Host = '1.1.1.1'In [2]: username = ‘abc’ #用户名In [3]: password = 'abc’ #密码In [4]: superpass = 'abc' #超级密码In [6]: import telnetlib In [7]: tn = telnetlib.Telnet(Host) #连接交换机

2013-10-10 16:03:37 6870

原创 openflow 和 sdn (软件定义网络) 原理和教程

OpenFlow概述OpenFlow简介  通俗的讲,OpenFlow是使用类似于API进程配置网络交换机的协议。OpenFlow的思路很简单,网络设备维护一个FlowTable并且只按照FlowTable进行转发,FlowTable本身的生成、维护、下发完全由外置的Controller来实现,注意这里的FlowTable并非是指IP五元组,事实上OpenFlow 1.0定义了包括端口号、

2013-10-04 21:13:38 9798

原创 网络传输过程中TCP/IP协议详解

用户在主机A上新建一封电子邮件,指定收件人为B,并输入邮件内容为“早上好”应用层:A从键盘上输入“早上好”,用户点击发送的那一刻起,就进入了应用层协议的处理,该协议首先封装相应的数据格式。表示层:对相关数据从某个特定的数据格式转换为网络通用的标准数据格式后再发送出去,如:将“早上好”根据UTF-8或GB2312进行编码。会话层:A要发5封邮件给B,可以每发一封时建立一次连接,随后断开连

2013-10-04 14:15:19 1400

空空如也

空空如也

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

TA关注的人

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