java - 类加载过程
类加载过程 初始化 一个类要实例化需要先加载并初始化该类 main 所在的类需要先加载和初始化 一个子类要初始化需要先初始化父类 一个类初始化就是执行< clinit >() 方法 < clinit >() 方法由静态类静态变量显示赋值代码和静态代码块组成 类变量显示赋值代码和静...
类加载过程 初始化 一个类要实例化需要先加载并初始化该类 main 所在的类需要先加载和初始化 一个子类要初始化需要先初始化父类 一个类初始化就是执行< clinit >() 方法 < clinit >() 方法由静态类静态变量显示赋值代码和静态代码块组成 类变量显示赋值代码和静...
单例模式 采取一定的方法保证在整个软件系统中,某个类只能存在一个对象实例, 并且该类只提供一个取得其对象实例的方法(静态方法) 八种方式 饿汉式(静态常量) 饿汉式(静态代码块) 懒汉式(线程不安全) 懒汉式(线程安全,同步方法) 懒汉式(线程安全,同步代码块) 双重检查 静态内部类 枚举 饿汉式(静态常量) 1....
七大原则 单一职责原则 单一职责原则(Single Responsibility Principle, SRP): 一个类只负责一个功能领域中的相 应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。 开闭原则 开闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开放,对修改关闭。即软件 实体应尽量在不修改原有代码的情况下进行扩展。...
模块 AKKA 是调度模块化的,它由许多拥有不同特性的 JAR 组成。 akka-actor – 经典角色、类型角色、IO 角色等。 akka-agent – 代理、整合了 Scala 的 STM 特性 akka-camel – 整合 Apache 的 Camel akka-cluster – 集群成员管理、弹性路由 akka-kernel – AKKA 微内核,运...
常用算法 非递归二分查找实现 二分查找只适用于有序查找,需要先将数列进行排序 package com.learn.bsc; /** * 非递归二分查找 */ public class BsNoRecur { public static int binarySearchNoRecur(int arr[],int target) { int lef...
常用算法 非递归二分查找实现 二分查找只适用于有序查找,需要先将数列进行排序 package com.learn.bsc; /** * 非递归二分查找 */ public class BsNoRecur { public static int binarySearchNoRecur(int arr[],int target) { int lef...
1.在线性表中,数据元素之间是被串起来的,仅有线性关系,每个数据元素只有开一个直接前驱和一个直接后继 2.在树形结构中,数据元素之间有明显的层次关系,并且在每一层上的数据元素可能和下一层多个元素相关,但只能和上一层一个元素相关。 这两种结构只能表达一对多的关系,当遇到多对多关系,就需要图。 图是由有穷非空集合和顶点之间变得集合组成,通常表示为:G(v,e),G 表示一个图,V 是图 G 中...
二叉排序树 二叉排序树是一颗空树或者具有以下性质二叉树 若它的左子树不为空,则左子树上所有结点的值均小于它根结点的值 若它的右子树不为空,则右子树上所欲结点的值均大于它根结点的值 它的左右子树分别为二叉排序树 实现 package com.learn.bst; public class BinarySortTreeDemo { public static ...
赫夫曼树 树的带权路径长度:树的带权路径长度规定为所有的叶子节点的带权路径长度之和(wpl 的和),wpl 最小的树就是赫夫曼树 给定 n 个权值作为 n 个叶子节点,构造一颗二叉树,若该树的带权路径达到最小(wpl),这样的二叉树称为最优二叉树。 赫夫曼树是带权路径最短的树,权越大离根结点距离越近 构建赫夫曼树 构建赫夫曼树的思路 从小到大进行排序,每个数据看成一个节点,每个...
树与数组链表的比较 数组存储方式的分析 优点:通过下标访问元素,速度快。对于有序数组,还可以使用二分查找提高检索速度 缺点: 如果要检索具体某个值,或者插入值,会整体移动,效率低 链式存储方式的分析 优点:插入,删除效率较高 缺点:检索效率低 树存储方式分析 提高数据存储,读取的效率,比如利用二叉排序树,即保证了数据查询的效率,也保证了数据修改,插入,删除...