摘要: 相信很多小伙伴自己都会有一些包,我们可以将包发布中央仓库,然后直接通过maven来使用这些包,下面就整理下如何将包发到中央仓库。 新建项目 第一步,我们需要在sonatype上注册一个账号,这一步就不再演示了。 注册好账户之后,然后我们来创建项目。点击新建按钮,问题类型 选择 New Project 阅读全文
posted @ 2023-11-01 15:07 mingshan 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 经过对JDK动态代理实现原理的解析,我们会对动态代理的实现流程有个根本的认识,具体分析过程参考JDK动态代理实现原理这篇文章,这里就不多谈了。这篇文章主要思考如何去实现一个简易的动态代理,以便加深对其的理解。 模仿着JDK动态代理,我们需要一个代理Proxy类,一个InvocationHandler 阅读全文
posted @ 2023-11-01 15:05 mingshan 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 了解到CompletableFuture的基础用法之后,我们不禁好奇,以前的Future模式不支持如此好用的异步编程,CompletableFuture是如何做到的呢?这就需要我们去阅读源码了,通过源码我们才能了解到其设计思想和实现方式,我们分析下supplyAsync 和 thenApplyAsy 阅读全文
posted @ 2023-11-01 15:03 mingshan 阅读(22) 评论(0) 推荐(0) 编辑
摘要: ArrayQueue假溢出 我们在利用数组实现队列的时候,发现数组队列会出现假溢出问题,即队列还没有满,但不能再往队列中放入元素了,如下图所示: 在数据进行出队的时候,每一个元素出队,指向队列头元素的head就会向后移动,导致head之前的元素被“遗忘”了,无法再次利用,出队的代码如下: @Over 阅读全文
posted @ 2023-11-01 15:03 mingshan 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 在JDK 1.5之后Java提供了并发包(java.util.concurrent),加强对并发的支持。该包下的类大量使用 CAS(Compare and Swap)来实现原子操作、锁优化等。在java.util.concurrent.atomic包中,提供了对基本类型的原子封装,比如AtomicI 阅读全文
posted @ 2023-11-01 15:02 mingshan 阅读(6) 评论(0) 推荐(0) 编辑
摘要: Callable 在Java中我们知道创建一个线程可以继承Thread类或者实现Runnable接口,JDK1.5之后在java.util.concurrent提供了Callable接口,该接口设计类似Runnable接口,不过Callable接口可以返回任务执行的结果,并且在执行任务过程中可能会抛 阅读全文
posted @ 2023-11-01 15:00 mingshan 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 最近看到邓公讲利用栈来求解中缀表达式的课程,讲的十分清楚,由于课程是用c++写的代码,我这里用Java简单实现下。 中缀表达式是一个通用的算术或逻辑公式表示方法。我们平时做的四则运算将数字与运算符拼接起来就是中缀表达式。算法思想比较清晰明了,下面我列下算法过程: 首先创建两个栈,一个是操作符栈,用于 阅读全文
posted @ 2023-10-31 16:57 mingshan 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 用过Spring推出的Reactor框架的同学可能会感叹异步编程的便利,不过Reactor对于异步编程的初学者来说有点复杂了,看其源码也不是那么容易,那么JDK有没有对异步编程相关的支持呢?Future想必大家都很熟悉(不了解的同学请查看Callable&Future及FutureTask实现分析( 阅读全文
posted @ 2023-10-31 16:56 mingshan 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 二叉树定义 二叉树(Binary Tree)是n(n >= 0)个结点所构成的集合,它或为空树(n=0);或为非空树,对于非空树$T$: 有且仅有一个称之为根的结点 除根节点以外的其余结点分为两个互不相交的子集$T_1$和$T_2$,分别称为$T$的左子树和右子树,且$T_1$和$T_2$本身又是二 阅读全文
posted @ 2023-10-30 15:07 mingshan 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树),它具有以下特点: 若任一节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若任一节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 任意节点的左、右子树也分别为二叉查找树; 没有键值相等的节 阅读全文
posted @ 2023-10-30 15:07 mingshan 阅读(6) 评论(0) 推荐(0) 编辑