自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 自学Java-Java高级技术(单元测试、反射、注解、动态代理)

1

2025-03-12 12:54:59 298

原创 自学Java-JavaSE基础加强(Java网络编程)

1

2025-03-07 19:33:04 233

原创 自学Java-JavaSE基础加强(多线程)

1

2025-03-06 22:25:32 331

原创 自学Java-JavaSE基础加强(File、IO流)

wu

2025-03-05 17:38:37 227

原创 自学Java-JavaSE基础加强(集合框架、Stream流)

2025-03-02 01:35:45 188

原创 自学Java-JavaSE基础加强(异常,泛型,集合框架)

java

2025-02-26 18:24:00 291

原创 AcWing 843. n-皇后问题(DFS)

【代码】AcWing 843. n-皇后问题(DFS)

2025-02-23 00:16:45 195

原创 AcWing 92. 递归实现指数型枚举(DFS)

【代码】AcWing 92. 递归实现指数型枚举(DFS)

2025-02-22 11:58:25 205

原创 P3143 [USACO16OPEN] Diamond Collector S(双指针算法)

奶牛 Bessie 一直喜欢闪闪发光的物体,她最近在业余时间开始了一项爱好——挖掘钻石!由于 Bessie 希望每个展示柜中的钻石大小相对接近,她决定如果两颗钻石的大小相差超过。输出一个正整数,表示 Bessie 可以在两个展示柜中一起展示的最大钻石数量。行每行包含一个整数,表示一颗钻石的大小。,请帮助 Bessie 确定她可以在两个展示柜中一起展示的最大钻石数量。,就不能将它们放在同一个展示柜中(如果两颗钻石的大小相差恰好为。),并希望将它们中的一部分放在谷仓里的两个展示柜中展示。颗大小各不相同的钻石(

2025-02-22 11:01:24 895

原创 自学Java-AI结合GUI开发一个石头迷阵的游戏

数字华容道的乱序操作,并不是可以随意打乱的,必须满足一定的算法去打乱顺序,这样才是有解的,才能让玩家恢复到有序。导入项目需要的资源包到src目录下:主要是一些图片文件,在image文件夹下。用户每操作一步,需要立即判断是否已经通关,如果通过,需要显示胜利的标记。–根据用户点击的方位确定交换哪个数据,到数组中交换。打乱界面的图片顺序,让游戏具备可玩性:使用方法如下。定义一个变量用于累加步数,并实时展示到界面上。–让主界面按照二维数组的最新内容刷新界面。初始化界面菜单:系统退出,重启游戏。

2025-02-21 18:56:50 774

原创 AcWing 1236. 递增三元组(蓝桥杯C++ AB辅导课)(双指针算法)

【代码】AcWing 1236. 递增三元组(蓝桥杯C++ AB辅导课)

2025-02-19 22:38:53 158

原创 自学Java-面向对象高级(代码块、内部类、函数式编程、常用API、GUI编程)

}} }

2025-02-19 21:25:37 725

原创 Acwing-基础算法课笔记之基础算法(双指针)

同向扫描的两个指针称为“快慢指针”,快慢指针在序列上产生一个大小可变的“滑动窗口”,有灵活性应用。双指针(又称尺取法)是一个常用的优化技巧,用来解决序列的区间问题。1、反向扫描:i、j方向相反,i从头到尾,j从尾到头,在中间相会。2、同向扫描:i、j方向相同,都从头到尾,可以让j跑在i前面。问题描述:将单词abc def ghi按列输出出来。

2025-02-15 23:44:44 304

原创 自学Java-面向对象高级(final、单例类、枚举类、抽象类、接口)

∙\bullet∙Java提供了一个关键字interface定义接口。∙\bullet∙注意:接口不能创建对象∙\bullet∙接口是用来被类实现(implements)的,实现接口的类称为实现类,一个类可以同时实现多个接口。

2025-02-15 18:24:12 1261

原创 Acwing-基础算法课笔记之基础算法(差分)

对于一个给定的序列a,它的差分序列b定义为:b[1]=a[1]b[1]=a[1]b[1]=a[1],b[i]=a[i]−a[i−1]b[i]=a[i]-a[i-1]b[i]=a[i]−a[i−1],(2⩽i⩽n)(2\leqslant i\leqslant n)(2⩽i⩽n)b是a的差分序列,a是b的前缀和序列,差分与前缀和是一对互逆运算。a[1]=b[1]a[1]=b[1]a[1]=b[1],a[2]=b[2]+a[1]=b[2]+b[1]a[2]=b[2]+a[1]=b[2]+b[1]a[2]=

2025-02-11 22:43:29 594

原创 Acwing-基础算法课笔记之基础算法(前缀和)

减去s[x1-1,y2],s[x2,y1-1]两个二维前缀和后,左上角还有一部分是重合的,所以要加s[x1-1,y1-1]

2025-02-11 21:38:19 661

原创 自学Java-面向对象高级(继承、多态)

∙\bullet∙Java中提供了一个关键字extends,用这个关键字,可以让一个类和另一个类建立起父子关系。子类能继承啥?∙\bullet∙子类能继承父类的非私有成员(成员变量、成员方法)继承后对象的创建∙\bullet∙子类的对象是由子类、父类共同完成的。∙\bullet∙就是用来限制类中的成员(成员变量、成员方法、构造器)能够被访问的范围。∙\bullet∙多态是在继承/实现情况下的一种现象,表现为:多对象,行为多态。

2025-02-09 16:13:11 556

原创 自学Java-面向对象编程入门

3、实例方法中可以出现this关键字,静态方法中不可以出现this关键字的。2、实例方法中既可以直接访问静态成员,也可以直接访问实例成员。1、静态方法中可以直接访问静态成员,不可以直接访问实例成员。1、展示系统中的全部电影信息(每部电影展示:名称、价格)2、允许用户根据电影编号(id)查询出某个电影的详情信息。使用所学的面向对象编程实现以上2个需求。

2025-02-06 19:58:11 280

原创 Acwing-基础算法课笔记之基础算法(二分)

然后将27与mid下标所在的数做比较,如果27<a[mid],则将指针right更新,如果27>a[mid],则将指针left更新,最终找到目标数。需要定义两个变量,一个left,一个right,分别指向下标1和最后一个元素的下标11,确定查找的范围。取中间位置:mid=(left+right)/2,即mid=(1+11)/2=6。1、必须是数组(顺序表)

2025-01-20 21:41:47 330

原创 操作系统课后习题2.2节

指的是进程之间的同步互斥关系,进程是一个动态的过程,我们在刚开始进程调度的时候,我们是不知道进程在整个生命周期当中它和其他进程之间的一个运行速度的一个相对关系的,所以这不是我们在调度的时候要考虑到的一个互斥性,所以我们只有在进程运行的时候,利用一些极端的手段,比如说信号量来保证这个进程的一个同步互斥。CPU的效率指的是CPU的执行速度,这个是由CPU的设计和它的硬件来决定的,具体的调度算法是不能提高CPU的效率的;1、进程上下文:进程的物理实体(代码和数据等)和支持进程运行的环境。

2024-12-16 21:38:15 187

原创 调度算法(3)

各队列可采用不同的调度策略,如:系统进程队列采用优先级调度、交互式队列采用RR、批处理队列采用FCFS。时间片划分:如三个队列分配时间50%、40%、10%固定优先级:高优先级空时低优先级进程才能被调度。队列之间可采取固定优先级,或时间片划分。

2024-12-08 16:29:36 140

原创 调度算法(2)

可灵活地调整对各类进程地偏好程度,比如CPU密集型进程、I/O密集型进程(拓展:可以将因I/O而阻塞的进程重新放回原队列,这样I/O型进程就可以保持较高优先级)在k级队列的进程运行过程中,若更上级的队列(1~k-1级)中进入了一个新进程,则由于新进程处于优先级更高的队列中,因此新进程会抢占处理机,原来运行的进程放回k级队列队尾。2、新进程到达时先进入第1级队列,按FCFS原则排队等待被分配时间片,若用完时间片进程还未结束,则进程进入下一级队列队尾。与I/O型进程相对的是计算型进程(或称CPU繁忙型进程)

2024-12-08 16:19:00 537

原创 调度算法(1)

4、如果选择题中遇到“SJF算法的平均等待时间、平均周转时间最少”的选项,那最好判断其他选项是不是有很明显的错误,如果没有更适合的选项,那也应该选择该选项。3、虽然严格来说,SJF的平均等待时间、平均周转时间不一定最少,但相比于其他算法(如FCFS),SJF依然可以获得较少的平均等待时间、平均周转时间。如果不加上述前提条件,则应该说“抢占式的短作业/进程优先调度算法(最短剩余时间优先,SRNT算法法)的平均等待时间、平均周转时间最少”追求最少的平均等待时间,最少的平均周转时间、最少的平均带权周转时间。

2024-12-08 00:47:39 725

原创 调度算法的评价指标

一个作业总共需要被CPU服务多久,被I/O设备服务多久一般是确定不变的,因此调度算法其实会影响作业/进程的等待时间。对于进程来说,等待时间就是指进程建立后等待被服务的时间之和,在等待I/O完成的期间其实进程也是在被服务的,所以不计入等待时间。对于作业来说,不仅要考虑建立进程后的等待时间,还要加上作业在外存后备队列中等待的时间。等待时间,指进程/作业处于等待处理机状态时间之和,等待时间越长,用户满意度越低。对于计算机的用户来说,他很关心自己的作业从提交到完成花了多少时间。各作业带权周转时间之和。

2024-12-06 23:41:51 1116

原创 调度器、闲逛进程

2、可以是0地址指令,占一个完整的指令周期(指令周期末尾例行检查中断)抢占式调度策略,每个时钟中断或k个时钟中断会触发调度程序工作。非抢占式调度策略,只有运行进程阻塞或退出才触发调度程序工作。调度程序永远的备胎,没有其他就绪进程时,运行闲逛进程。调度时机 – 什么事件会触发“调度程序”?I/O中断发生(可能唤醒某些阻塞进程)

2024-12-06 23:02:32 301

原创 进程调度的时机、切换与过程、方式

即,只允许进程主动放弃处理机。当一个进程正在处理机执行时,如果有一个更重要或更紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给更重要紧迫的那个进程。注意:进程切换是有代价的,因此如果过于频繁的进行进程调度、切换,必然会使整个系统的效率降低,使系统大部分时间都花在了进程切换上,而真正用于执行进程的时间减少。(这个进程可以是刚刚被暂停执行的进程,也可能是另一个进程,后一种情况就需要进程切换)。内核程序临界区:一般是用来访问某种内核数据结构的,比如进程的就绪队列(由各就绪进程的PCB组成)。

2024-12-06 22:41:03 764

原创 调度的概念、层次

注意“挂起”和“阻塞”的区别,两种状态都是暂时不能获得CPU的服务,但挂起态是将进程映像调到外存去了,而阻塞态下进程映像还在内存中。进程调度是操作系统中最基本的一种调度,在一般的操作系统中都必须配置进程调度。有的操作系统会把就绪挂起、阻塞挂起分为两个挂起队列,甚至会根据阻塞原因不同再把阻塞挂起进程进一步细分为多个队列。低级调度(进程调度/处理机调度)-- 按照某种策略从就绪队列中选取一个进程,将处理机分配给它。中级调度(内存调度)-- 按照某种策略决定将哪个处于挂起状态的进程重新调入内存。

2024-12-06 21:45:52 853

原创 操作系统课后习题 2.1节

如上图,如果线程a和线程b想要通信的话,由于它们共享进程1的地址空间,线程a将它想要传递给线程b的数据放到进程1的地址空间的某个单元里,而线程b也可以访问进程1的地址空间的某个单元,所以线程b可以从存放线程a数据的地址空间的某个单元里取出其数据,这是不涉及系统调用的。高级调度是外存往内存的一个调度,在外存是以作业的形式存在的,也就是相应的程序代码段,然后将其调入内存并创建进程,来运行相应的程序代码,这个时候是创建了新进程,并把新进程插入就绪队列。其中,数据段包含的是与程序逻辑本身相关的数据;

2024-12-05 16:06:42 796

原创 线程与多线程模型

引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件)缺点:一个用户进程会占用多个内核级线程,线程切换由操作系统内核完成,需要切换到核心态,因此线程管理的成本高,开销大。优点:用户级线程的切换在用户空间即可完成,不需要切换到核心态,线程管理的系统开销小,效率高。②线程间并发,如果是同一进程内的线程切换,则不需要切换进程环境,系统开销小。②引入线程后,各线程间也能并发,提升了并发度。

2024-12-01 17:09:34 857

原创 进程的通信

操作系统在内存中划出一块共享存储区,数据的形式、存放位置都由通信进程控制,而不是操作系统。因此,当多个进程读同一个管道时,可能会错乱。1、一个管道只能采用半双工通信,某一时间段内只能实现单向的传输。“管道”是一个特殊的共享文件,又名pipe文件。3、当管道写满时,写进程将阻塞,直到读进程将管道中的数据取走,即可唤醒写进程。4、当管道读空时,读进程将阻塞,直到写进程往管道中写入数据,即可唤醒读进程。②允许有多个写进程,多个读进程,但系统会让各个读进程轮流从管道中读数据。①一个管道允许多个写进程,一个读进程;

2024-12-01 11:29:12 182

原创 进程的创建与终止

2、作业调度:多道批处理系统中,有新的作业放入内存时,会为其建立一个新的进程。1、用户登录:分时系统中,用户登录成功,系统会建立为其建立一个新的进程。3、提供服务:用户向操作系统提出某些请求时,会新建一个进程处理该请求。2、若进程正在运行,立即剥夺CPU,将CPU分配给其他进程。(1)创建原语:操作系统创建一个进程时使用的原语。4、将该进程拥有的所有资源归还给父进程或操作系统。4、应用请求:由用户进程主动请求创建一个子进程。1、从PCB集合中找到终止进程的PCB。4、将PCB插入就绪队列:创建态。

2024-11-25 12:47:18 286

原创 进程的组成--PCB

进程控制块(PCB):PCB是进程存在的唯一标志,当进程被创建时,操作系统为其创建PCB,当进程结束时,会回收其PCB。如PSW、PC等等各种寄存器的值(用于实现进程切换)操作系统对进程 进行管理工作所需的信息都存在PCB中。①CPU、磁盘、网络流量使用情况统计等。②进程当前状态:就绪态/阻塞态/运行态。③正在使用哪些I/O设备。②正在使用哪些内存区域。

2024-11-25 12:08:56 269

原创 操作系统引导

1、CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序(先进行硬件自检,再开机)4、从根目录下找到完整的操作系统初始化程序(即启动管理器)并执行,完成“开机”的一系列动作。3、从活动分区(又称主分区,即安装了操作系统的分区)读入分区引导记录,执行其中的程序。2、将磁盘的第一块—主引导记录读入内存,执行,执行磁盘引导程序,扫描分区表。

2024-11-24 00:28:58 147

原创 两类虚拟机管理程序的对比

2、资源分配方式:安装GuestOS时,VMM要在原本的硬盘上自行分配存储空间,类似于“外核”的分配方式,分配未经抽象的物理硬件。4、可支持的虚拟机数量:更少,HostOS本身需要使用物理资源,HostOS上运行的其他进程也需要物理资源。4、可支持的虚拟机数量:更多,不需要和HostOS竞争资源,相同的硬件资源可以支持更多的虚拟机。1、对物理资源的控制权:运行在HostOS之上,依赖于HostOS为其分配物理资源。1、对物理资源的控制权:直接运行在硬件之上,能直接控制和分配物理资源。

2024-11-23 16:24:32 306

原创 操作系统结构

内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全。②支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统模块到内核),增强OS适应性。①外核可直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源。所有的系统功能都放在内核里(大内核结构的OS通常也采用了“模块化”的设计思想)②用户态下的各功能模块不可以直接相互调用,只能通过内核的“消息传递”来间接通信。内核多分层,每层可单向调用更低一层提供的接口。

2024-11-23 10:46:02 462

原创 操作系统的体系结构大内核与微内核的区别

1、将操作系统地主要功能模块都作为系统内核,运行在核心态。3、缺点:需要频繁地在核心态和用户态之间切换,性能低。3、缺点:内核代码庞大,结构混乱,难以维护。2、优点:内核功能少,结构清晰,方便维护。1、只把最基本的功能保留在内核。(1)大内核(宏内核)

2024-11-23 00:36:48 360

原创 操作系统的内核

①②③与硬件关联较紧密的模块,④这些管理工作更多的是对数据结构的操作,不会直接涉及硬件。2、时钟管理、中断管理、原语(设备驱动、CPU切换等)时钟管理、中断管理、原语(设备驱动、CPU切换等)实现操作系统内核功能的那些程序就是内核程序。、处于操作系统最底层,是最接近硬件的部分。1、进程管理、存储器管理、设备管理等功能。2、操作系统的非内核功能运行在用户态。内核是操作系统最基本、最核心的部分。1、操作系统内核需要运行在内核态。、这种程序的运行具有原子性。、运行时间较短、调用频繁。对系统资源进行管理的功能。

2024-11-23 00:24:59 855

原创 差分约束系统

xj−xi≤wkxj​−xi​≤wk​xj≤wkxixj​≤wk​xi​∙\bullet∙如果dvjdviweijdvj​dvi​weij​,则更新dvjdviweijdvj​dvi​weij​;∙\bullet∙如果dvj≤dviweijdvj​≤dvi​weij​。

2024-03-24 01:41:09 854 1

原创 洛谷 P3379 【模板】最近公共祖先(LCA) 做题反思(2024.3.21)

如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。

2024-03-21 21:24:01 774

原创 C语言指针与地址基础学习(取地址运算)

指针变量可以通过求地址运算符(&)来获得地址值,可以通过指针变量获得地址值,还可以通过标准函数获得地址值。地址的大小是否与int相同取决于编译器。如果运算符&的右边不是变量就不能取地址。获得变量的地址,它的操作数必须是变量。C语言的变量是放在内存里头的。

2024-03-21 01:02:56 470

空空如也

空空如也

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

TA关注的人

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