自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

凝渊的博客

与魔鬼战斗的人,应当小心自己不要成为魔鬼。当你凝视深渊时,深渊也在凝视你。

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

原创 设计模式

123

2020-05-13 14:28:12 131

原创 单例模式

设计模式之【单例模式】一、什么是单例模式单例:保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式是一种常用的软件设计模式之一,其目的是保证整个应用中只存在类的唯一个实例。比如我们在系统启动时,需要加载一些公共的配置信息,对整个应用程序的整个生命周期中都可见且唯一,这时需要设计成单例模式。如:spring容器,session工厂,缓存,数据库连接池等等。二、如何保证实例的唯一...

2019-07-01 14:40:39 191

原创 分布式锁的策略优缺点

基于数据库悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁...

2019-07-01 11:09:04 2753

原创 事务相关

一、事物的概述原子性原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。一致性一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,...

2019-06-27 11:11:04 276

原创 序列化

一、序列化的意义简单来说,系列化就是把对象的状态信息转化为可存储或传输的形式过程,也就是把对象转换为字节系列的过程成为系列化。而反序列化是序列化的逆向过程,把字节数组反序列化为对象,把字节序列恢复为对象的过程成为对象的反序列化 。二、java中的序列化serialVersionUID 的作用Java 的序列化机制是通过判断类的 serialVersionUID 来验证版本一致性的。在...

2019-06-26 14:56:09 109

原创 ArrayList扩容机制

ArrayList 几个重要属性之一首先是默认初始值的大小:private static final int DEFAULT_CAPACITY = 10;接着是一个默认的空对象数组:private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};然后是ArrayList 实际数据存储的一个数组:t...

2019-06-26 14:33:52 8713

原创 如何对集合中对象的某个属性进行排序

假设一个List中,存放的是一个User对象,User对象中有一个age属性,根据age排序:使用list中自带的sort方法,里面自己重写compare方法,或者直接使用lambda表达式,如下public class Test { class User{ private String name; private int age; ...

2019-06-26 14:15:40 1059

原创 HashMap、Hashtable、ConcurrentHashMap之间的原理与区别

HashMap、Hashtable、ConcurrentHashMap之间的原理与区别HashTable底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化初始size为11,扩容:newsize = oldsize*2+1计算index的方法:index...

2019-06-26 14:13:18 327

原创 DUBBO并发控制

DUBBO如果要做并发控制,怎么做dubbo服务端和消费端都做了并发控制,分别在配置中有相应的对应配置:服务端:executes服务提供者每服务每方法最大可并行执行请求数,控制并发数量;actives每服务消费者每服务每方法最大并发调用数,控制占用链接的请求数量;Provider处理请求时,统计方法维度的调用情况,如果并发数超过设置的最大值,则阻直接抛出异常。消费端:actives每服务消...

2019-06-24 10:31:28 551

原创 Elastic-Job

一、主要功能定时任务:基于成熟的定时任务作业框架Quartz cron表达式执行定时任务。作业注册中心:基于Zookeeper和其客户端Curator实现的全局作业注册控制中心。用于注册,控制和协调分布式作业执行。作业分片:将一个任务分片成为多个小任务项在多服务器上同时执行。弹性扩容缩容:运行中的作业服务器崩溃,或新增加n台作业服务器,作业框架将在下次作业执行前重新分片,不影响当前作业执...

2019-06-21 14:07:32 529

转载 RocketMQ 源码分析 —— Message 存储

1、概述本文接《RocketMQ 源码分析 —— Message 发送与接收》。 主要解析 CommitLog 存储消息部分。

2018-08-10 13:37:21 227

转载 RocketMQ 源码分析 —— Message 发送与接收

1、概述Producer 发送消息。主要是同步发送消息源码,涉及到 异步/Oneway发送消息,事务消息会跳过。Broker 接收消息。(存储消息在《RocketMQ 源码分析 —— Message 存储》解析)。 2、Producer 发送消息DefaultMQProducer#send(Message)@Overridepublic SendResult ...

2018-08-10 12:07:48 870

原创 Integer值判断是否相等问题

Integer值判断是否相等问题我们知道Integer是int的包装类,在jdk1.5以上,可以实现自动装箱拆箱,就是jdk里面会自动帮我们转换,不需要我们手动去强转,所以我们经常在这两种类型中随意写,平时也没什么注意但Integer他是对象,我们知道 == 比较的是堆中的地址,但有个奇怪的事是, 如果 Integer a = 123, Integer b = 123,可以返回true,但...

2018-08-08 21:41:51 249

原创 详解重写equals()方法就必须重写hashCode()方法的原因

详解重写equals()方法就必须重写hashCode()方法的原因最近看了Object类的源码,对hashCode() 和equals()方法有了更深的认识。重写equals()方法就必须重写hashCode()方法的原因,从源头Object类讲起就更好理解了。先来看Object关于hashCode()和equals()的源码: 光从代码中我们可以知道,hashCode()方法是...

2018-08-08 21:28:10 259

空空如也

空空如也

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

TA关注的人

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