自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 操作系统面经5——网络io

应用程序发起I/O操作后会被阻塞,直到操作完成才返回结果。适用于对实时性要求不高的场景。应用程序发起I/O操作后立即返回,不会被阻塞,但需要不断轮询或者使用select/poll/epoll等系统调用来检查I/O操作是否完成。适合于需要进行多路复用的场景,例如需要同时处理多个socket连接的服务器程序。通过select、poll、epoll等系统调用,应用程序可以同时等待多个I/O操作,当其中任何一个I/O操作准备就绪时,应用程序会被通知。

2025-10-27 09:01:44 353

原创 操作系统面经4——中断

中断分为外部中断和内部中断:通过INTR线向CPU请求的中断,主要来自外部设备如硬盘,打印机,网卡等。此类中断并不会影响系统运行,可随时处理,甚至不处理,所以名为可屏蔽。通过NMI线向CPU请求的中断,如电源掉电,硬件线路故障等。这里不可屏蔽的意思不是不可以屏蔽,不建议屏蔽,而是问题太大,屏蔽不了,不能屏蔽的意思。是一种有意的,预先安排的异常事件,一般是在编写程序时故意设下的陷阱指令,而后执行到陷阱指令后,CPU将会调用特定程序进行相应的处理,处理结束后返回到陷阱指令的下一条指令。

2025-10-24 11:19:53 675

原创 操作系统面经3——内存管理

是操作系统提供给每个运行中程序的一种地址空间,每个程序在运行时认为自己拥有的内存空间就是虚拟内存,其大小可以远远大于物理内存的大小。虚拟内存通过将程序的地址空间划分成若干个固定大小的页(4KB)或段,并将这些页或段映射到物理内存中的不同位置,从而使得程序在运行时可以更高效地利用物理内存。物理内存是计算机实际存在的内存,是计算机中的实际硬件部件。

2025-10-21 10:27:06 971

原创 操作系统面经2——锁

并发执行线程需要加锁主要是为了保护共享数据,防止出现"竞态条件"。"竞态条件"是指当多个线程同时访问和操作同一块数据时,最终结果依赖于线程的执行顺序,这可能导致数据的不一致性。通过加锁,我们可以确保在任何时刻只有一个线程能够访问共享数据,从而避免"竞态条件",确保数据的一致性和完整性。

2025-10-20 20:18:51 781

原创 操作系统面经1——进程管理

内核态和用户态是操作系统中的两种运行模式。它们的主要区别在于权限和可执行的操作::在内核态下,CPU可以执行所有的指令和访问所有的硬件资源。这种模式下的操作具有更高的权限,主要用于操作系统内核的运行。:在用户态下,CPU只能执行部分指令集,无法直接访问硬件资源。这种模式下的操作权限较低,主要用于运行用户程序。内核态的底层操作主要包括:内存管理、进程管理、设备驱动程序控制、系统调用等。这些操作涉及到操作系统的核心功能,需要较高的权限来执行。

2025-10-20 17:43:16 791

原创 golang面经8:反射相关

本文介绍了Go语言中的反射机制及其应用。反射是程序运行时动态访问和修改自身状态的能力,Go通过接口实现反射,利用reflect包获取类型和数据信息。重点解析了结构体标签(tag)的反射实现原理,展示了如何通过反射获取字段的json、db等标签。反射在JSON序列化、ORM框架、Web参数绑定等场景有广泛应用。最后比较了对象比较的方法,推荐使用reflect.DeepEqual进行深度比较或自定义Equal方法。全文通过代码示例演示了反射的实际应用场景。

2025-10-20 09:54:21 823

原创 golang面经7:interface相关

本文深入解析了Go语言中interface的核心机制。主要内容包括:1. interface底层原理,分为空接口eface(存储类型和数据指针)和非空接口iface(包含方法表);2. 类型转换与断言的差异,前者是编译期强制转换,后者是运行期动态检查;3. 接口比较规则,可比较基础类型但切片等不可比较类型会panic;4. 接口使用实践,涵盖多态调用、空接口、类型断言、接口嵌套等特性,并给出设计最佳实践和常见错误示例。通过代码演示了接口的隐式实现、类型开关等关键特性,展现了Go语言基于"鸭子类型&

2025-10-20 09:51:49 665

原创 golang面经2:slice相关

slice 的底层数据其实也是数组, slice 是对数组的封装, 它描述一个数组的片段。slice 实际上是一个结构体,包含三个字段:长度、容量、底层数组。

2025-10-14 11:41:35 1036

原创 golang面经9——GMP相关

1.1 什么是GMP?GMP 是一个核心的并发模型,它代表 Goroutine(协程)、M(Machine,线程)和 P(Processor,处理器)。GMP 是 Go 运行时(runtime)用来高效管理和调度并发任务的关键机制。定义:Goroutine 是 Go 语言中的轻量级线程,由 Go 运行时管理。与操作系统线程相比,Goroutine 的创建和销毁开销极小(初始栈大小约 2KB),可以轻松创建成千上万个并发任务。特点:通过 go 关键字启动(例如 go func())。

2025-10-09 17:43:00 759

原创 golang面经5:sync相关

所以自旋状态一定要满足一定的条件比如次数不能过多,锁要不能处于饥饿模式,不然其他goroutine将很难获取到锁,以及处理器的个数,比如在单核下自旋是没有意义的,因为同一只有一个线程可以运行,要获取锁只能等当前线程释放,自旋自然没有意义,所以,在回答的时候可以从以上几个方面来考虑。乐观锁和悲观锁其实是两种锁思想,乐观锁假定别人不会修改数据,在操作数据的时候,查看一次数据,然后修改完真正生效的时候在查看一下数据有没有发生变化,如果发生变化,则认为数据被修改,有并发问题,放弃操作,否则执行操锁。

2025-10-09 17:41:28 759

原创 golang面经3——map模块和sync.Map模块

1) 桶(Bucket)桶是map底层哈希表的基本存储单元,每个桶包含一组键值对(通常是8个槽位)。当发生哈希冲突时(不同key哈希到同一位置),Go采用链地址法,将冲突的键值对存放在同一个桶内(或溢出桶中)。2)槽位(Slot)槽位是桶内的最小存储单元,每个槽位存储一个键值对(key-value)。桶内的槽位按顺序排列,通过线性探测方式管理。3)与Key-Value的关系键值对(key-value) 是逻辑上的数据,而桶和槽位是物理存储结构。

2025-10-08 11:14:55 737

原创 golang面经10——内存相关模块

这个题可以看作是对上一个题理解程度的考察,可以用内存逃逸的思想来分析这个题,因为channel的作用就是用做两个goroutine之间的通信,所以在很大程度上它的生命周期并不会局限在一个函数内部,所以大概率会发生内存逃逸,就很容易得出结论,channel大概率会分配到堆上。内存池主要是预先分配内存,减少向系统申请的频率;而当大量小对象 逃逸到堆上,就意味着这些小对象是需要被GC回收的(可能是在某一次GC),因为栈上的对象 可以 随着栈帧的释放而回收,而堆上的对象 只能由GC来进行内存管理。

2025-10-08 11:14:43 1114

原创 golang面经11——GC模块

分析:go语言的gc经历了多个版本的迭代和逐步优化,在回答的时候突出三色标记法配合混合写屏障技术就可以了,但是对于问题的追问,其中涉及到的细节要做到心中有数。回答:go语言的gc策略是采用三色标记法。但是单纯的三色标记会带来STW,导致执行率不高,所以在1.8版本之后,采用了三色标记法配合混合写屏障技术来实现gc。1.3版本前:普通标记清除法,整个gc过程需要启动 STW,效率极低;1.5版本:三色标记法,堆空间启动写屏障,栈空间不启动,全部扫描之后,需要重新扫描一次栈(需要 STW),效率普通;

2025-10-07 16:47:16 914

原创 golang面经4:channel模块

本文探讨了Go语言中channel的核心机制与实现原理。1)channel通过内置的互斥锁保证线程安全;2)其底层采用hchan结构体实现,包含环形缓冲区和等待队列;3)分析了nil/关闭channel的读写行为差异;4)比较了有无缓冲channel的性能特点;5)详细描述了读写操作的具体流程;6)解析了select的随机选择机制及其阻塞/非阻塞特性。文中通过代码示例展示了channel在任务协同和限流场景的实际应用,并深入剖析了底层数据结构与同步机制。

2025-09-29 10:47:42 1163 2

原创 golang面经6:context模块

Go语言中的context是一个接口,定义了四种方法:Deadline()、Done()、Err()和Value(),主要用于在goroutine间传递请求作用域的值、取消信号和超时控制。context包提供了四种实现:emptyCtx(空实现)、cancelCtx(取消通知)、timerCtx(定时控制)和valueCtx(键值存储)。其主要使用场景包括:1)跨goroutine传递上下文信息(如请求ID);2)实现取消信号广播和超时控制,防止goroutine泄漏;3)设置请求截止时间。通过父子cont

2025-09-25 11:34:38 877 2

原创 golang面经1:基础相关

Go语言面试核心要点摘要: Go语言特点: 跨平台编译,生成二进制可执行文件 原生支持高并发,通过goroutine和channel实现 语法简洁统一,内置runtime调度机制(GMP) 关键特性: 非完全面向对象但支持三大特性(封装/组合继承/接口多态) 切片动态扩容策略(1.18+版本优化大切片扩容) defer执行顺序(LIFO),可修改命名返回值 空结构体不占内存,常用于集合/信号通道 rune类型处理UTF-8字符(本质是int32) 接口隐式实现,reflect解析结构体tag 并发模型: C

2025-09-24 17:41:28 750 2

原创 LLM学习:大模型基础——视觉大模型以及autodl使用

在大模型中,VLM 是视觉语言模型(Vision-Language Model)的缩写,是一种多模态、生成式 AI 模型,能够理解和处理视频、图像和文本。VLM 通过将大语言模型(LLM)与视觉编码器相结合构建而成,使 LLM 具有 “看” 的能力,从而可以处理并提供对提示中的视频、图像和文本输入的高级理解,以生成文本响应。

2025-09-07 16:38:53 873

原创 LLM学习:大模型基础——fine tuning微调原理

文章摘要:本文系统介绍了大模型微调(finetuning)的核心概念与方法。首先解释了大模型两阶段训练流程(预训练+微调),指出微调可突破基座模型局限、以低成本实现专业领域优化。重点剖析了高效微调技术LoRA的数学原理,通过低秩矩阵分解仅训练少量参数(约1%),显著降低计算成本。文章还详细阐述了矩阵分解(SVD)在推荐系统中的应用,验证了低秩特性的有效性。最后讨论了微调数据准备、硬件需求估算及模型评估方法,强调数据质量对微调效果的关键影响。全文为理解大模型微调提供了技术框架和实用指导。

2025-09-02 10:00:50 974

原创 LLM学习:langchain架构——模型IO

LangChain框架中的模型I/O模块详解 摘要:本文系统介绍了LangChain框架中的模型I/O模块,该模块负责处理与语言模型的交互全流程。主要内容包括:1)提示词模板的构建与使用,涵盖基础模板、聊天模板和少样本学习模板;2)输出解析器的功能与应用,展示如何将模型输出转换为结构化数据;3)模型包装器的分类与区别,比较LLM模型包装器和Chat模型包装器的输入输出特点。文章通过具体代码示例演示了PromptTemplate、ChatPromptTemplate等核心组件的使用方法,以及PydanticO

2025-08-27 15:48:09 770

原创 LLM学习:langchain架构——chain

在LangChain中,Chain(链)是将多个组件(Components)按特定顺序连接起来,实现复杂任务的工作流(Workflow)或管道(Pipeline)。它是LangChain框架的基石和核心抽象。

2025-08-25 16:52:56 488

原创 linux总结4:Linux磁盘I/O

文件系统是对存储设备上的文件,进行组织管理的一种机制。而 Linux 在各种文件系统实现上,又抽象了一层虚拟文件系统 VFS,它定义了一组,所有文件系统都支持的,数据结构和标准接口。 这样,对应用程序来说,只需要跟 VFS 提供的统一接口交互,而不需要关注文件系统的具体实现;对具体的文件系统来说,只需要按照 VFS 的标准,就可以无缝支持各种应用程序。VFS 内部又通过目录项、索引节点、逻辑块以及超级块等数据结构,来管理文件。目录项,记录了文件的名字,以及文件与其他目录项之间的目录关系。...

2020-11-08 17:10:00 458

原创 linux总结3:文件系统I/O

把文件系统挂载到挂载点后,你就能通过挂载点,再去访问它管理的文件了。VFS 提供了一组标准的文件访问接口。这些接口以系统调用的方式,提供给应用程序使用。就拿 cat 命令来说,它首先调用 open() ,打开一个文件;然后调用 read() ,读取文件的内容;最后再调用 write() ,把文件内容输出到控制台的标准输出中。 文件读写方式的各种差异,导致 I/O 的分类多种多样。最常见的有,缓冲与非缓冲 I/O、直接与非直接 I/O、阻塞与非阻塞 I/O、同步与异步 I/O 等。 接下...

2020-11-08 14:45:51 342

转载 RTP/AVP & RTP/AVP/TCP总结

https://www.jianshu.com/p/7b9793eb2f4e 转载

2020-07-01 09:36:21 1184

转载 I帧和IDR帧区别(转载)

I帧和IDR帧的区别: IDR帧属于I帧。解码器收到IDR frame时,将所有的参考帧队列丢弃(用x264_reference_reset函数实现——在encoder.c文件中)。这点是所有I帧共有的特性,但是收到IDR帧时,解码器另外需要做的工作就是:把所有的PPS和SPS参数进行更新。由此可见,在编码器端,每发一个IDR,就相应地发一个PPS&SPS_nal_unit这是网上搜索到的一个答案,有一定参考价值吧。...

2020-06-21 19:23:54 3047

转载 accept和select的区别

参考:https://blog.youkuaiyun.com/lsgqjh/article/details/65629609select:查看指定fd_set中socket状态,如果fd_set中有套接字准备就绪(触发(读、写或执行)),则会返回,返回值为触发的套接字个数accept:经过创建套接字socket()绑定bind()以及listen()之后,将监听socket和客户端socket建立一个全新连接,并返回client的socket信息;判断是否有客户端发起链接请求, 一般用select(),.

2020-06-07 22:28:06 2752

转载 面試1:Linux网络编程——select、poll和epoll(重點select和epoll对比)

https://blog.youkuaiyun.com/lianghe_work/article/details/46534029小哥整理的不错,对一些基础的东西总结的比较全面。一、回顾前面的selectselect优点:目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点select缺点:1.每次调用 select(),都需要把 fd 集合从用户态拷贝到内核态,这个开销在 fd...

2020-03-23 09:09:15 388

转载 C++_虚函数详解(你肯定懂了)

前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不...

2020-01-01 11:53:38 1067

翻译 ONVIF协议Profile A/Q/G/C/S

ONVIF协议Profile A/Q/G/C/SONVIF Profile A涵盖了常见的例行门禁控制功能,适用于负责授予和撤销员工凭证、创建和更新计划表,以及对系统内门禁控制权限进行更改的安保人员、接待员或人力资源专员等用户。强化用户端的功能性和系统管理功能,从而实现门禁控制市场的互联互通ONVIF Profile Q为系统集成商和终端用户提供创新功能,通过简易安装机制和基础设备配置,实现系统与...

2019-10-14 14:48:21 1567

转载 Linux卷管理详解--PV(物理卷)--VG(卷组)--LV(逻辑卷)--PE(基本单元)

一、逻辑盘卷管理(LVM,Logical Volume Manager) 完美的解决方法应该是在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。那么我们可以通过逻辑盘卷管理(LVM,Logical Volume Manager)的方式来非常完美的实现这一功能。 LVM是逻辑盘卷管理(Logical Volume Manage...

2019-06-04 20:36:01 1375

转载 RAID磁盘阵列、热备盘的浅显整理

简介 RAID是英文Redundant Array of Independent Disks的缩写,中文简称为独立冗余磁盘阵列。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。 组成磁盘阵列的不同方式称为RAID级别(RAID Levels)。在用户看起来,组...

2019-06-04 19:19:56 3183

转载 SAN和NAS、ISCSI存储有什么区别,SAN和NAS设备哪个更好?

实际上SAN、NAS、DAS、FC、ISCSI、FC-SAN、IP-SAN等并不是同一类别的概念。SCSI、FC、NAS、ISCSI等概念指的是存储设备类型,DAS、NAS、SAN等指的是存储系统的网络架构。大家常提到的、主流的存储系统网络架构有DAS、NAS、SAN三种网络结构。其中SAN网络环境中,因采用存储设备类型的不同又可以分为FC-SAN(采用光纤通道存储产品)和IP-S...

2019-06-04 18:51:07 9461

原创 UNIX高级编程总结-----进程环境

1、进程的终止方式 通常情况下,进程有八种终止方式(5种正常终止 + 3种异常终止) 正常终止: (1)main 的 正常 return (2)调用 exit 退出 (3)调用 _exit 和 _Exit (4)最后一个线程从启动历程返回 (5)最后一个线程调用pthread_exit退出...

2019-05-24 21:29:27 235

转载 C语言_GCC -O 优化等级详解

GCC提供选项控制代码的优化等级:这些选项可以实现不同程度的优化。没有任何优化选项的话,编译时的目标是降低编译成本,并使调试产生预期的结果。语句是独立的:如果你使程序停止在语句之间设置的断点处,你可以改变任何变量的值或者改变程序计数器的值使程序执行任意函数中的语句并得到源代码中期望的结果。打开优化标志使编译器尝试以编译时间和可能的调试程序的能力为代价来改进性能和/或代码大小。编译器...

2019-05-24 20:50:57 3631

原创 UNIX高级编程总结-----标准I/O库 (二 行IO、二进制IO、格式化IO、定位流、内存流)

上一篇五、每次一行的IO 上一篇总结到了标准IO库中,单个字符的IO操作。紧接上篇,Unix中提供了两个 以行为单位操作的IO:#include<stdio.h>char *fgets(char *restrict buf, int n,FILE* restrict fp);char *gets(char *buf); ...

2019-05-24 19:33:31 313

转载 在Linux中设置umask值以及umask函数

一、umask命令 umask值用于设置用户在创建文件时的默认权限,当我们在系统中创建目录或文件时,目录或文件所具有的默认权限就是由umask值决定的。 对于root用户,系统默认的umask值是0022;对于普通用户,系统默认的umask值是0002。执行umask命令可以查看当前用户的umask值。[root@localhost ~]#umask0...

2019-05-24 13:24:03 3364

原创 UNIX高级编程总结-----进程间通信(XSI IPC 总述)

在 XSI IPC 中,有三种IPC:消息队列、信号量 以及 共享内存,他们之间有许多相似之处。 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区,进程B再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信。1、标识符 和 ...

2019-05-20 17:16:27 430

原创 UNIX高级编程总结-----进程间通信(FIFO---有名管道)

1、简介 对于普通的未命名pipe,两个不相关的进程是无法通信的。但是对于命名通道FIFO而言,即便是两个不相关的进程也可以实现进程间通信。2、操作 FIFO FIFO在文件系统中表现为一个文件,大部分的系统文件调用都可以用在FIFO上面,比如:read,open,write,close,unlink,stat等函数。但是seek等函数不能对FIFO...

2019-05-20 17:14:13 361

原创 UNIX高级编程总结-----进程间通信(管道)

管道是UNIX 系统中比较古老的一种,他有两个比较大的局限性(缺点)。 (1)历史上的通道都是半双工的(即数据只能往一个方向流)。某些系统是全双工的,但是由于大多数系统都是半双工的,为了提高可移植性,应该将通道视作半双工去使用。 (2)管道的只能使用在有公共祖先的进程之间。一般情况下,一个进程由进程创建,在调用fork之后,这个管道就能在父子进程...

2019-05-16 15:20:16 368

转载 linux网络编程:多播(组播)编程

什么是多播 单播用于两个主机之间的端对端通信,广播用于一个主机对整个局域网上所有主机上的数据通信。单播和广播是两个极端,要么对一个主机进行通信,要么对整个局域网上的主机进行通信。实际情况下,经常需要对一组特定的主机进行通信,而不是整个局域网上的所有主机,这就是多播的用途。 多播,也称为“组播”,将局域网中同一业务类型主机进行了逻辑上的分组,进行数据收发的时候其数...

2019-05-13 13:53:30 515

转载 IP地址的分类及范围

IP地址的分类及范围详解:A、B、C、D、E五类是如何划分的? 大家都知道现在的互联网使用的是32位地址,IPv6虽然也说了好些年,但大家都习惯接受IPv4的用法说法。IP以点分十进制表示,如172.16.0.0。地址格式为:IP地址=网络地址+主机地址 或 IP地址=主机地址+子网地址+主机地址。IP地址类型 最初设计互联网络时,为了便于寻址以及层次化构造网络...

2019-05-13 11:41:00 24016

空空如也

空空如也

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

TA关注的人

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