- 博客(7)
- 收藏
- 关注
原创 c语言强制类型转化引发的问题
问题描述在最近计算机网络的实验中,构造IP数据报时使用了C语言的强制内存转化,最终的程序出现了一个bug:char* sendBuffer = (char*)malloc(37 * sizeof(char));((uint16_t*)sendBuffer)[1] = 37; //0x25sendBuffersendBuffer + 1sendBuffer + 2sendBuffer + 3程序本身期望使用((uint16_t*)sendBuffer)[1]将sendBuffe
2020-11-11 17:33:07 965
原创 深度剖析Java不可变容器(unmodifiable)
什么是不可变容器Java为用户提供了三种常用的容器:List,Set和Map,并提供了对容器的各种操作——添加元素,修改元素,删除元素等等。但这几种容器都是可变的(mutable),即容器中的内容是可以改变的。与可变容器相对的,就是不可变(immutable)容器,immutable意味着一个类的实例中的内容是不可变的,想要改变只能创建一个新的实例。为什么需要不可变容器可变性由于能够直接修改容器的内容,操作方便,效率也高,但却带来了很大的安全隐患——容器的内容可能在不经意间被改变,这种不经意的改变可
2020-07-10 16:57:43 970 1
原创 Java异常转译(exception translation)的使用
什么是异常转译(exception translation)在Java中,我们通常使用try-catch语句捕获异常,进行异常处理。但有些时候,我们使用try-catch捕获一个异常,但却不进行异常处理,反而是抛出另一个异常,这就称为异常转译。如下所示,try { Method(); //某个会抛出Exception1异常的函数} catch (Exception1 e) { throw new Exception2();}从上述代码我们很容易理解异常转译这个名字的内涵——将异常Except
2020-06-25 13:20:25 1308
原创 由于提前关闭Scanner对象引起的NoSuchElementException异常
最近实验过程中遇到了NoSuchElementException异常,查询各种资料并经过实践发现是由于提前关闭Scanner引起的异常。考虑如下代码:import java.util.Scanner;public class TestScanner { public static void test() { Scanner b = new Scanner(System.in); System.out.println("test:"); int
2020-05-15 14:31:29 266 1
原创 ||和&&的“短路”引发的问题
在软件构造的实验代码编写中遇到一个bug,排除后觉得此问题十分典型,记录如下。c,c++,java等语言的逻辑“与”运算符(&&)和逻辑“或”运算符(||)具有“短路”性质:如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了。(引用自《Java核心技术卷一基础知识第10版》中文版)考察如下情况:(若对Java语言不熟悉可跳过这个例子直接看文末的结论,对理解...
2020-03-25 00:16:15 825
原创 Git和Windows的大小写不敏感产生的问题
问题描述:在远程仓库中保存有文件p1,现希望将p1重命名为P1,直接在本地利用右键->重命名的方法进行修改,修改后无法进行提交,git bash 显示On branch master Your branch is up to date with ‘origin/master’. 查询资料后发现是由于Git默认大小写不敏感,键入如下命令将Git修改为大小写敏感git config core.i...
2020-03-11 01:38:31 419
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人