Ip合并

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

public class Fileinfo extends Object {
	private FileWriter writer;
	private BufferedWriter bw;

	private FileReader reader;
	private BufferedReader br;

	private FileReadCallback callbackfun;

	public Fileinfo() {
		super();
	}

	public Fileinfo(FileReadCallback callbackfun) {
		super();
		this.callbackfun = callbackfun;
	}

	public void setMyCallback(FileReadCallback callbackfun) {
		this.callbackfun = callbackfun;
	}

	public boolean deleteFile(String sPath) {
		boolean flag = false;
		File file = new File(sPath);
		// 路径为文件且不为空则进行删除
		if (file.isFile() && file.exists()) {
			file.delete();
			flag = true;
		}
		return flag;
	}

	public boolean IsFileExist(String sPath) {
		boolean flag = false;
		File file = new File(sPath);
		// 路径为文件且不为空则进行删除
		if (file.isFile() && file.exists()) {
			flag = true;
		}
		return flag;
	}

	public boolean CheckAndCreateFile(String filepath) throws IOException {
		boolean flag;
		File file = new File(filepath);
		if (!file.isFile()) {
			file.createNewFile();
		}
		return IsFileExist(filepath);
	}

	public void Writeindex(String filepath, String value) {
		try {
			if (writer == null) {
				CheckAndCreateFile(filepath);
				writer = new FileWriter(filepath, false);
			}
			if (bw == null)
				bw = new BufferedWriter(writer);

			writer = new FileWriter(filepath, false);
			bw = new BufferedWriter(writer);
			bw.write(value);

			bw.flush();
			bw.close();
			// System.gc();

		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public int Readlogindex(String filepath) {
		int result = 0;
		if (!IsFileExist(filepath)) {
			return result;
		}

		try {
			if (reader == null)
				reader = new FileReader(filepath);

			if (br == null)
				br = new BufferedReader(reader);

			try {
				String str = null;
				if ((str = br.readLine()) != null) {
					result = Integer.parseInt(str);
				}
			} finally {
				// reader.close();
				// br.close();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}

		return result;
	}

	public void Write(String filepath, boolean append, List<String> datalist) {
		try {
			if (writer == null) {
				CheckAndCreateFile(filepath);
				writer = new FileWriter(filepath, append);
			}
			if (bw == null)
				bw = new BufferedWriter(writer);

			for (String index : datalist) {
				bw.write(index);
				bw.newLine();
			}
			bw.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void Write(String filepath, boolean append, String value) {
		try {
			if (writer == null) {
				CheckAndCreateFile(filepath);
				writer = new FileWriter(filepath, true);
			}
			if (bw == null)
				bw = new BufferedWriter(writer);

			bw.write(value);
			bw.newLine();
			bw.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void Read(String filepath) {
		try {
			FileReader reader = new FileReader(filepath);
			BufferedReader br = new BufferedReader(reader);

			String str = null;
			while ((str = br.readLine()) != null) {
				if (callbackfun != null) {
					callbackfun.read(str);
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	protected void finalize() throws Throwable {
		super.finalize();
		System.out.println("finalize");

		if (writer != null)
			writer.close();

		if (bw != null)
			bw.close();

		if (reader != null)
			reader.close();

		if (br != null)
			br.close();
	}
}
import java.util.ArrayList;
import java.util.List;

import com.chexun.project.unit.*;

public class IpMerge implements FileReadCallback {
	 class  Ipdata {
		long start;
		long end;
		String area;

		public long getStart() {
			return start;
		}

		public void setStart(long start) {
			this.start = start;
		}

		public long getEnd() {
			return end;
		}

		public void setEnd(long end) {
			this.end = end;
		}

		public String getArea() {
			return area;
		}

		public void setArea(String area) {
			this.area = area;
		}

		public Ipdata(String str) {
			super();
			parse(str);
		}

		@Override
		public String toString() {
			return start + ", " + end + ", " + area;
		}

		private void parse(String str){
			String[] tmp = str.split(",");
			if (3 == tmp.length){
				start = Long.parseLong(tmp[0]);
				end = Long.parseLong(tmp[1]);
				area = tmp[2];
			}
		}
	}

	private final List<String> iplist = new ArrayList<String>();
	private Ipdata lastipdata;
	long sum;

	public void read(String str) {
		sum++;
		Ipdata ipdata = new Ipdata(str);
		if (lastipdata != null ){
			if(ipdata.area != null && ipdata.area.equals(lastipdata.area)){
				if (1 == (ipdata.start - lastipdata.end)) {
					lastipdata.setEnd(ipdata.end);
				}
			}
			else{
				iplist.add(lastipdata.toString());
				lastipdata = null;
			}
		}
		else
			lastipdata = ipdata;
	}

	private void run(){
		    String dir = System.getProperty("user.dir");
			String path = dir + "/resources/iptables.txt";
			String outpathpath = dir + "/resources/iptablesnew.txt";
			String path1 = "src/main/java/com.chexun.project.IpMerge/resources/iptables.txt";
			Fileinfo fileinfo = new Fileinfo(this);
			fileinfo.Read(path);
			fileinfo.Write(outpathpath, false, iplist);
			fileinfo =null;
			System.gc();
	}

	public static void main(String[] args) {
		IpMerge ipmerge = new IpMerge();
		ipmerge.run();
	}
}

  

  

public interface FileReadCallback {
    void read(String Str);
}

  

时间: 2025-01-07 13:09:24

Ip合并的相关文章

大数据技术之_19_Spark学习_02_Spark Core 应用解析+ RDD 概念 + RDD 编程 + 键值对 RDD + 数据读取与保存主要方式 + RDD 编程进阶 + Spark Core 实例练习

第1章 RDD 概念1.1 RDD 为什么会产生1.2 RDD 概述1.2.1 什么是 RDD1.2.2 RDD 的属性1.3 RDD 弹性1.4 RDD 特点1.4.1 分区1.4.2 只读1.4.3 依赖1.4.4 缓存1.4.5 CheckPoint第2章 RDD 编程2.1 RDD 编程模型2.2 RDD 创建2.2.1 由一个已经存在的 Scala 集合创建,即集合并行化(测试用)2.2.2 由外部存储系统的数据集创建(开发用)2.3 RDD 编程2.3.1 Transformatio

第5章 IP地址和子网划分(4)_超网合并网段

7. 超网合并网段 7.1 合并网段 (1)子网划分是将一个网络的主机位当网络位,来划分出多个子网.而多个网段合并成一个大网段,合并后的网段称为超网. (2)需求分析 某企业有一个网段,该网段有200台计算机,使用192.168.0.0/24网段,后来计算机数量增加到400台. (3)解决方案1:增加一个192.168.1.0/24网段,来扩展网络 ①从逻辑上看A和B计算要位于两个不同的网段,为了让这两个网段的计算机能通信,需在路由器的接口添加两个C类网段的地址作为两个网段的网关,如图中的R2.

如果重新设计网络,有没有可能合并IP地址跟MAC地址?

前阵子看网络基础相关的书籍,冒过一个疑问,为什么要有MAC地址跟IP地址?两者可否合二为一? 现在的逻辑是这样子:在数据传输过程中,路由器查看这个数据包的IP地址,跟路由表中记录的“IP集合:下一跳的mac地址”做对照,确定了要往那边扔:网卡在接收数据的时候,也会看看这个数据包中记录的目标MAC地址是不是自己,只接收自己的. MAC地址是数据链路层使用到的,IP地址是网络层使用到的.MAC地址是硬件的物理属性,在网卡上固定不变,IP地址是逻辑属性. 所以,因为网络分层的设计,很自然的就想到要使用

IP地址和子网划分学习笔记之《超网合并详解》

一.超网的概念 超网(Supernetting)是与子网类似的概念,IP地址根据子网掩码被分为独立的网络地址和主机地址.超网,也称无类别域间路由选择(CIDR),它是集合多个同类互联网地址的一种方法. 与子网划分(把大网络分成若干小网络)相反,它是把一些小网络组合成一个大网络,就是超网. 二.超网合并网段 1.合并网段 示例:某企业有一个网段,该网段有200台主机,使用192.168.0.0 255.255.255.0网段. 后来计算机数量增加到400台,为后来增加的200台主机使用192.16

如何合并IP网段

1. 安装IPy pip3 install IPy 2. 写脚本: [email protected]:~ $ cat combine_ip.pyfrom IPy import IPSet, IPimport sys def handler(file_name): ret = IPSet() for ip in open(file_name): ip = "%s/24"%(ip) ret.add(IP(ip, make_net = True)) for item in ret: pri

【IP分析】合并信号concat,拆分总线slice

一般都是把几个零散的中断信号合并成bus,连到系统中断总线上. 比如出个GPIO[31:0]来控制bram的几个控制信号,分配如下: GPIO[24] - clk  (可以直接指定[24]这一根线出来) GPIO[16] - en GPIO[8]  - rst GPIO[3:0] - web[3:0] //

利用python合并两个文件

1格式如下 在做利用zabbix的api来批量添加主机的时候,需要处理ip和hostname,在借用别人写的py程序的基础上,自己有改装了以下脚本,为自己使用.需要时ip和hostname为一个统一格式. $ cat ip.txt 1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 $ cat hostname.txt tx-1 tx-2 tx-3 tx-4 最后需要合并为如下格式 1 tx-1,1.1.1.1 2 tx-2,2.2.2.2 3 tx-3,3.3.3.3 4 tx-4

了解IP子网划分的那些事

了解或者不了解,IP的分类就在哪里.知道或者不知道IP的子网掩码就在哪里不离不弃.懂或者不懂,主机位依然爱着子网位.卖卖文采见笑了,呵呵--.. IP的分类分为A.B.C.D.E等类型,想知道他们都是那些哪就继续往下看看我慢慢给你把我知道的描述给你.一个IP有两部分组成一部分是网络位(Network)一部分是主机位(HOST),最常用的有A.B.C三个类型,A类组成NETWORK HOST HOST HOST B类NETWORK NETWORK HOSTHOST C类NETWORK NETWOR

算法导论学习之插入排序+合并排序

最近准备花时间把算法导论详细的看一遍,强化一下算法和数据结构的基础,将一些总结性的东西写到博客上去. 一.插入排序 算法思想:如果一个数组A,从A[1–n-1]都是有序的,然后我们将A[n]插入到A[1–n-1]的某个合适的位置上去那么就可以保证A[1–n]都是有序的.这就是插入排序的思想:具体实现的时候我们将数组的第一个元素看出有序,然后从第二个元素开始按照上面的步骤进行插入操作,直到插入最后一个元素,然后整个数组都是有序的了. 时间复杂度分析:代码中有两重for循环,很容易看出时间复杂度是n