- 博客(49)
- 收藏
- 关注
原创 pytorch遇到的问题
pytorch遇到的问题from torch.utils.tensorboard import SummaryWriter导入不成功问题参考:https://blog.csdn.net/qq_28666313/article/details/106343611#由于pytorch本身不自带tensorboard包,一般这样报错都是由于未安装tensorboard包导致的。#可以通过pip 加载清华镜像源进行安装sudo pip install -i https://mirrors.aliyu
2021-11-13 10:12:52
601
原创 微信小程序 UI 自动化
一、手机和电脑进行连接点开手机【设置】下拉屏幕至最底,点开【关于手机】连续快速点击5次以上【版本号】点开【开发者选项】开启【USB调试】数据线连接手机和电脑。下拉状态栏,点开【USB计算机连接】,勾选【文件传输】。终端输入:adb devices,查看是否连接成功。如下则为连接成功二、打开微信的调试功能在微信中点击打开http://debugx5.qq.com,进入微信 X5 调试页面的配置点击信息,然后勾选【打开 TBS 内核 Inspector 调试功能】在微信中打开一个
2021-11-04 19:02:13
1012
原创 3.2-2死锁的处理策略
1.预防死锁(破坏产生死锁的四个必要条件,只要有一个不满足,就不会发生死锁)破坏互斥条件(互斥条件:只有对必须互斥使用的资源的争抢才会导致死锁)如果把只能互斥使用的资源改造为允许共享使用,则系统不会进入死锁状态缺点是并不是所有的资源都可以改造成可共享使用的资源,并且为了系统安全还要保护这种互斥性破坏不可剥夺条件(不可剥夺条件:进程在所获得的资源在未使用完之前,不能由其他进程强行夺走,只能主动释放)两种方案:当某个进程请求新的资源得不到满足时,它必须立即释放保持的所有资源,待以后需要
2020-06-11 23:18:23
301
原创 3.2-1死锁的概念
1.什么是死锁在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进,就是“死锁”发生死锁后如果没有外力干涉,这些进程都没有办法向前推进2.死锁,饥饿,死循环的区别死锁:各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进饥饿:由于进程长期得不到想要的资源。某进程无法向前推进死循环:某进程执行过程中一直跳不出某个循环的现象3.死锁产生的必要条件产生死锁必须同时满足以下四个条件,只要其中任一条件不成立,死锁就不会发生互斥条件:只有对
2020-06-11 23:17:05
161
原创 3.1-5实时调度
1.实时系统概念:正确性依赖于其时间和功能两方面的一种操作系统特点:确定性和可预测性硬实时系统需要在保证时间内完成重要的任务,必须完成软实时系统要求重要的进程的优先级更高,尽量完成,并非必须RM(速率单调调度)最佳静态优先级调度通过周期安排优先级周期越短优先级越高执行周期最短的任务EDF(最早期限调度)最佳的动态优先级调度Deadline越早优先级越高执行Deadline最早的任务...
2020-06-11 23:16:07
104
原创 3.1-4调度算法
适用于批处理系统的调度算法1.先来先服务(FCFS)按照作业/进程达到的先后顺序进行服务对长作业有利,对短作业不利,不会导致饥饿2.短作业优先(SJF或SPF)短作业优先默认是非抢占式的,对短作业有利,对长作业不利会导致饥饿抢占式的版本是最短剩余时间优先算法(SRTN),它具有最短的平均等待时间3.高响应比优先算法既要考虑运行时间,又要考虑等待时间,综合了前两个方法的优点,不会导致饥饿响应比 = (等待时间+要求服务时间)/ 要求服务时间一般是非抢占式的适用于交互式系统的调度算法1
2020-06-11 23:15:18
586
原创 3.1-3调度算法的评价指标
1.CPU利用率利用率 = 忙碌的时间/总时间2.系统吞吐量单位时间内完成作业的数量3.周转时间完成时间-提交时间平均周转时间 = 各作业周转时间之和 / 作业数带权周转时间 = 作业周转时间 / 作业运行时间平均带权周转时间 = 各作业带权周转时间之和 / 作业数4.等待时间平均等待时间5.响应时间指用户提出请求到得到相应的时间...
2020-06-11 23:14:30
150
原创 3.1-2进程调度的时机,切换与过程,方式
1.进程调度的时机进程调度(低级调度):按照某种算法从就绪队列中=选择一个进程为其分配处理机。需要进行进程调度与切换的情况:当前运行的进程主动放弃处理机进程正常终止发生异常而终止进程主动请求阻塞当前运行的进程被动放弃处理机时间片用完有更紧急的事需要处理有更高优先级的进程进入就绪队列不能进行进程调度与切换的情况:在处理中断的过程中进程在操作系统内核程序临界区中在原子操作的过程中(原语)注:内核程序临界区一般是用来访问某种内核数据结构的,比如进程的就绪队列(由各
2020-06-11 23:13:46
213
原创 3.1-1处理机调度的概念和层次
1.调度的基本概念从就绪队列中按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程的并发执行2.调度的三个层次(1)高级调度(作业调度)按一定的原则从外存上处于后备队列的作业中挑选一个或多个作业,给他们分配内存等必要资源,并建立相应的进程(建立PCB),以使他们获得竞争处理机的权利。作业调入时会建立相应的PCB,作业调出时才撤销PCB(2)中级调度(内存调度)引入了虚拟存储技术之后,可将暂时不能运行的进程调至外存等待。等它重新具备了运行条件且内存又稍有空闲时,再重新调入内存。(目
2020-06-11 23:10:53
233
原创 win10自带ubuntu安装
写一遍记住过程,就不用总是百度了qwq1.打开应用商店,在搜索框输入ubuntu根据个人喜好下载不同版本的Ubuntu我下载了18.04版本2.下载完成后点击安装
2020-05-21 11:19:04
1075
原创 操作系统——笔记总目录(持续更新)
第一章 操作系统引论1.1-1操作系统的概念,功能和目标1.1-2操作系统的特征1.1-3操作系统的发展和分类1.1-4操作系统的运行机制和体系结构1.1-5中断和异常1.1-6系统调用第二章 进程管理2.1-1进程的定义,组成,组织方式,特征2.1-2进程的状态与转换2.1-3进程控制2.1-4进程通信2.1-5线程2.2-1信号量机制2.2-2用信号量机制实现进程互斥,进程同步,前驱关系2....
2020-05-19 18:52:17
143
原创 操作系统——2.2-4管程
1.管程的定义管程由三部分组成:(1)局部于管程的共享变量说明;(2)对该数据结构进行操作的一组过程;(3)对局部于管程的数据设置初始值的语句。(4)还须为管程赋予一个名字。2.管程的基本特征(1)局部于管程的数据只能被局部于管程的过程所访问(2)一个进程只有通过管程内的过程才能进入管程访问共享数据(3)每次仅允许一个进程在管程内执行某个内部过程...
2020-05-19 18:24:28
525
原创 操作系统——2.2-3经典进程同步问题
1.生产者-消费者问题系统中有一组生产者进程和一组消费者进程,生产者进程每次生产一个产品放入缓冲区,消费者进程每次从缓冲区中取出一个产品并使用。生产者、消费者共享一个初始为空、大小为n的缓冲区,各进程互斥访问缓冲区没满时,生产者才能把产品放入缓冲区,否则必须等待缓冲区不空时,消费者才能从中取出产品,否则必须等待semaphore mutex = 1;//互斥信号量,实现对缓冲区的互斥访问semaphore empty = n;//同步信号量,表示空闲缓冲区的数量semaphore full
2020-05-19 18:23:58
409
原创 操作系统——2.2-2用信号量机制实现进程互斥,进程同步,前驱关系
1.信号量机制实现进程互斥分析并发进程的关键活动,划定临界区设置互斥信号量mutex,初值为1在进入区P(mutex)申请资源在退出区V(mutex)释放资源注:对不同的临界资源需要设置不同的互斥信号量临界资源:一次仅允许一个进程使用的共享资源临界区:每个进程中访问临界资源的那段代码称为临界区,每次只允许一个进程进入临界区,进入后,不允许其他进程进入P,V操作必须成对出现semaphore mutex = 1;P1(){ ... P(mutex);
2020-05-19 18:23:16
464
原创 操作系统——2.2-1信号量机制
1.概念(1)用户进程可以通过使用操作系统提供的一对原语来对信号量进行操作,从而很方便的实现了进程互 斥、进程同步。(2)信号量其实就是一个变量 ,可以用一个信号量 来表示系统中某种资源的数量(3)原语是一种特殊的程序段,其执行只能一气呵成,不可被中断。原语是由关中断/开中断指令实现的。(4)一对原语:wait(S) 原语和signal(S) 原语,括号里的信号量S是函数调用时传入的一个参数。wait、signal原语常简称为P、V操作。做题的时候常把 wait(S)、signal(S) 两个操作分
2020-05-19 18:21:38
288
原创 计算机网络——第四章 网络层(待更)
4.1网络层提供的两种服务1.面向连接的通信方式建立连接(在分组交换中是建立一条虚电路VC),以预留双方通信所需的一切网络资源如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点虚电路表示只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而不是真正建立链路一条物理连接2.无连接的通信方式—Internet采用的方式网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务,网络在发送分组时不需要先建立连接,每一个分组独立发送,与其前后分组无关网络层不提
2020-05-14 20:43:38
561
原创 概率论与数理统计——1概率论的基本概念
1.1随机事件1.随机试验和样本空间(1)随机试验(可重复性、可预知性、不可确定性)(2)样本点(每一个可能出现的结果)(3)样本空间(全体样本点组成的集合)2.随机事件样本空间Ω的子集三个特殊事件:必然事件,不可能事件,基本事件3.事件的关系与运算(1)关系(包含,相等,互斥,对立)(2)运算(交,并,差)(3)运算法则(交换律,结合律,分配律,对偶律)1.2概率的定义和性质1.事件域三个条件:Ω∈F,A∈F则A非∈F,A1-An∈F则并起来也属于F2.P(A)的性质 (
2020-05-12 18:33:02
849
原创 操作系统——2.1-5线程
线程1.线程的基本概念(1)引入线程的原因增加系统并发的并发度线程:(线程ID,当前指令指针,寄存器集合,堆栈)引入线程后,线程是CPU调度的基本单位,进程是资源分配的基本单位(2)线程的特性和优点引入线程机制后,并发带来的系统开销降低,系统并发性提升从属同一进程的各个线程共享进程拥有的资源引入线程后,线程是CPU调度的基本单位,进程是资源分配的基本单位,线程几乎不拥有资源2.线程的实现方式用户级线程“用户级线程”就是“从用 户视角看能看到的线程”内核级线程“内核级线
2020-05-12 15:26:16
167
原创 操作系统——2.1-4进程通信
进程通信1.进程通信的定义进程通信是指进程之间的信息传递(交换)进程是分配系统资源的单位,各进程拥有的内存地址空间相互独立2.进程通信的类型为了保证安全,一个进程不能直接访问另一个进程的地址空间但是进程之间的信息交换又是必须实现的,为了保证进程间的安全通信,操作系统提供了一些方法(1)共享存储器系统进程对于共享空间的访问是互斥的基于共享数据结构的通信方式(低级通信)基于共享存储区的通信方式(高级通信)(2)管道通信系统一个管道只能实现半双工通信实现双向同时通信要建立两个管道
2020-05-12 15:25:39
94
原创 操作系统——2.1-3进程控制
进程控制1.进程的创建引起创建进程的事件用户登录作业调度提供服务应用请求进程的创建过程申请空白PCB为新进程分配资源初始化进程控制块将新进程插入到就绪队列2.进程的终止引起进程终止的事件正常结束异常结束外界干预进程的终止过程根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态。若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,用于指示该进程,被终止后应重新进行调度。若该进程还有子孙进程,还应将其
2020-05-12 10:18:36
121
原创 操作系统——2.1-2进程的状态与转换
进程的状态与转换1.进程的三种基本状态就绪态:已具备全部条件,没有CPU运行态:占用CPU阻塞态:因等待某一事件,放弃CPU,暂时不能运行其他2种:进程的创建态、终止态2.进程状态的装换3.挂起状态(静止状态)4.进程控制块(1)进程控制块的作用使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能与其它进程并发执行的进程。OS是根据PCB来对并发执行的进程进行控制和管理的PCB是进程存在的唯一标志经常被系统调用,因此应常驻内存;系统将所有
2020-05-12 10:17:52
174
原创 操作系统——2.1-1进程的定义,组成,组织方式,特征
进程的定义,组成,组织方式,特征1.进程的定义和组成进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位进程实体(进程):PCB,程序段,数据段PCB:进程描述信息(进程标识符PID,用户标识符UID)进程控制和管理信息资源分配清单处理机相关信息(各种寄存器值)创建进程:实质上是创建进程实体中的PCB撤销进程:实质上是撤销进程实体中的PCB2.进程的组织方式链接方式索引方式3.进程的特征动态,并发,独立,异步,结构...
2020-05-12 10:16:14
166
原创 数据结构——028树的存储结构(只含双亲表示法,待更)
//双亲表示法#include<iostream>using namespace std;#define MaxSize 50typedef struct { char d1; int d2;}PNode;typedef struct { PNode T[MaxSize]; int n;//结点的个数}PTree;PTree init_tree() { PTree t; int n; cout << "请输入结点个数:"; cin >> n
2020-05-10 19:30:53
136
原创 数据结构——027中序线索二叉树
//中序线索二叉树typedef struct ThreadNode { ElemType data; ThreadNode *lchild, *rchild; int ltag, rtag;}ThreadNode,*ThreadTree;void InThread(ThreadTree &t, ThreadTree &pre) { if (t) { InThread(t->lchild, pre); if (t->lchild == NULL) {
2020-05-10 19:29:18
164
原创 数据结构——026树的层次遍历
#include <iostream>using namespace std;#define MaxSize 50typedef int ElemType;typedef struct BT { ElemType data; struct BT* lchild; struct BT* rchild;}BT, *BiTree;typedef struct Queue{ BiTree data[MaxSize]; int front; int rear;}SqQueue;
2020-05-10 19:28:02
169
原创 数据结构——025中序遍历的非递归遍历
#include <iostream>using namespace std;#define MaxSize 50typedef int ElemType;typedef struct BT { ElemType data; struct BT* lchild; struct BT* rchild;}BT, *BiTree;typedef struct Stack { BiTree data[MaxSize]; int top;}SqStack;void init_s(
2020-05-10 19:25:58
295
原创 数据结构——024树的先中后递归遍历
#include <iostream>using namespace std;typedef int ElemType;typedef struct BT { ElemType data; struct BT* lchild; struct BT* rchild;}BT, *BiTree;//树的建立BiTree Create_T() { BiTree T = new BT; T->data = 1; T->lchild = new BT; T->lch
2020-05-10 19:25:02
82
原创 数据结构——022串的模式匹配算法(BF)
#include <iostream>#include <string>using namespace std;//普通模式匹配算法(BF)int Index(string s1,string s2) {//s1为主串,s2为模式串 int i = 0, j = 0; while (i < s1.size() && j < s2.size()) { if (s1[i] == s2[j]) { i++; j++; } e
2020-05-10 19:24:09
180
原创 数据结构——016中缀转后缀表达式
//中缀转后缀表达式//1.若为'(',直接入栈//2.若为')',出栈直到'(',并删掉栈中的'('//3.若为'+','-','*','/’// (1)栈空,入栈// (2)若栈顶为'(',入栈// (3)若比栈顶优先级高,入栈// 否则,弹出栈顶元素,直到出现'('或者比栈顶优先级低//4.遍历完成,若栈非空依次弹出所有元素#include <iostream>#include <string>using namespace std;#define M
2020-05-10 19:23:05
105
原创 数据结构——015括号匹配
//括号匹配#include <iostream>#include <string>using namespace std;#define MaxSize 50typedef char Elem;typedef struct Stack { Elem data[MaxSize]; int top;}SqStack;void init_s(SqStack &s) { s.top = -1;}bool empty_s(SqStack s) { if
2020-05-10 19:22:16
109
原创 数据结构——012循环队列
//长度int length_q(SqQueue q) { return (q.rear + MaxSize - q.front) % MaxSize;}//入队bool enqueue(SqQueue &q,ElemType e) { if ((q.rear+1)%MaxSize == q.front) return false; q.data[q.rear] = e; q.rear = (q.rear + 1) % MaxSize; return true;}//出队
2020-05-10 19:21:29
156
原创 数据结构——011队列
//队列//只允许在表的一端进行插入,另一端进行删除//队头进行删除操作,队尾进行插入操作//基本操作//初始化,判空,入队,出队,获取队头元素,销毁#include<iostream>using namespace std;#define MaxSize 50typedef int ElemType;//顺序队列typedef struct Queue { ElemType data[MaxSize]; int front; int rear;}SqQueue;
2020-05-10 19:20:44
113
原创 数据结构——009顺序栈
#include <iostream>using namespace std;#define MaxSize 50typedef int ElemType;//顺序存储结构typedef struct Stack { ElemType data[MaxSize]; int top;}SqStack;//初始化void InitStack(SqStack &s) { s.top = -1;}//判空bool empty_s(SqStack s) { if
2020-05-10 19:19:51
170
原创 数据结构——008单链表的合并
#include <iostream>using namespace std;typedef int ElemType;typedef struct LNode { ElemType data; struct LNode* next;}LNode,*LinkList;//初始化链表(含有头结点)LinkList init_linklist() { LinkList p = new LNode;//头结点 p->next = NULL; LinkList L = p;/
2020-05-09 11:10:16
142
原创 数据结构——007单链表的逆置
#include <iostream>using namespace std;typedef int ElemType;typedef struct LNode { ElemType data; struct LNode* next;}LNode,*LinkList;//初始化链表(含有头结点)LinkList init_linklist() { LinkList p = new LNode;//头结点 p->next = NULL; LinkList L = p;/
2020-05-09 11:09:36
170
原创 数据结构——003双向链表
//双链表#include <iostream>using namespace std;typedef int ElemType;typedef struct LNode { ElemType data; struct LNode* prior; struct LNode* next;}LNode, *LinkList;//初始化LinkList init_linklist() { LinkList p = new LNode;//头结点 p->next = NU
2020-05-09 11:08:15
242
原创 数据结构——002单链表
#include <iostream>using namespace std;//线性表的链式表示//通过指针实现线性逻辑关系//结点:数据域,指针域//单链表的基本操作//头插法建立typedef int ElemType;typedef struct LNode { ElemType data; struct LNode* next;}LNode,*LinkList;//初始化链表(含有头结点)LinkList init_linklist() { LinkL
2020-05-09 11:07:26
96
原创 数据结构——001线性表的顺序表示
//线性表的顺序表示#include <iostream>using namespace std;//顺序表//**顺序表是从1开始的,数组是从0开始的typedef int ElemType;//数组静态分配#define Size 5typedef struct{ int length; ElemType data[Size];}SqList;//数组动态分配typedef struct { ElemType *data; int length; int s
2020-05-09 11:00:28
179
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人