RabbitMq分布式事务解决方案第二篇
前言在上一篇,我们谈到了如何基于RabbitMq实现一个通用的分布式事务解决方案的基本思路,本篇将具体具体编码来实现这一过程环境准备创建一个用于记录rabbitmq消息传递过程中的各自状态信息的表CREATE TABLE `trans_message` ( `id` varchar(64) DEFAULT NULL, `service` varchar(255) DEFAULT NULL, `type` varchar(255) DEFAULT NULL, `exchange` va
java快速生成数据库文档
前言在产品发布前夕,经常因为编写各类设计文档感到心碎,倒不是难,而是比较繁琐,举例来说,像编写数据库文档这种操作来说,对于新手,甚至很多有一定开发经验的同学来说,都觉得是一件费力得事情,下面推荐一个小组件,并提供一段程序,帮助有需要得同学快速生成数据库文档,已解决这个麻烦得小事环境准备一个开发数据库,以下截取了部分表,实际中可能远不止这些1、导入pom依赖 <!-- screw核心 --> <dependency> <gro
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
springboot统一封装返回结果
前言在项目框架整合阶段,为了更优雅的封装后端返回结果,便于前后端联调,通常需要对后端的返回值进行一定的封装处理,下面介绍2种比较实用的方式方式1:常规处理定义一个枚举类,主要包括返回的code和message,更多的返回码可以根据业务需要在后面继续添加@Getterpublic enum ResponseCodeEnums { /** * 成功 */ SUCCESS(200, "请求成功"), /** * 失败 */ FA
java解决XSS攻击常用方法总结
前言在项目验收阶段,通常会对待验收项目做一些安全漏洞的测试,比如接口攻击,并发测试,XSS注入,SQL恶意注入测试,安全越权等操作,这时,就是考验项目的安全方面是否做的足够健壮的时候,本篇对XSS脚本攻击在实际WEB项目中的处理办法,提供2种可实行的方法xss攻击XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 F
java解决限制访问指定url
前言在web项目交付阶段,很多交付的小伙伴们会面临的一个问题就是安全漏洞扫描,关于安全漏洞问题,可以分为很多种,但从扫描者的角度,一旦他们认为你的后端服务接口暴露的太多,或过于明显,或没有前置的安全措施(通过登录的方式)就能拿到后台的数据,这样显然是不合理的,一旦扫出这样的接口,那么面临的一个问题就是,解决接口暴露的问题关于这个问题,其实说起来,还是跟系统在一开始的规划设计阶段的安全考虑不够完备,比如你的后台项目是否需要做必要的鉴权,是否集成了第三方安全框架等,如果在项目框架搭建之初,就能考虑到这些问题
activity监听器使用
前言监听器在java众多的中间件中都有着广泛的使用,比如大家熟知的MQ,在处理消息时很大程度上要依赖监听器,对activity ,也提供了监听器以及对监听器内的各种事件进行定义,方便开发者在使用的时候方便的进行选择使用下面结合一个实例简单演示下监听器的2种使用方式方式1,流程监听器这种监听器针对某一个具体的流程,即该监听器是附加在特定的流程实例之上,当这个流程开始各种事件(流程启动,人员审批,流程结束等)时,监听器被触发生效,只需要实现TaskListener接口顾名思义,该接口的粒度是比较粗的,
Eclipse Memory Analyzer(MAT) 使用总结
前言在日常的开发工作中,遇到生产环境报OOM的问题时,你首先会想到采用哪些方式并使用什么样的工具对OOM问题进行分析,定位和解决呢?实际现场环境无非有这么两种,第一种,如果项目所在的生产服务器不允许导出日志或者数据之类的,那就只好依靠线上操作相关的JVM命令进行分析排查;第二种,如果条件允许,则可以外接JVM相关的排查工具,直接连接生产的项目进程,进行实时分析第二种方式下,通常可利用JDK自带的一些工具,比如jconsole,jmap等工具连接进程,但更多的场景是,问题已经发生了,也就是犯罪现场出现了
基于springcloud一套可落地实施的安全认证框架整合
前言现如今,微服务盛行,主流的微服务可落地实施的治理方案目前市面使用比较多的主要有2种,一种是基于dubbo的,辅助其他的技术栈组合,另一种是基于springcloud的(或者springcloud-alibaba),结合在实际工作和项目中的使用总结,分享一套结合springcloud的可落地实施的安全认证框架整合框架技术栈springcloud + spring-security,拆分开来就是,eureka + gateway + spring-security + rediseureka :
基于springboot+shiro一套可落地实施安全认证框架整合
前言俗话说,兵马未动,粮草先行,万丈高楼平地起,一套切实可用的微服务框架是整个项目小组进行后续高效开发的保障,在前期微服务框架构建过程中,大体来说,主要考虑3个点:技术选项,如果公司业务规模能够提前预估,选择合适的并且还能预留一定的拓展空间的技术栈足矣,而非一开始规划的尽善尽美技术栈的组合,技术选择确定整个项目技术的基调,对于某一个业务来说,使用消息中间件有很多选择,具体是使用kafka,还是rabbitmq等,需要结合团队人员的技术匹配度,技术实现成本,以及业务上的要求,合理搭配技术的适用性,最
win10搭建hadoop环境
前言学习大数据框架,hadoop是许多其他框架的基础,因此需要掌握如何快速搭建hadoop的应用环境通常来说,hadoop本地模式,伪分布模式和完全分布式,本篇以伪分布式单节点为例,快速在win10电脑上搭建出单节点的hadoop的运行环境,linux环境下可类似的操作环境准备1、前置准备JDK环境,至少JDK1.8,相信JDK的环境安装就不再多说了吧,安装之后,确认下是否安装成功2、下载合适版本的hadoop安装包前往如下链接,https://mirrors.tuna.tsinghua.e
redis常用集群方案汇总
前言在生产环境下,往往要求系统具备高可用,承载高并发以及有着较好的抵御单点故障的能力,通常来说,使用集群部署可以达到这个目的同样,对于redis的使用,即便单节点的性能已经很高了,但考虑到种种可能造成单点故障以及影响其高并发环境下整体性能的因素,因此,在系统设计之初,最好能结合自身的业务对redis的部署架构做一个整体的评估。是否使用集群关于这个问题,很多同学有不同的见解,比如说项目本身体量不大,在可遇见的业务增长范围内,为了满足快速迭代、快速上线的要求,单节点不是不可以,部署redis单节点,不管
多租户设计与实践探索
前言从中台架构的理念提出到现在,经过了3年多的实践,行业内从一些大厂开始纷纷将自身的架构逐步改造成中台架构或者基于中台模式的架构进行规划,到今天来看,从中台架构出发,衍生出各种与之相关的模式,如sass等,其底层技术架构的规划,仍然和中台是一脉相承的为什么需要中台关于这一点,可以参考阿里内部人士撰写的一本《企业IT架构转型之道 阿里巴巴中台战略思想与架构实战》,有非常详细的解读个人也有幸参与过2个小型的中台化产品的建设与改造,从实践上来说,产品逐步向中台(这里指代技术中台,不同的公司有自己的中台,比
springboot制作补丁包通用解决方案
前言补丁包是大多数项目型产品在其运行的生命周期内进行日常维护必不可少的手段之一,在产品的运维中扮演着非常重要的作用当产品在生产花环境稳定运行的过程出现了功能性或非功能性bug,而客户方并不打算在短期内重新考虑升级计划时,对于产品开发者,可以在修复原版本产品bug基础上,进行增量补丁包的发布关于补丁包的做法,不同的语言和不同的技术框架也有所差别,本篇以目前Java开发中比较通用的springboot框架为例,通过一个简单的案例进行说明补丁包涉及到的主要技术assembly + antrun首先简
java快速生成接口文档方法总结
前言常常在项目收尾阶段,客户需要项目的接口文档,或者是一个大的sass平台,各个产品之间互相调用的时候,需要对方提供接口文档通常来说,接口文档属于产品的技术沉淀,是一个长期积累的过程,然而,很多时候,开发阶段并不会想的那么多,结果到了需要接口文档的时候总是疲于应付,情急之下,往往采用最笨拙的办法,就是对照着项目代码,一个个拷贝吧下面针对这个情况,小编这里给出2种简单、快捷而适用的解决方案,帮助你快速解决这个烦恼吧方案一,使用japidocs这是一种最简单也最高效的快速生成接口文档的方式,也是对既有
Java 常用缓存淘汰算法解析
前言对于很多缓存中间件来说,内存是其操作的主战场,以redis来说,redis是很多互联网公司必备的选择,redis具有高效、简洁且易用的诸多特性被大家广泛使用,但我们知道,redis操作大多数属于内存性级操作,如果用于存放大批量数据,随着时间的增长,性能一定会下降,因此为了解决此类问题,redis自身提供了诸多的用于淘汰缓存的策略配置;缓存淘汰的策略,可以有效的缓解redis服务在运行过程中由于内存吃紧带来的空间不知,性能下降的问题,不仅如此,在很多类似的中间件,比如spark,clickhouse等
Java 常用限流算法解析
前言限流作为高并发场景下抵挡流量洪峰,保护后端服务不被冲垮的一种有效手段,比如大家熟知的限流组件guawa,springcloud中的Hystrix,以及springcloud-alibaba生态中的Sentinel,甚至是基于网关的限流,比如在nginx中配置限流策略,在gateway中配置限流策略等限流无处不在,既然限流的作用如此强大,那么其底层的实现原理如何呢,说到底,限流的核心是由一系列不同的算法完成,本篇将通过实例来说明下常用的几种限流算法的用法和原理1、计数器算法计数器算法限流是采用简单
Java 常用负载均衡算法解析
前言负载均衡在Java领域中有着广泛深入的应用,不管是大名鼎鼎的nginx,还是微服务治理组件如dubbo,feign等,负载均衡的算法在其中都有着实际的使用负载均衡的核心思想在于其底层的算法思想,比如大家熟知的算法有 轮询,随机,最小连接,加权轮询等,在现实中不管怎么配置,都离不开其算法的核心原理,下面将结合实际代码对常用的负载均衡算法做一些全面的总结。轮询算法轮询即排好队,一个接一个的轮着来。从数据结构上,有一个环状的节点,节点上面布满了服务器,服务器之间首尾相连,带有顺序性。当请求过来的时候,
elastic-job动态任务配置
前言在之前的springboot整合elastic-job篇中,我们了解到,elastic-job是一个不错的任务调度框架,本篇将进一步说明,如何使用elastic-job实现常用的动态任务的执行场景环境准备zookeeper安装与启动(本地可以使用windows版,比较快捷)简易工程搭建1、添加基础pom依赖<parent> <groupId>org.springframework.boot</groupId> <art
今日推荐
周排行