自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (1)
  • 收藏
  • 关注

原创 springboot定时任务中Scheduled的表达式网址

https://cron.qqe2.com/

2021-11-19 17:30:59 450

原创 一级缓存和二级缓存

mybatis缓存一、一级缓存1、简介2、一级缓存的失效二级缓存1、简介2、查询顺序一、一级缓存1、简介一级缓存是sqlsession级别的,在同一个sqlsession下操作数据库,可以使用一级缓存一级缓存实际上是一个map,key值就是区分不同的sqlsessionmybatis的一级缓存是默认打开的2、一级缓存的失效不同的sqlsession, 使用不同的一级缓存,由于一级缓存只是保存在当前的sqlsession,因此只有在同一个sqlsession期间查询到的数据会保存在这个sq

2021-10-06 15:06:47 805

原创 spring的动态代理aop原理以及应用

spring的动态代理aop一、动态代理1、被代理的接口2、被代理的接口的实现类3、利用反射创建代理对象4、日志增强的方法5、测试及结果二、AOP1、编写代理的类2、注解配置两个切面类3、测试以及结果4、xml配置三、事务增强1、配置事务增强applicationcontext.xml2、service层需要添加事务的方法3、事务传播行为REQUIRES_NEW和REQUIRED实例一、动态代理动态代理基于接口代理或者子类代理1、被代理的接口public interface Calculator

2021-10-03 14:49:53 570

原创 数据库原理以及Mysql高级

数据库原理以及Mysql数据库的三范式数据库的视图事务的特性事务的创建事务并发的问题事务的隔离级别索引优化存储过程数据库的三范式数据库的视图事务的特性原子性:一个事务不可再分割一致性:一个事务可以从一个一致状态切换到另一个一致状态隔离性:一个事务的执行不受其他事务的干扰持久性:一个事物一旦提交,就会永久改变事务的创建隐式事务:事务的开启和结束没有明显的标记。例如:insert, update, delete 语句显示事务:必须先设置自动启动事务功能为禁用查询事务是否开启自动提交:

2021-09-30 10:07:29 655

原创 泛型的依赖注入

泛型的依赖注入准备两个beanpublic abstract class BaseDao<T> { public abstract void save();}@Repositorypublic class RoleDao extends BaseDao<Role> { @Override public void save() { System.out.println("角色保存 roleDao"); }}@Repo

2021-09-29 10:28:31 229

原创 拓扑排序有向无环图

拓扑排序算法描述代码算法描述拓扑排序就是对一个有向图进行排序,得到一个有序序列。找到有向图中入度为0的结点,加入到队列中,然后删除与该点所有关联的边,重复此操作拓扑排序可以判断改图是否有环代码queue<int>q;//priority_queue<int,vector<int>,greater<int>>q;//优先队列的话,会按照数值大小有顺序的输出//此处为了理解,暂时就用简单队列int topo(){ for(inti

2021-09-22 15:41:32 237

原创 B树-B+树

B树-B+树B树之2-3树的特点案例B+树B*树B树之2-3树的特点2-3树是B树的一种,这里就用2-3树作为案例2-3树的所有叶子节点都在同一层有两个结点的叫做二结点,有三个结点的叫做三结点二节点要么有两个子节点,要么没有子节点三节点要么有三个子节点,要么没有子节点B树的搜索,从根节点开始,对节点内的关键字进行二分查找,如果找到就结束,否则进入查询关键字所属范围的子节点,重复以上操作,直到叶子节点关键字集合分布在整棵树中,即叶子节点和非叶子节点都存放着数据搜索有可能在非叶子节点就结束

2021-09-15 15:57:14 56

原创 集合底层源码list、map、set

集合底层源码ListListlist可以存储空值。arraylist是线程不安全的,而且基本等同于vector,在多线程的情况下,一般不建议使用arraylist,可以考虑一下使用vector每次向list添加元素时,都会进行扩容判断,看看是否需要扩容。...

2021-09-15 15:56:06 334

原创 Map集合的遍历方法

Map集合的遍历方法keySet增强for迭代器直接获取valueentrySetkeySet增强forSet set = map.keySet();for (Object key : set) { System.out.println(key + "-" + map.get(key)); }迭代器Set set = map.keySet();Iterator iterator = set.iterator();while (iterator.hasNext()) { O

2021-09-11 14:54:02 74

原创 数据包装类 == 的判定

数据包装类 == 的判定Double a = 127.00;Double b = 127.00;System.out.println(a==b); //falseByte c = -128;Byte d = -128;System.out.println(c==d); //trueCharacter e = 'a';Character f = 'a';System.out.println(e==f); //trueLong h1 = -128l; Long i1 = -128l;

2021-09-07 22:16:48 115

原创 二进制枚举

Javapublic static void main(String[] args) { int[] a = {1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,20}; for(int i = 0; i < (1<<a.length); i++) { //从0~2^n-1个状态 //判断i的二进制形式有多少个1 String str = Integer.toBinaryString(i); int n

2021-09-03 17:05:36 92

原创 堆栈知识点

计算机网络互联网的概述互联网的概述

2021-09-02 16:56:59 197

原创 String、StringBuffer、StringBuffer

StringString常用方法StringBuilder区别String常用方法length() 获取字符串的长度charAt(i) 获取对应索引下字符串的字符toCharArray() 将字符串转化为字符数组indexOf(‘x’) 判断字符串是否存在某个字符,如果存在,返回字符串最先出现的位置,不存在返回-1lastIndexOf(‘x’) 判断字符串是否存在某个字符,如果存在,返回字符串最后出现的位置,不存在返回-1toUpperCase() 将字符串转化为大写toLowerCas

2021-08-30 22:42:23 197

原创 ASCII表

Bin (二进制) Oct (八进制) Dec (十进制) Hex (十六进制) 缩写/字符 解释 0000 0000 00 0 0x00 NUL(null) 空字符 0000 0001 0...

2021-08-27 10:38:39 134

原创 linux常用命令总结

Linux一、关机、重启、用户登录注销二、用户管理(添加用户、删除用户等)三、用户组四、实用指令1、指定运行级别2、利用单用户模式修改用户密码3、文件目录的指令4、时间日期类5、搜索查找类6、文件压缩、解压、打包五、组管理和组权限1、组的基本介绍2、权限的基本介绍3、权限的修改一、关机、重启、用户登录注销指令作用shutdown -h now立即关机shutdown -h 1一分钟后关机haft就是直接使用,效果等同于关机reboot重启sync内存

2021-08-26 18:32:53 116

原创 二叉排序树

二叉排序树创建节点、插入节点、删除节点以及遍历删除节点思路代码创建节点、插入节点、删除节点以及遍历删除节点思路第一种情况:删除叶子节点 (比如:2, 5, 9, 12)思路(1) 需求先去找到要删除的结点 targetNode(2) 找到 targetNode 的 父结点 parent(3) 确定 targetNode 是 parent 的左子结点 还是右子结点(4) 根据前面的情况来对应删除左子结点 parent.left = null右子结点 parent.right = null

2021-08-13 22:32:27 84

原创 哈夫曼编码的压缩、解码

哈夫曼编码一、使用哈夫曼编码对字节数组进行压缩1、创建哈夫曼树2、获取每个叶子节点的哈夫曼编码3、获取压缩之后的字节数组4、整合压缩过程二、解码1、将字节转化位一个二进制字符串2、对压缩的字节数组进行解码得到原始的字节数组三、文件压缩四、文件解压五、全部代码一、使用哈夫曼编码对字节数组进行压缩1、创建哈夫曼树节点class NodeNo implements Comparable<NodeNo>{ Byte data; //存放数据 int weight; //权值 NodeNo

2021-08-13 22:12:51 626

原创 哈夫曼树的建立

哈夫曼树的建立思路代码思路从小到大进行排序, 将每一个数据,每个数据都是一个节点 , 每个节点可以看成是一颗最简单的取出根节点权值最小的两颗二叉树组成一颗新的二叉树, 该新的二叉树的根节点的权值是前面两颗二叉树根节点权值的和再将这颗新的二叉树,以根节点的权值大小 再次排序, 不断重复 1-2-3-4 的步骤,直到数列中,所有的数据都被处理,就得到一颗赫曼树代码1、创建节点class NodeHaffman implements Comparable<NodeHaffman>{

2021-08-13 21:47:51 202

原创 二叉树的遍历查找

二叉树的遍历创建节点、包含插入、查找、删除节点创建树测试创建节点、包含插入、查找、删除节点//定义一个树节点class Node { int id; Node left; Node right; public Node(int id) { this.id = id; } //前序遍历 public void pre(Node node) { if(node==null) { return ; } System.out.print(node.id + " ");

2021-08-13 21:02:11 283

原创 最短路算法

最短路算法dijkstra算法思路代码floyd算法思路代码SPAF解决负边权(待更)dijkstra算法思路dijkstra算法是一种解决单源最短路径的算法,能够找到起点(也叫做源点)到其他各个顶点的最短路径将每条边的路径大小用邻接矩阵weight[i][j]存储将源点到其他各个点的距离用dis[n]数组存储,使用visit[n]数组来标记某个点是否已经被访问,并将其初始化在未被访问的点中找到dis中距离源点最近的点dis[index],并将其设置未已经被访问如果未被访问的顶点的 dis[i

2021-08-12 23:23:54 70

原创 最小生成树

最小生成树prim思路代码prim思路代码1、构建邻接矩阵//构建邻接矩阵图class Graph{ int vers; char[] points; int[][] weight; public Graph(int vers) { this.vers = vers; this.points = new char[vers]; this.weight = new int[vers][vers]; }}2、prim算法两种实现代码//实现最小生成树class

2021-08-11 12:05:22 354

原创 kmp算法的代码实现

KMP计算next数组kmp算法计算next数组//计算获取next数组public static int[] getNext(String str) { int[] next = new int[str.length()]; //记录前一个字符的移动值 int i = -1, j = 0; next[0] = -1; while(j<str.length()-1) { if(i == -1 || str.charAt(i)==str.charAt(j)) { //如果字符串相等

2021-08-09 16:23:22 56

原创 哈希表hash

哈希表hash简介代码1. 创建需要存储的对象2. 建立链表存储3. 建立hash表4. 测试简介散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。代码1. 创建需要存储的对象//建立一个用户表class User { int id; User next; public User(int id) { th

2021-07-29 12:15:40 70

原创 常用排序算法

快速排序、归并排序

2021-07-28 20:51:25 63

原创 java中栈的应用

使用栈实现中缀表达式的计算中缀表达式转化为后缀表达式计算后缀表达式的值

2021-07-26 12:22:49 115

原创 使用java实现链表

链表一、单向链表创建节点对象实现链表的建立、插入、遍历以及删除二、单向链表的其他操作链表反转一、单向链表创建节点对象class Node { int no; Node next; //指向下一个节点 public Node(int no) { this.no = no; }}实现链表的建立、插入、遍历以及删除//建立链表class BuildNode { private Node head = new Node(0); //将每个节点添加到链表的最后一个节点 pub

2021-07-23 14:50:27 54

原创 Dubbo的其他特征

文章目录Dubbo的其他特征注册中心zookeeper宕机解决方案负载均衡机制熔断机制Dubbo的其他特征注册中心zookeeper宕机解决方案注册中心宕机时,已经暴露的服务还可以继续使用。可以通过dubbo直连的方式对服务方进行调用,消费者使用注解**@Reference(url = “127.0.0.1:2181”)**添加属性url指定服务地址。负载均衡机制dubbo提供了多种负载均衡策略,默认的策略为random策略,即基于权重的随机负载均衡机制。调用方可以在注解Referenc

2021-07-22 11:22:43 79

原创 使用java数组模拟队列

队列一、普通队列二、环形队列一、普通队列class ArrayQueue{ private int maxNums; private int front; //指向当前队列的头元素的 private int rear; //指向当前队列的最后一个元素 private int[] arr; //存储队列 //创建队列对象 public ArrayQueue(int maxNums) { this.maxNums = maxNums; this.front = 0; this.re

2021-07-22 11:21:01 46

原创 Dubbo在springboot中的相关配置

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录Dubbo一、安装Dubbo一、安装1、注册中心zookeeper并运行2、下载dubbo

2021-07-19 20:53:02 545

原创 设计模式——观察者模式

观察者模式设计后,会以集合的方式来管理用户(Observer),包括注册,移除和通知。这样,我们增加观察者(这里可以理解成一个新的公告板),就不需要去修改核心类 WeatherData 不会修改代码, 遵守了 ocp 原则。

2021-07-18 15:45:44 48

原创 设计模式——代理模式

文章目录代理模式基本原理静态代理模式基本介绍案例实现静态代理的优缺点动态代理模式基本介绍代理模式基本原理静态代理模式基本介绍代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象代理模式有不同的形式, 主要有三种 静态代理、动态代理 (JDK 代理、接口代理)和 Cglib 代理 (可以在内存动态的创建对象,而不

2021-07-17 15:00:17 68

原创 实现多线程的3中方式

继承Thread,实现Runnable或者Callable接口

2021-07-16 13:14:24 59

原创 Lamda表达式和内部类

当参数的个数只有一个时,括号可以省略;当函数中语句只有一句时,大括号可以省略;前提是接口为函数式接口(只包含一个抽象方法)才能使用Lamda表达式。

2021-07-15 10:55:45 94

原创 设计模式——装饰者模式

装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(ocp)

2021-07-14 11:59:08 205

原创 设计模式——桥接模式

桥接模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展

2021-07-14 10:50:14 74

原创 设计模式——适配者模式

文章目录一、适配者模式基本介绍类适配者模式对象适配者模式接口适配者模式一、适配者模式基本介绍类适配者模式基本介绍:Adapter 类,通过继承 src 类,实现 dst 类接口,完成 src->dst 的适配1、220V类public class Voltage220V { public void output220V() { System.out.println("电压输出220V"); }}2、5V接口public interface Voltage5V { voi

2021-07-12 23:58:52 254

原创 建造者模式

建造者模式(Builder Pattern) 又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。建造者模式 是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们, 用户不需要知道内部的具体构建细节

2021-07-12 15:25:22 294

原创 设计模式——工厂模式

工厂模式

2021-07-12 12:24:05 99

原创 单例模式写法

单例模式文章目录单例模式饿汉式懒汉式# 单例模式饿汉式//饿汉式//采用常量final写法class Singleton1 { //将构造方法私有化 private Singleton1() {} //创建静态对象 private final static Singleton1 singleton = new Singleton1(); //创建静态方法返回singleton对象 public static Singleton1 singleton1() { r

2021-05-29 11:05:23 63

原创 设计模式7大原则

设计模式文章目录设计模式一、设计模式的7大原则1、单一职责原则一、设计模式的7大原则1、单一职责原则2、接口隔离原则3、依赖倒置原则4、

2021-05-18 12:52:14 164

zookeeper+dubbo.zip

dubbo分布式开发以及zookeeper注册中心下载

2021-07-19

空空如也

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

TA关注的人

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