自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CPU对外部设备的控制方式介入程度比较

通道方式:与DMA控制方式类似,也是一种以内存为中心,实现设备与内存直接交换数据的控制方式。与DMA控制方式相比,通道方式所需要的CPU干预更少,而且可以做到一个通道控制多台设备,从而进一步减轻了CPU负担。内存地址修改、传送字 个数的计数等等,也不是由软件实现,而是用硬件线路直接实现的。CPU对外部设备的控制方式按CPU的介入程度,从小到大依次为通道方式,DMA方式,中断方式,程序控制方式。CPU对外部设备的控制方式按CPU的介入程度,从小到大依次为()方式、()方式、()方式和()方式。

2023-05-09 21:55:40 651

原创 操作系统——缺页中断讲解

(2)一条指令在执行期间,可能产生多次缺页中断。有可能执行一个指令时,指令本身跨越两个页面,访问的数据块也不在同一个页面,所以,系统中硬件机构应该能保存多次中断时的状态,并保证最后能返回到中断前产生缺页中断指令处继续执行。在请求分页系统中,每当要访问的页面不存在时,便产生一缺页中断,请求OS将所缺之页调入内存。缺页中断作为中断同样经历:保护CPU环境、分析中断原因、转入缺页中断,恢复CPU环境等步骤。作业在执行中发生了缺页中断,经系统将该缺页调入内存后,应继续执行( 被中断的指令 )。

2023-05-09 21:25:03 1613

原创 操作系统文件系统

链接可以分为逻辑连接(软)和物理连接(硬),它们在删除时前者是该文件没有了,但会留下一个指针,后者是所有引用都会被删除,包括其本身,实际文件也会删除。全部文件都登记在同一目录中,实现 “ 按名存取 ” ,所以必须确保没有重名的现象发生。查找速度慢,不能重名,不便于共享。不同用户可以有相同的文件名,提高了检索目录的速度,不同用户可以用不同的文件名访问系统中的同一文件,缺点是不利于文件共享。它允许一个文件或目录在多个父目录中占有项目,但不构成环路,便于文件共享。(2)相对路径:从“当前目录”的。

2023-05-09 14:44:42 114

原创 两个栈实现队列(Java)

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )最多会对 appendTail、deleteHead 进行 10000 次调用。输出:[null,-1,null,null,5,2]输出:[null,null,3,-1,-1]

2023-05-09 13:55:15 639

原创 从尾到头打印链表(Java栈操作)

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。0 <= 链表长度 <= 10000。输入:head = [1,3,2]输出:[2,3,1]

2023-05-09 11:58:10 68

原创 Java集合

线程不安全,效率高。(2)LinkedList:底层数据结构是链表,查询慢,增删快,线程不安全,效率高,可以存储重复元素。(1)ArrayList:底层数据结构是数组,查询快,增删慢,线程不安全,效率高,可以存储重复元素。(1)HashSet底层数据结构为哈希表,元素无序且唯一,线程不安全,效率高可以存储null元素。(3)Vector:底层数据结构是数组,查询快,增删慢 ,线程安全,效率低,可以存储重复元素。(3)TreeSet底层数据结构采用二叉树实现,元素唯一且已经排好序。

2023-05-09 11:55:04 39

原创 新增的创建线程方式

5、将FutureTask类的对象作为参数传递到Thread类的构造器中,创建Thread对象,并调用start()方法。4、将此callable接口实现类的对象作为参数传递到FutureTask构造器中,创建FutureTask对象。需要提供实现Runnable接口或者Callable接口的实现类的对象。Callable()中call()方法:可以抛异常被外面操作捕获、可以有返回值。2、实现Call方法,将此线程需要执行的操作声明在Call()中。1、创建一个实现Callable接口的实现类。

2023-04-19 17:01:20 51

原创 sleep()与wait()的异同

3)关于是否释放同步监视器:如果两个方法都使用在同步代码块或者同步代码中sleep()方法不会释放锁,wait()会释放锁。2) 调用要求不同:sleep()可以在任何需要的场景下调用。wait()使用必须在同步代码方法中。不同点:1)两个方法声明的位置不同:Thread类中声明sleep(),object类中声明wait()。相同点:可以让当前进程处于阻塞状态。

2023-04-19 15:54:04 35

原创 synchronized () 与 lock ()的异同

synchronized ():自动在执行完相应的同步代码后自动释放同步监视器(锁)。异:lock():需要手动加锁lock(),手动解锁unlock()。同:二者都可以解决线程安全性问题。

2023-04-19 11:24:22 36

原创 解决线程安全问题方式三 :lock锁(JDK5.0新增)

2.用try()封装 共同访问的临界值 并在其内部开头调用锁定 lock()方法;3.在访问结束调用unlock()解锁方法。1.实例化Reentrantlock对象。//访问临界资源的代码。

2023-04-19 10:55:48 37

原创 同步代码块处理实现Runnable线程的安全性问题

1.实现Runnable接口的线程安全性问题:如果操作共享数据代码完整的声明在一个方法中,我们不妨将此方法声明同步的。例如:将函数Private void show(){//操作共享数据的代码}改为Private。例如:将函数Private void show(){//操作共享数据的代码}改为Private。1.操作共享数据的代码,即为需要被同步的代码。void show(){//操作共享数据的代码}void show(){//操作共享数据的代码}:多个县城共同操作的变量。//需要被同步的代码。

2023-04-18 23:38:31 96

原创 创建进程的方式(实现Runnable接口)

4.将此对象作为参数传递到Thread类的构造器中,创建Thread类的的对象。5.通过Thread类的对象调用start(),调用当前线程的run().2.实现类去实现Runnable中的抽象方法:run()1.创建一个实现Runnable接口的类。sout("线程操作")3.创建实现类的对象。

2023-04-18 09:59:08 84

原创 Thread 类的常用方法

7.join() : 在线程A中调用线程B的join方法,此时线程A进入阻塞状态,直到线程B执行完之后,线程A结束阻塞状态。5.run() :通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在 此方法中。6.currentThread() :静态方法,返回当前代码的线程。10.isAlive(): 判断当前线程是否存活(线程执行完就死)8.stop(): 强制当前线程结束使用(已过时,不建议使用)2.setname() :设置当前线程的名字。3.getname() :获取当前线程的名字。

2023-04-17 22:21:41 266

原创 创建线程的四个步骤

2.重写Thread类的run()--->将此线程的操作声明在run()中。3.在主类中创建Thread类的子类对象。1.创建一个继承于Thread类的子类。sout("该线程的具体操作");4.通过此对象调用start();

2023-04-16 23:39:38 131

原创 两个链表第一个公共节点(哈希集合法)

从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。输入解释:相交节点的值为 2 (注意,如果两个列表相交则不能为 0)。输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3。输入:intersectVal = 2, listA = [0,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1。

2023-04-15 20:38:20 39

原创 第一个只出现一次的字母

在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。s 只包含小写字母。0

2023-04-15 17:56:25 54

原创 数组中出现次数最多的数字

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]你可以假设数组是非空的,并且给定的数组总是存在多数元素。采用哈希表map实现记录每个字符出现的次数。1 <= 数组长度 <= 50000。

2023-04-15 17:19:28 157

原创 对多线程的理解

现代计算机处理器性能的提升方式,已经从最求更高的主频向最求更多的核心发展,所以处理器的核心数量会越来越多,充分的利用处理器的核心会显著提高程序的性能。,使开发人员能够更加专注于问题的解决,开发者只需为此问题建立合适的业务模型,而无需绞尽脑汁的考虑如何实现多线程。这样相应的用户的线程就能够尽快的完成处理,大大缩短了响应时间,从而提高了用户体验。,显著减少程序的处理时间,从而随着更多处理器核心的加入而变得更有效率。一个程序运行至少有一个进程,一个进程可以包含多个线程,至少一个。,进程可以执行多个环节,

2023-04-15 11:27:07 56

原创 关于mysql索引,以及它的好处和坏处

的原则进行搜索,则做因是不起作用的。(举例,假设在id、name、age字段上已经成功建立了一个名为MultiIdx的组合索引。索引行中按id、name、age的顺序存放,索引可以搜索id、(id,name)、(id, name, age)字段组合。,是一种允许查询操作快速确定哪些行符合WHERE子句中的条件,并检索到这些行的其他列值的数据结构。,那么MySQL不能使用局部索引,如(age)或者(name,age)组合则不能使用该索引查询。,因为每个增删改查的操作后相应的列的索引都必须更新。

2023-04-15 10:51:14 245

原创 进程与线程的区别

2.进程与线程切换时,需要切换进程与线程的上下文,进程的上下文下切换时间开销远远大于线程上下文切换时间,耗费资源大,效率差。5.系统运行时会为进程分配内存空间,线程除了占用CPU外,没有内存空间(线程所使用的资源来源于所属的进程资源)6.进程崩溃后在保护模式下不会对其他进程产生影响,线程崩溃后整个进程都要死掉,多进程比多线程强壮。4.每个进程可以独立执行,线程不可以独立执行,由程序提供控制。1.进程有独立的地址空间,线程之间没有单独的地址空间。3.进程的并发性低于线程的并发性。

2023-04-15 09:51:25 41

原创 二叉树的遍历层次广度优先遍历(BFS)

从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。给定二叉树: [3,9,20,null,null,15,7],节点总数 <= 1000。

2023-04-13 18:11:34 71

原创 if(n & ( 1 << i ) )

判断二进制n 中有多少位1。

2023-04-12 21:16:48 37

原创 二叉树的广度优先遍历(BFS)

【代码】二叉树的广度优先遍历(BFS)

2023-04-12 17:10:51 67

原创 java常用工具类说明

Collections.synchronizedCollection(Collection c, Object mutex) 指定mutex对象作为同步锁,将集合转换为线程安全的同步集合。Arrays.deepToString(Object[] a)方法内部调用了a.toString()。由于JDK1.5引入了泛型,采用该方法,保证运行期集合中增加的元素只能是指定的类型。Collections.sort()最终调用的是Arrays.sort()进行排序。Collections.sort()的源码。

2023-04-11 21:23:54 233

原创 修改字符串

C++中字符串被设置程成可修改模式,可以在原字符串中进行修改利用resize函数对字符串长度进行修改。请实现一个函数,把字符串 s 中的每个空格替换成"%20"。输入:s = "We are happy."输出:"We%20are%20happy."0

2023-04-06 21:32:10 99 1

原创 ArrayList集合对象使用方法

List.addAll(Otherlist)//将其他list全部加入到List后面。for(Object obj : List)//for(循环对象:集合)//第一个参数为元素位置,第二个参数为改后的值。List.lastindexof("张三")//方法会返回结果,返回结果为修改前的值。10.返回索引值(返回第一次出现的位置)//方法会返回结果,返回结果为删除的值。List.contains("张三")List.indexof("张三")LIst.add(1,"张山");List.add("张三");

2023-04-05 18:02:14 460

原创 二维数组中的查找

将右上角结点看作根节点向左数值变小向右数值变大,则可以从右上角开始遍历数组,如果当前值matrix[row][col]>target 则col--;Java代码段:在一个 n * m 的二维数组中,每一行都按照从左到右 非递减 的顺序排序,每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。分别枚举每个数值与target相比 相等则返回true,时间复杂度为O(mn)给定 target = 5,返回 true。

2023-04-05 15:06:19 91 1

原创 数组中重复的数字

在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。找出数组中重复的数字。

2023-04-04 20:25:49 56 1

空空如也

空空如也

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

TA关注的人

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