知识点1

  1. Serial收集器
    单线程收集器,收集时会暂停所有工作线程(我们将这件事情称之为Stop The World,下称STW),使用复制收集算法,虚拟机运行在Client模式时的默认新生代收集器。
    2.ParNew收集器
    ParNew 收集器就是Serial的多线程版本,除了使用多条收集线程外,其余行为包括算法、STW、对象分配规则、回收策略等都与Serial收集器一摸一样。对 应的这种收集器是虚拟机运行在Server模式的默认新生代收集器,在单CPU的环境中,ParNew收集器并不会比Serial收集器有更好的效果。

3.Parallel Scavenge收集器
Parallel Scavenge收集器(下称PS收集器)也是一个多线程收集器,也是使用复制算法,但它的对象分配规则与回收策略都与ParNew收集器有所不同,它是 以吞吐量最大化(即GC时间占总运行时间最小)为目标的收集器实现,它允许较长时间的STW换取总吞吐量最大化。

4.Serial Old收集器
Serial Old是单线程收集器,使用标记-整理算法,是老年代的收集器,上面三种都是使用在新生代收集器。

5.Parallel Old收集器
老年代版本吞吐量优先收集器,使用多线程和标记-整理算法,JVM 1.6提供,在此之前,新生代使用了PS收集器的话,老年代除Serial Old外别无选择,因为PS无法与CMS收集器配合工作。

6.CMS(Concurrent Mark Sweep)收集器
CMS 是一种以最短停顿时间为目标的收集器,使用CMS并不能达到GC效率最高(总体GC时间最小),但它能尽可能降低GC时服务的停顿时间,这一点对于实时或 者高交互性应用(譬如证券交易)来说至关重要,这类应用对于长时间STW一般是不可容忍的。CMS收集器使用的是标记-清除算法,也就是说它在运行期间会 产生空间碎片,所以虚拟机提供了参数开启CMS收集结束后再进行一次内存压缩。

无向图是没有方向的,所以它的邻接矩阵是对称的。AOV网是点表示活动的网;AOE网是边表示活动的网。
设无向图的顶点个数为dun,则该图最多有n(n-1)/2条边。
1个顶点zhi没边,dao2个顶点1条,3个顶点3条,4个顶点6条,5个顶点10条那么所以就有当n>=3多的时候,任意2个顶点就会有一条边,所以是c2/n。
无向图的最多边是无向完全图:包含n(n-1)/2条边。因为一条边关联两个结点,有向完全图的才有n(n-1)条弧。而无向图变联通至少边数:n-1。有向图变连通图至少需要边数:n。

JRE判断程序是否执行结束的标准是
main()函数即主函数,是一个前台线程,前台进程是程序中必须执行完成的,而后台线程则是java中所有前台结束后结束,不管有没有完成,后台线程主要用与内存分配等方面。
前台线程和后台线程的区别和联系:
1、 后台线程不会阻止进程的终止。属于某个进程的所有前台线程都终止后,该进程就会被终止。所有剩余的后台线程都会停止且不会完成。
2、可以在任何时候将前台线程修改为后台线程,方式是设置Thread.IsBackground 属性。
3、不管是前台线程还是后台线程,如果线程内出现了异常,都会导致进程的终止。
4、托管线程池中的线程都是后台线程,使用new Thread方式创建的线程默认都是前台线程。
说明:
应用程序的主线程以及使用Thread构造的线程都默认为前台线程
使用Thread建立的线程默认情况下是前台线程,在进程中,只要有一个前台线程未退出,进程就不会终止。主线程就是一个前台线程。而后台线程不管线程是否结束,只要所有的前台线程都退出(包括正常退出和异常退出)后,进程就会自动终止。一般后台线程用于处理时间较短的任务,如在一个Web服务器中可以利用后台线程来处理客户端发过来的请求信息。而前台线程一般用于处理需要长时间等待的任务,如在Web服务器中的监听客户端请求的程序,或是定时对某些系统资源进行扫描的程序

java的字符类型采用的是 Unicode编码方案,每个Unicode码占用16个比特位。

垃圾回收过程中的对象销毁–Finalization
就在移除一个对象并回收它的内存空间之前,Java垃圾回收器将会调用各个实例的finalize()方法,这样实例对象就有机会可以释放掉它占用的资源。尽管finalize()方法是保证在回收内存空间之前执行的,但是对具体的执行时间和执行顺序是没有任何保证的。多个实例之间的finalize()执行顺序是不能提前预知的,甚至有可能它们是并行执行的。程序不应该预先假设实例执行finalize()的方法,也不应该使用finalize()方法来回收资源。
• 在finalize过程中抛出的任何异常都默认被忽略掉了,同时对象的销毁过程被取消
• JVM规范并没有讨论关于弱引用的垃圾回收,这是明确声明的。具体的细节留给实现者决定。
• 垃圾回收是由守护进程执行的

Integer.valueOf()和Integer.parseInt()区别
他们返回类型的不同是最大的原因。
static int parseInt(String s) 将字符串参数作为有符号的十进制整数进行分析。
static Integer valueOf(int i) 返回一个表示指定的 int 值的 Integer 实例。
static Integer valueOf(String s) 返回保持指定的 String 的值的 Integer 对象。
从返回值可以看出他们的区别 :
parseInt()返回的是基本类型int 而valueOf()返回的是包装类Integer
Integer是可以使用对象方法的 而int类型就不能和Object类型进行互相转换

reflection是如何工作的

用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时(如果当前队列中仅有一个元素,则删除它时队头、队尾指针都需要修改)
二叉排序树(B树即为二叉搜索树或称二叉排序树(Binary Sort Tree),也有叫二叉查找树的。):
二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:
(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;
(3)左、右子树也分别为二叉排序树;
二叉排序树只有中序遍历结果是一个有序序列。
哈夫曼树:当用 n 个结点(都做叶子结点且都有各自的权值)试图构建一棵树时,如果构建的这棵树的带权路径长度最小,称这棵树为“最优二叉树”,有时也叫“赫夫曼树”或者“哈夫曼树”。根据赫夫曼树的结构特点我们可以知道,在赫夫曼树中所有的关键字只出现在叶结点上,其非叶结点上并没有关键字值。
avl树(平衡二叉树(Balanced Binary Tree或 Height-Balanced Tree)又称AVL树。):本质上是带了平衡功能的二叉查找树(二叉排序树,二叉搜索树)。所以也不能满足需求。
堆:是一种特殊的完全二叉树,如:
 堆中某个节点的值总是不大于或不小于其父节点的值;
 堆总是一棵完全二叉树。
最终得到的正是一个从任一结点出发到根的路径上所经过的结点序列按其关键字有序的树状结构。
平衡因子
某结点的左子树与右子树的高度(深度)差即为该结点的平衡因子(BF,Balance Factor)。
装填因子的计算公式为=关键字个数 / 表长度 这个装填因子和hash表的平均查找长度有关。如果要增大装填因子显然要么增加关键字个数,要么减少表长度,

由栈的定义可知,栈是先进后出(或后进先出)的线性表,因此,栈具有记忆功能

尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。 尾递归调用时,如果做了优化,栈不会增长,因此,无论多少次调用也不会导致栈溢出。 遗憾的是,大多数编程语言没有针对尾递归做优化

应用层:报文 (message)
运输层:报文段 (Segment)
网络层:数据报 ( datagram )
链路层:帧( Frame )
物理层:比特(bit)

BigEndian指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中
LittleEndian是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值