[读书笔记]Java类加载器

一、类与类加载器

类加载器除了在类加载阶段的作用外,还确定了对于一个类,都需要由加载它的类加载器和这个类本身一同确定其在Java虚拟机中的唯一性。通俗一点来讲,要判断两个类是否“相等”,前提是这两个类必须被同一个类加载器加载,否则这个两个类不“相等”。
这里指的“相等”,包括类的Class对象的equals()方法、isAssignableFrom()方法、isInstance()方法、instanceof关键字等判断出来的结果。

[读书笔记]JVM的垃圾收集算法

1.标记-清除算法

(1)算法思想:第一步,标记好所有需要回收的对象;第二步,清除被标记的对象。
(2)缺点:时间上,效率不高,无论是标记还是清除操作;空间上,会产生大量不连续的内存碎片,使得占用大内存的对象找不到足够的连续内存而进一步又提前触发一次GC。

[linux学习]centos下mysql的简单使用教程

今天用学生认证买了一个腾讯云服务器,在云服务器上装了centos6.6,拿来玩玩。翻开以前用linux时记下的笔记,有很多重复,有点乱,拿来整理一下。

1. 使用yum安装mysql

1
// 安装前先update一下
sudo yum update
// 查看有没有mysql的可下载版本
yum list | grep mysql
// 下载安装~
yum install -y mysql-server mysql mysql-deve

[算法学习]A星算法

一、适用场景

在一张地图中,绘制从起点移动到终点的最优路径,地图中会有障碍物,必须绕开障碍物。

二、算法思路

1. 回溯法得到路径

(如果有路径)采用“结点与结点的父节点”的关系从最终结点回溯到起点,得到路径。

[算法学习]8皇后问题

问题描述: 国际象棋的“8皇后问题”:在8x8的国际象棋上摆放8个皇后,使其不能互相攻击,即8个皇后中任意两个不得处在同一行、同一列或同一对角线上。共有多少种符合条件的摆法?
解法与分析:

  1. 首先是不能同一列同一行,那么每个皇后必须各独占一行一列,使用二维数组来描述就有点浪费空间了。这里我们使用一个8个元素的一维数组来表示每个皇后的每一行。
  2. 那么独占一列的情况,描述起来就像是实现{0,1,2,3,4,5,6,7}这个一维数组的全排列。
  3. 最后要解决的是不能在同一对角线的判断:假设两个数载一维数组nums位置i,j,那么i,j在同一对角线的条件是 i-j = nums[i]-nums[j] || j-i = nums[i]-nums[j]。

[算法学习]后缀表达式转二叉树

问题描述: 输入后缀表达式,输出后缀表达式的二叉树。

解法与分析:

  1. 根据后缀表达式的特点,我们可以知道,只要是运算符的就都是根结点。
  2. 我们这里需要使用一个栈来保存字符。遍历后缀表达式,每当遇到是非运算符的字符,就将它入栈,当遇到是运算符,就将栈中前两个结点出栈,和运算符组成一棵子树,然后入栈。遍历完成后,栈中剩下的唯一的一个结点就是该后缀表达式的二叉树的根结点。

[算法学习]树的广度遍历

问题描述: 从上层向下层遍历,从左向右打印出一棵树 。

解法与分析: 广度遍历,按照从左向右的方式,我们可以使用队列来保存每一层的结点,每次结点出队,将出队结点的子结点入队,直至队列为空,就可以打印出符合要求的树遍历。