
Java
文章平均质量分 71
TaiSung
Good developers who are familiar with the entire stack know how to make life easier for those around them.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
for循环中的条件执行循序
问题:public class Main { public static void main(String[] args) { int i,n,length = 0; for(i=1;length< 5;i++){ length += (int)Math.log10((double)i) + 1; System.out.println(i原创 2013-08-10 15:39:59 · 935 阅读 · 0 评论 -
【单例深思】静态内部类实现详解
静态内部类实现是我个人比较推荐的,其实现如下:public class Singleton { private static class SingletonHolder { private static final Singleton INSTANCE = new Singleton(); } private Singleton()原创 2017-04-12 17:28:26 · 1894 阅读 · 2 评论 -
Spring AOP 演化过程(二):基于代理的经典Spring AOP
Spring的经典AOP编程模型在现在看来已经过时,如果有人在写代码的时候还使用这种方式实现AOP,那真是跟自己过不去。但是如果我们想要读Spring AOP 部分的源码时,如果仅仅了解声明式AOP和基于注解的AOP,那经典的AOP模型所使用的类会给我们带来疑惑,所以,还是简单了解一下Spring AOP的历史,重温一下经典。Spring经典的AOP因为直接使用 Proxy原创 2017-04-05 21:55:47 · 895 阅读 · 0 评论 -
【单例深思】单例与序列化
在前面的文章中提到,序列化会破坏单例模式,下面用静态内部类的实现方式,说明序列化对单例的影响:public class Singleton implements Serializable{ private static class SingletonHolder { private static final Singleton INSTANCE = ne原创 2017-04-25 17:21:09 · 1296 阅读 · 0 评论 -
【单例深思】枚举实现单例原理
单例的枚举实现在《Effective Java》中有提到,因为其功能完整、使用简洁、无偿地提供了序列化机制、在面对复杂的序列化或者反射攻击时仍然可以绝对防止多次实例化等优点,单元素的枚举类型被作者认为是实现Singleton的最佳方法。其实现非常简单,如下:public enum Singleton { INSTANCE; private Singl原创 2017-04-26 20:49:58 · 18498 阅读 · 9 评论 -
JDK 8 HashMap 源码解析
【本文是为了梳理知识的总结性文章,总结了一些自认为相关的重要知识点,只为巩固记忆以及技术交流,忘批评指正。其中参考了很多前辈的文章,包括图片也是引用,如有冒犯,侵删。】目录0存储结构1 类定义2静态常量3 属性4构造函数5 链表节点6 功能方法确定哈希桶数组索引位置hash扰动函数计算方法取模运算优化7 常用方法get方法put方法...原创 2019-04-08 22:34:24 · 643 阅读 · 0 评论 -
JDK 8 LinkedList 源码解析
【本文是为了梳理知识的总结性文章,总结了一些自认为相关的重要知识点,只为巩固记忆以及技术交流,忘批评指正。其中参考了很多前辈的文章,包括图片也是引用,如有冒犯,侵删。】0存储结构从底层实现来看,LinkedList是链表实现的,其本质是双向链表。与ArrayList相比,LinkedList的插入和删除速度更快,但是随机访问速度则很慢。LinkedList的优点在于可以将零散的内存单元通...原创 2019-04-15 22:05:48 · 755 阅读 · 0 评论 -
JDK 8 ArrayList 源码解析
【本文是为了梳理知识的总结性文章,总结了一些自认为相关的重要知识点,只为巩固记忆以及技术交流,忘批评指正。其中参考了很多前辈的文章,包括图片也是引用,如有冒犯,侵删。】0存储结构从底层实现来看,Array是数组实现的,与数组不同的是,其容量是可以改变的。集合扩容的时候会创建更大的数组空间,把原有数据复制到新数组中。ArrayList支持对元素的快速随机访问,但是插入和删除时速度通常很慢...原创 2019-04-12 21:59:28 · 1987 阅读 · 0 评论 -
JDK 8 HashSet 源码解析
【本文是为了梳理知识的总结性文章,总结了一些自认为相关的重要知识点,只为巩固记忆以及技术交流,忘批评指正。其中参考了很多前辈的文章,包括图片也是引用,如有冒犯,侵删。】0存储结构从底层实现来看,HashSet调用了HashMap来存储元素,不过之用到了Key,Value则用一个固定对象替代。由于Map中的key是不可重复的,这和Set不存在重复元素的特点刚好契合。使用HashMap也意...原创 2019-04-16 21:00:54 · 416 阅读 · 0 评论 -
JDK 8 TreeMap 源码解析
【本文是为了梳理知识的总结性文章,总结了一些自认为相关的重要知识点,只为巩固记忆以及技术交流,忘批评指正。其中参考了很多前辈的文章,包括图片也是引用,如有冒犯,侵删。】0存储结构TreeMap是一个有序的Map,内部按照Key的排序结果来组织。一般如果没有需要排序的情况下,我们都使用HashMap或者多线程下使用ConcurrentHashMap,因为TreeMap的插入和删除的效率没...原创 2019-04-22 22:43:16 · 536 阅读 · 0 评论 -
Java new 背着我们干了什么
new是 Java 最常用的关键字之一,我们使用new创建对象。我们经常像下面代码一样创建一个对象:Dogdog=newDog();只需一行代码,我们就能创建出一只狗,是不是很简单!为什么这么简单?答:不简单就没人用。Java 作为面向对象语言,提倡封装,如果自己的语法设计都做不到,那还怎么要求程序员们做到。创建对象这么常用而且模板化的操作,如...原创 2017-04-27 12:14:09 · 1123 阅读 · 1 评论 -
JDK 8 ConcrrentHashMap 源码解析
【本文是为了梳理知识的总结性文章,总结了一些自认为相关的重要知识点,只为巩固记忆以及技术交流,忘批评指正。其中参考了很多前辈的文章,包括图片也是引用,如有冒犯,侵删。】0存储结构从底层实现来看,ConcurrentHashMap和HashMap一样都是数组+链表+红黑树(JDK1.8为了优化链表查询性能新增红黑树)实现的。1 类定义public class Concu...原创 2019-05-05 21:51:35 · 1630 阅读 · 1 评论 -
Java 集合常见面试题
1、ArrayList和LinkedList区别?ArrayList是容量可以改变的非线程安全集合。内部实现使用数组进行存储,集合扩容时会创建更大的数组空间,把原有数据复制到新数组中。ArrayList支持对元素的快速随机访问,但是插入与删除时速度通常很慢,因为这个过程很有可能需要移动其他元素。LinkedList的本质是双向链表。与ArrayList相比,LinkedList的插入和删除...原创 2019-05-19 16:47:21 · 879 阅读 · 0 评论 -
不可不说的Java“锁”事
转自美团技术团队:https://tech.meituan.com/2018/11/15/java-lock.html前言Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8和Netty 3.10.6)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一...转载 2019-06-12 22:41:28 · 403 阅读 · 0 评论 -
【单例深思】双重检测锁与Java内存模型
双重检测锁 使用粒度较小的锁(缩小锁的范围)解决了 懒汉式改进版 中存在的性能问题,以提高并发量。双重检测锁实现如下:public class Singleton { // 1 private static Singleton singleton; // 2 private S原创 2017-04-12 16:11:06 · 962 阅读 · 0 评论 -
【单例深思】饿汉式与类加载
我们知道饿汉式的实现是线程安全的,没有延迟加载(Lazy Loading),下面我们深入研究下为什么。饿汉式的实现如下:public class Singleton { private static Singleton singleton = new Singleton(); private Singleton() {} public st原创 2017-04-08 15:10:55 · 4405 阅读 · 0 评论 -
Java程序打包成exe可执行文件
前言:我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同。其实将java程序打包成exe也需要这个可执行jar文件。准备:eclipse、exe4j(网上有软件和帐号下载)第一步,将java项目打包成可执行jar文件,首先看一下我的java project结构,Main.java是程序入口类,里面有main函数,co转载 2013-08-26 20:36:12 · 1147 阅读 · 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.com/technetwork/java/javase/jdbc/index.html)Eclips原创 2013-08-26 17:41:15 · 1204 阅读 · 0 评论 -
Java中读取输入方式的性能比较
程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这种情况我们就束手无策,请你看以下三种解决方法吧:使用System.out.read()从控制台接收一个字符,只能针对一个字符的获取,同时,获取进来的变量的类型只能是char,当我们输入一个原创 2014-01-21 22:46:43 · 788 阅读 · 0 评论 -
StringBuilder、StringBuffer、String区别
相信大家对 String 和 StringBuffer 的区别也已经很了解了,但是估计还是会有很多同志对这两个类的工作原理有些不清楚的地方,今天重新把这个概念给大家复习一下,顺便牵出 J2SE 5.0 里面带来的一个新的字符操作的类—— StringBuilder (先别忙着扔我砖头,我还算清醒,我这里说的不是 C #, Java 也有 StringBuilder 类)。那么这个 String转载 2014-03-17 14:43:30 · 702 阅读 · 0 评论 -
微笔记--为数组重用时,为重新赋值和重新为数组分配空间的差别
以Poj 3356为例子,比较下面两种写法的差别:import java.util.Scanner;public class Main { //数组初始分配 static int[][] dp=new int[1001][1001]; public static int count(String s,int sB,int sE,String t,int tB,int tE){原创 2014-02-28 10:34:42 · 1067 阅读 · 0 评论 -
java--序列化及其算法透析
本文来自longdick的博客:《Java序列化算法透析》有关Java对象的序列化和反序列化也算是Java基础的一部分,下面对Java序列化的机制和原理进行一些介绍。Java序列化算法透析Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。Java序列化API提供一种处理对象序列化的标准机制。在这里你转载 2013-07-04 15:48:06 · 675 阅读 · 0 评论 -
字符串相似度的几种衡量标准
比较字符串之间的相似度有很多的方法,实际上也确实已经出现了很多相似度的定义。最简单的一种,就是一个字符串是另外一个字符串的字串,那么可以说它们是相似的。常见的题型就是求字串,这种用S1.contain(String S2)就可以判断。很多时候S1和S2都不是对方的字串,我们还可以这样来定义相似性:如果将一个串转换为另一个串的操作很少,那么我们可以说两个串是相似的。例子有Poj 3356用递原创 2014-02-28 11:35:45 · 1837 阅读 · 0 评论 -
Java精度计算与舍入
用到的类: 类 BigDecimal:不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是(unscaledValue × 10-scal原创 2013-07-05 12:06:34 · 739 阅读 · 0 评论 -
TIJ摘要:访问控制权限
重构的原动力之一:发现有更好的方式去实现相同的功能。OOP需要考虑的基本问题:如何把变动的事物与不变的事物区分开来。访问控制权限:以供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的。访问控制的等级,从最大权限到最小权限依次为:public、protected、包访问权限和private。由于名字之间的潜在冲突,在Java中对名称空间进行完全控制并为每个类创建唯一的标识符就成了非常重原创 2015-04-03 10:31:43 · 519 阅读 · 0 评论 -
Java基础知识复习(一)
- JVM内存区域程序计数器:一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的。Java虚拟机栈:Java方法执行的内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的。本地方法栈:与虚拟机栈所发挥的作用非常类似,它们的区别是,虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则为虚拟机使用到的Native方法服务。方法原创 2015-05-06 09:57:06 · 592 阅读 · 0 评论 -
Java基础知识复习(二)
Java 重写(Override)与重载(Overload)重写是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。在面向对象原则里,重写意味着可以重写任何现有方法。方法重写的规则参数列表必须完全与被重写方法的相同;返回类型必须完全与被重写方法的返回类型相原创 2015-05-06 11:04:26 · 667 阅读 · 0 评论 -
【单例深思】懒汉式改进版与内置锁
我们知道懒汉式的实现是延迟加载(Lazy Loading),但是不是线程安全的,下面我们深入研究下为什么。懒汉式的实现如下:public class Singleton { private static Singleton singleton; private Singleton(){} public s原创 2017-04-08 16:46:29 · 1394 阅读 · 1 评论 -
【单例深思】Java 单例模式全解
什么是单例模式?单例模式 是一种对象创建模式,它用于产生一个对象的具体实例,它可以确保系统中一个类只产生一个实例,并提供一个访问它的全局访问点。单例模式的用途?用于创建只需要一个实例的场景。怎么实现单例模式?单例模式的实现中有几个共同特点:使用 private 声明类构造函数,这样就不能通过new 声明这个原创 2017-04-07 17:05:19 · 762 阅读 · 0 评论 -
Java 常量池总结
【本文是为了梳理知识的总结性文章,总结了一些自认为相关的重要知识点,只为巩固记忆以及技术交流,忘批评指正。其中参考了很多前辈的文章,包括图片也是引用,如有冒犯,侵删。】对于Java中的常量池,一直有点困惑,看完网上的一些相关博客后,也似懂非懂,于是自己总结一下。关于常量池带着以下几个问题来逐步解答。1什么是常量池?常量池毫无疑问是用来存放常量的,那么那些是常量呢?常量池主要用于存...原创 2019-07-18 17:11:25 · 390 阅读 · 0 评论