自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(315)
  • 资源 (52)
  • 收藏
  • 关注

原创 springboot统一封装返回结果

前言在项目框架整合阶段,为了更优雅的封装后端返回结果,便于前后端联调,通常需要对后端的返回值进行一定的封装处理,下面介绍2种比较实用的方式方式1:常规处理定义一个枚举类,主要包括返回的code和message,更多的返回码可以根据业务需要在后面继续添加@Getterpublic enum ResponseCodeEnums { /** * 成功 */ SUCCESS(200, "请求成功"), /** * 失败 */ FA

2021-04-15 22:22:01 39

原创 win10快速搭建scala环境

前言scala作为大数据开发的标配语言,掌握scala的开发显得尤为重要,本篇先简单介绍下如何基于windows快速搭建scala的运行环境配置过程1、官网下载scala的安装包(可以理解为Java下的JDK),https://www.scala-lang.org/download/如果是windows,请选择.zip的那一个2、下载到本地后,放到磁盘的某个路径下,目录最好不要有中文,我这里选择的是scala-2.12.8版本,可以根据自己的需求选择不同的版本3、配置环境变量,这个和配置JD

2021-04-08 22:28:59 95

原创 java快速生成数据库文档

前言在产品发布前夕,经常因为编写各类设计文档感到心碎,倒不是难,而是比较繁琐,举例来说,像编写数据库文档这种操作来说,对于新手,甚至很多有一定开发经验的同学来说,都觉得是一件费力得事情,下面推荐一个小组件,并提供一段程序,帮助有需要得同学快速生成数据库文档,已解决这个麻烦得小事环境准备一个开发数据库,以下截取了部分表,实际中可能远不止这些1、导入pom依赖 <!-- screw核心 --> <dependency> <gro

2021-04-03 14:21:16 129

原创 RabbitMq分布式事务解决方案第二篇

前言在上一篇,我们谈到了如何基于RabbitMq实现一个通用的分布式事务解决方案的基本思路,本篇将具体具体编码来实现这一过程环境准备创建一个用于记录rabbitmq消息传递过程中的各自状态信息的表CREATE TABLE `trans_message` ( `id` varchar(64) DEFAULT NULL, `service` varchar(255) DEFAULT NULL, `type` varchar(255) DEFAULT NULL, `exchange` va

2021-03-10 22:34:34 191

原创 RabbitMq分布式事务解决方案第一篇

前言微服务架构下,相比单机事务,一个比较复杂的地方在于,在分布式环境下,面对的是分布式事务,分布式事务整体来说无法严格遵循传统的ACID4个特性,而只能根据系统的业务指标,通常满足可用性,和最终一致性,这也是不少互联网产品的实践结果的选择在分布式事务一章中,探讨了有关常用分布式事务的几种解决方案,可以依据自己所在项目的特点,有选择的使用,比如对数据的一致性要求严格而对并发数可容忍的,可以考虑使用seata解决,对并发要求高,同时对数据一致性的要求也比较高的,可以考虑使用rocketMq事务消息下面要介

2021-03-07 18:17:34 272 3

原创 Redis积分排行榜设计与实现第二篇

前言在上一篇,讨论了积分排行榜基于mysql的实现方案,并且在文章的末尾我们抛出了一个问题,就是当用户量越来越大的时候,性能的问题将会成为此功能的瓶颈,因此需要寻找更好的解决方案在Redis中,提供了一个叫做SortedSet的数据结构,该数据结构有2个特性,有序性和数据的可压缩性,利用这2个特点,结合上篇分析到的积分排行的业务场景,下面来尝试下如何利用Redis的这种数据结构来实现topN的积分排行榜吧实现思路用户签到插入积分时,同时插入到zset中获取topN的排行信息时候,直接从zset中

2021-02-28 17:08:18 140

原创 Redis积分排行榜设计与实现第一篇

前言越来越多的社交类APP为了提升应用的用户活跃度,刺激用户消费,采取签到功能,通过签到进行一系列的促销活动,比如签到赠送积分,通过积分可以兑换相应的礼品,购物抵扣券之类的在某些APP上,有一种积分排行榜的功能,或者游戏APP应用上面也有类似的得分排行榜,这个排行榜一定程度上对玩家来说,如果能上榜,也是不错的成就感以签到送积分为例简单分析下,当前账号绑定的信息,每天签到一次,就往一张签到表中插入一条数据,同时在积分表增加一条数据,最终根据业务需要,展示排行前10或者20的积分用户关于签到 -&gt

2021-02-28 15:57:50 256

原创 Redis签到功能设计与实现

前言在很多社交类APP中,签到功能似乎成了标配,签到功能一方面可以促进APP中用户的活跃度,而且可以绑定一些促销活动刺激用户消费等关联功能设计实现与分析但从此功能的实现上来说,似乎并不是太难,我们完全可以通过创建一个如下简单的表实现和上一篇一样的思路,设想你的APP的用户量是像QQ或微信那种量级的,每天签到的人数加起来该有多少?你的这张表够不够承载一年365天这么庞大用户体量的数据就算可以借助mysql的索引功能加速查询,但是总有一天,该表所在的服务器会有撑不住的一天,而使用那些分库分表之类的

2021-02-27 20:00:16 128

原创 Redis好友关注设计与实现

前言

2021-02-24 22:21:12 195

原创 rabbitmq实现秒杀中订单流量削峰

前言在Redis秒杀功能设计与实现一篇中,我们使用redis实现了商品的秒杀抢购功能,在当前的设计中,只涉及到商品抢购,即用户锁定名额,并将成功抢购到的用户信息保存到redis中了但是一个完整的抢购流程在业务流程中看到,包括锁定名额和下单,在超卖问题分析这篇中,我们是将抢购与订单放在一起进行的仔细分析这样的做法,在高并发的抢购环境下,这样做是欠妥的,因为使用了分布式锁,尽管时间很短,但分布式锁的存在仍然会耗费不少性能而且从系统的整体设计层面中,在微服务架构中,如果像双11那样瞬时订单量特别大的情况下

2021-02-21 18:38:37 348

原创 Redis解决秒杀中一人一单问题

前言在上一篇,通过实例演示了在高并发场景下多人抢购优惠券的超卖问题,并且利用redis+lua解决了超卖问题,但是一人只能抢一单的问题是否还在呢?一人抢多单压测可以发现,在经过改造时候,虽然解决了超卖问题,但是一人可以抢购多单的问题仍然存在为什么会存在这个问题呢?简单分析下面这段代码,扣减库存和下单操作分割为2步,在多线程并发抢购时,第二步判断用户是否抢过和下面的第三步,第四步都是隔开的,假设多个线程都走到第二步,这时候发现当前1111这个用户还没有抢过,继续走到第二步时候,当库存不为0时,

2021-02-20 22:39:11 128

原创 Redis解决秒杀中的超卖问题

前言在上一篇,我们通过一个简单的案例,分享了怎么利用redis设计并实现一个秒杀抢购的功能,关于秒杀功能中,需要注意的比较关键的有两个问题高并发场景下,怎么确保不会超卖高并发场景下,如何确保一人一单具体在设计的时候,需要结合实际的项目和业务场景,比如1000个人抢购50件商品的时候,抢购是一方面,抢购完毕之后还要下单,这个下单的业务是和抢购放在一起呢还是单独处理,需结合具体场景以及系统的架构进行分析下面用一个更通俗的业务场景来比较全面的业务场景描述某些商家为了吸引客户进店消费,推出线上发放

2021-02-20 18:09:24 481 1

原创 Redis秒杀功能设计与实现

前言抢购问题不仅是电商类项目中一个重要的业务,也是许多开发人员在进阶过程中绕不开的问题,关于抢购,如果理清了前后的逻辑和里面涉及到的几个关键性的问题,问题就迎刃而解了抢购中的几个常见问题如何设计抢购功能?(表结构,以及整体的抢购思路)不借助中间件如何实现抢购?(不借助redis)怎么利用redis解决抢购中的超卖问题怎么提升抢购的整体并发?上图是抢购中的两个重要步骤,对于抢购用户,抽象来讲,服务端只需要完成对待抢购商品的锁定以及锁定后的下单操作即可分开来说,商品名额锁定阶段,活动期间待

2021-02-18 18:46:28 325

原创 Java建造者模式详解

前言在生活中,有这么一种场景,当需要去4S店买车时,会根据个人的预算,卖家会给你推荐同一个品牌的相应的低配,中配或高配版,在网上购买毕笔记本时也会遇到类似的情况,但不管是汽车也好,还是电脑,它们基本的功能都是具备的,但是内部使用的材料不同造成最终搭配出来的效果不一样,映射到设计模式上,就是一个典型的建造者设计模式建造者设计模式使用多个简单的对象一步步构建成一个复杂的对象,即将一个复杂对象的构建与表示进行分离,使得同样的构建过程存在多种表示(即电脑可以有多条组装线,A线组装低配电脑,B线组装高配电脑)

2021-02-17 11:05:53 102

原创 JVM常用垃圾收集器

前言在上一篇,我们谈到了JVM中的常用垃圾回收算法,并了解了JVM中针对堆区中不同的分代采用不同的垃圾回收算法在了解了垃圾回收算法之后,很多伙伴不禁在想,既然是分代垃圾回收,自然新生代和老年代的垃圾收集器也是不同的,事实上确实是这样,分代的回收算法也产生了不同的垃圾收集器,先来看一下下面这张简图左边表示年轻代中可选的垃圾收集器,右边表示老年代中可选的垃圾收集器,任何两个连线之间的两种垃圾收集器可以进行组合使用,在年轻代中,Parallel Scavenge 是默认的GC收集器,而在老年代中,Seri

2021-01-31 22:31:11 209

原创 jvm垃圾回收算法详解

前言相比C语言,JVM虚拟机一个优势体现在对对象的垃圾回收上,JVM有一套完整的垃圾回收算法,可以对程序运行时产生的垃圾对象进行及时的回收,以便释放JVM相应区域的内存空间,确保程序稳定高效的运行,但在真正了解垃圾回收算法之前,有必要对JVM的对象的引用做一个简单的铺垫JVM对象可达性分析算法Java虚拟机中的垃圾回收器采用可达性分析来探索所有存活的对象扫描堆中的对象,看是否能够沿着GC Root对象为起点的引用链找到该对象,找不到表示可以被回收想象一下,对象在什么情况下会被认为是垃圾对象呢?

2021-01-31 17:09:55 285

原创 Java会话技术之 —— Spring Session

前言在上一篇我们聊到了会话技术的基础原理中session和cookie的使用,基于cookie和session可以实现客户端(浏览器)和服务端的会话存储,从请求的无状态变为一定程度的有状态,在文章最后,通过一个简单的演示,看到这样一种现象,即在分布式环境下,假如客户端第一次携带着JSESSINID访问了A服务器的某个接口,再次访问B服务器相同服务的相同接口时,却发现获取到的JSESSINID值为null很明显,在分布式环境下,基于单机模式下的session和cookie的值是无法跨进程互通,于是我们想,

2021-01-30 19:49:28 75

原创 Java会话技术之 —— cookie与session

前言说到cookie与session,想必大家都不陌生,写过单机模式下的登录业务逻辑的应该多少都会接触到cookie与session,对于cookie和session,很多同学第一反应就是cookie是存储再客户端浏览器的,而session是放在服务端的对于网上一大堆的关于对比cookie与session技术的,对于面试来讲,临时突击加以记忆还是可以的,但说到具体的使用以及原理,还是有必要对其做一些深入的理解和探讨首先我们通过一个具体的小案例来看看cookie与session的由来业务场景假如在单

2021-01-25 22:24:30 56

原创 Java装饰器模式详解

前言装饰器模式也叫做包装器模式,属于结构性设计模式一种,装饰器设计模式在实际的生活中也有很多体现,举例来说,某手机厂商发布了XXX标准版手机,为了吸引用户眼球,提升销量,还特别有纪念碑,青春版,至尊版等我们可以这么设想,不管是哪个版本的手机,其基本的功能是不变的,电话、短信、拍照等这些基础的功能在各个版本都能找到但是不同的版本,基于某个基础的版本,根据标价的不同添加了更多定制化或个性化的功能,相当于是说丰富了标准版的功能装饰器模式作为现有类的一个包装,允许向现有的对象添加注入新的功能,同时还不改变

2021-01-24 22:17:10 55

原创 mysql 索引原理详解

前言在mysql的性能优化中,索引优化可以算是篇幅最大的了,这是因为mysql底层的Innodb结构在对于索引的优化上面做了大量的优化和改进,如何合理的使用索引,加速查询性能,是一个值得研究的问题Innodb索引为什么要建立索引呢?拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字mysql索引的目的也是在此,数据可以以一定的物理结构存储到磁盘上,但是检索的时候,如果直接查找必然会消耗大量的时间在其他方面,而有了索引,配合合理的存储结构,就可以大大

2021-01-24 13:06:58 50

原创 Java虚拟机栈详解

前言虚拟机栈也称为Java栈,每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧(Stack Frame)栈特点基本介绍Java虚拟机栈属于线程私有,它的生命周期与线程相同(随线程而生,随线程而灭)虚拟机栈说明了线程运行时的瞬时状态每次方法调用,都会产生对应的栈帧栈帧包括局部变量表、操作数栈、动态链接、方法返回地址和一些附加信息每个方法被调用至执行完毕的过程,就对应这个栈帧在虚拟机栈中从入栈到出栈的完整过程栈的深度有限制局部变量表局部变量表(Local Variable T

2021-01-23 22:44:38 90

原创 mysql Innodb参数配置

前言作为mysql底层最重要的组件,了解Innodb的原理并掌握其基本的参数配置对于mysql性能调优具有非常重要的作用下面结合工作中和Innodb部分常用的参数配置进行说明1、innodb_buffer_pool_size该参数表示mysql 的Innodb存储引擎为优化查询性能而开辟出的一块内存缓冲区show global VARIABLES like 'innodb_buffer_pool_size'换算成M就是128M,即Innodb引擎默认开辟了128M的空间作为优化查询性能使用,

2021-01-23 19:53:40 73 2

原创 mysql查询缓存参数配置

前言使用mysql对数据检索时,为了提升查询性能,引入了缓存的配置,通过设置缓存相关参数,在一定范围内可以大大提升查询效率举例来说,当同一条查询语句打到mysql服务器,如果配置了查询缓存,就会将这个结果集存放在缓存空间,下一次同一条sql过来时就直接走缓存,这样就可以提升查询效率1、查看mysql服务器缓存相关配置参数show status like 'Qcache%';Qcache_free_memory:Query Cache中目前剩余的内存大小,通过这个参数可以较为准确的观察到当前系统

2021-01-18 23:02:49 104

原创 mysql连接参数配置

前言mysql性能优化涉及到很多方面,在上一篇中通过explain打印出sql的执行计划可以作为指导开发人员进行sql优化是一个方面,另外,mysql自身的参数配置也很多,比如连接参数(connection),查询缓存等,合理的设置mysql参数对于性能优化也是非常重要的下面对mysql的连接参数,即connection相关的参数配置做简单的说明mysql参数设置的两种方式在实际配置mysql参数时,通常有2种做法,可以通过my.cnf(linux)进行设置(持久化设置),也可以通过命令,set g

2021-01-17 17:11:10 268

原创 mysql explain执行计划详解

前言在日常开发中,经常会碰到mysql性能调优的问题,比如说某个功能一开始使用的时候,响应挺快,但是随着时间的推移,应用的访问量,数据量上去之后,发现越来越慢,甚至更糟糕,通常来说,排除了网络相关的因素之后,大多数情况下都是由sql问题引起的因此,如何对查询的sql语句进行优化就成了关键所在,但是对不少开发同学来说,sql调优的范围太大,经常会显得无从下手,基于经验是一方面,另一方面需要对一条sql的底层执行原理有着较为深入的理解,这样才不会显得毫无头绪,其中,掌握explain关键字的使用对于mysq

2021-01-17 10:08:01 78

原创 Java工厂设计模式详解

前言工厂设计模式在开发过程中有大量的运用,不管是spring框架,还是诸多的中间件,都有着工厂设计模式的体现比如,手机生产工厂,当提供了相关生产手机的原材料,工厂就可以按要求生产出手机工厂模式介绍工厂模式提供了一种创建对象的最佳方式,我们在创建对象的时候不会对客户端暴露具体的创建对象的逻辑,并通过使用一个共同创建的接口来指向新创建的对象工厂模式常用实现方式简单工厂模式通过传入相关的类型参数来返回相应的类,这是最简单的一种实现方式,功能相对单一,ke扩展性较差工厂方法模式通过实现类

2021-01-13 22:18:52 185

原创 JVM类加载器详解

前言在上一篇中,通过下面这幅图大致了JVM整体的内部运行结构图,在JVM的结构中,类加载子系统作为连接外部class文件与真正将class文件加载到运行时数据区,承担着重要的作用类加载器是什么?有什么作用?1、负责从文件或者网络加载class文件字节流2、读取字节码中的信息,并在运行时存储到JVM的内存区域3、检查并确保加载的class文件信息符合JVM字节码规范...

2021-01-11 23:12:03 281 2

原创 jvm常用监控命令总结

前言在生产环境中,为了保证Java应用的健康运行,需要动态检测应用运转过程中的各种指标,比较常见的像CPU利用率,内存使用,堆栈是否正常等另一方面,生产环境中出现的各种问题,包括异常信息等,都可以通过一些监控指标进行呈现,通过这些指标指导运维和开发人员快速排查问题定位问题与解决问题但说到底,监控的本身离不开原始数据的采集,而JVM本身可以通过相关的命令得出许多有助于分析,排查和定位问题的源信息,本篇将介绍开发过程中常用的一些JVM监控命令,方便工作中快速查阅命令说明常用形式jp

2021-01-03 15:40:05 81

原创 JVM基础总结

前言作为一名Java开发人员,有必要对JVM有一个全面系统的认识,从而更好的指导在开发过程中指导我们更高效的开发,以及解决生产中的问题1、什么是JVMJVM全称Java虚拟机,即Java应用运行的环境(Java二进制字节码的运行环境)Java虚拟机是一台执行Java字节码得虚拟计算机,拥有独立得运行机制,但是其运行的Java字节码文件未必由Java语言编译而成,可以理解为一套标准定义的规范JVM平台支持的各种语言可以共享Java虚拟机带来的跨平台性、优秀的垃圾回收器,以及可靠的即时编译器Jav

2021-01-02 22:52:17 60

原创 redis缓存穿透,缓存击穿与缓存雪崩详解

前言在web应用开发中,redis越来越多的应用于各种需要缓存的场景中,比较经典的使用场景就是,使用redis配合mysql做二级缓存,以应对在流量高峰的时候,减少高并发请求对数据库的压力但是在这种简单的架构模式下,如果使用不慎,或者对某些问题没有做到提前的预判,在高并发或者某些特殊场景下,可能会出现缓存穿透,缓存击穿或雪崩的现象缓存穿透请求查询时,key对应的数据在数据源中不存在,从而每次请求的key从缓存中获取不到,请求都会直接打到数据库,当这种请求的量特别大的时候,可能会压垮数据源举例来说

2021-01-02 17:09:05 169

原创 kafka消费者分区消费策略

前言在上一篇,我们谈到了从生产者一端,kafka是基于何种策略,将消息推送到集群下topic的不同分区中,可以使用kafka自带的分区策略,也可以根据自身的业务定制消息推送的分区策略而从消费者一端来看,consumer连接到kafka集群之后,是基于什么样的分区策略进行消息消费的呢?kafka消息消费原理如上图所示,kafka的设计架构让它从开始就为分布式而生,上图是一个简单的消息消费示意图,我们知道,一个topic下可以设置多个分区,每隔分区又可以设置多个副本消费者从topic拉取消息的时候,

2020-12-27 22:24:58 395

原创 kafka生产者消息分区策略

前言众所周知,kafka的topic具有分区的概念,生产者写入数据到kafka之后,涉及到数据到底写到哪个分区?常用的分区写入策略生产者写入消息到topic,Kafka将依据不同的策略将数据分配到不同的分区中,具体来说,kafka提供了几种常用的分区写入策略:轮询分区策略随机分区策略按key分区分配策略自定义分区策略下面就来具体看看各自分区写入策略的机制吧轮询策略kafka的默认的策略,也是使用最多的策略,可以最大限度保证所有消息平均分配到一个分区如果在生产消息时,key为nul

2020-12-26 22:27:49 88

原创 kafka消息确认机制

前言ACK机制是所有消息中间件必备的特新,kafka也不例外,ACK机制可以提醒使用者消息是否成功发送到broker我们知道,kafka的一个topic中,具体负责处理消息的是分区,一个分区可能存在多个副本,因此在producer端向broker发送消息时,ACK表示消息成功发送到分区后,broker返回给发端的一种可靠性机制producerACKs参数producer端的ACK机制和副本数量有着较为密切的关系,producer配置的acks参数了,acks参数表示当生产者生产消息的时候,写入到副

2020-12-26 17:55:04 562

原创 springboot拦截器与过滤器详解

前言不管是传统的ssm项目,还是springboot项目,拦截器和过滤器在项目开发中都离不开,比如说对于ssm框架类的项目来说,许多登录逻辑的前置校验,黑白名单的检查,以及部分请求的数据分析等依然需要在过滤器或者拦截器中完成随着微服务的盛行,项目中开始引入网关这一层,网关可以说在某种程度上替代了拦截器或过滤器的一部分功能,但网关毕竟不能和拦截器或过滤器等同起来,毕竟它的主要作用不是在这里,微服务之下,不同的微服务自身承载着不同的业务意义,需要单独对自己的服务单元做资源的精细化管控时,过滤器和拦截器仍然能

2020-12-20 19:18:57 238

原创 tomcat请求处理过程源码分析

前言在之前的篇章中,基本上了解了tomcat的整体架构,并通过源码调试的方式分析了tomcat初始化过程中各个组件主要做的事情,我们知道,tomcat作为一款企业应用级的容器,其最重要的功能就是发布应用,接收客户端的请求并响应,但是从tomcat底层其究竟是怎么从接收一个请求到最后响应给客户端,这个过程是怎么执行的呢?本篇通过源码的方式简单分析一下环境准备编写一个简单的web工程,使用本地的tomcat部署起来并运行,由于这个过程比较简单,相信做过web应用开发并使用tomcat部署过项目的同学都知道

2020-12-19 13:56:00 159

原创 redis优化查询的两种方式

前言一般来说,查询成为很多应用对外的性能瓶颈,其主要原因在于一旦并发量上来了,应用后台和数据库或者其他的存储服务的IO交互次数增多了,而服务器的线程资源开销是有限的,如何减少IO次数,这是优化要考虑的一个重要问题使用redis也是如此,试想某些功能的数据使用了缓存,大量的并发请求过来时,是否可以考虑将同类型的数据查询一次性的提交给redis得到查询结果而不是逐个通过get(key)的方式获取更好呢?下面介绍两种在java中优化查询的方式1、使用multiget批量查询多个key新增工具类@Com

2020-12-13 13:38:45 192

原创 redis数据类型set总结

前言在上一篇中,我们简单探讨了list的结构和基本使用,了解数据结构的同学对链表的操作应该不陌生,链表的遍历平均时间复杂度为o(n),这就是说,在redis的list结构中,当集合中的数据量比较大的时候,遍历时性能可能会成为瓶颈,因此,是否有更高效的数据结构可以使用呢?redis中还有一种数据类型,那就是set,set底层基于hash表存储,并且数据不重复,相比list,在数据的遍历上,hash的结构更高效Set简介Set 是 String 类型的无序集合,且集合成员唯一,这就意味着集合中不能出现

2020-12-13 11:03:34 59

原创 redis数据类型list总结

前言在上一篇,我们简单介绍了redis数据类型中的String和hash两种常用数据类型的使用,本篇继续探讨redis数据结构中的另一种,list 列表list简介Redis列表是简单的字符串列表,可以按照插入顺序排序。list存储多个数据,对进入list存储结构区域的数据通过先后顺序进行区分底层采用类似双向链表的结构实现一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)基本操作操作list时,既然说到底层是双向链表结构,就存在一个左和右的

2020-12-12 19:05:09 61

原创 redis数据类型hash总结

前言redis在互联网公司的项目中基本上都会使用到,这得益于redis丰富的数据结构和高效的底层存储结构,接下来会通过几篇文章探讨并总结一些redis在实际项目中的使用环境准备window或者linux下,安装一个redis服务,linux下可以参考网上的安装教程,windows下直接官网下载后,双击bin目录下的redis.bat即可运行同时为方便java中使用redis的操作与学习,使用springboot快速搭建一个工程,以便对比需要导入的基本依赖, <dependencies&

2020-12-12 17:01:45 57

原创 SpringSecurity自动登录详解

前言使用SpringSecurity管理用户的登录退出功能时,其底层就会按照SpringSecurity的机制进行会话的管理,有这么一种场景,登录的用户信息需要保留10天,这样的需求该怎么实现呢?1、SpringSecurity登出功能沿用之前的案例演示工程,只需要在config方法中做如下配置即可 @Override protected void configure(HttpSecurity http) throws Exception { //登出配置

2020-12-05 20:50:10 236 2

springboot断点续传或分片上传

springboot断点续传或分片上传

1969-12-20

分布式锁代码.zip

分布式锁代码,涉及到redis分布式锁等

2021-02-21

activity功能代码

activity功能代码,涉及到部署,加签,流程变量,指定节点审批人等

2021-02-21

springcloud-mybatis.zip

springboot整合seata

2021-02-21

springboot整合redis.zip

springboot整合redis

2021-02-21

boot-ssoserver.rar

如今,互联网项目对于安全的要求越来越严格,这就是对后端开发提出了更多的要求,目前比较成熟的几种大家比较熟悉的模式,像RBAC 基于角色权限的验证,shiro框架专门用于处理权限方面的,另一个比较流行的后端框架是Spring-Security,该框架提供了一整套比较成熟,也很完整的机制用于处理各类场景下的可以基于权限,资源路径,以及授权方面的解决方案,部分模块支持定制化,而且在和oauth2.0进行了很好的无缝连接,在移动互联网的授权认证方面有很强的优势,具体的使用大家可以结合自己的业务场景进行选取和使用

2019-06-08

spring_security_jwt.rar

对于前后端分离的项目,后端对于接口访问的权限控制是必须要做的,也就是需要根据用户的权限进行控制,这样才能对我们的接口资源进行一定程度的保护,在一个web项目中,我们的通常做法是,允许登录后的用户进行接口资源的访问,否则就需要进行拦截,

2019-05-13

thread-multi.zip

java多线程查询批量数据,拿到工程直接跑起来

2021-02-21

batch-spring.zip

Springbatch开启任务通常有如下两种方式,通过定时任务或者通过接口调用,定时任务使用简单,适用于数据来源稳定不需要过多外部参数干扰的情形,而接口的方式更加灵活,可以通过外部进行参数配置满足复杂的数据批处理场景,下面通过一个简单的例子来作说明......

2020-01-19

springIoc实现原理

spring ioc指的是控制反转,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。交由Spring容器统一进行管理,从而实现松耦合

2019-04-20

springboot-mongo.zip

springboot整合mongodb

2021-02-21

shardingJdbc.zip

生产环境中,当单表数据达到一定的量级的时候,查询性能的瓶颈迟早会暴露出来,这个时候,解决思路可以考虑两种,一是从架构上对当前应用进行优化,比如使用es或mongodb等非关系型数据库进行配合使用,当然这种方式需要考虑一定的改造成本和团队开发人员的学习成本,另一种就是分库分表 ......

2020-04-13

积分排行榜代码.zip

redis实现的好友关注,共同好友,积分排行榜功能

2021-02-28

hystrix接口限流

Hystrix是Netflix开源的一款容错框架,包含常用的容错方法:线程隔离、信号量隔离、降级策略、熔断技术。 在高并发访问下,系统所依赖的服务的稳定性对系统的影响非常大,依赖有很多不可控的因素,比如网络连接变慢,资源突然繁忙,暂时不可用,服务脱机等。我们要构建稳定、可靠的分布式系统,就必须要有这样一套容错方法

2019-04-20

shardingJdbc功能代码

shardingJdbc

2021-02-21

zipkin_rabbitmq链路追踪.zip

zipkin_rabbitmq链路追踪

2021-02-21

rabbitmq代码.zip

rabbitmq相关代码,死信队列,延迟消息等

2021-02-21

rocketmq使用.zip

rocketmq使用,事务消息等

2021-02-21

hyxtrix限流.zip

hystrix接口限流

2021-02-21

spirngIoc实现代码

spirngIoc原理实现代码

2021-02-21

java对接支付宝功能

java对接支付宝

2021-02-21

百度扫脸登录功能代码

百度扫脸登录功能代码

2021-02-21

springboot整合Sentinel

springboot整合Sentinel

2021-02-21

kafka分区消费策略

kafka指定分区消费,发送到指定分区

2021-02-21

common-quartz.zip

springboot整合quartz

2021-02-21

rocketMq代码.zip

rocketMq解决分布式事务,利用消息中间件解决分布式事务问题

2021-02-21

elastic-job-quickstart.zip

elastic-job基础代码

2021-02-21

elastic-job-springboot.zip

elastic-job整合springboot

2021-02-21

dubbo服务限流与负载均衡

dubbo服务限流与负载均衡配置

2021-02-21

security代码.zip

SpringSecurity功能代码,涉及到自动登录,权限配置等

2021-02-21

seckill-demo.zip

抢购秒杀源码

2021-02-21

rabbitmq_pro.zip

先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer将消息投递到broker或者直接到queue里了,consumer从queue取出消息进行消费,但某些时候由于特定的原因导致queue中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信,自然就有了死信队列;

2019-08-28

java整合支付宝下单代码.rar

目前,市面上比较流行的支付方式有支付宝支付,微信支付,银联支付,其他聚合支付等,支付市场发展到目前,算是比较稳定和成熟了,有了这么多支付方式,不论是web端还是移动端,需要支付的场景很多,今天来简单模拟一下使用较多的支付宝支付。

2019-06-23

springboot整合redis

之前的项目中,用到过redis,主要是使用redis做缓存,redis在web开发中使用的场景很多,其中缓存是其中一个很重要的使用场景,之所以用作缓存,得益于redis的读写数据,尤其是在读取数据的时候是直接走内存的,这样在高并发访问数据的时候,和查询数据库相比,redis读取数据的高效性、快速性的优势可见一斑

2018-09-13

springboot整合fastdfs代码

在项目开发中经常会碰到做文件上传的功能,一般来说,文件上传的步骤就那么几步,前台通过提交一个选中的文件,后端对文件做处理然后将文件上传至指定的地址,这个地址是一个真实的物理存储路径,可以是本地,也可以是fastdfs等其他的linux文件服务器。

2018-10-07

springboot整合redis+ecache

这是一个完整的使用springboot整合redis和ecache的代码,数据库交互使用的是mybatis,欢迎下载

2019-03-25

baidu_api.rar

*随着人工智能和大数据分析技术越来越广泛,众多的生活场景都存在着这些技术的身影,比如像现在比较流行的人脸识别技术,其底层的算法实现的支撑,为众多的业务场景铺垫了基础,像支付宝的刷脸支付,我们在火车站安检经过闸机口时的刷脸识别等,都是上层应用对于这类技术的具体应用,那么其实现原理是怎样的呢?**

2019-05-15

redis-token.rar

在之前的一篇中,我们在服务器上搭建了mongodb,今天来说说使用springboot如何整合使用mongodb,

2019-06-10

boot_rocketmq.rar

RcoketMQ 是一款低延迟、高可靠、可伸缩、易于使用的消息中间件,号称消息中间件中的最强者,支持高并发,亿级的消息堆积能力,在高并发的电商,金融等业务场景中多有使用

2019-07-13

缓存维度化方案整合

随着分布式,微服务越来越普遍,对开发的要求也在不断的增加,对架构的要求也提出了越来越多的要求,在那些分布式项目中,经常面临的一个问题就是,高效,解耦,举例来说,当一个小型电商网站越来越大的时候,单体架构必然满足不了日益增长的业务需求,就说当众多的流量一起涌入,你的下单接口怎么能够抗住成千上万的QPS呢

2019-04-13

空空如也

空空如也

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

TA关注的人 TA的粉丝

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