
java基础
代码和我有一个能跑就行了
代码和我有一个能跑就行了
展开
-
JAVA NIO
1. JAVA NIONIO主要有三大核心部分:Channel(通道),Buffer(缓冲区),Selector。传统IO基于字节流和字符流,而NIO基于Channel和Buffer进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入通道中。selecttor(选择区)用于监听多个通道的事件(比如连接打开,数据到达)。因此,单个线程可以监听多个数据通道。...原创 2020-09-26 22:30:14 · 223 阅读 · 0 评论 -
Java IO 模型
1.阻塞IO模型最传统的IO模型,即在读写数据的过程中会发生阻塞现象。当用户线程发出IO请求后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线程交出cpu。当数据就绪之后,内核会将数据拷贝到用户线程,并返回结果给用户线程,用户线程才会解除block状态。典型的例子是:data = socket.read();如果没有数据就绪,就会一直阻塞read方法。2.非阻塞IO模型当用户线程发起一个rea操作后,并不需要等待,而是马上就得到一个结果。如果结果是error原创 2020-09-24 22:40:46 · 135 阅读 · 0 评论 -
JVM垃圾回收与算法
垃圾回收与算法1.如何确定需要回收的垃圾引用计数算法在java中,引用和对象是关联的。如果要操作对象则必须用引用进行。因此,很显然一个简单的办法就是通过引用计数来判断一个对象是否可以回收。简单说,即一个对象如果没有任何与之关联的引用,即他们的引用计数都不为0,则说明对象不太可能再被用到,那么这个对象就是可回收的对象。可达性分析为了解决引用计数法的循环引用的问题,java使用了可达性分析的办法。通过一系列的“GC roots” 对象作为起点搜索。如果在GC root和一个对象之间没有可达路径,则原创 2020-09-22 23:18:24 · 164 阅读 · 0 评论 -
Java基础复习
JVMJVM是一个抽象的计算机,和实际的计算机一样,它具有指令集并使用不同的存储区域。它负责执行指令,还有管理数据,内存,寄存器。JVM分为向上和向下两个部分,所有平台上的JVM向上提供Java字节码程序的接口完全相同,但是向下不同平台的接口完全不同。GC垃圾回收算法一般要做两件基本的事情,发现无用的对象;回收被无用对象占用的内存空间,是该空间可程序再次使用。一般具有如下几个特点垃圾回收...原创 2019-06-30 22:29:59 · 115 阅读 · 0 评论 -
抽象类(abstract class)和接口(interface)有什么异同
不同:抽象类:1.抽象类中可以定义构造器2.可以有抽象方法和具体方法3.接口中的成员全都是 public 的4.抽象类中可以定义成员变量5.有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法6.抽象类中可以包含静态方法7.一个类只能继承一个抽象类接口:1.接口中不能定义构造器2.方法全部都是抽象方法3.抽象类中的成员可以是 private、默认、protected、...原创 2019-01-17 11:27:55 · 245 阅读 · 0 评论 -
重载(overload)和重写(override)的区别?重载的方法能否根据返回类型 进行区分?
方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求。...原创 2019-01-16 19:42:16 · 145 阅读 · 0 评论 -
& 和 && 的区别
&运算符有两种用法:(1)按位与;(2)逻辑与。&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true 整个表达式的值才是 true。&&之所以称为短路运算是因为,如果&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。很多时候我们可能都需要用&&...原创 2019-01-16 19:40:42 · 169 阅读 · 0 评论 -
JVM总结
JVM执行流程.java文件被编译为.class文件加载.class文件(类加载器)管理分配内存执行垃圾收集JVM的声明周期JVM实例对应了一个独立运行的java程序它是进程级别的启动,启动一个java程序时,一个JVM实例就产生了,任何一个用户public static void main的函数的class都可以作为JVM实例的运行起点运行,main()作为该程序初始线程...原创 2019-01-20 11:46:35 · 131 阅读 · 0 评论 -
IO流总结
IO的类型按字节流和字符流划分字节流又分为:字节输入流,字节输出流字节输入流:1. 文件操作流:FileInputStream2. 高效缓冲流:BufferdInputStream3. 对象操作流(序列化流和反序列)ObjectInputStream:字节输出流:1. 文件操作流:FileOutputStream2. 高效缓冲流:BufferdOutputStream3. 对象...原创 2019-01-20 09:15:08 · 135 阅读 · 0 评论 -
集合总结
L特点ist的三个子类的:ArrayList 底层结构是数组,底层查询快,增删慢;LinkedList 底层结构是链表型的,增删慢,查询快;vector 底层数组,线程安全的,增删慢,查询吗。List和Map,Set的区别一, 结构特点list和set是存储单列数据的集合,Map是存储键和值这样的双列数据集合;list中存储的数据是由顺序,并且运行重复;Map中存储的数据是没有顺序的,...原创 2019-01-19 16:32:51 · 289 阅读 · 0 评论 -
Java面向对象 面向对象都有哪些特性?
1) 继承: 继承都是从已有的类得到继承信息创建新的类的过程.提供信息的类被称为父类(超类,基类),得到信息的类被称为子类(派生类).继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段.2) 封装: 通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口.面向对象的本质就是将现实世界描绘成一系列完全自治,封闭的对象.我们在类中编写方法就是对实...原创 2018-11-25 22:23:38 · 1383 阅读 · 1 评论