自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (2)
  • 收藏
  • 关注

原创 Java并发包之AbstractQueuedSynchronizer源码分析

AQS(AbstractQueuedSynchronizer)是JUC里非常重要的类,像可重入锁ReentrantLock和CountDownLatch等底层都是有AQS来实现的。由于AQS底层结构比较复杂,如果直接讲源码的话大家可能看的一头雾水,这篇文章就从ReentrantLock的加锁和解锁入手,来一步步解析AQS的源码和底层工作原理。首先说一下AQS的基本结构,其中维护了一个双向链表,链表中每个节点都包含一个线程,其结构示意图如下:AQS结构示意图链表中的节点Node有如下几个重要

2022-03-24 15:23:04 298

原创 HashMap底层原理全解析

作为面试中的高频题目,我相信每一个java程序员都有必要搞懂HashMap的底层原理和实现细节,废话不多说直接开撸。首先简单说一下HashMap的实现原理:首先有一个Node<k,v>类型的数组,当添加一个键值对(key-value)时,首先计算元素key的hash值,以此确定插入数组中的位置,如果该哈希值对应的位置已经有元素了,那么使用equals对比他们的key,如果相同则覆盖其value,不同则添加到该元素的后面,这样就形成了链表,同一个链表每个元素的hash值是相通的。当链表的长

2022-03-18 19:15:26 4367

原创 分库分表Springboot-Starter源码解析

首先有两个mapper对象,一个是普通的mapper,一个是分库分表的mapper,分别往数据库插入数据。可以看到分为了三个数据库,分别是test test_01 test_02,然后test库有一张user表,test_01 test_02各有user_000-003个四张表,然后我们运行测试用例:我们可以看到在test库的user表和test01的user_001表分别插入了一条记录,分库分表成功。使用起来非常简单,只需要在Mapper接口上加入两个注解:第一个注解。

2023-10-10 15:14:26 259

原创 Nacos源码详解

通过名字我们可以看出,这个Bean的核心是redister方法,该方法调用的是父抽象类AbstractAutoServiceRegistration中的实现,然后在父类中它又调用了接口ServiceRegistry的register方法,实际由NacosServiceRegistry实现,我们进入到NacosServiceRegistry实现的register方法。我们来到注册中心的/instance接口,重点关注InstanceController的register方法。

2023-09-23 18:48:03 687

翻译 60秒内的 Linux 性能分析

您登录的 Linux 服务器存在性能问题:在第一分钟,您要检查什么?在 Netflix,我们有一个庞大的 EC2 Linux 云,并有许多性能分析工具来监控和调查其性能。其中包括用于全云监控的 Atlas 和用于按需实例分析的 Vector。虽然这些工具可以帮助我们解决大多数问题,但有时我们也需要登录到实例并运行一些标准的 Linux 性能工具。

2023-08-17 10:40:50 185

原创 性能优化的核心思想

因为CPU的核心线程数有限,CPU并行操作计算后,看似当前的CPU利用率更高,但其实每个线程都这么抢,没什么意义,反而会增加线程切换的成本,让系统的吞吐量在高压下衰败的更快。可以根据需要建立不同级别的缓存,如本地缓存,分布式缓存Redis来提升系统性能,但这里需要关注缓存的关注时间,做好数据时效性和访问效率之间的平衡。其实,前端常用的CDN,也是采用这样的策略,本质上也是一种缓存,是对静态数据的访问提速方案。5是写日志,可以改为异步写。所有创建成本高的对象,都可以采用预建的方式,减少系统的等待时间。

2023-04-15 13:47:38 193

原创 浅谈分布式事务

1. 为什么有分布式事务分布式系统经常出现的异常机器宕机、网络异常、消息丢失、消息乱序、数据错误、不可靠的TCP、存储数据丢失…分布式事务是企业集成中的一个难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免。2. CAP理论和BASE理论CAP定理CAP定理指的是在一个分布式系统中:一致性(Consistency): 在分布式系统中所有数据备份,在同一时刻是否是同样的值。(等同于所有节点访问同一份最新的数据副本)可用性(Availablity

2022-05-31 19:05:07 205

原创 shell大全

第一章本节课程目标语法和选项语法和选项\3. sort工具语法和选项5.tee工具6.diff工具语法和选项7. paste工具\8. tr工具语法和选项小试牛刀二、bash的特性了解shell中的通配符熟悉grep、cut、sort等小工具和shell中的通配符的使用#一、文本处理工具1. grep工具grep是行过滤工具;用于根据关键字进行行过滤语法和选项语法:# grep [选项] '关键字'

2022-05-26 03:14:51 471

原创 Java面试题

根据我以往的面试经验,总结一些有深度的、常问的面试题供大家参考。1.详细说一下对象的创建过程(new一个对象内存里都发生了什么)?虚拟机遇到一条new指令时,首先会去检查这个指令的参数是否能在常量池中定义到一个类的符号引用,以此来检查这个类是否被加载、解析和初始化过,如果没有,那么必须先执行类加载的过程。接下来虚拟机将会为对象分配内存。对象所需内存大小在类加载以后便可以完全确定。假如Java堆中的内存是完全规整的,所有用过的内存放在一边,未用过的放在另一边,中间放着一个指针作为分界点的指示器

2022-04-27 23:50:18 2525

转载 Java锁升级的过程

锁的四种状态:无锁、偏向锁、轻量级锁、重量级锁(级别从高到低)1.偏向锁:为什么要引入偏向锁?因为经过hotspot的作者的大量研究发现,大多数时候是不存在锁竞争的,常常是一个线程多次获得同一个锁,因此如果每次都要竞争锁会增大很多没有必要付出的代价,为了降低获取锁的代价,才引入了偏向锁。偏向锁的升级当线程1访问同步代码块并获取锁对象时。会在Java对象头和栈帧中记录偏向锁的threadID,因为偏向锁不会主动释放锁,因此以后线程1再次获取锁的时候,需要比较当前线程的threadID和Ja

2022-04-01 12:03:04 1311

转载 浅析CompareAndSet(CAS)

CAS是Compare And Set的一个简称,如下理解:1.已知当前内存里面的值current和预期要修改成的值new传入2.内存中AtomicInteger对象地址对应的真实值(因为有可能别修改)real与current对比,相等表示real未被修改过,是“安全”的,将new赋给real结束然后返回;不相等说明real已经被修改,结束并重新执行1直到修改成功CAS相比Synchronized,避免了锁的使用,总体性能比Synchronized高很多.compareAndSet典型使用为

2022-03-24 16:24:53 373

原创 java并发包之CopyOnWriteArrayList源码分析

大多数情况下读操作是远远大于写操作的,读操作本身不会修改集合中的数据,所以说读操作和写操作一样加锁的话对资源是一种极大的浪费。而java.util.concurrent包刚好为我们提供了一种读不加锁写加锁的操作,而且读写不互斥,只有写写之间才会阻塞,让我们在构建多线程的应用时,既保证了运行效率,又保证了数据的一致性,废话不多说,我们直接开撸源码。首先是属性,CopyOnWriteArrayList重要的属性比较少: /** 保护所有并发资源的可重入锁 */ final transie

2022-03-21 15:37:33 515

原创 TCP连接的建立与关闭

TCP连接建立首先要说明的是要明确TCP连接建立的过程需要3次握手,下面举例说明各种状态存在的时刻:1.首先在服务器A上开启FTP服务,开始侦听来自远端TCP端口的连接请求,这个时候查看服务器A的对应端口状态为:LISTENING2.在客户端B上向A发送FTP连接请求,这个时候数据包同步位置1,这是TCP三次握手的第一步。在发送后没收到确认时,在客户端B上其状态为:SYN-SENT。此时客户端B启动连接定时器,如果在75秒内没有收到应答,则放弃连接建立。3.在服务器A收到客户端B发送的SYN

2022-03-16 18:06:05 4830

转载 top命令

我自从高中接触Ubuntu开始就知道了top命令,工作以来更是没少使用它,但从来没有为它写过一篇总结。今天比较累,这种文章又不费脑子,就顺手写一写吧。通俗点说,Linux中的top命令就像是Windows中的任务管理器。它会以列表的形式展示出系统的当前状态以及进程信息,并且定时刷新,同时也支持一些交互性的操作。直接执行top命令,就会看到如下界面。top命令的界面下面逐行解释这些内容代表什么含义。 第一行:概况HH:mm:ss:当前的系统时间。up xxx days, HH:m

2022-03-16 15:40:18 740

转载 零拷贝(Zero-copy)及其应用详解

前言这是一个多月之前留下的烂尾文,今天终于想起来了,就补全并且发出来吧。零拷贝(Zero-copy)是一种高效的数据传输机制,在追求低延迟的传输场景中十分常用。本文先通过传统方案引出零拷贝机制,然后分析其细节,最后介绍它的部分应用。文中涉及到的操作系统理论知识都可以参考英文维基或者相关书籍,如Abraham Silberschatz著《操作系统概念》、Andrew S. Tanenbaum著《现代操作系统》等。传统的数据传输方法在互联网时代,从某台机器将一份数据(比如一个文件)通过网络传

2022-03-16 11:59:34 1571

原创 常用linux命令

下载远程linux服务器文件sftp root@hostget filename下载整个文件夹get -r /dir/.查看操作历史export HISTTIMEFORMAT='%F %T 'export HISTSIZE=10000history比较两个文件diff filename1 filename2 -y -<行数>find <指定目录> <指定条件> <指定动作>查找文件夹...

2022-03-16 11:44:44 1553

原创 Linux awk用法

输出第一个单词首字母顺序>m的单词,否则输出----基本语法awk -F '分隔符' ‘过滤条件 {操作}’ 文件名准备demo.txt内容如下root:x:0:0:root:/root:/usr/bin/zshdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologinbin:x:2:2:bin:/bin:/usr/sbin/nologinsys:x:3:3:sys:/dev:/usr/sbin/nologinsync:x:4:65

2022-03-16 11:22:09 1049

转载 mysql提升order by速度

mysql支持两种方式的排序,FileSort和Index。Index效率高。它指msyql扫描索引本身完成排序。FileSort方式效率较低。满足以下条件时,会使用Index方式排序:1.order by 语句使用索引最左前列。2.使用where子句和order by子句条件列组合满足索引最左前列,where子句中如果出现索引的范围查询(in、between and...)会导致order by索引失效。3.order by中的索引字段升降序需保持一致,如果有升有降会导致索引失效引发using fi

2020-09-09 11:27:03 1744

原创 mysql导致索引失效的10种情况

索引失效的情况:1.全值匹配我最爱(建立的符合索引尽量和where的条件个数和顺序都保持一致)。2.最佳最前缀法则,带头大哥不能死,中间兄弟不能断。(如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始并且不跳过索引中的列)。3.不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描。4.范围条件右边的列的索引会失效。(只有在组合索引的情况下会失效)5.尽量使用覆盖索引(索引列和查询列尽量保持一致),不要使用select *6.mysql在使用

2020-09-08 11:17:35 491

转载 新手入门:目前为止最透彻的的Netty高性能原理和框架架构解析

1、引言Netty是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。本文基于Netty 4.1展开介绍相关理论模型,使用场景,基本组件、整体架构,知其然且知其所以然,希望给大家在实际开发实践、学习开源项目方面提供参考。本文作者的另两篇《高性能网络编程(五):一文读懂高性能网络编程中的I/O模型》、《高性能网络编程(六):一文...

2019-09-20 09:39:19 324

转载 记一次有惊无险的 JVM 优化经历

背景生产环境有二台阿里云服务器,均为同一时期购买的,CPU、内存、硬盘等配置相同。具体配置如下:由于这二服务器硬件和软件配置相同,并且运行相同的程序,所以在Nginx轮询策略均weight=1,即平台的某个流量由这二台机器平分。有一次对系统进行例行检查,使用PinPoint查看下服务器”Heap Usage”的使用情况时,发现在有一个系统Full GC非常频繁,大约五分钟一次...

2019-07-10 11:02:41 158

转载 Go中的下划线

1.下划线在import中  在Golang里,import的作用是导入其他package,但是今天在看beego框架时看到了import 下划线,不知其意,故百度而解之。  import 下划线(如:import _ hello/imp)的作用:当导入一个包时,该包下的文件里所有init()函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()...

2019-04-24 14:01:55 681

原创 文本框前台JS校验(数字、小数点后位数、长度限制)

先来说下用法: onkeyup="infoValidate(type,length,lengthAfterPoint,this);"type: 对应java里的数据类型分别有 Short、Integer、Long、BigDecimal 、String, Short、Integer、Long会自动校验java对应的大小length:长度限制,英文数字占一个字符,汉字占两个,没有长度限...

2019-04-24 11:22:48 4376

转载 设计原则(开发必知必会)

1、单一职责原则一个类,只有一个引起它变化的原因。应该只有一个职责。每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。这会导致脆弱的设计。当一个职责发生变化时,可能会影响其它的职责。另外,多个职责耦合在一起,会影响复用性。例如:要实现逻辑和界面的分离。from:百度百科 2、开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对...

2019-04-01 13:40:51 166

转载 SpringBoot整合Swagger2,再也不用维护接口文档了!

前后端分离后,维护接口文档基本上是必不可少的工作。一个理想的状态是设计好后,接口文档发给前端和后端,大伙按照既定的规则各自开发,开发好了对接上了就可以上线了。当然这是一种非常理想的状态,实际开发中却很少遇到这样的情况,接口总是在不断的变化之中,有变化就要去维护,做过的小伙伴都知道这件事有多么头大!还好,有一些工具可以减轻我们的工作量,Swagger2就是其中之一,至于其他类似功能但是却收费的软件,...

2019-03-25 09:06:55 185

转载 一次非常有意思的SQL优化经历:从30248.271s到0.001s

用的数据库是mysql5.6,下面简单的介绍下场景课程表create table Course(c_id int PRIMARY KEY,name varchar(10))数据100条学生表:create table Student(id int PRIMARY KEY,name varchar(10))数据70000条学生成绩表SCCREATE ...

2019-03-20 18:16:14 290

转载 eclipse热部署web项目

一、选中JavaEE视图因为在普通的Java视图下,窗口下方没有server选项卡二、双击Tomcat注意:可能很多人当然包括我一开始的时候,都是喜欢右键Tomcat然后Add and remove,以后千万不要养成这个习惯,否则每次都会被卡的想死的心都有,不管你电脑配置多高,内存多大,eclipse版本多新,九成概率都会卡,不信你可以闲着蛋疼多试几次哈哈哈(咳咳,小小吐槽不要在意...

2019-03-07 09:52:29 650

原创 JVM虚拟机调优

JVM引言 JVM在整个jdk中处于最底层,负责于操作系统的交互,用来屏蔽操作系统环境,提供一个完整的Java运行环境,因此也叫虚拟计算机。操作系统装入JVM是通过jdk中Java.exe来完成的 JVM引言 JVM在整个jdk中处于最底层,负责于操作系统的交互,用来屏蔽操作系统环境,提供一个完整的Java运行环境,因此也叫虚拟计算机。操作系统装入JVM是通过jdk中Java.exe来...

2019-03-04 17:49:07 154

转载 java面试题之二叉树

面试的时候遇到了一个这样的题目:如何打印出二叉树所有叶子节点的值。对于初学者来说,二叉树肯定是最需要学习的数据结构之一。如果您在解决基于二叉树的问题方面有一些经验,那么它很容易解决,因为像许多其他二叉树算法一样,您可以使用递归来打印Java中二叉树的所有叶节点。由于树是递归数据结构,因此可以将相同的算法应用于左子树和右子树。为了解决这个问题,你应该知道的第一件事是什么是叶节点,因为如果你不知道...

2018-12-05 10:48:15 374

转载 用通俗易懂的大白话讲解Map/Reduce原理

Hadoop简介Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关项目也很丰富,包括ZooKeeper,Pig,Chukwa,Hive,Hbase,Mahout,flume等.这里详细分解这里面的概念让大家通过这篇文章了解到底是什么hadoop:1.什么是Map/Reduc...

2018-09-27 11:22:04 1126

转载 浅谈大数据中Hadoop、Hive和Spark的详解

首先大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的。你可以把它比作一个厨房所以需要的各种工具。锅碗瓢盆,各有各的用处,互相之间又有重合。你可以用汤锅直接当碗吃饭喝汤,你可以用小刀或者刨子去皮。但是每个工具有自己的特性,虽然奇怪的组合也能工作,但是未必是最佳选择。存放数据传统的文件系统是单机的,不能横跨不同的机器。HDFS(...

2018-09-26 15:10:16 2775

转载 MySQL 的索引是什么?怎么优化?

索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本。MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,所以大数据量建立索引是非常有必要的。MySQL提供了Explain,用于显示SQL执行的详细信息,可以进行索引的优化。一、导致SQL执行慢的原因1.硬件问题。如网络速度慢,内存不足,I/O吞吐量小,磁盘空间满了等。2.没有索引或...

2018-09-26 14:50:53 214

原创 request.getRequestURL()和request.getRequestURI()的区别

request.getRequestURL() 返回全路径request.getRequestURI() 返回除去host(域名或者ip)部分的路径 举例如下:request.getRequestURL() : http://localhost:8080/project_name/user/login.dorequest.getRequestURI() : /project_n...

2018-09-19 15:46:08 6005

转载 JPA入门

集成方法请看上面的文档,集成后,可以继续阅读本页文档。1. 继承通用的Mapper&lt;T&gt;,必须指定泛型&lt;T&gt;例如下面的例子:public interface UserInfoMapper extends Mapper&lt;UserInfo&gt; { //其他必须手写的接口...}一旦继承了Mapper&lt;T&gt;,继承的Mapper就拥...

2018-09-19 09:15:30 372

转载 NIO入门

Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。Java NIO提供了与标准IO不同的IO工作方式:Channels and Buffers(通道和缓冲区):标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到...

2018-09-18 09:46:11 242

转载 Netty作用

随着移动互联网的爆发性增长,小明公司的电子商务系统访问量越来越大,由于现有系统是个单体的巨型应用,已经无法满足海量的并发请求,拆分势在必行。 在微服务的大潮之中, 架构师小明把系统拆分成了多个服务,根据需要部署在多个机器上,这些服务非常灵活,可以随着访问量弹性扩展。 世界上没有免费的午餐, 拆分成多个“微服务”以后虽然增加了弹性,但也带来了一个巨大的挑战:服务之间互相调用的...

2018-09-18 09:11:33 4291 1

转载 RabbitMQ三种Exchange模式(fanout,direct,topic)

RabbitMQ中,所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储。RabbitMQ提供了四种Exchange:fanout,direct,topic,headerheader模式在实际使用中较少,本文只对前三种模式进行比较。性能排序:fanout &gt; direct &gt;&gt; topic。比例大约为11:10:6...

2018-09-11 15:58:19 387

转载 rabbitMQ的几个应用场景

1.背景RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现。2.应用场景2.1异步处理场景说明:用户注册后,需要发注册邮件和注册短信,传统的做法有两种1.串行的方式;2.并行的方式(1)串行方式:将注册信息写入数据库后,发送注册邮件,再发送注册短信,以上三个任务全部完成后才返回给客户端。这有一个问题是,邮件,短信并不是必...

2018-09-06 10:46:29 239

转载 springboot常用配置(properties)

flyway.baseline-description执行基线时标记已有Schema的描述。flyway.baseline-on-migrate在没有元数据表的情况下,针对非空Schema执行迁移时是否自动调用基线。(默认值:false 。)flyway.baseline-version执行基线时用来标记已有Schema的版本。(默认值: 1 。)flyway.check-loca...

2018-09-06 10:02:18 435

转载 什么场景应该用 MongoDB ?

很多人比较关心 MongoDB 的适用场景,也有用户在话题里分享了自己的业务场景,比如案例1用在应用服务器的日志记录,查找起来比文本灵活,导出也很方便。也是给应用练手,从外围系统开始使用MongoDB。 用在一些第三方信息的获取或者抓取,因为MongoDB的schema-less,所有格式灵活,不用为了各种格式不一样的信息专门设计统一的格式,极大的减少开发的工作。案例2mo...

2018-09-06 09:11:20 141

springboot CRM项目

涉及技术: springboot + spring data + thymeleaf + shiro + ehcache + maven 版本要求:java1.8及以上

2019-05-06

一个适合新手学习的电商项目

shop >前言:基于ssm分布式开发实现的电商项目(聚合工程) 注:本项目为开源项目,不能用于商业应用,仅供学习。 ### 使用工具: maven(构建项目),svn(版本控制工具),myeclipse(集成开发环境),nginx(反向代理), FastDFS (图片服务器),tomcat(web服务器),zookeeper(集群管理),mysql(数据库) Junit(测试) ### 技术栈: spring,springmvc,mybatis(框架) solr(搜索服务),redis(缓存),easyUI(后台系统页面) ### 数据库设计 tb_user用户表(id,username,password,phone,email,created,updated) tb_item商品表(id,title,sell_point,price,num,barcode,image,cid,status,created,updated) tb_cat商品分类表(id,parent_id,name,status,sort_order,is_parent,created,updated) tb_item_desc商品描述表(item_id,item_desc,created,updated) tb_item_param商品规格参数表(id,item_cat_id,param_data,created,updated) tb_item_param商品规格参数模板表(id,item_id,param_data,created,updated) tb_order订单表(payment,payment_type,post_fee,status,create_time,update_time,payment_time,consign_time,end_time,close_time,shipping_name,shipping_code,user_id,buyer_message,buyer_nick,buyer_rate) tb_order订单商品表(id,item_id,order_id,num,title,price,total_fee,pic_path) tb_order_shipping订单物流表(order_id,receiver_name,receiver_phone,receiver_mobile,receiver_state,receiver_city,receiver_district,receiver_address,receiver_zip,created,updated) tb_content_category商品目录分类表(id,parent_id,name,status,sort_order,is_parent,created,updated) tb_content商品目录表(id,category_id,title,sub_title,title_desc,url,pic,pic2,content,created,updated) ## 分布式系统 ### 商品后台管理系统 ### shop-manager(管理后台) 商品的添加功能: 1.商品类目选择-easyui异步tree控件的使用 2.图片上传(fastdfs+nginx) 3.富文本编辑器使用KindEditor 4.分页使用PageHelper插件,插件是基于mybatis的拦截器接口实现的 商品的展示功能: 1.分页插件的使用PageHelper。 2.easyUIDataGrid的使用 ### 前台系统 ### shop-rest(发布服务) ### shop-search(搜索服务) * 使用solr实现搜索,内容列表使用redis缓存,使用zookeeper管理集群 ### shop-sso (单点登录系统) SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中, 用户只需要登录一次就可以访问所有相互信任的应用系统。它包括 可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。 它是目前比较流行的企业业务整合的解决方案之一。 用户登录: 1、接收用户名和密码 2、校验用户名密码 3、生成token,可以使用UUID 4、把用户信息写入redis,key就是token 5、把token写入cookie。 6、返回登录成功需要把token返回给客户端。 Session共享的问题: 1、tomcat做集群配置session复制。如果集群中节点很多,会形成网络风暴。推荐节点数量不要超过5个。 2、分布式架构。拆

2018-09-27

空空如也

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

TA关注的人

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