① 检查linux中是否成功的安装与dhcp有关的软件 rpm -qa | grep dhcp
② 如果没有安装软件,那么就安装相关的软件,一般软件在第一、二张系统盘中
③ 安装后效果如下:
④ 配置dhcp的主配置文件dhcpd.conf,该文件默认情况下是在/etc目录下,用vi编辑器打开
打开主配置文件之后就如上图所示,在subnet后配置设置的网段,netmask后是子网掩码,option routers 后是默认网关,option subnet-mask后是默认子网掩码,option nis-domain默认域名,option domain-name默认dns所在域名,option domain-name-servers默认dns服务器ip地址,后面的基本上可以不配置,在range中配置dhcp地址池,下面两条配置默认保留时间和最大保留时间,如果在要求中有保留地址,在host ns中配置保留地址,hardware ethernet配置mac地址,fixed-addredd配置相对应的ip地址
⑤ 测试,linux系统的网卡配置静态ip地址,并且ip地址和本地机的ip地址在同一网段,客户端网卡配置自动获取ip地址,同时在试验中,linux 系统和客户端系统都是虚拟机中的系统,那么linux系统和客户端的系统的网卡必须都使用桥接模式。
⑥ 在linux系统中开启dhcp功能 service dhcpd start
⑦ 在客户端命令提示行中运行ipconfig查看ip地址,如果和设置的字段不相同,那么运行ipconfig /release释放ip地址,ipconfig /renew重新获取,就会获得设置的ip地址
Gephi(http://gephi.org/)是一个常用的复杂网络分析和可视化工具,可以生成些比较漂亮的网络图。这里总结一下Python中生成符合Gephi输入文件格式的方法。Gexf(http://www.gexf.net/format/)是一个Gephi相关开发者定义的开放文件格式。其实我们也可以直接调用Gephi的API,但是由于很多网络分析是基于Python和NetworkX实现的,所以需要研究一下怎么通过Python生成Gexf文件。可以使用pygexf这个插件。
pygexf使用lxml作为XML的解析引擎,所以我们需要首先安装lxml,在其官网上http://lxml.de/ ,在Windows系统中的安装方法非常繁琐。但是实际上可以在python的官网中的PYPI(Python Package Index)中找到其可执行程序安装包:https://pypi.python.org/pypi/lxml ,在这个页面中选择对应的链接下载即可。
另外,pygexf在PYPI上的链接为:https://pypi.python.org/pypi/pygexf/0.2.2 下载pygexf-0.2.2.tar.gz 后解压。将压缩包拷贝至%Python安装目录%\Lib\site-packages,定位到该目录下,然后运行:
easy_install.py pygexf-0.2.2
要运行上面的命令,需要首先安装setuptools,具体安装方法请参考我之前一篇日志。
实际上在gexf的主页上也给出了pygexf的Github链接:https://github.com/paulgirard/pygexf 顺便介绍一下从Github上下载项目源代码的方法,最简单的方法是安装Github Windows系统插件后,在Git Shell中输入:
git clone https://github.com/paulgirard/pygexf.git
下载下的项目源代码目录和解压后类似,安装方法也和上面相同。在安装好pygexf之后,在Python IDLE中运行:
>>> import gexf as gexf >>> print gexf
如果能正确打印pygexf的安装位置,则说明可以已经成功安装了。参考pygexf\test目录下的test.py文件,我们可以新建一个最简单的文件:
from gexf import Gexf gexf = Gexf("Paul Girard","A hello world! file") graph=gexf.addGraph("directed","static","a hello world graph") graph.addNode("0","hello") graph.addNode("1","World") graph.addEdge("0","0","1") output_file=open("helloworld.gexf","w") gexf.write(output_file)
生成的helloworld.gexf文件就可以用Gephi直接导入了。
策略模式,相信大家都不很陌生,但是对于初学者,可能不是很明白。
现在由我给大家讲讲策略模式。
根据我的理解,大家可以把策略模式的使用想象成一个人要写作业,写作业可以用不同的笔,这里不同的笔就是不同的策略了。
下面给出示例,逐一解释。
Tools.java这个类就是抽象的策略角色,也就是笔这个抽象角色
public interface Tools { public void write(); }
Pen.java这个是一个具体的策略,钢笔
public class Pen implements Tools { @Override public void write() { System.out.println("我用钢笔写作业"); } }
Pencil.java 这个是一个具体的策略,铅笔
public class Pencil implements Tools { @Override public void write() { System.out.println("我用铅笔写作业"); } }
BallPointPen.java 这个是一个具体的策略,圆珠笔
public class BallPointPen implements Tools { @Override public void write() { System.out.println("我用圆珠笔写作业"); } }
策略的抽象角色和策略的一些具体实现我们都定义好了
下面我们还缺少使用这些策略的角色,也就是策略模式当中的 环境角色。
环境角色应该持有一个抽象策略接口的引用。
示例:Person.java
public class Person { private Tools tools; public Tools getTools() { return tools; } public void setTools(Tools tools) { this.tools = tools; } public Person(Tools tools) { this.tools = tools; } public void write() { this.tools.write(); } }
策略模式的使用:
UseCase.java
public class UseCase { public static void main(String[] args) { Person person = new Person(new Pen()); person.write(); person.setTools(new Pencil()); person.write(); } }