03 2021 档案
摘要:HashMap的数据存储结构是一个 Node<K,V> 数组,每一个Node包含一个key-value键值对。(Java 7 中是 Entry<K,V> 数组,但结构相同) 它的存储结构是数组加链表的形式,如下图。 数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的, 如果定位到的数组
阅读全文
摘要:概念:进程是操作系统资源分配和管理的基本单位,而线程是处理器任务调度和执行的基本单位; 一个进程里有一个或多个线程,线程也被称为轻量级进程。 区别与联系: 进程 线程 地址空间与资源 独立的 同一进程的线程共享本进程的地址空间和资源 多进程与多线程 一个进程崩溃之后,在保护模式下不会对其他进程产生影
阅读全文
摘要:ICMP是“Internet Control Message Ptotocol”(Internet控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。 在网络中经常会使用到ICMP协议。例如经常用于检查网络不通的ping命令,这个ping的过程实际上就是
阅读全文
摘要:1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码。 100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。 2xx (成功)表示成功处理了请求的状态代码 20
阅读全文
摘要:快速排序 是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。 基本思想: 1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.
阅读全文
摘要:1. ArrayList 实现了基于动态数组的数据结构,LinkedList 是基于链表的数据结构。 2. 对于随机访问 get 和 set,ArrayList 优于 LinkedList,因为 LinkedList 要移动指针(如 get 的时间复杂度分别为O(1)和O(n))。 3. 对于新增和
阅读全文
摘要:一. 基本用法 在Java中,final 关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。 1.1 修饰类 用 final 修改类时,该类无法被继承。要注意 final 类中的所有成员方法都会被隐式地指定为 final 方法。 1.2 修饰方法 使用 final 修饰方法时,这个方法将成
阅读全文
摘要:缩写字段含义 序列号 seq:占4个字节,用来标记数据段的顺序。TCP 把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生; 给字节编上序号后,就给每一个报文段指派一个序号;序列号 seq 就是这个报文段中的第一个字节的数据编号。 确认号 ack:占4个字节,期待收到对方下一个
阅读全文
摘要:一. 为什么要使用 synchronized 在并发编程中存在线程安全问题,主要原因有: 1. 存在共享数据 2.多线程共同操作共享数据。 关键字 synchronized 可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,同时 synchronized 可以保证一个线程的变化可见(可见
阅读全文
摘要:分层作用(协议数据单元PDU)协议 物理层 通过媒介传输比特,确定机械及电气规范(比特 Bit) RJ45、CLOCK、IEEE802.3(中继器,集线器) 数据链路层 将比特组装成帧和点到点的传递(帧 Frame) PPP、FR、HDLC、VLAN、MAC(网桥,交换机) 网络层 负责数据包从源到
阅读全文
摘要:地址按用途分为私有地址和公有地址两种。所谓私有地址就是在A、B、C三类IP地址中保留下来为企业内部网络分配地址时所使用的IP地址。 私有地址主要用于在局域网中进行分配,在 Internet上是无效的。这样可以很好地隔离局域网和 Internet。私有地址在公网上是不能被识别的,必须通过 NAT 将
阅读全文
摘要:HTTP Request Header 请求头 常用:Accept、 Connection、Cookie、Host、Referer、Upgrade、User-Agent等。 Header解释示例 Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html
阅读全文
摘要:思路:dfs 这道题由于开始和结束可以为任意节点,因此这里树是被当作无向图来搜索路径的,而不是以前的有向图。 因此 dfs 的返回值要定义为以自己为根,从根节点到子节点的一条最长路径。 具体实现是寻找左子树与右子树中的一条最长路径,比较取最长。 而总的最长路径则为左子树最长路径 加右子树最长路径 加
阅读全文
摘要:思路: 设置三个指针,cur 指向当前节点, pre 指向上一节点,tmp 指向下一节点。 一开始 cur 指向头节点,pre 与 tmp 置null(可以将其视作循环链表,则 pre 为头节点的上一节点) 遍历链表时,cur 移向下一节点,cur.next 指向上一节点 pre,实现链表反转。 代
阅读全文
摘要:思路:dfs 每条根节点到叶子节点的路径都用一个数字代替,即每向下一个节点,之前的数字都左移一位。 通过dfs找到左右子树所有路径,最后回溯求和。 代码: import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNo
阅读全文
摘要:思路: 创建两个链表 head1、head2 ,遍历原链表,将大于 x 的节点链接至链表 head1,小于 x 的节点链接至链表 head2。 再将链表 head1与 head2链接到一起即可。 import java.util.*; /* * public class ListNode { * i
阅读全文
摘要:(1)抽象:(类的构造) 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 (2)继承:(对父类和方法的复用) 继承是一种联结类的层次模型,并且允许
阅读全文
摘要:Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于: 1. 接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。 2. 类可以实现很多个接口,但是只能继承一个抽象类 3. 类可以不实现抽象类和接口声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
阅读全文
摘要:两种方法: 1. 加减 a = a + b; b = a - b; a = a - b; 2. 异或(位)运算 a = a^b; b = a^b;//此时b = a^b^b,因此b = a(交换前的a与b) a = a^b;//此时相当于a^b^a,由异或的交换律得a = b ^a ^a,因此a =
阅读全文
摘要:思路: 快慢指针 快指针一次两步,慢指针一次一步,如果链表中有环,则快指针必会与慢指针相遇。如果无环,则快指针会先指向 null,返回 null 即可。 当他们相遇时,如下图所示。从起点到环的入口节点长度为 a,入口节点到快慢指针相遇点为 X,X到环入口节点的长度为 c。 相遇时,快指针走了2(a+
阅读全文
摘要:类的加载是由类加载器完成的,类加载器包括:根加载器( BootStrap )、扩展加载器( Extension )、系统加载器( System )和用户自定义类加载器( java.lang.ClassLoader 的子类)。 从 Java 2 ( JDK 1.2 )开始,类加载过程采取了父亲委托机制
阅读全文
摘要:Java 中的常量池是JVM内存模型中方法区的一部分。JVM内存模型如下: 方法区是jvm里线程共享的一部分内存,主要放,存储已被虚拟机加载的类信息,常量,静态常量,即编译器编译后的代码数据等。也称为永久代,就是放一些不会经常改变的东西。 Java中的常量池,实际上分为两种形态:静态常量池和运行时常
阅读全文
摘要:Java 内部类 即在一个类的内部再定义一个类。 public class OuterClass { private String name ; public String getName() { return name; } public void setName(String name) { t
阅读全文
摘要:简而言之,equals()比较的是两个对象的内容是否相等; == 比较的是两个对象的内存地址是否相同。 详解: equals()比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象。 如果没有对该方法进行覆盖的话,调用的仍然是Object类中
阅读全文
摘要:思路1:二次遍历(暴力法) 第一次遍历链表得到链表长,第二次遍历链表以从数组末端开始往前加入链表。 代码: 时间复杂度O(n),空间复杂度O(1) /** * Definition for singly-linked list. * public class ListNode { * int val
阅读全文
摘要:题目的大意是NumArray方法初始化数组,sumRange求一个区间内的数字和 其中sumRange方法会被多次调用,因此要想出一个降低其时间复杂度的求和算法。 思路:前缀和 前缀和,即数组中第i个元素及其之前元素的和。 sumRange(i,j)等于 j 的前缀和 减去 i-1 的前缀和 在此题
阅读全文