golang常用格式转换语法

golang最近挺火,试着用了一下,有些语法需要熟悉,记录一下 常用数据格式 整型 uint8、uint16、uint32、uint64 int8、int16、int32、int64 浮点型 float32、float64 字符串 string 格式转换 strconv 包中常用的函数包括 Atoi()、Itia()、parse 系列函数、format 系列函数、append 系列函数等 string 与 int 的Atoi()、Itia() num := strconv.Atoi(str) s...阅读全文

简书 2021-01-12 13:32:49 jadefan

02.丢掉nc,自己实现echo客户端

引言上一篇文章『要疯了,到底什么是网络编程?』,我们用Go实现了自己的echo服务器,并且使用nc伪装echo客户端和我们自己写的echo服务器进行了收发数据交互,并对这一过程进行了详细的讲解。这一节我们将用Go实现自己的echo客户端,Let's go。目录设计思路使用Go语言开发我们的echo客户端,最小使用Go语言的原生net网络库,从而直击网络编程的本质。从标准输入读取数据,发往服务器,读取服务器返回的数据,打印到标准输出。注意读写数据细节问题。echo客户端代码/** * File: ...阅读全文

Segmentfault 2021-01-15 22:32:33 .container .car 等

Golang组件化网络服务器框架Halia指南

写在前面在netty框架面世之前,几乎没有一个成熟的OOP/组件化规范指导网络服务器开发,一些常用的FrameDecoder,BusinessHandler等等组件紧密耦合在了项目当中,整个项目可以说扩展性比较差。netty的出现可以说是划时代的,基于OOP/组件化屏蔽了底层 BlockingIO/NonBlockingIO/AsynchrousIO之间的差异,各种组件可以无缝切换,网络服务器开发效率有了非常大的提高。通过阅读netty源码,以及核心组件的架构,基于Golang进行了实现,至此,...阅读全文

Segmentfault 2021-01-15 16:32:35 .container .car 等

go那些事儿|go反射使用第二弹(ValueOf)

# 目录 - 概念 - ValueOf使用格式 - 反射获取值对象(ValueOf) - 通过canSet方法修改值 - 判断及获取元素的相关方法 - 值修改相关方法 - 值修改条件:可寻址 - 结构体值的非导出字段不能通过反射来修改 - 通过ValueOf访问成员对象 - 闲聊 - 欢迎加入我的公众号【迈莫coding】 一起pk大厂 # 概念 在程序运行期间,如果想要获取某个接口所代表的值,那么可以使用 reflect.ValueOf 进行获取,...阅读全文

Go语言中文网 2021-01-12 12:11:23 memo012

一文搞懂参数传递原理

前言最近一年多的时间陆续接触了一些对我来说陌生的语言,主要就是 Python 和 Go,期间为了快速实现需求只是依葫芦画瓢的撸代码;并没有深究一些细节与原理。就拿参数传递一事来说各个语言的实现细节各不相同,但又有类似之处;在许多新手入门时容易搞不清楚,导致犯一些低级错误。Java基本类型传递先拿我最熟悉的 Java 来说,我相信应该没人会写这样的代码: @Test public void testBasic() { int a = 10; modifyBasic(a); System.out.p...阅读全文

Segmentfault 2021-01-15 10:32:34 .container .car 等

含有CGO代码的项目如何实现跨平台编译

目前小菜刀的项目中需要用到SQLite数据库,https://github.com/mattn/go-s...,采用Go的标准接口有利于项目后续扩展,因此选择了该驱动。但是,它是基于CGO实现的,所以跨平台编译会比较麻烦,小菜刀总结了一些经验,特分享给读者朋友们。什么是跨平台编译?简单地说, 就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是,所谓平台,实际上包含两个概念:体系架构(Architecture)、操作系统 (Operating System)。同一个体系架构可以运行不同...阅读全文

Segmentfault 2021-01-14 23:32:34 .container .car 等

【Golang源码分析】Golang如何实现自举 - dist介绍(二)

前言 根据《Golang如何实现自举(一)》的相关引导,知道了go1.3的go编译是需要go_bootstrap、然而生成go_bootstrap,需要dist工具进行生成。那么本期主要关注dist工具。1.dist工具介绍 其实dist工具是属于go的一个引导工具,它负责构建C程序(如Go编译器)和go工具的初始引导副本。它也可以作为一个包罗万象用shell脚本替换以前完成的零工。通过“go tool dist”命令可以操作该工具。该工具不同系统下对应在pkg/tool/下的目录中。<cent...阅读全文

Segmentfault 2021-01-14 13:32:37 .container .car 等

go运行时

go运行时 零 前置知识 操作系统的每个进程都认为自己可以访问计算机的所有物理内存,但由于计算机必定运行着多个程序,每个进程都不能拥有全部内存。 为了避免了进程直接访问实际的物理地址,操作系统会将物理内存虚拟为一个数组,每个元素都有一个唯一的物理地址(PA)。 物理存储其器中存储着一个页表(page table),该表即虚拟地址与物理地址的映射表,读取该表,即可完成地址翻译。 假设一个程序访问地址为0x1001的内存,实际上,该数据并不一定是存储在0x1001的物理地址中,甚至也不在物理内存中(...阅读全文

简书 2021-01-11 20:42:36 voidFan

6.824 Lab01 MapReduce

一些废话:学6.824是因为实在是喜欢存储,不想再做监控运维之类无聊的工作,想真正成长为一个专业的分布式存储工程师,也是看网上说6.824是分布式学习很好的入门课程,于是就利用空余时间开始学习这门课程。 这门课程的实验都是推荐用golang实现的。其实用其他语言也是可以的,不过我觉得作为初学者,我还是用推荐语言去写,后期遇到问题,也方便查询参考资料。而且语言不应该是障碍,于是,在完成实验中,我也用的是golang。一些go语言使用中,初学者会遇到的坑,也一一记录下来。 背景 首先了解一下MapR...阅读全文

简书 2021-01-11 20:42:33 running_sheep

编译型语言和解释型语言的区别

在说编译型语言和解释型语言的区别之前,我们先来了解一下什么是编程语言。其实,程序指的就是一系列的指令,用来告诉计算机做什么,而编写程序的关键在于,我们需要用计算机可以理解的语言来提供这些指令。为了有效避开所有影响给计算机传递指令的因素,计算机科学家设计了一些符号,这些符号的各有其含意,且之间无二义性,通常称它为编程语言。我们编写的源代码是人类语言,我们自己能够轻松理解;但对于计算机硬件(CPU)源代码简直就是天书,根本无法执行,计算机只能识别某些特定的二进制指令,在程序真正运行之前必需将源代码转...阅读全文

简书 2021-01-11 20:42:32 指尖小编

2021-01-11 mqtt协议简介及消息总线EMQX与客户端Paho快速上手

1. MQTT简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是基于“订阅/发布”模式的轻量级通信协议,该协议基于TCP/IP,能以极低的带宽为海量(百万级)跨域设备提供可靠的消息服务,因此在物联网、小型移动终端、边缘计算方面有广泛应用。 所谓可靠的消息传输,体现为可配置消息的服务质量(QoS),有三种服务质量可选: 至多一次: 消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。应用场景如环境传感器的数据采集,丢失一次记录...阅读全文

简书 2021-01-11 20:42:31 吴智深

go那些事儿|go反射使用第一弹(TypeOf)

> 文章始发于公众号【迈莫coding】 > 地址:[https://mp.weixin.qq.com/s/F8yZyqC5UwoewsX0THqy1w](https://mp.weixin.qq.com/s/F8yZyqC5UwoewsX0THqy1w) 即将用Go语言从零到一编写ORM框架,目前先把所用技术讲一遍,大家可以尽情期待,可以关注【**迈莫coding**】,了解最新状况。 # 目录 - 反射概念 - reflect包 - 反射类型(Type)和种类(Kin...阅读全文

Go语言中文网 2021-01-11 20:23:37 memo012

go那些事儿|channel使用及其实现原理

> 该文章始发于公众号【迈莫coding】 > 链接:[https://mp.weixin.qq.com/s/QYmcsD-F5hjA3JMpLjLGBQ](https://mp.weixin.qq.com/s/QYmcsD-F5hjA3JMpLjLGBQ) > # 目录 - channel背景 - channel基本用法 - channel应用场景 - channel实现原理 - channel数据结构 - channel实现方式 - channel注意事项 -...阅读全文

Go语言中文网 2021-01-11 20:22:07 memo012

golang那些事儿|数组和切片slice

# 目录 - 数组 - 数组概念 - 数组的初始化 - 切片 - slice概念 - slice创建 - slice追加 - slice拼接问题 - slice作为函数参数 - slice的扩容 - 数组和切片slice异同 - 闲聊 - 欢迎加入我的公众号【迈莫coding】 一起pk大厂 # 数组 ## 数组概念 Go语言数组中每个元素都是按照索引来访问的,索引从0到数组长度减一。Go语言中len()函数可以返回数组中的元素个数。 ...阅读全文

Go语言中文网 2021-01-11 20:20:40 memo012

七天从零实现ORM框架

> 了解TORM框架的进度,敬请关注公众号【迈莫coding】 # 前言 自己写这个<<七天实现ORM框架>>系列文章,从几个月前就开始准备了,目的也是为了以最简单,最清晰的语言来讲述ORM框架的实现原理,从而掌握其核心技术,比如开源的gorm,xorm框架,他们的核心理念都类似,只需掌握一门底层技术,即可通"天下",我会以视频+文章的形式讲述TROM框架的实现原理以及编码实现,来让每一个都可以理解ORM框架的实现原理,一方面可以为面试加分,另一方面提升自己技术。 接下来我会分为七...阅读全文

Go语言中文网 2021-01-11 20:18:07 memo012

go那些事儿|defer必掌握知识

​该文章始发于公众号【迈莫coding】链接:go那些事儿|defer必掌握知识目录defer执行时机defer执行顺序defer与return谁先谁后函数包含多个Panic,defer中recover处理那个Panic函数返回值遇到deferdefer遇到Panicdefer遇到Panic,但是并不捕获异常的情况defer遇到Panic,并捕获异常练习:defer面试题闲聊欢迎加入我的公众号【迈莫coding】 一起pk大厂defer执行时机return 语句执行完之后,如果有 defer 语...阅读全文

Go语言中文网 2021-01-11 14:53:02 memo012

进程 线程 协程 的一些理解

前提说明:阅历有限 只说一些自己知道的进程 线程 协程 1. 进程是cpu分配内存的最小单位 也就是说内核程序的执行都离不开进程 2. 线程(轻量级进程 划重点轻量级进程和进程不是一回事) 是cpu时间片切换的最小单位 线程是由进程派生的 3. 协程(轻量级线程 划重点轻量级线程和线程也不是一回事) 基于各种语言的运行模型不同 随便说一点我知道的: php master + child 进程模型 主进程派生子进程 同时主进程对子进程进行管理 子进程处理请求 ...阅读全文

Go语言中文网 2021-01-11 14:31:35 wangchao

ARTS - 20 LeetCode 4 求两个有序数组中位数 | CAP | CI/CD

ARTSARTS 是陈浩(网名左耳朵耗子)在极客时间专栏里发起的一个活动,目的是通过分享的方式来坚持学习。每周写一个 ARTS:Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。本周内容我又开始更新啦!!! 四个月之前我也没想过会停更这么长时间, 转眼已经是 2021. 跟天性懒惰斗争了一百多天之后我还是取得了胜利, 这就叫 "人定胜天" !所以本周的 ARTS 你讲看到:LeetCode 历史上第一道 ...阅读全文

Segmentfault 2021-01-14 11:32:35 .container .car 等