• Eureka+负载均衡+Hystrix+网关,我全给你讲清楚

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

    Java 2020年11月15日 175 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日 126 0
  • RabbitMQ分布式系统的应用

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Java 2020年11月12日 138 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日 111 0
  • 偷偷告诉你Springboot 优雅停止服务的几种方法

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

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

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

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

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

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

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

    Java 2020年11月11日 1329 0
  • Sentinel+Nacos实现资源流控、降级、热点、授权

    Sentinel 可以简单的分为 Sentinel 核心库和 Dashboard。核心库不依赖 Dashboard,但是结合 Dashboard 可以取得最好的效果。这篇文章主要介绍 Sentinel 引入和规则配置等使用方法。 我们说的资源,可以是任何东西,服务,服务里的方法,甚至是一段代码。因为Sentinel控制台配置的规则是在内存中的,所以我们需要Nacos来存储规则实...

    Java 2020年11月11日 227 0
  • Java 泛型,你了解类型擦除吗?

    泛型,一个孤独的守门者。大家可能会有疑问,我为什么叫做泛型是一个守门者。这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇。泛型是 Java 中一个很小巧的概念,但同时也是一个很容易让人迷惑的知识点,它让人迷惑的地方在于它的许多表现有点违反直觉。文章开始的地方,先给大家奉上一道经典的测试题。List<String> l1 = new...

    Java 2020年11月03日 162 0
  • Spring Boot认证:整合Jwt

    背景Jwt全称是:json web token。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证。优点简洁: 可以通过URL、POST参数或者在HTTP header发送,因为数据量小,传输速度也很快;自包含:负载中可以包含用户所需要的信息,避免了多次查询数据库;因为Token是以JSON加密的形式保存...

    Java 2020年10月30日 188 0
  • activiti7与springboot2整合

    接下来时间我会写一系列Activiti7的文章,包括Activiti7实战,Activiti7源码分析,Activiti7中遇到的坑等。那么首先我们先跑起来,将Activiti7与Springboot2整合。Activiti7相比Activiti6一个显著的变化就是引入了SpringSecurity来负责鉴权工作,通俗点说就是接入的用户或者系统有没有相应的接口访问权限。1. 引...

    Java 2020年10月22日 307 0
  • 3千字Apollo配置中心的总结,让配置“智能”起来

    思维导图文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary一、概述Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。目前Apollo在github有22.6k颗星,在官网登记的使...

    Java 2020年10月21日 225 0
  • 轻量级的分布式日志追踪利器,十分钟可接入,从此日志追踪无难事

    前言随着微服务盛行,很多公司都把系统按照业务边界拆成了很多微服务,在排队查日志的时候。因为业务链路贯穿着很多微服务节点,导致定位某个请求的日志以及上下游业务的日志会变得有些困难。这时候很多童鞋会开始考虑上SkyWalking,Pinpoint等分布式追踪系统来解决,基于OpenTracing规范,而且通常都是无侵入性的,并且有相对友好的管理界面来进行链路Span的查询。但是搭建...

    Java 2020年09月18日 432 0
  • JDK15正式发布,划时代的ZGC同时宣布转正

    ✍前言2020年9月15日,JDK15正式发布,可谓如约而至。按照Java SE的发展路线图,JDK14自此停止更新。值得注意的是JDK15并非「LTS」版本,Oracle官方对Java SE的支持路线图如下:JDK8的扩展支持时间超过了JDK11,Oracle你是认真的吗?开个玩笑~那么自Java11之后,哪个版本才是LTS版本呢?Oracle官方并没给出具体参考路线图,但可...

    Java 2020年09月17日 478 0
  • Mybatis中不建议使用动态sql

    Mybatis是一个优秀的Java持久层框架,它通过xml的方式来管理要执行的sql语句,屏蔽了jdbc底层细节,让开发人员可以方便的操作数据库。动态SQL说到动态SQL,绝对是Mybatis引以为豪的东西,因为它可以使配置文件简洁,就像下面这个配置,我可以使用selectEntryByWhere来适配所有的查询语句,是不是感觉很爽。<select id="selectE...

    Java 2020年09月11日 496 0
  • 一个基于 Spring Boot 的在线考试系统

    今天推荐一款超级美观的在线考试系统,感兴趣可以先去预览地址看看该项目。在线 Demo预览,http://129.211.88.191 ,账户分别是admin、teacher、student,密码是admin123GitHub地址:github.com/19920625lsg/spring-boot-online-exam功能简介支持单选题、多选题、判断题支持学生(student...

    Java 2020年09月08日 1106 0
  • SpringBoot:基于JWT的token校验、单点登录等

    前言用户鉴权一直是我先前的一个问题,以前我用户接口鉴权是通过传入参数进行鉴权,只要是验证用户的地方就写token验证,虽然后面也把token验证方法提取到基类中,但是整体来说仍然不是太雅观,当时的接口如下所示. @RequestMapping(value = "like",method = RequestMethod.POST) public ResultMap u...

    Java 2020年09月03日 371 0
  • 记一次token安全认证的实践

    背景介绍:因项目需求,有PC端 APP端和小程序端,但登陆接口是同一个,然而微服务也无法使用传统的session解决用户登录问题(注意这里是传统的session不是spring session),使用户信息在其他服务共享。如此一来就想到了token安全认证,而JWT生成token可以包含用户信息,也就果断选择了JWT作为SpringCloud gateway网关的token校验...

    Java 2020年08月12日 553 0
  • FileBeat + Kafka + ELK搭建与简单示例

    最近调研了一下ELK,自己也尝试搭建了一套环境,用于学习, 现将整个部署的过程记录下来现 Filebeat 已经完全替代了 Logstash-Forwarder 成为新一代的日志采集器,越来越多人开始使用它,所以现在基于 Filebeat ELK 架构如下图看完了图,再来简单介绍一下ELKE lasticsearch :简称 ES,是ELK的核心,是基于Apache Lucen...

    Java 2020年08月06日 566 0
  • 在 SpringBoot 中实现多数据源访问的最佳实践

    1 概述在实际业务开发中通常会在单个应用中通过 分库分表 或者 读写分离的方式来提供应用的读写性能。在具体的开发中有很多方式:通过不同的 mapper,映射到不同的 mybatis 源的方式通过继承 Spring 的 AbstractRoutingDataSource 抽象类并重写 determineCurrentLookupKey 方法来管理多个数据源的方式本文将详细介绍在 ...

    Java 2020年08月06日 762 0
  • 开源分布式配置中心 Apollo 1.7.0 发布

    Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。服务端基于 Spring Boot 和 Spring Cloud 开发,打包后可以直接运行,不需要额外安装 Tomcat 等应用容器。Java 客户端不依赖任何框架,能够运行于所有Ja...

    Java 2020年08月05日 503 0
  • 9种分布式ID生成方式,总有一款适合你

    分布式ID必要性。业务量小于500W的时候单独一个mysql即可提供服务,再大点的时候就进行读写分离也可以应付过来。但当主从同步也扛不住的是就需要分表分库了,但分库分表后需要有一个唯一ID来标识一条数据,数据库的自增ID显然不能满足需求;特别一点的如订单、优惠券也都需要有唯一ID做标识。此时一个能够生成全局唯一ID的系统是非常必要的。那么这个全局唯一ID就叫分布式ID。分布式I...

    Java 2020年07月30日 455 0