![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
wangxiang1292
这个作者很懒,什么都没留下…
展开
-
设计模式之工厂模式(factory pattern)
工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建,是一种创建型模式。本文从一个具体的例子逐步深入分析,来体会三种工厂模式的应用场景和利弊。1. 简单工厂模式该模式对对象创建管理方式最为简单,因为其仅仅简单的对不同类对象的创建进行了一层薄薄的封装。该模式通过向工厂传递类型来指定要创建的对象,其UML类图如下:下面我们使用手机生产来讲解该模式:Phone类:手机标准规范转载 2020-09-27 16:23:50 · 149 阅读 · 0 评论 -
JAVA中的static关键字(静态变量和成员变量)
static的特点: 1.static是一个修饰符,用于修饰成员; 2.static修饰的成员被所有的对象所共享; 3.static优先于对象存在,因为static的成员随着类的加载就已经存在了; 4.static修饰的成员多了一种调用方式,就可以直接被类名所调用。(类名.静态成员) 5.static修饰的数据是共享数据,对象中存储的是特有数据;举例:教室里有一台饮水机和50名学生,每个学生都有自带水杯。 这台饮水机就可以用static修饰,优先于水杯这个原创 2020-05-14 16:12:56 · 1070 阅读 · 0 评论 -
查漏补缺:JVM常见面试题解析
前言总结了JVM一些经典面试题,分享出我自己的解题思路,希望对大家有帮助,有哪里你觉得不正确的话,欢迎指出,后续有空会更新。1.什么情况下会发生栈内存溢出。思路: 描述栈定义,再描述为什么会溢出,再说明一下相关配置参数,OK的话可以给面试官手写是一个栈溢出的demo。我的答案:栈是线程私有的,他的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存储局部变量表,操作数栈...转载 2019-10-20 16:13:03 · 158 阅读 · 0 评论 -
阿里技术手册:为什么覆盖 equals() 一定要覆盖 hashCode()
在每个覆盖了 equals 方法的类中,都必须覆盖 hashCode 方法。如果不这样做的话,就会违反 hashCode 的通用约定,从而导致该类无法结合所有的给予散列的集合一起正常运作。这类集合包括 HashSet、HashMap,下面是Object 的通用规范: 在应用程序的执行期间,只要对象的 equals 方法的比较操作所用到的信息没有被修改,那么同一个对象的多次调用,hashCod...转载 2019-10-17 09:22:13 · 107 阅读 · 0 评论 -
hashmap原理以及扩容
hashmap扩容......................................................................................................................11. equals和hashcode........................................................转载 2019-10-09 10:44:06 · 99 阅读 · 0 评论 -
getHibernateTemplate().update()异常分析与解决(a different object with the same identifier value was alread)
今天在做声讯项目时,为了实现修改记录的功能,在Dao中调用baseDao的updateObject(Object)方法,结果却在运行时抛出:org.hibernate.NonUniqueObjectException 异常。 之前huang sir 在上课的时候有提到过,在update时最好用hql的方式直接对数据库进行修改,否则会发生异常。当时还不太相信,持久层的功能之一就是将程序员从繁杂...转载 2018-07-13 15:31:37 · 491 阅读 · 0 评论 -
Serial,Parallel,CMS,G1四大GC收集器特点小结
1.Serial收集器一个单线程的收集器,在进行垃圾收集时候,必须暂停其他所有的工作线程直到它收集结束。特点:CPU利用率最高,停顿时间即用户等待时间比较长。适用场景:小型应用通过JVM参数-XX:+UseSerialGC可以使用串行垃圾回收器。2.Parallel收集器采用多线程来通过扫描并压缩堆特点:停顿时间短,回收效率高,对吞吐量要求高。转载 2018-01-10 20:20:34 · 184 阅读 · 0 评论 -
Java中数据类型及其之间的转换
Java中数据类型及其之间的转换Java中数据类型及其之间的转换基本的数据类型基本类型有以下四种:1)int长度数据类型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits)、2)float长度数据类型有:单精度(32bitsfloat)、双精度(64bits double),JAVA中将小数默认为double类型,若要定义转载 2018-01-13 18:04:36 · 129 阅读 · 0 评论 -
Java学习 java -- 面向对象
面向对象 在过去学过的C语言当中 我们所用的编程思想是用的面向过程的思想,例如在生活中我们买衣服,首先我们要确定要买的衣服,怎么买 一步一步的罗列出来直至买到衣服这个一系列过程就是面对过程的思想,那么面对对象是什么样地一种思想呢?面向对象就是将这些要想实现的功能找一个可以完成这项功能的对象来实现,简单的说就是例如你买衣服,不用你自己一步一步的操作,只要找到一个帮你买衣服的人就可以了,你转载 2017-12-07 14:40:49 · 173 阅读 · 0 评论 -
同步和异步区别
面试经常问道的题目,上网查了下,很多人长篇大论总是说不到点子上,当然并不是说他们说的不对,可能是自己理解的比较片面。但还是得先概括下:他们最大的区别:同步需要等待,而异步无需等待。例子:普通B/S模式(同步)AJAX技术(异步) 同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干别的事。异步: 请求通过事件触发->服务器处转载 2017-12-06 11:14:57 · 1882 阅读 · 0 评论 -
MyBatis学习总结(一)——MyBatis快速入门
MyBatis学习总结(一)——MyBatis快速入门一、Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,转载 2017-12-22 10:55:40 · 149 阅读 · 0 评论 -
oolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
工作中多处接触到了ThreadPoolExecutor。趁着现在还算空,学习总结一下。 前记: jdk官方文档(javadoc)是学习的最好,最权威的参考。文章分上中下。上篇中主要介绍ThreadPoolExecutor接受任务相关的两方面入参的意义和区别,池大小参数corePoolSize和maximumPoolSize,BlockingQueue选型(Synch转载 2017-12-08 15:12:48 · 177 阅读 · 0 评论