Java
文章平均质量分 52
mingC0758
技术沉淀中..
展开
-
Java fori和foreach的性能差别
概述fori和foreach的根本区别在于fori是通过下标访问foreach是通过容器的itrator的next()方法来迭代ArrayList:fori性能高于foreach因为使用fori,是通过下标访问:public E get(int index) { if (index < 0 || index >= this.size) ...原创 2018-07-01 00:48:43 · 5930 阅读 · 0 评论 -
【转】Java内存屏障和可见性
Java内存屏障和可见性引言在多线程编程中,有的时候会看见如下的代码public class task{private boolean success;public void getResult(){ while(success=...转载 2018-09-10 12:22:25 · 350 阅读 · 0 评论 -
Java算术右移和逻辑右移
>> 是算术右移运算符,算术右移左边空位补上符号位 >>> 是逻辑右移,也叫无符号右移,左边空位补0例: -4 >> 1 = -2 -4 >>> 1 = 2147483646负数用补码表示(非符号位取反加一),左边第一位是符号位,1代表负数;当逻辑右移的时候,符号位被0填充,负数变成正数:而算术右移,相当于 -4 /...原创 2018-09-12 22:17:13 · 1005 阅读 · 0 评论 -
Java并发机制和Java中提供的锁介绍
参考https://www.cnblogs.com/dolphin0520/p/3920373.htmlJava中的非阻塞算法 https://blog.csdn.net/lifuxiangcaohui/article/details/8051687并发中的概念并发编程中常遇到的三个问题原子性问题原子性操作是指程序执行的最小单位,也就是一个线程执行该操作时不能...原创 2018-08-17 16:12:47 · 257 阅读 · 0 评论 -
单例模式(懒汉实现和饿汉实现的区别)
单例模式的作用是使某个类在整个应用中只存在一个实例。单例模式分为懒汉模式和饿汉模式:饿汉模式 :从第一次主动调用该类开始就创建实例对象,一直到程序死亡。 懒汉模式 :从第一次调用获取实例的方法的时候才创建对象,一直到程序死亡。饿汉单例模式的实现public class Singleton { //类初始化的时候创建实例对象 private static Sing...原创 2018-08-17 16:10:42 · 1709 阅读 · 1 评论 -
代理模式和装饰者模式区别
静态代理需要手动实现被代理接口的所有方法,而动态代理通过反射可以自动代理接口的所有方法静态代理在编译的时候就生成了代理类的class文件;动态代理在运行的时候动态生成代理类代理模式有很多用途:比如在方法调用前后添加日志;AIDL中就生成了远程接口的代理类,代理类帮助我们实现Binder底层的跨进程通信机制,让客户端用起来跟本地调用一样;日志系统、事务、拦截器、权限控制等。代理的优点:如果我...原创 2018-08-16 01:17:50 · 3819 阅读 · 0 评论 -
Java中finalize()方法的作用
finalize方法是Object提供的的实例方法,使用规则如下:当对象不再被任何对象引用时,GC会调用该对象的finalize()方法finalize()是Object的方法,子类可以覆盖这个方法来做一些系统资源的释放或者数据的清理可以在finalize()让这个对象再次被引用,避免被GC回收;但是最常用的目的还是做cleanupJava不保证这个finalize()一定被执行;但是...原创 2018-08-02 00:42:10 · 15878 阅读 · 3 评论 -
Java设计模式之原型模式
原型模式原型模式是一种创造性设计模式。当一个类需要提供信息给外部,但又不希望外部去修改这个信息;也就是说这个信息对外部来说是只读的,这时候我们可以用原型模式来实现,原型模式很简单,就是当别人获取信息的实体对象时,返回一个深拷贝出来的新对象,这样对新对象的任何修改都不影响原对象。原型模式可以用来做保护性的拷贝.下面是一个登陆用户信息的获取逻辑:public class Login...原创 2018-08-01 10:26:20 · 197 阅读 · 0 评论 -
模版方法模式与实战:编写Android应用崩溃处理工具类
模版方法模式与实战:应用崩溃处理本文主要介绍模版方法模式,以及使用模版方法模式开发一个可扩展的Android应用崩溃处理的工具类。模版方法模式与实战:应用崩溃处理原理和应用实战:应用崩溃处理原理和应用AsyncTaskView的绘制流程 等等。。模版方法模式注重于 - 封装不可变部分,扩展可变部分 - 提取公共部分代码,便于维护比如View...原创 2018-08-05 21:29:21 · 181 阅读 · 0 评论 -
深入理解Java虚拟机——Java虚拟机类加载机制
深入理解Java虚拟机——Java虚拟机类加载机制概述JVM把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可使用的Java类型,这就是虚拟机的类加载机制。在Java语言里,类的加载、连接和初始化过程都是在程序运行期间进行的。Java动态加载的特性使得应用程序可以在运行时从网络上或者别的地方加载二进制流作为程序代码的一部分。类加载时机...原创 2018-07-22 00:51:31 · 379 阅读 · 0 评论 -
Java1.5 Atomic并发原子类
Java1.5 Atomic并发原子类类似AtomicInteger这样的类是Java1.5为了高并发提供的原子类。可见性AtomicInteger的值已经被volatile修饰,具有可见性,也就是value被修改后其他线程马上就可以知道。private volatile int value;这里有一个例外:/** * Eventually sets to the...原创 2018-07-20 21:14:07 · 185 阅读 · 0 评论 -
CopyOnWriteArrayList—支持多线程并发的列表
总结读写分离读写同时进行的时候,读到的是旧数据写(添加、删除)的时候先把原来的容器数据拷贝一份,往拷贝出来的容器中写数据,然后再把原来的引用指向新的容器数据代码读public E get(int index) { return (E) elements[index]; }写(同步)添加: public synch...原创 2018-07-07 04:27:48 · 379 阅读 · 0 评论 -
Java-Exception和Error的区别
Exception和Error的区别继承关系Exception和Error都继承自ThrowableThrowable的描述: * The {@code Throwable} class is the superclass of all errors and * exceptions in the Java language. Only objects that are in...原创 2018-07-07 04:03:20 · 226 阅读 · 0 评论 -
Java内部类的继承关系和构造方法
实验是检验真理的唯一标准。下面我们通过实验来看看Java内部类的继承关系和他们的默认构造方法是怎样的。实验1public class A extends B{ public static void main(String[] args) { Class superClazz = A.class.getSuperclass(); System.out.pri原创 2017-12-17 19:18:31 · 438 阅读 · 0 评论 -
Java虚拟机内存区域分布和字节码简析
Java虚拟机内存区域分布和字节码简析虚拟机内存区域解读字节码文件测试类代码:package com.momingqi;public class Custom { String m1 = "I love you"; String m2 = "I like you"; int i2 = 1024; short i3 = 10; public static final原创 2017-12-26 22:55:44 · 524 阅读 · 0 评论 -
深入理解Java虚拟机——虚拟机字节码执行引擎
深入理解Java虚拟机——虚拟机字节码执行引擎概述解释执行:通过解释器实时将字节码解释执行。编译执行:通过JIT即时编译器产生本地代码执行。Java虚拟机在执行class字节码的时候有解释执行和编译执行两种选择。运行时栈帧结构虚拟机栈是线程私有的,存放着一个个栈帧。栈帧是方法执行时的数据结构,每一个方法的调用和返回都对应着栈帧的入栈和出栈。一个栈帧包括:局部变...原创 2018-07-23 20:25:13 · 391 阅读 · 0 评论 -
Java的局部变量和闭包
Java的局部变量和闭包请看示例代码:public class Test { void test() { final Object object = new Object(); new Thread() { @Override public void run() { ...原创 2018-07-08 01:53:49 · 790 阅读 · 0 评论 -
Java内存模型与线程
线程与内存CPU内存模型: JVM内存模型: Java中线程只能对工作内存进行操作,保证线程中使用到的变量都在工作内存中存在一份拷贝。Java中的主内存主要对应于Java堆中的对象实例部分,而工作内存则对应于虚拟机栈中的部分区域。虚拟机可能会让工作内存优先存储与寄存器和高速缓存中,以获得更高的运行速度。内存交互lock指令,将主内存的变量标志为线程独占的状态。...原创 2018-09-10 14:23:47 · 154 阅读 · 0 评论