计网基础三-IP地址介绍

三、IP地址介绍

3.1IP地址作用与结构

​ 任何互联网设备都拥有一个在网络中唯一的IP地址。IP地址的长度是4个字节,由网络位和主机位组成,其中网络位和主机位的长度是由掩码决定的,而掩码的长度也是4个字节。在IP地址中,与掩码中的1对应的为,称之为网络位;与掩码中的0对应的位,称之为主机位。

例如:IP地址为10.10.10.1,掩码为255.0.0.0的网络位是10,主机位是10.10.1.

3.2IP地址分类

​ IP地址的划分主要根据IP四个字节的一个字节进行划分

A类地址:0000 0000 至 0111 1111 (0~127)

B类地址:1000 0000 至 1011 1111 (128~191)

C类地址:1100 0000 至 1101 1111 (192~223)

D类地址:1110 0000 至 1110 1111 (224~239)

E类地址:1111 0000 至 1111 0111 (240~255)

在这里插入图片描述

由上图可以看出A、B、C类IP地址有其默认的网络位(Network),即这三类IP地址有默认的掩码

A类:225.0.0.0

B类:255.255.0.0

C类:255.255.255.0

D和E类,不使用掩码

3.3公有IP地址和私有IP地址

​ 由于IP地址的长度只有4个字节,而现在的计算机数量非常庞大,会存在IP地址不足的情况,于是引出了公有IP地址和私有IP地址。

公有IP地址:可以在Internet上使用,可以实现上网;

私有IP地址:只能在企业或者家庭网络内部使用,无法上网。

3.4特殊IP地址

网络地址

表示的是一个网络范围,仅仅表示一个区域,不代表任何一个主机/设备

主机位全为0的IP地址

例如:192.168.1.0 225.255.255.0是网络地址

广播地址

表示的是一个网络范围内的所有主机/设备

主机位全为1的IP地址

例如:192.168.1.255是广播地址

可用IP地址

任何一个网段内,除了网络地址和广播地址,都是可用的IP地址,即可以配置在主机/设备上的IP地址,此时可以在网络中的唯一标识一个主机/设备。

例如:192.168.1.1是可用的IP地址

回环地址

127.0.0.0~127.255.255.255,称之为回环地址。表示的是设备自身,通常实验的回环地址是127.0.0.1

通常可以通过ping自身的IP地址判断网卡是否正常ping 127.0.0.1

其他特殊地址

  • 全1的IP地址,即255.255.255.255.255,表示一个网段内的所有主机/设备

  • 全0的IP地址,即0.0.0.0,表示所有的网段

<think>嗯,用户问的是关于EasyExcel自定义合并的问题。首先,我需要回忆一下EasyExcel是什么,它是阿里巴巴开源的用来处理Excel读写的一个Java库。自定义合并应该是在处理Excel的时候,用户可能需要根据特定的规则合并单元格,而默认的合并策略可能不满足需求,所以需要自己实现合并策略。 接下来,我得确认用户的需求。他们可能在使用EasyExcel导出数据时,遇到了需要合并某些行或列的情况,但默认的合并策略比如根据相同内容合并可能不够灵活,需要自定义逻辑。比如,可能需要根据某一列的值相同并且另一列的条件满足时才合并,或者按照某种业务规则进行合并。 然后,我应该考虑如何回答这个问题。首先介绍EasyExcel的基本合并功能,然后引出为什么需要自定义合并策略。接着,分步骤说明如何实现自定义合并,可能包括继承AbstractMergeStrategy类,重写merge方法,然后在写Excel的时候指定这个策略。需要给出一个具体的例子,比如合并同一部门的单元格,或者按照特定规则合并行。 还要注意可能的常见问题,比如合并策略的性能问题,因为合并单元格可能会影响导出速度,特别是数据量大时。另外,需要提醒用户合并逻辑的复杂性,确保合并的起始行和列以及合并的范围正确,避免出现错误或者不符合预期的合并结果。 另外,可能需要提到EasyExcel的官方文档或社区资源,方便用户进一步查阅。同时,示例代码的正确性也很重要,确保代码片段能够直接运行或者稍作修改即可使用,避免语法错误。 用户可能是开发者,对Java和EasyExcel有一定了解,但可能不熟悉如何扩展其功能。因此,回答需要详细但不过于冗长,重点放在步骤和示例上,帮助他们快速上手。同时,考虑他们可能遇到的困难,比如如何确定合并的区域,或者如何处理动态的合并条件,可能需要进一步解释或提供解决思路。 最后,总结一下自定义合并的应用场景和好处,让用户明白在什么情况下需要使用自定义合并,以及它能带来什么样的便利。这样用户可以根据自己的实际需求决定是否采用这种方法。</think>EasyExcel 是阿里巴巴开源的一款基于 Java 的 Excel 读写工具,以简单易用和高性能著称。**自定义合并**是其提供的一种扩展功能,允许开发者根据业务需求灵活控制 Excel 单元格的合并规则,比如按特定字段分组、跨行跨列合并等。 --- ### **为什么需要自定义合并?** 默认情况下,EasyExcel 支持根据重复内容自动合并(如 `@ContentLoopMerge` 注解),但实际业务中可能需要更复杂的合并逻辑,例如: - 合并同一部门的行数据 - 按时间周期(如周/月)合并统结果 - 动态跨多列合并(如主从表结构) 此时就需要通过 **自定义合并策略** 来实现。 --- ### **如何实现自定义合并?** 核心步骤是继承 `AbstractMergeStrategy` 类,重写 `merge()` 方法,通过 `Sheet` 和 `Cell` 对象控制合并范围。 #### **示例代码:合并相同部门的单元格** 假设需要将“部门”列中相同值的行合并: ```java public class DepartmentMergeStrategy extends AbstractMergeStrategy { private Map<String, List<Integer>> departmentRowMap = new HashMap<>(); @Override protected void merge(Sheet sheet, Cell cell, Head head, Integer relativeRowIndex) { // 获取当前行的部门值(假设部门在第2列,索引为1) String department = cell.getSheet().getRow(cell.getRowIndex()).getCell(1).getStringCellValue(); // 记录部门对应的行号 departmentRowMap.computeIfAbsent(department, k -> new ArrayList<>()).add(cell.getRowIndex()); } @Override public void afterSheetCreated(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) { Sheet sheet = writeSheetHolder.getSheet(); // 遍历部门-行号映射,合并相同部门 departmentRowMap.forEach((dept, rows) -> { if (rows.size() > 1) { // 合并从起始行到结束行的第2列(索引1) CellRangeAddress range = new CellRangeAddress(rows.get(0), rows.get(rows.size()-1), 1, 1); sheet.addMergedRegion(range); } }); } } ``` #### **使用自定义合并策略** 在写入 Excel 时指定策略: ```java EasyExcel.write("output.xlsx", Employee.class) .registerWriteHandler(new DepartmentMergeStrategy()) .sheet("员工表") .doWrite(dataList); ``` --- ### **关键点说明** 1. **合并范围控制** 通过 `CellRangeAddress` 定义合并的起始行、结束行、起始列、结束列。例如:`new CellRangeAddress(startRow, endRow, startCol, endCol)`。 2. **性能优化** - 避免在 `merge()` 中频繁操作 Sheet,建议在 `afterSheetCreated` 中统一处理。 - 大数据量时注意内存占用,可采用分批处理。 3. **动态条件合并** 可根据业务需求在 `merge()` 中实现复杂逻辑,例如: ```java if (cellValue.startsWith("Total_")) { // 合并所有以 Total_ 开头的汇总行 // 自定义合并逻辑 } ``` --- ### **常见应用场景** 1. **主从表结构** 合并主表字段,展开子表明细。 2. **报表统** 按日期、分类合并汇总行。 3. **动态标题** 跨多列合并生成复杂表头。 通过自定义合并策略,可以轻松实现 Excel 的复杂布局需求,同时保持代码的可维护性。具体实现时建议结合业务数据结构和合并规则灵活调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值