12 2019 档案
摘要:《深入理解计算机系统》学习笔记与总结 首先一个大的总结:在计算机中,使控制流发生突变的源头被称为异常控制流。异常是分为多个层级的,硬件异常与软件异常。我们在讨论异常的处理时也应该分情况讨论。异常控制流存在的逻辑是:我们的程序除了需要对程序内部状态的变化做出反应外,也应该可以对系统状态的变化做出反应。
阅读全文
摘要:题目: 关于动态规划类题目的思路如何找在上一篇博客 https://www.cnblogs.com/niuyourou/p/11964842.html 讲的非常清楚了,该博客也成为了了leetcode中戳气球题目点赞和阅读最多的题解(虽然题解本身就很少)。 本题的解题路径与上述博客一致,也是从 递归
阅读全文
摘要:时序电路 首先来看两个问题: 1.为什么CPU要用时序电路,时序电路与普通逻辑电路有什么区别。 2.触发器、锁存器以及时钟脉冲对时序电路的作用是什么,它们是如何工作的。 带着这两个问题,我们从头了解一下逻辑电路。要了解逻辑电路,首先我们便要了解组成逻辑电路的基本单位:逻辑门。 逻辑门 逻辑门是数字电
阅读全文
摘要:内部类是JAVA语言的主要附加部分。内部类几乎可以处于一个类内部任何位置,可以与实例变量处于同一级,或处于方法之内,甚至是一个表达式的一部分。因为很少使用,一直对内部类的理解不够深入(暴露了基础不扎实)。最近在阅读AQS源码,发现了大量内部类的使用,so,为了通顺的阅读,决定把内部类搞清楚。 第一节
阅读全文
摘要:第一节 哲学家就餐问题 第二节 什么是死锁 第三节 死锁的定义 第四节 死锁发生的条件 第五节 如何避免死锁 5.1 动态避免,银行家算法(杠杆分配),在资源分配上下文章 5.2 静态避免,从任务代码上避免死锁 第六节 死锁的综合治理 第一节 哲学家就餐问题 假设有五位哲学家围坐在一张圆形餐桌旁,做
阅读全文
摘要:堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 我们将给定的数组想象成一个完全二叉树,那么数组元素与二叉树节点的对应关系如下: 可以看到 0 的子元素为 1 、 2
阅读全文
摘要:并归排序与快速排序相似,靠分治思想突破了排序算法 O(n2) 的瓶颈。 我们看回顾一下几大排序算法的时间、空间复杂度: 排序算法平均时间复杂度最坏时间复杂度空间复杂度是否稳定 冒泡排序 O(n2) O(n2) O(1) 是 选择排序 O(n2) O(n2) O(1) 不是 直接插入排序 O(n2)
阅读全文
摘要:最近想整理一下GC相关的知识和经验,在整理之前先整理一下jvm的内存结构,后续会持续更新。 jvm内存结构重要由两部分组成:线程共享区域与线程私有区域,如下图所示: 其中方法区和堆为线程共享区域,栈与程序计数器为线程私有区域。与操作系统定义的堆栈类似,栈用来存储方法调用时产生的临时变量以及寄存器值,
阅读全文
摘要:这道题目做了两个晚上,发现解题思路的优化过程非常有代表性。文章详细说明了如何从回溯解法改造为分治解法,以及如何由分治解法过渡到动态规划解法。解法的用时从 超时 到 超过 95.6% 提交者,到超过 99.8% 提交者。现整理下来分享给大家,如有错误评论区欢迎指正! 题目如下: 回溯法 刚看到这个题目
阅读全文