技术博客
EASON_93
这个作者很懒,什么都没留下…
展开
-
分布式:强一致性、顺序一致性、弱一致性
转载文章:https://blog.csdn.net/chao2016/article/details/81149674转载 2019-04-19 14:31:00 · 829 阅读 · 0 评论 -
《Head First 设计模式》读书笔记四--工厂模式
工厂模式通过工厂模式来达到一个类创建多个不同对象的目的。简单工厂通过创建多个判断条件或者是多个方法,来达到创建多个类的目的。好处:这样能规避调用者对于内部实现细节的了解坏处:这个违反了开闭原则(对于修改是闭合的,对于扩展是开放的);问题是这个东西如果需要扩展就需要修改老的业务代码。public class SimpleFactory { private static Car c...原创 2019-06-28 21:38:24 · 154 阅读 · 0 评论 -
《Head First 设计模式》读书笔记三--单例模式
单例模式饿汉模式加载类的时候直接加载,加载速度快;但是类没用的时候就会浪费资源public class SingletonDemo1 { private static SingletonDemo1 singletonDemo1=new SingletonDemo1(); /* * 内部构造类,禁止外部加载 */ private SingletonD...原创 2019-06-28 21:37:42 · 122 阅读 · 0 评论 -
《Head First 设计模式》读书笔记六--克隆模式
克隆模式简介深入理解克隆模式,出现的意义在于反复创建一样的对象,影响JAVA程序的效率。克隆模式的优势在于底层调用了C,实现了内存之间的复制。克隆模式区分:1.浅克隆:在复制对象的时候里面的对象也是一起复制的过来,即调用的还是同一内存对象。2.深克隆:里面内存对象是重新创建一份的使用区别:浅克隆在修改母对象的时候,子对象也会修改响应的赋值;深克隆则不会影响响应的赋值Note:基本...原创 2019-07-02 18:29:02 · 163 阅读 · 0 评论 -
《Head First 设计模式》读书笔记五--建造者模式
建造者模式简要通过建造者模式可以简化复杂对象的创建,可以通过工厂模式来创建小的对象;然后装饰者来组装。工厂模式和建造者模式的区别在于:工厂给出了一个响应的产品,而建造者是蓝图,可以通过不同的例子建造出不同的产品。工厂创造出东西,建造者模式去选择使用东西来做出蓝图;后续使用简要的例子可以学习StringBuilder,append的方法就是一个例子。它是通过一个char的数组来一直往里...原创 2019-07-01 19:18:32 · 377 阅读 · 0 评论 -
《Head First 设计模式》读书笔记二--观察者模式
观察者模式类图自我实现主题接口:public interface Subject {//最简单的订阅,取消订阅,通知订阅者 void register(Observe observe); void unregister(Observe observe); void notifyObserve();}主题实现:public class MessageDa...原创 2019-06-11 22:25:04 · 193 阅读 · 0 评论 -
Dubbo+Spring MVC+ZooKeeper初识
Zookeeper介绍ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。(来自于百度百科)Win安装调试下载地址:https://www.apache.org/dyn/closer.cgi/z...原创 2019-06-04 14:29:46 · 203 阅读 · 0 评论 -
《Head First设计模式》读书笔记一 策略模式
读书笔记策略模式用算法簇去定义,封装起来;这种模式可以是算法独立起来,更加好的调用。Note:在界面调用的时候尽量是用接口定义而不是方法定义//不推荐Dog dog=new Dog(); //推荐,Dog是Animal的实现类Animal dog=new Dog(); 这种模式的定义可以方便的使用,扩展性也会比较好算法推荐的模式:public class DuckDe...原创 2019-06-11 20:16:10 · 165 阅读 · 0 评论 -
策略模式(如何干掉 if else)
策略模式1.介绍策略模式定义了一系列的算法,并将每一个算法封装起来,使每个算法可以相互替代,使算法本身和使用算法的客户端分割开来,相互独立。策略模式基于的一种开闭原则开闭原则: 对于扩展是开放的(Open for extension)。这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们可以改变模块的功能。 ...原创 2019-05-27 17:57:45 · 6807 阅读 · 1 评论 -
多线程编程详解
多线程编程ExcutorsJava中创建线程池很简单,只需要调用Executors中相应的便捷方法即可;在面试过程中如果问到线程的三种模式,那么指的是fix,cached和single模式创建线程的几种方法newFixedThreadPoolnewSingleThreadExecutornewCachedThreadPoolnewScheduledThreadPool为啥上面...原创 2019-05-30 10:06:40 · 374 阅读 · 0 评论 -
Hystrix杂谈(顺带瞎BB)
初窥熔断器熔断器的作用对来自依赖的延迟和故障进行防护和控制——这些依赖通常都是通过网络访问的阻止故障的连锁反应快速失败并迅速恢复回退并优雅降级提供近实时的监控与告警())Hystrix的方法execute()和queue() 适用于HystrixCommand对象,而observe()和toObservable()适用于HystrixObservableCommand对象e...原创 2019-05-24 15:47:09 · 161 阅读 · 0 评论 -
ArrayList详解
ArrayListArrayList内部的主要结构:Object[] elementData:实际存储数据size:数组的大小length:数组的容量DEFAULT_CAPACITY:默认的数组大小(10)EMPTY_ELEMENTDATA:空列表DEFAULTCAPACITY_EMPTY_ELEMENTDATA:默认列表,和EMPTY_ELEMENTDATA区别在于add的时候如...原创 2019-05-09 19:40:18 · 251 阅读 · 0 评论 -
Kafka、RabbitMQ、ZeroMQ、RocketMQ、ActiveMQ差异
转载链接:https://www.zhihu.com/question/43557507/answer/370979636一、资料文档Kafka:中。有kafka作者自己写的书,网上资料也有一些。rabbitmq:多。有一些不错的书,网上资料多。zeromq:少。没有专门写zeromq的书,网上的资料多是一些代码的实现和简单介绍。rocketmq:少。没有专门写rocket...转载 2019-05-14 09:55:52 · 84 阅读 · 0 评论 -
锁杂谈
锁杂谈锁类型:1)乐观锁:认为读多写少,在写入的时候读取版本号,在真的写入的时候判断一下是不是和我上次读的一样;一样就写入,不一样就等待重试。java中的方法是CAS(compare and swap)2)悲观锁:认为并发写的操作多,出现冲突的情况多。每次读取数据的时候都会上锁,java中悲观锁就是Synchronized。AQS框架下的锁则是先尝试cas乐观锁去获取锁,获取不到,才会转换...原创 2019-05-13 19:32:06 · 151 阅读 · 0 评论 -
ConcurrentHashMap的详解
ConcurrentHashMap1 ConcurrentHashMap导读HashMap的详解在上篇博客中已经做了详细的解释,最重要的一点是它虽然速度快,但是线程不安全。这都是因为它在get/put的时候没有加锁,HashTable是线程安全的,但是因为用的是synchronized,所以导致get/put的时候锁住的是一整个Hash表,导致性能低下。基于以上原因,Java实现了Concu...原创 2019-05-08 20:08:11 · 115 阅读 · 0 评论 -
HashMap详解
HashMap1.预备知识1.1 equals= =用于比较引用和比较基本数据类型时具有不同的功能:比较基本数据类型,如果两个值相同,则结果为true而在比较引用时,如果引用指向内存中的同一对象,结果为true;equals()作为方法,实现对象的比较。由于= =运算符不允许我们进行覆盖,也就是说它限制了我们的表达。因此我们复写equals()方法,达到比较对象内容是否相同的目的。而这些通...原创 2019-05-08 18:25:35 · 913 阅读 · 0 评论 -
lombok详解
lombok使用lombok以注解的形式来简化代码,提高开发的开发效率;比如说getter和setter写的非常隆长,但是用了lomok以后就能源码中不出现getter和setter的方法,编译后在编译文件中自带。引用maven依赖:<dependency> <groupId>org.projectlombok</groupId> <artifa...原创 2019-05-05 18:40:45 · 318 阅读 · 0 评论 -
http长连接,短连接和websocket
1.链接1.1 长链接http1.1以后默认使用长连接,响应头部会加入响应代码Connection:keep-alive;在使用长连接的时候,比如在使用网页的时候(如果是长连接的),那么在用户多次访问服务端的时候TCP链接不会关闭,会一直复用这个链接。长连接也不是一直保持链接的,时间的设置来自于apache服务器的设定时间。1.2 短链接http1.0之前使用的是短连接,即一个点击...原创 2019-05-05 12:30:00 · 960 阅读 · 0 评论 -
SpringBoot 多数据源切换
SpringBoot多数据源切换目的:1)读写库在代码端实现2)需要操作多数据库的时候需要使用核心类核心类AbstractRoutingDataSource,这个类是一个抽象化的DataSource类。可以用来选择多个数据源,确认数据源。核心方法:determineCurrentLookupKey() 通过重写这个方法来决定那个数据源setTargetDataSources(Ma...原创 2019-06-29 20:40:01 · 2698 阅读 · 1 评论