自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从双击无反应到纯D3DMetal-我在Mac上啃下RDR2兼容层全过程

画面上像是登录问题,实际旁边还有一个硬件检查模态窗口。它挡住了状态继续推进。日志显示,启动过程中 GPU 身份从 Apple GPU 变成了 AMD Compatibility Mode。游戏无法把这种变化对应到支持列表,于是弹出警告。我们没有把自动点击按钮当作最终方案,而是继续追“为什么它会弹”。最后发现,自制 ADL shim 的函数签名多写了一个参数。函数可以返回成功,但输出结构被写到错误地址,AGS 始终读不到正确驱动版本。

2026-08-17 14:51:02 366

原创 redis 为什么叫做redis?????

之前bing翻译不出来,现在我好像有点明白命名的用意了!redis负责缓存,那么不就是时刻准备数据吗?那不就是ready,所以不就是redis吗!redis,不觉得和ready很像吗?

2026-05-13 21:39:35 21

原创 八股复习2:Java Array list和Linked list

比如删除一个元素,需要移动整个元素来补齐刚刚空缺的位置,就像是体育课有一列空了一位同学,那么这一列后面的同学就来补齐整个列队一样。链表修改只需要修改某两个指针的指向,而其他元素是不需要移动的,整体的性能非常快!然后再根据不同的意思来延伸即可:比如链表就是适合修改,Array有索引就是查询快。Arraylist是序号数组,每一个元素都有一个自己的index,也就是索引。Arraylist查询很快!但是查询的时候只依靠指针移动来查询,因此查询性能不怎么样。看到Linked list就知道和链表肯定有关系!

2026-05-08 19:53:06 90

原创 八股复习第一天:java与堆栈

这种引用关系就是java中的引用及其引用的对象之间的联系:注意第一个引用是名词,第二个则是动词!堆栈就是负责管理内存中存储数据的一种结构设计,因为如果直接随便堆放数据的话管理很混乱,也不好整理。平时便利店的管理就是店员首先通过手里的上货单(栈),然后到仓库(堆)中去找对应的商品。在java中引用存储在栈中,对象存储在堆中,我们总是操作引用来间接控制对象。堆栈是JVM中的一体两面:栈负责管理调度,堆则负责存储。于是在java中就是对应的引用和对象的关系。堆栈的顺序其实是栈在上,堆在下。2.CPU缓存(更快)

2026-05-08 17:02:58 41

原创 将本地项目代码上传至github——我的初次尝试

——————————————————创建仓库————————————————————————————————————————————改用HTTPS——————————————————————————————————————————————重新上传————————————————————————————————————————————————————总结——————————————————————————————————————————其他——————————————————————

2026-04-22 10:08:50 348

原创 Mac 本地vllm + qwen3-30b-a3b-instruct-4bit + void/opencode 终极的本地vibe coding开源代替 cursor方案

我发现我之前一直都是错误的,ollama确实最简单,一键下载运行,也确实可以和开源agent工具搭配,但是!纯对话有80toks!喜欢那种极限利用硬件的感觉,本地真的无敌了好吧啊哈哈哈哈,真爽啊vibe coding!比如这样,你可以自己在vllm中下载,也可以在lm studio中下载完以后再通过vllm启动!你要确定系统允许分配16g以上给显存!不然后续的启动会失败的!不要看终端输出的结果,因为那个是平均的时间,算上工具调用会慢一点但是完全惊艳!(24g还是太拘谨了哈哈哈哈,我算是已经利用了极限了!

2026-04-16 22:08:49 504

原创 Agent开发基础概念学习

Ai拿到它相当于就是利用自身的性能对功能进行扩展,比如它语言能力很强,但是也需要读写工具操作文件才能进行读写,那么这个工具就是相当于外化了ai的这部分功能,因此称之为扩展不违和。这就给工作流更加清楚的结构了,因此业务不需要繁杂的分支了,使用ai路由节点直接节省分支,业务更加纯粹。实际上就是在主机的能力之上调用主机的性能进行系统功能的扩展,整个电竞设备是成体系系统的。因此制定一个统一的规范进行开发,这样大家都方便,于是就是协议诞生了mcp!好了现在你有了一个强大的9090主机!说白了就是一层统一的协议。

2026-04-09 20:49:21 42

原创 Ai代码小助手,使用Spring Boot3 + LangChain + Vue实现调用本地Ollama大模型的编程小助手

看到这个提前bean的空值判断了吗,这个就是之前真的在这了卡了很久,从接口定义到工厂类全部检查了几遍的,项目重新来了两次的那种,都没有检查出问题,然后又怀疑是不是测试类的问题,结果全都没有问题哈哈哈💦。不过本次项目是一个本地部署的项目,因此没有使用这种进阶的用法了,感兴趣的小伙伴可以看看鱼皮大佬的ai项目,里面详细讲述了这种进阶用法(不像我这种菜鸡哈哈哈哈💦)这里create的底层原理是java的代理对象机制,我们开发的时候不用关系类型转换的种种细节,只需要安心编写接口和工厂类就行了,嗨嗨嗨!

2026-03-09 11:14:50 479

原创 关于IDEA项目突然不识别

我就是在这个地方卡了好久,一直以为不应该是从本地项目导入吗,可能是我理解有问题,总之一定要选择外部导入!如果mave的pom文件图标没有恢复,此时右键pom文件,选择maven选项,然后重新加载即可!我打开别的项目没有问题,但是就是这个项目一直处于解体状态,全都散掉了哈啊哈哈哈💦。可以看到是这个箱子,此时编译器输出已经没有了,very crazy~哈哈哈。然后java类文件的图标也不见了,统一变成了橙色的茶杯头!此时再回去看就可以看到项目已经恢复了!终于success!成功解决,继续项目吧!

2026-03-08 15:18:20 189

原创 LangChain4j 配置依赖问题​​java.lang.IllegalArgumentException: invocationContext cannot be null

前面的报错导致我反反复复检查了 好几遍工厂类和Service,还有测试类,以为是测试类没有扫描到工厂类还手动导入了,又以为是工厂的注入bean名称有问题,手动指定bean名称。总之bean注入又问题,invoke为null的情况,不一定是配置bean有问题,有时候说不定是依赖版本太低不支持工厂的注入方法呢。后面一直没招了,终于找到pom依赖上去了,尝试更新了一下依赖版本,问题就是Service类的工厂类没给Service类创造实例。一直测试说是没有对应的bean,不可以注入空的依赖对象。

2026-03-06 19:17:11 118

原创 Mac部署ollama本地大模型

同时还可以拉取其他开源的大模型部署,使用ollama list来查看目前已经部署好的模型即可。你可以使用/set nothink这个命令来关闭展示思考过程,这样会直接输出ai的回答。这里以r1的14b为例子进行下载,会占用9个g的空间。最后可以使用/bye来退出ollama,结束所有对话。接下来可以进行本地对话,直接利用ai模型的强大能力。下载的时候可能会中断几次,耐心等待下完即可。这样看到一个对话框就说明成功咯!3.从ollama下载开源大模型。可以看到我这里部署了两个大模型。到这里就算是部署成功咯!

2026-03-03 16:50:03 444

原创 JavaSpring AI 接入本地ollama大模型

IDEA最新版:就是合并了社区版和商业版的新版本,新版自带免费的SpringBoot!~~泪目了wuwuwuwu,属于插件的时代还是过去了哈哈哈哈💦。———————————————————————正式开始——————————————————————也就是接上本地的大模型,这里我部署的模型是deepseek-r1的孙子版本哈哈哈哈哈💦。这样就算是接入成功了!使用jdk17就行了,非常经典的jdk版本。1.新建项目开始,直接使用自带的生成器即可。嗨嗨嗨,2026第一篇文章,新年快乐!

2026-03-03 16:00:15 207

原创 Error creating bean with name ‘javaConfig‘: BeanPostProcessor before instantiation of bean failed

一开始以为又是Calculator对象注入的依赖是空的,但是后续修改了@Autowired()注解,增加了requried = false 参数以后,还是有问题。总结:JavaSpring可以通过注解实现依赖注入,还可以使用AOP来进行切片管理。又绕了一大圈,其实问题不在这个实体类,因为Service注解已经加好了的。注意最后一个@AfterThrowing注解的方法,必须要制定注解里面的参数才可以使用这个注解。总结一下:配置类初始化的问题不一定都是实体类对象的问题,还可能是注解参数的问题。

2025-12-04 16:06:05 283

原创 《从根上理解MySQL是怎样运行的》第二十五章笔记

新插入的记录由INSERT操作提供隐式锁的保护。后续其他事务也想对着一条记录进行操作,但是发现这个记录已经被其他的事务加锁了,于是自己的is-waiting状态为true:意思是需要排队,等前面之前的事务提交以后再轮到自己。在聚簇索引记录中自带有事务id的隐藏列,其他事务对记录操作的时候首先先看看该事务隐藏列对应的事务是否处于活跃事务,是的话就帮助它创建一个X锁。个人思考:其实隐式锁是通过隐藏列的事务id,通过其他事务发现该记录已经被占据的被动上锁的方式——由其他事务帮忙上锁,事务id只是告知一个状态。

2025-12-03 15:09:53 329

原创 《从根上理解MySQL是怎样运行的》第二十四章笔记

并且每个版本都会有对应的事务id。MVCC就是多版本并发控制的意思,READ-COMMITTD、REPERATBLE READ两种隔离级别的事务在执行普通的查询操作时访问版本链的全过程,可以支持不同事务的并发执行从而提高了性能。只是两种级别的生成ReadView的时机不同,前者每次查询都生成一个,后者只会第一次的时候生成一个,后续每次查询都使用第一次产生的ReadView即可。(3)不可重复读取:每次读取都是一个新的被修改后的值,那么这就是不可重复读取,字面意思很直接,就是之前的数据只能读取一次了。

2025-12-03 14:59:02 828

原创 《从根上理解MySQL是怎样运行的》第二十三章笔记

回滚段一开始就是创建在表空间中的,分配Undo页面链表的时候先看看undo slot,也就是回滚槽位是否为空:是否为FIL-NULL,是否已经指向了一个新的Undo页面了。对于insert类型的undo页面来说:直接将之前旧的undo日志页面覆盖掉,从头开始写新的事务的undo日志,并且调整相关的统计数据。一个事务就要分配不同的独立的undo页面链表,如果存储的记录很少的话,还是挺浪费的。是写在Undo页面中的,对于单个事务来说不同的Undo页面形成不同的链表,这些链表统一放到回滚段中的槽位中管理的。

2025-12-03 14:52:16 404

原创 《从根上理解MySQL是怎样运行的》第二十二章学习笔记

针对主键值更新的情况会记录一条类型为:TRX-UNDO-DEL-MARK-REC的undo日志,插入的时候也会记录一条INSERT类型的undo日志,也就是每次对一条记录的主键值做修改的时候需要写两条undo日志。包括该列在记录中的位置,占用的空间大小,该列的实际值。聚簇索引中的记录都是按照主键值进行排序的,如果更新了某条记录的主键值,那么意味着它在聚簇索引中的位置将会发生变化。事务保持原子性——一不做二不休。如果更新的列空间发生变化:直接就地更新,在原来的基础上修改对应列的值,一个普通的更新类型的日志。

2025-12-01 17:45:13 376

原创 《从根上理解MySQL是怎样运行的》第二十一章笔记

对于checkpoint-lsn之前的redo日志都可以覆盖,因为它们的日志已经刷盘了,所以不用管他们了,主要是内存中不确定没有刷盘的页,于是可以从checkpoint-lsn来开始读取redo日志恢复。Redo主要是针对内存做的方案,如果页面已经刷新到磁盘里了,那你的redo也没有存在的必要了,这种情况就可以覆盖这个redo记录,将空间留给下一个redo记录。Redo日志文件的容量是有限的,没办法只好循环使用这个文件了,但是最后写的redo日志容易和一开始的redo日志追尾。

2025-12-01 17:40:09 303

原创 《从根上理解MySQL是怎样运行的》第二十章笔记

这样系统从日志中恢复的时候,只有解析到有这个类型的日志的时候才认为是一组完整的redo日志操作,才会进行恢复,否则会放弃掉该组所有的日志。也就是一条语句的完成是多个原子性操作的实现,然后一个操作又可能导致很多修改,于是需要成组的redo日志来记录这一次的原子操作。也就是整个插入的过程是很多操作一起进行的,如果你只记录了一部分过程,那么如果后续需要恢复的实际就会恢复成不正确的状态。并且针对一个组的记录,在恢复的时候,要么所有的操作都恢复原样,要么就一条也不恢复,这就是一个整体思想的运用。

2025-12-01 17:35:52 561

原创 《从根上理解MySQL是怎样运行的》第十九章笔记

可以说原子性和隔离性都是保证一致性的两种手段,但是这两种都是在逻辑上的角度来的:比如狗哥本身没有钱,但是转了10元给猫爷,那么狗哥的账户不就是负数了嘛,这样也不行,因为不符合现实要求。事务执行了一半但是变成失败的了,这就是中止的。比如对银行账户中的钱进行修改,修改一次就需要更新一次状态,现实生活中是自动随着行动的发生更新的,但是数据库中就不一样了,必须满足规则更新状态才行。状态转换的结果,如果没有再修改那么就是永久保留的,比如转账转成功了那么金额就一直是转账成功的那个状态的金额,除非你再次转账之类的。

2025-12-01 11:03:07 782

原创 《从根上理解MySQL是怎样运行的》第十四章学习笔记

MySQL的设计师考虑到了这一点,设计出了一些规则,可以尽力将糟糕的语句转为一些可以高效执行的形式,这个过程称之为查询重写:就是将性能不高的语句重新写一遍。外连接中不符合连接条件的记录的某些列值是以NULL的形式出现的,如果你使用WHERE过滤掉它们,那么这个时候外连接和内连接就没有差别了!A = b and b = c and c = 5 等价于: a = 5 and b = 5 and c = 5。内连接的驱动表和被驱动表是可以互相换位的,可以通过优化连接顺序来优化查询,但是外连接不行。

2025-12-01 10:58:27 349

原创 《从根上理解MySQL是怎样运行的》第十三章笔记

N-rows是估计值:InnoDB中按照一定的算法选取几个叶子节点页面,计算该节点中页中的记录数,然后这几个页记录数的平均数乘以所有叶子节点的数量就是该表的n-rows的值。小总结:字典数据 -》 两种节点对应段的信息 -〉 然后再从这些字段中找到对应的段结构 -》 最后得到主要的从属于段段三个链表的位置 -〉 数据统计。其实统计的着手点还是从管理页面的链表开始的,这下就好理解了:统计的过程主要就是重新寻找管理页面的链表的过程 + 统计。查询成本的时候经常使用一些统计数据,统计数据是以什么方式收集来的呢?

2025-11-29 21:36:14 391

原创 《从根上理解MySQL是怎样运行的》第十二章学习笔记

对于InnoDB存储引擎来说,页是磁盘和内存的交互的基本单位,固定一个页面花费的成本是1,查询一条符合要求的记录是0.2。MySQL使用index dive的方式来计算记录数:通过访问索引对应的B+树来计算记录的条数:获取最左边和最右边的记录,然后数个数即可。总之就是分别单独分析不同的索引的查询成本。查询记录都是将数据或者索引加载到内存中进行的操作,这个加载的时间损耗称之为I/O成本,也就是时间成本。执行查询之前优化器会找到所有可能实现的方案,然后选择一个最优的方案——成本最低的选择。

2025-11-29 21:35:09 427

原创 《从根上理解MySQL是怎样运行的》第十一章学习笔记

(2)然后从第一个查询得到的结果集去t2表中查找匹配的记录。它比较简单,因此不管谁是驱动表结果集都是一样的,只是驱动表只单表查询一次,被驱动表可以查询多次(在驱动表的结果集的“驱动下”的筛选)MySQL中连接的本质具体就是嵌套循环的筛选驱动:上一个单表的结果集作为下一个表的“驱动”,也就是每筛选一次都会更新一次驱动集来驱动下一个被驱动表。所以这个join buffer越大越好,这样一次性能使用更多的驱动表的结果集的记录,最好是能将整个驱动表的结果集放到这个buffer中,这样只需要访问一次被驱动表就行了。

2025-11-29 21:33:56 376

原创 《从根上理解MySQL是怎样运行的》第十章学习笔记

于是这就是最终的筛选条件。(1)二级索引列值为NULL的情况,不管是普通的二级索引还是唯一二级索引,都不限制NULL的记录的数量,因此查询NULL记录最多是ref级别的访问方法。也就是之前说过的二分法快速查询的办法,内节点 -》 叶节点 -〉 具体的页 -》 页中的槽 -〉定位到页中的组 -》 遍历该组的到具体的数据。查询索引的时候可以将索引合并,交集合并和并集合并,本质还是通过二级索引得到的结果集中对id主键值进行的交集和并集的操作,然后再回表,节约性能。因为索引中的全部列都是直接进行值的等值比较的。

2025-11-29 21:32:23 353

原创 《从根上理解MySQL是怎样运行的》第八章学习笔记

一个表空间可以划分成很多很多的页,于是我们的表数据就存储在这些表空间的页里面。MySQL服务器启动的时候会到文件系统中的某个目录下加载一些文件,之后运行中产生的文件都会存储到这个目录下的某些文件中。表中的数据是存储在和表同名的.ibd文件中的,这些文件会随着记录的增多而占用越来越多的空间。用户数据加上运行时的一些信息一起存储在数据目录中,这个数据目录就是操作系统中真实的一个文件目录,也就是我们常说的“数据库”安装目录是安装的时候默认的路径或者指定的目录,安装目录的重点是bin目录中的可执行文件。

2025-11-29 21:30:38 779

原创 java.lang.NullPointerException: Cannot invoke “com.atguigu.ioc_02.UserService.sayHello()“

(1)注册问题:NoSuchBeanDefinitionException,启动时报错。一定要注意区分到底是依赖注册有问题,还是依赖已经注册了但是状态为空的问题!(2)依赖状态问题:NullPointerException,运行时报错。其实是构造器注入的时候注入的字段是空值:(Autowired省略了)(2)状态问题:空依赖状态测试即可,测试到底是不是为null。测试的结果没有问题, 确实是注册成功的。(1)注册问题:使用getBean进行测试。这里看到其实已经注册成功的。

2025-11-22 20:48:21 327

原创 《从根上理解MySQL是怎样运行的》第九章学习笔记

这样每次想找一个FREE-FRAG状态的区的时候,就直接将FREE-FRAG链表的头节点拿出来,从该链表头区中取出一些零碎的页来插入数据,用完一个节点的区就将该节点移动到FULL-FRAG链表中,并修改成对应的状态即可。每一组的开头存放着改组对应的区的管理单位:XDES管理的是不同的区,INODE则是存放管理XDES位置的一个单位。INODE结构是存放段内零散页的地址以及附属于该段的FREE、NOT-FULL、FULL链表的基节点(也就是完整区的链表的基节点的位置):段就是管理完整区的。

2025-11-21 20:09:27 945

原创 《从根上理解MySQL是怎样运行的》第七章学习笔记

如果建立了很多索引。需要回表的记录越多,那么使用二级索引的性能就越低,甚至有些时候比全盘扫描还慢:比如刚开始name查询的范围太大了,中间的用户记录太多有90%的记录需要回表。MySQL有一个叫做查询优化器的东西,自动根据搜索条件匹配索引联合索引列的顺序,也就是全值查询的时候将列值自动按照B+树索引建立的列值顺序重新排序,然后再进行查询。同理,如果你想用到phone-number进行B+树索引进行查询的话,可以先锁定两个确定的列值,这样再前两者都相同的情况下,后续的第三个列值排列都是按照顺序进行排列的了。

2025-11-21 09:56:02 342

原创 《从根上理解MySQL是怎样运行的》第六章学习笔记

接下来就好搞了,原来InnoDB是使用的B+树作为基本的数据结构存储数据的,之前我搞博客系统的时候就深学过这种数据结构,有点意思嘞,当时是用的queue来遍历的,那个思路真的不错,是每次剥去一级子树(节点子树)来遍历所有的节点,然后还原回去的时候是使用了一个嵌套的循环搞定的,哈哈哈,略显粗糙了,但是可读性很好。这就导致了另一个问题,如果存储目录项的页面也太多了,又回到了之前的定位页的问题,这个时候为这些存储目录项记录的页再生成一个新的更高级的目录,这样就相当于是嵌套存储操作了。(目录项作为页面的替身!

2025-11-20 22:06:07 400 3

原创 《从根上理解MySQL是怎样运行的》第五章学习笔记

(2)每次插入一条记录,都会从页目录中(也就是那些槽中)找到主键值比本记录大并且差值最小的槽,然后增加该槽对应的n-owned值加1(也就是分组末尾的记录的属性加一),表示组内有添加了一条记录,知道该组的记录数为8。有几个槽就代表有几个分组,最小记录的n-owned属性为1,也就是以最小记录结尾的分组中只有一条记录,最大记录的n-onwed值为5,说明该组中只有5条记录,包括最大记录本身和插入的记录。但是我们插入的记录是从2开始的。Trailer也就是尾部,尾部的校验和是和头部的校验和对应的。

2025-11-20 22:01:55 470

原创 《从根上理解MySQL是怎样运行的》第四章学习笔记

InnoDB存储引擎是以页为单位进行存储的,一页是16kb,也就是16384个字节,但是VARCHAR(M)是最多可以存储65532个字节的,所以可能一页都存不下一条记录。这里我们来探索最常用的存储引擎——InnoDB。(4)一页一般是16kb,当记录中的数据太多的时候,就将多出的数据存放到其他页中,这种现象就是行溢出现象。请求的处理是交给存储引擎来落地实现的,真实数据在不同的存储引擎中存储的格式一般都是不同的。用于描述记录,它是由固定的5个字节组成的,一共40个二进制位,不同的位表示不同的意思。

2025-11-20 22:00:06 378

原创 《从根上理解MySQL是怎样运行的》第三章学习笔记

请求的字符 -》 对应的字节串 -〉 中途网络运输的01串 -》 服务器端 -〉 按照规则还原为对应的字节串 -》 再解码得到字符 -〉按照服务器的变量进行编码得到相应的字节串 -》 根据这个字节串进行查找 -〉 得到字节串 -》 再解码这个字节串得到字符 -〉 依据客户端编码为新的字节串 -》 发送回客户端。将刚刚的“我”的utf8编码先按照原先的规则解码一次,得到原字符,再找gbk的字符集进行编码,这样得到的为0xCED2,这就是一次字符集的转换:将“我”从utf8转换到了gbk字符集。

2025-11-20 21:59:05 439

原创 《从根上理解MySQL是怎样运行的》第二张学习笔记

启动服务器的时候全局变量会初始化一个默认值,然后客户端连接的时候会分配不同的会话变量值,连接的时候默认会话变量值就是全局变量的值:用全局变量的值初始化会话变量的值:也就是全局变量是包含局部变量的。顾名思义:表示服务器运行时状态的变量,反应服务器的运行情况——因此我们不能手动设置,这是服务器自动生成的,相当于每天的天气,打游戏时电脑的温度。注意:某次连接的时候客户端修改了全局变量的值,那么这个值只会在后续的其他的新连接中生效,本次的值还是当前的SESSION的值。SET 和 SET SESSION是等价的。

2025-11-20 21:56:50 329

原创 《从根上理解MySQL》第一章学习笔记

Cos60°是多少?客户端发起连接的时候需要携带主机信息,用户名等相关参数,服务器端会检查认证,没有问题才会连接,还可以使用SSL网络通信来确保数据传输安全(客户端和服务器端在不同的主机的时候)为了方便起见,人们将连接管理,查询缓存,语法解析,查询优化,这些不涉及真实数据存储的功能划分为MySQL server的功能,将真实存储的功能划分为存储引擎的功能。MySQL程序处理查询请求也是这样,之前处理过的请求和结果放到缓存中,如果下次有一样的请求过来那么直接走这个缓存即可,就不用再一遍遍的去数据库中找了。

2025-11-13 19:40:33 458

原创 《网络是怎样连接的》第六章学习笔记

也就是预备连接的待机状态,当客户端发起连接时,这个模块会恢复运行并接收连接,然后启动通信模块(b),并移交完成的套接字给(b),然后通信模块就可以使用这个套接字和客户端进行通信,通信结束后(b)模块就退出了。如果服务器返回的信息比较复杂,那么浏览器就会调用相应的程序,比如浏览器的插件,或者一个独立的程序。1.是的:路由器和交换机并不考虑请求包和响应包之间的关联,而是作为独立的包对待,请求和响应是可以通过不同的路由来传输的,具体走哪条路由,是由路由器的路由表和交换机的地址表中的配置来决定的。

2025-11-04 20:17:20 360

原创 《网络是怎样连接的》第三章学习笔记

那么就将服务器划分成两个类型,一类是和外界联系的,分配公有地址。PHY接收信号转换通用类型给MAC模块,然后MAC模块将其转换为数字类型,通过FCS校验,和MAC地址校验(看看是不是给自己的包)以后,就放到缓冲区,不然就丢弃这包。第一种是新建:收到陌生的发送方的MAC地址,将其登记在表中,这样下次如果有包需要发送到这个地址,那么就直接使用这个MAC地址即可。具体发送要通过交换电路,交换电路可以同时传输多路信号,最终网络包到达发送端,端口的MAC模块和PHY模块会执行发送操作,这部分和网卡的发送是一样的。

2025-11-04 20:16:30 464

原创 《网络是怎样连接的》第二章学习笔记

然后有了这个必要的参数,协议栈开始建立试通信,用现在流行的说法来说就是“TCP的三次握手”。找到对应的套接字之后,套接字中就会写入相关的信息,并且将状态改为正在连接,上述操作完成以后,服务器的TCP模块会返回响应,这个和客户端的发送一样需要设置双方的端口号和SYN比特,然后将ACK设置为1,这表示已经接收到请求的网络包了(火车已经到达了目的地,这里就是请求已经到达服务器了)设置ACK是为了确认网络包已经送达了,然后服务器的TCP模块再将TCP头部传递给IP模块,并委托IP模块向客户端返回响应。

2025-10-20 14:48:46 438

原创 《网络是怎样连接的》第一章学习笔记

(哈哈哈哈哈哈💦,试了一下,我直接找到谷歌浏览器的IP地址然后输入到浏览器中,safari浏览器一直卡着没有反应,估计这个方法早就被想到了,我猜测估计是故意延迟谷歌服务器的响应时间,直接拉到远超出浏览器的最大延迟时间,这样浏览器就会不得已返回超过延迟这种报错,但是safari一直没有报错,到是我手机上的谷歌浏览器提示没有响应,暂时无法连接)如果最近的一台DNS服务器没有,那么就直接转发给根域名服务器,根域名服务器并没有具体的Web服务器的信息,但是它通过这个域名知道应该是给com域DNS服务器保管的。

2025-10-15 09:51:05 496

原创 个人博客后端系统(JavaSpringBoot + MybatisPlus + Redis)的建立记录

系统: MacOs 15IDEA版本:社区版 2025.3Mysql版本:8+redis:版本postman:苹果m芯片最新版Mysql工具:workbench:最新版本redis可视化工具:Another Redis Desktop Manager 最新版本SpringBoot版本: 2.7JDK版本:17MybatisPlus依赖版本:3.5.9。

2025-10-12 16:40:31 495

空空如也

空空如也

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

TA关注的人

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