iptables封ip段的一些常见命令

linux下使用iptables封ip段的一些常见命令: 封单个IP的命令 iptables -I INPUT -s 211.1.0.0 -j DROP 封IP段的命令 iptables -I INPUT -s 211.1.0.0/16 -j DROP iptables -I INPUT -s 211.2.0.0/16 -j DROP iptables -I INPUT -s 211.3.0.0/16 -j DROP 封整个段的命令 iptables -I INPUT -s 211.0.0.0/8 -j DROP 封几个段的命令 iptables -I INPUT -s 61.37.80.0/24 -j DROP iptables -I INPUT -s 61.37.81.0/24 -j DROP 封80端口 iptables -I INPUT -p tcp –dport 80 -s 124.115.0.0/24 -j DROP 解封的话 iptables -D INPUT -s IP地址 -j REJECT iptables -F 全清掉了 如果想开机就自动封锁某个IP,那就编辑/etc/sysconfig/iptables文件,添加一行 ...

May 18, 2011 · 1 min · 86 words · jabin

网页正文提取算法研究[非正则]

互联网的页面展现形式相当丰富,但是如果按页面结构特征来分类,却不外乎以下几种类型:首页(包括栏目首页),列表页,内容页,评论页。 (1) **首页: **网站的首页, 一般含有多个栏目、图片、动画,以及若干文章标题链接。如: 网易首页。 (2) 列表页: 信息以列表的方式给出, 一般以表格的形式列出若干个条目, 经常含有分页功能。例如: 某论坛版面的文章标题列表。 (3) 内容页: 指含有正文内容的底层网页, 一般只含有不超过一篇的文章内容, 无评论或评论较少。如: 各类网站的含有具体某篇文章的底层网页。 (4) **评论页: **除了含有正文, 正文后面还跟有若干个评论,以论坛为代表。 在这几种类型之中,信息含量最大的当数内容页,它是我们平常摄取信息的主要来源。由于内容页的重要性,不同的Web站点为了加强内容页的展示,都会加入一些与内容相关或无关的信息块,如导航,广告等。虽然这些信息块在一定程度上有助于我们的延伸阅读,但很多情况下,我们只需要获取正文信息就可以了,其他信息块反倒成了一种干扰。如何从一个内容页面中,正确提取出正文信息,就成了一个研究课题。 在详述之前,先说一下正文提取的意义。以笔者的经历看来,应用包括但不限于以下几个方面。 (1) **采集,搜索。**信息采集很常见,互联网上超过30%的内容都是从其他Web站点采集而来。现在的采集系统或工具,大多是基于页面的正则来进行信息采集的,这样的优点是,对于需要采集的信息精确度很高,但是缺点也是很明显的,由于是基于页面的Html源码来采集,一旦源站点改版或调整,导致页面的Html源码改变,所有正则将全部作废。而正文提取技术,不是以Html源码格式为依据,所以Html源码的改变相对来说影响不大。 (2) **门户文章发布。**很多门户站点,并没有专门的记者团队,大部分文章都靠编辑在网上复制粘贴。如果能在发布界面加个功能,只需要输入网址,即可正确导入正文内容,并自动处理图片,想必是个不错的用户体验。 (3)**Wap浏览器。**Wap浏览由于受到流量及手机屏幕的限制,现在的Wap页面大部分以特出文字信息为主,但也不排除会有一些干扰信息块出现。作为用户,希望能只显示正文信息,特别是对于新闻及小说等页面。Wap浏览器如果可以将正文内容自动提取出来,应该是个不错功能。Android系统的迷人浏览器有个阅读模式,算是在这方面的一个探索。 正文提取技术的算法很多,本文是基于多特征的一种算法研究,根据信息块的特征进行判定。内容页又称为主题页,主题内容通常可以分解层次为: ①标题; ②发布时间; ③内容正文; ④相关文章或延伸性阅读。除了“内容正文”为必须元素外,其他几个元素都不一定会在内容页出现。根据对大量不同网页观察,各个元素的位置及表现形式虽无固定的标准,但是大部分却满足一定的特征。 一.标题块 分块节点:td,div,h,span 一般位于Head/Title的位置 当前单元含有<h1>-<h3>,<b>,<i>,<strong>等标签 样式,一般class包含title,head等字符 文字长度,一般大于3个字符,小于35个字符 二.发表时间块 分块节点:td,div, span 文字长度,一般小于50个字符 包含日期格式(2010-08-09)的字符串 包含以下关键字:来源,发表 三.主题块 分块节点:td,div HTML网页中有一些特殊标签,通常只出现在网页主题块中,如<P> <BR>等。因此,主题块中往往包含着特殊标签。 主题块内容含有较多的句子,因此具有较多逗号、句号等标点符号(>5)。 若从信息量角度考虑,主题块一般是含有较多文字信息。 主题块的 标签密度=1000*标签数/文字数 应在小于一个范围。 主题块的 文本密度=len(文本)/len(HTML代码) 较大 不应该包含 “上一篇”,“下一篇” 包含以下字符串的内容块,判定为包含版权信息,需减权:“ICP备04000001号”,“版权所有”,“Copyright” 主题块序号在标题块之下 主题块序号在发表时间块之下 主题块序号在相关链接块之上 四.相关链接块 分块节点:td,div 文字应为“相关链接”、“相关新闻”、“相关报道”等敏感词,且连接比例很高。 链接数小于20 实现: 根据以上信息块特征,采用特征提权算法,C#(3.5)编程实现,命名为QD正文提取组件。经测试,对Html格式规范的以文字为主的内容页,正确提取率在85%以上,各大门户的新闻页面在95%以上。 ...

November 11, 2010 · 1 min · 96 words · jabin

Lucene.Net入门基础

简单的例子 //索引 Private void Index() { IndexWriter writer = new IndexWriter(@"E:\Index", new StandardAnalyzer()); Document doc = new Document(); doc.Add(new Field("Text","哦耶,美丽的姑娘。", Field.Store.YES, Field.Index.TOKENIZED)); writer.AddDocument(doc); writer.Close(); } //搜索 Private void Search(string words) { IndexSearcher searcher = new IndexSearcher(@"E:\Index"); Query query = new QueryParser(“Text”, new StandardAnalyzer()).Parse(words); Hits hits = searcher.Search(query); for (int i = 0; i < hits.Length(); i++) System.Console.WriteLine(hits.Doc(i).GetField("Text").StringValue(); searcher.Close(); } 初识Lucene Lucene是什么 Lucene是一个高性能的、可扩展的信息检索工具包。它只是Java类库,并不是现成的应用程序。它提供简单易用却十分强大的API接口,基于它你可以快速的构建功能强大的搜索程序(搜索引擎?)。当前最新版2.9.2.1。 什么是索引 为了实现快速的搜索,Lucene会首先将需要处理的数据以一种称为倒排索引(Inverted Index)的数据结构进行存储。怎样理解倒排索引呢?简单的说,倒排索引并不是回答“这个文档中包含哪些单词?”这个问题,而是经过优化以后用来快速回答“哪些文档包含词XX?”这个问题。就像需要给书籍整理一份供快速查找的目录一样,Lucene也得为需要被搜索的数据整理优化出一份索引文件(Index file),而这个过程称之为“索引”(Indexing)。 Lucene的核心类 索引过程: IndexWriter Directory Analyzer Document Field 搜索过程: IndexSearcher Term Query TermQuery Hits 索引 索引过程的流程图 注:Lucene索引过程分为三个主要的操作阶段:将数据换转成文本、分析文本、并将分析过的文本保存到索引库中 基本的索引操作 添加索引 Document Field(理解Field的参数) 异构Document 追加域 增量索引 删除索引 软删除,仅添加了删除标记。调用 IndexWriter.Optimize() 后真正删除。 IndexReader reader = IndexReader.Open(directory); // 删除指定序号(DocId)的 Document。 reader.Delete(123); // 删除包含指定 Term 的 Document。 reader.Delete(new Term(FieldValue, "Hello")); // 恢复软删除。 reader.UndeleteAll(); reader.Close(); 更新索引 事实上,Lucene没有更新索引的方法 ...

June 13, 2010 · 4 min · 734 words · jabin

CentOS安装crontab及使用方法

安装crontab: [root@CentOS ~] yum install vixie-cron [root@CentOS ~] yum install crontabs 说明: vixie-cron软件包是cron的主程序; crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。 cron 是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务: /sbin/service crond start #启动服务 /sbin/service crond stop #关闭服务 /sbin/service crond restart #重启服务 /sbin/service crond reload #重新载入配置 查看crontab服务状态: service crond status 手动启动crontab服务: service crond start 查看crontab服务是否已设置为开机启动,执行命令: ntsysv 加入开机自动启动: chkconfig --level 35 crond on

June 5, 2010 · 1 min · 50 words · jabin

.Net下开发Windows Service

Windows服务能做些什么? Windows服务是这些后台程序、后台服务的正规名词。Windows服务的运行可以在没有用户干预的情况下,在后台运行,没有任何界面。通过Windows服务管理器进行管理。服务管理器也只能做些简单的操作:开始,暂停,继续,停止。Windows服务的特点:在后台运行,没有用户交互,可以随Windows启动而启动。 如何实现Windows服务? 下面按”隔一定时间做一些相同的事情”的服务为例,说明Windows服务如何实现。 **1.先按普通Windows程序设计好你的程序逻辑。 ** 建立一个空白解决方案WindowsService.sln 添加Windows类库项目ServiceBLL.csproj 将Class1.cs改名为AppBLL.cs 添加一个方法Dothings(),这个方法用来每隔一段时间调用一次,做些周期性的事情。 namespace ServiceBLL { public class AppBLL { public void Dothings() { //隔一段时间调用一次 LogHelper.WriteLog("test"); } } } **2.向解决方案添加一个WindowsService.csproj ** 将Service1.cs重命名为Service.cs 给WindowsService添加ServiceBLL项目引用 打开Service.cs代码视图,向Service类添加成员 ServiceBLL.AppBLL appBLL; 在构造函数里面对appBLL实例化 appBLL= new AppBLL (); 在using位置添加System.Theading using System.Threading; 给Service类添加计时器 Timer serviceTimer; 添加TimeCallback方法,用于计时器调用 public void TimerCallback(object obj) { //隔一段时间调用一次 appBLL.Dothings(); } 在OnStart()方法中添加方法,用于启动计时器 serviceTimer = new Timer(new TimerCallback(TimerCallback), state, 0, period); 此处,state用于保存状态,如果不需要,保存状态,可以传入null。第三个参数0表示立即调用TimerCallback方法,如果不需要立即调用,可以传入period。period是计时器的计时间隔,单位为毫秒。 重载 OnPause ()和OnContinue ()方法,对计时器进行控制。 Service.cs代码如下 using System.ServiceProcess; using System.Threading; using ServiceBLL; namespace WindowsService { public partial class Service : ServiceBase { private Timer serviceTimer; private AppBLL appBLL; private int period; private object state; public Service() { InitializeComponent(); appBLL = new AppBLL(); } protected override void OnStart(string[] args) { //启动timer period = 10*1000;//10秒,可从配置文件中获取 serviceTimer = new Timer(new TimerCallback(TimerCallback), state, 0, period); LogHelper.WriteLog("OnStart"); } protected override void OnStop() { //停止计时器 serviceTimer.Change(Timeout.Infinite, Timeout.Infinite); LogHelper.WriteLog("OnStop"); } protected override void OnContinue() { //重新开始计时 serviceTimer.Change(0, period); LogHelper.WriteLog("OnContinue"); } protected override void OnPause() { //停止计时器 serviceTimer.Change(Timeout.Infinite, Timeout.Infinite); LogHelper.WriteLog("OnPause"); } public void TimerCallback(object obj) { //隔一段时间调用一次 appBLL.Dothings(); } } } Program.cs代码如下 ...

February 28, 2010 · 2 min · 302 words · jabin