自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一夜登顶Github榜首,阿里并发核心编程宝典(2022版)

不知道大家今年的金九银十是否有出去面试过?有出去面试的朋友肯定深有感受,像我们刚入行那会面试的加分项现在卷得已经成为了面试的基础题(手动狗头)。其中最典型的就属这个Java并发编程了。之前一般只有大厂才会有高并发编程相关的面试内容,但现在只要你入了Java行业就会涉及,不管你工作中是否用到,面试就得问。So,我们这些生活在内卷时代的新生代农民工只能把Java并发知识也变成我们必修课之一,不断的提升自己的核心竞争力。如果你有打算开始学习并发编程知识,却不知如何入手,那么LZ今天要分享的这份阿里高并发核心编

2021-12-08 20:56:14 489 1

原创 查漏补缺,Kafka 核心知识,总有一个拨动你的心弦

说说你对kafka的理解kafka是一个流式数据处理平台,他具有消息系统的能力,也有实时流式数据处理分析能力,只是我们更多的偏向于把他当做消息队列系统来使用。如果说按照容易理解来分层的话,大致可以分为3层:第一层是 Zookeeper ,相当于注册中心,他负责kafka集群元数据的管理,以及集群的协调工作,在每个kafka服务器启动的时候去连接到Zookeeper,把自己注册到Zookeeper当中第二层里是kafka的核心层,这里就会包含很多kafka的基本概念在内:record :代

2021-12-08 20:52:48 191

原创 @RequestHeader解密,这玩意还能这么用?

当我们在接口中想获取请求头的值的时候,怎么写代码更简单呢?SpringMVC 中提供了@RequestHeader 注解,用来获取请求头中的信息。本文将介绍@RequestHeader 的 4 种用法及原理。1、预备知识接口测试利器 HTTP Client 参数解析器 HandlerMethodArgumentResolver 解密2、@RequestHeader 介绍@RequestBody 注解源码如下,可以用来标注在接口的参数上,用来获取 HTTP 请求 header 重要的值

2021-12-08 20:50:46 649

原创 慌了,CTO叫我推荐几款优秀的程序员一定要知道的画图工具

最近很多读者私信问我,我图解文章中用到的画图工具、思维导图工具、代码贴图工具是什么?我在很早的时候提到过,不过时间有点久了,而且比较零散,可能现在大部分读者还不知道。我今天统一整理一下,我图解文章用到的各类工具吧,这些工具我用了一年多了,没发现什么问题,所以是值得推荐的。我在这里先列一下:画图工具:draw.io 思维导图工具:xmind/effie 代码贴图工具:carbon 文章编写工具:有道云笔记/typora/effie接下来,详细聊一聊。画图工具这篇文章的封面图就是

2021-12-08 20:48:38 177

原创 “手刃”字节,年包70W,「481页offer收割真题集」果真留你不得

最近群里一个 Java 大佬,出去面试轻松拿下字节、蚂蚁等 3 家大厂的 offer,简直就是大厂 offer 收割机!最终大佬选了字节,年包70w,羡慕哭了这么好的资源肯定不能放过,我立马拜托他总结了他的面试经历和一些心得体会。毕竟字节的面试难度大家都知道的,不是一般的难。除了这些,大佬还分享了他作为 offer 收割机的心得体会,包括面试前要做的准备、面试中可以借鉴的套路等等,比如用简历争取到更多的面试机会 自我介绍时,立即全面抛出技术栈和亮点 先介绍项目背景,打消面试官的疑

2021-12-07 14:32:56 342 1

原创 Spring框架通篇都在用的技术,学完你也能轻松看懂Spring源码

一、软件开发概述2.1、软件开发的生命周期生命周期: 从立项到软件停用的过程问题的定义及规划: 此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性 需求分析: 在确定软件开发可行的情况下,对软件需要实现的各功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。 软件设计: 此阶段主要根据需求分析的结果,把整个软件系统划分为大大小小的多个模块,设计出每一个模块的具体结构。如系统框架设计,数据库设计等。软件设计一般分为总体设

2021-12-03 19:25:21 100

转载 HDFS 底层交互原理,看这篇就够了

HDFS全称是Hadoop Distribute File System,是 Hadoop最重要的组件之一,也被称为分步式存储之王。本文主要从 HDFS 高可用架构组成、HDFS 读写流程、如何保证可用性以及高频面试题出发,提高大家对HDFS的认识,掌握一些高频的 HDFS 面试题。本篇文章概览如下图:本篇文章概览1.HA 架构组成1.1HA架构模型在 HDFS 1.X 时,NameNode 是 HDFS 集群中可能发生单点故障的节点,集群中只有一个 NameNode,一旦 N...

2021-11-26 15:01:17 438

原创 不切换 Git 分支,却能同时在多个分支上工作,我是怎么做到的?

作为程序员的我们应该都有一个感受,一旦进入某个项目,从开发,到发布生产,到 hotfix,到后期维护,那基本都有你的份,正在开发某个 feature,老板突然跳出来说让你做生产商的 hotfix 更是家常便饭,面对这种情况,使用 Git 的我们通常有两种解决方案:草草提交未完成的 feature,然后切换分支到 hotfix git stash | git stash pop暂存工作内容,然后再切换到 hotfix第二种方式较第一种还好很多,可是面对下面这些场景,stash 依旧不是很好的解决方案.

2021-11-26 14:48:04 198

原创 阿里二面:如何快速构建SQL数据库的审计系统?

本文要点审计日志系统 有很多应用场景,而不仅仅是存储用于审计目的的数据。 除 了合规性和安全性的目的之外,它还能够被市场营销团队使用,以便于锁定目标用户,也可以用来生成重要的告警。数据库内置的审计日志功能可能并不够用,要处理所有的用户场景,它肯定不是理想的方式。目前,有很多的开源工具 ,如Maxwell’s Daemons、Debezium,它们能够以最少的基础设施和时间需求支持这些需求。Maxwell’s daemons 能够读取 SQL bin 日志并发送事件到各种生产者,比如Kafka

2021-11-25 15:25:47 387

原创 一时语噻:二面鹅厂,面试官问出Nginx你了解吗?

前天二面鹅厂,面试官问出了“nginx你了解吗?”这样宽泛直白的句式,我一时抓不到重点,一时语噻。下班想了一下,平时潜移默化用到不少nginx的能力,但在面试的时候没有吹成对应的概念。面谈nginx核心能力#nginx是老牌web服务器,以下口水话的nginx基础能力,大家都耳熟能详,看看就行,面试官也不打算考查这个。高并发连接: 官方称单节点支持5万并发连接数,实际生产环境能够承受2-3万并发。内存消耗少: 在3万并发连接下,开启10个nginx进程仅消耗150M内存 (15M

2021-11-25 15:21:48 212

原创 Redis内存满了怎么办?让你玩懂8种内存淘汰策略

我们知道redis是一个非常常用的内存型数据库,数据从内存中读取是它非常高效的原因之一,那么但是如果有一天,「 redis分配的内存满了怎么办 」?遇到这个面试题不要慌,这种问题我们分为两角度回答就可以:「 redis会怎么做 」? 「 我们可以怎么做 」?增加redis可用内存这种方法很暴力,也很好用,我们直接通过增加redis的可用内存就可以了, 有两种方式「 通过配置文件配置 」通过在redis安装目录下面的redis.conf配置文件中添加以下配置设置内存大小//设置redi...

2021-11-25 15:20:39 1211

原创 一个SQL错误的问题让我找到了公司框架中三个bug

本文是对之前开发中遇到的问题的一个总结,文章其实早就写好,但是觉得自己写得不够深入,就让文章一直躺在草稿箱里。昨天突然想起来了,就将文章重新修改了一下,还是发出来吧!问题1当时我在开发一个异常日志记录接口,其实业务流程很简单,就是前端提交错误日志到后台,后台接受到信息处理一番,然后插入数据库。因为这个接口的并发量比较高,为了不影响其他业务,并且同时提高响应的速度。于是采用 @Async 注解+ Spring线程池的方案来实现。线程池的配置如下:<task:annotation-drive

2021-11-25 15:19:33 161

原创 MySQL死锁套路:一次诡异的批量插入死锁问题分析

线上最近出现了批量insert的死锁,百思不得解。死锁记录如下:2018-10-26T11:04:41.759589Z 8530809 [Note] InnoDB: *** (1) TRANSACTION:TRANSACTION 1202026765, ACTIVE 0 sec insertingmysql tables in use 1, locked 1LOCK WAIT 3 lock struct(s), heap size 1136, 3 row lock(s), undo log

2021-11-25 15:18:09 2834 1

原创 我佛了,居然有人用古代皇帝与臣子的关系讲清了JDK动态代理

代理模式Proxy Pattern,代理模式,一个类可以代表另一个类的功能。在生活中代理模式也是比比皆是,房产中介、委托律师、海外代购、同城闪送,他们都是代理了实际用户的一些行为,并且极大地提供了专业性、方便性和扩展性。代理模式的类图如下。静态代理根据代理模式的思想,可以用以下这个例子来说明。在古代皇帝下圣旨、口谕,给王公大臣升职加薪、给后宫嫔妃册封,都是大总管去送信儿,王公大臣也得老老实实磕头谢恩,大总管就是皇帝的代理。/** * @author lyqiang

2021-11-25 15:16:12 91

原创 ConcurrentHashMap有十个提升性能的地方,你都知道吗?

一些题外话如何在高并发下提高系统吞吐是所有后端开发者追求的目标,Java并发的开创者Doug Lea在Java 7 ConcurrentHashMap的设计中给出了一些参考答案,本文详细的总结了ConcurrentHashMap源码中影响并发性能的十个细节,有常见的自旋锁,CAS的使用,也有延迟写内存,volatile语义退化等不常见的技巧,希望对大家的开发设计有所帮助。由于ConcurrentHashMap的内容比较多,而且Java 7和Java 8两个版本的实现相差比较大,如果采用我们上篇中对比

2021-11-25 15:14:24 316

原创 IDEA如何在一个项目空间下管理多个项目?

用过Eclipse和IDEA编程工具都知道,Eclipse创建新项目时都是在同一项目空间下,而IDEA一个项目空间只能有一个项目,创建项目时会创建.idea文件。所以每次创建完项目或者打开另一个项目时都会出现烦人的弹框:当然,你可以勾选记住,不再询问(R),但你到底是让他以后都替换当前窗口呢还是打开新窗口呢?别着急,开发微服务架构的项目时,我们都知道可以创建module模块,那么是否可以每创建一个新项目都当成创建module,从而保证同一项目空间下管理多个不同项目呢?当然是可以的,I

2021-11-25 15:12:55 638

原创 系统设计之路:如何设计一个URL短链服务

每当我们学习一门新的编程语言,做的第一件事情,就是写一个 “ Hello world ” 程序,先让它能 Run 起来,潘多拉魔盒打开之后,再深入学习语言的其他精髓。同样,我们在准备系统设计相关的面试时,“设计一个 URL 短链服务” 往往就是那个 “ Hello world ”。吃下这道开胃菜,才能有胃口品尝后续更美味的 “系统设计” 大餐,比如:设计 News Feeds 系统 设计 Twitter 设计搜索框中的下拉提示 设计 12306 订票系统 设计一个 KV 存储系统 设计一个

2021-11-25 15:11:45 1348

原创 悟了,电商的千人千面系统,原来还可以这么搞

互联网行业的快速发展,给我们带来了极大的便利。回顾整个互联网行业的发展历程,从PC时代到移动互联网时代,从移动互联网时代到IOT(物联网)时代,现在又即将从IOT时代迈入AI(人工智能)时代。这些飞速发展的背后,其实是对数据利用的巨大变革。当下,移动互联网技术和智能手机的发展,使得采集用户数据的能力变得空前强大,无时无刻,无所不在。拥有这些数据后,全行业的个性化推荐能力变得更加容易实现,不论是淘宝京东,还是今日头条,无疑是这个时代的最大受益者。不同于个人电脑,手机这类私人专属物品是与其他人很难共用的

2021-11-24 15:26:53 477

原创 面试官:Spring@Transactional注解在什么情况下事务不生效?

这篇笔记来学习一下使用Spring框架的时候,@Transactional注解标注的方法在什么情况下事务不会生效。我们可以写一个demo项目,引入以下依赖<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId>

2021-11-24 15:25:39 192

原创 面试官:一台服务器能建立的TCP链接真的只有65535个吗?

我是一个 Linux 服务器上的进程,名叫小进。老是有人说我最多只能创建 65535 个 TCP 连接。我不信这个邪,今天我要亲自去实践一下。我走到操作系统老大的跟前,说:"老操,我要建立一个 TCP 连接!"老操不慌不忙,拿出一个表格递给我, "小进,先填表吧"我一看这个表,这不就是经典的socket 四元组嘛。我只有一块网卡,其 IP 地址是123.126.45.68,我想要与110.242.68.3的 80 端口建立一个 TCP 连接,我将这些信息填写在了表...

2021-11-24 15:24:13 214

原创 收藏等会学会,IO多路复用,从来没遇到过能讲得这么明白的了

很多对技术有追求的读者朋友,做到一定阶段后都希望技术有所精进。有些读者朋友可能会研究一些中间件的技术架构和实现原理。比如,Nginx为什么能同时支撑数万乃至数十万的连接?为什么单工作线程的Redis性能比多线程的Memcached还要强?Dubbo的底层实现是怎样的,为什么它的通信效率非常高?实际上,上面的一些问题都和网络模型相关。本文从基础的概念和网络编程开始,循序渐进讲解Linux五大网络模型,包括耳熟能详的多路复用IO模型。相信读完本文,大家会对网络编程和网络模型有一个较清晰的理解。基本概念

2021-11-24 15:22:53 140

原创 Redis不止缓存,原来在微服务领域也做出了这么大的贡献

前言说到redis,可能大家的脑海中蹦出的关键词是:NoSQL、KV、高性能、缓存等。但今天的文章从另一个角度——微服务来展开。这篇文章的起因也是源自一次面试经历,在面试一位来自陌陌的候选人(就是那个交友的陌陌)时,他提到一点让我觉得很有意思,他说redis在陌陌被使用得非常广泛,除了常规的缓存外,某些场景下也当NoSQL数据库来使用,还用redis作为微服务的注册中心,甚至连RPC的调用协议都用了redis协议。注册中心最早了解到redis可以作为注册中心是从dubbo的源码中看到,但一直

2021-11-24 15:20:56 116

原创 Redis到底是怎么想的?用跳表来实现有序集合

Keeper导读:干过服务端开发的应该都知道 Redis 的 ZSet 使用跳表实现的(当然还有压缩列表、哈希表),我就不从 1990 年的那个美国大佬 William Pugh 发表的那篇论文开始了,直接开跳文章拢共两部分跳表是怎么搞的 Redis 是怎么想的一、跳表跳表的简历跳表,英文名:Skip List父亲:从英文名可以看出来,它首先是个 List,实际上,它是在有序链表的基础上发展起来的竞争对手:跳表(skip list)对标的是平衡树(AVL Tre.

2021-11-24 15:14:51 403

原创 Spring框架通篇都在用的技术,学完你也能轻松看懂Spring源码

一、软件开发概述2.1、软件开发的生命周期生命周期: 从立项到软件停用的过程问题的定义及规划: 此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性 需求分析: 在确定软件开发可行的情况下,对软件需要实现的各功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。 软件设计: 此阶段主要根据需求分析的结果,把整个软件系统划分为大大小小的多个模块,设计出每一个模块的具体结构。如系统框架设计,数据库设计等。软件设计一般分为总体设

2021-11-24 15:13:13 142

原创 公司项目升级到Spring 5.3.x之后,GC次数急剧增加,我TM人傻了

问题背景最近我们的项目升级到了 Spring Boot 2.4.6 + Spring Cloud 2020.0.x,但是升级后,我们发现 YoungGC 明显增高,分配对象速率明显增高,但是晋升的对象并没有增多,证明都是新创建的对象并且没过多久就可以被回收。我们来看其中一个进程的监控,这时候的 http 请求速率大概在 100 左右:这就很奇怪了,请求速率并没有那么大,但是通过监控可以看出每秒钟分配了将近两个 G 的内存。在升级之前,这个分配速率大概在 100~200 MB 左右,在同等请求

2021-11-24 15:10:05 275

原创 收藏等于学废,SpringBoot 整合缓存Cacheable实战详细使用

前言我知道在接口api项目中,频繁的调用接口获取数据,查询数据库是非常耗费资源的,于是就有了缓存技术,可以把一些不常更新,或者经常使用的数据,缓存起来,然后下次再请求时候,就直接从缓存中获取,不需要再去查询数据,这样可以提供程序性能,增加用户体验,也节省服务资源浪费开销,在springboot帮你我们做好了整合,有对应的场景启动器start,我们之间引入使用就好了,帮我们整合了各种缓存 <dependencies> <dependency>

2021-11-24 15:08:24 419

原创 从二将军问题开始,把分布式事务的分类与应用场景一次讲清

前言不知不觉距离上一篇的更新已经有好几天了,后台也有很多小伙伴催更,奈何事情比较多,期望我能坚持下去~最近几篇我们聊一聊分布式事务。二将军问题我们先来看个故事,相信会有助于你对分布式事务的理解。二将军问题是一个计算机领域一个经典的问题。「故事背景」黑白两军交战之际,两股白军将黑军被围困在山谷之中;山谷两侧任意一股白军都比山谷中的黑军人数少,因此单独一只白军向黑军发起进攻,必败无疑,但是两股白军人数总和却比黑军人数多,若能同时向黑军发起进攻,则可大胜。而山谷左右侧的白军相互通信(告知进攻时间)

2021-11-24 15:06:44 318

原创 系统重构:从Jar包冲突搞到类加载机制,就是这么霸气

接手了一套比较有年代感的系统,计划把重构及遇到的问题写成系列文章,老树发新枝,重温一些实战技术,分享给大家。【重构01篇】,给大家讲讲Jar包冲突及原理。背景目前市面上项目管理要么是基于Maven,要么是基于Gradle,最近接手了一套纯手动添加jar包的项目。对于纯手动添加jar包的项目已经是多年前的方式了,现在工作三五年的技术人员可能都没有经历过。就是把项目中所需的jar包挨个找出来,添加到一个lib目录中,在IDE中再将jar包依赖手动添加上。这种方式来添加jar包依赖,不仅费事,而且

2021-11-23 14:58:54 141

原创 深入InnoDB存储引擎最小存储单位剖析MySQL,其实索引真不难

索引可以说是每个工程师的必备技能点,明白索引的原理对于写出高质量的 SQL 至关重要,今天我们就从 0 到 1 来理解下索引的原理,相信大家看完不光对索引还会对 MySQL 中 InnoDB 存储引擎的最小存储单位「页」会有更深刻的认识从实际需求出发假设有如下用户表:CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` int(11) DEFAULT NULL COMMENT '姓名',

2021-11-23 14:49:14 120

原创 惊喜来袭,京东亿级流量电商系统JVM模型参数预估方案

1. 需求分析大促在即,拥有亿级流量的电商平台开发了一个订单系统,我们应该如何来预估其并发量?如何根据并发量来合理配置JVM参数呢?假设,现在有一个场景,一个电商平台,比如京东,需要承担每天上亿的流量。现在开发了一个订单系统,那么这个订单系统每秒的并发量是多少呢?我们应该如何分配其内存空间呢?先来分析一下每日亿级流量,平均一个用户点击量在20-30左右,通过这个计算出日活用户数约1亿/20=500万, 看的人多,买的人少,通常下单率不超过10%,我们按照留存率10%来计算,日均订单约50

2021-11-23 14:46:24 136

原创 MySQL沉浸式面试:隔离级别、锁、索引原理连环炮你扛得住吗?

今天我们来聊聊MySQL原理基础篇主要是侧重基础知识,原理篇是有一定基础后的递进,通过学习本篇,不仅可以进一步了解MySQL的各项特性,还能为接下来的容灾调优打下坚实的基础。现在,就让我们继续跟随阿柴进行这场沉浸式面试吧。ACID与隔离级别那你先来说说MySQL的四种隔离级别吧。SQL标准定义了4类隔离级别,包括一些具体规则,用来限定事务之间的隔离性。这四种级别分别是读未提交、读已提交、可重复读、串型化。读未提交,顾名思义,就是可以读到还没有提交的数据;读已提交会读到其它

2021-11-23 14:42:11 84

转载 面试官:hold住了八股和算法,扫码登录应该怎么实现你总不会了吧

真实面试小场景:经过八股和算法的交锋,老三松了口气,都hold住了。只见面试官微微一笑,“其实,我真正想问的是……你觉得扫码登录应该怎么实现。”老三:“啊……这个,哦……那个,这个就这么,然后……额……嗯……”面试官:“了解了,回去等通知吧。”完……好了,铺垫结束,进入我们今天的主题,扫码登录功能该如何实现?扫码登录场景扫码登录场景想必我们都不陌生——很多PC端的网站都提供了扫码登录的功能,无需在网页上输入任何账号和密码,只需要通过手机上的APP,如微信、淘宝、QQ等等,使用扫描

2021-11-23 14:40:58 59

原创 痛击面试官,CURD系统也能做出技术含量

引子很多朋友可能会因为自己做的工作不是特别核心或者业务简单而引起面试中没有自信。但是很多公司面试的时候是可以接受面试者之前岗位的并发量、交易量低一些的。比如我们要招聘和我们交易量同等级或者以上的出来的人才,业界本来就没有多少,但我们还是要招人的。所以很多时候更偏向于考察面试者的设计底蕴、思考和解决问题的能力。我建议面试时,面试者要争取主动权,主动引导面试。一般作为面试官也很乐意被面试者引导。因为面试官的职责是发现面试者的技术特长,为此我们绞尽脑汁地从简历中、自我介绍中去发掘。如果面试者可以自己有完整

2021-11-23 14:39:41 67

原创 Spring Cloud Alibaba使用Seata解决分布式事务全过程解析

为什么会产生分布式事务?#随着业务的快速发展,网站系统往往由单体架构逐渐演变为分布式、微服务架构,而对于数据库则由单机数据库架构向分布式数据库架构转变。此时,我们会将一个大的应用系统拆分为多个可以独立部署的应用服务,需要各个服务之间进行远程协作才能完成事务操作。在微服务项目中通常一个大项目会被拆分为N个子项目,例如用户中心服务,会员中心服务,支付中心服务等一系列微服务,在面临各种业务需求时难免会产生用户中心服务中需要调用会员中心服务,支付中心服务而产生调用链路;服务与服务之间通讯采用RPC远程调用技术,

2021-11-23 14:31:56 342

原创 老生常谈的问题:Spring Boot中如何一键自定义starter?

Spring Boot starter我们知道Spring Boot大大简化了项目初始搭建以及开发过程,而这些都是通过Spring Boot提供的starter来完成的。品达通用权限系统就是基于Spring Boot进行开发,而且一些基础模块其本质就是starter,所以我们需要对Spring Boot的starter有一个全面深入的了解,这是我们开发品达通用权限系统的必备知识。1 starter介绍spring boot 在配置上相比spring要简单许多, 其核心在于spring-boo..

2021-11-23 14:24:22 145

原创 复杂知识简单学,Springboot加载配置文件源码分析

Springboot 加载配置文件源码分析本文的分析是基于springboot 2.2.0.RELEASE。本篇文章的相关源码位置:https://github.com/wbo112/blogdemo/tree/main/springbootdemo/springboot-profilesspringboot加载配置文件如application.yml是通过org.springframework.boot.context.config.ConfigFileApplicationListene

2021-11-23 14:21:02 222

原创 你管这破玩意叫操作系统源码 | 第一回 最开始的两行代码

从这一篇开始,您就将跟着我一起进入这操作系统的梦幻之旅!别担心,每一章的内容会非常的少,而且你也不要抱着很大的负担去学习,只需要像读小说一样,跟着我一章一章读下去就好。话不多说,直奔主题。当你按下开机键的那一刻,在主板上提前写死的固件程序BIOS会将硬盘中启动区的 512 字节的数据,原封不动复制到内存中的 0x7c00这个位置,并跳转到那个位置进行执行。启动区的定义非常简单,只要硬盘中的 0 盘 0 道 1 扇区的 512 个字节的最后两个字节分别是0x55和0xaa,那么...

2021-11-23 14:19:11 169

空空如也

空空如也

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

TA关注的人

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