down

计算机操作系统 - 进程管理

牧云@^-^@ 提交于 2019-11-27 23:54:11
进程与线程 1. 进程 2. 线程 3. 区别 进程状态的切换 进程调度算法 1. 批处理系统 2. 交互式系统 3. 实时系统 进程同步 1. 临界区 2. 同步与互斥 3. 信号量 4. 管程 经典同步问题 1. 读者-写者问题 2. 哲学家进餐问题 进程通信 1. 管道 2. FIFO 3. 消息队列 4. 信号量 5. 共享存储 6. 套接字 进程与线程 1. 进程 进程是资源分配的基本单位。 进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。 下图显示了 4 个程序创建了 4 个进程,这 4 个进程可以并发地执行。 2. 线程 线程是独立调度的基本单位。 一个进程中可以有多个线程,它们共享进程资源。 QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。 3. 区别 Ⅰ 拥有资源 进程是资源分配的基本单位,但是线程不拥有资源,线程可以访问隶属进程的资源。 Ⅱ 调度 线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程中的线程切换到另一个进程中的线程时,会引起进程切换。 Ⅲ 系统开销

2019杭电多校 hdu6662 Acesrc and Travel (树形dp

折月煮酒 提交于 2019-11-27 21:16:29
http://acm.hdu.edu.cn/showproblem.php?pid=6662 题意:有两个人在树上博弈,每个点节点有两个分数a[i]和b[i],先手先选择一个点,后手在先手选的点的相邻点中选择一个点,然后先手在后手选的点的相邻点中选择一个两个人都没有走过的点,直到不能走,游戏就结束。一个人走到节点x,那么先手会获得分数a[x],后手就会会获得分数b[x]。最后询问先手能获得与后手的差值最大值。 思路:先手固定好位置后,后手走。有两种走法,向下和向上。 向下好办,用down[i][0]表示我从i走到i的儿子后所能得到的最大值,down[i][1]为对手走的最小值,那么down[i][0] = v[i]+max(down[son][1]), down[i][1]=v[i]+min(down[son][0]) 向上的话,走完后对面也分为向上或向下。 向下走时,不能走当前上去的路,所以存每个点向下走的最值和次值,当最值和上去那条路得出的值相同,就换成次值。 向上走时,从上到下一路维护即可。 1 #include<bits/stdc++.h> 2 #define ll long long 3 #define rep(i,a,b) for(int i=a;i<=b;i++) 4 using namespace std; 5 const int maxn = 1e5+5; 6

前端基础之初识 HTML

六月ゝ 毕业季﹏ 提交于 2019-11-27 20:14:36
HTML HTML(Hypertext Markup Language)即超文本标记语言,是WWW的描述语言。设计HTML语言的目的是为了能把存放在一台电脑中的文本或图形与另一台电脑中的文本或图形方便地联系在一起,形成有机的整体,人们不用考虑具体信息是在当前电脑上还是在网络的其它电脑上。我们只需使用鼠标在某一文档中点取一个图标,Internet就会马上转到与此图标相关的内容上去,而这些信息可能存放在网络的另一台电脑中。 HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字、图形、动画、声音、表格、链接等。HTML的结构包括头部(Head)、主体(Body)两大部分,其中头部描述浏览器所需的信息,而主体则包含所要说明的具体内容。 另外,HTML是网络的通用语言,一种简单、通用的全置标记语言。它允许网页制作人建立文本与图片相结合的复杂页面,这些页面可以被网上任何其他人浏览到,无论使用的是什么类型的电脑或浏览器。神奇吗?一点都不神奇,因为现在你看到的就是这种语言写的页面.哈哈. 下面我们来学习 HTML 基础知识! head部分 自动刷新、标题、ico: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>python之路</title> <link rel="python icon

eNSP的使用

巧了我就是萌 提交于 2019-11-27 15:37:12
1- 进入华为路由器界面配置ip The device is running! #################################### Nov 1 2016 23:39:24-08:00 Huawei %%01IFNET/4/BOARD_ENABLE(l)[0]:Board 1 has bee n available. <Huawei> Nov 1 2016 23:39:24-08:00 Huawei %%01IFNET/4/IF_ENABLE(l)[1]:Interface Serial1/ 0/0 has been available. <Huawei> Nov 1 2016 23:39:24-08:00 Huawei %%01IFNET/4/IF_ENABLE(l)[2]:Interface Serial1/ 0/1 has been available. <Huawei> Nov 1 2016 23:39:25-08:00 Huawei %%01IFPDT/4/IF_STATE(l)[3]:Interface GigabitEt hernet0/0/0 has turned into UP state. <Huawei> Nov 1 2016 23:39:28-08:00 Huawei %%01IFPDT/4/IF_STATE(l)[4]

UVA12558 埃及分数 Egyptian Fractions (HARD version) 笔记

╄→гoц情女王★ 提交于 2019-11-27 06:42:41
笔记就 懒得搞得有多好看了 自己看的顺就行 贴个luogu链接 uva比较慢 UVA12558 埃及分数 Egyptian Fractions (HARD version) 一开始看着紫书写的 就是添加了个约束条件 现在理解了之后搞一个 题目是搜索  考虑BFS 状态数太多 一次要向不知道数量个状态转移 不行        考虑DFS 解决了状态数过多的问题 但是深度太深了 也不行   所以就IDDFS解决 每次把a/b减去一个1/c 直到到达深度限制且最后减去的为埃及分数并且分母不受限 代码 #include <bits/stdc++.h> typedef long long ll; typedef unsigned long long ull; using std::cin; using std::cout; using std::endl; std::map<ll, int>map;  //利用map来判断能不能用 ll ans[105], tmp[105];  //存答案 ll gcd(ll a, ll b) {if(a < b) std::swap(a, b); return b == 0 ? a : gcd(b, a % b);}   //不知道static_cast和(int)()有什么区别 不过看着很吊就是了 ll get_first(ll a, ll b)

等额本金、等额本息工具类(Java版)

天涯浪子 提交于 2019-11-27 05:59:47
等额本息 / ** * Description:等额本息工具类 * Copyright: Copyright (corporation)2015 * Company: Corporation * @author : 凯文加内特 * @version : 1.0 * Created at: 2015年11月30日 下午3:45:46 * Modification History: * Modified by : */ package com.utils; import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; /** * 等额本息还款,也称定期付息,即借款人每月按相等的金额偿还贷款本息,其中每月贷款利息按月初剩余贷款本金计算并逐月结清。把按揭贷款的本金总额与利息总额相加, * 然后平均分摊到还款期限的每个月中。作为还款人,每个月还给银行固定金额,但每月还款额中的本金比重逐月递增、利息比重逐月递减。 */ public class AverageCapitalPlusInterestUtils { /** * 等额本息计算获取还款方式为等额本息的每月偿还本金和利息 * * 公式:每月偿还本息=〔贷款本金×月利率×(1+月利率)^还款月数〕÷〔(1+月利率)^还款月数-1〕 * *

IDEA从Git 上down 项目报错

本秂侑毒 提交于 2019-11-27 05:50:33
IDEA +Springboot + maven + git 问题: 1: idea 从git 上导入新项目,报一些版本错误 2: 从Git down项目下载不了项目依赖的jar包 解决: 1: 从公司Git上down 项目到本机报错 先配置maven 参考 https://blog.csdn.net/qq_35437792/article/details/80631434 down 到本机后,如果项目报错,打开配置文件 yml , 如果数据库的连接池 报错,ctrl +左键点不进去的话, 首先查看下配置的maven版本号, File – Settings – Maven 如果是3.3x 版本的,最好升级为3.5x 版本已上,就可以解决其他依赖版本的问题 之前我的配置的是3.3.9 ,报的这个错,还会报下面两个版本的错误, 解决办法: 1: 升级 maven版本, 再从Git down 项目就可以了 2: 升级依赖的jar包 阿里的druid 数据库连接池 升级为 1.1.10 也可以 2: 配置本地maven仓库后,下载不了项目依赖的jar包 更新maven 会先下载 依赖的pom文件 在配置的本地maven仓库中 搜 .lastup, 然后把没下载完成的文件把 .lastup 后缀去掉, 不要直接删文件,就是把文件名后缀的.lastup去掉,然后更新maven

plantuml-绘制状态图和活动图和部署图​

久未见 提交于 2019-11-27 02:32:56
背景 状态图:对象的所有状态,以及基于事件发生的状态改变的过程; 活动图:用例的工作流程; 部署图:系统的软硬件物理体系结构; 状态图 基本语法 元素 语法 说明 开始和结束状态 [*] 标识开始和结束状态 箭头 --> 添加箭头 隐藏描述区域 hide empty description 隐藏描述区域 合成状态 state 合成状态名字{ 增城的状态定义语法} 可以嵌套状态图 状态声明 state 状态名字 : 备注 声明状态 fork,join state state名字 分开,合并状态 并发状态 -- or 或者双竖线 状态是并发改变的 箭头方向 top down left right 可以控制箭头的方向 单行注释 note 方位 of 状态名 : 单行注释 单行注释 多行注释 note 方位 of 状态名 换行 单行注释 换行 end note 多行注释 登录状态图 @startuml hide empty description left to right direction [*]-->NotLogin:首次打开app state NotLogin: 没有登录 state LoginSuccess: 登录成功 state LoginFail: 登录失败 NotLogin -->LoginSuccess: 登录 NotLogin -->LoginFail:登录 state

Java并发指南14:Java并发容器ConcurrentSkipListMap与CopyOnWriteArrayList

老子叫甜甜 提交于 2019-11-26 23:37:14
原文出处 http://cmsblogs.com/ 『 chenssy 』 到目前为止,我们在Java世界里看到了两种实现key-value的数据结构:Hash、TreeMap,这两种数据结构各自都有着优缺点。 Hash表:插入、查找最快,为O(1);如使用链表实现则可实现无锁;数据有序化需要显式的排序操作。 红黑树:插入、查找为O(logn),但常数项较小;无锁实现的复杂性很高,一般需要加锁;数据天然有序。 然而,这次介绍第三种实现key-value的数据结构:SkipList。SkipList有着不低于红黑树的效率,但是其原理和实现的复杂度要比红黑树简单多了。 SkipList 什么是SkipList?Skip List ,称之为跳表,它是一种可以替代平衡树的数据结构,其数据元素默认按照key值升序,天然有序。Skip list让已排序的数据分布在多层链表中,以0-1随机数决定一个数据的向上攀升与否,通过“空间来换取时间”的一个算法,在每个节点中增加了向前的指针,在插入、删除、查找时可以忽略一些不可能涉及到的结点,从而提高了效率。 我们先看一个简单的链表,如下: 如果我们需要查询9、21、30,则需要比较次数为3 + 6 + 8 = 17 次,那么有没有优化方案呢?有!我们将该链表中的某些元素提炼出来作为一个比较“索引”,如下:

多按键状态机的实现

久未见 提交于 2019-11-26 23:14:36
1. 简单按键检测 记得开始学习单片机的时候,写的按键扫描是这样的: if(KEY1 == 0) { delay_ms(20); if(KEY1 == 0) { while(KEY1 == 0); // 按键按下处理代码 } } 一看,有个20ms消除抖动时间,就是说我要在这里死等20ms,还有等待按键释放,我就是不放,你能怎么样?没办法只能做超时。那我想做长按1s呢?细思极恐,对于实际项目上的应用来说是很糟糕的事情,这不仅会拖慢你整个系统,还会出现,多个按键有时检测不到的问题。有没有更好的办法来实现呢?答案是肯定的,想想,如果这个20ms的延时用定时器来做,不就可以了吗!!! 2. 状态机 首先我们得了解什么是状态机?这个当然是问度娘了!!! 状态机可归纳为4个要素,即 现态、条件、动作、次态 。这样的归纳,主要是出于对状态机的内在因果关系的考虑。"现态"和"条件"是 因 ,"动作"和"次态"是 果 。详解如下: 现态 :是指当前所处的状态。 条件 :当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。 动作 :条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。 次态 :条件满足后要迁往的新状态。"次态"是相对于"现态"而言的,"次态"一旦被激活,就转变成新的"现态"了。