自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

转载 Mysql最后一步未响应怎么解决(亲测有效)

就是这种情况,有很多人说删除以前安装目录的mysql  其实只说对了一半,这个只是安装目录。还有一个隐藏的目录没有找到。 点击组织,找到文件夹搜索和搜索选项。然后请注意看图。 选择后会出现一个隐藏的文件,打开它 看一下里面,如果有mysql恭喜你问题应该就出在这里,直接删除就好了。 然后点击mysql重新安装。 我这里已经安装好了 注:刚才C盘那里记得改回来,直接恢复...

2022-04-25 21:06:42 810

原创 算法训练——位运算

位运算在算法中是一种很常见的运算位运算的基本讲解它具有一下性质:1.交换律,可以任意交换运算因子,结果不变2.结合律,即(a ^ b) ^ c = a ^(b ^ c);3.对于任何数x,都有x ^ x = 0 ,x ^ 0 = x,同自己求异或为0,同0求异或为自己4.自反性 A ^ B ^ B = A ^ 0 = A,连续和同一个因子做异或运算,最终结果为自己下面对位运算符进行一定的说明:1.在处理整形数值时,可以直接对组成整形数组的各个位进行操作。2.&(与)、|(或)、^

2022-03-20 12:21:14 334 1

原创 《操作系统》-死锁的概念

什么是死锁?大家还记得哲学家进餐的问题吗,那里面就曾提到过死锁《操作系统》-哲学家进餐问题在此我们再举个例子介绍一下死锁有一首歌的歌词:我爱你,你爱他,他爱她,她爱我……这世界每个人都爱别人……我们从资源占有的角度来分析,这段关系为什么看起来那么纠结简单的说:死锁就是在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象发生死锁后若无外力干涉,这些进程都将无法向前推进死锁、饥饿、死循环的区别首先先介绍一下它们的概念饥饿:由于长时间得不到

2022-03-01 09:48:14 619

原创 《操作系统》-管程

为什么要引入管程信号量作为高层抽象与P、V操作一起来解决了绝大部分的进程同步问题。但这种解决方法也有一定的缺陷:(1)程序易读性差,因为要了解对于信息量的操作是否正确需要读懂整个系统活着并发程序。(2)程序不利于修改或维护,因为程序的局部性很差,所以对任意一组变量一段代码的修改都有可能影响全局。(3)正确性难以保证,因为操作系统或并发程序通常很大,要保证这样一个复杂的系统,没有逻辑错误是很难的(4)容易发生死锁的情况,如果程序员不使用好P、V操作时,逻辑上发生错误,很有可能会导致死锁的发生。那么

2022-02-18 18:54:54 1717

原创 《操作系统》-哲学家进餐问题

什么是哲学家进餐问题?一张圆桌上坐着5名哲学家,每两个哲学家之间的桌上摆一根筷子,桌子的中间是一碗米饭。哲学家们倾注毕生的精力用于思考和进餐,哲学家在思考时,并不影响他人。只有当哲学家饥饿时,才试图拿起左、右两根筷子(一根一根地拿起)。如果筷子已在他人手上,则需等待。饥饿的哲学家只有同时拿起两根筷子才可以开始进餐,当进餐完毕后,放下筷子继续思考。分析哲学家进餐问题互斥关系5位哲学家与左右邻居对中间筷子的访问是互斥的如何解决这个问题只有互斥关系,但与之前遇到的不同的是,哲学家进餐问题需要每个哲学

2022-02-14 21:30:31 1256 1

原创 《操作系统》-读者-写者问题

什么是读者-写者问题?有读者和写者两组并发进程,共享一个文件,当两个或两个以上的读进程同时访问共享数据时不会产生副作用,但若某个写进程和其他进程(读进程或写进程)同时访问共享数据时则可能导致数据不一致的错误。因此要求:①允许多个读者可以同时对文件执行读操作;②只允许一个写者往文件中写信息;③任一写者在完成写操作之前不允许其他读者或写者工作;④写者执行写操作前,应让已有的读者和写者全部退出分析读者-写者问题互斥关系写进程和写进程访问共享数据时互斥写进程和读进程访问共享数据时互斥如何实现我们先来

2022-02-13 15:12:34 498

原创 《操作系统》-吸烟者问题

什么是吸烟者问题?假设一个系统有三个抽烟者进程和一个供应者进程。每个抽烟者不停地卷烟并抽掉它,但是要卷起并抽掉一支烟,抽烟者需要有三种材料:烟草、纸和胶水。三个抽烟者中,第一个拥有烟草、第二个拥有纸、第三个拥有胶水。供应者进程无限地提供三种材料,供应者每次将两种材料放桌子上,拥有剩下那种材料的抽烟者卷一根烟并抽掉它,并给供应者进程一个信号告诉完成了,供应者就会放另外两种材料再桌上,这个过程一直重复(让三个抽烟者轮流地抽烟)如何对吸烟者问题进行分析互斥关系对临界资源(桌子)的访问是互斥的同步关系

2022-02-13 14:03:51 656

原创 《操作系统》-生产者消费者问题

什么是生产者消费者问题?系统中有一组生产者进程和一组消费者进程。生产者进程每次生产一个产品放入缓冲区,消费者进程每次从缓冲区中取出一个进程并使用,那么他们之间具有这样一层关系生产者、消费者共享一个初始为空、大小为n的缓冲区。只有缓冲区没满时,生产者才能把产品放入缓冲区。否则必须等待 (缓冲区没满->生产者生产)只有缓冲区不空时,消费者才能从中取出产品,否则必须等待 (缓冲区不空->消费者消费)缓冲区是临界资源,各进程访问时要求互斥 (互斥访问)对生产者消费者问题进行分析由上面的描

2022-02-12 13:46:59 17054 12

原创 如何用信息量机制实现进程互斥、进程同步和前驱关系

在这之前大家可以参考一下这篇文章《操作系统》-信号量机制的初识对信息量进制有个大致的了解信号量进制实现进程互斥实现进程互斥时可以分为以下几个步骤:1、分析并发进程关键活动,划分临界区(如:对临界资源打印机的访问就应放在临界区)2、设置互斥信号量mutex,初值为0(信号量mutex表示“进入临界区的名额”)3、在进入区P(mutex)——申请资源4、在退出区V(mutex)——释放资源注意:对不同的临界资源需要设置不同的互斥信息量P、V操作必须成对出现。缺少P操作会导致临界资源不能被互斥

2022-02-11 14:03:42 1557

原创 《操作系统》-信号量机制的初识

信号量机制信号量机制可以分为整型信号量和记录型信号量信号量机制的作用用户进程可以通过使用操作系统提供的一对原语来对信号量进行操作,从而很方便的实现了进程互斥和进程同步信号量其实就是一个变量(可以是一个整数,也可以是更复杂的记录型变量),可以用一个信号量来表示系统中某些资源的数量,比如:系统中只有一台打印机,就可以设置一个初始值为1的信号量一对原语:指wait(S)原语和signal(S)原语,可以把原语理解为我们自己写的函数,函数分别为wait和signal,括号里的信号量S其实就是调用函数时传

2022-02-11 12:15:16 804

原创 《操作系统》-进程互斥的实现方法

进程互斥的实现方法引言如果没有进程互斥会怎么样呢?进程A、进程B在系统中并发地运行先调度A上处理机运行当A在使用打印机的过程中,分配给它的时间片用完了,接下来操作系统调度B让它上处理机运行进程B也在使用打印机结局:A、B 的打印内容混在一起了所以我们的进程互斥是必不可少的通过这篇文章,我们分别来说进程互斥的软件实现方法和硬件实现方法软件实现方法单标志法...

2022-01-28 15:52:59 1978

原创 《操作系统》-进程同步和进程互斥的初识

进程同步和进程互斥什么是进程同步举个例子:进程通信—管道通信读进程和写进程并发地运行,由于并发必然导致异步性,因此“写数据”和“读数据”两个操作执行的先后顺序是不确定的。而实际应用中,又必须按照“写数据->读数据”的顺序来执行的。如何解决这种异步问题,就是 “进程同步”所讨论的内容同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而产生的制约关系。进程之间的直接制约关系就是源于它们之间的相互合作。我们把一个时间段内只允许一个进

2022-01-23 17:17:51 231

原创 《操作系统》-进程调度时机切换与过程调度方式

进程调度时机切换与过程调度方式进程调度的时机进程调度(低级调度),就是按照某种算法从就绪队列中选择一个进程为其分配处理机进程在操作系统内核程序临界区中不能进行调度和切换,但进程在普通临界区中是可以进行调度、切换的临界资源:一个时间段内只允许一个进程使用的资源。各进程需要互斥地访问临界资源临界区:访问临界资源的那段代码内核程序临界区一般是用来访问某种内核数据结构的,比如进程的就绪队列进程调度的方式非剥夺调度方式,又称非抢占方式。即只允许进程主动放弃处理机。在运行过程即使有更紧迫的任务到

2022-01-22 14:16:35 357

原创 《操作系统》-调度算法

调度算法在了解调度算法之前我们先了解一下调度算法的评价指标从这几个方面入手:CPU利用率、系统吞吐量、周转时间、等待时间、响应时间CPU利用率:指CPU“忙碌”的时间占总时间的比例由于早期的CPU造价极其昂贵,因此人们会希望让CPU尽可能多地工作系统吞吐量:单位时间内完成作业的数量对于计算机希望尽可能少的时间处理完尽可能多的作业周转时间:是指从作业被提交给系统开始,到作业完成为止的这段时间间隔对于计算机用户来说,他很关心自己的作业从提交到完成花了多少时间他包括四个部分:作业在外

2022-01-22 14:16:09 4227

原创 《操作系统》-处理机调度

处理机调度调度的基本概念当有一堆任务要处理,但资源有限,这些事情没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序,这就是“调度”研究的问题作业:一个具体的任务用户向系统提交一个作业 ≈ 用户让操作系统启动一个程序(来处理一个具体的任务)调度的三个层次高级调度(作业调度)按照一定的原则从外存的作业后备队列中挑选一个作业调入内存,给他们分配内存等必要的资源,并创建进程,以使他们获得竞争处理机的权利。每个作业只能调入一次,调出一次。作业调入时会建起PCB,调出时才撤销PCB高级调度是

2022-01-21 14:55:14 387

原创 《操作系统》-线程的概念与多线程的模型

线程的概念与多线程的模型前言什么是线程,为什么引入线程进程是程序的一次执行,但进程处理的每个程序只能是程序的顺序处理,这个程序无法“同时”做多个事情,而有的进程可能需要“同时”做很多事情,而传统的进程只能串行地执行一系列程序。为此,引入了“线程”,来增加并发性。传统的进程是程序执行流的最小单位,引入线程后,线程成为了程序执行流最小的单位。我们可以把线程当做“轻量级的进程”。线程是一个基本的CPU执行单元,也是程序执行流的最小单位。引入线程之后,不仅仅是进程之间可以并发,进程内的各线程之间也可以

2022-01-21 13:03:21 901 2

原创 《操作系统》-进程通信

进程通信进程通信是什么?顾名思义,进程通信就是指进程之间的信息交换进程是分配系统资源的单位(包括内存地址空间)因此各进程拥有的内存地址空间相互独立但是进程之间的信息交换又是必须实现的,为了保证进程间的安全通信,系统提供了一些方法:共享存储、消息传递、管道通信共享存储共享存储就是两个进程之间通过共享空间来共享数据两个进程对共享空间的访问必须是互斥的(互斥访问通过操作系统提供的工具实现)操作系统只负责提供共享空间和同步互斥工具(如p、v操作)共享存储:基于数据结构的共享和基于存储区的共享基

2022-01-20 21:17:04 231

原创 《操作系统》-进程的控制

进程的控制进程控制的主要功能是对系统中所有进程实施有效地管理,创建新的进程,撤销已有进程,实现进程状态的转换等功能。简化理解:反正进程就是要实现进程之间的转换如何实现进程控制用原语实现进程控制,原语是一种特殊的程序,它的执行具有原子性,即执行过程中不允许中断,只能一气呵成。思考:为什么在进程控制(状态转换)的过程中要一气呵成呢?如果不能“一气呵成”,就有可能导致操作系统中某些关键数据结构不统一的情况,这会影响操作系统进行别的管理。(如:PCB的状态标志和PCB的状态未统一)。原语可以用“关中断

2022-01-19 21:38:26 389

原创 蓝桥杯-阶乘运算和高精度加法(Java)

蓝桥杯-阶乘运算和高精度加法因为我感觉这两种题型都是对高精度的考察,都可以用数组代替整形进行数字运算,所以我把这两种题型放在一起了。阶乘运算先看一下题目解这种题目目前我知道的有两种解题思路:第一种解法使用数组来表示一个大数,使用数组来进行乘法运算这种解法关键要记住如何进行乘法运算主要是如何进位设置一个数temp,temp等于当前位上的数a[j]与乘数i的乘积再加上上一位的进位jw,这时很明显现在当前位上的数就是temp%10,而下位数的进位就是temp/10了,这个是解题的关键,在高精度加

2022-01-18 16:10:00 975 1

原创 Sematic UI框架的学习-button样式(2)

Sematic UI - button接着上次的内容Sematic UI框架的学习-button样式(1)接下来说一下按钮的一些变形按钮的激活和禁用状态<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="vie

2022-01-18 15:02:33 661

原创 《操作系统》-操作系统的运行机制

操作系统的运行机制程序是如何运行的指令:就是处理器(CPU)能识别、执行的最基本命令注:很多人习惯把 Linux、Windows、MacOS 的“小黑框”中使用的命令也称为“指令”,其实这是“交互式命令接口”,注意与本节的“指令”区别开。本节中的“指令”指二进制机器指令内核程序vs应用程序我们普通程序员写的程序就是"应用程序"而对于那些操作系统的开发者,他们写的是"内核程序",由很多内核程序又能组成操作系统内核简称内核。内核是操作系统的核心部分,也是最接近硬件的部分。特权指令vs非特权指令

2022-01-18 14:01:03 3567

原创 《操作系统》-进程的状态和转换

进程的状态和转换在上一篇文章了,我们已经简单的介绍了一下进程,如果对进程是什么不是很了解的朋友可以看一下这篇博客《操作系统》-进程的定义组成和特征进程的状态进程的三种基本状态分别为运行态、就绪态、阻塞态除了这三种基本状态以外,还有另外两种状态创建态:操作系统需要完成创建进程。操作系统为该进程分配所需的内存空间等系统资源,并为其创建、初始化PCB(如:为进程分配PID)终止态:进程运行结束,需要撤销进程。操作系统需要完成撤销进程的相关工作。完成将分配给进程的资源回收,撤销PCB等工作进程的

2022-01-18 13:08:34 87

原创 《操作系统》-进程的定义组成和特征

进程的定义组成和特征进程的定义程序:就是一个指令序列早期的计算机只支持单道程序引用多道程序技术:为了方便操作系统管理完成各程序并发执行,引入了进程和进程实体的概念进程实体(进程映像):由PCB、程序段、数据段三部分组成。 一般情况下我们把进程实体就简化为进程,例如:所谓创建进程,实际上是创建进程实体中的PCB,而撤销进程,实际上就是撤销进程实体中的PCB。注意:PCB是进程存在的唯一标志从不同的角度,进程可以有不同的定义,比较传统典型的定义有:1、进程是程序的一次执行过程2、进程是一个程序

2022-01-16 21:31:33 561

原创 Sematic UI框架的学习-button样式(1)

Sematic UI - button首先在使用Sematic UI框架时,我们需要先引用一写现成的js 和 css,下面是我在网上找到的,大家可以直接拿去使用。 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/semantic-ui@2.4.2/dist/semantic.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.2/dis

2022-01-16 17:42:18 556

原创 蓝桥杯-杨辉三角形(Java)

杨辉三角形杨辉三角形这种题目算比较常见的了,不是很复杂,但写这篇博客主要是因为有一种相对来说比较巧妙的解法想要分享给大家。解法一、利用二位数组来解代码如下:import java.util.Arrays;import java.util.Scanner;public class Main{ public static void main(String[] args) { // java数组在创建后内容都会被0填满,用Arrays.fill可以将整个一位数组里存入同一个元

2022-01-15 22:54:19 1056 5

原创 《操作系统》- 系统调用

系统调用什么是系统调用,我们先看下面这张图片回忆一下:我们都知道用户接口可分为两个。分别是命令接口和程序接口。而“系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应应用程序调用的特殊函数,应用程序可以发出系统调用请求来获取操作系统的服务。应用程序通过系统调用请求操作系统的服务,系统中各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、I/O操作、文件管理等等),都必须通过系统调用的方式向操作系统提出请求,由操作系统完成。这样可以保

2022-01-15 22:40:23 501

原创 《操作系统》-中断与异常

中断和异常中断的基本概念:本质:发生中断就意味着需要操作系统介入,开展管理工作。下面我们通过一组图片来了解几个进程是如何并发的执行的通过这组图片我们可以发现:1、当中断发生时,CPU立即进入核心态2、当中断发生后,当前运行的进程停止运行,并由操作系统内核对中断进行处理。3、对于不同的中断信号,会进行不同的处理发生了中断就意味着需要操作系统介入,开展管理工作。由于操作系统的管理工作(比如进程切换,分配I/O设备等)需要使用特权指令,由此CPU要从用户态转为核心态。中断可以使C

2022-01-15 22:05:06 367

原创 《操作系统》-操作系统的四个特征

操作系统的四个特征分别为并发、共享、虚拟、异步,其中并发和共享是两个最基础的特征,二者互为存在条件,接下来我们从这四个方面逐个介绍。一、并发并发指两个或多个事件在同一时间间隔内发生。这些事情宏观上是同时发生的,但微观上是交替发生的。与之相似的还有并行——并行:指两个或多个事件在同一时刻同时发生大家注意区分操作系统的并发性指计算机系统中“同时”运行着多个程序,这些程序宏观上看是同时运行着的,而微观上看是交替运行的。对于并发和并行我们需要注意一下:单核CPU同一时刻只能执行一个程序,各个程序只能

2022-01-15 21:26:42 1271

原创 蓝桥杯-十六进制转八进制(Java)

蓝桥杯训练题目-十六进制转八进制,写入了我的尝试和写题时的思考,希望能给大家带来帮助

2022-01-14 21:25:57 5063 2

原创 java中类的继承

java中继承首先,让我们了解一下什么是继承?继承是面向对象软件技术当中的一个概念,与多态、封装共为面向对象的三个基本特征。JAVA的继承是通过已存在的类作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能。继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。所以是面向对象这一块需要掌握的重点。通过extends来建立类与类之间的关系public class A{}//定义一个类

2021-05-23 22:41:42 2025

原创 单例设计模式的详细讲解

单例设计模式1.什么是单例设计模式?单例设计模式是设计模式中最常见的一种。设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。2.在什么时候使用单例设计模式?(1)在设计一些工具类的时候(通常工具类,只有功能方法,没有属性)(2)可能会被频繁调用的工具类3.为什么要使用单例设计模式?单例设计模式为了避免因为创建了多个实例造成资源的浪费,且多个实例由于多次调用容易导致结果出现错误,而使用单例模式能够保证整个应用中有且只有一个实例。4.单

2021-05-16 22:46:48 362

原创 代码块的详细讲解

代码块(静态代码块和构造代码块)静态代码块1.为什么要使用静态代码块?静态代码块中的代码会在类加载JVM时运行,且只会被执行一次JVM类加载分为5个过程:加载,验证,准备,解析,初始化。2.什么时候使用静态代码块?一般情况下,如果有些代码必须在项目启动时就执行,就需要使用静态代码块。3.静态对象优于各种代码块以及构造方法,如果一个类中有多个构造对象,按照书写顺序排序。4.静态代码块中的代码不需要被实例化类就可以被调用,所有静态代码块中无法调用类中的属性。5.静态块常用来执行类属性的初始化

2021-05-09 18:19:08 452

原创 JAVA的构造方法

Java的构造方法1、为什么要使用构造方法?构造方法的主要作用是完成对象初始化工作进行,当对面向对象的属性进行封装时,它能够把定义对象的参数传给对象的域public class Dog{ private String name;//对类的属性进行封装 private String sex; private int age; public Dog(String name,String sex,int age){//把定义对象的参数传给对象的域 super(

2021-05-08 17:55:34 324

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除