- 博客(119)
- 资源 (1)
- 收藏
- 关注
原创 OS总结(七) 死锁问题
七、死锁1、死锁的概念2、死锁的处理策略——预防死锁3、死锁的处理策略——避免死锁银行家算法:检查此次申请是否超过了之前声明的最大需求数检查此时系统剩余的可用资源是否还能满足此次请求试探着分配,更改各数据结构用安全性算法检查此次分配是否会导致系统进入不安全状态安全性算法步骤检查当前剩余可用的资源是否能满足某个进程的最大需求,如果可以,就把该进程加入安全序列,并把该进程持有的资源全部回收。不断重复上述过程,看最终是否能让所有进程都加入安全序列。系统处于不安全状态
2020-10-22 13:58:44
182
原创 OS总结(六) 信号量机制
六、信号量机制1、信号量机制2、同步、互斥及实现前驱关系3、生产者-消费者问题PV操作题目的解题思路:关系分析。找出题目中描述的各个进程,分析它们之间的同步、互斥关系。整理思路。根据各进程的操作流程确定P、V操作的大致顺序。设置信号量。设置需要的信号量,并根据题目条件确定信号量初值。(互斥信号量初值一般为1,同步信号量的初始值要看对应资源的初始值是多少)生产者消费者问题是一个互斥、同步的综合问题。有时候是消费者需要等待生产者生产,有时候是生产者要等待消费者消费,这是两个不同的“一前
2020-10-22 12:19:36
1289
原创 OS总结(四) 处理机调度算法
四、处理机调度算法1、处理机调度的概念、层次2、进程调度的时机、切换与过程、方式3、调度算法的评价指标4、FCFS、SJF、HRRN调度算法FCFS(First Come First Serve)先来先服务调度算法SJF(Shortest job First)短作业优先调度算法HRRN(Highest Response Ratio Next)高响应比优先调度算法5、时间片轮转、优先级、多级反馈队列调度算法RR(Round-Robin)时间片轮转调
2020-10-21 20:08:25
288
原创 OS总结(一) 操作系统概览
一、操作系统概览1、操作系统的概念、功能和目标2、操作系统的特征3、操作系统的发展与分类4、OS的运行机制和体系结构5、中断和异常6、系统调用
2020-10-20 14:27:42
524
原创 Typora导出PDF时如何分页
如果文档不长,可以考虑通过下面的代码进行手动分页<div style="page-break-after:always;"></div>Typora官方解释:参考文章:https://www.zhihu.com/question/57429587/answer/358160862
2020-07-03 09:12:37
11507
3
原创 Java网络编程详解(四)TCP通信实现文件上传(多文件上传、多线程、服务端常启)
一、文件上传图解 【客户端】输入流,从硬盘读取文件数据到程序中。【客户端】输出路,写出文件数据到服务端【服务端】输入路,读取文件数据到服务端程序【服务端】输出流,写出文件数据到服务器硬盘中 二、文件上传步骤 客户端使用本地字节输入流,读取要上传的文件客户端使用网络字节输出流,把读到文件上传到服务器服务器使用网络字节输入流,读取客户端上传的文件服务器使用本地字节输出流,把读取到的文件,保存到服务器的硬盘上服务器使用网络字节输出流,给客户端回写一个“上传成功”客户端使用网络字节.
2020-06-30 18:07:48
752
原创 Java网络编程详解(三)TCP通信程序
一、什么是TCP通信?TCP通信能实现两台计算机之间的数据交互,通信的两端,要严格区分为客户端(Client)与服务器(Server)两端通信时步骤:服务端程序,需要事先启动,等待客户端的连接。客户端主动连接服务器端,连接成功才能通信。服务端不可以主动连接客户端。在Java中,提供了两个类用于实现TCP通信程序:3. 客户端:java.net.Socket类表示。创建Socket对象,向服务端发出连接请求,服务端响应请求,两者建立连接开始通信。4. 服务端:java.net.Server.
2020-06-28 19:33:53
841
原创 Java实战(六)用链表实现栈(自定义异常、接口)
定义栈接口,并用链表实现,并采用自定义异常处理栈满和栈空时的错误操作。(1)定义接口(2)定义异常类(4)采用链表实现栈类(5)定义测试类代码示例:package xiaoji.xiaohan;/* 定义栈接口,并分别采用数组和链表实现,并采用自定义异常处理栈满和栈空时的错误操作。 (1)定义接口 (2)定义异常类 (4)采用链表实现栈类 (5)定义测试类 *///自定义异常类,继承Exception类class StackException
2020-06-26 19:57:19
641
原创 Java实战(五)用数组实现栈(自定义异常、接口)
定义栈接口,并采用数组实现,并采用自定义异常处理栈满和栈空时的错误操作。(1)定义接口(2)定义异常类(3)采用数组实现栈类实现代码:package CurriculumDesign;/* 4.定义栈接口,并采用数组实现,并采用自定义异常处理栈满和栈空时的错误操作。 (1)定义接口 (2)定义异常类 (3)采用数组实现栈类*///自定义异常类,继承Exception类class StackException extends Exception{ int index = 0
2020-06-26 18:05:53
802
原创 Java实战(四)定义一个GUI程序,实现简易的算术运算
定义一个GUI程序,实现简易的算术运算(1)定义窗口类,Grid布局,第一行输入第一个数据,第二行通过choice选择 + - * /,第三行输入第二个数据,第四行按钮,计算和退出(2)定义事件处理程序,实现计算和退出功能(计算结果可以采用System.out.println()输出)(3)定义测试类实现代码:package CurriculumDesign;import java.awt.*;import java.awt.event.ActionEvent;import java.aw
2020-06-23 18:45:15
2722
4
原创 Java实战(三)读取一个文本文件,并对某个特定字符计数
读取一个文本文件,并对某个特定字符计数。(1)键盘输入要读取的文件名(2)键盘输入要计数的字符(3)读取文件并对字符计数,输出特定字符计数结果(4)读取文件并计数,对read()和read(char[])两个函数分别实现。(采用两种方法实现计数,一种为每次读取一个字符,一种为每次读取一个数组)根据题意,首先准备好一个要读取的文件,笔者将要读取的文件放在了工程的第一级目录下,文件名为:Text.txt,文件内容为:aaaaabcdef共十个字符,工程目录以及文件内容如下图所示:方法一:每次读取
2020-06-23 18:39:25
2830
1
原创 Java实战(二)定义复数类Complex,实现加减乘除、toString()函数、equals()函数
定义复数类Complex,实现以下功能:(1)构造函数(2)加减乘除函数(3)toString()函数(4)equals()函数(5)编写测试类,实现键盘读取数据创建复数对象,并测试Complex类定义的函数实现代码:package CurriculumDesign;import java.util.Scanner;/*1.定义复数类Complex,实现以下功能: (1)构造函数 (2)加减乘除函数 (3)toString()函数 (4)equals()函数 (5
2020-06-23 18:24:49
5610
1
原创 Java实战(一)Java实现队列(自定义空满异常、存储与取出数据、是否相同)
Java实现队列(自定义空满异常、存储与取出数据、是否相同)通过例子,掌握接口,异常,IO操作等内容。实现队列队列的实现方式有多种,可以基于数组,也可以基于链表,因此可以把链表需要实现的方法定义为接口。队列在队列满的时候和队列空的时候,不允许写和读操作,可以通过异常实现。队列的数据,可以实现存储和恢复,可以通过文件读取实现。队列可以实现比较是否相同,需要重写equals方法因此,实现队列,需要定义以下内容:interface JStackclass ArrayS
2020-06-23 18:18:17
717
原创 Java网络编程详解(二)TCP/IP协议
一、什么是网络通信协议? 数据在网络中传输的规则,常见的协议有UDP协议和TCP协议。 作用:通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这些连接和通信的规则被成为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换。 二、详解TCP/IP协议 传输控制协议/因特网互联协议(Transmission Control Pro..
2020-06-20 16:09:05
377
原创 Java网络编程详解(一)网络编程三要素
一、什么是网络编程? 在网络通信协议下,不同计算机上运行的程序,可以进行数据传输 二、网络编程三要素 1、IP地址全称“互联网协议地址”,也称IP地址。是分配给上网设备的数字标签。常见的IP分类为:ipv4和ipv6,关于两者的区别可以看这篇文章: IPV4与IPV6的区别(史上最详细)常用命令:ipconfig:查看本机ip地址ping IP地址:检查网络上是否连通特殊IP地址:127.0.0.1:是回送地址也称本地回环地址,可以代表本机的IP地址,一般用来测试使用 2.
2020-06-20 15:37:59
529
原创 CSDN如何修改字体类型、颜色及大小(文末送十六进制颜色代码一览表)
使用内嵌HTML的方法来实现:代码:<font face="微软雅黑" color=#FF8C00 size=5> =想要修改的语句= </font>效果: =想要修改的语句= 名称功能face字体color颜色size大小,默认为3,支持1-7关于颜色的十六进制表也可以看这篇文章:CSDN中字体颜色的十六进制表参考博文:https://blog.csdn.net/wx1528159409/article/deta
2020-06-17 15:28:41
518
原创 Robomaster视觉教程(零)各种常见问题汇总
从一个RM新人到现如今带了一届新人之后,将各种常见的问题总结下来(不定期补充):1. Opencv不是已经更新到Opencv4了吗,为什么我们还要用Opencv3呢?:答:RM比赛一定要考虑做出来机器的稳定性,老版本可能不是最先进的,但比较之下是更稳定、更成熟的,如果说创新决定了一个团队的上限,那么稳定性则决定了一个团队的下限。2. 我的环境配置了好久也没有成功,感觉和别人的电脑有很多不一样地方,苦恼很久了答:环境配置是每个程序员必经的阶段,坚持坚持过去了就好了。笔者已经记不清遇到过多少次类似的情.
2020-06-17 15:05:54
5291
原创 一句话道破X64和X86的区别
最近有小伙伴问我电脑的X64和X86是什么意思,这里我总结为一句话:X64和X86都是来形容操作系统类型的,64位和32位是指CPU运算方式的差异,两者可以看成是等价的,对应关系为:X64=64位,X86=32位,关键区别为32位(X86)最高支持4G内存,而64位(X64)能支持更高内存。...
2020-06-16 16:47:57
7734
原创 Robomaster视觉教程(二)Win10+VS201x+Opencv3.4.x环境搭建
C++学个差不多,此时VS应该玩的也可以了,接下来就是要开始配置opencv环境了。由于笔者平时主要用的是MacOS,所以这一部分主要参考了一些其他同学的建议。网上的教程一搜一大把,水平也参差不齐,这里笔者给出一个亲测可用的非常良心的配置教程:VS2017配置opencv教程(超详细!!!)在这里补充几点常见问题:1、Opencv不是已经更新到Opencv4了吗,为什么我们还要用Opencv3呢?:答:RM比赛一定要考虑做出来机器的稳定性,老版本可能不是最先进的,但比较之下是更稳定、更成熟的,如.
2020-06-16 15:24:26
526
原创 Robomaster视觉教程(一)谈谈搞视觉应该会的C++知识
以下基本上是视觉入门opencv学习的最低标准,毕竟之后主要要讲的是计算机视觉方面的东西,其中的概念只是点到为止,希望大家可以将模糊的概念百度一下,最好也能总结一下,C++的学习是基础中的基础,笔者会不定期更新和完善。(其中带*的内容为可选学内容)一、预备知识(不分先后)了解C++标准(C99、C11等)(视觉新手经常会遇到的错误往往不是opencv的,而是不熟悉IDE或者C++标准版本所致)多文件编程(RM视觉部分的代码量也可以算是一个小项目,我们一般创建一个工程,在工程中使用头文件和源文件配合编
2020-06-13 00:36:41
4087
原创 C++在C语言的基础上新增了哪些特性?权威解答来了
最近学弟问我C++和C有什么区别,我只知道摒弃了一些不好的,又增加了一些新特性,具体的也不太清楚,直到今晚再次翻开C++ Primer Plus,正好看到介绍C++在C语言的基础上新增了哪些特性,遂记录分享一下C++在C语言的基础上新增了很多特性,包括:类和对象继承多态、虚函数和RTT1(运行阶段类型识别)函数重载引用变量泛型(独立于类型的)编程,这种技术是由模版和标准模版库(STL)提供的处理错误条件的异常机制管理函数、类和变量名的名称空间..
2020-06-12 22:26:04
1608
原创 Java多线程详解(十一)线程池
线程池背景:经常创建和销毁、使用量特别大的资源,比如并发情况下的线程,对性能影响很大思路:提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。可以避免频繁创建销毁、实现重复利用。类似生活中的公共交通工具好处:提高响应速度(减少了创建新线程的时间)降低资源消耗(重复利用线程池中线程,不需要每次都创建)便于线程管理package ThreadTest;import java.util.concurrent.ExecutorService;import jav
2020-06-11 15:33:52
235
1
原创 Java多线程详解(十)线程协作——生产者消费者模式
一、什么是线程通信?应用场景:生产者和消费者问题假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者将仓库中的产品取走消费如果仓库中没有产品,则生产者将产品放入仓库,否则停止生产并等待,直到仓库中的产品被消费者取走为止如果仓库中放有产品,则消费者可以将产品取走消费,否则停止消费并等待,直到仓库中再次放入产品为止二、线程通信-分析这是一个线程同步的问题,生产者和消费者共享同一个资源,并且生产者和消费者之间相互依赖,互为条件对于生产者,没有生产产品之前,要通知消费者等待
2020-06-11 15:14:50
325
原创 Java多线程详解(九)Lock锁的使用
Lock(锁)从JDK5.0开始,Java提供了更强大的线程同步机制——通过显式定义同步锁对象来实现同步。同步锁使用Lock对象充当java.util.locks.Lock接口是控制多个线程对共享资源进行访问的工具。锁提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程开始访问共享资源之前应先获得Lock对象ReentrantLock类实现了Lock,它拥有与synchronized相同的并发性和内存语义,在实现线程安全的控制中,比较常用的是ReentranrLock,可
2020-06-11 12:05:55
1664
原创 Java多线程详解(八)死锁
死锁多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能运行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形。某一个同步块同时拥有“两个以上对象的锁”时,就可能会发生“死锁”的问题。死锁的避免方法产生死锁的四个必要条件:互斥条件:一个资源每次只能被一个进程使用请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系上面列出了死锁
2020-06-11 11:39:55
233
原创 Java多线程详解(七)线程同步机制
线程同步现实生活中,我们会遇到“同一个资源,多个人都想使用”的问题,比如,食堂排队打饭,每个人都想吃饭,最天然的解决办法就是排队,一个个来。处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象,这是我们就需要用到线程同步。线程同步其实就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面的线程使用完毕,下一个线程再使用。形成条件队列+锁由于统一进程的多个线程共享同一块存储空间,在带来方便的同时,也带来了访问冲突问题,为了保证数据在方法中
2020-06-11 11:28:46
254
原创 Java多线程详解(六)守护线程
守护线程线程分为用户线程和守护线程虚拟机必须确保用户线程执行完毕虚拟机不用等待守护线程执行完毕如,后来记录操作日志,监控内存,垃圾回收等package ThreadTest;//测试守护线程public class TestDaemon { public static void main(String[] args) { God god = new God(); User user = new User(); Thread thr
2020-06-10 22:57:27
176
原创 Java多线程详解(五)线程休眠|线程礼让|线程强制执行
一、线程休眠 sleeppackage ThreadTest;import java.text.SimpleDateFormat;import java.util.Date;// 模拟时间打表public class TestSleep { public static void main(String[] args) { //获取系统当前时间 Date startTime = new Date(System.currentTimeMillis());
2020-06-10 22:22:04
611
原创 Java多线程详解(四)线程停止
首先用两张图讲一下线程状态停止线程不推荐使用JDK提供的stop()、destroy()方法。【已废弃】推荐线程自己停止下来建议使用一个标志位进行终止变量当 flag == false,则终止线程运行package ThreadTest;//测试stop// 1.建议线程正常停止----》利用次数,不建议死循环// 2.建议使用标志位----》设置一个标志位// 3.不要使用stop或者destroy等过时或者JDK不建议使用的方法public class TestStop
2020-06-10 21:30:02
223
原创 Java多线程详解(三)由繁入简推导Lambda表达式
为什么要使用Lambda表达式?避免匿名内部类定义过多可以让你的代码看起来很简洁去掉了一堆没有意义的代码,只留下核心的逻辑理解Functional Interface(函数式接口)是学习Java8 lambda表达式的关键所在函数式接口的定义任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口对于函数式接口,我们可以通过lambda表达式来创建接口的对象Lambda表达式的推导(由繁入简,体会lambda表达式的魅力)一、用普通类实现接口packa
2020-06-10 20:29:18
543
原创 Java多线程详解(二)静态代理模式
实现静态代理模式:package ThreadTest;//静态代理模式://真实对象和代理对象都要实现同一个接口//代理对象要代理真实角色//好处://代理对象可以做很多真实对象做不了的事情//真实对象专注做自己的事情public class StaticProxy { public static void main(String[] args) { //你要结婚 You you = new You(); WeddingCompan
2020-06-10 17:05:15
175
原创 Java多线程详解(一)三种创建线程的方法
一、继承Thread类自定义线程类继承Thread类重写run()方法,编写线程执行体创建线程对象,调用start()方法启动线程package ThreadTest;//创建线程的方式一:继承Thread类,重写run()方法,调用start开启线程//线程开启不一定立即执行,由cpu调度执行public class TestThread extends Thread{ @Override public void run() { // run()方法线程
2020-06-10 11:57:21
236
原创 给你安利一款Mac上好用的音频格式转换软件——Music Converter
最近笔者遇到了一个将m4a类型文件转换为mp3类型文件的问题,用了几款软件之后,终于发现了一款很不错的软件,推荐给大家!去电脑的App Store上面搜 Music Convert免费,没广告,太良心了
2020-06-10 09:58:42
4406
原创 教你如何在b站实现炫酷弹幕墙(文末送十六进制颜色代码一览表)
今天来教大家如何制作如下图所示的炫酷弹幕墙首先,先把视频暂停,然后在弹幕框中输入自己想要的弹幕,然后点击发送按钮,但是不要点击播放,这时候你再输入你想表达的第二行弹幕,再次点击发送,这里可以进行颜色的搭配。最后你觉得数量和效果都达到预期的时候,就可以点击播放,欣赏自己的作品了!在以下这个位置可以设置弹幕颜色,具体的颜色代码可以自定义,我已经给各位放在下面了。参考博文:https://blog.csdn.net/YZY_001/article/details/85257905...
2020-06-06 20:02:34
9109
原创 LeeCode最优题解收录:9.回文数(Java)
题目:解题思路:代码:class Solution { public boolean isPalindrome(int x) { //负数肯定不是回文数,再者末位为0的数只有0是回文数 if( x<0 || (x%10==0 && x!=0) ) { return false; } int temp = 0; while(x>temp)
2020-06-06 16:49:43
244
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅