函数指针数组
引用博文; (博客园)[https://www.cnblogs.com/tp-16b/p/7860491.html] 对于在xv6中看到的一个映射表关系 关于: 函数指针数组 12345678910111213141516171819202122232425static uint64 (*syscalls[])(void) = {[SYS_fork] sys_fork,[SYS_exit] sys_exit,[SYS_wait] sys_wait,[SYS_pipe] sys_pipe,[SYS_read] sys_read,[SYS_kill] sys_kill,[SYS_exec] sys_exec,[SYS_fstat] sys_fstat,[SYS_chdir] sys_chdir,[SYS_dup] sys_dup,[SYS_getpid] sys_getpid,[SYS_sbrk] sys_sbrk,[SYS_sleep] sys_sleep,[SYS_uptime] ...
总结一下最近
好久没有更新博客了,因为一些重要的笔记都移动到Obsidian上面写了,很方便 ,谈谈新的一年对于技术的追求 在大二上学期以及在大一的时候都觉得计算机基础是非常重要的,因为一些声音吧,也沉迷于如何快速做项目啊,背八股文啊,越来越觉得空虚没有得到什么,在大一的时候天真的以为只要学会一门语言就可以很强哈哈哈哈,到现在再看,语言真的只是一门工具,在想学习什么的时候,顺带学一下就可以研究自己更喜欢的领域,在本学期,我的思想发生了重大的转变,其实本来也是,我觉得要想学习计算机,你如果不去理解计算机那么算的上什么学习计算机呢?数据结构为什么重要?世界本来就是一个巨大的存储系统,如何存储数据?如何快速的存储数据是那么的重要!我们用的数据库,操作系统,不全都是数据结构和算法的功劳吗?学习计算机的乐趣对于我来说为什么跨越千里可以和对方聊天,每天坐在电脑前,为什么电脑可以这么工作,这就是一个黑盒,需要我们慢慢去挖掘,就是挖掘他们背后的黑盒,真的使我感到开心就像文杰老哥说的一样...
在这个时代,你是否过度依赖ai
越来越觉得做任何事都离开不了ai,任何报错只需要复制粘贴,原本看文档可以解决的错误,让ai可能很长时间,都无法解决,那种来回粘贴的感觉让我停止了思考,不想动脑,我好像成为了ai和代码之间的桥梁,ai让我在编码中也变得懒惰,那种空虚是真的! 这种急性子,渴望答案快速出来的懒惰,必须要改了! 自己看懂错误出在哪里 查阅文档,试着自己解决 做事之前,自己构思
系统思考
各个实体之间的联系构成了系统,当你在研究一个系统的时候,如果你切分了其中某一部分拿出来研究必定会切断,这部分与整体的联系,也就是破坏了整个系统! 必须从整体式理解一个系统关于组件的知识对于整体上理解一个系统,作用非常有限,在某些情况下,这些知识甚至具有相反的效果 示例: 组件知识是局部的,而系统理解需要全局视角 组件是系统的一部分,但系统的行为不仅仅是组件的总和,还涉及它们之间的交互、架构模式、数据流、依赖关系等。只关注组件,容易忽略系统级别的设计,比如如何扩展、如何容错、如何保障一致性。局部最优 ≠...
新年新气象
辞旧迎新,改变最大的一年! 新的一年开始了,我希望我能在新的一年里,不断的审视自己,关注自己的一言一行,一举一动,如果有哪些坏习惯,要去更改! 希望自己变得越来越好吧! 顺其自然的去做自己该去做的事,没有目的地! Passion never fails!
I/O多路复用中的一些疑惑
疑问:I/O多路复用如何实现?这里面用到了什么数据结构吗?如果A先发起了请求在等待中然后去处理B的请求,当A的请求到达后,并处理完成后,还会继续处理B的请求吗?还有在后续处理A的过程中,B处在等待的过程中,有可能其他的服务去处理B吗?B在发送请求到A后,它在等待的过程中还会发送请求吗? 解答:1如果 A 请求发起了并在等待中,处理 B 的请求后,A 的请求完成后,还会继续处理 B 吗? A 的请求和 B 的请求是两个独立的 I/O 操作。当 A 的请求进入等待状态后(比如等待数据库查询或等待网络响应),服务器会继续处理 B 的请求,甚至是 C、D 等其他请求。 当 A 的请求到达后,服务器会接到通知,处理 A 的请求。 在处理 A 请求时,如果 B 的请求仍然在等待状态,那么此时 B 并不会被继续处理,除非 B 的请求也准备好了。 处理完成 A 的请求后,服务器会继续处理下一个在等待队列中有数据准备好的请求(比如 B 的请求,如果它的数据已经准备好了)。 可以理解为 事件驱动,服务器并不会直接按顺序处理 A、B 请求,而是看哪个请求的 I/O...
Go中[]byte转换io.Reader
[]byte 转 io.Reader 12345678910111213141516171819202122package mainimport ( "bytes" "fmt" "log")func main() { data := []byte("Hello AlwaysBeta") // byte slice to bytes.Reader, which implements the io.Reader interface reader := bytes.NewReader(data) // read the data from reader buf := make([]byte, len(data)) if _, err := reader.Read(buf); err != nil { log.Fatal(err) } ...
避免在Go中使用 io.ReadAll
io.ReadAll 主要的作用是从一个 io.Reader 中读取所有数据,直到结尾。 虽然使用方便: 两个明显的缺点: 遇到大文件时,这个函数就会暴露出 性能问题,文件越大,性能越差。 文件过大的话,可能直接撑爆内存,导致程序崩溃。 示例: 12345678910111213func main() { res, err := http.Get("http://www.google.com/robots.txt") if err != nil { log.Fatal(err) } robots, err := io.ReadAll(res.Body) res.Body.Close() if err != nil { log.Fatal(err) } fmt.Printf("%s", robots)} io.ReadAll 的源码如下: //...
Go语言的学习资料
学习 Go 微服务开发的资料有很多,以下是一些推荐的资源,可以帮助你系统地掌握微服务相关的概念和实现方式: 1. 官方文档与教程 Go 官方文档:Go Documentation这是学习 Go 的基础,提供了完整的 Go 语言教程和标准库的文档。 gRPC 官方文档:gRPC Go如果你计划在微服务中使用 gRPC 进行高效的远程过程调用,gRPC 的官方 Go 文档会非常有帮助。 Go kit:Go Kit DocumentationGo kit 是一个适合构建分布式系统的 Go 微服务框架,官方文档详细介绍了如何使用该框架构建健壮的微服务。 Micro Framework:Micro DocumentationMicro 是一个现代化的微服务框架,支持服务发现、消息队列、RPC 通信等,适合快速构建微服务应用。 2. 视频教程与在线课程 Pluralsight - Building Microservices with Go链接这个课程介绍了如何使用 Go 构建可扩展和高效的微服务架构,包括通信机制、数据库、API 设计等。 3....
青训营开始
抖音商城: 简易抖音商城: Postgres Go(Hertz Kitex Gorm GoRedis Eino)(一)注册中心继承注册中心集成(etcd Consull Nacos) 自动注册服务数据 (二)身份认证 登录认证 权限认证(高级) (三) 可观测要求 日志记录与监控 (四) 可靠性要求 容错机制