自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

想好名字再改

知识搬运工

  • 博客(32)
  • 资源 (1)
  • 收藏
  • 关注

原创 写一篇RocketMQ卷文让自己冷静一下

不吃不喝看了好久才概括出这么一点点东西,希望大佬们能够有耐心看一看,遇到说的不对的地方,也欢迎在评论区或者私信与我交流另外完整版的代码注释,我在我的github上也添加了,感兴趣的小伙伴也可以点击这个链接去看一波 github地址觉得我讲的有那么一点点道理,对你有那么一丢丢的帮助的,也可以给我一波点赞关注666哟~废话不多说,下面开始我的表演~RocketMQ全局流程图上来就是这么一大张图片,相信大家肯定完全不想看下去。(那么我为什么还要放在一开始呢?主要是为了能够让大家有一个全局的印象,然后

2021-12-07 23:55:54 1620

原创 Join 连表操作

参考文章https://time.geekbang.org/column/article/79700https://time.geekbang.org/column/article/80147NLJ(Index Nested-Loop Join)对于被驱动表有索引的情况遍历驱动表,每读出一条驱动表上的数据,都会去被驱动表的索引树上获取满足条件的数据,组成一行作为结果集的一部分。然后重复上述步骤NLJ优化使用MRR的时候,就会先讲驱动表的数据部分存放到join_buffer中,然后一次性传入一批的

2021-09-14 23:14:43 198

原创 Binlog日志格式

查看binlog日志格式show variables like 'binlog%';三种格式的区别statement 记录sql原文 limit情况下可能是unsafe的,存在错误使用索引的情况row 会替换成Table_map 和 Delete_rows,记录要操作的表和具体操作的记录mix 折中,mysql判断会不会引起主从不一致,从而选择row或者statementstatement格式的binlogrow格式的binlog...

2021-09-01 21:59:08 179

原创 Redis缓存一致性设计

一致性问题是如何产生的?首先先抽象我们日常的几个缓存和数据库CRUD的方法getFromDB(key)getFromRedis(key)putToDB(key,value)putToRedis(key,value)deleteFromDB(key)deleteFromRedis(key)利用缓存读取数据原因,一般情况下,Redis的操作速度比数据库操作数据要快上很多(因为Redis是基于内存的)而数据最终要放到数据库中,是因为Redis并不适合作为落地存储的那么,假如我们

2021-09-01 21:57:28 110

原创 我要学RocketMQ啦-消息拉取及消费流程-本文持续更新

源码地址含注释https://github.com/beastmouth/rocketmq代码阅读流程图:阅读源码时的一些思考普通消息消费时,因为没有顺序,是否会存在后面一批消息的消费处理完成在前一批消息的消费处理完成之前?答:有可能的,首先线索消费处理的逻辑,由上面的流程图,我们不难看出,消费的处理和拉取消息并不是在一个线程中,同时消费的处理线程默认有20个,那么便会存在后一批消息会和前一批消息一起在处理且处理速度快于前一批消息的情况。那么此时offset会有问题吗?我们可以看下以下这段

2021-08-10 22:37:10 159

原创 MacOS使用iTerm2连接服务器

MacOS使用iTerm2连接服务器# 此处脚本创建在/Users/narcos/Documents/iterm目录下cd /Users/narcos/Documents/itermtouch iterm2login.shvi iterm2login.shchmod 777 iterm2login.sh#!/usr/bin/expectset timeout 30spawn ssh -p [lindex $argv 0] [lindex $argv 1]@[lindex $argv 2]

2021-08-09 22:04:50 1654

转载 Seata TCC-分布式事务解决时不得不考虑的问题

问题描述摘抄于 问题描述并发控制问题描述:多个分布式事务去操作相同的记录解决方案:将多个分布式事务操作的数据从修改同一条记录变成添加多条记录,这样的话commit/cancel阶段就不存在相互干扰问题了空回滚问题描述:如图所示,事务协调器在调用 TCC 服务的一阶段 Try 操作时,可能会出现因为丢包而导致的网络超时,此时事务管理器会触发二阶段回滚,调用 TCC 服务的 Cancel 操作,而 Cancel 操作调用未出现超时。TCC 服务在未收到 Try 请求的情况下收到 Cancel

2021-08-09 21:56:52 190

原创 AT模式遇到的问题与具体源码篇

关于AT模式的流程,我们在上一篇文章 一文简要概述Seata AT与TCC的区别 已经介绍的差不多了。但是日常学习中,我们仅仅只知道一个流程是远远不够的。我们往往会遇到许多问题,现在根据几个我在学习Seata时产生的几个问题,进入源码中了解下具体是怎么实现的。开始之前,介绍几个AT模式下比较重要的类TM 操作核心代码 io.seata.tm.api.TransactionalTemplateRM 操作核心代码 io.seata.rm.datasource.exec.ExecuteTemplate2

2021-08-09 21:56:17 207

原创 一文简要概述Seata AT与TCC的区别

AT与TCC的比较首先,先了解一下Seata分布式事务的工作原理(见下图)我们可以将Seata分布式事务的参与角色分为三个:TC(事务协调者,即Seata-Server),TM(事务管理器),RM(资源管理器)。了解完参与角色之后,我们还需要先了解下每个角色在分布式事务中负责的内容各个角色职责此处为各个角色职责的简要介绍TC:事务协调者,负责事务的协调,根据TM最后的指令决定提交/回滚全局事务TM:事务管理器,负责开启全局事务,调用其他的RM资源以及通知TC是要提交/回滚全局事务

2021-08-09 21:55:33 873

原创 Seata AT 模式是如何处理悬挂和空回滚

空回滚描述:摘自Seata官网(在未收到 Try 请求的情况下收到 Cancel 请求,这种场景被称为空回滚;空回滚在生产环境经常出现,用户在实现TCC服务时,应允许允许空回滚的执行,即收到空回滚时返回成功。)AT 模式是利用 undo log 来处理空回滚的,具体细节见代码 // io.seata.rm.datasource.DataSourceManager#branchRollback @Override public BranchStatus branchRollback

2021-08-09 21:54:41 1382 1

原创 为什么重写 equals 时必须重写 hashcode 方法

我们常常说,重写Equals时必须要重写HashCode,那么是为什么呢?原因见下:每个覆盖了equals方法的类中,必须覆盖hashCode。如果不这么做,就违背了hashCode的通用约定,也就是上面注释中所说的。进而导致该类无法结合所以与散列的集合一起正常运作,这里指的是HashMap、HashSet、HashTable、ConcurrentHashMap。现在我们来做一个实验证明重写Equals时一定要重写HashCodepublic class EqualAndHashCodeTest {

2021-08-09 21:41:03 121

原创 我要学RocketMQ啦-一文带你看懂普通消息与顺序消息消费逻辑

首先先看看拉取消息的代码-入口,只有拉取到消息才能够有对应的普通/顺序消息的处理逻辑public void pullMessage(final PullRequest pullRequest) { final ProcessQueue processQueue = pullRequest.getProcessQueue(); // 省略校验等代码.. 详细注释见我的github // 拉取到消息后的处理 后面会执行拉取 PullCallback pullCallback

2021-08-09 21:07:50 162

原创 我要学RocketMQ啦-为什么RocketMQ同一个GroupId下的Consumer订阅的内容要一致

首先,先阐述下标题是什么意思RocketMQ在相同的GroupId下,每一个消费者他们的订阅内容要保持一致,否则会导致消息无法被正常消费,即下面的关系,所有的Consumer要完全一样GroupId — Topic + Tags参考文档:https://help.aliyun.com/document_detail/43523.html?spm=a2c4g.11186623.6.777.1dba3635aj4Own那么,我们也在源码的角度上分析下为什么需要保持一致源码注释 GitHub https

2021-08-09 19:19:39 1503

原创 Java-String方面

// abc存储在常量池中String s1 = "abc";final String s2 = "a";final String s3 = "bc";// 增加了final 实际上是对常量进行拼接 同时拼接出来的也是常量String s4 = s2 + s3;// 新建了个对象(对象引用的方式) abc存放在字符串常量池但是引用地址存放在堆内存中String s5 =...

2019-09-27 17:24:51 102

转载 设计模式-状态模式

例子来源:云破天蓝-十一个行为模式之状态模式定义:当一个对象有多个状态,并且在每个状态下有不同的行为,可以使用状态模式来在其内部改变状态时改变其行为,而客户端不会察觉状态的改变,仍使用同样的方法或接口与对象进行交互。结构图:Context:上下文类,与客户端进行交互的对象。内部包含了会导致状态改变的成员变量,各种状态的实例以及对客户端交互的接口。当客户端执行业务方法时,类本身不做处理...

2018-09-19 20:19:08 151

转载 设计模式-工厂模式,抽象工厂模式

例子来源菜鸟教程-工厂模式下面例子中鼠标,键盘,耳麦为产品,惠普,戴尔为工厂。简单工厂模式简单工厂模式不是 23 种里的一种,简而言之,就是有一个专门生产某个产品的类。比如下图中的鼠标工厂,专业生产鼠标,给参数 0,生产戴尔鼠标,给参数 1,生产惠普鼠标。工厂模式工厂模式也就是鼠标工厂是个父类,有生产鼠标这个接口。戴尔鼠标工厂,惠普鼠标工厂继承它,可以分别生产戴尔鼠...

2018-09-19 19:42:27 154

原创 SpringCloud-微服务-熔断器Hystrix-使用时遇到的问题

使用时候遇到的问题:对应的配置:package com.nick.movie.service;import com.nick.movie.service.impl.MicroCloudServiceHystrixImpl;import com.nick.movie.config.MultipartSupportConfig;import com.nick.movie.util...

2018-09-04 15:11:33 1385 1

原创 SpringBoot项目继承Swagger插件

为什么要继承Swagger:转载来源Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新 。接口的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。我们的RESTful API就有可能要面对多个开...

2018-09-04 12:04:48 1508

原创 SpringCloud-微服务-使用时候的问题

@EnableEurekaClient报错,没有找到对应的包原因:可能是当前的SpringCloud版本过低导致的解决方法:使用当前官网的最新版本,在pom中导入 <dependencyManagement> <dependencies> <dependency> ...

2018-09-02 21:41:30 127

原创 SpringCloud-微服务-服务之间的调用

1.使用Feign调用方:import com.nick.movie.config.MultipartSupportConfig;import com.nick.movie.utils.ResponseResult;import org.springframework.cloud.openfeign.FeignClient;import org.springframework.ht...

2018-08-30 21:03:02 2667 2

原创 SpringCloud-微服务-注册中心Eureka

package com.nick.eureka;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.serve...

2018-08-30 11:16:44 223 1

原创 SpringBoot国际化配置

项目结构: 本次国际化【多语言】配置使用Session来实现首先需要配置他的实现类I18nConfig和MyLocaleResolverpackage com.narcos.seeu.config;import org.springframework.context.annotation.Bean;import org.springframework.context.ann...

2018-08-21 16:46:56 10459 1

原创 关于SpringBoot存放Redis出现乱码的情况

在SpringBoot项目中,将值存入Redis数据库中,会出现乱码的问题原因:因为spring-data-redis里面对key和value都进行了序列化,将其变成byte[]数组后再调用对应的redis java client进行存储。就会导致存进redis的key发生改变。解决方法:需要手动定义序列化1.在xml里面指定:【未测试】<bean id="redisT...

2018-08-13 16:36:51 9884 5

原创 SpringBoot JPA的使用笔记

通过某一列查找数据:SpringBoot有严格的命名规则,可以按照提示进行命名userRepository.findByUidEquals(uId);对应的实体类要与数据库一一对应【包括类名】package com.narcos.seeu.po;import lombok.Data;import org.springframework.data.jpa.domain.Ab...

2018-08-10 19:58:33 195

原创 Redis学习笔记

从0开始迭代,每次迭代5个,返回含有w的元素传入:scan 0 count 5 match *w*返回:1) "6"2) 1) "wsj5"2) "wsj3" 当返回的游标 1)为0时,则表示整个数据集都已经遍历完成了 redis能存储内容:String 字符串Hash 哈希 : 可用于存储对象hmset hbj name "hbj" ag...

2018-08-09 13:49:42 102

原创 安装Redis时候遇到的问题

安装教程:Redis安装教程安装时遇到的问题:报没有 C 编译器的错误【可能出现原因:刚刚装的Ubuntu系统,没有对应的C的编译器】       需要安装GCCsudo apt-get updatesudo apt-get install gccsudo apt-get install g++当配置好Redis并且成功启动Redis之后【./redis-server re...

2018-08-09 13:41:54 321

原创 关于Go的rand

package mainimport ( "math/rand" "time" "fmt")func main() { rand.Seed(time.Now().Unix()) //seed 的参数不变的话 -> 此程序的运行环境是固定的,因此 rand.Intn 总是会返回相同的数字 ->所以要讲seed的参数一直改变(获取时间) fmt.Printf("...

2018-06-21 14:21:14 1829

原创 SpringCloud 微服务学习笔记《二》(断路器)

断路器 ——————————————————————————————————未完成

2018-06-14 17:42:57 146

原创 SpringCloud 微服务学习笔记《一》(微服务的组成)

1.注册中心 Eureka2.服务的提供者3.服务的消费者消费者可由两种方法来实现:1.restTemplate+ribbon2.feign ——————为什么要使用feign而不是使用restTemplate+ribbon因为如果使用restTemplate+ribbon的话每次新建一个消费者就要写一次restTemplate,比较繁琐而Feign默认集成了Rib...

2018-06-14 17:38:20 144

原创 GIT 使用

新建仓库并上传代码:首先先再github,coding.net等代码管理仓库新建一个项目然后在本地新建一个文件夹,用于存储git上的代码然后运行git-bash,切到本地新建的文件夹目录下$ cd D:/eclipse/eclipse/workspace4/blockChainMonitor然后初始化$ git init然后克隆仓库的代码到本地$ git c...

2018-06-07 14:11:15 86

原创 MySQL数据库读写分离(基于CentOS) 《一》 主从数据库的配置

安装mysql的方法指令见  阿里云CentOS配置Java,Tomcat,MySQL首先是在主库中创建用于同步的账户grant replication slave,file on *.* to 'replication'@'192.168.1.108' identified by '123456';flush privileges;然后是修改主库的配置文件   /etc/my.cnflog-bi...

2018-06-01 16:27:50 209

原创 阿里云CentOS配置Java,Tomcat,MySQL

配置服务器时查阅了许多相关资料,特此记录,以备不时之需。首先是Java的配置:yum list java* yum install java-1.7.0-openjdk* -y其次是Tomcat的配置(使用的是解压版的tomcat)先将Tomcat压缩包上传至服务器    解压并更名成tomcat7 #tar zxvfapache-tomcat-7.0.70.tar.g

2016-11-21 19:33:33 313

Mac压缩解压工具Keka

Mac压缩解压工具Keka

2021-08-09

空空如也

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

TA关注的人

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