自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

suvue

suvue个人技术博客

  • 博客(67)
  • 收藏
  • 关注

原创 java.lang.ClassNotFoundException: com.alibaba.csp.sentinel.adapter.reactor.SentinelReactorTransforme

项目运行好好的,突然就报这个错。清理下idea的缓存就好了,默认选择的第二个,需要手动把第一个勾选上,然后重启就完事了。

2023-03-13 14:12:02 490

原创 RabbitMQ单机到集群完整搭建(一)

文章目录**RabbitMQ 安装和使用****一、安装依赖环境****二、安装RabbitMQ****三、启动和关闭**四、开启Web管理插件**五、防火墙添加端口****多机多节点集群部署****一、 环境准备****二、修改配置文件****三、防火墙添加端口****四、启动RabbitMQ****单机多节点部署****一、环境准备****二、启动RabbitMQ****三、防火墙添加端口****镜像队列模式集群**RabbitMQ 安装和使用注意:本文的安装位置默认为 /home/downloa

2020-05-09 16:55:16 1149

原创 spring-security(五):会话管理:为何使用了自定义数据库模型后,session管理策略不生效了?

1.解决方案重写实体类的hashcode()方法和equals方法,参考如下:public class SysUsers implements UserDetails { private String userName; //.......省略属性信息、setter、getter方法以及实现的方法 @Override public int hashCode(...

2020-05-03 16:13:20 562 2

原创 spring-security(四):实现自动登录与注销登录

前言我们采用的是持久化令牌方案,其中最核心的是series和token两个值。1.创建一张存储自动登录信息的表CREATE TABLE `persistent_logins` ( `username` varchar(64) NOT NULL, `series` varchar(64) NOT NULL, `token` varchar(64) NOT NULL, `last...

2020-05-03 11:50:22 710

原创 spring-security(三):自定义验证实现图片验证码功能

前言验证码相关的依赖和代码,在上一篇已经写到了,这里不在赘述。1.实现一个封装额外信息的detail类package com.demo.springsecuritydemo.detail;import org.springframework.security.web.authentication.WebAuthenticationDetails;import org.springfra...

2020-05-03 10:40:29 500

原创 spring-security(二):过滤器实现图片验证码

1.添加验证码相关依赖<!--用于获取验证码 不可用于生产环境--> <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> ...

2020-05-02 17:59:42 233

原创 spring-security(一):自定义数据库模型的认证与授权

前言自定义数据库结构实际上仅仅需要实现一个自定义的UserDetailsService;1.数据库准备CREATE TABLE `sys_users` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password` varchar(60) DEFAULT NULL, ...

2020-05-02 16:10:52 459

原创 spring bean的生命周期代码演示

文章目录1.测试用的bean2.自定义的MyBeanFactoryPostProcessor3.自定义的MyBeanPostProcessor4.自定义的MyInstantiationAwareBeanPostProcessor(也属于BeanPostProcessor的实现类,不过功能更为丰富)5.xml中进行bean的注册6.测试7.结果输出1.测试用的beanpackage com.ex...

2020-04-12 12:39:50 214

原创 spring-boot的单元测试中,@Before不被执行的原因

我们先来看下笔者的单元测试的依赖版本: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6...

2020-04-11 13:14:39 5694 2

原创 垃圾回收机制

1.自动垃圾收集自动垃圾收集是查看堆内存,识别正在使用哪些对象以及哪些对象未被删除以及删除未使用对象的过程。使用中的对象或引用的对象意味着程序的某些部分仍然维护指向该对象的指针。程序的任何部分都不再引用未使用的对象或未引用的对象,因此可以回收未引用对象使用的内存。像C这样的编程语言中,分配和释放内存是一个手动过程。在Java中,解除分配内存的过程由垃圾收集器自动处理。2.如何确定内...

2020-02-18 16:54:35 157

原创 类加载机制

1.类生命周期加载:读取二进制内容验证:验证class文件格式规范、语义分析、引用验证、字节码验证准备:分配内存、设置类static修饰的变量初始化解析:类、接口、字段、类方法等解析初始化:为静态变量赋值;执行静态代码块使用:创建实例对象卸载:从JVM方法区卸载2.类加载器类加载器负责装入类,搜索网络、jar、zip、文件夹、二进制数据、内存等知道位置的类资源。一个Java程...

2020-02-18 14:53:26 109

原创 推送系统功能设计

1.架构设计图push_server_dispatch应用,解决了当我们的推送服务器集群处理后,客户端无法知道连接那个服务器的问题。不采用nginx负载均衡,是因为这属于中心负载均衡,当用户量大的时候,处理起来并不好。推送系统说到底,还是客户端到服务端的数据流转问题。2.短链接与长连接短链接:请求/响应之后,关闭已建立的TCP连接,下次请求再建立一次连接。长连接:请求/响应之后,...

2020-02-17 20:59:01 1090

原创 Netty零拷贝机制

1.Netty自己的ByteBufByteBuf是为解决ByteBuffer的问题和满足网络应用程序开发人员的日常需求而设计的。1.1JDK ByteBuffer的缺点无法动态扩容。长度是固定的,不能动态扩展和收缩,当数据大于ByteBuffer容量时,会发生索引越界异常。API使用复杂。读写的时候需要手动调用flip()和rewind等方法,使用时需要十分谨慎的使用这些api,否则很容...

2020-02-16 14:43:58 177

原创 Netty职责链Pipeline详解

文章目录1.设计模式 - 责任链模式2.实现责任链模式2.1类似tomcat的filters伪代码2.2类似Netty的责任链模式伪代码3.一个简单例子要素一:处理器抽象类要素二:具体的处理器实现类要素三:保存处理器信息的类要素四:处理执行4.Netty中的ChannelPipeline责任链4.1入站事件和出站事件1.设计模式 - 责任链模式责任链模式为请求创建了一个处理对象的链。发起请...

2020-02-15 21:16:00 3575

原创 Netty线程模型

1.Netty简介Netty是一个高性能、高可扩展性的异步事件驱动的网络应用程序框架,它极大地简化了TCP和UDP客户端和服务器开发等网络编程。Netty重要的四个内容:Reactor线程模型:一种高性能的多线程程序设计思路。Netty中自己定义的Channel概念:增强版的通道概念。ChannelPipeline职责链设计模式:事件处理机制。内存管理:增强的ByteBuffer缓冲...

2020-02-15 15:52:10 133

原创 NIO网络编程

文章目录1.Java NIO2.Buffer缓存区3.Buffer工作原理3.1.Buffer API使用练习3.2ByteBuffer内存类型4.Channel通道4.1SocketChannel4.2ServerSocketChannel5.NIO模拟客户端和服务端5.1阻塞式的方式5.2升级之后的服务端6.Selector选择器6.1用Selector来优化服务端代码6.2将多线程技术与之结...

2020-02-14 20:07:33 200

原创 TCP/UDP协议

文章目录1.OSI网络七层模型1.1各层的主要功能低三层承上启下作用层高三层2.传输控制协议TCP2.1 TCP握手机制2.1.1三次握手过程Ⅰ.为什么需要三次握手,两次不行吗?Ⅱ.什么是半连接队列?Ⅲ.ISN(Initial Sequence Number)是固定的吗?Ⅳ:三次握手过程中可以携带数据吗?Ⅴ. SYN攻击是什么?2.1.2 四次挥手过程Ⅰ. 挥手为什么需要四次?Ⅱ.四次挥手释放连接...

2020-02-13 21:55:20 308

原创 线程安全之原子操作

可见性问题:让一个线程对共享变量的修改,能够及时的被其他线程看到。根据 JMM 中规定的happen before 和 同步原则:对某个volatile字段的写操作 happens-before 每个后续对该volatile 字段的读操作。对volatile变量 v 的写入,与所有其他线程后续对 v 的读同步。要满足这些条件,所以volatile关键字就有这些功能:禁止缓存对vola...

2020-02-10 19:05:49 367

原创 锁的概念和synchronizated关键字

1. Java中锁的概念锁类型描述自旋锁为了不放弃CPU执行事件,循环地使用CAS技术对数据尝试进行更新,直至成功悲观锁假定会发生并发冲突,同步所有对数据的相关操作,从读数据就开始上锁乐观锁假定没有冲突,在修改数据时如果发现数据和之前获取的不一致,则读最新数据,修改后重试修改独享锁(写)给资源加上写锁,线程可以修改资源,其他线程不能再加锁(单写)...

2020-02-09 17:14:56 365

原创 Java并发相关知识集锦

1.class文件class文件包含JAVA程序执行的字节码;数据严格按照格式(虚拟机要求的一种规范)紧凑排列在class文件中的二进制流,中间无任何分隔符;文件开头有一个0xcafebabe(16进制)特殊的一个标志。这类文件专门给JVM读里面的内容,因此具有很复杂的格式,程序员阅读可以进行工具查看。1.1查看class文件内容Demo1.class的内容如下:public class...

2020-02-09 10:52:07 285

原创 23种设计模式(9):观察者模式

目录1.概念2.类图3.观察者模式重要元素4.程式范例5.观察者模式的优点6.观察者模式的缺点1.概念观察者模式:定义对象间一种多对一的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。2.类图在软件系统中经常会有这样的需求:如果一个对象的状态发生改变,某些与它相关的对象也要随之做出相应的变化。比如,我们要设计一个右键菜单的功能,只要在软件的有效区域内点击鼠...

2020-01-19 17:54:35 121

原创 23中设计模式(8):中介者模式

1.概念中介者模式:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。2.类图3.中介者模式的结构中介者模式又称为调停者模式,从类图中看,共分为3部分:抽象中介者(AbstractMediator):定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现...

2020-01-19 09:49:51 158

原创 23种设计模式(7):原型模式

目录1.概念2.程式范例3.适用性1.概念​ 原型模式(Prototype Pattern)指定要使用原型实例创建的对象的种类,并通过复制此原型来创建新对象。还记得前几年的多利吗?被克隆的羊!简而言之,通过克隆基于现有的对象创建一个新的对象。​ 维基百科上对原型模式的解释是这样说的,原型模式是软件开发中的一种创新设计模式。要创建的对象类型由原型实例决定,该实例被克隆以生成一个新对象。简单...

2020-01-18 09:42:45 150

原创 深入理解BIO、NIO、AIO

目录1 IO介绍1.1 全面认识Java中的IO1.2 BIO、NIO、AIO的区别2 同步、异步、阻塞、非阻塞2.1同步与异步2.2阻塞与非阻塞2.3 同/异步、非/阻塞组合性能分析1 IO介绍​ 在开始之前,我们先来思考一个问题:我们经常所说的“IO”的全称到底是什么?可能很多人看到这个问题和我一样一脸懵逼,IO的全称其实是:Input/Output的缩写。​ BIO 也就是 Jav...

2020-01-17 15:39:49 168

原创 Java中的==与equal详细解析

目录==1.基本类型比较时,==比较的是值。2.引用类型比较时,==比较的是对象的引用。3.Integer等包装数据类型中缓存池的作用。4.String数据类型中字符串常量池的作用。2.equals()2.1.普通对象2.1 Integer等包装类型对象2.3 String对象3.小结Java中的八大基本数据类型:byte、short、int、long、float、double、boolean、...

2020-01-16 17:50:04 174

原创 JS中map直接转换成json时数据为空解决方案

1.先将map转换成obj,然后再转换成json strMapToObj(strMap){ let obj= Object.create(null); for (let[k,v] of strMap) { obj[k] = v; } return obj; } /** *map转换为json */ mapToJson(map) {...

2020-01-15 11:19:43 2267

原创 23种设计模式(6):代理模式

目录1.概念2.程式范例2.1巫师2.2塔接口2.3象牙塔实现类2.4象牙塔的代理类(相当于例子的门卫)2.5客户端调用者2.6结果打印2.7.小结3.jdk动态代理模式3.1 InvocationHandler接口3.2Proxy类3.3程式范例4.CGLIB动态代理模式4.1程式范例1.概念定义:为另一个对象提供代理,以控制外界对其的访问。​ 维基百科上的对代理模式是这样解释的,代理是...

2020-01-14 22:58:54 164

原创 23种设计模式(5):模板方法模式

目录1.概念2.适用性3.程式范例3.1.抽象类来封装算法的框架和核心算法3.2.播种小麦3.3.播种玉米3.4.农民伯伯3.5.客户端调用者3.6.结果打印4.模板方法模式在JDK1.8中的使用5.模板方法模式在Spring中的使用6.总结1.概念​ 在父类中定义算法的框架,让子类根据业务需要,来填充框架的具体实现步骤。模板方法使子类可以重新定义算法的某些实现,而无需更改算法的结构。为确...

2020-01-13 14:23:32 150

原创 23种设计模式(4):建造者模式

目录1.概念2.为什么要用这个建造者模式呢3.程式范例1.概念定义:建造者模式是把一个物体的构造过程与其本身进行分离,使得相同的构造过程可以创建不同的物体,简而言之,就是构造过程复用。想象一下我们玩角色扮演类游戏的时候,刚开始电脑会让你创建角色,比如选择人物的职业、头发颜色、性别,最后输入一个骚气的昵称,这个创建的过程就算完成了!2.为什么要用这个建造者模式呢答:它是一种创建对象的软件设...

2020-01-12 22:26:04 170

原创 23种设计模式(3):抽象工厂模式

目录1.概念2.抽象工厂模式与工厂方法模式的区别3.举个例子加深你的理解4.抽象工厂模式代码实现4.1汽车工厂接口4.2汽车产品接口4.3汽车产品实现4.4汽车工厂实现4.5调用者模拟代码4.6结果打印5.抽象工厂模式的缺点1.概念定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。首先来理解下两个概念:产品等级结构:在编程中,通常一个产品结构,表现为一个产品接口...

2020-01-12 16:55:17 130

原创 23种设计模式(2):工厂方法模式

​ 工厂模式根据抽象程度的不同分为三种:简单工厂模式(也叫静态工厂模式)、本文所讲述的工厂方法模式、以及抽象工厂模式。工厂模式的优点:可以使代码结构清晰,有效地封装变化。使得调用者根本无需关心产品的实例化过程,只需依赖工厂即可得到自己想要的产品。对调用者屏蔽具体的产品类。让调用者只关心产品的接口,这样即使我们对产品类变更了具体的实现,对调用者来说没有任何影响。工厂方法模式的四要素...

2020-01-11 13:08:42 190

原创 23中设计模式(1):单例模式

目录1.设计要点2.实现方式3.优点4.使用注意事项5.单例模式在spring框架中应用6.单例对象究竟会不被GC垃圾回收机制回收呢?定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。1.设计要点构造方法私有化。有指向自己实例的静态私有引用。有对外提供自身实例的静态公有方法。2.实现方式根据实例化对象时机的不同分为三种:一种是饿汉式单例,一种是懒汉式单例,还...

2020-01-09 23:17:16 185

原创 设计模式概论

​ 设计模式(Design pattern)是很多程序员总结出来的优秀实践。保证了代码的可重用性、易读性以及代码的可靠性。设计模式使代码编制真正实现工程化,它是是软件工程的基石脉络,如同大厦的结构一样。​ 提到设计模式,不得不感谢GoF(Gang of Four,四人组),他们1995年出版的《设计模式》一书,第一次将设计模式提升到理论高度,并将之规范化。书中一共总结了23种基本的设计模式。...

2020-01-09 23:14:14 217

原创 java中jdk8的Stream流的组合进阶用法

​ 我们知道jdk8的一大特色就是推出了Stream流编程,一段冗长的代码,抑或是相对较复杂的业务逻辑,Stream流让一行代码来完成变成了可能!​ 下面通过一个例子来学习下Stream中的filter、collect等的组合用法,直接上代码吧,具体的请复制到自己的IDE中运行即可,代码书写很简单。package cn.suvue.discipline.practice.stream;...

2020-01-08 22:03:53 652

原创 Java面试复习---JavaWeb

一、基本概念1.1.静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变。静态web资源开发技术:Html1.2.动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。动态web资源开发技术:JSP/Servlet、ASP、PHP等。在Java中,动态web资源开发技术统Javaweb。1.3.web应用程序:指...

2020-01-02 23:14:31 319

原创 用java来实现一个栈

代码奉上/** * 基于java实现的出栈入栈操作 * * @author suvue * @date 2019/12/30 */public class MyStack { /** * 存储栈内元素的数组 */ private int[] storage; /** * 栈的总容量 */ private in...

2019-12-31 17:27:59 370

原创 设计一个泛型函数,用于获取数组的最小值

直接上代码public class MinValue { private static <T extends Number & Comparable<? super T>> T minValue(T[] values) { if (values == null || values.length == 0) { ret...

2019-12-30 22:58:17 292

原创 java复习---基础

java面试复习—基础1.面向对象和面向过程的区别面向过程:性能较高。面向过程语言大多是可以直接编译成机械码,直接就能在电脑上运行;而面向过程语言在运行时需要进行类的实例化,开销大并且消耗资源;而对于Java语言的性能较差问题,主要原因是它属于半编译语言,最终的执行代码不是可以直接被CPU执行的二进制机械码。面向对象:易维护,易复用,易拓展。这些优点完全建立在面向对象语言的三大特性之上的,...

2019-12-29 21:14:22 2243 16

原创 java基础之注解

java基础之注解自定义注解:@Retention(RetentionPolicy.RUNTIME)public @interface MyAnnotation { String name(); int age();}测试代码:public class AnnotationTest { @MyAnnotation(name = "suvue",age=22)...

2019-12-28 16:11:06 174

原创 java基础之泛型

java基础之泛型1.为什么需要泛型呢?​ 在泛型诞生之前,java中使用object来代替任意类型的。比如你要往一个list中存储dog对象,但是你的同事接过你的代码后,往里面又存了cat对象,这样在取对象的时候,由于都是object对象,因此向下转型变得很困难且不安全。2.泛型的定义把明确类型的工作,推迟到创建对象或者调用方法的时候再去执行。简单理解的话,泛型就像孙...

2019-12-28 15:33:30 143

空空如也

空空如也

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

TA关注的人

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