操作系统
操作系统
操作系统的概念、功能
操作系统的四个特征
操作系统的特征包含 并发、共享、虚拟、异步
并发和并行
并发指两个或者多个时间在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。并行指两个获多个事件在同一时刻同时发生。
共享
共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用,分为 互斥共享方式和 同时共享堂方式
虚拟
虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体是实际存在的,而逻辑上对应物是用户感受到的。
虚拟技术包含空分复用技术(如虚拟存储技术)和时分复用(虚拟处理器)技术
异步
异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
操作系统的运行机制
两种指令
特权指令
指令影响重大,只允许操作系统的内核来使用
非特权指令
例如 加法指令、减法指令等
两种运行状态
cpu有两种状态,内核态和用户态
内核态(管态)
CPU处于内核态时,说明此时运行的内核程序,此时可以执行特权指令
用户态 (用 ...
前中后序遍历的理解
深入理解前中后序
二叉树遍历框架
12345678910void traverse(TreeNode root) { if (root == null) { return; } // 前序位置 traverse(root.left); // 中序位置 traverse(root.right); // 后序位置}
把代码写在不同的位置,代码执行的时机也就不同
前序位置
前序位置就是刚进入一个节点(元素)的时候
中序位置
中序位置一般只在二叉树有意义,多叉树是没有中序位置的
后序位置
后序位置就是即将离开一个节点(元素)的时候。
回溯法
回溯法
回溯法的本质
回溯法本质上是一种暴力穷举算法,它可DFS相似,都是通过遍历所有可能的情况,选出符合条件的选择组成的路径。回溯法和DFS细微的差别是回溯算法是在遍历树枝,DFS算法实在遍历节点
回溯法的框架
站在回溯树的一个节点上,要考虑三个问题:
路径:也就是已经做出的选择
选择列表:也就是你当前可以做的选择
结束条件:也就是到达决策树底层,无法再做选择的条件
代码框架:
1234567891011result = []def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) return for 选择 in 选择列表: 做选择 backtrack(路径, 选择列表) 撤销选择
其核心就是for循环里面的递归,再递归调用之前做选择,在递归调用之后撤销选择
例子:力扣第46题全排列
全排列问题,我们一般的思路是先固定第一位,然后穷举第二位,再第二位穷的时候,也是固定第二位,穷举第三位,以此类推,其实就形成了一棵回溯树。以长度为3的[1,2,3] ...
动态规划
动态规划 (Dynamic Programming)
动态规划问题的通性
动态规划问题一般都是用来求最值的,例如最长递增子序列,最小编辑距离等等。动态规划的核心思路是穷举, 因为要求最值,肯定要知道所有的值是什么才能知道最值是多少。
怎么穷举以及如果优化穷举便是我们研究的问题。
动态规划的三要素
重叠子问题、最优子结构、状态转移方程是动态规划的三要素。
定义一个状态转移方程,有以下思维框架:
明确base case -> 明确[状态] -> 明确[选择] -> 定义dp数组/函数的含义
动态规划算法框架
123456789101112131415# 自顶向下递归的动态规划def dp(状态1, 状态2, ...): for 选择 in 所有可能的选择: # 此时的状态已经因为做了选择而改变 result = 求最值(result, dp(状态1, 状态2, ...)) return result# 自底向上迭代的动态规划# 初始化 base casedp[0][0][...] = base case# 进行状态转移for 状态 ...
Java基础知识
Java基础知识
先写到一起,后续记得分篇!
Java 基础知识点
访问修饰符
public: public意味着可以从任何地方访问该类、属性和方法。一个.java文件中只能有一个public类。
protected : protected 可以修饰内部类、方法、属性。protected 修饰的方法和属性可以被同包中的类、子类访问;可以被不同包的子类访问,不可以被不同包的类访问。
default: 当不写具体的修饰符时,就是default。在本包下的类、子类都是可以访问的;在不用包下的类、子类都是不可以访问的
private: private 修饰类时,不可以修饰外部类,可以修饰内部类. 修饰的方法在本包中的其他类、子类是无法访问的。在不同包中更不能访问了。
Java的三大特性
封装
继承
每个类都继承自超类Object。所有对象都具有以下方法:
clone(),用来克隆和复制任何对象
equals(),用来确定两个对象是否相等
hashCode(),为对象提供唯一的哈希码
toString(),用来获取对象当前状态的描述
多态
Java内存管理
Java的内存区要分为3个 ...
SSCI-581-Week10
Terrain Analysis
Digital Terrain Model
Digital Elevation Model(DEM)
A grid of bare-earth elevation values referenced to a horizontal and vertical datum
Continuous surface (Raster) of topography
Different scales; global coverage at 30m; regional coverage at 10m and some at 3m; US 1m resolution
DEM from Raster to TIN Vector
Tin model – continuous vector (triangles)
Z tolerance: a acceptable gap between two profiles
Digital Terrain Model (DTM)
In the US, it means a vector dataset that ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick Start
Create a new post
1$ hexo new "My New Post"
More info: Writing
Run server
1$ hexo server
More info: Server
Generate static files
1$ hexo generate
More info: Generating
Deploy to remote sites
1$ hexo deploy
More info: Deployment
git-note
Git
Git is a distributed version control system.
Git commands
git init
initialize a directory to be git repository.
git status
check the statues of a git repository directory.
git add [filename]
add files to wait for committing.
git commit -m "message"
commit changes.
git log
check the log information.
git checkout [commit number]
go back to the particular commit status. checkout controls “head” pointer.
How Git use git-SHA1 Hash
Example of how git uses the git-SH ...