自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java 8 stream API

JAVA8

2022-08-27 17:30:11 221 1

原创 JUC总结

JUC

2022-07-23 17:00:19 175

原创 冒泡排序的时间复杂度分析

冒泡排序

2022-07-17 18:40:22 779

原创 时间复杂度和空间复杂度

也就是说时间复杂度为O(n^2)排序算法运行效率最慢;时间复杂度为O(n)排序算法运行效率最快;,其中logn表示以2为底n的对数。在排序算法中,最常见的时间复杂度有。上述的3种时间复杂度之间的大小关系是。............

2022-07-16 00:25:09 227

原创 华为机考 ~ 偏移量实现字符串加密

华为机考

2022-07-13 19:35:22 444

原创 高频面试题

高频率面试题

2022-06-30 10:00:22 327

原创 Sleuth + Zipkin

sleuth zipkin

2022-06-20 11:17:21 233

原创 设计模式的个人理解

设计模式的理解

2022-06-11 10:51:52 80

原创 SSO单点登录

SSO单点登录1. 单点登录流程图2. 单点登出流程图1. 单点登录流程图1.用户访问系统1的受保护资源,系统1发现用户未登录, 跳转至SSO认证中心,并将自己的地址作为参数。2.SSO认证中心发现用户未登录,将用户重定向到登录界面。3.用户输入账号密码提交。4.SSO认证中心校验用户信息,创建用户与认证中心之间的会话, 称为全局会话,同时创建授权令牌。5.SSO认证中心带着令牌跳转回系统1(步骤1中作为参数的地址)6.系统1使用该令牌创建与用户的局部会话,返回受保护资源

2022-04-07 23:01:06 306

原创 Cookie

Cookie1.1 cookie的domain属性1.2 cookie的httpOnly属性1.3 cookie的Secure属性1.4 cookie的expires属性1.5 cookie的path属性1.1 cookie的domain属性domain: 表示 "域"。若不指定则默认为创建 Cookie的服务器的域名. 分为子域和父域,子域可以访问"本级域名"及"父级域名"下的cookie。 请求 c.com 服务器响应回一个cookie的domain属性为 c.com,

2022-04-06 22:22:19 305

原创 【JWT】

JWT1. JWT是什么?2. JWT有什么用?3. JWT的结构是怎么样的?4. JWT有什么优势?5.Bearer验证6. Maven 依赖1. JWT是什么?JSON Web Token是一个用于在各方之间安全地传输信息的令牌。此令牌可以验证和信任,因为它是数字签名的。JWT可以使用密钥(HMAC算法)或使用RSA或ECDSA的公/私钥进行签名。2. JWT有什么用?授权:这是JWT最常见的使用场景。用户登录后,每个后续请求都将携带JWT,从而允许用户访问该令牌允许的路由,服务和资

2022-03-28 20:55:11 672

原创 JAVA IO模型

IO模型1.相关概念1.1 同步 和 异步1.3 阻塞 和 非阻塞 IO2. BIO NIO AIO2.1 概念2.2 适用场景3.NIO的三大核心3.1 Channels3.2 Buffers3.3 Selector4. IO和NIO的区别4.1 面向流与面向缓冲4.2 阻塞与非阻塞IO4.3 选择器1.相关概念1.1 同步 和 异步同步 :一个任务完成之前不能做其它操作,必须等待完成(打电话)异步: 一个任务完成之前,无需等待,就可以进行其它操作(发短信,不要等待对方回复就可以做其它事情)

2022-03-14 21:29:43 1349

原创 Oracle

OracleOracle0.概念1.数据库对象1.1 视图 View1.1.1 创建视图的语法1.1.2 视图的查询1.1.3 视图的作用1.1.4 授权创建视图1.1.5 创建简单视图(单表)1.1.6 创建复杂视图(多表)1.1.7 查询当前用户名下的所有视图1.1.8 删除视图1.1.9 同一数据库,两个不同账户之间表的授权1.2 序列 SEQ1.2.1 什么是序列?1.2.2 创建序列1.2.3 查询用户的序列1.2.4 删除序列1.3 索引1.3.1 索引的概念1.3.2 创建索引1.3.3修改和

2021-07-06 21:39:59 337

原创 Hibernate

Hibernate1.缓存的概念2.一级缓存3.二级缓存1.缓存的概念缓存是介于物理数据源和应用程序之间,是对数据库中的数据复制一份临时放在内存中的容器,其作用是为了减少程序对物理数据源的访问次数,从而提高应用程序的运行性能。Hibernate在进行读取数据的时候,根据缓存机制在相应的缓存中查询,如果在缓存中找到了需要的数据(缓存命中),则就直接把命中的数据作为结果返回,避免了大量发送SQL语句到数据库造成的性能损耗。2.一级缓存概念:是Session(会话)级别的缓存,又称作事务缓存。Hib

2021-04-23 22:36:19 94

原创 SpringBoot

SpringBoot0.SpringBoot模块汇总1.Webjars是什么?有什么用?2.SpringBoot 2.0监听器(ApplicationListener)的使用:ApplicationReadyEvent事件3.热部署是什么?SpringBoot怎么开启热部署?4.SpringBoot内置日志框架logback的详细配置和说明5.SpringBoot自动配置原理?6.SpringBoot实现全局异常拦截处理?7.SpringBoot使用@ConfigurationProperties 配置模块

2021-04-11 22:33:09 143

原创 SQL优化

SQL优化篇1.完整SQL语法和SQL执行顺序1.完整SQL语法和SQL执行顺序Mysql查询完整语法SELECT DISTINCT [column_list]FROM [table_list]JOIN(INNER/LEFT/RIGHT) [table] ON [condition] WHERE [condition]GROUP BY [column_name]HAVING [condition]ORDER BY [column_name] [ASC/DESC]LIMIT

2021-04-11 17:06:59 206

原创 《桥接模式》

桥接模式1.桥接模式介绍2.桥接模式的简单使用1.桥接模式介绍优点:抽象部分和实现部分的解耦(分离),他们两个互相独立,不会影响到对方。优秀的扩展能力。实现细节对客户透明。缺点: 桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。本质: 就是2个变量(对象)的排列组合使用场景: 对于两个独立变化的维度,使用桥接模式再适合不过了。2.桥接模式的简单使用//手机品牌和款式组合的桥梁,内部维护款式接口public abstr

2020-07-20 23:58:58 148

原创 《工厂模式》

工厂模式1.简单工厂模式2.工厂模式3.抽象工厂模式4.工厂模式和抽象工厂模式的区别?5.Shiro源码中的工厂模式1.简单工厂模式角色组成工厂类:根据逻辑不同,产生具体的工厂产品。抽象产品:一般是具体产品继承的父类或者实现的接口。具体产品: 工厂类所创建的对象。1.运算接口public interface Operation { public double compute(double numberA,double numberB);}2.加法运算publ

2020-07-20 00:06:12 125

原创 《建造者模式》

建造者模式1.建造者模式的特点和解决问题2.建造者的简单使用3.Shiro源码中的建造者模式1.建造者模式的特点和解决问题特点:属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。主要解决: :使得"一个复杂对象"的创建工作变得简单2.建造者的简单使用//为bookStrap封装的分页类@Datapublic class DataGridResult { private Long total;

2020-07-19 20:49:36 101

原创 《代理模式》

代理模式1.静态代理2.动态代理3.Cglib代理1.静态代理静态代理的特点:①目标类和代理类都实现了同一接口②比较容易实现③在不修改目标类核心功能的前提下,很容易就可以对目标l类进行功能的增强④缺点:因为目标类和代理类实现了同一接口,此时接口一旦发生改变,两个类都必须同时实现新增的功能(动态代理可以解决这一缺点)/** *共同的接口 */public interface SingPerform { //举办演唱会 void sing();}/** * 目标

2020-07-19 00:56:15 137 1

原创 《单例模式》

单例模式单例模式1.非线程安全懒汉式2.线程安全懒汉式3.饿汉式(线程安全)4.双重校验锁(DCL,即 double-checked locking,线程安全的)5.静态内部类(线程安全)6.枚举(线程安全):首选单例模式单例模式特点:1.单例类只能有一个实例。2.单例类必须自己创建自己的唯一实例。3.对外提供一种访问其唯一对象的方式。意图:保证一个类仅有一个实例,并提供一个全局访问点。主要解决:一个全局使用的类,频繁的创建和销毁。(例:一个班级只有一个班主任)1.非线程安全懒汉式

2020-07-19 00:36:30 70

原创 《Vue进阶》

Vue进阶1.全局组件和局部组件2..父组件和子组件3.组件通信-父传子4.组件通信-子传父5.组件通信集合双向绑定6.Vue实现一个简单计算器7.Vue实现全选和反选1.全局组件和局部组件<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> </head> <body> <div id="app"&g

2020-07-16 22:56:24 171

原创 《Vue的基本语法》

Vue的基本语法Vue入门Vue入门<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> .acticve{ color: red; } .def{ color: #00FF00; } </style> </hea

2020-07-16 22:38:13 135

原创 《ApplicationContextAware》

ApplicationContextAware感知应用上下文1.ApplicationContextAware在项目中的应用2.聚合所有Service(结合ApplicationContextAware),实现无需注入,也可拿到Service,任意地方使用,带来更大的灵活性。1.ApplicationContextAware在项目中的应用实现ApplicationContextAware接口,拿到应用上下文就可以拿到IOC里面的Bean,自己需注册到IOCimport org.springfram

2020-07-16 21:56:41 86

原创 《适配器模式》

适配器模式1.适配器模式介绍2.代码实现之1.适配器模式介绍意图:可以理解为把现有接口伪装成目标接口,适配器作为一个桥梁,以此衔接两个不同接口优点:可以让任何两个没有关联的类一起运行,提高了类的复用,灵活性好缺点:过多使用适配器会让系统非常凌乱2.代码实现之前提:现有情况,只有220V电压,不能直接拥有15V电压新建220V电压接口和实现类interface IPower220V{ int output220V();}class Power220V implements

2020-07-10 23:50:31 114

原创 《装饰器模式》

装饰器模式1.装饰器模式介绍2.代码实现之1.装饰器模式介绍意图:动态的给一个对象添加一些额外的责任,装饰器模式相比生成子类更加灵活使用场景:给一个类动态增加功能和动态撤销功能,提高灵活性,而不修改原有的类优点:装饰类和被装饰类可以独立发展,不会互相耦合,装饰模式是继承的一个替代模式缺点:多层装饰比较复杂2.代码实现之新建睡觉的统一接口interface Action{ void sleep();}新建睡觉的实现类public class Sleep implem

2020-07-10 22:55:40 98

原创 《策略模式》

策略模式1.策略模式介绍2.代码实现之1.策略模式介绍主要解决:在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。优点: 1、算法可以自由切换。 2、避免大量的if…else。 3、扩展性良好2.代码实现之添加奖励的接口public interface IStrategy { void addReward(Integer type);}添加奖励实现Aimport org.springframework.stereotype.Component;

2020-07-10 22:09:02 76

原创 《模板模式》

模板模式1.模板模式介绍2.代码实现之1.模板模式介绍定义一个固定的组合算法骨架,而将一些算法延迟到子类实现解决:多个类中的某个方法,逻辑相同,只有部分实现不一样,出现了大量重复代码。使用场景:有多个子类共有方法,且逻辑相同特点:一般模板方法会加上final防止被恶意重写2.代码实现之新建豆浆抽象类,模拟豆浆制作过程public abstract class SoyaBeanMilk { public final void make(){ materialSele

2020-07-10 21:52:03 93

原创 《责任链模式》

责任链模式1.责任链模式介绍2.代码实现之1.责任链模式介绍它为请求创建了一个接收者对象的链,这种模式对请求的发送者和接受者进行解耦,根据请求的类型,自行决定由哪个接收者去处理请求特点:责任链模式通常每个接受者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么他会把相同的请求传给下一个接收者,依次类推2.代码实现之新建自定义请求类,模拟请求class CustomRequest{ private String name; private int level;

2020-07-09 23:22:21 104

原创 《ReentrantReadWriteLock》

ReentrantReadWriteLock可重入读写锁1.可重入读写锁的浅析简单使用可重入读写锁的应用:实现一个简单缓存,应对并发问题1.可重入读写锁的浅析简单使用 private static final ReentrantReadWriteLock readWriteLock = new ReentrantReadWriteLock(); private static final ReentrantReadWriteLock.WriteLock writeLock =

2020-07-06 00:36:03 83

原创 《HashMap中位运算的探索》

HashMap中位运算的探索(JDK1.8)1.哈希表中寻址操作:tab[i = (n - 1) & hash]2.散列函数3.tableSizeFor方法1.哈希表中寻址操作:tab[i = (n - 1) & hash]寻址就是找到即将被put进哈希表的元素在哈希表的具体下标位置从下面的源码可以看出n-1代表哈希表的最大下标,hash代表key经历散列函数的值那么寻址操作如何保证下标不越界呢?final V putVal(int hash, K key, V value,

2020-07-05 19:59:49 134

原创 《利用CAS实现自旋锁》

利用CAS实现自旋锁1.编写自旋锁2.测试自旋锁1.编写自旋锁import java.util.concurrent.atomic.AtomicBoolean;//自旋锁public class SpinLock { //CAS private AtomicBoolean cas = new AtomicBoolean(false); //锁持有者线程 private Thread spinLockOwnerThread = null; public voi

2020-07-04 17:16:58 477

原创 《Apache Commons 工具类》

Apache Commons 常用工具类1.总结图1.总结图

2020-06-29 00:10:15 77

原创 《JAVA WEB 的 I18N国际化》

I18N国际化1. I18N的概念2. 资源文件准备3. java代码中使用1. I18N的概念I18N 国际化(internationalization):软件支持多语言,软件会根据当前的语言使用环境,自动切换I18N 由来:i和n 中间有18个字符2. 资源文件准备使用properties文件配置文件的命名必须:基名_语言_国家. properties例如: system_zh_CN.properties、system_en_US.properties注意: 1.基名随便

2020-06-28 23:49:00 97

原创 《Vue项目的运行》

Vue项目的运行1.安装node.js(推荐版本 v10.15.3)2.安装完后cmd查看版本3.安装cnpm(国内npm镜像)4.安装完查看版本5.安装webpack6.安装完查看版本7.安装vue-cli8.使用示例9.执行npm run dev 提示 ERROR in Cannot find module 'node-sass'1.安装node.js(推荐版本 v10.15.3)https://nodejs.org/download/release/v10.15.3/安装细节:百度2

2020-06-27 15:39:33 250 1

原创 《ThreadLocal》

ThreadLocalThreadLocal1.ThreadLocal线程隔离和内存泄漏2.ThreadLocal的源码3.ThreadLocal使用示例ThreadLocal1.ThreadLocal线程隔离和内存泄漏1.get方法:是用来获取ThreadLocal在线程中保存的变量副本2.set方法:是用来设置当前线程中的变量副本3.remove方法:是用来移除当前线程的变量副本4.initialValue方法:被protected修饰,一般在使用的时候可以重写,初始化变量副本5.

2020-06-24 23:45:00 93

原创 Object

JDK源码阅读1.java所有类的根类 Object1.java所有类的根类 Objectpublic class Object { private static native void registerNatives(); static { registerNatives(); } /** * 返回对象的字节码对象 */ public final native Class<?> getClass();

2020-06-12 23:37:58 39

原创 JAVA后端《SpringBoot实现Session监听》

SpringBoot实现Session监听1.编写HttpSessionListener实现类2.自定义Session上下文(容器)3.配置注册监听器4.测试1.编写HttpSessionListener实现类import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;public class MySessionListener implements HttpSessionList

2020-05-31 01:07:34 230

原创 JAVA后端《FileUpload》

FileUploadSpringBoot实现FileUploadSpringBoot实现FileUpload1.导入依赖 <!--commons-fileupload --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <versio

2020-05-21 23:56:02 630

原创 Quartz

Quartz1.Quartz总结2.Quartz核心组件API3.Quartz的建造者4.Quartz的监听器1.Quartz总结2.Quartz核心组件API任务调度器调度器实现类触发器任务详情钥匙Quartz运行时上下文JobExecutionContext调度器工厂3.Quartz的建造者4.Quartz的监听器调度器的监听器触发器的监听器任务的监听器...

2020-05-21 23:51:16 153

空空如也

空空如也

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

TA关注的人

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