摘要:
前言 Java中空指针异常(NPE)一直是令开发者头疼的问题。Java 8引入了一个新的Optional类,使用该类可以尽可能地防止出现空指针异常。 Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。Option 阅读全文
摘要:
前言 在使用Iterator遍历容器类的过程中,如果对容器的内容进行增加和删除,就会出现ConcurrentModificationException异常。该异常的分析和解决方案详见博文《Java ConcurrentModificationException 异常分析与解决方案》和《解决Array 阅读全文
摘要:
前言 本文总结了作者在Java代码检视中遇到的一些关于日志打印的问题,并给出修改建议。因能力有限,难免存在错漏,欢迎指正。 一. 不规范的异常打印 使用slf4j日志组件时,logger.error(与log.warn)接受Throwable参数,以打印异常名和详细的堆栈信息(可能内部调用e.pri 阅读全文
摘要:
[案例1】 【点评】 应在JudgeNode类里定义equals()方法(估计刚从面向过程语言"转行"过来...)。 【案例2】 【点评】 可简化为return new String[]{linkStatus.get(AC), getLinkMsg()}; 【案例3】 【点评】 1. instanc 阅读全文
摘要:
JDK 1.8(Java 8)里新增String.join()方法用于字符串连接。本文基于《Java实现String.join()和效率比较》一文,分析和比较四种自定义实现与String.join()方法的效率,并纠正原文的一些错误。 代码示例如下: 选取三次运行输出结果如下: 可见,join4() 阅读全文
摘要:
【背景】 平台A和平台B进行网络通信,通信接口以C语言结构体形式定义,存于名如interface_plata_platb.h的头文件内。正常情况下,平台A和平台B分别存储一份接口文件,其内容应该完全相同。由于同名的接口文件分两处存储,变更时很容易出现不同步的问题(例如两个平台分别A使用变更前后的接口 阅读全文
摘要:
【题目】 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。 处理: 1、 记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加; 2、 超过16个字符的文件名称,只记录文件的最后有效16个字符; 3、 输入的文件可能带路径,记录 阅读全文
摘要:
【编程小练习】字符串大写字母转小写 题目很基础。既然是基础编程题,就尽量不要调用库函数,如tolower()。 以下给出作者的解法(思路详见注释): 运行效果如下: 熟悉表驱动法编程的读者很容易看出, 其实是张预置的字符转换表。更进一步,可理解为一种"模式"。基于这一思想,提取该表作为函数入参,由调 阅读全文
摘要:
Python实现代码统计工具——终极加速篇 声明 本文对于先前系列文章中实现的C/Python代码统计工具(CPLineCounter),通过C扩展接口重写核心算法加以优化,并与网上常见的统计工具做对比。实测表明,CPLineCounter在统计精度和性能方面均优于其他同类统计工具。以千万行代码为例 阅读全文
摘要:
大整数加减运算的C语言实现 标签: 大整数加减 C [TOC] 一. 问题提出 培训老师给出一个题目:用C语言实现一个大整数计算器。初步要求支持大整数的加、减运算,例如 或`1000000000000 999999999999=1`。 C语言中,整型变量所能存储的最宽数据为0xFFFF FFFF,对 阅读全文