自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

岁月静好

只要方向正确,就不怕路途遥远!

  • 博客(18)
  • 收藏
  • 关注

原创 zookeeper的选举机制

Leader选举机制是保证分布式数据一致性的关键所在,在zk集群中有两种情况需要进入leader选举: 1.服务器初始化启动 2.服务器运行期间无法与leader保持连接(leader服务器挂掉了)在zk中投票的实体Vote,但是每次投票的信息都是基于id与zxid,但是有些校验的判断需要用到其他的信息,Vote的属性如下 version:版本信息,重写equals的时候使用 id:被...

2018-04-30 17:38:25 1961

原创 zookeeper 服务器角色及状态

使用zookeeper的项目中,zookeeper都是集群形式部署的,而zk服务又分为不同角色来执行不同的任务。 在区分zk服务器角色之前,需要解释几个概念: 1.事务请求: 在zk中,那些会改变服务器状态的请求称为事务请求(创建节点、更新数据、删除节点、创建会话等等) 2.非事务请求 从zk读取数据但是不对状态进行任何修改的请求称为非事务请求Leader角色Leader服务器是...

2018-04-29 20:02:23 3072

原创 Redis 高并发处理

关于使用redis的好处,前面的博客都有提到,就不在一一赘述,但是平常在项目中一般使用redis来存储数据,在查询的时候直接查询redis,可以提高RT,不用与数据库交互,而且查询缓存效率很快,那么如果单单是放一次以供查询,或者使用list追加放入以供查询,基本上没有太大的问题。但是如果说要根据原有的数据进行计算,怎么样保证数据的一致性,这个就是一个比较棘手的问题,比如平常我们看到的最多的就是抢红...

2018-04-27 15:09:11 13019

原创 Spring 异常处理小结

平常开发web项目的时候,后台出现各种异常的时候,需要自定义异常,然后逐个try catch将异常信息返回给前台。spring mvc可以对异常进行统一处理,是的在代码开发的时候不必再为各种异常返回以及各种服务器异常头疼。 Spring MVC统一处理异常的方式有三种:使用@ExceptionHandler注解 使用此注解可以处理异常信息,但是必须与抛出的异常在同一个Controller...

2018-04-25 17:15:14 173

原创 Spring 事务的配置方式以及常用的事务传播机制

在实际项目中为了保证数据的一致性,事务是非常重要的,而spring对事务的支持方便了我们对事务相关操作的开发。Spring事务的配置方式spring支持编程式事务管理以及声明式事务管理两种方式 编程式事务管理是侵入性事务管理,使用TransactionTemplate或者直接使用PlatformTransactionManager,对于编程式事务管理,spring推荐使用Transact...

2018-04-24 19:41:56 3910

原创 java 泛型入门理解

关于泛型泛型是java1.5的新特性,泛型的本质是参数化类型,也就是将可以处理类型参数化。泛型可以用在类、接口、方法的创建中,分别称为泛型类、泛型接口和泛型方法。 在没泛型的1.5之前,通过对类型Object的引用实现参数的“任意化”,带来的缺点就是需要做显示的强制类型转换,而这种转换时要求开发者对实际参数类型可以预知的情况下进行的,但是避免不了一些类型强转出现异常,但是编译器是不提示错误的...

2018-04-24 19:16:09 216

原创 String直接赋值与使用new String的区别

在研究String直接赋值与new String的区别之前我们需要先了解java中的字符串常量池的概念字符串常量池String类是我们平常项目中使用频率非常高的一种对象类型,jvm为了提升性能和减少内存开销,避免字符的重复创建,其维护了一块特殊的内存空间,即字符串池,当需要使用字符串时,先去字符串池中查看该字符串是否已经存在,如果存在,则可以直接使用,如果不存在,初始化,并将该字符串放入字...

2018-04-24 10:11:47 10454 8

原创 Spring Bean生命周期

spring 的两大核心,IOC与AOP,IOC主要用来管理bean的依赖,耦合代码,但是spring的bean的生命周期也是需要深入理解的,bean交给spring管理了,但是项目中难免会要在bean加载或者销毁的时候对bean做一些操作,所以更需要对bean的生命周期更深入的了解。Spring Bean生命周期关于bean的生命周期大致分为三个类型: - bean自身的方法 ...

2018-04-23 18:51:34 917

原创 java 修饰符小结

java语言提供多的修饰符,主要分为两类:访问修饰符、非访问修饰符,修饰符用来定义类、方法或者变量。通常放在语句的最前端,平常用到的也是最多的,面试的时候也是会经常被问到的。一、访问修饰符访问修饰符有四种:default(什么都不写,默认)、public、protected、private主要用来修饰类,变量,方法控制访问权限,同包、跨包、子类等权限。public public...

2018-04-23 11:40:33 165

原创 Zookeeper 初步认识

使用zk有一年了,主要图用途就是配置管理信息的读写,关于zk老早就想写一篇博客了,由于各种原因吧,今天就把zk的小例子补上。一、什么是Zookeeperzookeeper是由集群(节点组)使用的一种服务,用于在自身之间协调,并通过稳健的同步技术维护共享数据,zookeeper本身是一个分布式应用程序,为写入分布式应用程序提供服务。 zookeeper提供的常见服务如下:命名服务...

2018-04-16 21:20:05 985

原创 RocketMQ消费能力慢的优化方案

RocketMQ是解决数据同步的一个中间件,那么生产者与消费者之间的速度不一致对系统造成的压力是可想而知的,如果生产者发送消息的速度远远大于消费者消费的速度消息会不及时,而且还会造成数据堆积,可能还会引发各种各样的问题。RocketMQ消费速度提不上去的几种常见的处理方式如下:1. 提高消费并行读 a)同一个ConsumerGroup下,通过增加Consumer实例的数量来提高并行度...

2018-04-10 19:32:18 26747 7

原创 RocketMQ广播消费与集群消费

之前的博客只是为了验证rmq安装是否成功,以及生产消费消息能否正常走通,如果是多个消费端消费生产者发送的消息会有什么样的效果?这个可以用代码校验一下,还是先了解两个比较常用的消费端的术语: 1.集群消费方式 一个ConsumerGroup中的Consumer实例平均分摊消费生产者发送的消息。例如某个Topic有九条消息,其中一个Consumer Group有三个实例(可能是3个进程,或者3台机...

2018-04-10 15:14:33 13967 3

原创 Spring整合Junit的几种场景问题解决记录

上一篇博客记录了一下junit单元测试的一些使用的例子,但是项目中一般不会这样使用,用的最多的应该是Spring+Junit,如果是别人搭好的框架可能只需要复制粘贴,但是如果需要自己搭框架还是有一些问题需要注意一下的。一、加载Spring的配置文件spring是一个神奇的框架,我们用的最多的应该就是IOC和AOP,单元测试的时候因为集成了spring所以我们还是不要去new实体的好,通...

2018-04-08 14:54:04 488

原创 单元测试简单小结

对于一些有经验的开发觉得写单元测试是非常有必要的,也仅仅是觉得,可能写的不是太多,但是一些新手代码都写不顺的让他们再去写单元测试,估计他们的内心是相当崩溃的,但是单元测试时真的有必要,而且对自己的代码质量以及编码能力都是有提高的。一、什么是单元测试?单元测试是针对程序的最小单元来进行正确性检验的测试工作,程序单元就是应用的最小可测试部件,一个单元可能是单个程序,类,对象,方法等。二...

2018-04-08 10:38:43 3724

原创 微服务基本认识总结

一、什么是微服务?微服务架构风格是一种讲一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制,这些服务围绕业务能力构建并且可通过全自动部署机制独立部署,这些服务公用一个小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储。 微服务具备以下的特性:每个微服务可独立运行在自己的进程里一系列独立运行的微服务共同构建起整个系统每个微服...

2018-04-05 16:23:12 1526

原创 集合相关的底层实现学习

java集合使用还是很广泛的,而且面试的时候也会经常问到,是否有序,是否线程安全以及底层实现的原理等等,这两天看一下jdk的底层,还是对自己更进一步了解集合实现由很大的好处。 由于代码较多,主要查看一下实例化方法,添加元素方法,移除元素方法,以及存储方式来对比各种集合的实现的区别以及联系。1. ArrayList实例化方法 初始化的时候会创建一个初始化长度为10的数组。 添加...

2018-04-05 10:48:11 1069

原创 JDK、JRE和JVM的区别与相互之间的联系

工作这么久,好多时间都在研究一些并发、多线程、分布式、框架等这些东西,但是前几天突然被人问到jdk、jre、jvm的区别与联系,瞬间觉得一脸懵逼,感觉还是有必要重新整理一下一些比较基本的java知识了。1. 定义 JDK: Java Develpment Kit java 开发工具 JRE: Java Runtime Environment java运行时环境 JVM: ...

2018-04-03 17:07:49 8412

原创 java 中锁的相关概念

多线程确实给我们在效率上给我们带来了很大的便利,但是不得不考虑多个线程之间对资源竞争引起的安全问题。同步关键字synchronized是我们比较熟悉的用来解决线程安全的一个关键字,但是锁(Lock)是一个在资源竞争激励的情况下性能更优于synchronized的方法。 1.可重入锁 如果锁具备可充入性,则成为可充入锁,像synchronized和Reentrant都是可重入锁,可重入性时间是表...

2018-04-01 10:57:27 814

空空如也

空空如也

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

TA关注的人

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