![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
实例
文章平均质量分 86
技术类
郑兆辉
这个作者很懒,什么都没留下…
展开
-
SpringSecurity + JWT 实现单点登录
一、什么是单点登陆单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统二、简单的运行机制单点登录的机制其实是比较简单的,用一个现实中的例子做比较。某公园内部有许多独立的景点,游客可以在各个景点门口单独买票。对于需要游玩所有的景点的游客,这种买票方式很不方便,需要在每个景点门口排队买票,钱包拿 进拿出的,容易丢失,很不安全。于是绝大多数游客选择在大门口买一张通转载 2021-08-10 10:57:05 · 703 阅读 · 0 评论 -
SpringBoot实现登录拦截器
1、SpringBoot实现登录拦截的原理 1.1、实现HandlerInterceptor接口 1.2、实现WebMvcConfigurer接口,注册拦截器 1.3、保持登录状态 2、代码实现及示例 3、效果验证 3.1、访问localhost:8081/index页面: 3.2、正确输入用户名和密码登录 3.3、再次访问localhost:8081/index 对于管理系统或其他需要用户登录的系统,登录验证都是必不可少的环节,在SpringBoot开发的项目中,通过实现拦转载 2021-08-09 10:39:42 · 5256 阅读 · 0 评论 -
几百行代码写个Mybatis,原理搞得透透的
一、前言Mybatis 最核心的原理也是它最便于使用的体现,为什么这说?因为我们在使用 Mybatis 的时候,只需要定义一个不需要写实现类的接口,就能通过注解或者配置SQL语句的方式,对数据库进行 CRUD 操作。那么这是怎么做到的呢,其中有一点非常重要,就是在 Spring 中可以把你的代理对象交给 Spring 容器,这个代理对象就是可以当做是 DAO 接口的具体实现类,而这个被代理的实现类就可以完成对数据库的一个操作,也就是这个封装过程被称为 ORM 框架。说了基本的流程,我们来做点转载 2021-08-09 09:57:21 · 301 阅读 · 0 评论 -
SpringCloud Alibaba实战:基本开发框架搭建
在上一节,我们已经完成了项目的整体技术架构设计和具体的数据库设计,接下来,我们搭建整体的开发框架。开发工具选用Idea。开发工具只是为了提高效率,如果不习惯Idea的话,STS使用起来也是OK的。1、创建多Module工程1.1、创建父工程创建一个父项目,项目命名为eshop-project,用于管理子模块功能。新建Project选择Maven工程,next填写GroupId和ArtifactID填写项目名,选择项目位置删除src,添加转载 2021-08-06 11:04:41 · 297 阅读 · 0 评论 -
后端生成Token架构与设计详解
目的:Java开源生鲜电商平台-Java后端生成Token目的是为了用于校验客户端,防止重复提交。技术选型:用开源的JWT架构。1.概述:在WEB项目中,服务端和前端经常需要交互数据,有的时候由于网络响应慢,客户端在提交某些敏感数据(比如按照正常的业务逻辑,此份数据只能保存一份)时,如果前端多次点击提交按钮会导致提交多份数据,这种情况我们是要防止发生的。2.解决方法:①前端处理:在提交之后通过js立即将按钮隐藏或者置为不可用。②后端处理:对于每次提交到后台的数据必须校验,也就是通过前转载 2021-08-02 10:27:49 · 484 阅读 · 0 评论 -
Spring Boot 整合 Redis 正确地实现分布式锁
理论分布式锁是控制分布式系统之间同步访问共享资源的一种方式。是为了解决分布式系统中,不同的系统或是同一个系统的不同主机共享同一个资源的问题,它通常会采用互斥来保证程序的一致性通常的实现方式有三种:基于 MySQL 的悲观锁来实现分布式锁,这种方式使用的最少,这种实现方式的性能不好,且容易造成死锁,并且MySQL本来业务压力就很大了,再做锁也不太合适基于 Redis 实现分布式锁,单机版可用setnx实现,多机版建议用Radission基于 ZooKeeper 实现分布式锁,利用 ZooK转载 2021-07-30 14:07:21 · 335 阅读 · 0 评论 -
利用springboot+elasticSearch,实现数据高效搜索,实战开发
本文主要介绍分为以下几个部分:第一部分:环境准备,安装ElasticSearch,安装 ElasticSearch-head 插件可视化web界面 第二部分:SpringBoot 整合 ElasticSearch 开发 第三部分:CRUD 测试二、ElasticSearch 安装为了和真实环境一致,我们采用CentOS7来部署 ElasticSearch 服务。建议把所需的安装包,手动从网上下载下来,因为服务器下载 ElasticSearch 安装包速度像蜗牛……,非常非常慢~~,可能是国转载 2021-07-27 10:28:46 · 1317 阅读 · 0 评论 -
淘宝大秒系统设计详解
一些数据大家还记得2013年的小米秒杀吗?三款小米手机各11万台开卖,走的都是大秒系统,3分钟后成为双十一第一家也是最快破亿的旗舰店。经过日志统计,前端系统双11峰值有效请求约60w以上的QPS ,而后端cache的集群峰值近2000w/s、单机也近30w/s,但到真正的写时流量要小很多了,当时最高下单减库存tps是红米创造,达到1500/s。热点隔离秒杀系统设计的第一个原则就是将这种热点数据隔离出来,不要让1%的请求影响到另外的99%,隔离出来后也更方便对这1%的请求做针对性优化。针对秒杀我们转载 2021-07-27 10:24:44 · 116 阅读 · 0 评论 -
最简单的Spring Boot 整合ELK教程,实现日志收集
前言开发任务后,提交代码的那一刻,心情是自由自在……速度是八十迈……以为接下来是游戏、逛GAI或暖烘烘的被窝。然而,梦想何其丰满,现实何其骨干。总有测试小姐姐教你紧急刹车,回头做(改)人(bug):你这不行啊!(吃瓜群众排排坐,笑歪了嘴)我低头看了看自己的八块腹肌:行不行可不是你说了算!小姐姐也不是吃素的,撸起袖子,打开她的联想十代:你行你连连报错,毒奶队友!我:(⊙o⊙)……原来你说的是这个不行,我还以为……小姐姐一脸疑惑:以为什么?真以为自己是大神了!我清咳掉自己的尴转载 2021-07-27 09:56:14 · 2186 阅读 · 0 评论 -
SpringBoot+MybatisPlus实现CAS单点登录Demo
前言在前面已经介绍过了SSO单点登录的一些理论知识:登录那些事(一):用简单的话来讲讲SSO单点登录。今天我们就通过一个demo来实现下这个CAS系统。准备工作建表CREATE TABLE `users` ( `id` int NOT NULL AUTO_INCREMENT, `username` varchar(255) COLLATE utf8mb4_general_ci NOT NULL, `password` varchar(255) COLLATE utf8mb4_g转载 2021-07-27 09:51:55 · 301 阅读 · 0 评论 -
瞬间几千次的重复提交,我用Spring Boot+Redis扛住了
在实际的开发项目中,一个对外暴露的接口往往会面临,瞬间大量的重复的请求提交,如果想过滤掉重复请求造成对业务的伤害,那就需要实现幂等!我们来解释一下幂等的概念:任意多次执行所产生的影响均与一次执行的影响相同。按照这个含义,最终的含义就是对数据库的影响只能是一次性的,不能重复处理。如何保证其幂等性,通常有以下手段:1、数据库建立唯一性索引,可以保证最终插入数据库的只有一条数据2、token机制,每次接口请求前先获取一个token,然后再下次请求的时候在请求的header体中加上这个token,.转载 2021-07-26 14:41:52 · 102 阅读 · 0 评论 -
SpringBoot+Redis分布式锁:模拟抢单
本篇内容主要讲解的是redis分布式锁,这个在各大厂面试几乎都是必备的,下面结合模拟抢单的场景来使用她;本篇不涉及到的redis环境搭建,快速搭建个人测试环境,这里建议使用docker;本篇内容节点如下:jedis的nx生成锁如何删除锁 模拟抢单动作(10w个人开抢) jedis的nx生成锁对于java中想操作redis,好的方式是使用jedis,首先pom中引入依赖:<dependency><groupId>redis.clients</grou...转载 2021-07-26 14:21:53 · 123 阅读 · 0 评论 -
MyBatis Generator,帮你少写50%代码的自动化工具
GitHub地址https://github.com/erlieStar/mybatis-generator-demo介绍MyBatis Generator的作用就是根据数据库中的表结构,帮我们自动生成和表结构相同的实体类,mapper接口,包含基本增删改查语句的XML文件,我以一个例子演示如何优雅的使用MyBatis Generator,我会把例子放在GitHub上,所以不用担心配置看不全的问题。这个工具目前在很多公司都会使用,真的是超级方便造数据,新建一个Spring Boo...转载 2021-07-23 15:36:02 · 72 阅读 · 0 评论 -
从放弃svn到拥抱git之路
前言为什么不用svn管理项目了?作为程序,首先接触的一款管理工具便是svn,但是开源代码看的多了,发现git越来越流行,为什么流行?SVN都是集中式的版本控制系统,而Git是分布式版本控制系统。集中式和分布式版本控制系统有什么区别呢?集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改转载 2021-07-23 15:25:19 · 126 阅读 · 0 评论