springboot
文章平均质量分 93
烟花散尽13141
Java分布式组件学习全家桶持续更新!
感谢支持
还请点赞、关注、评论三连
1、springcloud系统学习
2、数据库底层学习、sql优化
3、开发个人工具包
展开
-
从单例谈double-check必要性,多种单例各取所需
上面这段代码就是饿汉式单例模式。通过这单代码我们也能够总结出单例模式的几个特点特点隐藏类的创建即外部无法进行创建内部初始化好一个完整的类提供一个可以访问到内部实例的方法,这里指的是getInstance...原创 2022-06-06 08:55:13 · 324 阅读 · 0 评论 -
设计模式存在哪些关联关系,六种关系傻傻分不清--- UML图示详解
前言UML俗称统一建模语言。我们可以简单理解成他是一套符号语言。不同的符号对应不同的含义。在之前设计模式章节中我们文章中用到的就是UML类图,UML除了类图意外还有用例图,活动图,时序图。关于UML如何绘制,这里主要推荐两种方式一种是通过draw.io,另外一种就是Rational Rose这个软件。processon免费版有个数限制绘制你的第一个UML类图 public class Person { private Integer id;&n原创 2022-05-16 09:24:05 · 511 阅读 · 0 评论 -
jetbrain家的fleet(已获得预览权限)直接对标vscode , fleet有望超过vscode吗?今天我们实际操作下
申请预览版等待了一周终于得到了预览版的机会今天就来简单使用下。开始之前先来求个赞2021我脚踏实地,快来看看我都做了啥前言工程管理大多使用的是maven , 在maven之前还有ant 这个应该已经没多少人在使用了,或者说新人基本不在使用ant , 随着fleet的发布我们关注的焦点开始转移到轻量级idea的开发上。很荣幸,我申请到了fleet的使用了,立马开始着手使用。但是官网的demo很少,加之并没有通过vs等轻量级工具运行过我的后台项目,所以请原谅我不会使用fleet原创 2021-12-21 11:10:11 · 3370 阅读 · 4 评论 -
多项目如何高效协同合作 | springcloud系列之bus消息总线
前言在springcloud config章节中我们完成了配种中心的搭建,以及通过配置中心完成配置的抽离通过springcloud config模块我们将配置抽离到git仓库中我们不必要每次为了改配置而发包了。但是springcloud config并没有彻底的帮我们解决配置自动更新的问题。我们在config章节中我们遗留最后是每次修改git仓库后需要人为手动调用actuator/refresh接口才能促使配置的更新。当时也指出了在分布式微服务众多的情况人为调用接口耗时而且没有保障!!!当然你也可以写个原创 2021-10-08 09:15:57 · 319 阅读 · 0 评论 -
【redis前传】集思广益之quicklist,取其精华去其糟粕
前言在之前我们已经学习了redis五大数据结构中的list结构。其内部是linkedList和zipList两种结构。这是我们已经学习的内容。之前我没有结合操作具体查看。事实上在两者中还存在一种结合体quickList结构演变在上面我们添加了一个key为zlist的数据。通过object encoding zlist查看底层就是通过quicklist来构建的。之前在ziplist章节汇总我们了解到在redis中hash和list基本数据结构都使用了ziplist存储数据的。在list中我们确实原创 2021-09-22 09:04:06 · 227 阅读 · 0 评论 -
【redis前传】redis整数集为什么不能降级
前言整数集合相信有的同学没有听说过,因为redis对外提供的只有封装的五大对象!而我们本系列主旨是学习redis内部结构。内部结构是redis五大结构重要支撑!前面我们分别从redis内部结构分析了redis的List、Hash、Zset三种数据结构了。今天我们再来分析set数据结构内部是如何存储的基本结构在src/t_set.c中我们发现这样一段代码由此我们可知在set中是由两种数据结构构成的: hashtable+intset 。关于redis内部其他的结构我专门在【redis专栏中有原创 2021-07-21 09:07:55 · 155 阅读 · 0 评论 -
zset如何解决内部链表查找效率低下
zset作为有序集合,内部基于跳表或者说索引的方式实现了数据的快速查找。解决了链表查询效率低下的痛点前言紧接前文我们学习了Redis中Hash结构。在里面我们梳理了字典这个重要的内部结构并分析了hash结构rehash的流程从而解释了为什么redis单线程还是那么快本章节我们将视角下推,继续学习Redis五大天王中的zset数据结构 ; zset是有序不重复集合其内部元素唯一且是有序的,他的排序标准是根据其内部score维度进行排序的。zset结构基本单元关于zset结构很简单,一个是我原创 2021-07-12 08:46:51 · 486 阅读 · 1 评论 -
单线程照样飞起 | redis字典快速映射+hash釜底抽薪+渐进式rehash
前言相信你一定使用过新华字典吧!小时候不会读的字都是通过字典去查找的。在Redis中也存在相同功能叫做字典又称为符号表!是一种保存键值对的抽象数据结构本篇仍然定位在【redis前传】系列中,因为本篇仍然是在解析redis数据结构!当你尝试去了解redis时才能明白其中原理!才能明白为什么redis被大家吹捧速度快,而不是被告知redis很快!应用场景在Redis中有很多场景都是用了字典作为底层数据结构!我们使用最多的应该是redis的库的设置和五种基本数据类型的Hash结构数据!在上原创 2021-07-05 08:56:55 · 246 阅读 · 2 评论 -
redis淘汰+过期双向保证高可用 |此篇告诉你为什么redis那么快(一)
前言redis和数据相比除了他们的结构型颠覆以外!还有他们存储位置也是不相同。传统数据库将数据存储在硬盘上每次数据操作都需要IO而Redis是将数据存储在内存上的。这里稍微解释下IO是啥意思。IO就是输入流输出流方式将数据在硬盘和内存之间进行交互!而redis直接在内存上就剩下了IO操作。这也是redis快的原因之一吧内存相对于硬盘来说很宝贵。我们平时的电脑也是硬盘是内存的几百倍。既然内存很宝贵而redis又将数据存储在内存上那么redis肯定不能肆无忌惮的进行存储 。这就需要redis和开发者们原创 2021-06-28 13:51:58 · 255 阅读 · 2 评论 -
基于redis实现的四种常见的限流策略
引言在web开发中功能是基石,除了功能以外运维和防护就是重头菜了。因为在网站运行期间可能会因为突然的访问量导致业务异常、也有可能遭受别人恶意攻击所以我们的接口需要对流量进行限制。俗称的QPS也是对流量的一种描述针对限流现在大多应该是令牌桶算法,因为它能保证更多的吞吐量。除了令牌桶算法还有他的前身漏桶算法和简单的计数算法下面我们来看看这四种算法固定时间窗口算法固定时间窗口算法也可以叫做简单计数算法。网上有很多都将计数算法单独抽离出来。但是笔者认为计数算法是一种思想,而固定时间窗口算法是他的一原创 2021-06-17 13:57:00 · 700 阅读 · 0 评论 -
【springcloud长文系列】不要每天重复修改配置了,试试config一处修改病毒式蔓延自动更新配置吧|智能化开发
背景有多少次因为配置文件忘记修改导致重新发布有多少次因为无法实时修改配置导致重新发布有多少次同一个配置在不同项目需要重复修改有多少次因为配置导致项目启动失败!!!配置服务中心config官网文档面对上面种种的问题springcloud为我们提供一种解决方案—Springcloud Config它为分布式微服务提供了集中化的外部配置支持,配置服务器为微服务下所有环境提供配置中心Springcloud Config分为服务端和客户端、服务端就是本节介绍的对象。而客户端就是嵌入在各个微服务中和服原创 2021-06-15 14:50:18 · 300 阅读 · 1 评论 -
定时任务不在硬编码,动态定时刷起来
前言传统定时器是硬编码。但是有的时候业务上需要不断的调整问题描述我们开发了一个定闹钟的功能。这个功能肯定是定时器开发。但是这就存在一个问题这个定时是动态的。那么我们如何实现呢?请接着看简介定时器在开发中真的算是一种福利了。通过定时器我们省去了很多人力。我们通过定时器将一些繁琐定期的事情通过代码去完成。在Java开发中我们通过Timer类可以简单实现定时器功能。既然是springboot课程今天我们就来看看srpingboot整合定时器的事情传统定时器这里使用的是之前课程一的配置。原创 2021-05-31 09:42:05 · 370 阅读 · 0 评论 -
前端再也不用头疼了---分布式系列之网关zuul包揽全局
zuul模块搭建pom <!--eureka--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>原创 2021-05-17 09:28:06 · 1017 阅读 · 1 评论 -
装逼失败系列之ThreadLocal引起的一次线上事故,谁又知道那是几个通宵呢
线上用户存储数据后查看提示无权限前言不知道什么时候年轻的我曾一度认为Java没啥难度,没有我实现不了的需求,没有我解不了的bug直到我遇到至今难忘的一个bug 。 线上用户存储数据后查看提示无权限初次定位明明自己添加的数据,为什么提示自己没有权限呢?我一开始自信的认为是我们的客户操作有问题、或者是我们权限配置有问题但是带我自己亲自验证了一下之后发现这个问题时现时不现,属于一个偶发的问题。这个在开发阶段还真的不容易发现。问题升级经过自己的测试后让我更加怀疑人生了,你要么.原创 2021-05-10 06:19:19 · 287 阅读 · 0 评论 -
spring初识--bean的几种注册方式
spring彻底改变了java世界观。spring解决了java 对象管理问题,今天我们来看看spring创建对象的方式有哪些至今还不知道的吧注册bean的几种方式(IOC)BeanDefinition我们查看类图可以看出,BeanDefinitionRegistry下有三个实现类。spring为我们提供了一个默认的BeanDefinition注册工厂DefaultListableFactory 。 为什么说他是默认的不仅仅是因为名字里出现了Default字样。而是在AnnotationCo.原创 2021-05-03 08:08:28 · 1394 阅读 · 0 评论 -
不能再让服务这么任性的被访问啦---分布式服务熔断降级限流利器至Hystrix
全文概览文章目录为什么需要hystrix特色功能项目准备接口测试业务隔离线程隔离信号量隔离服务降级触发条件不足服务熔断服务限流请求合并HystrixCollapser工作流程HystrixDashboard聚合监控新建hystrix-turbinepomyml启动类源码为什么需要hystrixhystrix官网地址githubHystrix同样是netfix公司在分布式系统中的贡献。同样的也进入的不维护阶段。不维护不代表被淘汰。只能说明推陈出新技术在不断迭代。曾今的辉煌曾经的设计还是值得我们去学原创 2021-04-26 06:21:22 · 1041 阅读 · 7 评论 -
springcloud分布式之consul探索
文章目录consul安装后台启动客户端注册pom引入配置文件启动注解订单调用consul集群搭建docker安装单机安装可以忽略docker 默认IPconsul 运行原理之前罗列了eureka作为服务治理的整合,并简单介绍了eureka的工作原理。eureka在cap理论中遵循了AP原理。consul安装点我官网下载在官网下载的jar解压后里面执行一个可执行文件consul.我们将consul移动到我们自己的目录下。并形成以下文件结构方便日后调试配置。conf/dev.json :原创 2021-03-26 08:44:53 · 413 阅读 · 5 评论 -
springcloud--eureka服务治理深入浅出
文章目录什么是服务治理Eureka调用过程Eureka单机注册Eureka 单机启动单机注册集群注册客户调用Eureka集群注册idea 如何同一个项目启动多次Eureka自我保护为什么要自我保护如何开启自我保护自我保护如何激活上述源码分布式是现在互联网架构的首选。在分布式中我们会有三方理论简称CAP简称全称解释CConsistency数据一致性AAvailability可用性,性能PPartition tolerance分区容错性今天我们就来看看原创 2021-03-18 13:20:14 · 1420 阅读 · 11 评论 -
rabbitmq如何保证消息可靠性不丢失
之前我们简单介绍了rabbitmq的功能。他的作用就是方便我们的消息解耦。紧接着问题就会暴露出来。解耦就设计到双方系统不稳定问题。在mq中有生产者、mq、消费者三个角色。其中一个角色down机或者重启后。就设计到消息的丢失问题。因为MQ整个消息周期设计到上述的三个角色,所以我们从这个三个角色开始讨论丢失数据的情况。并如何解决生产者丢失消息在生产数据程序中,消息已经处理好还未发送给MQ这个阶段,生产者因为意外情况中断了。这个时候生产者这条消息就会丢失。因为程序重启好之后可能不会再次生产该消息。.原创 2021-03-04 09:39:45 · 776 阅读 · 1 评论 -
springboot整合swagger。完爆前后端调试
web接口开发时在调试阶段最麻烦的就是参数调试,前端需要咨询后端。后端有时候自己也不是很了解。这时候就会造成调试一次接口就需要看一次代码。Swagger帮我们解决对接的麻烦springboot接入swaggerspringboot 引入swagger只需要引入jar包,然后配置swagger启动。并配合swagger的注解使用就可以实现文档自动生成了。我们先来看看效果环境准备代码还是基于spring仓库开发。分支为feature/0004/springboot-swaggersw.原创 2020-07-17 08:49:25 · 750 阅读 · 0 评论 -
【优雅写代码系统】springboot+mybatis+pagehelper+mybatisplus+druid教你如何优雅写代码
文章目录spring基本搭建整合mybatispom配置mybatis配置设置数据源设置sqlsessionfactory设置扫描设置开启事务资源放行测试结果思考&&疑问使用通用mapper功能使用mybatis-plus使用分页插件mybatis-plus自带分页github分页插件使用常规版本总结# 加入战队微信公众号主题springboot 融合了很多插件。springboot相比spring来说有一下有点自动配置: 针对很多spring的应用程序,springboot提供了原创 2020-06-11 09:26:34 · 1661 阅读 · 0 评论