golang 理解goroutine 和线程

golang

  

2019-07-11 07:12:50

进程、线程和协程 要理解什么是goroutine,我们先来看看进程、线程以及协程它们之间的区别,这能帮助我们更好的理解goroutine。 进程:分配完整独立的地址空间,拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程的切换只发生在内核态,由操作系统调度。  线程:和其它本进程的线程共享地址空间,拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程的切换一般也由操作系统调度(标准线程是的...

Go语言学习笔记(五)

golang

  

2019-09-04 15:28:52

这是Go语言学习笔记的第五篇 条件语句 条件语句格式: 几点注意的地方: 不需要使用括号()将条件包含起来 花括号{}必须存在 左花括号{必须与if或else处于同一行 在if之后,条件语句之前可以添加变量初始化语句, 使用;间隔 在有返回值的函数中,不允许将“最终的”return语句包含在if...else...结构中,否则会编译失败。例如: 选择语句 选择语句格式: s...

Golang: 安装配置

Golang

  

2019-10-11 14:56:05

1. 安装Golang 下载地址:https://golang.google.cn/dl/ golang的特别之处在于有一个GOPATH,设置多个的话用分号隔开即可。为了使得在项目中能够import自定义的package,需要有固定的项目结构,请如下操作: 创建的项目均放在src文件夹下,例如创建了一个mydemo项目,用tree命令查看,可能有如下的项目结构: bin : 存放编译后的可执行文件...

Go语言学习之go环境搭建

golang

  

2019-10-31 14:46:04

go网站: https://golang.org/ 安装下载: https://golang.org/dl/ 直接下载windows下的安装文件。 安装后结果: 安装结果验证: hello world: 至此,go环境安装好,可以使用文本编辑器编写go语言,运行了。...

Golang之消息机制channel

Golang

  

2019-11-01 17:53:55

1. 背景: 1. 对于以下这段代码: 按照想法应该输出0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 但是,输出结果是:0 1 2 3 4 5 6 7 8 9 2. 原因: 在goroutine还未来得及跑loop函数时,主函数main已经退出。 解决主函数退出太快最直接的方法是让主函数睡眠一段时间: 这次输出结果确实是两趟。 可是等待的办法并不好,因为并不知go...

net/http webserver学习

golang

  

2019-11-10 11:00:10

net/http webserver学习 Package http provides HTTP client and server implementations. — godoc 本文内容参考 astaxie/build-web-application-with-golang pmlpml的博客 —— HTTP 协议 与 golang web 应用服务 aix...

处理 web 程序的输入与输出 文章目录 处理 web 程序的输入与输出 概述 任务要求 分析阅读 gzip 过滤器的源码 Introduction 分析 编写中间件 项目Github地址 概述 设计一个 web 小应用,展示静态文件服务、js 请求支持、模板输出、表单处理、Filter 中间件设计等方面的能力。(不需要数据库支持) 任务要求 支持静态文件服务 FileServer returns...

深度解密Go语言之pprof

golang

  

2019-11-12 11:32:04

相信很多人都听过“雷神 3”关于性能优化的故事。在一个 3D 游戏引擎的源码里,John Carmack 将 1/sqrt(x) 这个函数的执行效率优化到了极致。 一般我们使用二分法,或者牛顿迭代法计算一个浮点数的平方根。但在这个函数里,作者使用了一个“魔数”,根本没有迭代,两步就直接算出了平方根。令人叹为观止! 因为它是最底层的函数,而游戏里涉及到...

golang学习笔记

golang

  

2019-11-14 03:42:50

概述 类型检查:编译时 运行环境:编译成机器代码直接运行 编程范式:面向接口,函数式编程,并发编程 Go语言并发编程 采用CSP(Communication Sequential Process)模式 不需要锁,不需要callback 并发编程vs并行计算 变量定义 使用var定义变量 var a,b,c, bool var s1,s2 string = “hello”, ...

001 Go语言 mac 系统开发环境搭建 Go 语言是一种快速的、静态类型的开发语言。它的主要特性包括自动垃圾回收、并发编程、反射等。 官网 https://golang.org/ 下载 打开 https://golang.org/dl/ 可以查看 windows、linux、macOS 各个系统的安装文件及源码。点击 Apple macOS 可以下载对应的安装文件。 双击下载的 go1.9.2...

Golang学习之路(一)——go语言环境的搭建和开发工具 1.什么是Golang语言? 2.Go环境的搭建和安装 3.开发工具的安装 —— VS code 4.向世界问好吧! 1.什么是Golang语言? Go 语言是 Google 公司的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译...

第二十七章:Golang与RPC

Golang

  

2019-12-16 12:37:51

文章目录 1. RPC 概述 2. RPC 组成 3. RPC 调用流程 4. Go语言实现PRC 4.1 HTTP PRC 4.2 TCP RPC 4.3 RPC 异步调用 5. json rpc 5.1 json rpc 服务端代码 5.2 Golang json rpc 客户端 5.3 PHP json rpc客户端 1. RPC 概述 RPC 是Remote Procedure Call ...

17、go语言:分布式爬虫

golang

  

2019-12-22 07:55:01

1、分布式系统简介: 多个节点: 容错性 可扩展性(性能) 固有分布性 消息传递: 节点具有私有存储 易于开发 可扩展性(功能) 对比:并行计算 完成特定的需求: 消息传递的方法: REST(动作、URL) RPC(序列化传输、远端序列化后调用) 中间件(可以存储消息、一对多、消息队列) 一般消息传递的方法: 对外:REST 模块内部:RPC 模块之间:中间件,REST 分布式架构VS为微服务架构...

原文地址https://mp.weixin.qq.com/s/QV9p16QjonHCyIs-DivoeA,如有侵权,联系我立刻删除[email protected] 作者 | 杨成立(忘篱) 阿里巴巴高级技术专家 关注 “阿里巴巴云原生” 公众号,回复Go 即可查看清晰知识大图! 导读:从问题本身出发,不局限于 Go 语言,探讨服务器中常常遇到的问题,最后回到 G...

实现一个简易的Unity网络同步引擎Netgo 目前GOLANG有大行其道的趋势,尤其是在网络编程方面。因为和c/c++比较起来,虽然GC占用了一部分机器性能,但是出错概率小了,开发效率大大提升,而且应用其原生支持的协程很容易就能开发出高并发的服务端程序。笔者接触VR行业两年有余,接触了一些商业unity网络引擎,总觉的用的东西都落伍了,于是自己写了一个简单的引擎。目前实现了的基本功能: 支持房间...