![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SE
文章平均质量分 54
阴阳两界
闲人千万,苟且求安
展开
-
多线程基础
一、线程和进程的区别:进程是系统分配资源的最小单位,线程是系统调度的最小单位。每个进程至少有一个线程存在,即主线程。进程是有自己的独立地址空间的,有进程控制块(PCB)来控制进程的状态变换,也有专门的算法来控制进程的调度(先进先出,高优先比优先,短作业优先,时间片轮转等),线程是共享进程的资源的,JVM会为每一个线程划分特殊的空间:二、并发和并行并发: 多个进程在一个CPU下采用时间片...原创 2020-03-05 16:28:43 · 114 阅读 · 0 评论 -
七大主流排序
一、插入排序算法思想:从第二个数开始,往前找,如果前面的数比自己大,就交换,最终找到合适的位置就结束了。(这个交换可以理解为向后移位,你玩扑克牌的时候,按大小排序,前面插一张,后面的就要往后挪一点)时间复杂度:最好:O(n)最坏:O(n^2)平均:O(n)空间复杂度: O(1)稳定性:稳定public static void InserSort(int[] arr){int t...原创 2020-02-21 17:56:52 · 176 阅读 · 0 评论 -
银行家算法(详解加代码)
银行家算法,能戳到这里面的话,想必大家都有了解。银行家算法的基本思想是:分配资源之前,判断系统是否是安全的;若是,才分配。它是最具有代表性的避免死锁的算法。设进程 process 提出请求request[i],则银行家算法按如下规则进行判断:(1)如果 request[process][i] <= need[process][i],则转(2);否则,出错。(2)如果 request[p...原创 2019-12-26 12:38:19 · 2772 阅读 · 1 评论 -
动态内存分配算法(详解加代码)
动态内存分配主要有四种算法:(1) 首次适应算法:每次都从低地址开始查找,找到第一个能满足大小的空闲分区。(2) 循环首次适应算法:首次适应算法每次要从头找,增加了查找的开销,也可能在低地址上产生难以利用的小碎片。循环首次适应算法从上一次结束的位置开始查找。(3) 最佳适应算法:为了保证当“大进程”到来时能有连续的大片空间,可以尽可能的多留下大片空闲区,即,优先使用更小的空闲区。(4)...原创 2019-12-12 17:28:22 · 4965 阅读 · 1 评论 -
操作系统进程调度算法
1.先进先出算法(FCFS) public static void FCFS(){ //先来先服务 if(result == null){ throw new RuntimeException("请输入进程"); } Queue<process> queue=new LinkedList...原创 2019-12-06 11:18:45 · 457 阅读 · 1 评论 -
二叉搜索树
二叉搜索树:又称二叉排序树,它或者是一棵空树**,或者是具有以下性质的二叉树:1.若它的左子树不为空,则左子树上所有节点的值都小于根节点的值2.若它的右子树不为空,则右子树上所有节点的值都大于根节点的值3.它的左右子树也分别为二叉搜索树搜索二叉树的操作主要有:a) 增加b) 查找c) 删除(PS:为什么没有修改? 因为修改会破坏搜索二叉树的结构,一般都是先删除再插入,或者不修改k...原创 2019-11-24 15:59:08 · 111 阅读 · 0 评论 -
二叉树先中后序遍历(递归和非递归版本)
先序:public void preOrder(TreeNode root) {if(root == null){return ;}Stack<TreeNode> stack=new Stack<>();stack.push(root);while(!stack.isEmpty()){TreeNode cur=stack.pop();System.out....原创 2019-11-22 20:30:49 · 159 阅读 · 0 评论 -
Java的二叉树
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起 来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多个子结点;没有父 结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树概念:节点的度:一个节点含有的子树的个数称为该节点的度;树的度:一棵树...原创 2019-11-08 17:27:15 · 163 阅读 · 0 评论 -
Java异常所有相关
异常所谓 异常 指的就是程序在 运行时 出现错误时通知调用者的一种机制。注意,运行时,是指已经编译成为class文件,在JVM运行过程中。在编程时,代码出现问题是很常见的,我们有两种处理方式:LBYL: Look Before You Leap. 在操作之前就做充分的检查.EAFP: It’s Easier to Ask Forgiveness than Permission. “事后获...原创 2019-10-27 14:37:16 · 190 阅读 · 0 评论 -
面向对象编程
何为面向对象?首先,对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件,可以说万事万物皆对象。其次,类具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型(可以理解为高配结构体),它里面会有描述该类的属性和方法所谓的面向...原创 2019-10-16 20:56:19 · 100 阅读 · 0 评论 -
Java链表的逆序(详解)
链表的逆序算法:```javapublic ListNode reverseList(ListNode head) { if(head == null){ // return null; } if(head.next == null){ return head; } ...原创 2019-10-05 17:16:43 · 1136 阅读 · 0 评论 -
Java链表合并有序的两个链表
自从上次推送了链表的基本操作后,现在就来试着写一写比较复杂的东西。比如,合并两个有序的链表:L1: 1 1 2 4L2: 1 2 3 5 6我们需要的链表是:1 1 1 2 2 3 4 5 6思考一下,有两种简单粗暴办法:第一种:我们建立一个链表头head,比较prev1的值和prev2的值,谁小谁放在head后面,然后位置往后移(不创建新结点,会破坏原链表);class...原创 2019-10-01 18:17:48 · 138 阅读 · 0 评论 -
Java无头单向链表
链表:是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。实际中链表的结构非常多样,以下情况组合起来就有8种链表结构:单向、双向带头、不带头循环、非循环对这六种排列组合即可得到八种链表的名称;我们今天实现的是 无头单向链表```java // 1、无头单向非循环链表实现 public class SingleLinkedList { ...原创 2019-09-28 23:03:50 · 147 阅读 · 0 评论 -
Java顺序表
顺序表:是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数 据的增删查改。顺序表一般可以分为:1.静态顺序表:使用定长数组存储。2.动态顺序表:使用动态开辟的数组存储。静态顺序表适用于确定知道需要存多少数据的场景. 静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不够用. 相比之下动态顺序表更灵活, 根据需要动态的分配空间大小.`...原创 2019-09-25 14:21:15 · 135 阅读 · 0 评论 -
汉诺塔详解(包看包会)
CSDN的大佬已经解释了很多了,由我这个菜鸟反复理解后得到的一些心得的分享先看题:汉诺塔: 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。如图,我们移动两...原创 2019-09-22 23:17:09 · 3596 阅读 · 5 评论 -
Java变量常量和类型
变量: 指的是程序运行时可变的量. 相当于开辟一块内存空间来保存一些数据.常量: 指的是运行时类型不能发生改变类型: 则是对变量的种类进行了划分, 不同的类型的变量具有不同的特性类型1.int在 Java 中, 一个 int 变量占 4 个字节. 和操作系统没有直接关系.取值范围: -2^31 -> 2^31-1 , 也就大概是 -21亿 到 +21亿2.longJava 中...原创 2019-09-07 12:52:11 · 154 阅读 · 0 评论