2 ZytheMoon

尚未进行身份认证

努力成为自己想要的人

等级
博文 58
排名 5w+

JDK9新特性

JDK9新特性:1.模块系统2.JShell和Jlink3.不可变集合类工厂方法4.接口中的私有方法5.一些改进的API6.try-with-resources改进7.HTTP2支持8.平台日志API和服务9.垃圾回收器10.增加加密算法一、Java平台...

2019-05-16 18:12:21

Git常用命令总结

一、新建代码库#在当前目录新建一个Git代码库$gitinit#新建一个目录,将其初始化为Git代码库$gitinit[project-name]#下载一个项目和它的整个代码历史$gitclone[url]二、配置Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。#显示当前...

2019-05-14 09:45:54

java多线程什么时候释放锁

由于等待一个锁定线程只有在获得这把锁之后,才能恢复运行,所以让持有锁的线程在不需要锁的时候及时释放锁是很重要的。在以下情况下,持有锁的线程会释放锁:1、当前线程的同步方法、代码块执行结束的时候释放2、当前线程在同步方法、同步代码块中遇到break、return终于该代码块或者方法的时候释放。3、当前线程出现未处理的erro...

2019-05-12 20:52:47

java线程的各种状态

java线程在运行的生命周期中可能处于六种不同的状态,在给定的某一个时刻,线程只能处于其中的一个状态。在程序运行中线程状态的具体含义:线程在自身的生命周期中并不是固定的处于某个状态,而是随着代码的不断执行在不同的状态之间进行切换。(1)NEW:初始状态,线程被创建但是还没有调用start()方法(2)RUNNABLE:运行状态,java线程将操作系统中的就绪和运行两...

2019-05-11 15:12:38

java在多线程情况下如何初始化Class对象

java在多线程情况下,初始化一个类或接口的处理过程如下,大致分为5个过程:(1)通过在Class对象上同步获得对象的初始化锁,来控制类或接口的初始化,这个获取锁的线程会一直等待直到当前线程能获得这个初始化锁。当一个Class对象还没有初始化,这个初始化状态被标记为noInitualization,假设有两个线程A和B同时初始化这个Class对象,A、B线程尝试获取Cl...

2019-05-07 21:07:23

关于java内存模型的浅析

首先本篇介绍的是java内存模型而不是java的内存结构,这两个是不同的,很多人将这两个概念搞混。所以就先进行介绍一下java内存结构,这样可以和内存模型有一些区分:java内存结构由Java虚拟机规范定义。描述的是Java程序执行过程中,由JVM管理的不同数据区域。各个区域有其特定的功能。如下:1、以上是Java虚拟机规范...

2019-05-06 18:12:57

java的双重检查锁定详解

双重检查锁定模式(也被称为"双重检查加锁优化","锁暗示"(Lockhint))是一种软件设计模式用来减少并发系统中竞争和同步的开销。有时候会在单例模式里遇到这个双重检查锁定,这个技术是单例模式的一种具体的实现,通过它来进行单例模式里的延迟初始化,保证在经过延迟初始化之后还是只有一个单例类的实例被创建。java程序中可能需要推迟一些高开销的对象初始化操作,只有在使用这些对...

2019-05-04 20:23:02

Java版本:JDK8的十大新特性介绍

JDK8新特性:1.Lambda表达式2.新的日期API3.引入Optional4.使用Base645.接口的默认方法和静态方法6.新增方法引用格式7.新增Stream类8.注解相关的改变9.支持并行(parallel)数组10.对并发类(Concurrency)的扩展。...

2019-04-30 21:11:28

java的Object里wait()实现原理

在进行wait()之前,就代表着需要争夺Synchorized,而Synchronized代码块通过javap生成的字节码中包含monitorenter和monitorexit两个指令。在进如锁的时候会执行monitorenter,执行monitorenter指令可以获取对象的monitor。同时在执行Lock.wait()的时候也必须持有monitor对象。在多核环境下,多个...

2019-04-22 21:10:33

详解Android系统启动是如何启动的

首先对Android的系统启动流程进行一个介绍,这个启动流程是贯穿Android四层架构的过程:一、启动电源以及系统启动:引导芯片代码从固化在ROM上的预定义地方开始执行,加载引导程序BootLoader到RAM然后执行二、引导程序BootLoader:是在Android系统启动前的程序,其主要作用是把系统OS拉起来并运行三、Linux内核启动:在启动时,设置缓...

2019-04-21 20:09:33

java的集合框架浅析:包含的基本接口以及常用类

java集合的根本是Iterator和Collection两个接口。Collection本身代表了集合,拥有最基本的方法:添加、删除、返回个数、清空集合等。而Iterator接口是Collection的父接口主要用来定义遍历集合的规则,被称作迭代器,里面有两个重要方法next()和hashnext()。在java集合里大致可以分为Set、List、Queue、Map四种体系。S...

2019-04-14 20:28:53

Android五层架构

之前写过一篇详细的Android四层架构,但是最近发现Android的架构变为了五层,所以在之前的基础上简单介绍一下五层架构。1.应用层:应用层为系统对用户所提供的应用程序,负责与用户进行直接交互。2.framework应用框架层:向应用开发层开发者提供了统一开发的api,这一层是由java代码编写的,有ActivityManger(活动管理器),LocationManger(位置管理器)...

2019-04-10 12:42:15

Android开发中的dp、px、dpi、sp区别和联系

px:像素,代表屏幕上的像素点。dp:一个基于屏幕密度的抽象单位,如果一个160dpi的屏幕即标准屏幕,那么1dp=1px。长度宽度的数值要使用dp作为单位放入dimens.xml文件中,当dp不能作为适配单位时,就需要使用px。dip:等同于dp。dpi:一英寸长的直线上的像素点的数量来评价屏幕的显示效果,即像素密度。不同的设备,dpi值不同,显示效果不同,dpi的值...

2019-04-02 20:25:14

HashMap、Hashtable以及ConcurrentHashMap的区别及原理

HashTable产生于JDK1.1,HashMap产生于JDK1.2,主要的区别有:1.线程安全2.处理速度3.使用迭代器不同4.输入参数不同5.扩充容量的大小方式不同6.计算hash以及index的方式不同。1.线程安全之间的区别HashMap是非synchronized的,所以不能保证随着时间的推移Map中的元素次序是不变的,因为采用链表的方式来解决的,在对...

2019-03-10 12:10:24

编译原理:词法分析

  在词法分析的过程中还有一个过称是不能少的,就是在分析的时候一次读入多少代码。编译一个程序的时候,往往需要进行大量的字符串读入。前人做了比较多的优化,其中一项就是采用来个交替读入的缓冲区。每个缓冲区大概能有4096的字节,读一句话是足够的。读入程序中维护了两个指针:分别是lexemeBegin指针,顾名思义,就是当前词素的开始处。以及forward指针,就是试图判断词素的结尾是什么。这个...

2019-02-02 00:06:59

java8的流以及流和集合的区别

   集合是一种内存中的数据结构,包含数据结构中目前所有的值,也就是说集合中的值都要先计算好才能够放入集合中,但是流则不同,流是概念上固定的数据结构其元素是按需计算的不能添加或者删除元素,只有在需要的时候才将需要的流计算出来。集合需要提前将值全部准备好而流则是将值准备一部分。   集合和流的一个区别则是遍历数据的方式,使用Collection接口需要用户去进行迭代,也就是在集合...

2019-01-18 17:42:09

关于java内部类为什么能够访问外部类属性详解

  首先解释一下什么是内部类,内部类是定义在一个类内部的类。分为两种情况:一种是被static关键字修饰的,叫做静态内部类,另一种是不被static关键字修饰的,即是普通内部类。在下文中所提到的内部类都是指这种不被static关键字修饰的普通内部类。静态内部类虽然也定义在外部类的里面,但是它只是在形式上(写法上)和外部类有关系,其实在逻辑上和外部类并没有直接的关系。而一般的内部类...

2018-12-24 18:38:34

HTML中的标签对照表

<!--...--> 定义注释 <!DOCTYPE> 定义文档类型 <a> 定义超文本链接 <abbr> 定义缩写 <acronym> 定义只...

2018-12-24 11:02:24

使用IDEA创建java ee项目

 

2018-12-22 11:39:50

java的协变性、逆变性、不变性

  先看看官方的解释:协变和逆变都是术语,前者指能够使用比原始指定的派生类型的派生程度更大(更具体的)的类型,后者指能够使用比原始指定的派生类型的派生程度更小(不太具体的)的类型。协变和逆变是指宽类型和窄类型在某种情况下(如参数、泛型、返回值)替换或交换的特性。   简单地说A和B是类型,f表示类型转换,≤表示子类型关系:  协变:你可以用一个子类对象去替换相应的一个父类...

2018-12-14 15:09:53
奖章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周上午根据用户上周的博文发布情况由系统自动颁发。