Java知识点相关文章收集

2 篇文章 0 订阅
1 篇文章 0 订阅

注:此博客不再更新,所有最新文章将发表在个人独立博客limengting.site。分享技术,记录生活,欢迎大家关注

1、Java底层相关

(1)Java并发编程:volatile关键字解析
(2)Java中的异常
(3)Java内存模型
(4)并发与并行
并行是我们物理时空观下的同时执行,而并发则是操作系统用线程这个模型抽象之后站在线程的视角上看到的“同时”执行(时间片轮转后的)
(5)同步与异步
同步:发送一个请求,等待返回,然后再发送下一个请求
异步:发送一个请求,不等待返回,随时可以再发送下一个请求
同步可以避免出现死锁,读脏数据的发生,一般共享某一资源的时候用,如果每个人都有修改权限,同时修改一个文件,有可能使一个人读取另一个人已经删除的内容,就会出错,同步就会按顺序来修改。
异步则是可以提高效率了,现在cpu都是双核,四核,异步处理的话可以同时做多项工作,当然必须保证是可以并发处理的。
比如广播,就是一个异步例子。发起者不关心接收者的状态。不需要等待接收者的返回信息
电话,就是一个同步例子。发起者需要等待接收者,接通电话后,通信才开始。需要等待接收者的返回信息
(6)Java是值传递还是引用传递
Java中所有的都是传值,当传的值的数据类型是对象时,传递的是该对象的引用,可以在调用的函数中用该引用来改变所指的对象中实际的值,但是不能为该对象引用本身赋值,因为赋值操作会改变引用所指向的对象不再为原来的对象,以后进行的改变在新对象上进行,无法达到修改原对象的目的。类似于Final修饰对象时,可以修改该对象的内容,但是不能修改该对象本身。(传对象是引用传递的只是把这种值传递但传递的值是一个引用的情况称为了引用传递)
(7)Java中抽象类与接口的区别
继承/实现是否要重写所有方法关键取决于如果是非抽象类就要把所有抽象的方法落地,或者自己当一个抽象类:
1.普通类继承,并非一定要重写父类方法。
2.抽象类继承,如果子类也是一个抽象类,并不要求一定重写父类方法。如果子类不是抽象类,则要求子类一定要实现父类中的抽象方法。
3.接口类继承。如果是一个子接口,可以扩展父接口的方法;如果是一个子抽象类,可以部分或全部实现父接口的方法;如果子类不是抽象类,则要求子类一定要实现父接口中定义的所有方法。
(8)JSP加载网页的过程
(9)HashMap源码相关:
HashMap源码剖析
HashMap中resize()的实现
indexFor()中位运算的原理
JDK8后HashMap底层新增红黑树
(10)深克隆与浅客隆
浅克隆:对非基本数据类型只拷贝引用,与原来的引用指向同一块内存
深克隆:对非基本数据类型拷贝一份新的存在新的内存空间中,当修改克隆后的对象不会影响原来的对象。

2、数据库mysql相关

(1)mysql :=和=的区别
(2)mysql注入攻击/JDBC为什么要使用PreparedStatement而不是Statement

3、网络相关

(1)运输层TCP协议的三次握手/四次挥手
《自顶向下》P157-160 P169-173
图解三次握手/四次挥手
6个1比特的标志字段:
SYN(synchronous 建立联机)
ACK(acknowledgement 确认)
PSH(push 传送)
FIN(finish 结束)
RST(reset 重置)
URG(urgent 紧急)
2个32比特的字段:
序号字段:sequence number field,存放发送的字段序号
确认号字段:acknowledgment number field,存放等待接收的字段序号
(2)TCP释放连接时为什么time_wait状态必须等待2MSL时间
为了保证客户端发送的最后一个ACK报文能到达服务端,若ACK报文段丢失,服务器超时会重传FIN报文段给客户端,客户端要保持开启才能收到并重传ACK报文段给服务器
(3)TCP和UDP的区别
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
p.s TCP拥塞控制(北京堵车->上路限号)的解决算法:慢启动(slow start)、拥塞避免(Congestion voidance)、快速重传(Fast Retransmit)和快速恢复(Fast Recovery)。
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
(4)UDP的适用场景
实时音视频是可以而且应该用 UDP 的,一方面因为它常常涉及到网络穿透,另外一方面它不需要重传。——我需要实时的看到你的图像跟声音,至于中间丢一帧什么的完全不重要。而为了重传往往会造成延迟与不同步,考虑一下,某一帧因为重传,导致0.5秒以后才到,那么整个音视频就延迟了0.5秒。考虑一下接收方看视频,如果使用 TCP 导致视频的中间延迟了0.5秒,只要我不按「快进」键,那么后续的视频全都会比发送方延迟0.5秒。这种延迟是累加的,随着持续丢帧,延迟会越来越大,达到数秒,甚至分钟级,这会严重影响实时音视频的用户体验。因此「实时音视频聊天」功能通常都会使用 UDP 实现。
(5)HTTP状态码
2开头 (请求成功)表示成功处理了请求的状态代码。
3开头 (请求被重定向)表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。
4开头 (请求错误)这些状态代码表示请求可能出错,妨碍了服务器的处理。
5开头(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。
常见HTTP状态码:200(一切正常)、302(重定向)、304(没修改过,拿本地缓存)、404(未找到)、500(服务器端错误)

4、linux底层相关

(1)理解Linux的硬链接与软链接

硬链接:硬链接就是同一个文件使用了多个别名,他们有共同的 inode号。
创建方式:

link oldfile newfile 
或者
ln oldfile newfile

由于硬链接是有着相同 inode 号仅文件名不同的文件,因此硬链接存在以下几点特性:
文件有相同的 inode 及 data block;
只能对已存在的文件进行创建;
不能交叉文件系统进行硬链接的创建;
不能对目录进行创建,只可对文件创建;
删除一个硬链接文件并不影响其他有相同 inode 号的文件。

软链接:文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块。

因此软链接的创建与使用没有类似硬链接的诸多限制:
软链接有自己的文件属性及权限等;
可对不存在的文件或目录创建软链接;
软链接可交叉文件系统;
软链接可对文件或目录创建;
创建软链接时,链接计数 i_nlink 不会增加;
删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。

创建方式:

ln -s old.file soft.link 

软链接与硬链接的访问方式示意图:

硬链接与软链接的访问方式

5、数据结构相关

1、红黑树:
红黑树及Java实现
深入理解红黑树

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值