摘要:总结 1.为何byte的取值范围是[-128, 127] byte,即字节,由8位的二进制组成。在Java中,byte类型的数据是8位带符号的二进制数。所以byte类型的取值范围也是[-128, 127]。 Java规定,用[1000 0000]补表示-128: (-1) + (-127) = [1
阅读全文
摘要:总结 1-正数的原码,反码,补码都一致;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1) [+1] = [00000001]原 = [00000001]反 = [00000001]补 [-1] = [10000001]原 = [11111110]反
阅读全文
摘要:QA 动态代理是什么?有哪些应用? 动态代理是运行时动态生成代理类。 动态代理的应用有 spring aop、hibernate 数据查询、测试框架的后端 mock、rpc,Java注解对象获取等。 怎么实现动态代理? JDK 原生动态代理和 cglib 动态代理。 JDK 原生动态代理是基于接口实
阅读全文
摘要:原文链接 Java进阶之"XML操作" https://zhuanlan.zhihu.com/p/30829960 详细代码参考(必看) XML解析——Java中XML的四种解析方式 1.XML全称是"(扩展标记语言)" 是一种用来结构化文档和数据的通用且适应性强的格式,它不仅仅可以用于 WEB,而
阅读全文
摘要:【重点】变量/方法:java继承里的 隐藏 vs方法 隐藏:父类和子类拥有相同名字的属性或者方法时,父类的同名的属性或者方法形式上不见了,实际是还是存在的。 变量隐藏:子类实例变量/静态变量可以隐藏父类的静态/实例变量,总结为“变量”可以交叉隐藏。 方法隐藏:只有一种形式,就是父类和子类存在相同的静
阅读全文
摘要:顺序 1. 父类中静态成员变量和静态代码块 2. 子类中静态成员变量和静态代码块 3. 父类中普通成员变量和代码块,父类的构造函数 4. 子类中普通成员变量和代码块,子类的构造函数 其中“和”字两端的按照代码先后顺序执行:父类静态块→子类静态块→父类初始化块(成员变量,非静态代码块等)→父类构造方法
阅读全文
摘要:总结 BIO 同步并阻塞 线程发起IO请求,不管内核是否准备好IO操作,从发起请求起,线程一直阻塞,直到操作完成。 NIO 同步非阻塞(由于最后依然要本线程去操作,因此是“同步”;由于是立即返回,因此是“非阻塞”) 线程发起IO请求,立即返回;操作系统在做好IO操作的准备之后,通过调用注册的回调函数
阅读全文
摘要:总结 reactor用于同步IO,proactor用于异步IO 在Reactor模式中,事件分离者等待某个事件或者可应用或个操作的状态发生(比如文件描述符可读写,或者是socket可读写),事件分离器就把这个事件传给事先注册的处理器(事件处理函数或者回调函数),由后者来做实际的读写操作。 在Proa
阅读全文
摘要:总结 同步 vs 异步 所谓同步/异步,关注的是能不能同时开工。 同步->指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪 异步->是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候,用户进程会得到IO完成的通知 阻塞 vs 非阻塞 所谓阻塞/非阻塞,关注的是
阅读全文
摘要:总结 Math.round() “四舍五入”, 该函数返回的是一个四舍五入后的的整数。 负数,小数点第一位是5时,直接舍去,整数部分不 +1; 正数,小数点第一位是5时,往整数部分 +1 double d = 3.1415926; double d2 = 18.58; double d3 = -15
阅读全文
摘要:总结 replace() 和 replaceAll()都是常用的替换字符串的方法 1-两者都是全部替换,即把源字符串中的某一字符或字符串全部换成指定的字符或字符串。如果只想替换第一次出现的,可以使用 replaceFirst() 2-replaceFirst(), replaceAll()都是“优先
阅读全文
摘要:总结 1-正常情况下,finally语句块都会执行。除了一些特殊情况:(详见:finally语句块一定执行吗?) 直接返回未执行到finally语句块 抛出异常未执行到finally语句块 系统退出未执行到finally语句块 2-如果finally 没有 return,finally 对 retu
阅读全文
摘要:finalize()一定执行吗 finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法。Java语言规范并不保证finalize方法会被及时地执行、而且根本不会保证它们会被执行 GC执行finalize()流程 首先,大致描述一
阅读全文
摘要:总结 Java没有c++的Struct类型 在c++中: class是引用类型,struct是值类型 struct更适合看bai成是一个数据结构的实现体du,class更适合看成是一个对象的实现体 参考:https://zhidao.baidu.com/question/74800441150378
阅读全文
摘要:总结 在自定义中,重写hashCode()不需要加@Override. 因为Object.hashCode()并不是abstract函数。 在java中,hashCode()方法的主要作用是为了配合基于散列的集合一起正常运行,这样的散列集合包含HashSet、HashMap以及HashTable。
阅读全文
摘要:易错点 初始化一个子类,尽管会调用父类的初始化方法,但只会产生一个子类对象。 这个子类对象实际上“持有”父类所有的(public, protect,private)字段和方法(更白话的说法,把父类信息完全拷贝一份到该子类对象)。只不过,子类可以“直接访问” public, protect的字段和方法
阅读全文
摘要:参考:https://www.cnblogs.com/zztt/p/3417323.html 总结 Integer的最大数: Integer.MAX_VALUE (Long同理) Integer的最小数:Integer.MIN_VALUE (Long同理) Double的最大数:Double.MAX
阅读全文
摘要:Java Service Wrapper 基础 https://www.cnblogs.com/z0909y/p/9639454.html https://www.cnblogs.com/qlqwjy/p/9492813.html 特性:1、多平台支持 2、简单的安装步骤,即可将java程序当成后台
阅读全文
摘要:内部类分类 匿名内部类 特点: 仅能被使用一次,创建匿名内部类时它会立即创建一个该类的实例,该类的定义会立即消失,所以匿名内部类是不能够被重复使用。 jdk1.8之前,当匿名内部类所在的方法的形参需要被匿名内部类里面使用时,该形参必须为final。原因:匿名内部类使用所在方法的变量时,是拷贝引用,并
阅读全文
摘要:为什么不要通过finalize方法去释放资源? 当java只跑一个main方法,它背后也是在跑多线程。其中有一个守护线程就是Finalizer,是它去执行所有的finalize方法。 但是由于它是守护线程,因此当主线程(main线程)结束,守护线程也会结束,很可能没来得及执行finalize方法。
阅读全文