自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 rocketMQ Consumer有序消费和并发消费的区别

cketmq消费者注册监听有两种模式,有序消费MessageListenerOrderly和并发消费MessageListenerConcurrently,这两种模式返回值不同。MessageListenerOrderly正确消费返回ConsumeOrderlyStatus.SUCCESS,稍后消费返回ConsumeOrderlyStatus.SUSPEND_CURRENT_QUEUE_A_MOMENTMessageListenerConcurrently正确消费返回ConsumeConcurr

2021-01-16 12:04:35 1466

原创 ThreadLocal的理解

首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过ThreadLocal.set()来实现的,而是通过每个线程中的new 对象 的操作来创建的对象,每个线程创建一个,不是什么对象的拷贝或副本。通过ThreadLocal.set()将这个新创建的对象的引用保

2021-01-09 16:52:41 160

原创 springcloud框架下分布式事务的解决思路

业务场景介绍#咱们先来看看业务场景,假设你现在有一个电商系统,里面有一个支付订单的场景。那对一个订单支付之后,我们需要做下面的步骤:更改订单的状态为“已支付” 扣减商品库存 给会员增加积分 创建销售出库单通知仓库发货这是一系列比较真实的步骤,无论大家有没有做过电商系统,应该都能理解。进一步思考#好,业务场景有了,现在我们要更进一步,实现一个 TCC 分布式事务的效果。什么意思呢?也就是说,[1] 订单服务-修改订单状态,[2] 库存服务-扣减库存,[3] 积分服务-增加积

2021-01-05 12:15:10 348

转载 GC两个关键难点:跨代引用与并发标记

在分析JVM的分代垃圾收集算法的时候,可能存在老年代对新生代的引用,无法真正确定对象已死。一、解决跨代引用:记忆集记忆集(Remembered Set):一种用于记录从非收集区域指向收集区域的指针集合的抽象数据结构,在对象层面来说就是非收集区域对象对收集区域对象的引用的记录。它存放在收集区域,比如在新生代里面存放着老年代对新生代对象的每一个引用。这样在收集新生代的时候,我们就可以根据记忆集知道哪些对象被老年代对象所引用,不能回收,这就解决了跨代引用的问题。记忆集根据记录的精度分三类:字长

2020-12-17 13:41:37 308

原创 项目管理的10个经典故事

相信在接触项目管理领域知识领域之前,大家可能会觉得这个“项目”词听起来有点“高大上”,离自己十分遥远,是公司组建团队做的盈利性工作,比如建新楼房、开发新产品、拍摄新电影等等。但实际上,项目不仅仅局限于公司层面,大到国家,小到个人,出于非盈利目的做的事也可以被称为项目。比如“试译宝君从明天起正式开启一个月的健康运动减肥计划,目标是体重减轻5斤”就是一个项目,具有临时性、目的性、需要安排计划并执行。有的项目涉及多人,项目管理者从项目计划到实施到盘点都要做好相应的工作,保证项目顺利实施,因此需要多种能力,以翻译

2020-12-15 09:45:23 3142

原创 kafka 架构原理

01PARTkafka简介Kafka最初由Linkedin公司开发,是一个分布式的、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常用于web/nginx日志、访问日志、消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。02PARTkafka的特性 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒; 可扩展性:kafka集群支持热扩展; ...

2020-12-10 20:25:58 188

转载 JAVA垃圾收集算法总结以及CMS、G1算法详解

从方法论上讲,程序语言的回收算法主要分为一、引用计数算法(Reference Counting):给对象添加一个引用计数器,每当一个地方引用它时,数据器加1;当引用失效时,计数器减1;计数器为0的即可被回收。二、根搜索算法(GC Root Tracing):通过一系列的名为“GC Root”的对象作为起始点,从这些节点开始向下搜索,搜索所有走过的路径称为引用链(Reference Chain),当一个对象到GC Root没有任何引用链相连时(用图论来说就是GC Root到这个对象不可达时),证明该对

2020-12-07 19:57:21 546

转载 Hashmap的结构,1.7和1.8有哪些区别

不同点:(1)JDK1.7用的是头插法,而JDK1.8及之后使用的都是尾插法,那么他们为什么要这样做呢?因为JDK1.7是用单链表进行的纵向延伸,当采用头插法时会容易出现逆序且环形链表死循环问题。但是在JDK1.8之后是因为加入了红黑树使用尾插法,能够避免出现逆序且链表死循环的问题。(2)扩容后数据存储位置的计算方式也不一样:1. 在JDK1.7的时候是直接用hash值和需要扩容的二进制数进行&(这里就是为什么扩容的时候为啥一定必须是2的多少次幂的原因所在,因为如果只有2的n次幂的情况...

2020-12-04 10:23:12 1388

转载 springCloud微服务常用设计模式(聚合方式)

微服务架构的设计理念便是:各个服务之间隔离、自治、独立部署、异步通信等等,而在开发过程中我们会遇到一些业务需要对这些独立的服务进行组合,下面介绍的是几种常用的聚合方式、使用路由网关zuul聚合服务的实现。微服务6种常用设计模式1、代理设计模式:根据业务的需要选择调用后端的某些服务,在返回客服端之前,代理可以对输出进行加工,这是最简单的一种服务组合模式。如图:这种模式的典型案列是:平滑的系统迁移。2、聚合设计模式根据业务流程处理的需要,以一定的顺序调用依赖的多个微服务,对依赖的

2020-12-04 09:33:03 2456

转载 微服务:注册中心ZooKeeper、Eureka、Consul 、Nacos对比

前言服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。因此,原本在单体应用阶段常用的静态LB机制就不再适用了,需要引入额外的组件来管理微服务提供者的注册与发现,而这个组件就是服务注册中心。CAP理论CAP理论是分布式架构中重要理论一致性(Consistency) (所有节点在同一时间具有相同的数据)

2020-12-04 09:20:36 132

转载 Eureka工作原理

Eureka 工作原理上节内容为大家介绍了,注册中心 Eureka 产品的使用,以及如何利用 Eureka 搭建单台和集群的注册中心。这节课我们来继续学习 Eureka,了解它的相关概念、工作流程机制等。Eureka 作为 Spring Cloud 体系中最核心、默认的注册中心组件,研究它的运行机制,有助于我们在工作中更好地使用它。Eureka 核心概念回到上节的服务注册调用示意图,服务提供者和服务的消费者,本质上也是 Eureka Client 角色。整体上可以分为两个主体:Eureka

2020-12-04 09:08:51 158

转载 mysql中innodb和myisam对比及索引原理区别

InnoDB和MyISAM是很多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,5.7之后就不一样了1、事务和外键InnoDB具有事务,支持4个事务隔离级别,回滚,崩溃修复能力和多版本并发的事务安全,包括ACID。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择2、全文索引Inn

2020-12-02 21:41:26 181

原创 MySQL事务隔离级别

一、事务的基本要素(ACID)  1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。  2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。   3、隔离性(Isolation):同一时间,只允许一个事务请求同.

2020-12-02 21:31:24 96

转载 Redis五种数据类型

对于Redis来说,它只能存储五种基本数据类型,在之前的版本中都是String、Hash、List、SortedSet(zSet)、Map而现在的新版本中String、Hash、List、SortedSet(zSet)、Set一、字符串String ----String Key-Value字符串是Redis中最常用的类型,是一个由字节组成的序列,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据。Value最多可以容纳的数据长度为512MB。set key value往k

2020-12-02 20:53:36 214

原创 AOF重写及实现原理

AOF 重写AOF 持久化是通过保存被执行的写命令来记录数据库状态的,所以AOF文件的大小随着时间的流逝一定会越来越大;影响包括但不限于:对于Redis服务器,计算机的存储压力;AOF还原出数据库状态的时间增加;为了解决AOF文件体积膨胀的问题,Redis提供了AOF重写功能:Redis服务器可以创建一个新的AOF文件来替代现有的AOF文件,新旧两个文件所保存的数据库状态是相同的,但是新的AOF文件不会包含任何浪费空间的冗余命令,通常体积会较旧AOF文件小很多。AOF 文件重写的实现AOF重写并不需

2020-12-02 20:35:52 898

转载 RDB与AOF的区别

AOF和RDB是两种redis持久化的机制。RDB:RDB是将支持当前数据的快照存成一个数据文件的持久化机制。1.在生成快照时,将当前进程fork出一个子进程.2.然后再子进程中循环所有的数据,将数据写入到二进制文件中。3.当子进程将快照写入临时文件完毕后,用临时文件替换原来的快照文件,然后子进程退出。优点:1.一旦采用该方式,那么你的整个Redis数据库将只包含一个文件,这样非常方便进行备份。比如你可能打算每1天归档一些数据。2.方便备份的同时,我们也很容易的将一个RDB文件移动到其他存储

2020-12-02 20:26:17 302

转载 通过一个生活中的案例场景,揭开并发包底层AQS的神秘面纱

本文导读生活中案例场景介绍联想到 AQS 到底是什么AQS 的设计初衷揭秘 AQS 底层实现最后的总结当你在学习某一个技能的时候,是否曾有过这样的感觉,就是同一个技能点学完了之后,过了一段时间,如果你没有任何总结,或者是不经常回顾,遗忘的速度是非常之快的。忘记了之后,然后再重新学,因为已经间隔了一段时间,再次学习又当做了新的知识点来学。这种状态如此反复,浪费了相同的时间,但学习效果却收效甚微。每当遇到这种情况,我们可以停下来,思考一下。对于某一个技术知识点理解起来不是那么好懂的时候,或者是

2020-12-02 19:39:40 206

原创 java线程池学习(三)

一、Future模式

2020-12-02 18:33:46 120

原创 java线程池学习(二)

一、java线程池的拒绝策略当线程池的队列已满,并且maximumPoolSize已经达到上限时,这时候如果又有任务进来怎么办,肯定是拒绝的鸭,那就涉及到了拒绝策略的选择:1.ThreadPoolExecutor.AbortPolicy丢弃任务并抛出RejectedExecutionException异常 2.ThreadPoolExecutor.DiscardPolicy直接丢弃任务,不抛出异常3.ThreadPoolExecutor.DiscardOldestPolicy丢弃队列最前面的任

2020-12-02 14:04:52 107

原创 java线程池学习(一)

一、线程池的核心参数通过线程池源码来分析线程池,有几个关键的参数: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit,

2020-12-02 13:13:21 128

空空如也

空空如也

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

TA关注的人

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