自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式——代理模式

由于某些原因需要给对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期就生成,而动态代理代理类则是在java运行时动态生成。动态代理又有JDK代理和CGLib代理两种。

2022-09-16 17:02:04 320

原创 设计模式——建造者模式

将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。分离了部件的构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法的解耦,实现了更好的复用。建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。

2022-09-11 15:08:06 330

原创 设计模式——工厂模式

首先完成一个案例,点咖啡系统实现需求:设计一个咖啡店点餐系统设计一个咖啡类,并定义其两个子类(美式咖啡,拿铁咖啡);在设计一个咖啡店,咖啡店具有点咖啡功能。在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则。如果我们使用工厂来生产对象,我们就只和工厂打交道就可以了,彻底和对象解耦,如果要更换对象,直接在工厂里更换该对象即可,达到了与对象解耦的目的;...

2022-08-25 18:28:22 355

原创 设计模式——单例

双重检查锁模式是一种非常好的单例实现模式,解决了单例、性能、线程安全问题,上面的双重检测锁模式看上去完美无缺,其实是存在问题,在多线程的情况下,可能会出现空指针问题,出现问题的原因是Jg在实例化对象的时候会进行优化和指令重排序操作。由此也产生了一种新的实现模式:双重检查锁模式。枚举类实现单例模式是极力推荐的单例实现模式,因为枚举类型是线程安全的,并且只会装载一次,设计者充分的利用了枚举的这个特性来实现单例模式,枚举的写法非常简单,而且枚举类型是所用单例实现中唯一一种不会被破坏的单例实现模式。

2022-08-23 22:15:11 259

原创 RabbitMQ——02

还有一种情况是生产者发送消息失败,延迟发送的消息也失败了,这个时候rabbitmq就会通过定时检查服务,通过一定的时间检查消息数据库与生产者的数据库进行对比,发现与生成者的数据不一致,匹配不成功,就会通过远程调用告诉生产者需要重新发送数据不一致的消息。如果交换机没有将消息放入队列的话,默认设置的是交换机直接将消息进行丢弃,没有任何反馈,所以如果需要反馈给发送方的话,需要设置交换机处理失败消息的模式。表示消费端收到消息后的确认方式。在MQ中指,消费多条相同的消息,得到与消费该消息—次相同的结果。

2022-08-22 20:08:08 885

原创 RabbitMQ——01

AMQP,即(高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。2006年,AMQP规范发布。类比HTTP。2007年,Rabbit 技术公司基于AMQP标准开发的RabbitMQ 1.0发布。RabbitMQ采用Erlang 语言开发。Erlang 语言由Ericson设计,专门为开发高并发和分布式系统的一种语言,在电信领域使用广泛。

2022-08-20 20:13:35 708

原创 JUC——AQS原理分析

AQS在java源码中主要是指AbstractQueuedSynchronizer(抽象队列同步器)抽象类。它整体就是一个抽象的FIFO队列来完成资源获取线程的排队工作,并通过一个int类型变量表示持有锁的状态。

2022-08-13 14:08:08 395

原创 ReentrantLock源码分析

Java中提供的锁:synchronized,lock锁ReentrantLock就是一个互斥锁,可以让多线程执行期间,只有一个线程在执行指定的一段代码。使用方式:我们要分析的是:为什么在多个线程进行竞争的时候lock()可以加锁,只让一个线程进入,为什么在线程执行完业务逻辑的时候释放锁时,别的线程才可以竞争锁资源。......

2022-08-08 22:42:23 204

原创 nginx

是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。Nginx,专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率﹐能经受高负载的考验,有报告表明能支持高达50,000个并发连接数。...

2022-07-26 21:25:50 752

原创 MySQL——主从复制

1.1如何提升数据库并发能力在实际工作中,我们常常将Redis作为缓存与MysQL配合来使用,当有请求的时候,首先会从缓存中进行查找,如果存在就直接取出。如果不存在再访问数据库,这样就提升了读取的效率,也减少了对后端数据库的访问压力。Redis的缓存架构是高并发架构中非常重要的一环。此外,一般应用对数据库而言都是“读多写少"也就说对数据库读取数据的压力比较大,有一个思路就是采用数据库集群的方案,做主从架构、进行读写分离,这样同样可以提升数据库的并发处理能力。优化SQL和索引,这种方式简单有效;。。...

2022-07-25 17:58:39 946 2

原创 MySQL——数据库日志

查看之后,发现1月1日下午2点,用户使用微信支付完以后,但是由于网络故障,支付中心没有及时收到微信支付的回调通知,导致当时没有写入数据。因此,之后用binlog日志恢复数据时,就会少这一次更新,恢复出来的这一行c值是0,而原库因为redolog日志恢复,这一行c值是1,最终数据不一致。并不会回滚事务,它会执行上图框住的逻辑,虽然redolog是处于prepare阶段,但是能通过事务id找到对应的binlog日志,所以MySQL认为是完整的,就会提交事务恢复数据。当我们的数据发生异常时,...

2022-07-25 12:38:12 9305

原创 MySQL——多版本并发控制(MVCC)

MVCC(MultiversionConcurrencyControl),多版本并发控制。顾名思义,MVCC是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读.操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样在做查询的时候就不用等待另一个事务释放锁。MVCC没有正式的标准,在不同的DBMS中MVCC的实现方式可能是不同的,也不是普遍使用的(大家可以参考相关的DBMS文档)。这里介绍了MVCC在。...

2022-07-24 20:37:46 1289

原创 MySQL——锁

锁是计算机协调多个进程或线程并发访问某一资源的机制。在程序开发中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤其是针对一些敏感的数据(比如订单、金额等),我们就需要保证这个数据在任何时刻最多只有一个线程在访问,保证数据的完整性和一致性。在开发过程中加锁是为了保证数据的一致性,这个思想在数据库领域中同样很重要。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。为保证数据的一致性,需要对并发操作进行控制,因此产生了锁。同时锁机制锁冲突。...

2022-07-23 19:44:31 786

原创 Mysql事务日志

对于更新主键的操作,会先把原来的数据deletemark标识打开,这时并没有真正的删除数据,真正的删除会交给清理线程去判断,然后在后面插入一条新的数据,新的数据也会产生undolog,并且undolog的序号会递增。可以发现每次对数据的变更都会产生一个undolog,当一条记录被变更多次时,那么就会产生多条undolog,undolog记录的是变更前的日志,并且每个undolog的序号是递增的,那么当要回滚的时候,按照序号。undolog会记录undolog的序号、插入主键的列和值…...

2022-07-20 18:27:49 666

原创 Mysql——事务

就会出现数据不一致的情形,A账户减去100元,而B账户增加100元操作失败,系统将无故丢失100元。如果事务中的某个操作失败了,系统就会自动撤销当前正在执行的事务,返回到事务操作之前的状态。这样做的好处是,即使数据库系统崩溃,数据库重启后也能找到没有更新到数据库系统中的重做日志,重新执行,从而使事务具有持久性。A账户200元,转账50元给B账户,A账户的钱扣了,但是B账户因为各种意外,余额并没有增加。,这时当事务进行提交或者事务发生回滚的时候,如果数据表中的姓名不唯一,就破坏了事务的一致性要求。...

2022-07-17 17:29:10 317

原创 Mysql——ER模型

刚刚的ER模型展示了电商业务的框架,但是只包括了订单,地址,用户,购物车,评论,商品,商品分类和订单详情这八个实体,以及它们之间的关系,还不能对应到具体的表,以及表与表之间的关联。太过庞大且复杂,所以我们做了业务简化,比如针对SKU(StockKeepingUnit,库存量单位)和SPU(StandardProductUnit,标准化产品单元)的含义上,我们直接使用了SKU,并没有提及SPU的概念。比如说,我们新建一个班级表,而每个班级都有多个学生,每个学生则对应一个班级,班级对学生就是一对多的关系。...

2022-07-15 15:02:25 5199

原创 数据库——范式

所以,称为是修正的第三范式,或扩充的第三范式,BCNF不被称为第四范式。开发中,我们会出现为了性能和读取效率违反范式化的原则,通过增加少量的冗余或重复的数据来提高数据库的读性能,减少关联查询,join表的次数,实现空间换取时间的目的。数据库的范式设计越高阶,冗余度就越低,同时高阶的范式一定符合低阶范式的要求,满足最低要求的范式是第一范式(1NF)。((学号,课程号,成绩)关系中,(学号,课程号)可以决定成绩,但是学号不能决定成绩,课程号也不能决定成绩,所以“(学号,课程号)→成绩”就是。...

2022-07-14 20:19:01 13924 1

原创 MySQL——分析查询语句:EXPLAIN

定位了查询慢的SQL之后,我们就可以使用EXPLAIN或 DESCRIBE工具做针对性的分析查询语句。DESCRIBE语句的使用方法与EXPLAIN语句是一样的,并且分析结果也是一样的。MysQL中有专门负责优化SELECT语句的优化器模块,主要功能:通过计算分析系统中收集到的统计信息,为客户端请求的Query提供它认为最优的执行计划(他认为最优的数据检索方式,但不见得是DBA认为是最优的这部分最耗费时间)。这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具

2022-07-12 16:00:47 961 1

原创 Mysql——索引的创建与设计原则

1.索引的分类MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。①普通索引在创建普通索引时,不附加任何限制条件,只是用于提高查询效率。这类索引可以创建在任何数据类型中,其值是否唯一和非空,要由字段本身的完整性约束条件决定。建立索引以后,可以通过索引进行查询。例如,在表student的字段name上建立一个普通索引,查询记录时就可以根据该索引进行查询。②唯一性索引使用UNIQUE参数可以设置索引为唯一性索引,在创建唯一性索引时,限制该索引的值必须是唯一的,但允许有空值。

2022-07-11 17:30:23 399

原创 MySQL——存储引擎

为了方便管理,人们把连接管理,查询缓存,语法解析,查询优化这些并不涉及真实数据存储的功能划分为MySQL Server的功能,把真实存取数据的功能划分为存储引擎的功能。所以在MySQL Server完成了查询优化后,只需按照生成的执行计划调用底层存储引擎提供的API,获取到数据后返回给客户端就好了。mysql(5.5之前)默认的存储引擎是MyISAMmysql(5.5之后)默认的存储引擎是InnoDB或者修改my.cng文件:二、引擎介绍①InnoDB引擎:②MyISAM...

2022-07-09 21:07:16 211

原创 Mysql逻辑架构

一、逻辑架构剖析Mysqi是典型的C/S架构,服务端程序使用的mysqld.不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一点文本(sql语句),服务器进程处理后再向客户端进程发送一段文本(处理结果)。mysql简化为三层结构:1.连接层:客户端和服务器建立连接,客户端发送SQL至服务器端;2.SQL(服务层):对DQL语句进行查询处理;与数据库文件的存储方式无关3.存储引擎层:与数据库文件打交道,负责数据的存储和读取。二、SQL执行流程SQ

2022-07-09 19:31:21 897

原创 操作系统——内存管理(非连续)

一、分页存储管理的基本概念将内存空间分为一个个大小相等的分区(比如:每个分区4KB),每个分区就是一个页框或页帧或内存块或物理块。每个页框有一个编号,即页框号或内存块号或页帧号或物理块号,从0开始。将用户进程的地址空间也分为与页框大小相等的一个个区域,称为页或页面。每个页面也有一个编号,即页号,页号也是从0开始。注意:页框不能太大,否则可能产生过大的内部碎片操作系统以页框为单位为各个进程分配内存空间。进程的每个页面分别放入一个页框中。也就是说,进程的页面与内存的页框有一一对应的关系。各个页面不必连续存放

2022-07-06 20:57:15 1463

原创 操作系统——死锁

死锁的概念死锁定义:多个进程由于竞争资源而造成的阻塞现象,若无外力作用,这些进程将无法继续推进。相似概念:饥饿等待时间过长以至于给进程推进和响应带来明显影响,“饿而不死”死锁产生的原因:死锁产生的必要条件死锁预防死锁避免: 安全性算法系统安全状态银行家算法...

2022-07-05 18:55:16 177

原创 Redis分布式锁——秒杀超卖

分布式锁应用场景秒杀环境下:订单服务从库存中心拿到库存数,如果库存总数大于0,则进行库存扣减,并创建订单订单服务负责创建订单库存服务负责扣减库存模拟用户访问库存多线程并发访问,出现超卖问题,线程不安全。没有保证原子性单体锁的分类单体应用锁指的是只能在 一个JVM 进程内有效的锁。我们把这种锁叫做单体应用锁分布式锁核心逻辑分布式锁的核心逻辑就是在多个服务中设置一个公共的资源,在公共资源中设置锁,供多个服务去同时抢夺锁资源,一旦其中一个线程抢夺成功,其他线程就进入自旋状态,不同的尝试访问获

2022-07-03 14:54:55 1865

原创 Redis内存回收

Redis内存回收Redis之所以性能强,最主要的原因就是基于内存存储。然而单节点的Redis其内存大小不宜过大,会影响持久化或主从同步性能。我们可以通过修改配置文件设置Redis的最大内存:当内存使用达到上限时,就无法存储更多数据了。在学习Redis缓存的时候,可以通过expire命令给Redis的Key设置TTL(存活时间)可以发现,当key的TTL到期以后,再次访问name返回的是nil,说明这个Key已经不存在了,对应的内存也得到释放,从而起到内存回收的目的。Redis本身是一个典型的k

2022-07-02 20:35:15 365

原创 Redis通信协议

RESP协议Redis是一个CS架构的软件,通信一般分为两步(不包括pipeline和PubSub):①客户端向服务端发送一条命令②服务端解析并执行命令,返回响应结果给客户端因此客户端发送命令的格式、服务端响应结果的格式必须有一个规范,这个规范就是通信协议。而在Redis中采用的是RESP(Redis Serialization Protocol)协议:在RESP中,通过首字节的字符来区分不同数据类型,常用的数据类型包括5种:...

2022-07-02 18:50:39 1015

原创 Redis网络模型

服务器大多都采用Linux系统,这里我们以Linux为例来讲解:任何Linux发行版,其系统内核都是Linux.我们的应用都需要通过Linux内核与硬件交互。为了避免用户应用导致冲突甚至内核崩溃,用户应用与内核是分离的:阻塞IO,顾名思义就是两个阶段都必须等待:可以看到,阻塞IO模型中,用户进程在两个阶段都是阻塞状态。顾名思义,非阻塞IO的recvtrom操作会立即返回结果而不是阻塞用户进程。可以看到,非阻塞IO模型中,用户进程在第一个阶段是非阻塞,第二个阶段是阻塞状态。虽然是非阻塞,但性能

2022-07-02 16:56:59 1510

原创 Redis数据结构——五种数据类型

String是Redis中常见的数据存储类型:Redis的List类型可以从首、尾操作列表中的元素:哪一个数据结构能满足上述特征?Redis的List结构类似一个双端链表,可以从首、尾操作列表中的元素:Set是Redis中的单例集合,满足下列特点:可以看出当插入一个非整数值的时候,编码就会由IntSet转换为HT格式底层源码:Zset也就是SortedSet,其中每一个元素都需要指定一个score值和member值:Hash结构与Redis中的Zset非常类似:两者的区别在于是否需要排序,因

2022-06-30 22:15:12 729

原创 Redis原理篇——数据结构

一.动态字符串SDS我们都知道Redis中保存的Key是字符串,value往往是字符串或者字符串集合。可见字符串时Redis中最常用的一种数据结构。不过Redis没有直接使用c语言中的字符串,因为c语言字符串存在很多问题:SDS之所以叫做动态字符串,是因为它具备动态扩容的能力,例如一个内容为“hi”的SDS:加入我们要给SDS追加一段字符串“,Amy”,这里首先会申请新内存空间:IntSet是Redis中set集合的一种实现方式,基于整数数组来实现,并且具备长度可变,有序等特征。结构如下:为了

2022-06-29 21:40:20 397

原创 Redis——分布式缓存

一.Redis持久化1.RDBRDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存到当前运行目录。RDB执行命令有两种:使用save命令是利用主进程在对Redis进行持久化,因为Redis是一种单线程模式,这样的话会对阻塞所有命令,耗时时间长。不推荐使用。推荐使用bigsave命令对Redis进行持

2022-06-28 18:09:54 1617 1

原创 JVM——堆

1、堆内存(进程与线程角度)一个进程对应一个JVM实例一个JVM实例对应一个堆空间进程包含多个线程,所以线程之间共享同一个堆空间2、具体认识堆3、堆中内存的分区现代垃圾收集器大部分都基于分代收集理论设计,堆空间细分为:Java 7及之前堆内存逻辑上分为三部分:新生区 + 养老区 + 永久区,其中新生代又被划分为Eden(伊甸园区)+Survivor0(幸存者0区)+Survivor1(幸存者1区)。Java 8及之后堆内存逻辑上分为三部分:新生区 + 养老区 + 元空间:其中,新生区

2022-06-17 19:22:29 278

原创 jvm——类加载过程

一个类的完整的生命周期如下Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机是如何加载这些 Class文件呢?系统加载 Class 类型的文件主要三步:加载->链接->初始化。链接过程又可分为三步:    验证->准备->解析。类加载过程的第一步主要完成下面三件事情:虚拟机规范上面这 3 点并不具体,因此是非常灵活的。比如:“通过全类名获取定义此类的二进制字节流” 并没有指明具体从哪里获取、怎样获取。比如:比较常见的就是从ZIP 包中读取(日后出现的 JAR 、 EAR 、 WAR 格

2022-06-16 14:54:08 275

原创 JVM——程序计数器

下图为JVM运行时数据区的简图1.PC寄存器介绍①JVM中的程序计数寄存器(Program Counter Register),Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。②它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域

2022-06-14 16:38:38 175

原创 双亲委派机制

工作原理:①如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行;②如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器;③如果父类加载器可以完成类加载任务,就成功返回,倘若父类加载器无法完成此记载任务,子加载器才会尝试自己去加载,这就是双亲委派模式。优势:①避免类的重复加载②保护程序安全,防止核心API被随意篡改沙箱安全机制比如在自己创建的java.lang包中自定义一个String类,执行其中的main方法

2022-06-14 15:52:58 89

原创 个人博客项目部署到服务器详细步骤

从无到有1、首先在本地将项目跑通2、将项目部署到服务器 ①此时的服务器什么都没有,首先应该在服务器中安装docker容器,这个容器不用我说简直太强大太好用了。https://blog.youkuaiyun.com/lovewangyihui/article/details/122311060 参考博客地址 ②docker安装mysql: ③docker安装redis④安装JDK1.8首先下载linux版本的JDK,通过文件上传软件Xftp将下载的jdk传到服务器/usr/local中解压完成以后,我们

2022-06-11 19:37:45 925

原创 JVM——01总结

1、JVM架构java编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构。具体来说:这两种架构之间的区别:基于栈式架构的特点设计和实现更简单,适用于资源受限的系统,避开了寄存器的分配难题:使用零地址指令方式分配,指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈。指令集更小,编译器容易实现不需要硬件支持,可移植性更好,更好实现跨平台基于寄存器架构的特点典型的应用是x86的二进制指令集:比如传统的PC以及Android的Davlik虚拟机。指令集架构则

2022-06-08 20:11:47 137

原创 java反射机制介绍

1、反射机制介绍java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。2.获取Class对象的四种方式①知道具体类的情况下可以使用:但是我们一般是不知道具体类的,基本都是通过遍历包下面的类来获取 Class 对象,通过此 方式获取Class对象不会进行初始化。②通过 Class.forName()传入类的路径获取:Class.forName(clas

2022-06-08 14:59:50 126

原创 java并发基础

什么是线程和进程?进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈和本地方法栈,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。2.程序计数器为什么是私有的?程序计.

2022-05-31 19:14:12 111

原创 mysql索引

1.索引:索引是一种能够提高查询效率的数据结构  优点:大大加快数据查询速度  缺点:维护索引需要消耗数据库资源,索引需要占用磁盘空间,当对表的数据进行增删改的时候,因为要维护索引,速递会受到影响。2.索引分类:a、主键索引:设为主键后数据库会自动建立索引,innodb为聚簇索引,主键索引索引列只不能为空b、单值索引:即一个索引只包含单个列,一个表可以有多个单列索引c、唯一索引:索引的值必须唯一,但允许有空值d、复合索引:即一个索引包含多个列e、全文索引(mysql5.7版本之前 只能用于my

2022-05-28 20:06:05 74

原创 八股文——操作系统

八股文——操作系统1、什么是操作系统操作系统(简称 OS)是管理计算机硬件与软件资源的程序,是计算机的基石操作系统本质上是一个运行在计算机上的软件程序 ,用于管理计算机硬件和软件资源。操作系统存在屏蔽了硬件层的复杂性。 操作系统就像是硬件使用的负责人,统 筹着各种相关事项。操作系统的内核(Kernel)是操作系统的核心部分,它负责系统的内存管理,硬 件设备的管理,文件系统的管理以及应用程序的管理。 内核是连接应用程序和硬件 的桥梁,决定着系统的性能和稳定性。2、什么是系统调用首先在介绍系统

2022-04-22 19:19:44 5552

空空如也

空空如也

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

TA关注的人

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