Go语言 之TCP文件传输
服务端实现流程大致如下:
创建监听listener,程序结束时关闭。
阻塞等待客户端连接,程序结束时关闭conn。
读取客户端发送文件名。保存fileName。
回发“ok”给客户端做应答
封装函数 RecvFile接收客户端发送的文件内容。传参fileName 和conn
按文件名Create文件,结束时Close
循环Read客户端发送的文件内容,当读到 ...
Go 操作 Mysql(一)
关于 Go 的标准库 database/sql 和 sqlx
database/sql 是 Go 操作数据库的标准库之一,它提供了一系列接口方法,用于访问数据库(mysql,sqllite,oralce,postgresql),它并不会提供数据库特有的方法,那些特有的方法交给数据库驱动去实现
而通常在工作中,我们更多的是用 https://github.com/jmoiron/sqlx 包来操 ...
安装gcc 使用 go-sqlite3 Golang 链接 sqlite3
gcc 安装非常重要,golang的好多项目大部分都是go c混编。
先安装gcc,需要FQ,为了方便使用我上传到百度云了。
链接:https://pan.baidu.com/s/17NbFOizhext_YINOz-NU7A 提取码:3jb8
安装步骤 百度云下载,解压到你喜欢的磁盘。
下面就是添加环境变量,
添加新变量  ...
Go 程序是怎样跑起来的
目录引入编译链接概述编译过程词法分析语法分析语义分析中间代码生成目标代码生成与优化链接过程Go 程序启动GoRoot 和 GoPathGo 命令详解go buildgo installgo run总结参考资料
刚开始写这篇文章的时候,目标非常大,想要探索 Go 程序的一生:编码、编译、汇编、链接、运行、退出。它的每一步具体如何进行,力图弄清 Go 程 ...
kubernetes client-go解析
注:本次使用的client-go版本为:client-go 11.0,主要参考CSDN上的深入浅出kubernetes之client-go系列,建议看本文前先参考该文档。本文档为CSDN文档的深挖和补充。本文中的visio图可以从这里获取
下图为来自官方的Client-go架构图
图1.
下图也可以作为参考
图2.
Indexer
Indexer保存了来自apiServer的资源。使用listWat ...
Go语言基础之操作Redis
Go语言操作Redis
在项目开发中redis的使用也比较频繁,本文介绍了Go语言如何操作Redis。
Redis介绍
Redis是一个开源的内存数据库,Redis提供了5种不同类型的数据结构,很多业务场景下的问题都可以很自然地映射到这些数据结构上。除此之外,通过复制、持久化和客户端分片等特性,我们可以很方便地将Redis扩展成一个能够包含 ...
Go - 变量声明
目录概述数据类型字符串布尔数字常量声明变量声明输出方法推荐阅读
概述
在声明变量之前,咱们先了解下变量的数据类型,这篇文章主要涉及 字符串、布尔、数字,其他类型后面开篇再说。
数据类型
字符串
string
只能用一对双引号("")或反引号(``)括起来定义,不能用单引号('')定义!
布尔
bool
只有 true 和 false,默 ...
Go 编译 && 工具
编译和工具链
Go 的工具链非常丰富,从获取源码、编译、文档、测试、性能分析,到源码格式化、源码提示、重构工具等应有尽有
在 Go 中可以使用测试框架编写单元测试,使用统一的命令行即可测试及输出测试报告的工作
基准测试提供可自定义的计时器和一套基准测试算法,能方便快速地分析一段代码可能存在的 CPU 耗用和内存分 ...
教你如何找到Go内存泄露【精编实战】
最近解决了我们项目中的一个内存泄露问题,事实再次证明pprof是一个好工具,但掌握好工具的正确用法,才能发挥好工具的威力,不然就算你手里有屠龙刀,也成不了天下第一,本文就是带你用pprof定位内存泄露问题。
关于Go的内存泄露有这么一句话不知道你听过没有:
10次内存泄露,有9次是goroutine泄露。
我所解 ...
go协程理解
一、Golang 线程和协程的区别
备注:需要区分进程、线程(内核级线程)、协程(用户级线程)三个概念。
进程、线程 和 协程 之间概念的区别
对于 进程、线程,都是有内核进行调度,有 CPU 时间片的概念,进行 抢占式调度(有多种调度算法)
对于 协程(用户级线程),这是对内核透明的,也就是系统 ...
Go数组
1. 数组:是同一种数据类型的固定长度的序列。
2. 数组定义:var a [len]int,比如:var a [5]int,数组长度必须是常量,且是类型的组成部分。一旦定义,长度不能变。
3. 长度是数组类型的一部分,因此,var a[5] int和var a[10]int是不同的类型。
4. 数组可以通过下标进行访问,下标是从0 ...
Go——godoc命令简介
前言
godoc的一些简记
命令
godoc的列表 | godoc的chm下载
查看godoc的所有命令
`$ godoc -h`
usage: godoc -http=localhost:6060
-analysis string
comma-separated list of analyses to perform (supported: type, pointer). See http://golang.org/lib/godoc/analysis/help.html
-goroot string
Go ...
雪崩利器 hystrix-go 源码分析
阅读源码的过程,就像是在像武侠小说里阅读武功秘籍一样,分析高手的一招一式,提炼出精髓,来增强自己的内力。
之前的帖子说了一下微服务的雪崩效应和常见的解决方案,太水,没有上代码怎么叫解决方案。github上有很多开源的库来解决雪崩问题,比较出名的是Netflix的开源库hystrix。集流量控制、熔断、容错等于一身的java ...
kubectl技巧之通过go-template截取属性
系列目录
在使用kubectl get获取资源信息的时候,可以通过-o(--output简写形式)指定信息输出的格式,如果指定的是yaml或者json输出的是资源的完整信息,实际工作中,输出内容过少则得不到我们想要的信息,输出内容过于详细又不利于快速定位的我们想要找到的内容,其实-o输出格式可以指定为go-template然后指定一个template,这样 ...
go module
前言
go 1.5 引进了vendor管理工程依赖包,但是vendor的存放路径是在GOPATH底下,另外每个依赖还可以有自己的vendor,通常会弄得很乱,尽管dep管理工具可以将vendor平级化管理,但是相对GOPATH的路径是逃不掉的。另外,各个包的版本管理也显得原始,甚至有的开发将依赖包从github直接download下来自己放到GOPATH底下的vendo ...
Go语言交叉编译工具gox
基本介绍
交叉编译是为了在不同平台编译出其他平台的程序,比如在Linux编译出Windows程序,在Windows能编译出Linux程序,32位系统下编译出64位程序,今天介绍的gox就是其中一款交叉编译工具。
配置环境
首先配置好Go语言的环境变量,并在~/.bash_profile中设置,简单说明一下为什么要添加至该文件,首先以下代码在终端执行 ...
使用go-mysql-elasticsearch同步mysql数据库信息到ElasticSearch
本文介绍如何使用go-mysql-elasticsearch同步mysql数据库信息到ElasticSearch。
1.go-mysql-elasticsearch简介
go-mysql-elasticsearch是一个将MySQL数据自动同步到Elasticsearch的服务。
它首先使用mysqldump获取原始数据,然后用binlog增量地同步数据。
github地址:https://github.com/siddontang/go-mysql-elasticsea ...
go语言快速入门教程
go快速入门指南
...
深度解密Go语言之context
目录什么是 context为什么有 contextcontext 底层实现原理整体概览接口Contextcanceler结构体emptyCtxcancelCtxtimerCtxvalueCtx如何使用 context传递共享的数据取消 goroutine防止 goroutine 泄漏context 真的这么好吗总结参考资料
Go 语言的 context 包短小精悍,非常适合新手学习。不论是它的源码还是实际使用,都值得投 ...
GO语言html模板
模板
一个模板是一个字符串或一个文件,里面包含了一个或多个由双花括号包含的{{action}}对象。大部分的字符串只是按面值打印,但是对于actions部分将触发其它的行为。每个actions都包含了一个用模板语言书写的表达式,一个action虽然简短但是可以输出复杂的打印值,模板语言包含通过选择结构体的成员、调用函数或方法、表 ...