自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (1)
  • 收藏
  • 关注

原创 RocketMq相同topic不同tag踩坑

RocketMq在我们项目中一般用于系统间的解耦,有时候会使用不同的Consumer消费不同的tag,但是博主昨天踩了个坑。情景如下:两个consumer接收相同的topic,不同tag的消息,但是当处方系统发送tagA的消息的时候,consumer2消费了,本来consumer2应该是要丢弃掉的,但是却消费了,主要问题就是配置了相同的Group。RocketMq消费者如果针对同一个topic不同的tag配置了相同的group,会导致消息消费混乱。解决方法:针对不同的tag配置不同的group即

2022-03-01 08:06:30 2784 2

原创 全文搜索引擎ES的读写删除过程

1、写过程ES一般是分布式多实例部署,大概写的过程如下图:1、当客户端发送一条document过来时,会随机找一个进程,被选中的进程会成为协调节点;2、协调节点将这条document路由到指定的节点,然后写到primary节点上;3、primary节点写完就会同步到对应的replic节点;4、协调节点发现primary和所有replic都处理完成后,就给客户端返回处理完成;那么真...

2020-04-21 18:23:15 656

原创 全文检索Lucene的使用

推荐一篇比较好的文章,我就不多赘述,看了就能入门跳转连接

2020-04-20 16:12:07 258

原创 Redis面试题_死亡连环炮(一篇就够了)

2020-04-17 12:38:52 319

原创 Socket编程

一,网络编程中两个主要的问题一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。目前较为流行的网...

2020-04-15 15:46:58 331

原创 图解MQ面试_死亡连环炮_再也不怕MQ了

面试题三:如何选型MQ市面上的MQ有多种,如何选择合适自己项目的MQ呢?现在常用的的MQ有ActiveMQ,RabbitMQ,RocketMQ,ZeroMQ,Kafka。网上比较这几种MQ的文章有很多,大家可以去参考下。我下面就给大家简单说下。公司选型MQ主要就在于稳定性、社区活跃性、功能性(当然也不是功能越多越好,也要根据适用场景分析)。在现如今分布式大行其道的时候,ZeroMQ...

2020-04-07 22:23:33 468

原创 springCloud选型(2020年)

1、2020年版本选型2、组件选择与升级最新推荐组件选型(建议选取最下面一层)

2020-04-07 14:51:41 1642

原创 RocketMQ高可用分析

1、集群NameServer集群为无状态集群broker集群1、多master模式2、多master和多slave(异步)3、多master和多slave(同步)2、主从复制方式1)、同步复制消息从Master复制到Slave后才给客户端发送ACK,表示写成功安全可靠,如果Master出故障,Slave有全部备份数据,容易恢复。但是会降低吞吐量。2)、异步复制消息只要在Ma...

2020-04-02 18:28:37 265

原创 RocketMq存储管理分析

1、生产者发送消息给mq2、mq将消息持久化存储到存储系统3、mq发送ack给生产者4、mq将消息推送给消费者5、消费者发送ack给mq6、mq将消息从存储系统中删除存储介质1、关系型数据库DB2、文件系统文件系统如何保证读写速度1、写需要顺序写2、读需要零拷贝,Java中通过MappedByteBuffer实现零拷贝(一次只能映射1.5G-2G文件至用户态的虚拟内存,所以...

2020-04-02 15:08:37 222

原创 分布式id生成算法Twitter的SnowFlake

分布式id生成算法的有很多种,Twitter的SnowFlake就是其中经典的一种。算法原理SnowFlake算法生成id的结果是一个64bit大小的整数,它的结构如下图:1bit,不用,因为二进制中最高位是符号位,1表示负数,0表示正数。生成的id一般都是用整数,所以最高位固定为0。41bit-时间戳,用来记录时间戳,毫秒级。41位可以表示个数字,如果只用来表示正整数(计算机中...

2020-04-01 15:53:41 139

原创 springBoot+rocketMq简单案例实现

生产者项目结构1、创建springBoot项目后添加如下依赖pom.xml<!-- https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-spring-boot-starter --> <!-- 支持rocketMq--> <dependency> <grou...

2020-04-01 11:20:33 1390

原创 RocketMq学习

RocketMq是阿里巴巴2016年开源的,贡献给了apache,用java语言开发优点:1、解耦2、削峰3、数据分发缺点:1、系统可用性降低如果MQ宕机了,就会造成影响2、系统复杂性提高引入消息同步问题,顺序问题,消息丢失问题3、一致性问题如果消息订阅方一个系统处理失败了,几个订阅方的数据就会造成不一致市场上各种MQ比较ActiveMQ RabbitMQ RocketM...

2020-03-31 16:45:34 158

原创 dubbo+zookeeper+hystrix整合springBoot

dubbo+zookeeper+hystrix整合springBoot详细环境搭建可以看我前两篇文章,此文只简单介绍下融合Hystrix传送门:dubbo+zookeeper环境搭建dubbo+zookeeper整合springBoot介绍下整合Hystrix后需要修改的地方1、pom.xml在Consumer和Producer两个工程中的pom.xml文件都追加下面的依赖如果启动...

2020-03-27 16:53:07 303

原创 dubbo+zookeeper整合springBoot

dubbo+zookeeper整合springBoot1、zookeeper和dubbo-admin的下载和安装请查看我上一篇文章:dubbo+zookeeper环境搭建附:创建springBoot项目创建过程2、项目结构3、Consumer代码明细1)配置文件pom.xm<dependency> <groupId>com.alibaba.boot&lt...

2020-03-27 14:31:55 375

原创 IDEA创建SpringBoot项目过程

IDEA创建SpringBoot项目过程1、点击新建project2、选择spring Assistant创建项目 注:如没有该选项,请在setting>plugins搜索Spring Assistant并install3、填写相关项目信息4、点击next后选择如下选项5、最好完成创建最后完成项目创建,将自动生成启动类等信息...

2020-03-27 14:09:46 165

原创 dubbo+zookeeper环境搭建

zookeeper安装启动1、下载zookeeperhttps://zookeeper.apache.org/2、解压3、启动/关闭/查看状态./zkServer.sh start./zkServer.sh stop./zkServer.sh status4、客户端链接zk./zkCli.sh 5、zookeeper其他相关命令详见Dubbo管理控制台搭建Maven...

2020-03-26 18:32:36 913

原创 linux查询日志命令总结

linux查询日志命令总结【背景】排查线上环境问题,少不了去线上查日志。而使用什么命令,能快速准确地查到我们需要查找地日志信息,也是我们需要掌握的一项技能。【命令】Linux查看命令有多种:tail,head,cat,tac,more(一) tail 命令tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k N...

2020-03-25 10:57:37 339

原创 springmvc+mybatis(纯注解实现Demon)

springmvc+mybatis(纯注解实现Demon)项目结构相关配置文件1、pom.xml<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId...

2020-03-24 18:37:03 187

原创 springmvc+mybatis(配置文件实现demon)

springmvc+mybatis(配置文件实现demon)项目结构相关配置文件1、web.xml<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app...

2020-03-24 18:09:40 147

原创 Spring事件监听实现

1、代码结构2、pom文件引入必要jar包<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.3.RELEASE</ver...

2020-03-18 18:49:27 346

原创 jdk动态代理和cglib动态代理实现

1、JDK动态代理实现代码:接口类public interface IProductProducer { void saleProduct(Float money);}实现类public interface IProductProducer { void saleProduct(Float money);}测试类public class Proxy...

2020-03-18 16:40:41 101

原创 Spring纯注解实现声明式事务

1、代码结构2、pom文件导入依赖jar包<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.8.RELEASE</ver...

2020-03-18 16:18:56 140

原创 Spring纯注解实现AOP

1、pom文件中导入相关依赖<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.8.RELEASE</version>...

2020-03-18 11:20:45 432

原创 @Autowired 与@Resource的区别

@Autowired 与@Resource的区别1、 @Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。2、 @Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false...

2020-03-17 10:05:30 96

原创 Spring的依赖注入 DI

依赖注入(DI)和控制反转(IoC)是从不同的角度描述的同一件事情,就是指通过引入IoC容器,利用依赖关系注入的方式,实现对象之间的解耦依赖注入方式:1、构造方法注入2、setter方法注入3、接口注入4、复杂类型(集合)注入代码//Computer类:public class Computer { private String type;//电脑型号 priva...

2020-03-16 18:08:32 134

原创 Spring bean的创建方式 作用域 生命周期

创建对象的三种方式:1、采用默认的构造函数创建2、采用静态工厂方法1、写一个静态工厂方法类public class HelloWorldFactory { public static HelloWorld getInstance(){ return new HelloWorld(); }}2、在spring的配置文件中进行声明<bean id="helloW...

2020-03-16 16:17:36 145

原创 获取spring容器IOC核心容器

ApplicationContext的三个常用实现类classPathXmlApplicationContext: 它可以加载路径下的配置文件,要求配置文件必须在类路径下。不在的话加载不了FileSystemXmlApplicationContext: 它可以加载磁盘任意路径下的配置文件件(必须有访问权限)AnnotationConfigApplicationContext:它是用于读取注...

2020-03-16 15:30:43 142

原创 分布式事务解决方案以及常用框架

解决方案两阶段提交(2PC)两阶段提交又称2PC,2PC是一个非常经典的强一致、中心化的原子提交协议。这里所说的中心化是指协议中有两类节点:一个是中心化协调者节点(coordinator)和N个参与者节点(partcipant)。两个阶段:第一阶段:投票阶段 和第二阶段:提交/执行阶段。举:订单服务A,需要调用支付服务B去支付,支付成功则处理购物订单为待发货状态,否则就需要将购物订单...

2020-03-12 18:45:01 7850 1

原创 分布式系统中BASE理论

BASE是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的结论,是基于CAP定理逐步演化而来的,其核心思想是即使无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)BASE 理论Basically Available(基本可用)指分布式系统在出...

2020-03-12 12:00:58 382

原创 分布式系统中CAP定理

因为微服务的原因,我们把服务进行了分布式,随着各个数据库也随着变成分布式每个数据库不一定存在相同的物理机中。那么这个时候单个数据库的 ACID 已经不能适应这种情况,而在这种集群中想去保证集群的 ACID 几乎很难达到,或者即使能达到那么效率和性能会大幅下降,最为关键的是再很难扩展新的分区了。这个时候如果再追求集群的 ACID 会导致我们的系统变得很差,这时我们就需要引入一个新的理论原则来适应...

2020-03-12 11:34:34 146

原创 事务的特性ACID

原子性 Atomicity原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。一致性 Consistency事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处于一致性状态。如果数据库系统在运行过程中发生故障,有些事务尚未完成就被迫中断,这些未完成的事务对数据库所作的修改有一部分已写入物理数据库,这是数据库就处于一种不...

2020-03-12 11:14:14 115

原创 Spring Aop底层原理

1、代理什么是代理模式通过代理控制对象的访问,可以详细访问某个对象的方法,在这个方法调用处理,或调用后处理。既(AOP微实现) ,AOP核心技术面向切面编程。代理模式应用场景SpringAOP、事物原理、日志打印、权限控制、远程调用、安全代理 可以隐蔽真实角色代理的分类静态代理(静态定义代理类)动态代理(动态生成代理类)Jdk自带动态代理、Cglib 、javaassist(字节...

2020-03-06 18:46:42 216

原创 Spring AOP理解及应用(附含自定义注解使用)

概念通知(Advice)切面的工作被称为通知。通知定义了切面是什么以及何时使用。除了描述切面要完成的工作,通知还解决了何时执行这个工作的问题。5种通知类型:前置通知(Before):在目标方法被调用之前调用通知功能后置通知(After):在目标方法完成之后调用通知,此时不会关心方法的输出是什么返回通知(After-returning):在目标方法成功执行之后调用通知异常通知(A...

2020-03-06 17:26:38 247

原创 ZGC 深入理解

G1作为新一代成熟的垃圾回收器尚未得到广泛使用,新一代的垃圾回收器ZGC在JDK 11中引入,ZGC是2017年Oracle公司贡献给OpenJDK社区的,正式成为OpenJDK的开源项目,也就是JEP 333,目前它被明确地标记为实验性质(意味着还不成熟)。新一代的垃圾回收器一经发布,虽然尚不成熟,但是仍然阻挡不了众多Java程序员对它的追捧。ZGC是为了解决G1的不足,我们先看一下G1有哪些不...

2020-03-05 16:41:31 1952

原创 MAC OS在升级后发现idea中git报错的解决方法

升级mac OS 系统后,idea中的git无法使用。解决方法如下:在mac终端中执行git --help发现报错。在mac终端中执行如下命令,等待安装完成。xcode-select --install执行完成后再执行git --help发现问题解决再重启IDEA,这一步不可少,很多人说执行了上述步骤后并不能解决IDEA中的报错。就是因为没有重启工具。希望对你有帮助...

2020-03-03 10:22:27 1061

原创 js对table的操作

//定义表框架;文件名更新时间循环使用操作//创建表行以及增加列数据 var gorTable = document.getElementById(“gorScriptTable”);//取得自定义的表对象 NewRow1 = gorTable.insertRow();//添加行 NewRow1.id = res.data.fileMd5; //设置行id NewCell11= Ne

2016-08-05 17:20:37 563

原创 json对象处理

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2016-08-05 17:14:26 367

Hystrix服务高可用保障框架.pdf

讲述hytrix的原理及相关配置,对hytrix的容错机制、降级机制、熔断机制、限流机制以及服务治理等作出详细说明。

2020-04-26

空空如也

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

TA关注的人

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