
JAVA
lzy_tinyjoy
勿在浮沙筑高台
展开
-
LinkedList与ArrayList的区别
我们依然从数据结构的角度看度这个问题。 从命名上可以大致猜出来LinkedList的数据结构为链表,ArrayList的数据结构为数组。能够看到这里它们的区别就一目了然了:它们的区别大致就和数组和链表的区别是一样的。 在在查询和删除操作中数组的速度要优于链表,这是因为数组是按照下标来执行这两个操作的,而链表是靠遍历来执行的这两个操作,而且在删除操作后链表还有很有可能原创 2016-04-28 10:47:13 · 717 阅读 · 0 评论 -
(一)线程------JVM体系结构与内存模型概要
简述: 为了彻底搞清楚线程问题,特写此系列文章记录之。这一些列文章将讲述JVM的体系结构以及涉及线程相关的JVM的运行时数据区来引出Java内存模型,Java通信原理将描述线程间数据通信存在的问题以及线程同步的重要性。Java线程状态讲述线程的基本知识。Java线程锁机制讲述线程同步机制的解决办法。JVM体系结构原创 2017-03-07 15:21:06 · 535 阅读 · 0 评论 -
(三)线程------Java锁机制
简述: 上两节中我们讲述的都是一些理论知识,感觉很枯燥但是又不得不说,从这篇博文开始突然有种“初极狭,才通人。复行数十步,豁然开朗”的感觉。理论指导实践开始吧!开始锁机制之前一定要清楚两件事情:1.锁的对象是谁,2.谁持有了锁。锁的种类:我们先来看一下synchronized锁的种类: 1、对象锁:带有synchronized的同步方法或者带有synchron原创 2017-03-08 14:21:30 · 877 阅读 · 0 评论 -
Java设计模式---代理模式
简述: 代理模式(Proxy Pattern)是GoF 23种Java常用设计模式之一。代理模式的定义:Provide a surrogate or placeholder for another object to controlaccess to it(为其他对象提供一种代理以控制对这个对象的访问)。使用代理模式创建代理对象,让代理对象控制目标对象的访问(目标对象可以是远程的对象原创 2017-02-08 11:43:05 · 598 阅读 · 0 评论 -
一篇文章搞定Java工厂模式
简述: 工厂模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。简单的说,工厂模式能够帮助我们轻松方便地构造对象实例,而不必关心构造对象实例的细节和复杂过程。分类: 工厂模式可以分为简单工厂、工厂方法和抽象工厂。这篇博文一一介绍一下。简单工厂:原创 2017-02-16 11:38:45 · 871 阅读 · 0 评论 -
System.currentTimeMillis()与SystemClock.uptimeMillis()
简述: Android开发中经常会遇到计算时间间隔的场景,Java语言中提供了几种计算时间的方法:System.currentTimeMillis()和SystemClock.uptimeMillis()。那么他们之间有什么区别呢?使用的时候会遇到什么样的“坑”呢?今天梳理一下。分析: 既然是计算时间间隔,那么我们建立模型: intervalTime原创 2016-08-16 18:59:33 · 3127 阅读 · 0 评论 -
(一)JVM内存区划分
简述: 学过C语言的朋友都知道C编译器在划分内存区域的时候经常将管理的区域划分为数据段和代码段,数据段包括堆、栈以及静态数据区。那么在Java语言当中,内存又是如何划分的呢?Java程序执行过程:由于Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。在讨论JVM内存区域划分之前,先来看一下Java程序具体执行的过程:转载 2016-09-17 20:49:04 · 616 阅读 · 0 评论 -
Java内部类详解
说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法。今天我们就来一探究竟。下面是本文的目录大纲: 一.内部类基础 二.深入理解内部类 三.内部类的使用场景和好处 四.常见的与内部类相关的笔试面试题 若有不正之处,请多谅解并欢迎批评指转载 2016-08-22 12:51:15 · 687 阅读 · 0 评论 -
Android观察者模式
相对于书本中大堆大堆的冷冰冰的书面文字,我想先用一个例子表达一下生活中的“观察者模式”,然后在用书面文字给总结一下。(一)生活中的观察者模式实例 现在网购越来越大众化,2015年Tmall双11成交额达到惊人的912.17亿人民币,那么我们就以大众化的网购为例讲述一下Java和Android中的观察者模式。 去年双11期间小王在Tmall买了一双“XXX牌运动鞋原创 2016-01-15 16:54:46 · 1087 阅读 · 0 评论 -
建造者模式
一、建造者模式的概念 建造模式是对象的创建模式。建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。二、产品的内部表象 一个产品常有不同的组成成分作为产品的零件,这些零件有可能是对象,也有可能不是对象,它们通常又叫做产品的内部表象(inter转载 2016-03-10 09:50:23 · 1027 阅读 · 0 评论 -
Vector和ArrayList的区别
我们从Java中的数据结构的角度去分析他们的区别;Vector和ArrayList的数据结构类型均为一维数组,而且是长度可变的一维数组。Vector:①当我们用默认构造函数创建实例的时候: Vector vector = new Vector();从源码中可以看到:调用这个构造方法默认情况下创建的一组数据长度大小为10,刚才说了Vector是可变的一维数组,所以当Vec原创 2016-04-28 10:11:30 · 801 阅读 · 0 评论 -
Hash表结构
1、什么是哈希表? 哈希表(Hash table,也叫散列表),是根据key而直接进行访问的数据结构。也就是说,它通过把key映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 从上述的定义中我们可以得出下列信息: ①“Hash表”本质是一种数据结构。 ② Hash表出现的目的:加快查找的速原创 2016-04-28 11:18:21 · 2244 阅读 · 0 评论 -
ThreadLocal工作原理
ThreadLocal是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据,数据存储以后,只有在指定线程中可以获取到存储的数据,对于其他线程来说则无法获取到数据。在日常的开发中用到ThreadLocal的地方比较少,但是在某些特殊场景中,通过ThreadLocal可以轻松地实现一些看起来复杂的功能。总之,当某些数据是以线程为作用域并且不同线程具有不同的数据副本的时候,可以考虑采用Threa原创 2016-06-23 14:12:06 · 722 阅读 · 0 评论 -
字符串占位符的三种解决方案及其时间性能对比
简述: 最近在做Android性能优化的问题,看到之前在解决API接口问题时使用了占位符,本篇博客就来总结一下目前常用的三种解决方案,然后就三种方案的时间性能做一下对比。字符串占位符的三种方案: 1.使用MessageFormat.format方法 MessageFormat.format方法从 JDK 5 开始支持变参,可以直接用逗号添加参数原创 2016-07-10 18:30:02 · 6064 阅读 · 0 评论 -
线程池
关于Executors.newSingleThreadExecutor()的作用:Executors.newSingleThreadExecutor()返回一个线程池(这个线程池只有一个线程),这个线程池可以在线程死后(或发生异常时)重新启动一个线程来替代原来的线程继续执行下去!原创 2016-07-14 16:22:04 · 727 阅读 · 0 评论 -
Java卫语句
今天看公司的代码规范文档,看到这么一条规则: if语句使用“卫语句 ”减少层级嵌套。一脸的大写的懵逼,“卫语句”是什么东东?赶紧找度妈。卫语句就是把复杂的条件表达式拆分成多个条件表达式,比如一个很复杂的表达式,嵌套了好几层的if - then-else语句,转换为多个if语句,实现它的逻辑,这多条的if语句就是卫语句.简单的例子如下:if(obj != null)原创 2016-07-04 15:20:19 · 48854 阅读 · 14 评论 -
(二)线程------线程通信原理JMM模型
简述: 上一篇文章中我们学习了Java的内存模型,那么现在我们思考一个问题:如果程序中存在多个线程,他们是怎么进行数据通信的呢?OK,带着这个问题我们来学习本节内容---线程通信原理。 本篇博文主要讲解: ① 什么是可见性、原子性、有序性。 ② JMM模型。JMM简介: JMM:Java Memory Model(Ja原创 2017-03-07 15:55:06 · 1300 阅读 · 1 评论