自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (2)
  • 收藏
  • 关注

原创 Linux 文件权限

Linux下一切皆文件,Linux中所有内容都是以文件的形式保存和管理的,因此了解文件系统是学习Linux十分重要的一步。而Linux是一个多用户操作系统,多用户操作系统就会涉及到每个用户所拥有的权限,文章简单的介绍了Linux文件权限相关的知识。

2022-05-25 12:40:15 314

原创 Java垃圾收集机制

主要介绍了可达性分析算法、分代收集理论、三种垃圾收集算法以及常见的垃圾收集器。

2022-03-10 17:31:16 818

原创 Redis

简单的介绍了Redis

2022-01-02 14:22:56 798

原创 Idea基于Git&Gitee实现项目的同步开发

分布式版本控制系统(Git)是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。gitee.com(码云) 是 OSCHINA.NET 推出的代码托管平台,支持 Git 和 SVN,提供免费的私有仓库托管。两者相互配合,可以带给我们一个良好的协作开发的体验(受限于GitHub的访问速度,在国内可以选择将项目托管在Gitee上)。

2021-11-06 18:56:27 3674

原创 查找树(四):B-树和B+树

1. 磁盘I/O问题众所周知,相较于计算机指令的执行速度,访问磁盘所带来的开销是十分巨大的。对于一段需要访问磁盘的程序,程序运行的时间几乎都花费再了磁盘的I/O上。 也就是说,在这种情况下,如果我们可以将磁盘的访问次数减少一般,那么程序的运行时间也将减半。当数据量较少,可以完全存储在内存时,数据的访问相对来说是比较快的,类似AVL树、红黑树等数据结构可以将操作数据的时间复杂度控制在O(log2N)。当数据量很大时,无法将其存储在内存当中,只能退而求其次,存储在磁盘中;由于磁盘I/O速度的限制,此时大O模

2021-09-11 19:14:26 416 2

原创 查找树(三):红黑树(red black tree)

目录:1. 红黑树(red black tree)2. 插入操作2.1 情况32.2 情况42.2.1 单旋转2.2.2 双旋转3. 删除操作3.1 情况1(X是黑色,X的兄弟是红色)3.2 情况2(X是黑色,X的兄弟是黑色)3.2.1 X的父节点为红色3.2.2 X的父节点为黑色1. 红黑树(red black tree)关于自平衡的二叉查找树,AVL树是比较经典的一种,前面也对其实现原理做了比较详细的介绍。当然,相关的数据结构肯定不止这一种,历史上AVL树流行的另一种变种是红黑树。红黑树通过给节

2021-09-02 22:25:03 595

原创 查找树(二):AVL树

目录:1. AVL树2. 插入操作2.1 单旋转2.2 双旋转2.3 整棵树都平衡了吗?3. 删除操作1. AVL树从前面的探讨已经可以知道,普通的二分查找树的查找操作并不能实现O(log2n)的时间复杂度,因此需要为它添加平衡条件。这包含两个层面的意思:添加了平衡条件后,树的深度必须是O(log2(N)),毕竟这就是我们添加平衡条件的初衷;平衡条件必须要容易保持。举个例子,说起平衡条件,最容易想到的就是让每个节点的的左右子树的高度都保持一致,虽然这种平衡条件保证了树的深度,但它“太严格了”,因而

2021-08-30 22:15:37 762

原创 查找树(一):初探二叉查找树

1. 二分查找树(Binary search tree)查找是编写程序过程中最常用的操作之一,为此,出现了许多专门针对查找的数据结构与算法,旨在更加快速的定位指定元素的位置。说起查找算法,大家想必都会联想到二分查找;作为一种常见的查找算法,对于一组有序的元素,二分查找首先定位序列最中心的元素,然后将中心元素与目标值做比较,以确定目标值出现在“左半部分”或“右半部分”。根据二分查找的流程可以知道,每次比较都可以将查找范围缩小一半,因此它的时间复杂的可以达到O(log2n) 。二分查找可以说是在算法层面上,

2021-08-29 20:15:56 353

原创 Java多线程(四):线程安全问题

当多线程操作同一数据字段时,会存在数据的安全性问题。简单的来说,就是再某一个线程正在操作某一数据的时候,另一线程也同时操作了这个数据,最终造成的结果是数据并没有变为预期的结果。针对线程安全,Java提供了synchronized和Lock机制,同时还设计了许多高性能的线程安全的容器,以帮助开发者更好的完成自己所需的功能。

2021-07-03 19:50:39 321

原创 Java内存模型(JMM)

《Java虚拟机规范》中定义了一种Java内存模型来屏蔽各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。Java内存模型的主要目的是定义程序中各种变量的访问规则,即关注在虚拟机中把变量值存储到内存和从内存中取出变量值这样的底层细节。

2021-06-24 13:55:58 168

原创 Java多线程(三):线程组与线程池

线程池是Java并发编程最重要的工具之一,本文详细介绍了线程池的使用方法,并简单的提及了其内部的实现原理。

2021-06-05 22:48:23 473

原创 Java多线程(二):线程优先级与守护线程

介绍了Java线程的优先级与守护线程。虽然它们的使用频率并不是很高,但还是需要对其有所了解。

2021-06-05 22:12:44 191 1

原创 Java多线程(一):线程(Thread)的使用

介绍了线程的简单使用,主要包括线程的生命周期、创建、中止、线程间通讯、线程等待和谦让。

2021-05-30 14:40:30 563

原创 Java的Class对象与反射(Reflection)机制

Java的反射是一个强大的工具,它可以让Java具备一定的动态特性,使得Java可以对运行时的数据进行一些操作。反射的应用十分广泛,例如Java的动态代理、注解等,均使用了反射机制。

2021-05-21 11:07:12 390

原创 Java 注解(Annotation)

在Java代码中,我们经常会在代码中看见以@开头的注解。特别是在一些基于框架的开发中,如SSM、Spring Boot等,注解是开发过程中必不可少的一项工具。那么注解是如何定义的呢?本文将对注解进行简要的介绍。

2021-05-20 23:22:18 119

原创 JVM之类加载器与双亲委派模型

简单的介绍了类加载器与双亲委派模型的相关知识。

2021-05-09 21:18:12 126

原创 代理模式(Java代码举例)

简单的说,代理模式就是给某一个对象提供一个代理,并由代理对象控制对原对象的引用。使用代理模式,可以将安全、事务和日志等关注点与核心业务逻辑相分离,让业务代码可以专注于核心业务的实现。代理模式进一步降低了各模块之间的耦合,同时,它可以把遍布应用各处的关注点(如日志)分离出来形成可重用的组件,并对其进行更好的管理。

2021-05-01 17:30:28 942 1

原创 Spring:基于XML装配bean

详细介绍了通过xml装配bean的过程,介绍了xml中各种标签的使用方式。

2021-04-17 17:18:29 2311 1

原创 在IDEA中实现第一个Spring程序——HelloSpring

在IDEA中实现了HelloSpring程序。

2021-04-11 16:47:29 619

原创 volatile变量对所有线程可见,所以它是线程安全的吗?

volatile 的英文解释是“易变的、不稳定的”,这很贴近关键字 volatile 的语义——正因为它是易变的,因此要“对所有线程可见”。虽然关键字 volatile 定义的变量对所有线程可见,但这能够确保它就是线程安全的吗?答案很明显是否定的——volatile 并不能保证线程安全。

2021-04-05 13:21:31 1078 1

原创 理解 t != (t = tail)

从字节码的角度分析了 t != (t = tail) 的流程。

2021-03-17 16:35:01 855

原创 常用排序算法总结

本文总结了常见的排序算法,主要包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序。

2021-03-13 20:28:12 75

原创 理解Java的运行时数据区

在编写Java代码时,总是免不了使用各种对象、方法、类... 在这个过程中,其实我们已经隐式的在和内存打交道了。虽然Java虚拟机有自动内存管理机制,但如果不去理解Java虚拟机的内存模型、了解其所管理的内存区域的划分方式,一旦出现内存泄漏和溢出方面的问题就会变得非常棘手。

2021-03-05 14:05:25 123

原创 从 JVM 的视角看 Java 之方法调用(二):分派(涉及 Java 中的重载与重写)

对于在解析阶段中可以确定唯一调用版本的方法,Java虚拟机会在类加载的时候就把符号引用解析为该方法的直接引用。而对于那些只有当程序执行到时才能确定调用版本的方法,就需要利用分派机制来实现。这种动态调用的机制,是Java多态性特征的一些最基本的体现。

2021-01-24 21:36:46 128 1

原创 从 JVM 的视角看 Java 之方法调用(一):解析

在程序运行时,进行方法调用是最普遍、最频繁的操作之一,Class文件的编译过程中不包含传统程序语言编译的连接步骤。因此,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址。这个特性给Java带来了更强大的动态扩展能力,但也使得Java方法调用过程变得相对复杂。对于在解析阶段中可以确定唯一调用版本的方法,Java虚拟机会在类加载的时候就把符号引用解析为该方法的直接引用。

2021-01-18 16:47:10 160

原创 树(一种分支结构的数据组织方式)

作为一种抽象数据类型,树可以用来对一组元素进行层次化的组织,是一种常见的数据结构。本文在介绍了树这一基本概念之后,将主要介绍应用较为广泛的二叉树结构,并详细说明二叉树的四种遍历方式——前序遍历、中序遍历、后序遍历、层次遍历。对于更加复杂的树(如红黑树等),将在其它文章中进行介绍。

2021-01-10 22:08:00 1134

原创 向量与列表(一种线性的数据结构)

向量(Vector)与列表(List)是两种典型的序列(Sequence),它的应用十分的广泛。熟悉 Java 的人一定都知道 ArrayList,它就是向量的一种具体实现。可以说,向量和列表在日常开发中占据了重要的地位,因此有必要深入的了解此数据结构。

2020-12-30 18:46:56 1863

原创 Java泛型(四):类型变量的限定、通配符类型

Java的泛型除了可以直接使用类型变量(如T等),如果有需要的话,我们还可以对其进行一定的限制,如规定某类型变量必须是“扩展”了某个类或者方法的。借助类型绑定和通配符我们就可以对类型变量进行限定。

2020-12-26 14:43:14 3667 1

原创 Java泛型(三):类型擦除带来的约束与局限性

上帝给你打开了一扇门,肯定会给你关上另外一扇窗,没有哪种方法是十全十美的。类型擦除机制虽然很好的解决了 JVM 没有泛型类型对象的问题,但同时也引出了一些新的问题。本文将针对这些问题进行详细的讲解。

2020-12-20 17:37:31 462

原创 Java泛型(二):泛型和虚拟机(类型擦除)

虚拟机没有泛型类型,那么泛型在虚拟机里的怎么进行表示的呢?本文将围绕此问题进行讲解,主要介绍了类型擦除、泛型表达式的翻译和桥方法。

2020-12-13 21:02:12 483

原创 Java泛型(一):基础知识

介绍了泛型的一些基础知识,包括如何使用泛型,如何定义自己的泛型类、泛型接口和泛型方法。同时引入了类型变量的概念。

2020-12-12 13:02:38 142

原创 Tomcat 正确安装并启动后,浏览器访问localhost:8080显示404

Tomcat 正确安装并启动后,浏览器访问localhost:8080显示404,可能是由于8080端口被占用导致的,可以通过修改默认端口的方法解决此问题。

2020-12-09 21:01:19 62447 19

原创 JDK1.8 —— lambda 表达式(以一种更优雅的方式编写Java代码)

JDK 1.8 之后引入了 lambda 表达式,lambda 的出现使得 Java 可以用一种更优雅的方式,代替一部分原本需要利用匿名内部类完成的代码。

2020-12-03 22:03:19 431

原创 Java内部类(一般内部类、局部内部类、匿名内部类、静态内部类)

内部类、局部内部类、匿名内部类、静态内部类

2020-11-28 23:26:38 222

原创 Java实现简单的本地QQ聊天系统

利用Java编写的一个简单的群聊程序,模仿QQ群聊,利用本地通讯,实现了简单的群聊功能。

2020-11-23 13:25:27 2121 10

原创 队列(一种遵循先进先出原则的数据结构)

与日常生活中的排队相类似,队列是一种遵循先进先出原则的数据结构。本文主要介绍了队列的定义、利用数组实现队列、利用链表实现队列等内容。

2020-11-21 12:02:48 4397

原创 栈(也被称作堆栈,一种遵循先进后出原则的数据结构)

栈是一种遵循先进后出原则的数据结构,在实际开发中有着广泛的应用(例如Java虚拟机中的操作数栈)。本文主要介绍了栈的定义、利用数组实现栈、利用链表实现栈等内容。

2020-11-18 21:59:03 5159

原创 Java接口(“完全抽象”的类——只规定功能,不负责实现)

1. 从抽象类到接口2. 接口(interface)3. 默认(default)方法

2020-11-11 20:33:27 539

原创 Java文档注释(利用javadoc生成HTML文档)

介绍了如何利用javadoc生成文档,具体包括:1. 类注释2. 方法注释3. 域注释4. 通用注释5. 包域概述注释6. 注释的抽取

2020-11-07 14:45:30 2729

原创 Java的抽象类与抽象方法

介绍了Java的抽象类

2020-11-04 22:23:05 143

Java实现简单的QQ群聊系统

利用Java实现的一个简单的群聊程序,模仿群聊,通过本地通讯,实现了简单的群聊功能,目的是为了熟悉Java的Socket、线程、输入/输出流、Swing以及利用javadoc生成HTML文档。练习时候写的,所以功能和界面都比较简单。

2021-01-19

Windows(64位)环境下的HSDIS.zip

解压后将 hsdis-amd64.dll 文件放入 JDK_HOME/jre/bin/server目录(JDK 9以下)或 JDK_HOME/lib/amd64/server(JDK 9或以上)中即可。 如无法正常使用,可以尝试将 hsdis-amd64.dll 文件放入 C:\Program Files\Java\jre1.8.0_271\bin\server 文件夹中。

2020-12-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除