自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小咸白鱼的博客

我也想成为大佬啊

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

原创 OpenFeign + Ribbon + Hystrix,超时时间的配置

OpenFeign + Ribbon + Hystrix时,超时时间的配置参考博文:https://www.cnblogs.com/WaterGe/p/11687118.html​ 当我们的系统,同时使用到上面三者时,必定需要进行一些相关的配置,否则有可能会因为优先级和默认值等关系出现和预料的结果不同的情况,特别是在超时时间上。(1)Hystrix可配置的部分# false表示hystrix不进行超时控制,也就是超时控制交给了Ribbon处理# true则表示hystrix、ribbon都会

2021-09-20 16:33:27 1698 1

原创 Java8 Stream 各种常见流处理功能

List 根据某些属性进行去重List<Order> orders = Lists.newArrayList();// 按照订单编号和类型去重orders = orders.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getNum() + ";" + .

2021-09-20 16:25:57 275

原创 手牵手带你整合Shiro+JWT实现认证功能

需要对 shiro 和 jwt 有一定的了解。Shiro和JWT的区别​ 整合之前需要清楚Shiro和JWT的区别。首先Shiro是一套安全认证框架,已经有了对token的相关封装。而JWT只是一种生成token的机制,需要我们自己编写相关的生成逻辑。其次Shiro可以对权限进行管理,JWT在权限这部分也只能封装到token中,需要我们自己实现处理逻辑。最后 Shiro是基于session保持会话 的,也就是说是有状态的。而JWT则是无状态的(服务端不保存session,而是生成t.

2020-11-23 17:48:35 7512 42

原创 springboot后端跨域addCorsMappings与拦截器冲突导致跨域失效

问题出现在一个简单的登录功能,本想随便应付一下课设,使用下传统的session保存用户信息即可,没想到遇到了这一个坑,甚是欢喜。​ 首先介绍下大概背景,系统是前后端分离的项目,经典的Vue + SpringBoot组合。有过前后端分离开发经验的人都很清楚,需要解决跨域问题。我就直接在后端进行的跨域处理。直接添加下面的配置类:@Configurationpublic class MyWebConfig implements WebMvcConfigurer { //配置解决跨域问题 .

2020-11-09 16:29:45 2869

原创 谁说秒杀系统简单的?说说秒杀系统设计思路

秒杀系统​ 什么是秒杀,我就不多说了,懂得都懂,不懂的多逛逛淘宝。对于秒杀功能,从专业的角度上总结一句话:在高并发下访问同一资源。所以一个优秀的秒杀系统,就需要能够 在保证功能正确的情况下,顶住这样的一个冲击。​ 什么是功能正确?就是避免超卖,也要避免少卖。就是我有多少库存,我就要刚刚好卖出多少(当然如果没人来买,你也不能自我消化掉)​ 接下来就是怎么顶住了……对于高并发下,普通硬扛肯定不行。可以出肉加强下系统的承受能力(集群部署后负载均衡、熔断降级等),还需要有奶妈(缓存等),或对敌方进行各种

2020-10-11 23:20:15 478 1

原创 Shiro学习笔记

Shiro1. 什么是权限管理一般来说,一个系统对于不同的用户,提供的不同的功能,也就是权限不同。所以对于多角色的用户,一般需要进行权限管理,实现对用户访问系统的控制,按照安全规则或者安全策略控制用户只能访问自己被授权的资源。​ 权限管理包括对用户身份的 认证 和 授权 两部分。对于需要访问控制的资源,用户首先要经过身份认证,认证通过后,根据授予的权限,访问相应的资源。认证​ 判断一个用户是否为合法用户。(用户登录校验、session验证、token验证都是常见的方式)授权​ 也就是

2020-10-10 22:50:57 424

原创 Redis学习笔记(理论+面试)

Redis1 简介是开源免费、遵守BSD协议、高性能的NOSQL的 key-value 数据库。是简单的、高效的、分布式的、基于内存的单线程缓存工具。简单是Redis的突出特色,简单可以保证核心功能的稳定和优异。支持网络、可以持久化、支持数据备份、集群、消息队列等高可用功能。在企业开发中,Redis常被作为分布式缓存热点数据:常被查询、不常被修改、删除的数据临时数据:不必持久化、有失效时间的数据(验证码等)2 特点2.1 关系型数据库 VS 非关系型数据库(1)关系型优点

2020-10-10 22:38:58 1333 5

原创 一致性哈希(复习版)

转载请标明原创:https://mp.csdn.net/console/editor/html/106304145传统经典的分布式集群处理服务器是一个集群,前端保留了某个固定的hash函数,每次都通过某个请求字段来hash后取模,判断需要到服务器集群中的哪台机器上处理。这样子,可以实现集群的负载均衡(因为hash函数得到的情况是均匀分布的)。但是当我要新增机器或者删除机器时,就需要重新计算哈希。(比如从3台增加到5台机器,前端的哈希取模就需要修改为5,同时原本3台机器中保存的数据,需要全部重.

2020-05-23 18:31:07 280

原创 LinkedHashSet深入源码

Java容器专栏: Java容器源码详细解析(面试知识点)需要先了解:LinkedHashMap 、HashSet很简单,就直接上源码吧(下面就是全部源码了,很少)//继承了HashSet类,实现了Set、Cloneable、Serializable接口public class LinkedHashSet<E> extends HashSet&lt...

2020-04-07 15:52:28 195

原创 LinkedHashMap深入源码

Java容器专栏: Java容器源码详细解析LinkedHashMap继承HashMap,所以需要先了解HashMap:HashMap(一)LinkedHashMap底层数据结构和HashMap一样都是基于数组+链表(红黑树)实现的,只不过LinkedHashMap还在此基础上增加维护了一条双向链表,即每个entry节点都有before和after指针。这条双向链表记录保存着元素插...

2020-04-07 15:27:45 110

原创 HashSet深入源码

Java容器专栏: Java容器源码详细解析(面试知识点)HashSet底层是HashMap,所以需要先了解HashMap:HashMap(一)HashSet底层数据结构HashSet是基于HashMap来实现的,底层用HashMap来保存数据。其依靠HashMap的key不可重复,来保证将来加入到HashSet中的元素也不重复,也保证元素最多只能有一个null值,由于Hash...

2020-04-06 17:07:23 127

原创 HashMap深入源码

Java容器专栏: Java容器源码详细解析(面试知识点)(一)HashMap底层数据结构和原理数据结构是哈希桶/哈希表/散列表(即数组+链表),数组每一个位置对应一个桶。在JDK8还引入了红黑树。在某个桶的链表长度大于8且HashMap中元素的个数大于64的时候自动变成一棵红黑树。(如果链表长度大于8,但是HashMap元素个数小于64时,采用扩容来解决)为什么要引入红黑树?...

2020-04-06 00:06:52 147

原创 Vector & Stack深入源码

Java容器专栏: Java容器源码详细解析(面试知识点)因为部分内容可能已经在本专栏前面的文章提及到,这里只是简单说明,所以建议先看看:ArrayList LinkedListVectorVector这个类现在已经不常用了,快被遗弃了。(一)Vector底层数据结构和ArrayList一样,底层都是Object动态数组。(向量队列)(二)Vector继承和实...

2020-04-03 16:20:24 113

原创 LinkedList深入源码

Java容器专栏: Java容器源码详细解析(面试知识点)因为部分内容可能已经在本专栏前面的文章提及到,这里只是简单说明,所以建议先看看:ArrayList详细说明都在源码里,耐心看会发现其实也挺简单的。(一)LinkedList底层数据结构双向链表,链表中的每个节点都包含了对前一个和后一个元素的引用。链表的最大的容量为Integer.MAX_VALUE。(二...

2020-04-02 22:09:51 138

原创 ArrayList深入源码

这里仅作ArrayList的源码解析,不进行与LinkedList的查、插、删等常见的性能对比。也不对List接口的有序可重复允许null值等做过多的说明。既然看源码了,想必这些都懂了,我就不必再赘述了。详细说明都在源码里,耐下心看吧,其实挺简单的。(一)ArrayList底层数据结构可调整大小的动态数组。(二)ArrayList继承关系除了实现List接口外,还实现...

2020-03-31 21:15:18 178

原创 第7章 虚拟机类加载机制

第7章 虚拟机类加载机制这一章花费了我好久的时间才整理出来的,看书和看视频结合起来一起整理,所以内容和干货有点多,如果有不正确的地方欢迎各位指正!...

2020-03-25 11:40:25 144

原创 第2章 Java内存区域与内存溢出异常

第2章 Java内存区域与内存溢出异常(一)运行时数据区域(Java虚拟机内存模型)Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范》的规定,Java虚拟机所管理的内存将会包括以下几个运...

2020-03-19 21:06:07 123

原创 第1章 走近Java

第1章 走近Java(一)Java技术体系包括:Java程序设计语言 各种硬件平台上的Java虚拟机实现 Class文件格式 Java类库API 来自商业机构和开源社区的第三方Java类库JDKJava程序设计语言 + Java虚拟机 + Java类库 = JDKJRE + 开发工具API = JDK是用于支持Java程序开发的最小环境JRE...

2020-03-18 18:19:54 147

原创 分布式、微服务(概念)

(一)分布式传统的单体架构模式简单方便,但是在如今高并发的应用场景中,单体架构已不适用,而且单体架构也有明显的缺点存在单点故障导致整体不可用 全部任务都在同一服务器(节点)处理,响应慢、压力大所以现在将系统进行拆分,消去中心化管理,那么怎么拆?既然单个节点隐患大,那就将其划分,分别运行在不同的服务器(节点)上,形成集群。注意这里的集群概念并不等同于redis中的“集群”(...

2020-02-29 18:59:08 766

原创 Rest风格(概念+实现)

写在前面:这是我之前为了学习REST风格,查了几篇大佬的博客再结合自己理解写下来的笔记,之前很少写博客都是写笔记,现在准备整理笔记后多多写博。因为时间挺久,所以忘记了是查阅了哪些大佬们的博客,如果读者们知道是哪些博主的博客,麻烦告诉我,我会添加查阅链接,肥肠抱歉!参考博客链接:REST什么是即 Representational State Transfer(资源状...

2019-09-20 23:55:30 732 1

原创 MVC设计模式和三层结构(适合初学者)

题外话: 我们经常把MVC模式和三层架构联系在一起,一旦让你谈谈MVC设计模式,不可避免的总是会说到三层架构,这对于一些高手和大佬来说并没有什么问题,但是对于一些新手,想要学习MVC设计模式的小白来说,有时候就不太友好了。大多人(包括我)刚开始学的时候,大部分都是看大佬们的博客学习,但是正是如此,被大佬们的博客搞得头晕,很容易将MVC设计模式和三层架构搞混,或者以为是同一个东西,...

2019-05-06 22:27:50 8577 10

空空如也

空空如也

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

TA关注的人

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