InkGenius

Good developers who are familiar with the entire stack know how to make life easier for those around

【单例深思】枚举实现单例原理

单例的枚举实现在《Effective Java》中有提到,因为其功能完整、使用简洁、无偿地提供了序列化机制、在面对复杂的序列化或者反射攻击时仍然可以绝对防止多次实例化等优点,单元素的枚举类型被作者认为是实现Singleton的最佳方法。 其实现非常简单,如下: public e...

2017-04-26 20:49:58

阅读数:10166

评论数:5

【单例深思】单例与序列化

在前面的文章中提到,序列化会破坏单例模式,下面用静态内部类的实现方式,说明序列化对单例的影响: public class Singleton implements Serializable{     private static class SingletonHolder {  ...

2017-04-25 17:21:09

阅读数:698

评论数:0

【单例深思】静态内部类实现详解

静态内部类实现是我个人比较推荐的,其实现如下: public class Singleton {     private static class SingletonHolder {         private static final Singleton INSTANCE = new ...

2017-04-12 17:28:26

阅读数:780

评论数:0

【单例深思】双重检测锁与Java内存模型

双重检测锁 使用粒度较小的锁(缩小锁的范围)解决了 懒汉式改进版 中存在的性能问题,以提高并发量。 双重检测锁实现如下: public class Singleton {                        // 1     private static Singleto...

2017-04-12 16:11:06

阅读数:373

评论数:0

【单例深思】懒汉式改进版与内置锁

我们知道懒汉式的实现是延迟加载(Lazy Loading),但是不是线程安全的,下面我们深入研究下为什么。 懒汉式的实现如下: public class Singleton {     private static Singleton sing...

2017-04-08 16:46:29

阅读数:391

评论数:0

【单例深思】饿汉式与类加载

我们知道饿汉式的实现是线程安全的,没有延迟加载(Lazy Loading),下面我们深入研究下为什么。 饿汉式的实现如下: public class Singleton {     private static Singleton singleton = new Singleton();...

2017-04-08 15:10:55

阅读数:1269

评论数:0

【单例深思】Java 单例模式全解

什么是单例模式? 单例模式 是一种对象创建模式,它用于产生一个对象的具体实例,它可以确保系统中一个类只产生一个实例,并提供一个访问它的全局访问点。 单例模式的用途? 用于创建只需要一个实例的场景。 怎么实现单例模式? 单例模式的实现中有几个共同特点: 使用 pri...

2017-04-07 17:05:19

阅读数:438

评论数:0

Spring AOP 演化过程(二):基于代理的经典Spring AOP

Spring的经典AOP编程模型在现在看来已经过时,如果有人在写代码的时候还使用这种方式实现AOP,那真是跟自己过不去。但是如果我们想要读Spring AOP 部分的源码时,如果仅仅了解声明式AOP和基于注解的AOP,那经典的AOP模型所使用的类会给我们带来疑惑,所以,还是简单了解一下Sprin...

2017-04-05 21:55:47

阅读数:229

评论数:0

在C#客户端用HTTP上传文件到Java服务器

最近在做C / S 开发,需要在C#客户端上传文件到Java后台进行处理。 对于较大的文件我们可以直接用FTP协议传文件,较小的文件则可以向B / S 一样用HTTP上传。 首先,由于要传文件,我们需要用 POST 来发送数据。GET 有长度限制,而且数据跟在URL后面。 既然要发送PO...

2016-01-16 12:30:41

阅读数:4050

评论数:0

Java基础知识复习(二)

Java 重写(Override)与重载(Overload)重写是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。在面向对象原则里,重写意味着可以重写任何...

2015-05-06 11:04:26

阅读数:432

评论数:0

Java基础知识复习(一)

- JVM内存区域 程序计数器:一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的。 Java虚拟机栈:Java方法执行的内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的。 本地方法栈:与虚拟机栈所发挥的作用非常类似,它们的区别是,虚拟机栈...

2015-05-06 09:57:06

阅读数:362

评论数:0

TIJ摘要:访问控制权限

重构的原动力之一:发现有更好的方式去实现相同的功能。 OOP需要考虑的基本问题:如何把变动的事物与不变的事物区分开来。 访问控制权限:以供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的。访问控制的等级,从最大权限到最小权限依次为:public、protected、包访问权限和priva...

2015-04-03 10:31:43

阅读数:313

评论数:0

StringBuilder、StringBuffer、String区别

相信大家对 String 和 StringBuffer 的区别也已经很了解了,但是估计还是会有很多同志对这两个类的工作原理有些不清楚的地方,今天重新把这个概念给大家复习一下,顺便牵出 J2SE 5.0 里面带来的一个新的字符操作的类—— StringBuilder (先别忙着扔我砖头,我还算清...

2014-03-17 14:43:30

阅读数:508

评论数:0

字符串相似度的几种衡量标准

比较字符串之间的相似度有很多的方法,实际上也确实已经出现了很多相似度的定义。 最简单的一种,就是一个字符串是另外一个字符串的字串,那么可以说它们是相似的。常见的题型就是求字串,这种用S1.contain(String S2)就可以判断。很多时候S1和S2都不是对方的字串,我们还可以这样来定义相似...

2014-02-28 11:35:45

阅读数:1045

评论数:0

微笔记--为数组重用时,为重新赋值和重新为数组分配空间的差别

以Poj 3356为例子,比较下面两种写法的差别: import java.util.Scanner; public class Main { //数组初始分配 static int[][] dp=new int[1001][1001]; public static int co...

2014-02-28 10:34:42

阅读数:690

评论数:0

Java中读取输入方式的性能比较

程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这种情况我们就束手无策,请你看以下三种解决方法吧: 使用System.out.read()...

2014-01-21 22:46:43

阅读数:554

评论数:0

Java程序打包成exe可执行文件

前言: 我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同。其实将java程序打包成exe也需要这个可执行jar文件。 准备: eclipse、exe4j(网上有软件和帐号下载) 第一步,将java项目打包成可执行jar文件,首先看...

2013-08-26 20:36:12

阅读数:787

评论数:0

在Eclipse中用JDBC连接Mysql数据库

一、配置要求 JDK(下载http://www.oracle.com/technetwork/java/javase/downloads/index.html)Mysql(下载http://www.mysql.com/downloads/)JDBC驱动(下载http://www.oracle.c...

2013-08-26 17:41:15

阅读数:727

评论数:0

for循环中的条件执行循序

问题:public class Main { public static void main(String[] args) { int i,n,length = 0; for(i=1;length< 5;i++){ length += (in...

2013-08-10 15:39:59

阅读数:528

评论数:0

Java精度计算与舍入

用到的类:                 类 BigDecimal:不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scal...

2013-07-05 12:06:34

阅读数:480

评论数:0

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