自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 hufmanTree 赫夫曼树简单介绍 以及创建

如果将树的根节点设置为第一层 ,那么路径到第n层 ,就是n-1的路径长度。什么是节点的权。就是节点的值是什么。第一步可以得到路径的长度第二步可以得到路径的权第三部得到带权的路径 也就是 1,2 的结果相乘。一棵树的叶子节点的代全路径的值最小,就是 huffmanTree 也叫最优二叉树。什么是最简单的二叉树,也就是没有任何一个子节点。...

2020-02-28 15:52:29 304

原创 堆排序

利用数组和二叉树的相互转化,可以利用树结构的特点,进行排序测试了速度。因为要经常交换。所以速度和希尔排序比慢了2倍package a;import sun.security.util.Length;import java.util.Arrays;public class HeapSortDemo { public static void main(String[] args...

2020-02-26 17:43:08 129

原创 大顶堆和小顶堆

其实大顶堆就是arr[n]>=arr[2n+1] && arr[n]>=arr[2n+2] 这个就是利用数组存储树的条件。小顶堆是把 > 换车<即可。

2020-02-26 17:41:04 362

原创 线索化二叉树

也就是前驱节点和后继节点的问题因为最初的节点是通过后一个找到的。也就是递归这么个逆序所以最初的节点并不知道自己后边的节点是谁然后我们通过一个辅助变量pre 前一个节点来记录当执行到后一个节点的时候。我们可以找到前一个,也就是在后一个节点中执行。将pre 初始化为全局的 null第一个的前一个是没有,然后第一个执行,每一个节点知道自己的前一个节点谁。所以在所有的关键在于这个pre pr...

2020-02-20 23:35:35 111

原创 顺序存储二叉树

就一层一层,从左到右的添加到数组,但是遍历的时候还能实现原来二叉树的前序,中序,后序的遍历这就要求有一个数组下标和二叉树左右节点的对应关系。2n+1 n是下标, 结果是下标位置元素的左子节点。 都是操作数组的下标父节点是 (n-1)/2package a;public class ArrayTreeDemo { public static void main(String...

2020-02-20 15:04:18 100

原创 二叉树的简单删除

public void del(int no) { if (root == null) { System.out.println("is null"); }else { if (root.no == no) { root=null; }else { ...

2020-02-20 11:10:09 184

原创 过滤器的概述以及一些应用

当浏览器有一个请求的时候 。不管是请求html jsp servlet 我们都可以在请求到达之前就拦截。做统一的处理当有返回的时候,在,到达浏览器之前。我们也可以拦截一下。 做你想要的处理其实这个拦截器跟servlet 类似 也是由服务器自动调用。也是配置拦截的路径。如何写一个filter编写1,实现接口 Filter 是 java.servlet的接口2,要在web.xml...

2020-02-19 21:53:49 186

原创 二叉树的前序,中序,后序查找

主要还是对递归的理解,查找和遍历都是用了两个递归,递归的查找总是先查找一个节点的最左边节点。每次递归都会打印左右两边的节点。其实有点像while循环,但是一个递归的方法中还包含着另一个递归。按照顺序执行package a;public class BinaryTreeDemo { public static void main(String[] args) { Her...

2020-02-19 10:21:09 196

原创 二叉树的前,中,后序遍历

二叉树有跟链表相似的地方。也是要用到节点。前,中,后,是以自身的打印顺序为标准的。打印利用了递归。递归退出的条件就是没有连接的节点了 ,也就是左边和右边都没有,然后退出。 前序遍历就是先打印,并不用等弹栈中序呢,等到一个节点没有左边,开始打印自己,然后看相邻的另一个,另一个也是要等到左边没有才能打印自己。最终的一个只是打印自己,退出的条件决定的是,左边的先被打印,递归的方法就是决定次序。 ...

2020-02-18 22:02:29 82

原创 二叉树的简介

因为数组在检索 某个值 效率很低或者是按照顺序插入某个值得时候,会整体移动 效率低链表的方式,插入某个值,删除都很快,但是检索一样很慢在有序的情况下,这两种在检索都很慢因此衍生出二叉树,来解决这个问题。节点:就是每一个对象的名称。根节点:叶子节点 : 一个是最初的,一个是最终的父节点和子节点 也是相对的。层路径 就是路线二叉树 也就是每个节点最多2个子节点满二叉树...

2020-02-18 15:14:01 179

原创 自己实现hashTable

员工作为节点。然后建立链表。 存的数据是员工。所有的方法是链表的方法,数组只是调用。hash中只有一个是自己实现的就是index 散列。package a;import java.util.Scanner;public class MyHashTableDemo { public static void main(String[] args) { MyHashT...

2020-02-18 11:18:57 206

原创 表单的重复提交问题

1.表单提交到一个servlet、然后servlet 转发到一个页面,浏览器看到了成功页面,因为是转发 在,服务器端处理,所以,浏览器的路径还是请求servlet的路径,此时如果刷新,就等于重新发了一次请求。重复提交了2.第二种情况是,由于网络慢或者是后台处理需要时间,没有 返回之前,又再次点击提交按钮。3.第三种,我先点返回,再点击提交。也算是重复提交。其实第三种就和第二种一样。第一种情况...

2020-02-17 23:47:54 288

原创 斐波那契查找算法

f[k]-1 = f[k-1]-1 + f[k-2] - 1 +1 这个公式的由来 因为我们要找到分割的点, 用-1 我们可以将 整体分成三段了。 我们要用的是数据的长度。 也就是要 f[k-1]但是我们mid 的取值其实是下标。所以是 f[k-1] -1;先创建了 f[k]这么个数列,然后要让,数组的长度 = f[k]-1这样我们才能分割...

2020-02-17 23:47:01 144

原创 session的常用api以及 路径问题

session.getId(); idsession.isNew(); 是不是新创建的session.getMaxInactiveInterval() 1800session.createTime();session.getLastAccessTime(); 都是1970到现在的毫秒数session.setAttribute(“username”,request.getParamer...

2020-02-17 16:17:15 509

原创 对session的理解

session是一种保持会话的机制第一:由服务器自动创建,然后通过JSESSIONID:218490ASKJDFJLSAJKLFJL;这样的一种存储方式,放在cookie中的。第二:浏览器,保存cookie,第二次会传回来第三:服务器根据cookie中的 JSESSIONID判断是否创建session ,有了就不创建了。第四:cookie可以持久化,这个是cookie的特性。创建sess...

2020-02-17 09:40:33 181

原创 插值查找算法

原来我们二分查找算法的时候是 sta+1/2(end-sta)现在这个插值是 sta+(value-arr[sta])/arr[end]-arr[sta]* (end-sta)通过比较,其实就是前边的 1/2变成了 那个值-最小值在最大值-最小值的比例注意:退出的条件。package a;public class InsertSearch { public static ...

2020-02-16 17:42:00 160

原创 二分查找的一个小优化

返回结果换成list在找到这个结果后,把其加入list 并,继续找package a;import java.util.ArrayList;import java.util.Arrays;public class BaniarySearchDuplicate { public static void main(String[] args) { int[] ar...

2020-02-16 11:04:18 205

原创 二分查找算法

这个算法要求数据必须是排好序的这次用的是递归实现。package a;public class BaniarySearch { public static void main(String[] args) { int[] arr = {9, 14, 34, 52, 80, 876}; int value = 877; int sta ...

2020-02-15 17:58:21 137

原创 线性查找算法

就是遍历查找。用查找的值和数组逐一比较package a;public class LineSeek { public static void main(String[] args) {// int var = 8;// int [] arr = new int[var];// for (int i = 0; i < arr.le...

2020-02-15 17:26:42 137

原创 基数排序

在800万数据的时候比希尔 要快 ,比快速 ,归并要快但是占内存空间过大,8000万,会造成堆溢出,现在写法不能比较负数需要创建一个二维数组用于排序,一个一位数组用于下标存储。package a;import java.util.Arrays;public class Radix { public static void main(String[] args) { ...

2020-02-14 15:02:19 122

原创 归并排序

测试了速度比快速排序 慢一点点 ,主要特点是借助一个temp数组来保存顺序的数据。用递归分解合并。package a;import java.util.Arrays;public class Merge { static int count = 0; public static void main(String[] args) { int[] arr...

2020-02-14 09:54:38 121

原创 快速排序

是冒泡排序的优化,利用递归,和分成两半交换的思想,数据中可以有重复,但是800万测试速度并不如希尔排序快,不知道为什么package a;import java.util.Arrays;public class Quick { public static void main(String[] args) { int[] arr = new int[8000000...

2020-02-13 15:10:45 175

原创 用交换实现希尔排序

gap 是步长 步长是逐渐减少的。 最外层循环确定了步长,然后用中层循环进行遍历,就像之前的遍历一样,最下层的遍历控制比较的数据,为什么用- gap 呢,因为你要加会下标越界package a;import java.util.Arrays;public class Shell { public static void main(String[] args) { ...

2020-02-11 11:19:56 204

原创 希尔排序用插入实现

在数据为8万的时候与插入排序速度差不多。在80万的时候明显拉开差距代码如下package a;import java.util.Arrays;public class InsetShell { public static void main(String[] args) {// int var = 8; int var = 800000; ...

2020-02-11 11:19:03 144

原创 插入排序

这个排序就是从第二个 元素开始插入。如果应该在前边,就把之前的数据挪到后边,因为每次只插入一个数。所以有一个变量就可以存储想后移动最多也是一位。package a;import java.util.Arrays;public class Insert { public static void main(String[] args) {// int[] arr =...

2020-02-10 15:19:57 221

原创 选择排序

整体上外层和冒泡一样。冒泡是先出现最后一个,每次交换,重点在于换而选择是先出来第一个,通过变量记录位置,最小的最终交换。重点在于找 和记录。package a;import java.util.Arrays;public class Select { public static void main(String[] args) { int[] arr = {5,...

2020-02-10 13:45:03 94

原创 冒泡排序的一个简单优化及测试

就是判断在一次比较中是不是有换位置。如果没换,结束package a;import java.util.Arrays;public class Bobble { public static void main(String[] args) {// int [] arr= {1,2,3,4,5};// int [] arr= {2,8,-5,20,-...

2020-02-10 13:02:06 130

原创 冒泡排序

这个排序的特点是外层控制次数, 内层负责比较。通过交换 注意次数package a;import java.util.Arrays;public class Bobble { public static void main(String[] args) { int [] arr= {2,8,-5,20,-9}; int temp =0; ...

2020-02-10 11:20:40 99

原创 排序算法的前序

分为 内部排序 内存 8 种外部排序 内存 + 存储时间复杂的的讲解,如果考运行来做统计,一个可能花费时间过长,第二是受计算机的硬件影响。时间频度:int start = 0;int end = 100;for(int i = 1,i<=end:i++){start+=i;}这个的时间复杂度是T(n)=n+1 为什么不是n ,因为 在 最后还要判断一次 ...

2020-02-10 09:58:17 260

原创 八皇后问题

递归的关键是每个方法的变量是独立的,也就是当第一次满了之后,最后的一个方法结束,栈中消失之前的方法继续运行,找到调用自身的方法,继续向下执行。进入下一次循环,列+1了。最后一次找到第一个就会推出的。然后回到上一次,继续试,其实都没有合适的。知道回到第二行才有。package a;public class Queen { public static void main(String[...

2020-02-09 23:38:29 168

原创 迷宫问题

递归负责寻找路的尽头,退出的条件是 找到。 如果没找到一直向后走,递归找,或者说路都走过了,也是返回falsepackage a;import java.util.Arrays;public class Maze { public static void main(String[] args) { int [][] arr = new int[8][7]; ...

2020-02-09 16:59:53 235

原创 对递归调用的理解

没每一块每个方法 也就是每一块在栈中都会有一个空间,空间中的n 是独立的。每次的调用自身,也就相当于暂停,等方法中真正有效的代码执行之后,继续其实方法中的判断条件就像是while中的判断条件一样。只不过参数是逆序的递归最好的理解方式就是拼接,想想String。package a;public class Self { public static void main(Strin...

2020-02-08 22:28:45 203

原创 利用栈 reverse polish 终追变后缀表达式 计算 02

主要的规则,一个是遇到) 将 sta中( 之前的符号全部弄到list中。如果 sta中的符号比新的符号大 或者是 = 都要讲sta中的符号弄到list中 用while最后将新的符号弄到sta中package a;import java.lang.reflect.Array;import java.util.ArrayList;import java.util.List;impor...

2020-02-08 21:32:07 133

原创 用栈实现计算器01

先将字符串保存在容易遍历的list中,可以处理多位数字package a;import java.lang.reflect.Array;import java.util.ArrayList;import java.util.List;public class TransDemo { public static void main(String[] args) { ...

2020-02-08 10:57:18 144

原创 netty组件介绍1

Bootstrap 和 ServerBootstrap 配置的引导对象EventLoopGroup 线程组Channel 就是服务器端的通道handler 方法和 给boss 那个组的配置childHandler方法的区别。给work那个组的配置future 和 channelFuture 可以注册想赢的监听, 因为服务端都是异步的。...

2020-02-07 23:48:35 107

原创 netty 中ByteBuf 的api

主要用于存取数据package netty;import io.netty.buffer.ByteBuf;import io.netty.buffer.Unpooled;import java.nio.charset.Charset;public class Buf02{ public static void main(String[] args) { B...

2020-02-07 08:39:40 168

原创 netty Unpooled 工具类

常规使用package netty;import io.netty.buffer.ByteBuf;import io.netty.buffer.Unpooled;public class BufDemo { public static void main(String[] args) { ByteBuf buffer = Unpooled.buffer(10);...

2020-02-06 23:47:57 468

原创 利用栈 逆波兰表达式计算

主要思路就是把数放进栈中,如果遇见符号我们就计算,计算后数还是要放入栈,不保存符号在这里插入代码片package a;import java.util.Stack;public class CalDemo { public static void main(String[] args) { String expr = "3 4 + 5 * 6 -";//(3+4)...

2020-02-06 15:30:25 140

原创 栈表达式:通过用字符串来处理,可以实现多位数的计算

}else {//处理数字 do{ whole = whole+chars[i]; if(i==chars.length-1){break; } i++; } ...

2020-02-06 00:17:25 185

原创 利用栈来实现简单的表达式计算

class Sta{ public static void main(String[] args) { Sta sta1 = new Sta(10); Sta sta2 = new Sta(10); String expr = "3+2*6-2"; char[] chars = expr.toCharArray(); ...

2020-02-05 23:32:48 329

空空如也

空空如也

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

TA关注的人

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