自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 【Soot学习日志 原创】

soot,pack, phase

2023-11-19 17:51:32 68

原创 通过Java编写一个服务器理解动态Web,静态Web

静态Web说到Servlet自然就要说到Web,Web分为静态Web和动态Web,之前我一直都傻傻分不清两者的区别,直到用JAVA编写了一个服务器后才明白二者的区别,所谓静态Web,实际上就是指,客户端要请求的资源文件,服务器已经提前把它放在了文件系统(磁盘)上,看下面用Java实现的一个静态Web服务器public class HTTPService { private static HashMap<String,Servlet> servletCache = new HashMa

2021-06-09 15:20:15 254

原创 数据结构(哈夫曼树,哈夫曼编码)入门篇,JAVA实现

什么是哈夫曼树哈夫曼树就是一种最优判定树,举个例子,如下一个判断逻辑if(s<60) g=1;else if(s<70) g=2else if(s<80) g=3else if(s<90) g=4else g=5;分数概率图如下如果按照代码从上到下顺序构造判定树,那么如下图所示,如果有1000个数据需要判定,那么需要比较3150次其实我们可以把概率大的区间放在树的高处,概率小的,放在树的低处,如下图的判定数,1000个数据只要比较2700次。带权路径长度之和

2021-03-15 15:49:38 630 1

原创 JAVA两类比较器的区别(Comparable,Comparator)

内部比较器Comparable一个类实现了Comparable接口,那么它就有了一个内部比较器,实现了Comparable的类可以调用Collections工具类或Arrays的sort方法进行比较外部比较器Comparator一个类实现了Comparator接口,那么它就是一个外部比较器,我们可以看到在集合对象的sort方法里,需要传入一个外部比较器对象。两者区别大多数情况下,我们用到的类都是已经封装好的类,无法进行修改,也就是无法更改其内部构造器的规则,这时候我们需要一个外部比较器来实现我们自

2021-03-12 11:14:02 279

原创 数据结构堆的时间复杂度(最大堆,最小堆)

创建堆的方式有两种,一种是一边插入结点,一边调用堆的插入方法调整堆,这样的时间复杂度就是O(NlogN),而第二种方式就把时间复杂度缩减到了O(N),它是采用先把结点插入好了,然后再来调整堆,并不是一边插入一边调整。但是从代码层面来看,可能会误以为第二种方式的时间复杂度也是O(NlogN),但第二种方式是从下往上建立堆。举个例子,如下所示,假设堆中存在了N个节点(满足堆的性质),采用第一种方式,再创建N个结点,那么插入第一个数时,就调用了时间复杂度为logN的插入方法,插入N个数后,时间复杂度为logN

2021-03-11 20:42:20 10709 2

原创 AVL树(平衡二叉树)讲解,入门篇,适合新手观看

1.1 概念平衡二叉树就是为了让二叉搜索树的平均查找长度更短,时间复杂度更靠近logN,如果一个二叉搜索树不平衡了就会出现如下情况,完全变成一个数组,时间复杂度也变为了O(N)。平衡因子:平衡因子就是针对于树中某一结点,它的左子树高度减去右子树的高度所得结果就是它的平衡因子,如果这个平衡因子的绝对值等于2的话,那么这个树就认为出现了不平衡状况,我们就需要修正这个树,缩小它的平衡因子。如果树的高度越小,那么它的搜索效率越高,也就是图2所示,这个树由4层高高度经过调整变为了3层。查找长度:查找长度就是查

2021-03-10 22:29:56 535 1

原创 二叉搜索树(创建,插入,删除):基础篇,适合新手观看。

1.1 二叉搜索树的插入二叉搜索树的概念相信大家都很清楚,无非就是左小右大创建二叉搜索树,其实就是多次调用二叉搜索树的插入方法,所以首先我们来讲讲如何插入节点到二叉搜索树里,假设一颗二叉搜索树如下,现在要插入值为4这个节点,于是我们应该要与二叉树中每一个节点比较大小,然后决定到左,右哪一个子树里去,首先比较根节点,于是应该去根节点的左子树里寻找合适的位置,然后再与5这个节点比较,于是应该去5这个节点的左子树里寻找合适的位置,再与3比较,再到3的右子树里去,但3的右子树是空(null),所以这就是我们要找

2021-03-09 22:58:53 392 1

原创 二叉树的遍历(堆栈)

二叉树的遍历(堆栈)如何理解用堆栈方式代替递归去遍历二叉树,关键点在于了解每个结点输出时的顺序,以及理解前序中序后序是如何遍历的,这点很重要,可以自己画一个树图,熟练写出遍历的结果以上图为例,在进行先序遍历的时候,最先输出的是A,而在中序遍历的时候,A是在第四次时候才输出(DEBA)以中序遍历为例子,我们要先遍历所有的左子树,把每个左子树上的结点存入堆栈中,然后再pop出堆栈里的结点,输出...

2020-03-26 14:16:49 1806 1

空空如也

空空如也

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

TA关注的人

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