自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

转载 基于RocketMQ的分布式事务解决方案(实操)

随着互联网的快速发展,软件系统由原来的单体应用转变为分布式应用,分布式系统会把一个应用系统拆分为可独立部署的多个服务,因此需要服务与服务之间远程协作才能完成事务操作,这种分布式系统环境下由不同的服务之间通过网络远程协作完成事务称之为分布式事务,例如用户注册送积分事务、创建订单减库存事务,银行转账事务等都是分布式事务。

2022-11-20 22:44:54 1284 2

原创 亲自整理的Git命令汇总(建议收藏)

Git目前是各大互联网公司使用的版本控制工具,进大厂,必须要学会Git的基本使用。这篇文章主要是汇总讲解Git的使用命令。

2022-11-07 22:39:54 180

转载 你还在用for循环遍历list吗?

Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。你还在用for循环遍历list吗?

2022-09-08 22:32:49 281

原创 Spring Boot 项目统一结果,统一异常,统一日志

是否响应成功;响应状态码;状态码描述;响应数据其他标识符前三者可定义结果枚举,如:success,code,message统一结果类 第5个属于自定义返回,利用前4者可定义统一返回对象注意:外接只可以调用统一返回类的方法,不可以直接创建,影刺构造器私有;内置静态方法,返回对象;为便于自定义统一结果的信息,建议使用链式编程,将返回对象设类本身,即return this;响应数据由于为json格式,可定义为JsonObject或Map形式;@Data public class&nbs

2022-06-15 14:28:51 533

原创 图文并茂讲线程池---ThreadPool

1、线程池管理器(ThreadPool):用于创建并管理线程池,包括 创建线程池,销毁线程池,添加新任务;2、工作线程(PoolWorker):线程池中线程,在没有任务时处于等待状态,可以循环的执行任务;3、任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行,它主要规定了任务的入口,任务执行完后的收尾工作,任务的执行状态等;4、任务队列(taskQueue):用于存放没有处理的任务。提供一种缓冲机制。降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度

2022-06-10 17:09:24 204

原创 RabbitMQ 搭建完就得用起来

我们先来简单介绍下的工作流程:生产者往交换机中发送消息;交换机通过规则绑定队列,通过路由键将消息存储到队列中;消费者获取队列中的消息进行消费;首先创建项目 引入依赖 yml文件配置 直连交换机本项目以直连交换机为例,至于其他的交换机类型将在后文中给出详细介绍。 消息发送我们先启动程序,在浏览器访问下http://127.0.0.1:9001/sendMessage报错如下:我们之前已经给该用户分配过权限了,如果之前未分配,直接在客户端中配置:之所以访问不到,是因为我

2022-06-06 23:37:49 111

转载 xxl-job的设计浅读

xxl-job使用netty http的方式进行通信,虽然也支持Mina,jetty,netty tcp等方式,但是代码里面固定写死的是netty http我以调度器通知执行器执行任务为例,绘制的活动图: 活动图看完了整个处理流程代码,设计上可以说独具匠心,将netty,多线程的知识运用得行云流水,我现在就将这些设计上出彩的点总结如下:xxl-job定义了两个接口ExecutorBiz,AdminBiz,ExecutorBiz接口中封装了向心跳,暂 停,触发执行等操作,AdminBiz封装了回调,注册,取消

2022-06-02 09:12:17 566

转载 Spring-Gateway与Spring-Security在前后端分离项目中的实践

网上貌似webflux这一套的SpringSecurity操作资料貌似很少。自己研究了一波,记录下来做一点备忘,如果能帮到也在迷惑的人一点点,就更好了。新项目是前后端分离的项目,前台vue,后端SpringCloud2.0,采用oauth2.0机制来获得用户,权限框架用的gateway。大概思路前台主要是配合项目中配置的clientId,clientSecret去第三方服务器拿授权码code,然后拿这个code去后端交互,后端根据code去第三方拿用户信息,由于第三方只保存用户信息,不管具体的业务权限,所以

2022-06-01 22:49:24 740

原创 策略模式优化 if-else?Map+函数式接口才YYDS

本文介绍策略模式的具体应用以及Map+函数式接口如何“更完美”的解决 if-else的问题。文章目录 需求 策略模式 Map+函数式接口 最后捋一捋本文讲了什么: 需求最近写了一个服务:根据优惠券的类型resourceType和编码resourceId来 查询 发放方式grantType和领取规则实现方式:1、根据优惠券类型resourceType -> 确定查询哪个数据表 2、根据编码resourceId -> 到对应的数据表里边查询..

2022-05-28 23:20:29 159

原创 win7系统jdk1.8 chm右侧空白解决办法,包括右键无解锁问题解决办法

今天下载了个chm文件,但是打开空白,也没显示什么内容,经过一番研究之后终于可以正常显示了,下面把解决办法分享出来供大家参考下。工具/原料windows7系统chm文件方法/步骤chm文件打开空白无内容的情况显示如下这是一个很正规的文本,而且下载也没有损坏之类的。先关闭这个文件。我们右击这个文件,选择属性 查看在常规 里边我们可以看到提示 这个文档来自其他计算机,可能被阻止以帮助保护计算机。我们信任这个文档,点击 解除锁定 ,如果您觉得不安全的话,那就放弃得了。解.

2022-05-08 18:07:27 694

转载 Torna简单入门

Swagger作为一款非常流行的API文档生成工具,相信很多小伙们都在用!用多了可能会觉得它界面丑、功能弱。今天给大家推荐一款工具Torna,配合Swagger使用可以搭建界面漂亮、功能强大的API文档网站,希望对大家有所帮助!Torna简介Torna是一套企业级接口文档解决方案,可以配合Swagger使用。它具有如下功能: 文档管理:支持接口文档增删改查、接口调试、字典管理及导入导出功能; 权限管理:支持接口文档的权限管理,同时有访客、开发者、管理员三种角色; 双模式.

2021-11-14 10:29:06 8094 1

原创 SpringCloud Alibaba 实战,来自尚硅谷电商项目理解

电商项目常见解决技术搭配方案:SpringCloud Alibaba --nacos:注册中心SpringCloud Alibaba --nacos:配置中心SpringCloud --Ribbon:负载均衡SpringCloud --OpenFeign:声明式Http客户端(调用远程服务)SpringCloud Alibaba --Sentinel:服务容错(限流、降级、熔断)SpringCloud --Gateway:API网关(webflux编程模式)SpringCloud

2021-10-12 21:38:07 503

转载 Java项目中实体类(ENTITY,VO,DTO)的理解

真正开始接触JavaEE的编程,避不开的点。关于ENTITY,VO,DTO的理解一、ENTITYEntity(PO) 每个属性基本上都对应数据库表里面的某个字段。完全是一个符合Java Bean规范的纯Java对象,没有增加别的属性和方法。持久对象是由insert数据库创建,由数据库delete删除的。基本上持久对象生命周期和数据库密切相关。二、VO这个有两种理解,在我接触的项目中更加偏向 第二种 表现层对象(View Object)VO:值对象(Value Object),通常用于

2021-06-15 17:28:26 1911

原创 软件缺陷及Jira系统的使用

目录一、软件缺陷报告样例:缺陷状态缺陷类型严重程度优先级缺陷标题详细描述:二、软件缺陷的跟踪流程三、Jira系统的使用Jira系统的使用者Jira中的问题的概念Jira系统中的工作流Jira系统中,测试提交问题Jira系统中,开发修复问题总结:目前正常的软件开发大多是敏捷开发,那么如何对软件的缺陷进行收集和跟踪就是需要考虑的问题了。Jira系统可以方便的解决软件开发过程所遇到的这些痛点。一、软件缺陷报告样例:其中包括:缺陷状

2021-04-24 23:45:50 1311 1

原创 互联网常用项目发布方式---灰度发布和网关zuul的简单理解

网关zuulzuul 约 等于一系列过滤器。四种过滤器pre:在请求被路由之前调用,可利用这种过滤器 鉴权。选择微服务,记录日志,限流。route:在将请求路由到微服务调用,用于构建发送给微服务的请求,并用http clinet(或者ribbon)请求微服务。post:在调用微服务执行后。可用于添加header,记录日志,将响应发给客户端。error:在其他阶段发生错误是,走此过滤器。四种过滤器执行顺序:灰度发布:① 用户通过zuul网关进行服务调用;此时进行灰..

2021-01-14 10:52:15 295 1

原创 Eureka Client 源码详细解读

client端功能:1.注册服务2.拉取server列表到本地3.发送心跳,续约;定时拉取注册表4.发送下线①spring boot项目引入eureka-client依赖,并注入spring 容器。 在spring-boot项目中pom文件里面添加的依赖中的bean。是如何注册到spring-boot项目的spring容器中的呢? spring.factories文件是帮助spring-boot项目包以外的bean(即在pom文件中添加依赖中的bean)注册到...

2020-12-24 14:33:34 288

原创 SpringCloud之Eureka Server 源码解读

话不多说,直接上server端需要实现的功能:1.接受注册2.接受心跳3.服务剔除4.服务下线5.集群同步6.获取注册表中服务实例信息 Ⅰ、启动server 注册相关bean 通过pom依赖和springboot的自动装配,注册外部配置类,在spring-cloud-netflix-eureka-server-2.1.2.REALEASE.jar中的META-INF/spring.factoriesorg.springframework.boo...

2020-12-22 15:26:14 116

原创 关于MySQL的学习及相关调优

记录一下MySQL相关的学习历程MySQL简单看分成三层,client、server、存储引擎 用户从client端发送一个请求到server端, server端会创建一个连接信息【验证用户名密码等信息】 然后将用户发送的sql请求进行分析【经过分析器】,将sql的关键字等信息进行提取分析, 然后将sql语句进行优化【优化器,MySQL自带sql优化】 后面经过执行器,执行器将和存储引擎进行交互(经过存储引擎从磁盘读取数据,即IO) 优化分两种:R.

2020-12-07 13:22:17 94

原创 JVM详解,一篇文章带你入门

我们知道java语言是跨平台的,一处编译,到处运行。一处编译就是将java文件编译成.class字节码文件。只要编译的字节码文件符合jvm的规范,那么就可以在java虚拟机上运行,这也说明了它的语言无关性。那么什么是JVM?JVM是Java Virtual Machine(Java虚拟机)的缩写,是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机主要由字节码指令集、寄存器、栈、垃圾回收堆和存储方法域等构成。 JVM屏蔽了与具体操作系统平台相关的信息,使J

2020-11-30 09:44:07 426 2

原创 多线程学习--关于ReentrantLock源码详细解读

对于源码的阅读,有几点总结:1.跑不通的源码,不读;2.解决问题为目的;3.总体把握,先不扣细节;4.抓住一条线,往下阅读话不多说,简单demo断点调试,JDK版本为1.8public class TestReentrantLock { private static volatile int i = 0; public static void main(String[] args) { ReentrantLock lock = new Reent

2020-11-20 16:00:29 143 2

原创 Java NIO学习,一次读懂Java NIO

Java NIO 和 IO 的区别缓冲区存取数据的两个核心方法put:存入数据到缓冲区get:获取缓冲区中的数据缓冲区的四个核心属性capacity:容量,表示缓冲区中最大存储数据的容量,一旦声明不能改变position:位置,表示缓冲区中正在操作数据的位置limit:界限,表示缓冲区中可以操作数据的大小。(limit后的数据不能进行读写)mark:标记,表示记录当前position的位置,可以通过reset恢复到mark的位置0 <= mark <= p

2020-10-09 09:52:37 534 4

原创 spring ioc源码层看spring循环依赖的问题

首先,什么是循环依赖?如上图所示bean的创建流程:创建A----实例化-->依赖b---->创建B----->依赖a---->创建A出现了闭环,也就是spring的循环依赖bean的后置处理器9处调用spring ioc在创建bean过程中,会调用8次bean的后置处理器BeanPostProcessor,第九次是在bean销毁的时候调用在bean的创建过程中,bean可被划分为四种形态:概念态的bean、定义态的bean、纯洁态的bean、成熟态

2020-08-31 14:25:48 165 1

原创 RabbitMQ之死信队列和延迟队列

死信队列DLX,全称为 Dead-Letter-EXchange,可以称之为死信交换机,也有人称之为死信邮箱。当消息在一个队列中变成死信( dead message)之后,它能被重新发送到另—个交换机中,这个交换机就是DLX,绑定DLX的队列就称之为死信队列。消息变成死信,可能是由于以下的原因: 消息被拒绝 消息过期 队列达到最大长度 DLX也是一个正常的交换机,和一般的交换机没有区别,它能在任何的队列上被指定,实际上就是设置某一个队列的属性。当这个队列中存在死信时,

2020-08-17 09:55:53 811

原创 Navicat打开mysql表一致处于加载中,删除表也不行-----表死锁

导致原因:在做数据传输时由于VPN断开连接,导致数据传输失败,再次传输时,一直就没有速度,强制关闭了现象:Navicat打开mysql表一致处于加载中,表死锁了解决办法:① 在Navicat中执行:SHOW PROCESSLIST;查询到所有库的进程,如下图:发现最下面一个进程一直处于查询中的状态,再查看所有数据,发现有多处查询死锁表的进程一致处于查询中。死锁原因:并发操作表导致表死锁② 在Navicat中执行: kill 12598; (kill + 进程号(表I.

2020-08-07 15:22:13 1368

原创 Mongodb去重查询

最近工作中用到Mongodb,于是花时间学习了一下,简单入门回归正题,简单的查询、修改、删除就不说了哈。去重查询//1.连接数据库,若存在即选中,若不存在就建立MongoDatabase mongoDatabase = DbUtils.getMongoDatabase();//2.获取连接MongoCollection mongoCollection = mongoDatabase.getCollection("数据库名");//去重查询DistinctIterable disti.

2020-07-30 15:42:05 7070

原创 mongodb简单入门学习

- MongoDB是一个NoSQL的数据库- MongoDB是一款文档型数据库- 数据库指的就是一个存储数据的仓库数据库可以使我们完成对数据的持久化的操作- MongoDB数据库中存储的数据的基本单位就是文档,MongoDB中存储的就是文档,所谓文档其实就是一个“JSON”- MongoDB中的“JSON”我们称为BSON,比普通的JSON的功能要更加的强大- MongoDB数据库使用的是JavaScri...

2020-07-14 08:55:47 134

原创 org.apache.ibatis.binding.BindingException: Parameter XXX not found.的问题

今天在学springcloud alibaba seata时,遇到一个问题。业务流程是:创建订单调用库存服务扣减库存,调用账户服务扣减账户余额,最后修改订单状态有三个服务,订单order服务,库存storage服务和账户account服务;将三个服务注册进alibaba的nacos,启动nacos,再启动seata,seata用来管理分布式服务间的事务进行测试时候报错:org.apache.ibatis.binding.BindingException: Parameter 'count'

2020-06-11 14:32:15 7606

原创 SpringCloud Alibaba Nacos集群配置遇到的坑

这两天在学习SpringCloud Alibaba Nacos,搭建环境时,nginx+3个nacos+mysql,出现一些问题。至于liunx环境下的nginx、nacos、mysql安装,可参考附的博客。这里主要说下我遇到的几个不大不小的坑。首先,我是在虚拟机里面配置nacos集群1.安装nacos单机版配置具体安装nacos步骤可参考博客:https://blog.csdn.net/qq_42449963/article/details/105695053先复制出一个cluster.c

2020-06-08 23:20:03 1041

原创 SpringCloud学习遇到的坑,通过Eureka中已经注册的服务名,调用不了已经注册的服务

前提:服务提供者8001已经成功注册到eureka但是根据服务名称调用接口时,失败private static final String PAYMENT_URL = "http://CLOUD-PAYMENT-SERVICE"; //集群配置@Resourceprivate RestTemplate restTemplate;@GetMapping(value="/consumer/payment/zipkin")public String paymentZipkin(.

2020-06-02 23:10:19 5219 4

原创 TeamViewer连接时闪退

之前由于TeamViewe被检测到用于商业用途,被限制时间了,就按照网上的办法,修改了mac地址,重新安装teamviewer了第一次远程时一切正常,第二天再远程时,出现闪退现象,重新安装teamviewer也没用。后来发现,远程连接的电脑安装的teamviewer版本是15.3版本,而本机安装的是15.2,连接时出现闪退手动更新本机的teamviewer后,进行登录验证,再次进行连接,一切正常。特此记录,希望能帮到遇到同样问题的你。...

2020-05-12 09:12:38 27886 3

原创 搭建Mybatis+Spring开发环境集成Mapper

标题搭建Mybatis+Spring开发环境集成Mapper加入 Maven 依赖信息<dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>4.0.0-beta3</versi...

2020-03-28 10:22:13 140

原创 git常见报错解决办法,fatal: the remote end hung up unexpectedly

问题一:上传GIT项目报fatal: the remote end hung up unexpectedly错误上传项目报fatal: the remote end hung up unexpectedly的错误,应该是项目太大的原因,要么是网络不行,要么墙的原因解决办法:修改提交缓存大小为500M,或者更大的数字git config --global http.postBuf...

2020-03-10 10:57:01 16995

原创 Spring中@Bean的生命周期和@Value赋值的理解

@Bean的生命周期bean创建—初始化—销毁容器管理bean的生命周期我们可以自定义初始化和销毁方法;容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法构造(对象创建)单实例:在容器启动的时候创建对象多实例:在每次获取的时候创建对象初始化:对象创建完成,并赋值好,调用初始化方法销毁:容器关闭的时候销毁1.指定初始化和销毁方法;以前基于配置,有init...

2020-03-05 09:03:44 2380

原创 Spring常用的几个注解@Configuration、@Bean、@ComponentScan

@Configuration:告诉Spring这是一个配置类,配置类===配置文件@Bean:给容器注入一个bean,类型为返回值类型,id默认是用方法名作为id@Configuration//@ComponentScan value:指定要扫描的包//excludeFilters=Filter[]:指定扫描的时候按照什么规则排除哪些组件//includeFilters=Filter[...

2020-03-03 10:00:08 256

原创 GIT的基本使用,使用git将本地项目推送到远程仓库github

最近因为需要远程办公,所以决定使用git进行项目的版本管理,因为之前都是用的SVN进行管理的,所以还是学习了一下git的基本使用,大大们勿笑。1. 先创建一个本地的版本库(即创建一个文件夹)你可以直接右击新建文件夹,也可以打开 git-bash.exe命令行窗口通过命令来创建。现在我通过命令行新建一个test文件夹(你也可以在其他任何地方创建这个文件夹),并且进入该文件夹目录下。2. 通...

2020-02-29 15:22:21 992

原创 Vue_源码简单分析,数据代理、模板解析、数据绑定

分析vue作为一个MVVM框架的基本实现原理1.数据代理2.模板解析3.数据绑定数据代理数据代理:通过一个对象代理另一个对象中属性的操作(读/写)vue数据代理:通过vm对象来代理data对象中所有属性的操作好处:更方便的操作data中的数据基本实现流程:1.通过Object.defineProperty()给vm添加与data对象的属性对应的属性描述符2.所有添加的属性都包含...

2020-02-28 09:35:29 165

原创 Vue_组件间通信3,插槽slot

组件间通信传递消息,很多时候传递的都是数据;而slot可以传递标签TodoFooter.vue组件<template> <div class="todo-footer"> <label> <!--<input type="checkbox" v-model="checkAll"/>--> <...

2020-02-27 14:27:18 517

原创 Vue_组件间通信2,使用PubSubJS库

组件间通信第一种方式:使用标签传递数据,props声明接收属性组件间通信第二种方式:vue自定义事件,绑定事件监听和触发事件组件间通信第三种方式:消息订阅和发布,使用pubsubjs库使用ubsub通信的好处就是,两个组件间的位置没有任何要求有三层组件,App–List–Item在Item中有删除选中行的功能,在App中订阅消息,在Item中发布消息App.vue<templa...

2020-02-25 11:04:03 435

原创 Vue_组件化编码,组件间通信1,通过标签传递数据

组件化编码的基本流程:1.拆分组件2.实现静态组件:显示的界面数据是固定的,也没有交互3.动态组件:有两个方面是动态的,初始化显示和交互组件间通信1.通过标签传递组件接收父组件传递过来的数据,首先要有声明,接收传递过来的属性;这个属性就会成为组件对象的属性示例编码:拆分为App、Add、List和Item组件js的入口文件main.js/*入口JS*/import Vu...

2020-02-23 12:51:50 206

原创 Vue_自定义事件2

事件监听绑定、触发的另一种形式$on(eventName,data)App.vue组件<template> <div class="todo-container"> <div class="todo-wrap"> <!--<TodoHeader @addTodo="addTodo"/>--> ...

2020-02-20 15:07:02 89

空空如也

空空如也

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

TA关注的人

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