Java
头发不会掉
这个作者很懒,什么都没留下…
展开
-
执行构造函数时内存的变化 和 equal也是比较hashcode为什么却值相同就是true
栈帧(操作数栈,局部变量表,动态链接,返回地址)这四部分组成,每一个方法对应一个栈帧,栈帧之间压栈出栈,程序计数器只会在栈顶的栈帧运行,操作数栈的指令也是按照压栈出栈来执行的(后缀表达式执行)。无论是堆上的还是栈上的,基本上归根到底都是由8种元数据组成,布尔,数值,字符char等,具体这些数据是在那里放着,**由你声明的地方决定,**看下面代码public class Test { p...原创 2020-04-24 18:19:07 · 189 阅读 · 0 评论 -
从对象头的两个字宽解析对象的4种状态,锁信息,分代信息 和分析锁升级的过程
什么是元数据:解析数据的数据叫元数据,Java里面有4种类型的元数据,类,接口,枚举,注解,对象的元数据,就是处于方法区的类型对象信息什么是CAS指令:CAS (Compare And Swap) 指令是一个CPU层级的原子性操作指令,Lock接口底层实现不是通过synchronized实现的lock的实现完全是由java写的,和操作系统或者是JVM虚拟机没有任何关系。整体来看Lock主...原创 2020-02-12 18:40:27 · 363 阅读 · 0 评论 -
hashMap扩充机制总结
了解基本的概念和术语:数组链表结合体:每一个hashMap都是一个数组链表结合体,每一个数组的元素是一条链表桶:约定数组的每一个格元素称为桶bin:约定桶后面存放的每一个数据称为binsize:表示HashMap中存放KV的数量(为链表和树中的KV的总和)。这个size不可能大于capcity,因为一旦大于阈值就扩充resizecapcity:指HashMap中桶的数量。默认值为16。一...原创 2019-11-19 13:48:20 · 1209 阅读 · 0 评论 -
一张图看懂IO类之间的关系
四大基类Java的IO包下的IO流分为两种:输出流和输入流,每一种流根据它操作的对象(字符或者字节)的不同分为字节流和字符流:就有了4种:字节输出流OutputStream,字节输入流InputStream,字符输出流Writer,字符输入流Reader。。。FIle类于IO类无关File类代表与平台无关的文件和目录,他可以操作文件或目录,比如 File能新建、删除、重命名文件和目录,Fi...原创 2019-11-11 18:23:47 · 337 阅读 · 0 评论 -
三种动态代理和三种工厂模式,单例模式
工厂模式:一种把创造(实例化)各种类类对象的工作抽出来的思想简单的工厂模式:也叫静态的工厂模式,因为这个工厂类就办一件事创建实例化对象,方法可以定为static类型;工厂方法模式:把实例化类的工作抽象成一个抽象方法,让实现这个抽象方法的类来完成实例化的工作,抽象工厂模式:把实例化对象的工作抽象成一个接口,让实现这个接口的类去完成实例化工作:代理:一句话说完,把调用某个类方法的工作(办...原创 2019-11-06 21:21:42 · 853 阅读 · 0 评论 -
设计模式从接口和抽象类出发和自动装配
在程序设计的时候一定要注重“思考”和实现两个过程,这是两个阶段,先思考再去实现,可以让思路更加的清晰,开发起来更有条理,列举出有哪几个模块哪几个方法(传什么给你,返回给我什么),接口与抽象类是面向对象思想的两个重要概念。接口仅是方法定义和常量值定义的集合,方法没有函数体;抽象类定义的内容理论上比接口中的内容要多得多,可定义普通类所包含的所有内容,还可定义抽象方法,这也正是叫作抽象类的原因所在。接...原创 2019-11-01 14:03:09 · 339 阅读 · 0 评论 -
创建了和初始化的区别以及涉及到的符号引用
创建了就是在Java堆上分配了内存,但是这被划出来的内存没有被初始化,也就是全部为0,初始化就是给这被划出来的内存赋值为0或者1;看一段代码,一个类的数组,如果每一个数组里的元素是一个类,只是简单的一句new 类名[10];而没有初始化里面的每一个元素绝对报空指针异常;但是为什么给每一个元素new之后就没有报错了呢,????new 类名[10],并不是创建了10个这样子类对象实例的空间,而只是创...原创 2019-10-23 18:05:02 · 626 阅读 · 0 评论 -
Dalvik虚拟机 和理解jdk和Android SDK的区别
Dalvik虚拟机是安卓操作系统执行java语言开发应用的的基础,就好像window10要执行java程序一样要hotspot虚拟机,每一个app应用程序在其运行进程中都有一个独立的Dalvik虚拟机实例,主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能Dalvik虚拟机和jvm虚拟机的区别Dalvik 基于寄存器,而 JVM 基于栈。基于寄存器的虚...原创 2019-10-22 11:10:47 · 335 阅读 · 0 评论 -
套接字socket的理解
首先必须理解TCP的的11种状态,三次握手的作用,四次挥手的作用,为什么要有TCP,那就是HTTP的弊端,HTTP是一个释放连接的的的协议,是在应用层,其实它底层也是新建了TCP协议的来进行传输,只是短暂的任务完成即刻断开了,那么它底层的TCP也是断开的,当请求次数特别频繁时就有弊端,比如说聊天,实时信息。。。其次就是要了解端口和端点的区别,端点也可以理解为一个插口,是用TCP协议连接起来的两个...原创 2019-10-16 11:38:27 · 389 阅读 · 0 评论 -
用内存模型解析一下线程同步 (.wait()函数和.nottify()函数和synchronized关键字)
什么是内存模型??public class Thread_Wait_Notify_02 implements Runnable{ private String name; private Object pre; private Object self; private Object ne; public Thread_Wait_Notify_02(S...原创 2019-10-10 16:51:19 · 219 阅读 · 0 评论 -
Java高并发effective
用户线程(User Thread)和守护线程(Daemon Thread)Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程)用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆:只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。Daemo...原创 2019-10-07 18:05:29 · 133 阅读 · 0 评论 -
java日常记录
双冒号:类名::方法名注意是方法名哦,后面没有括号“()”哒。为啥不要括号,因为这样的是式子并不代表一定会调用这个方法。这种式子一般是用作Lambda表达式,Lambda有所谓懒加载嘛,不要括号就是说,看情况调用方法。例如表达式:person -> person.getAge();可以替换成Person::getAge表达式() -> new HashMap<&...原创 2019-09-08 20:00:00 · 194 阅读 · 0 评论 -
多线程编程
线程与进程的概念进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1–n个线程。(进程是资源分配的最小单位)线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。(线程是cpu调度的最小单位)线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。多进程是指操作系统能同时运行多个任务(程序)。多线程是...原创 2019-09-07 21:43:53 · 114 阅读 · 0 评论 -
java反射机制
JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制功能在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。一句话,反射机制的优点就是...原创 2019-09-07 15:44:52 · 68 阅读 · 0 评论 -
Java的default关键字作用
java 8之后增加的新特性default关键字1.一个接口,method方法在使用关键字default后可以有方法体了。public interface Default01 { default public void method(){ System.out.println("method in interface"); } default p...原创 2019-09-06 20:33:10 · 4115 阅读 · 0 评论