Java
文章平均质量分 69
Chrix9
这个作者很懒,什么都没留下…
展开
-
shiro + jwt实现登录及权限认证中发生的405 Method not Allowed bug
描述:调试修改密码接口的时候,即使新密码和旧密码一样,接口也只有第一个可以调用成功,后面返回405 Method not Allowed。问题一问题描述:为了防止修改密码后在别的浏览器依旧可以使用旧密码访问的情况,在修改密码的业务逻辑中清楚了token的缓存信息,第二次访问时原来的token无效了。解决办法:重新登录问题二第二个问题:token无效时返回的是405,不是设定的token无效信息。思路:尝试把请求方式改成GET,可以正常返回token异常信息。进而发现在请求头中不携带token或者原创 2020-11-23 14:01:41 · 866 阅读 · 6 评论 -
Mybatis笔记
参数赋值方式:KaTeX parse error: Expected 'EOF', got '#' at position 42: …sql,一定要注意单引号问题#̲{}:PrepareState…{},如模糊查询和批量删除不同的参数类型,#{} ${}取值方式不同1、当传输参数为单个String或者基本数据类型及包装类时:#{},可以以任意名字获得参数值,只能以{},只能以,只能以{value} ${_parameter}获取2、当参数为单个JavaBean时#{} 都可以通过属性名直接原创 2020-08-30 16:55:17 · 71 阅读 · 0 评论 -
springMVC笔记
一 拦截器/** * 当有多个拦截器时 * preHandle:按照拦截器数组的正向顺序执行 * postHandle:按照拦截器数组的反向顺序执行 * afterCompletion:按照拦截器数组的反向顺序执行 * * 多个拦截器中若有一个preHandle返回值为false, * 该拦截器及之前的拦截器的preHandle都会执行 * 所有的postHandle都不会被执行 * 该拦截器之前的afterCompletion都会执行 */public class TestInte原创 2020-08-30 16:55:49 · 96 阅读 · 0 评论 -
spring笔记
一 spring事物@Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.REPEATABLE_READ, timeout = 3, readOnly = false) public void buyBook(Integer pid, Integer bid) { Integer price = dao.getPriceById(bid);原创 2020-08-30 16:40:54 · 78 阅读 · 0 评论 -
Java synchronized和Lock的区别
1 原始构成synchronized是关键字,基于JVM层面;Lock是具体类(java.util. concurrent.Locks.Lock)是api层面的锁。2 使用方法synchronized不需要用户手动释放锁,当 synchronized代码执行完成后系统会自动让线程释放锁;ReentrantLock需要用户手动释放锁,若没有主动释放,就有可能导致死锁现象。要用lock(),...原创 2020-04-24 12:56:02 · 169 阅读 · 0 评论 -
Java JUC并发编程笔记
1. volatilevolatile是一个Java的修饰符,用volatile修饰的变量有三个特性:保证可见性、不保证原子性、禁止指令重排。JMM,Java Memory model。Java内存模型,Java内存模型规定所有的变量都是存在主存当中,每个线程都有自己的工作内存。线程对变量的所有操作都必须在工作内存中进行,而不能直接对主存进行操作。并且每个线程不能访问其他线程的工作内存。所以线...原创 2020-04-22 21:28:13 · 240 阅读 · 0 评论 -
Java生产者消费者模式
package com;class Clerk{ private int proNum; public synchronized void proProduct(){ if(proNum<20){ System.out.println("生产者生产一个产品,剩余产品数量:" + ++proNum); noti...原创 2020-04-14 12:06:17 · 116 阅读 · 0 评论 -
Java jdk8新特性Stream API
首先创建一个Person类备用:package jdk8;import java.util.ArrayList;public class Person implements Comparable<Person>{ private String name; private int age; private double salary; publ...原创 2020-04-13 23:14:05 · 179 阅读 · 0 评论 -
Java的TCP和UDP网络
TCPimport org.junit.Test;import java.io.*;import java.net.InetAddress;import java.net.ServerSocket;import java.net.Socket;import java.net.UnknownHostException;public class TCPTest { @Test...原创 2020-04-13 23:03:35 · 206 阅读 · 0 评论 -
Java注解
元注解可以用来描述其他注解,Java有四个元注解:1,@Retention:注解的生命周期2,@Target:注解可以用的地方3,@Inherited:说明注解可以被继承4,@Documented:说明该注解将被包含在javadoc中import java.lang.annotation.*;import java.util.ArrayList;import java.util.It...原创 2020-04-13 22:58:45 · 111 阅读 · 0 评论 -
Java枚举类
可以利用枚举类实现单例模式interface Info{ void show();}public enum Season implements Info{ SPRING("春天"){ @Override public void show() { System.out.println(getName()); ...原创 2020-04-13 22:32:20 · 95 阅读 · 0 评论 -
Java静态代理和动态代理
静态代理://接口interface ClothFactory{ void produce();}//被代理类class Adidas implements ClothFactory{ @Override public void produce() { System.out.println("我生产了一双Adidas运动鞋"); }}/...原创 2020-04-13 22:28:08 · 99 阅读 · 0 评论 -
Java获取Class实例的四种方式、通过反射调用类的构造器,属性和方法
package reflection;import org.junit.Test;import java.io.FileInputStream;import java.io.InputStream;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect....原创 2020-04-13 22:03:54 · 269 阅读 · 0 评论 -
Java的HashSet和HashMap
在Java中HashSet是用HashMap实现的,在jad8以前HashMap是用数组+链表实现的,在jdk8中变成了数组+链表+红黑树。下面介绍jdk8中HashMap的实现原理。数组扩容几个概念:数组容量:数组的长度,初始值默认为16;负载因子:作为数组扩容的判断条件,默认为0.75;临界值:数组容量*负载因子;1,在new HashMap()的时候不会创建数组,而是在第一次调用...原创 2020-04-13 21:55:54 · 170 阅读 · 0 评论 -
尚硅谷数据结构和算法Java代码导航
类别标题对应视频链接 链表 Java实现静态链表 [点击](https://blog.csdn.net/weixin_44963741/article/details/104496381) Java实现单向单链表 16~20 点击 ...原创 2020-03-31 20:56:57 · 1387 阅读 · 0 评论 -
Java实现迷宫最短路径的BFS算法
利用广度优先遍历算法的特点,由于迷宫每次只能走一格,所以对于任意一个节点,bfs最先到达时一定时最短路径。package recursion;import java.util.ArrayDeque;import java.util.Deque;import java.util.Stack;public class Maze { private class Node{ int x...原创 2020-03-31 17:36:27 · 3741 阅读 · 6 评论 -
Java实现马踏棋盘/骑士周游
尝试了很多方法目前只有这一种能成功。。。package algorithm;import java.awt.Point;import java.util.ArrayList;import java.util.Arrays;import java.util.Comparator;public class TravelChessBoard { int[][] chess; int ...原创 2020-03-31 17:30:40 · 212 阅读 · 0 评论 -
Java实现Floyd弗洛伊德算法
参考视频:https://www.bilibili.com/video/BV1Ut41197NX算法思路:逐个顶点试探,找出从顶点Vi到顶点Vj所有可能存在的路径中最短的路径。最后二维数组dis中存放的是任意两个顶点间的最短路径,路径可以通过pre数组求出。package algorithm;import java.util.Arrays;public class Floyd { ...原创 2020-03-31 17:12:25 · 224 阅读 · 0 评论 -
Java实现最短路径算法之Dijkstra迪杰斯特拉算法
有点难理解,参考视频:https://www.bilibili.com/video/BV1mt411i7DX算法思路:将已访问的顶点放入集合s,每次操作找出距离这个集合最近的点k加入集合中,这样可以保证集合s内的点都是确定最短路径的点。然后尝试从起点经过点k到达其他未访问几点的距离,如果比原来dis[k]的距离短,就更新dis[k],这个操作可以保证dis是从起点经过集合s内的顶点到未访问顶点的...原创 2020-03-31 17:05:06 · 405 阅读 · 0 评论 -
Java实现Kruskal克鲁斯卡尔算法
图论中最小生成树算法之一,Kruskal算法从边出发,Prim算法从点出发。算法思路:将图中所有边按权值从小到大排序,选出不构成回路的最短的边,直到将所有点连通,即选择顶点个数减一的边。判断加入边后是否构成回路的方法:判断边的两个顶点的终点是否一致,不一致就不构成回路。package algorithm;import java.util.ArrayList;import java.uti...原创 2020-03-31 16:28:54 · 391 阅读 · 0 评论 -
Java实现Prim普利姆算法
最小生成树算法之一,算法思路:从起点开始,找出已访问节点与未访问节点的权值最短的边,并将新的节点加入已访问节点,循环直到所有节点被访问。package algorithm;import java.util.ArrayList;import java.util.Arrays;class Graph{ ArrayList<String> vertex; int[][] ed...原创 2020-03-31 16:16:21 · 220 阅读 · 0 评论 -
Java贪心算法示例
问题描述:见最少的基站覆盖所有城市,解不一定是最优,但较优。参考视频:https://www.bilibili.com/video/BV1E4411H73v?p=164package algorithm;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.ut...原创 2020-03-31 16:10:36 · 257 阅读 · 0 评论 -
Java实现01背包问题
参考视频:https://www.bilibili.com/video/BV1jt411m7Rcpackage algorithm;import java.util.Arrays;public class Knapsack { /** * 01背包问题 * @param w 物品的重量 * @param v 物品的价值 * @param c 背包的容量 * @re...原创 2020-03-31 16:07:33 · 477 阅读 · 0 评论 -
Java实现图的广度优先遍历和深度优先遍历
首先构造一个图的基本功能:package binarySortTree;import java.util.ArrayDeque;import java.util.ArrayList;import java.util.Arrays;import java.util.Stack;public class Graph { ArrayList<String> vertex;...原创 2020-03-27 13:14:04 · 506 阅读 · 0 评论 -
Java实现平衡二叉树AVL
import java.util.Stack;class Node{ int data; Node left; Node right; public Node(int data) { this.data = data; }}public class AVL { Node root; //添加节点 public void add(int value) { this....原创 2020-03-26 09:53:51 · 129 阅读 · 0 评论 -
Java实现二叉排序树
import java.util.Stack;class Node{ int data; Node left; Node right; public Node(int data) { this.data = data; }}public class BinarySortTree { Node root; //添加节点 public void add(int value...原创 2020-03-25 16:45:05 · 132 阅读 · 0 评论 -
Java实现哈夫曼数据压缩
1,根据被压缩的内容生成哈夫曼树。2,根据哈夫曼树生成每个字符对应的哈夫曼编码。3,对原文进行压缩。package tree;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.HashMap;import java.util.List;...原创 2020-03-25 08:30:25 · 323 阅读 · 0 评论 -
Java实现前序、中序、后序线索化二叉树及遍历
1.1 前序线索化二叉树public void turnToPre(ThreadedNode temp) { if(temp == null) { return ; } if(temp.left == null) { temp.left = pre; temp.leftType = true; } if(pre != null && pre.right ==...原创 2020-03-19 22:57:27 · 2009 阅读 · 6 评论 -
Java二叉树相关全部代码
package tree;import java.util.ArrayDeque;import java.util.Stack;class Node{ String data; Node left; Node right; public Node(String t) { this.data = t; }}//顺序存储二叉树,完全二叉树class arrayTree{...原创 2020-03-19 22:36:27 · 137 阅读 · 0 评论 -
Java实现顺序存储二叉树及其前序、中序、后序遍历
//顺序存储二叉树,完全二叉树class arrayTree{ Node[] at; //bt为完全二叉树 public arrayTree(BinaryTree bt){ ArrayDeque<Node> quene = new ArrayDeque<Node>(); int count = 0; Node temp = bt.root; quen...原创 2020-03-19 22:34:00 · 305 阅读 · 0 评论 -
Java实现前序、中序、后序、层次查找
1 前序查找//前序遍历查找public Node preSearch(Node temp, String value) { if(temp.data.equals(value)) { return temp; } Node res = null; if(temp.left != null) { res = preSearch(temp.left, value); } if...原创 2020-03-14 16:45:28 · 286 阅读 · 0 评论 -
Java实现二叉树的递归和非递归遍历
1.1 递归前序遍历//递归前序遍历public void preOrderRec(Node temp) { if(temp == null) { System.out.println("BinaryTree is empty."); }else { System.out.print(temp.data + " "); if(temp.left != null) { pr...原创 2020-03-14 00:00:08 · 180 阅读 · 0 评论 -
Java实现哈希表(数组+链表)
public class HashDemo { public static void main(String[] args) { // TODO Auto-generated method stub HashTab ht = new HashTab(7); ht.add(6, "zhangsan"); ht.add(3, "lisi"); ht.add(1, "ww");...原创 2020-03-13 12:50:27 · 549 阅读 · 0 评论 -
Java查找算法汇总
1. 线性查找public static int seqSearch(int[] arr, int value) { for(int i=0; i<arr.length; i++) { if(arr[i] == value) { return i; } } return -1;}2. 折半查找/二分查找/二分查找,要求数组是有序的,这里以从小到大为标准,返回一个...原创 2020-03-12 16:34:09 · 135 阅读 · 0 评论 -
Java排序算法总结
算法时间复杂度最好情况最坏情况空间复杂度排序方式稳定性冒泡排序O(n2)O(n^2)O(n2)O(n)O(n)O(n)O(n2)O(n^2)O(n2)O(1)O(1)O(1)In-place稳定选择排序O(n2)O(n^2)O(n2)O(n2)O(n^2)O(n2)O(n2)O(n^2)O(n2)O(1)O(1)O(1)In-place不...原创 2020-03-09 17:10:36 · 162 阅读 · 0 评论 -
Java实现字符串匹配的BF算法和KMP算法
1,BF算法字符串匹配的暴力搜索算法 Brute Force。2,KMP算法算法原理和next数组的实现参照视频https://www.bilibili.com/video/av3246487public class StringMatch { /** * 字符串匹配的暴力搜索算法 Brute Force * @param s1 主串 * @param s2 字串 ...原创 2020-03-04 14:55:36 · 494 阅读 · 0 评论 -
Java实现迷宫回溯
算法还是蛮有意思的,这个算法可以找到通路,但不是最优解。测试结果如下图:代码如下:public class Maze { public void print(int[][] map) { for(int i=0; i<map.length; i++) { for(int j=0; j<map[0].length; j++) { System.out.prin...原创 2020-03-02 20:20:08 · 545 阅读 · 0 评论 -
Java实现八皇后问题
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。首先创建一个一维数组用来皇后拜访的位置,其中...原创 2020-03-02 19:03:35 · 209 阅读 · 0 评论 -
Java 字符串、字符、整型、浮点型、ASCII码之间的相互转换
public class TypeChange { //字符串、字符、整型、浮点型、ASCII码 //字符串转字符数组 public static char[] StringToChar(String str) { return str.toCharArray(); } //字符数组转字符串 public static String CharToString(char c...原创 2020-03-02 14:26:49 · 879 阅读 · 0 评论 -
Java用链式存储结构实现队列
//用尾插法实现队列public class LinkQuene { // private class Node{ String data; Node next; public Node(String s) { this.data = s; this.next = null; } } private Node head; private Node rear;...原创 2020-03-01 21:48:18 · 278 阅读 · 0 评论