转自:https://blog.csdn.net/jason0539/article/details/23297037/ 概念:单例模式指的是,保证一个类只有一个实例,并且提供一个可以全局访问的入口。java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。 单例模式有以下特点: 单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被 ...
Mybatis动态调用表名和字段名
该篇文章写于2016年10月21日 一直在使用Mybatis这个ORM框架,都是使用mybatis里的一些常用功能。今天在项目开发中有个业务是需要限制各个用户对某些表里的字段查询以及某些字段是否显示,如某张表的某些字段不让用户查询到。这种情况下,就需要构建sql来动态传入表名、字段名了。现在对解决方法进行下总结,希望对遇到同样问题的伙伴有些帮助。 动态SQL是mybatis的强大特性之一,mybatis在对sql语句进行预编译之前,会对sql进行动态解析,解析为一个BoundSql对象,也是在此处对动态sql进行处理。下面让我们先来熟悉下mybatis里#{}与${}的用法。 在动态sql ...
如何招聘程序猿?
本篇文章写于2017年3月14日。虽然写的比较早了,但很多东西依然适用于如今的职场。 近一年技术团队在不断扩充成员,一直忙于高级java工程师、Android工程师、iOS工程师的面试,很想写一篇和招聘程序猿相关的文章,特别是看到“酷壳”里皓哥写的一篇《我是怎么招聘程序员的》文章后,产生很多共鸣。 虽然工作年限还不够长,但也经历过很多大大小小的面试,即被面试过,也面试过很多人。经历过很多很专业的面试,也经历过一些非常BT和令人不怎么舒服的面试。一个好的面试体验,公司的考核流程和面试官就显得非常重要了,如果考核流程非常繁琐,会让面试者内心没有任何好感,如面试时在前台莫名其妙的被晾置一两个小时 ...
Lombok介绍、使用方法和总结
1 Lombok背景介绍官方介绍如下: Project Lombok makes java a spicier language by adding ‘handlers’ that know how to build and compile simple, boilerplate-free, not-quite-java code. 大致意思是Lombok通过增加一些“处理程序”,可以让java变得简洁、快速。 2 Lombok使用方法Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。例如开发中经常需要写的javabean,都需要花时间去添加相应的g ...
Integer和Integer比较以及Integer和Int的比较分析
发现做项目的过程中,在数值类型的比较上容易犯错,特别是Integer和Integer的比较,Integer和int的比较。虽然这些都是些基础语法,但稍不留意就容易犯错,在实际开发过程中如果出现这类失误,很容易失之毫厘谬以千里。在这里,总结下这些基础知识点。 java虽然宣称一切都是对象,但原始数据类型是例外。int是整形数字,是java的9个原始数据类型(Primitive Types)(boolean、byte、short、char、int、float、double、long、void)之一。Integer是int对应的包装类,它有一个int类型的字段存储数据,并且提供了基本操作,比如数学运 ...
1.Apollo本地运行环境搭建
Apollo官方文档的介绍其实已经很详细,出一个Apollo系列主要是对自己学习的一个归纳、源码解读以及踩坑的总结。大家还是以阅读官方文档为主!Apollo系列会分篇介绍环境的搭建、常用场景的配置分析、源码解读等。系列文章均以官方文档为主!!!希望大家能积极讨论,有问题可随时留言,一起学习! 在实际的项目开发中经常会遇到配置信息的场景,常见的有两种配置形式:1.基于本地配置形式(通常有两种做法:将配置信息耦合在业务代码中;将配置信息配置在配置文件);2.适用于大规模分布式场景的集中式配置形式。 本地配置会有非常多的痛点,如修改代码带来的麻烦、修改配置后获取新配置不实时等。集中式配置好处非常 ...
面试官,不要再问我三次握手和四次挥手
三次握手和四次挥手是各个公司常见的考点,也具有一定的水平区分度,也被一些面试官作为热身题。很多小伙伴说这个问题刚开始回答的挺好,但是后面越回答越冒冷汗,最后就歇菜了。 见过比较典型的面试场景是这样的: 面试官:请介绍下三次握手求职者:第一次握手就是客户端给服务器端发送一个报文,第二次就是服务器收到报文之后,会应答一个报文给客户端,第三次握手就是客户端收到报文后再给服务器发送一个报文,三次握手就成功了。面试官:然后呢?求职者:这就是三次握手的过程,很简单的。面试官:。。。。。。(番外篇:一首凉凉送给你) 记住猿人谷一句话:面试时越简单的问题,一般就是隐藏着比较大的坑,一般都是需要将问题扩展的 ...
【面试必备】小伙伴栽在了JVM的内存分配策略。。。
周末有小伙伴留言说上周面试时被问到内存分配策略的问题,但回答的不够理想,小伙伴说之前公号里看过这一块的文章的,当时看时很清楚,也知道各个策略是干嘛的,但面试时脑子里清楚,心里很明白,但嘴里就是说不清楚,说出来的就是像云像雾又像风,最后面试官说他应该是不清楚这一块的内容 这里给小伙伴要再次说明下,任何知识点,先抓主干,再摸细节。对于面试来说,能把各个主干捋清楚,只要面试官要求不是太高,都是能过关的。毕竟jvm参数那么多,难不成面试官揪着各个参数的作用不放?如果真遇到这种太过揪细节的,只能说江湖路远,有缘再见! 对象的内存分配,往大方向上讲,就是在堆上分配(但也可能经过JIT编译后被拆散为标量类型 ...
弄明白CMS和G1,就靠这一篇了
在开始介绍CMS和G1前,我们可以剧透几点: 根据不同分代的特点,收集器可能不同。有些收集器可以同时用于新生代和老年代,而有些时候,则需要分别为新生代或老年代选用合适的收集器。一般来说,新生代收集器的收集频率较高,应选用性能高效的收集器;而老年代收集器收集次数相对较少,对空间较为敏感,应当避免选择基于复制算法的收集器。 在垃圾收集执行的时刻,应用程序需要暂停运行。 可以串行收集,也可以并行收集。 如果能做到并发收集(应用程序不必暂停),那绝对是很妙的事情。 如果收集行为可控,那也是很妙的事情。 CMS和G1作为垃圾收集器里的大杀器,是需要好好弄明白的,而且面试中也经常被问到。 希望大家带着 ...
【JVM从小白学成大佬】6.创建对象及对象的访问定位
《JVM从小白学成大佬》系列推出到现在,收到了很多小伙伴的好评,也收到了一些小伙伴的建议,在此表示感谢。 有几个小伙伴提出了希望出一篇介绍对象的创建及访问,猿人谷向来是没有原则的,小伙们要求啥,咱就尽力满足,毕竟文章就是对自己学习的一个总结及和各位小伙伴交流学习的机会。话不多说,直接开撸! 1 创建对象在Java程序运行过程中无时无刻都有对象被创建出来,java中对象可以采用new或反射或clone或反序列化的方法创建。接下来我们我们介绍在虚拟机中,对象(限于普通Java对象,不包括数组和Class对象等)的创建过程。 字节码new表示创建对象,虚拟机遇到该指令时,从栈顶取得目标对象在常量池中 ...