设计一个类,我们只能生成该类的一个实例。
这是一道很简单也很基础的设计模式题,对不对?但是要真的在各种条件下完美的实现Singleton模式,却是需要一点思考的。
以前我在实习的时候,每次遇到需要用到单例来写一个处理器线程的时候,使用的都是最简单的单例实现模式,由我自己在代码中人为保证代码只会被调用一次。今天正好有机会,系统地学习一下如何正确地实现单例模式
Good Good Study, Day Day Up
设计一个类,我们只能生成该类的一个实例。
这是一道很简单也很基础的设计模式题,对不对?但是要真的在各种条件下完美的实现Singleton模式,却是需要一点思考的。
以前我在实习的时候,每次遇到需要用到单例来写一个处理器线程的时候,使用的都是最简单的单例实现模式,由我自己在代码中人为保证代码只会被调用一次。今天正好有机会,系统地学习一下如何正确地实现单例模式
hashcode()和equals()都继承于Object,并且Object都提供了默认实现,具体可以参考Java根类Object的方法说明。关于Java中HashMap的相关原理可以参考前面的两篇文章,HashMap源码阅读和HashMap为什么线程不安全。
在实际使用中,如果HashMap中的key是自定义的类,一般我们都会重写hashcode()和equals(),这是为什么呢??
前几天看到蚂蚁开源的sofa框架,其中提供了应用关闭后的回调方法,看了原理之后发现是利用了JAVA虚拟机关闭钩子(Shutdown Hook)来实现的。
Java程序经常也会遇到进程挂掉的情况,一些状态没有正确的保存下来,这时候就需要在JVM关掉的时候执行一些清理现场的代码。JAVA中的ShutdownHook提供了比较好的方案。
今天被问到一道题目,如何实现多个线程同时进行,谷歌之,发现网上有篇文章提到可以用wait和notifyall来实现,想着以前看过wait和notify的区别,今天正好有机会来看下notifyall。
本文记录了notify和notifyAll的区别和相同,以便不时之时查阅。
这周在写代码的时候,由于配置了IDE的快捷提示,一不留神使用了ConcurrentReferenceHashMap这个新奇的类,虽然不会引发什么bug,但是还是在CR的时候被师兄发现了。
本文就来探讨一下ConcurrentReferenceHashMap这个map具体是什么类。
工作所需,我这个后端程序猿又开始操起我那半吊子的前端技术,开始写前端。这次在实现前端页面逻辑的时候,碰到了一个JS深拷贝的问题。原先默认都是浅拷贝,或者是第一层深拷贝,但是到里面的嵌套对象就是浅拷贝了。踩了这个坑之后,遂记录本文以供后续参考。
本文重点介绍JS中如何实现深拷贝,避免在实际开发中踩坑。当然,考虑到部分同学对深拷贝和浅拷贝的概念可能不太熟,我们也会先介绍一下深拷贝和浅拷贝的原理。
MySQL 3种text类型的最大长度如下:
TEXT:65,535 bytes ~64kb
MEDIUMTEXT:16,777,215 bytes ~16Mb
LONGTEXT:4,294,967,295 bytes ~4Gb
一提起“分布式系统”,大家的第一感觉就是好高大上啊,深不可测,看各类大牛关于分布式系统的演讲或者书籍,也大多是一脸懵逼。本文期望用浅显易懂的大白话来就什么是分布式系统、分布式系统有哪些优势、分布式系统会面临哪里挑战、如何来设计分布式等方面的话题来展开讨论。
之前上软件测试课的时候,曾经听闻某些同学在考试的时候使用黑科技,直接通过反射的方式直接调用private方法,提高测试用例覆盖率。当时只是觉得这个好高大上,但是也没在意去学习一下。因为类私有方法只允许被本类访问,而其他类无权调用,我只要通过给其他public的方法写好测试用例就行了。
然鹅,前几天公司的研发流程中需要变更行覆盖率达到一定程度,可是由于逻辑太复杂的,导致部分private方法很难被覆盖到。时间不多了,只能出绝招了——通过Junit测试私有方法。