自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

奋斗的哼哼

分享技术,一块学习

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

原创 枚举类的使用方法

一、理解枚举类型枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性、安全性以及便捷性。下面先来看看如何写一个枚举?二、枚举的定义语法在没有枚举类型时定义常量常见的方式public class DayDemo { public static final...

2019-06-02 11:50:05 80182 13

原创 如何让百度等搜索引擎搜到自己的博客

博客写好后,将博客的链接放到百度站长平台 链接提交等待一段时间后 然后就可以搜到自己写的博客了百度站长平台链接: http://zhanzhang.baidu.com/linksubmit/url...

2019-06-02 10:34:19 1047 1

原创 java中static关键字的使用说明

1、static关键字的用途  在《Java编程思想》P86页有这样一段话:  “static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”  这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键字的基本作用,简...

2019-06-01 23:01:29 30614 12

原创 uniapp中利用scroll-view实现横向导航栏

实现移动端的横向滚动的导航栏,选中的导航项需居中显示。

2022-10-12 18:21:38 1569 1

原创 shiro系列(一):主要模块介绍

shiro系列(一)模块介绍1.shiro介绍2.主要模块介绍2.1 Subject2.2 SecurityManager2.3 Realm3 shiro 内部架构1.shiro介绍Shiro的主要两个功能。Authentication(认证)和Authorization(授权)。不光英文看起来像,中文名字看起来意思也相近。我举个通俗的例子:我们登录某宝,我们的账号密码就是认证,确认你是否能登录。我们登录后,我们是否有某宝会员,还是高级会员,还是最新的88vip,这些就是授权,确认你是否有这些权利。

2021-12-28 22:52:53 1099

原创 SpringBoot 将服务器上的目录压缩成.zip压缩包并下载到本地

开发中过程中遇到这样一个需求,所有的文件按照不同的等级分别归档到不同的文件夹中,然后下载。开发思路将文件按照不同等级封装到服务器上的临时的一个文件夹中。把文件夹压缩成.zip下载 .zip 文件删除服务器上的临时文件代码实现1\创建文件工具类public class FileUtils { private static final int BUFFER_SIZE = 2 * 1024;}2、第一个方法 (创建一个临时目录)/** * @return .

2021-07-01 16:24:41 2112

原创 JVM系列之运行时数据区域

JVM系列之运行时数据区域程序计数器java 虚拟机在执行Java程序过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。Java虚拟机所管理的内存将会包括一下几个运行时数据去域。程序计数器程序计数器是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器。在Java虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来获取下一条需要执行的

2021-01-26 22:43:40 209

转载 Java并发编程:volatile关键字解析

Java并发编程:volatile关键字解析一.内存模型的相关概念二.并发编程中的三个概念1.原子性2.可见性3.有序性三.Java内存模型1.原子性2.可见性3.有序性四.深入剖析volatile关键字1.volatile关键字的两层语义2.volatile保证原子性吗?3.volatile能保证有序性吗?4.volatile的原理和实现机制本文转载自http://www.cnblogs.com/dolphin0520/p/3920373.htmlvolatile这个关键字可能很多朋友都听说过,或许

2021-01-07 16:02:13 152

原创 SpringBoot整合RabbitMQ实现 高并发和限流

文章目录1、高并发2、限流如果小伙伴对SpringBoot整合RabbitMQ不熟悉,请看我的前两篇文章SpringBoot整合RabbitMQ详细案例(入门RabbitMQ看这一篇就够了)SpringBoot整合RabbitMQ进阶(手动确认消息)这篇文章我们来说一下利用RabbitMQ 解决高并发和限流的问题,我们这里都提供两种解决方案。这篇文章都是基于商量文章的基础来实现的。1、高并发第一种 :使用注解@RabbitListener/** * testDirectRabbit 是监听对

2020-12-30 23:40:14 2975

转载 SpringBoot整合RabbitMQ进阶(手动确认消息)

文章目录1、回调函数2、消息确认3、代码实现一下手动确认在上一篇中我们已经讲解了SpringBoot整合RabbitMQ的基础知识,这里附上链接,SpringBoot整合RabbitMQ基础部分,如果对SpringBoot整合RabbitMQ不熟悉的同学,可以先看完这一篇文章在看进阶部分的文章。下面我们在来讲解一下SpringBoot整合RabbitMQ进阶部分。这里写的东西都是基于上篇文章来写的,上篇文章已经写的代码,这里就不在重复。1、回调函数在rabbitmq-provider项目的appl

2020-12-30 23:06:38 4312 1

原创 SpringBoot整合RabbitMQ详细案例(入门RabbitMQ看这一篇就够了)

SpringBoot整合RabbitMQ详细案例(入门RabbitMQ看这一篇就够了)1、RabbitMQ的使用场景1.1、异步处理1.2、 应用解耦1.3、流量削峰2、RabbitMQ 交换机介绍2.1、Direct exchange(直连交换机)2.2 、扇型交换机2.3、主题交换机3、队列3.1 、 队列介绍3.2、队列持久化4、RabbitMQ 整合SpringBoot 使用4.1、前期准备工作4.2 测试Direct exchange(直连交换机)4.3 测试扇型交换机(funout exchan

2020-12-29 23:46:31 1492 4

转载 SpringSecurity之SprinigSecurity中的三种权限控制方式

SprinigSecurity中的三种权限控制方式1、表达式控制 URL 路径权限2、表达式控制方法权限3、使用过滤注解1、表达式控制 URL 路径权限SpringSecurity支持在URL和方法权限控制的时使用SpEl表达式,如果表达式返回值为true则表示需要对应的权限,否则表示不需要对应的权限。提供表达式的类是SecurityExpressionRoot。 它有两个实现类MethodSecurityExpressionRoot 和 WebSecurityExpressionRoot,表示在应对

2020-12-27 22:49:39 284

原创 Spring Security之Spring Security授权和如何将数据存入数据库

文章目录1、授权1.1配置授权1.2 角色继承2、将数据存入数据库中1、授权所谓的授权,就是用户如果要访问某一个资源,我们要去检查用户是否具备这样的权限,如果具备就允许访问,如果不具备,则不允许访问1.1配置授权基于内存配置测试用户,我们有两种方式,第一种就是我们本系列前面几篇文章用的配置方式,如下: @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception {

2020-12-15 23:37:27 654 1

原创 SpringSecurity之 Spring Security 做前后端分离,实现 JSON 交互

Spring Security 做前后端分离,实现 JSON 交互1、登录成功2、登录失败3、 未认证处理方案4、 注销登录在前后端分离这样的开发架构下,前后端的交互都是通过 JSON 来进行,无论登录成功还是失败,都不会有什么服务端跳转或者客户端跳转之类。登录成功了,服务端就返回一段登录成功的提示 JSON 给前端,前端收到之后,该跳转该展示,由前端自己决定,就和后端没有关系了。登录失败了,服务端就返回一段登录失败的提示 JSON 给前端,前端收到之后,该跳转该展示,由前端自己决定,也和后

2020-12-15 23:05:34 572 1

转载 SpringSecurity之SpringSecurity的登录流程

SpringSecurity之SpringSecurity的登录流程1.无处不在的 Authentication2、登录流程1.无处不在的 Authentication在 Spring Security 中有一个非常重要的对象叫做 Authentication,我们可以在任何地方注入 Authentication 进而获取到当前登录用户信息,Authentication 本身是一个接口,它有很多实现类:在这众多的实现类中,我们最常用的就是 UsernamePasswordAuthenticatio

2020-12-15 22:27:12 778

转载 SpringSecurity之SpringSecurity 工作原理

SpringSecurity之SpringSecurity 工作原理1、SpringSecurity 过滤器链2、SpringSecurity 流程图3、Security 配置4、Security 权限系统1、SpringSecurity 过滤器链SpringSecurity 采用的是责任链的设计模式,它有一条很长的过滤器链。现在对这条过滤器链的各个进行说明:WebAsyncManagerIntegrationFilter: 将 Security 上下文与 Spring Web 中用于处理异步请

2020-12-14 23:21:07 567

原创 SpringSecurity系列之自定义表单登录

文章目录1 SpringSecurity的初体验1.1 创建项目1.2 配置用户1.2.1 配置文件1.2.2 配置类1.3自定义表单登录页2登陆接口3、登录参数4.登录回调4.1 登录成功回调4.2 登录失败回调5.注销登录1 SpringSecurity的初体验1.1 创建项目项目创建成功后,Spring Security 的依赖就添加进来了,在 Spring Boot 中我们加入的是 spring-boot-starter-security在项目启动过程中,我们会看到如下一行日志:Using

2020-12-08 23:47:52 481

原创 Java NIO Files类配合操作文件的实例

文章目录一、前言二 、主要的API 使用说明一、前言该类只包含对文件,目录或其他类型文件进行操作的静态方法二 、主要的API 使用说明exists()检查给定的path 在文件系统中是否存在Path path = Paths.get("D:\\data");boolean pathExists = Files.exists(path,new LinkOption[]{LinkOption.NOFOLLOW_LINKS});// 输出 falseSystem.out.print

2020-11-30 21:49:42 168

原创 Java NIO Path接口操作文件

文章目录1、前言2、Path 的使用2.1 创建一个Path实例2.2 API的使用1、前言Path接口位于java.nio.file包中,所以Path接口的完全限定名称为java.nio.file.Path。Java Path实例表示文件系统中的路径。一个路径可以指向一个文件或一个目录。路径可以是绝对路径,也可以是相对路径。在许多方面,java.nio.file.Path接口类似于java.io.File类,但是有一些细微的差别。不过,在许多情况下,您可以使用Path接口来替换File类的使用。

2020-11-27 16:50:05 408 1

原创 对象序列化的 两种种方式(实现Serializable接口和实现Externalizable接口)

文章目录1、方式一(实现Serializable接口,通过序列化流)2、方式二 (实现Externalizable接口,重写writeExternal和readExternal方法)对象序列化的目标是将对象保存到磁盘中,或允许在网络中直接传输对象。对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点。其他程序一旦获得了这种二进制流,都可以将这种二进制流恢复成原来的Java对象。在Java中,对象的序列化与

2020-11-25 17:18:55 2479

原创 Java程序中获取项目根路径的方法

public class FileTest1 { public static void main(String[] args) { FileTest1 fileTest1 = new FileTest1(); try { fileTest1.getUrl(); } catch (IOException e) { e.printStackTrace(); } } publi

2020-11-25 14:32:57 8806

原创 多线程之JUC工具类(简单介绍)

文章目录1、前言2、JUC里线程安全集合的使用3、JUC里工具的使用(Semaphor 、CountDownLatch、CyclicBarrier)3.1、CountDownLatch3.2、 Semaphore3.3 、CyclicBarrier1、前言在介绍JUC之前先总结一下我们之前学过的知识点。Vector 、Hashtable 、StringBuffer 这些都是线程安全的,ArrayList 、LinkedList、HashMap、HashSet、TreeMap、TreeSet、Stri

2020-11-24 17:19:09 228

原创 多线程之线程同步(synchronized关键字,ReentrantLock)

1、什么情况下会产生线程安全问题1,多个线程在操作共享的数据。2,操作共享数据的线程代码有多条。首先我们通过下面这段代码,通过模拟售票方式模拟线程不安全的情况public class ThreadExample extends Thread { static final ConcurrentLinkedDeque<Integer> queue = new ConcurrentLinkedDeque<>(); private static final int

2020-11-23 23:43:41 560 5

原创 多线程之控制线程(join(),sleep(),yeild(),后台线程,线程优先级的使用)

文章目录1、join线程2、线程睡眠 sleep()方法()3、后台线程4、线程让步5、线程优先级1、join线程join() 方法的作用是使线程同步执行,将并发执行变成串行执行public class JoinTestDemo { public static void main(String[] args) { ThreadJoinTest t1 = new ThreadJoinTest("小明"); ThreadJoinTest t2 = new Thr

2020-11-23 16:04:46 148

原创 java8新特性之Stream的使用

文章目录1、概述2、分类3、创建流3.1、通过集合创建3.2 通过数组3.3、使用 stream 中的静态方法 of(),iterate(),generate()3.4 、使用 Pattern.splitAsStream() 方法 ,将字符串转换成流4、 流的操作4.1、 筛选和切片4.2 2.2映射4.3 排序4.4 消费5、流的终止操作5.1匹配聚合的操作5.2 规约操作5.3 收集工作1、概述Stream是Java8的一大亮点,是对容器对象功能的增强,它专注于对容器对象进行各种非常便利、高效的

2020-11-07 00:15:53 381

原创 vue之 vuex:弄懂mapState、mapGetters、mapMutations、mapActions

文章目录vuex 进阶一、 state1.1 引入vuex 以后,我们需要在state中定义变量,类似于vue中的data,通过state来存放状态1.2 mapState 辅助函数二、getters三、Mutation3.1 Mutation3.2 mapMutations3.3 使用常量替代Mutation事件类型四、actions4.1 action类似于mutationvuex 进阶一、 state1.1 引入vuex 以后,我们需要在state中定义变量,类似于vue中的data,通过sta

2020-10-18 11:54:35 897

转载 vue之 vuex 的使用

如果之前未使用过 vuex 请务必先看一下参考 参考: vue中store存储store.commit和store.dispatch的区别及使用vuex的安装和简单使用 什么情况下应该使用 Vuex? Vuex 可以帮助我们管理共享状态,并附带了更多的概念和框架。这需要...

2020-10-18 10:05:38 335

原创 docker高级之容器数据卷

文章目录容器数据卷1、什么是数据卷2、容器数据卷的作用3、容器数据卷的使用3.1、创建容器数据卷3.2使用数据卷3.3 、 数据卷实战 (mysql 安装)3.4 利用数据卷容器实现容器间数据共享3.5 数据备份3.6 数据恢复4、具名和匿名挂载5、 三种挂载: 匿名挂载、具名挂载、指定路径挂载6、初识DockerFile6.1 dockerFile 的创建步骤6.2 dockerFile 指令语句的基础知识6.3 dockerFile的基础指令6.4构建dockerFile6.5 使用dicker hi

2020-10-09 21:26:48 299

原创 docker之docker命令的基本使用

文章目录1、docker 安装与卸载2、docker 帮助命令3、镜像命令3.1 查看镜像(docker images)3.2 搜索镜像(docker search)3.3下载镜像(docker pull)3.3.1 配置镜像加速器3.4 删除镜像3.5 容器命令3.5.13.5.2 新建容器并启动3.5.3 列出所有运行的容器3.5.4 退出容器3.5.5删除容器3.5.6 启动和停止容器的操作3.5.7 后台启动命令3.6 查看日志( docker logs CONTAINER)3.7 查看镜像的进程(

2020-09-27 10:45:41 187

转载 springCloud之 springCloud alibaba

这里不自己整理了,转发一下博主的博客,写的非常好。感谢这位博主。1、 springcloud alibaba 介绍 springcloud alibaba 介绍2、springcloud nacos SpringCloud Alibaba Nacos服务注册和配置中心3、springcloud setinel SpringCloud Alibaba Sentinel实现熔断与限流4、springcloud seata SpringCloud Alibaba Seata处理分布式事务

2020-09-07 17:48:40 228

原创 SpringCloud系列之SpringCloud stream 消息驱动

StringCloud Stream 消息驱动屏蔽底层消息中间件的差异,降低切换版本,统一消息的编程模型 中文文档 https://m.wang1314.com/doc/webapp/topic/20971999.html1、StringCloud Stream 标准流程套路Binder很方便的中间件,屏蔽差异channel通道,是队列Queue的一种抽象,在消息通讯系统中就是实现存储和转发的媒介,通过对Channel对队列进行配置Source和Sink简单的

2020-09-01 00:00:04 280

原创 SpringCloud系列之zuul路由

SpringCloud 之zuul 路由的使用Zuul包含了对请求的路由和过滤两个最主要的功能:其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础.Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。 注意:Zuul服务最终还是会注册进Eureka 提供=代理+路由+过

2020-08-30 21:36:11 120

原创 SpringCloud 系列之 Hystrix熔断器

Hystrix 熔断器的使用1、Hystrix 的介绍Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统中,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整个服务失败,避免级联故障,以提高分布式系统的弹性。“断路器”本身是一种开关设置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的,可处理的备选响应(FallBack),而不是长时间的等待或者抛出服务方无法处理的异常,这样就

2020-08-28 00:37:37 136

原创 Springcloud 系列之feign负载均衡

feign 的使用Feign是声明性的web服务客户端。它使编写web服务客户端更加容易。要使用Feign,请创建一个接口并对其进行注释。它具有可插入的注释支持,包括Feign注释和JAX-RS注释。Feign还支持可插拔编码器和解码器。Spring Cloud添加了对Spring MVC注释的支持,并支持使用Spring Web中默认使用的同一HttpMessageConverters。Spring Cloud集成了Ribbon和Eureka以在使用Feign时提供负载平衡的http客户端。1、创

2020-08-26 23:29:54 701

原创 springcloud系列之eureka集群和ribbon 负载均衡

springcloud系列之eureka集群上一篇文章的基础是在创建两个eureka 服务,分别是 7002,7003,操作和创建7001 一样,这里就不做描述了,下面主要来重点讲述一下eureka 集群的配置1 创建eureka 集群1.1这里已经创建了3个eureka 服务,7001,7002,7003,下面直接修改yml文件即可,其他的不需要做改变这里只拿7001 做演示,7002,7003 一样的配置server: port: 7001eureka: instance:

2020-08-21 00:16:35 740

原创 springCloud系列之eureka服务注册与发现

springCloud 之eureka 的使用1、eureka 介绍Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务架构来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了。功能类似于dubbo的注册中心,比如Zookeeper。2、eureka 基本架构Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(请对比Zooke

2020-08-20 23:18:01 258

原创 linux命令大全(持续更新)

linux 常用命令1、linux 防火墙命令2、查看目录命令 ls(显示当前目录中文件名字的列表)3、管理文件和目录的命令(1) mkdir 创建指定文件名的文件夹(2) cd 进入某个指定的目录中(中间一定要有空格)(3) pwd 显示当前所在目录的绝对路径(4) rmdir 删除空目录(5) cp 复制文件或目录(6) mv 为文件或目录改名,或将文件或目录转入其他位置。(7)rm 用于删除一个文件或目录(8)格式(9) touch 修改文件或目录的目录时间,若文件不存在,系统会自建立一个新

2020-08-16 22:31:39 172

原创 权限控制之加载菜单栏(利用递归)

权限控制之加载树形表单在我们平时做的项目中都有权限控制这个需求,其中菜单栏的展示是树形结构的,那么如何更好的把后台查到ode数据封装成树形结构呢,这篇文章我们来着重的介绍一下。利用递归来实现树形结构的展示。首先来看一下表结构从表结构中可以看出,可以根据id 和 pid 作为条件,将查询到的数据封装成树形结构一、 加载树形菜单(递归)通过代码实现加载树形结构的菜单栏代码框架使用的 SpringBoot + mybatis_plus 实现的(1) 控制层代码//获取全部菜//s

2020-08-03 23:43:43 492 1

原创 StringUtils 常用的方法总结(含源码分析)

StringUtils 常用的方法总结(含源码分析)StringUtils 是 package org.apache.commons.lang 包下面的工具类。**public static boolean isEmpty(String str) ** 判断某个字符串是否为空或是null返回true,否则返回false//具体的判断,以供参考StringUtils.isEmpty(null) = trueStringUtils.isEmpty("") = tru

2020-07-29 10:28:22 382

原创 SpringBoot整合swagger2生成在线文档(对接口测试和生成接口文档真是太完美了,赶紧用起来吧)

相信各位在公司写API文档数量应该不少,当然如果你还处在自己一个人开发前后台的年代,当我没说,如今为了前后台更好的对接,还是为了以后交接方便,都有要求写API文档。一、描述首先说一下swagger的两个主要的作用1.接口的文档在线自动生成。2.功能测试。swagger 中每个注解的作用已经在这篇博客中做了详细的介绍。https://blog.csdn.net/weixin_43610698/article/details/107392550二、运用1、添加依赖<!--管理接口文档.

2020-07-16 20:22:52 406

空空如也

空空如也

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

TA关注的人

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