• 优秀的Web图片预览+图片裁剪插件,分享给需要的开发者

    介绍Viewer.js 是一款强大的图片预览查看器,之前在做项目的时候遇到的是无法给网页中的图片添加一个强大的预览功能,而Viewer.js刚好满足了我的需求。本文就简单的介绍一下这样一个神奇的图片预览插件:Github//原生版本 https://github.com/fengyuanchen/viewerjs //jquery版本 https://github.com/f...

    Java 2020年12月01日 1353 0
  • Java高级特性——注解:注解实现Excel导出功能

    注解是 Java 的一个高级特性,Spring 更是以注解为基础,发展出一套“注解驱动编程”。这听起来高大上,但毕竟是框架的事,我们也能用好注解吗?的确,我们很少有机会自己写注解,导致我们搞不清楚注解是怎么回事,更别提用好注解了。既然这样,我们就从具体的工作出发,开发一个 Excel 导出功能。我相信,你在搞懂这个例子后,就能明白注解是怎么个用法。Excel 导出-需求拆解在后...

    Java 2020年12月01日 1117 0
  • 手写一个注解实现接口单位时间内的访问频率的拦截器

    目标相信大家都听过接口安全,接口限流等这些词语,那么本篇文章就是从最基本的问题开始,带大家手写一个控制接口单位时间内访问频率的demo。好了,下面开始上代码。环境+依赖spring boot工程就不在此搭建了,小编直接贴出核心依赖 <dependency> <groupId>org.springframework.boot</groupId&...

    Java 2020年11月30日 1205 0
  • SpringBoot2 整合OAuth2实现统一认证

    关于OAuth2不做介绍了,网络太多了。环境:2.2.11.RELEASE + OAuth2 + Redisredis用来实现token的存储。pom.xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-...

    Java 2020年11月25日 1477 0
  • SpringBoot2 整合 OAuth2 资源认证(保护)

    接着上一篇:SpringBoot2 整合OAuth2实现统一认证上一篇整合介绍了OAuth2的认证服务,接下来利用认证服务提供的token来包含我们的资源。环境:2.2.11.RELEASE + OAuth2 + Redispom.xml<dependency> <groupId>org.springframework.boot</group...

    Java 2020年11月25日 2427 0
  • JVM整体结构、执行流程以及2种架构模型

    JVM整体结构HotSpot VM 是目前市面上高性能虚拟机的代表作之一。方法区和堆:多线程共享虚拟机栈、本地方法栈、程序计数器:每个线程独有一份执行引擎:包含三部分:解释器,及时编译器(后端编译器),垃圾回收器它采用解释器与即时编译器并存的架构。在今天,Java 程序的运行性能早已脱胎换骨,已经达到了可以和 C/C++ 程序一较高下的地步。Java 代码执行流程只是能生成被 ...

    Java 2020年11月23日 1101 0
  • 工作流Activiti流程图各元素之任务单元介绍

    在工作流Activiti的使用中,任务是不可或缺的元素,通过各种任务,来完成作业系统中各个环节的执行,任务分为用户任务、脚本任务、Java服务任务、邮件任务、手工任务、业务规则任务、调用活动(子流程)任务,下面就一一介绍。一、用户任务用户任务用来设置必须由人员完成的工作。 当流程执行到用户任务,会创建一个新任务, 并把这个新任务加入到分配人或群组的任务列表中。二、脚本任务脚本...

    Java 2020年11月23日 2244 0
  • 自己动手编写一个Mybatis插件:Mybatis脱敏插件

    1. 前言在日常开发中,身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。否则容易造成个人隐私泄露,客户资料泄露,给不法分子可乘之机。但是数据脱敏不是把敏感信息隐藏起来,而是看起来像真的一样,实际上不能是真的。我以前的公司就因为不重视脱敏,一名员工在离职的时候通过后台的导出功能导出了核心的客户资料卖给了竞品,给公司造成了重大的损失。当然这里有数据管理的原因,但是脱敏仍...

    Java 2020年11月22日 1316 0
  • SpringBoot+shiro+mybatis实现权限登录

    SpringBoot+shiro+mybatis+Thymeleaf实现权限登录系统记录一下,学习shiro的一个小Demo:1.首先是底层数据库:-- ---------------------------- -- Table structure for role -- ---------------------------- CREATE TABLE `role` ( ...

    Java 2020年11月21日 1257 0
  • SpringBoot RabbitMQ消息可靠发送与接收

    环境: springboot2.2.11.RELEASE + RabbitMQ3.7.4RabbitMQ在以下情况会出现消息的丢失:交换机、队列、消息未持久化,mq重启后会出现消息丢失。生产者发出的消息第一步是投递到交换机,这一步可能因为网络原因导致失败。消息正常投递到交换机后,通过路由key路由到队列的时候出现失败。(没有符合的队列)代码层面,配置层面,考虑不全导致消息丢失。...

    Java 2020年11月19日 1644 0
  • Spring Security登录优雅集成图形验证码

    前言在SpringSecurity的默认登录支持组件formLogin中没有提供图形验证码的支持,目前大多数的方案都是通过新增Filter来实现。filter的方式可以实现功能,但是没有优雅的解决, 需要重新维护一套和登录相关的url,例如:loginProccessUrl,loginFailUrl,loginSuccessUrl,从软件设计角度来讲功能没有内聚。下面为大家介绍...

    Java 2020年11月19日 2303 0
  • SpringBoot开发自己的Starter

    SpringBoot starter机制SpringBoot中的starter是一种非常重要的机制,能够抛弃以前繁杂的配置,将其统一集成进starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置。starter让我们摆脱了各种依赖库的处理,需要配置各种信息的困扰。SpringBoot会自动通过class...

    Java 2020年11月19日 1486 0
  • Spring Boot 优雅地实现接口参数校验

    今天继续为大家分享在工作中如何优雅的校验接口的参数的合法性以及如何统一处理接口返回的json格式。每个字都是干货,原创不易,分享不易。validation主要是校验用户提交的数据的合法性,比如是否为空,密码是否符合规则,邮箱格式是否正确等等,校验框架比较多,用的比较多的是hibernate-validator, 也支持国际化,也可以自定义校验类型的注解,这里只是简单地演示校验框...

    Java 2020年11月18日 1390 0
  • Spring Boot如何利用AOP巧妙记录操作日志?

    本篇要点简要回顾SpringAOP的相关知识点:关键术语,通知类型,切入点表达式等等。介绍SpringBoot快速启动测试AOP,巧妙打印日志信息。简单回顾SpringAOP的相关知识点SpringAOP的相关的知识点包括源码解析,为了加深印象,这边再做一个简短的回顾:1、AOP关键术语切面(Aspect):也就是我们定义的专注于提供辅助功能的模块,比如安全管理,日志信息等。连...

    Java 2020年11月18日 1854 0
  • 工作流Activiti初体验及在数据库中生成的表

    工作流Activiti内置了一些表,一共是28张,在我们项目启动的时候会在我们配置的数据库中创建这些表,下面就搭建一个小demo,去look一下Activiti生产的这些表。首先到Spring的官网,找到生成模板工程的地方(https://start.spring.io/),生成项目模板:把生成的模板工程,导入到开发工具中,这里以eclipse为例,导入的项目如下:在pom.x...

    Java 2020年11月16日 1379 0
  • Eureka+负载均衡+Hystrix+网关,我全给你讲清楚

    一、 网站的架构相信大家应该都经历过一个普通地网站发展成大型网站过程中的一种较为典型的架构演变历程。因为这是你在大学期间的必修课,就是搭建一个简单的网站,说不定你的毕业实际就是一个什么管理系统,对吧,这就是最初的网站搭建,但是当你踏入工作岗位之后或者随着你学习内容的扩展和深入,一个项目中会由多个子项目构成,但是一旦有了多个子项目,比如把淘宝网的订单系统和会员系统分开来看,就回产...

    Java 2020年11月15日 1335 0
  • Spring框架是怎么解决Bean之间的循环依赖的

    在我们的开发中,会不可避免的遇到Bean之间循环依赖的,所谓循环依赖,就是两个或者两个以上的Bean互相持有对方,这样在程序运行调用中,会出现这种循环依赖的现象,假设是两个Bean,当程序调用Bean A时,Bean A中依赖Bean B,在Bean A中调用Bean B时,Bean B中又依赖了Bean A,这样就形成了循环依赖,如下图:先从一个小例子来说明,使用Sprin...

    Java 2020年11月14日 1159 0
  • RabbitMQ分布式系统的应用

    由于之前做的项目中需要在多个节点之间可靠地通信,所以废弃了之前使用的Redis pub/sub(因为集群有单点问题,且有诸多限制),改用了RabbitMQ。使用期间得到不少收获,也踩了不少坑,所以在此分享下心得。怎么保证可靠性的?RabbitMQ提供了几种特性,牺牲了一点性能代价,提供了可靠性的保证。持久化当RabbitMQ退出时,默认会将消息和队列都清除,所以需要在第一次声明...

    Java 2020年11月14日 1110 0
  • shiro中setUnauthorizedUrl不起作用或setUnauthorizedUrl无效

    SpringBoot中集成Shiro的时候, 配置setUnauthorizedUrl("/notPermit")了,但是不起作用,只会在控制台打印UnauthorizedException异常信息:原因: Shiro源码中是这样做的: private void applyUnauthorizedUrlIfNecessary(Filter filter) { St...

    Java 2020年11月13日 2478 0
  • Shiro权限框架中获取当前登录用户的权限和角色信息

    在项目中需要获取当前登录用户的权限,并传递给前端。 1、在自定义的realm中,把userPermissions当做参数注册到session里面 @Override public AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { SimpleAuthoriz...

    Java 2020年11月13日 8896 0
  • springboot+shiro中使用 @RequiresPermissions和@RequiresRoles注解无效的解决方法(亲测有效)

    最近在使用shiro框架的时候,出现了@RequiresPermissions和@RequiresRoles无效的情况,经过查阅大佬的博客,记录一下解决方法。 在ShiroConfig中加入一下代码即可。 /** * 开启shiro aop注解支持. * 使用代理方式;所以需要开启代码支持; */ @Bean public Lifecyc...

    Java 2020年11月13日 6207 0
  • 基于JWT规范实现的认证微服务

    目录:一、微服务介绍二、随之而来的认证和授权问题三、项目架构通信四、用于签名以及验证的公钥和私钥令牌五、项目数据库同步问题一、微服务介绍微服务日渐流行,几乎所有流行语言都提供了两种框架实现,一是面向Web开发的大型框架,一是面向小型应用的微框架。轻量级框架作为微服务架构来说,是个好的选择。微服务架构有很多优势,诸如高可维护性,独立部署等等。微服务架构让我们可以针对特定语言选择最...

    Java 2020年11月13日 1322 0
  • Java 里使用 long 类型的数据一定要在数值后面加上 “L”

    整形默认值为int,如果定义long 必须要加L来区分,浮点型默认值为double双精度,定义单精度float要加F来区分。

    Java 2020年11月12日 2834 0
  • 从0 开始手写一个 RPC 框架,大多数都不清楚的技术

    之前在 RPC 框架底层到底什么原理得知了RPC(远程过程调用)简单来说就是调用远程的服务就像调用本地方法一样,其中用到的知识有序列化和反序列化、动态代理、网络传输、动态加载、反射这些知识点。发现这些知识都了解一些。所以就想着试试自己实现一个简单的RPC框架,即巩固了基础的知识,也能更加深入的了解RPC原理。当然一个完整的RPC框架包含了许多的功能,例如服务的发现与治理,网关等...

    Java 2020年11月12日 933 0
  • 分布式定时任务调度框架实践

    分布式任务调度框架几乎是每个大型应用必备的工具,本文介绍了任务调度框架使用的需求背景和痛点,对业界普遍使用的开源分布式任务调度框架的使用进行了探究实践,并分析了这几种框架的优劣势和对自身业务的思考。一、业务背景1.1 为什么需要使用定时任务调度(1)时间驱动处理场景:整点发送优惠券,每天更新收益,每天刷新标签数据和人群数据。(2)批量处理数据:按月批量统计报表数据,批量更新短信...

    Java 2020年11月12日 1111 0
  • Docker常用命令

    Docker基本命令更新软件包yum -y update安装Docker虚拟机 yum install -y docker运行、重启、关闭Docker虚拟机service docker start service docker stop搜索镜像 docker search 镜像名称下载镜像docker pull 镜像名称查看镜像 docker images删除镜像 docker...

    Java 2020年11月11日 1080 0
  • 偷偷告诉你Springboot 优雅停止服务的几种方法

    在使用Springboot的时候,都要涉及到服务的停止和启动,当我们停止服务的时候,很多时候大家都是kill -9 直接把程序进程杀掉,这样程序不会执行优雅的关闭。而且一些没有执行完的程序就会直接退出。  我们很多时候都需要安全的将服务停止,也就是把没有处理完的工作继续处理完成。比如停止一些依赖的服务,输出一些日志,发一些信号给其他的应用系统,这个在保证系统的高可用是非常有必要...

    Java 2020年11月11日 1091 0
  • SpringBoot+Netty+Websocket整合案例(实现基本的聊天功能)

    之前使用Springboot整合了websocket,实现了一个后端向前端推送信息的基本小案例,这篇文章主要是增加了一个新的框架就是Netty,实现一个高性能的websocket服务器,并结合前端代码,实现一个基本的聊天功能。你可以根据自己的业务需求进行更改。这里假设你已经了解了Netty和websocket的相关知识,仅仅是想通过Springboot来整合他们。根据之前大家的...

    Java 2020年11月11日 1725 0
  • 在IDEA中将debug窗口修改为显示Services工具栏的解决办法

    由于微服务往往涉及到多个springboot服务启动,如果能放在一个窗口下管理会比较方便,IDEA中也提供了这样一个工具窗口,但很多人可能还不清楚怎么使用,下面就根据自身的使用经验来介绍一下。 1、如果是新项目,则创建一个workspace然后进行管理就可以了。 2、如果是老项目,则需要在当前项目中的.idea文件夹中,找到workspace.xml文件,增加下面的内容:&l...

    Java 2020年11月11日 8786 0
  • Method annotated with @Bean is called directly. Use dependency injection instead.

    未添加@Configuration注解,导致@Bean之间相互调用出错 因此把类名上面增加@Configuration注解即可解决。

    Java 2020年11月11日 16379 0