- 博客(24)
- 收藏
- 关注
转载 window下执行 npm run electron:build报如下错误:
• building target=nsis file=packersZhaizhishe-setup-0.0.1.exe archs=x64, ia32 oneClick=trueError: C:UsersAdministratorAppDataLocalelectron-buildercachensisnsis-3.0.3.0Binmakensis.exe exited with code 1Output:Command line defined: “APP_ID=org.lzj.demo1”
2021-06-15 22:33:55
1293
原创 操作系统(王道考研):死锁
1、什么是死锁?在并发的环境下,各进程在竞争资源的情况下造成的一种互相等待对方占有的资源,导致各个进程发生阻塞,无法向前推进的现象,就是死锁2、死锁、饥饿、死循环的区别和共同点?共同点:进程无法顺利的向前推进(除了故意设计死循环)区别:死锁是竞争资源,导致进程阻塞,进程无法向前推进的现象。饥饿是长期得不到想要的资源,导致进程无法向前推进的现象。例如短进程优先算法中,长进程可能一直得不到资源,所以会发生长进程“饥饿”。死循环:进程一直跳不出某一个循环,导致进程处于死循环状态,不过这个死循环的设计也
2021-05-08 16:36:35
428
原创 操作系统(王道考研):进程与线程
1、进程的概念、组成以及特征(1)概念:进程是动态的,是程序的一次执行过程,是CPU分配资源的基本单位。(2)组成:进程控制块(PCB):操作系统对进程进行管理工作所需的信息都存在PCB中。PCB中主要包括:进程描述信息、进程控制和管理信息、资源分配清单、处理机相关信息。程序段:程序代码(指令序列)。数据段:运行过程中产生的各种数据。(3)特征:动态性(进程最基本的特征)、并发性、独立性、异步性、结构性2、进程的状态(1)三种基本状态:运行态、就绪态、阻塞态运行态:占有CPU,并且在CPU上运
2021-05-05 20:37:06
331
原创 操作系统(王道考研):中断和异常以及系统调用
1、中断的作用“中断”会让CPU由用户态变为内核态,使操作系统重新夺回对CPU的控制权。并且“中断”是操作系统内核夺回CPU使用权的唯一途径内核态——>用户态: 执行一条特权指令——修改PSW的标志位为“用户态” , 这个动作意味着操作系统将主动让出CPU使用权。用户态——>内核态: 由“中断” 引发, 硬件自动完成变态过程, 触发中断信号意味着操作系统将强行夺回CPU的使用权。2、中断的类型内中断(异常):通过陷阱、陷入指令来引发异常,应用程序主动将CPU控制权还给操作系统内核,“系
2021-04-29 20:10:20
1092
原创 操作系统(王道考研):操作系统的概念以及特征
前言:为了秋招工作,简单记录重要知识,仅做自己总结消化重要知识点1、操作系统的概念控制和管理整个计算机系统的硬件和软件资源,并且合理地组织调度计算机的工作和资源的分配,提供给用户和其他软件比较方便的接口和环境,是计算机系统中最基本的系统软件。2、功能和目标对资源进行管理:(重点):处理机管理、存储器管理、文件管理、设备管理向上层提供服务:(重点):给软件或者程序员提供程序接口——>系统调用对硬件机器的扩展3、操作系统的特征:并发、共享、虚拟、异步并发:指两个或者多个时间在同一时间间隔
2021-04-29 15:47:32
430
原创 HTTP和HTTPS的区别
1、安全性上,HTTPS是安全超文本协议,在HTTP基础上有更强的安全性。简单来说,HTTPS是使用TLS/SSL加密的HTTP协议2、申请证书上,HTTPS需要使用ca申请证书3、传输协议上, HTTP是超文本传输协议,明文传输;HTTPS是具有安全性的 SSL 加密传输协议4、连接方式与端口上,http的连接简单,是无状态的,端口是 80; https 在http的基础上使用了ssl协议进行加密传输,端口是 443...
2021-04-24 09:16:47
109
原创 在浏览器输入URL回车之后的过程:
1、根据域名查询域名的IP地址DNS解析(DNS寻址)先查找浏览器缓存,如果没命中,查询系统缓存,即hosts文件。如果没命中,查询路由器缓存。如果没命中,请求本地域名服务器解析域名,没有命中就进入根服务器进行查询,没有命中就返回顶级域名服务器IP给本地DNS服务器。本地DNS服务器请求顶级域名服务器解析,没有命中就返回主域名服务器给本地DNS服务器。本地DNS服务器请求主域名服务器解析域名,将结果返回给本地域名服务器。本地域名服务器缓存结果并反馈给客户端。2、建立TCP连接(三次握手)3、发送HT
2021-04-23 10:34:14
188
原创 TCP的连接释放:四次挥手
参与一条TCP连接的两个进程中的任何一个进程都可以终止该TCP连接,当连接结束之后,主机中的资源(缓存和变量)将会被释放。这就是所说的“TCP四次握手”第一次握手:客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接。此时FIN=1(终止位:为1时表明此报文段发送方数据已发完,要求释放连接),seq=u(随机的数)第二次握手:服务器端返回一个确认报文段,此时客户端到服务器该方向的连接就释放了,此时整个TCP连接处于“半关闭状态”。此时,ACK=1,seq=v,ack=u+1。第三次握手:服务
2021-04-23 10:04:11
1124
原创 TCP的连接建立:三次握手
前提条件:在一台主机(客户端)中的一个进程想和另一台主机(服务器端)上的一个进程建立一条连接,客户端应用进程首先通知客户端TCP,告知其想和一个服务器上的某个进程建立连接,客户中的TCP会通过三次握手与服务器的TCP建立一条属于TCP的连接。第一次握手:客户端发送连接请求报文段,等待服务器确认,这个时候没有携带应用层数据。此时同步位SYN=1,表明这是一个连接请求报文。seq=x第二次握手:服务器端为该TCP连接分配缓存和变量,并且向客户端返回确认报文段,允许连接,也没有应用层数据。此时SYN=1,
2021-04-22 10:16:48
589
原创 TCP和UDP的区别以及TCP粘包现象
TCP和UDP的区别TCP提供可靠的、面向连接的运输服务。在传输数据之前必须三次握手建立连接,数据传输结束之后,4次挥手释放连接,而且在数据传递时,又有确认应答、超时重传、滑动窗口(流量控制,防止较快主机致使较慢主机的缓冲区溢出)、拥塞控制(慢开始、拥塞避免、快重传、快恢复)等机制保证传送数据的可靠性。TCP经常用于对网络通信质量有很高要求的地方,如文件传输,邮件发送,远程登录等场景。UDP在传送数据之前不需要建立连接,目的主机收到UDP报文后,不需要给出确认。UDP不提供可靠交付,一般用于即时通信,如
2021-04-22 09:41:04
357
转载 缓存(cache)和缓冲(buffer)
缓冲区(buffer)与缓存(cache)下面介绍缓冲区的知识。一、什么是缓冲区缓冲区(buffer),它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区,显然缓冲区是具有一定大小的。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。二、为什么要引入缓冲区我们为什么要引入缓冲区呢?高速设备与低速设备的不匹配,势必会让高速设备花时间等待低速设备,我们可以在这两者之间设立一个缓冲区。缓冲区的作用
2021-04-22 09:27:16
510
原创 在主机windows中对虚拟机CentOS 7中的MySQL进行操作
第一步:启动虚拟机 CenOS 7第二步:打开cmd 输入:ssh root@192.xxx.xx.xxx输入虚拟机系统的密码,进入到虚拟机系统这里的192.xxx.xx.xxx是虚拟系统CentOS 7的ip地址注意:输密码的时候直接输就行,这里是不显示出来的第三步:打开Navicat进行设置第四步:连接完成...
2021-04-20 16:04:02
248
原创 查找算法(三):插值查找
插值查找算法的思路插值查找算法的基本思路是与二分查找是类似的,只不过是将索引的求法变为了:mid = left + (right - left)*(findVal - arr[left])/(arr[right] - arr[left])插值查找算法的代码实现 public static int insertValueSearch(int[] arr,int left,int right,int findVal){ //该条件必须需要,否则得到的mid容易越界
2021-04-14 16:53:42
103
原创 查找算法(二):二分查找
二分查找的思路1、将待查找的数组arr[]进行排序,这里进行二分查找的数组规定是有序的。接下来的讨论是基于升序的数组进行的。2、确定待查找数组的中见下标 mid = (left + right) / 2;让中间值与待查找的目标值findVal进行比较。3、分为以下几种情况:当findVal > arr[mid]时,则向右进行递归二分查找;当findVal < arr[mid]时,则向左进行递归二分查找;当findVal == arr[mid]时,则返回mid。4、结束递归:当找到待查
2021-04-13 09:24:39
104
原创 查找算法(一):顺序(线性)查找
顺序查找算法的思路:通过对待查找的数组中的元素与目标值进行一一比较,找到目标值对应的索引就输出。顺序查找算法的代码实现: public static void seqSearch(int[] arr, int value) { for (int i = 0; i < arr.length; i++) { if (arr[i] == value) { System.out.printf("所在的索引是:%d",i);
2021-04-13 08:50:41
151
原创 排序算法(七):归并排序
归并排序的思路主要分为“分”“合”两个过程分:将待排序的数分为若干组,直到每个数为一组合:将若干个组两两合并,保证合并后的组是有序的重复上一步,直至最后只有一组,且这一组是有序的利用示意图进行说明:其中在合并的过程中,不仅需要合并,还需要排序,例如在最后一次合并的时候,4578和1236,不仅需要合并还需要排序,示意图如下:可见在合并的时候,需要一个临时数组,需要对排序后的数进行存储。待合并完成后,将临时数组中的数拷贝到原数组。归并排序的性质1、平均时间复杂度:O(nlogn)2、最
2021-04-10 11:23:15
217
原创 排序算法(六):堆排序
堆排序的思路堆排序是采用堆这种数据结构来得到的一种排序算法,其中堆是一种完全二叉树,且分为大顶堆和小顶堆。大顶堆:每个结点的值都大于或等于其左右子结点的值;小顶堆:每个结点的值都小于或等于其左右子结点的值。在利用堆排序进行排序时,升序一般采用大顶堆,降序采用小顶堆。接下来以升序为例,讲一下堆排序的思路:1、将待排序的序列(含n个数)构造成一个大顶堆;2、构造之后,大顶堆的根结点就是整个序列的最大值;3、将其余末尾元素进行交换,此末尾的元素就变成了最大值;4、然后再将剩下的n-1个数构造成一个
2021-04-10 10:43:38
225
原创 排序算法(五):选择排序
选择排序的思想选择排序是按照从小到大进行排序。以数组为例,对数组中的数进行选择排序。1、外循环是通过进行(数组大小-1)轮排序。2、内循环是每一轮排序中,先假定当前的数是最小数,下标为最小数下标;然后将该数与之后的每一个数进行比较,如果有发现比当前数更小的数,就重新确定最小的数,并得到下标;然后将该数最开始假定为最小数的值进行交换。选择排序的性质1、平均时间复杂度:O(n^2)2、最差时间复杂度:O(n^2)3、不稳定选择排序的代码实现 public static void sel
2021-04-08 10:54:20
246
原创 排序算法(四):希尔排序算法
希尔排序算法的思路希尔排序算法也是一种插入排序,由于在直接插入算法中,当要插入的数很小的时候,有序表中的后移次数会增多,所以会影响效率。希尔排序是将待排序的元素按照一定的增量(gap)进行分组,在每一组中进行直接插入排序,在一个增量下完成每组的直接插入排序后,更新增量,再进行每组的直接插入排序。直至增量为1,则排序完成。希尔排序算法的性质1、最差时间复杂度:O(n^s)其中1<s<2,s是所选的分组2、平均时间复杂度:O(nlogn)3、稳定性:不稳定希尔排序算法的代码实现这里进
2021-04-01 11:09:44
181
原创 排序算法(三):直接插入排序
直接插入排序算法的思路1、将n个待排序的元素看成是由一个有序表和一个无序表组成,其中最开始有序表中只包含第一个元素,无序表包含n-1个元素。2、排序的过程中,每次从无序表中取出第一个元素,将其与有序表中的元素进行比较,插入到有序表中适当的位置,对有序表进行更新。3、最终的有序表即是最终的排序结果。直接插入排序算法的性质1、最坏时间复杂度:O(n^2)2、平均时间复杂度:O(n^2)3、稳定性:稳定直接插入排序算法的代码实现这里进行从小到大排序 public static void
2021-04-01 10:40:13
339
1
原创 排序算法(二):快速排序
快速排序的思想快速排序的思想可以通过四句话来描述:确定中轴值pivot将大于pivot的值放到其右边将小于pivot的值放到其左边对左右子序列重复前三步,即递归具体的原理视频推荐:我认为讲的最好的快速排序视频快速排序的性质平均时间复杂度:O(n*logn)最差时间复杂度:O(n^2)不稳定。即排序前两个相等的数A和B,A在B的前面,但是在排序之后可能变为B在A的前面快速排序的代码实现——以首元素为中轴值 public static void quickSort1(int[]
2021-03-23 11:24:02
416
4
原创 排序算法(一):冒泡算法
冒泡算法原理冒泡算法是一种内排序算法,并且是属于交换排序,其中八大排序算法中快速排序也是属于交换排序。通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,两两为一组,排序若为从小到大则发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。冒泡算法包含两层for循环。第一层:循环比较的次数i,第一次循环则会将数组中最大数排到最后一位,以此类推。第二层:在每次循环比较中,进行两两循环比较,所以比较的下标应该是小于数组长度-1-循环的次数i参考一例动图可以很
2021-03-23 09:55:57
216
2
原创 如何将VMware创建的虚拟机在VirtualBox中打开并且运行
如何将VMware创建的虚拟机在VirtualBox中打开并且运行第一步:导出已有的由Vmware创建的虚拟机系统打开Vmware,并且将自己要导出的系统打开,但是要处于关机状态。第二步:选择左上角“文件”→“导出为OVF”,接下来等几分钟就会生成三个文件:xxx.mf xxx.ovf. xxx.vmdk 这三个文件要放在一个文件夹中第三步:打开virtualbox,选择“管理”→“导入”,将刚刚导出的xxx.ovf导入,注意:在设置virtualbox虚拟机存储文件的路径时不能出现中文字符!!!!
2020-11-23 21:30:20
3931
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人