JAVA 基础
字节序 Little\Big 低-》高\高-》低
java字节序为虚拟机中多字节类型数据存放顺序
可用nio.ByteOrder。nativeOrder()获取
重载 | 覆盖 | 多态 |
参数个数 | 重写的方法的访问修饰符 | |
类型 | 大于被重写 | |
顺序 |
HashTable| HashMap|TreeMap 实现Map接口
HashMap
HashMap存入K1时,->调用Key中的HashCode->计算Hash值->放入Hash值指引的内存-> 无定义调用Object的HashCode ->Object 返回Hash值是对象的地址
取值K2->计算K2的Hash值,k1与k2 地址不同
->发生冲突,这是用到equals方法进行对比
或->发生冲突,这是用到equals方法对比
->没有重写equals方法,调用Object的equals方法
->判断连对象的内存地址是否一致
->由于K1,K2都是New,内存地址不同
总结 :HashMap有很快的访问速度,但遍历顺序不确定,最多只允许一条记录的键为null,不能多条记录的值为null
TreeMap
双列集合,Map子类,底由红黑树
特点:键不能重复(键大小有序) map.put(k,v)
二叉排序树 左<根<右 、无相等缺极端情况下,近似列表
平衡二叉树 +旋转 高度差绝对值不超过1
红黑树
不是高度平衡 (自平衡的 二叉树)
特点: 根 -》黑
叶节点是黑为Nil
红色不能相连
每个节点,从该节点到所有后代叶节点的简单路径上,均包含相同数目的黑色节点
最高最短路径不会高于两倍
TreeMap源码
单例模式
单例模式只有一个实例,需隐藏类的构造,把构造函数生命为private并提供一个创建对象的方法
class Singleton{
private static Singleton instance = null;
private Singleton(){}
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
}
Math小知识点
BigInteger(1,1)
BigDecimal(long X ,int scale)
返回为X或X/10的scale次方 的一个大实数
数组 int[] a /int a[]
for(var:collection){}
Array.toString(a).sout
长度0与null不同
Array.copyof通常用来增加数组大小
main方法中String【】 args 命令行参数
Array.sort(a) :优化后的快排
561438
第一趟结果
164358 ×
341568 √
Math.random [0,1)
binarySearch可指定
fill(数组,填充值)
equals
多维数组
foreach要访问每层,要嵌套N重循环
快速打印一个二维数组,可用Arrays.deepToString()
java中只有一维数组
用不规则数组实现多维
JDK8常用新特性
1、函数接口,@FunctionalInterface
2、lambda表达式 Collections.sort(names,(s1,s2)->s1.compareTo(s2));
3、接口默认方法 可重写,也可指定super默认方法,静态默认方法
4、新时间处理 local,zoned
LocalDate.of(年,月,日)
LocalTime.of(时:分).parse(string)
LocalDateTime.now() .当前日期+时间
或.toLocalDate()当前日期
或.getMonth()
或.getDayofMonth()
或.getsecond()
或.withDayofMonth(天).withyear(年)
5、重复注解:相同的注解可多次生命
6、@NonEmpty注解
JVM
方法区
堆
栈
执行引擎
GC算法:3种基本算法copy、标清、标整。分代收集
GC优化是否开启Full前的Minor
新老区整比例
阈值设置
回收器
三种:串行、吞吐量优先(多线程、开启多个线程)、响应时间优先(多线程,标记,缩短单词回收(标清,出发保护退化算法))
多线程
三种实现:Thread、Runnable、Calledable
锁synchronized
死锁条件:1、互斥 2、占有且等待 3、不可抢夺 4、循环等待
Reentrantlock 互斥锁 可指定唤醒顺序
线程初始化:
1、缓冲池Cache,容量大小为MAX。PoolSize为0,同步队列
2、single单例缓冲池,容量为1
3、固定大小缓冲池,Fixed、PoolSize
页面渲染流程
静态
1)用户间网址输入至浏览器
2)把用户请求HTTP协议请求方法,网址,请求参数发送到服务器
3)服务器接收并查找网页
4)拿到资源后放回给服务器
5)服务器把响应信息组装成消息格式后返回客户端,状态码,CONTENT-TYPE,响应内容
6)浏览器解析后展示页面
动态
生命周期
1)用户点击一个连接向servlet 发起请求
2)Web服务器接收后,把请求交给相应的容器,容器会创建HttpServletRequest和Response对象
3)容器根据URL找到相应的Servlet,针对该请求创建一个线程,把创建的两个对象以参数的形式传递到线程中
4)容器中的线程调用Servlet中的Service()完成对用户请求的响应,Service()方法会调用doPost方法或doGet方法完成对用户具体响应任务,同时把生成的动态页面返回给容器
5)容器把响应消息组装成Http格式返回给客户端。同时删除第2)点创建的对象
Jsp
动态页面 可以写java脚本小程序script
JSP实现了业务逻辑与视图实现的分离
JSP是一个镶嵌在HTML中的SERVLET
JSTL 标签库
Java Server Page 服务端
Servlet -init Destroy Service
Tomcat编译成Java代码
JSP四大域对象
大-》小
PAGE 页面中,跳转后无效
REQUEST 请求中保存,服务器跳转后失效
SESSION 一次会话范围内
APPLICATION 在服务器保存
SETATTRIBUTE 设置名称及内容
GET 根据名称 获取
REMOVE 删除
ThreadLoadMap 开放定制发(逻辑删除)
HashMap 链表法(拉链法)(不确定的情况下,删除节点)
再哈希 往下找
建立一个公共溢出区
2.
<!--显示注释-->
<%--jsp自己的注释--%>
继承java注释
<pre>有换行效果
<%java脚本片段%>顺序有关 放在service方法中
<!% 定义全局变量%>类体中
3、
指令标签
静态包含 <%@include file="path"%>
将内容进行直接替换
生成一个源码文件,最终内容销毁JspService中
动态包含 <jsp:include page="">
runtime.JspRuntimeLibrary.include(request,response,jsp文件名,false
可以定义同名变量
注:没有参数,不要有任何内容,包换行空格