desperadoccy的小窝


  • 首页

  • 归档

  • 关于

  • 标签

  • 分类

  • 友链

  • 搜索

大学的四年

发表于 2022-06-24

雷声大作,辗转反侧,难以入睡。四人的寝室,如今已只剩我和老乔了。四年,转眼而过。原以为毕业是离我很远的一件事,可它已经发生了。一些人,也许随着毕业后就再也见不到了吧。
四年大学,疫情占了两年,让本该欢声笑语,四处奔波的我们,囚禁在了小小的校园。
四年发生了好多好多事,我想一点一点地写下,可奈何自己的语言太过贫瘠,不足以记录这缤纷的生活。

在现有windows系统上加装Ubuntu

发表于 2022-03-24

前言

自从买了mbp后,windows就被当成游戏机使用了。可由于毕设的内容关于FL,加上mbp的arm芯片好多库都不支持,很多应用实例都跑不了。但自己又不想折腾windows环境,(加上没钱购买高配服务器),于是决定在Windows笔记本上加装一个ubuntu系统。因为过程繁琐,加上遇到些坑,写篇文章记录一下。

阅读全文 »

jdk1.8源码读解(三)—— HashMap

发表于 2021-03-28 | 分类于 Java , 源码解读

jdk1.8源码读解(二)—— ArrayList的内部类

发表于 2021-03-27 | 分类于 Java , 源码解读

jdk1.8源码读解(一)—— ArrayList

发表于 2021-03-22 | 分类于 Java , 源码解读

写在前面

看书、看博客永远是看别人替你总结的东西,想根本弄懂Java我觉得还是要看完Java的源码。jdk1.8是比较经典的一个Java版本,Oracle在该版本加入lambda表达式、新日期API和溢出hotspot永生代很多功能,因此选择该版本作为阅读版本。

为减少篇幅,并没有把所有代码全部粘贴至文中,但是会尽力介绍到每一个方法。

概要

我们从rt.jar包中最常用的数据结构类开始分析,rt全称runtime,是java的核心jar包。

ArrayList底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapacity操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。它是线程不安全的,允许元素为null。

ArrayList位于java.util包下,先看一下它的关系图

test

ArrayList继承自AbstractList类,并且实现了RandomAccess,Cloneable,Serializable 和 List接口,即支持随机访问,克隆,序列化。
如果深入查看,会发现RandomAccess,Cloneable,Serializable这三个都是空接口,没有指定任何方法,这样的接口叫标识接口,主要作用是为了标识,表明该类实现了哪些功能。这样做的好处是其他方法调用该类对象时,直接查看该类有实现某些接口来做些判断。

阅读全文 »

安全卫士项目的布防问题相关思考和解决方案

发表于 2021-03-17 | 分类于 Java

写在前面

前几天面试的时候,在介绍项目的布防问题时,被问得有点哑口无言,稀里糊涂搪塞了过去。一是忘了原有的方案失效的原因,二是对后改的方案依旧存在问题的心虚,所以就搪塞了过去。今天在复盘的时候想通了,因此想记录一下。

阅读全文 »

java Enum语法糖

发表于 2021-02-12

写在前面

一直对Enum的实现原理有困惑,所以最近专门去查了查,了解到了Java的12个语法糖,决定依次学习记录一下。

阅读全文 »

javap反编译命令详解

发表于 2021-02-11 | 分类于 Java

javap是jvm自带的一个工具,主要用于反编译Java的class文件,比idea自带的反编译更加细致(我没有仔细研究过idea的反编译设置,默认的idea反编译比较简洁,无法查看语法糖实现细节),可以查看生成的字节码。

阅读全文 »

java Native方法尝试

发表于 2021-02-05 | 分类于 Java

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class Object {
private static native void registerNatives();
static {
registerNatives();
}
public final native Class<?> getClass();
public native int hashCode();
public boolean equals(Object obj) {
return (this == obj);
}
protected native Object clone() throws CloneNotSupportedException;
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
public final native void notify();
public final native void notifyAll();
public final native void wait(long timeout) throws InterruptedException;
public final void wait(long timeout, int nanos) throws InterruptedException {
if (timeout < 0) {
throw new IllegalArgumentException("timeout value is negative");
}

if (nanos < 0 || nanos > 999999) {
throw new IllegalArgumentException(
"nanosecond timeout value out of range");
}

if (nanos > 0) {
timeout++;
}

wait(timeout);
}
public final void wait() throws InterruptedException {
wait(0);
}
protected void finalize() throws Throwable { }
}
阅读全文 »

重学Java/Java小点整理(一)

发表于 2021-02-01 | 分类于 Java

写在前面

记得之前学习Java的时候完全是突击性的,因为要一个学期内掌握ssm框架,所以从下至下都学的不是很扎实,决定重新学习下Java。该博客是跟从JavaGuide学习的一些要点整理,并且对其讲得不太准确或容易产生误解的地方做些记录。本博文章节名与JavaGuide文章名对应。

阅读全文 »
12…8
desperadoccy

desperadoccy

desperado个人博客,一个瞎学的软工狗。

72 日志
26 分类
36 标签
RSS
GitHub E-Mail
© 2019 — 2022 desperadoccy
访问人数 人 总访问量 次