雷声大作,辗转反侧,难以入睡。四人的寝室,如今已只剩我和老乔了。四年,转眼而过。原以为毕业是离我很远的一件事,可它已经发生了。一些人,也许随着毕业后就再也见不到了吧。
四年大学,疫情占了两年,让本该欢声笑语,四处奔波的我们,囚禁在了小小的校园。
四年发生了好多好多事,我想一点一点地写下,可奈何自己的语言太过贫瘠,不足以记录这缤纷的生活。
在现有windows系统上加装Ubuntu
前言
自从买了mbp后,windows就被当成游戏机使用了。可由于毕设的内容关于FL,加上mbp的arm芯片好多库都不支持,很多应用实例都跑不了。但自己又不想折腾windows环境,(加上没钱购买高配服务器),于是决定在Windows笔记本上加装一个ubuntu系统。因为过程繁琐,加上遇到些坑,写篇文章记录一下。
jdk1.8源码读解(一)—— ArrayList
写在前面
看书、看博客永远是看别人替你总结的东西,想根本弄懂Java我觉得还是要看完Java的源码。jdk1.8是比较经典的一个Java版本,Oracle在该版本加入lambda表达式、新日期API和溢出hotspot永生代很多功能,因此选择该版本作为阅读版本。
为减少篇幅,并没有把所有代码全部粘贴至文中,但是会尽力介绍到每一个方法。
概要
我们从rt.jar包中最常用的数据结构类开始分析,rt全称runtime,是java的核心jar包。
ArrayList
底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapacity操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。它是线程不安全的,允许元素为null。
ArrayList
位于java.util
包下,先看一下它的关系图
ArrayList
继承自AbstractList
类,并且实现了RandomAccess
,Cloneable
,Serializable
和 List
接口,即支持随机访问,克隆,序列化。
如果深入查看,会发现RandomAccess
,Cloneable
,Serializable
这三个都是空接口,没有指定任何方法,这样的接口叫标识接口
,主要作用是为了标识,表明该类实现了哪些功能。这样做的好处是其他方法调用该类对象时,直接查看该类有实现某些接口来做些判断。
安全卫士项目的布防问题相关思考和解决方案
写在前面
前几天面试的时候,在介绍项目的布防问题时,被问得有点哑口无言,稀里糊涂搪塞了过去。一是忘了原有的方案失效的原因,二是对后改的方案依旧存在问题的心虚,所以就搪塞了过去。今天在复盘的时候想通了,因此想记录一下。
javap反编译命令详解
javap是jvm自带的一个工具,主要用于反编译Java的class文件,比idea自带的反编译更加细致(我没有仔细研究过idea的反编译设置,默认的idea反编译比较简洁,无法查看语法糖实现细节),可以查看生成的字节码。
java Native方法尝试
Native方法
Java Native方法简单来说就是java调用非java代码的接口。Native方法的实现是由非java语言
实现,比如c
,c++
。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在c++
中,你可以用extern "C"
告知c++编译器去调用一个C的函数。
“A native method is a Java method whose implementation is provided by non-java code.”
在定义一个native method时,并不提供实现体,我们以java.lang.Object
为例,其类中有很多native方法,如getClass
,hashCode
:
1 | public class Object { |
重学Java/Java小点整理(一)
写在前面
记得之前学习Java的时候完全是突击性的,因为要一个学期内掌握ssm框架,所以从下至下都学的不是很扎实,决定重新学习下Java。该博客是跟从JavaGuide学习的一些要点整理,并且对其讲得不太准确或容易产生误解的地方做些记录。本博文章节名与JavaGuide文章名对应。