go
文章平均质量分 56
后打开撒打发了
有些人注定要生活在彼岸 可以亲近可以爱怜 甚至可以穷尽一生去思念 只是无法触及 有些距离 注定不能跨越 只能俩俩相望 就像有些爱只能养在心里 长在眼中 不要捧在手里 放在身边 注定只能邂逅 无法遭遇
展开
-
对goland 中G、P、M的理解
Go调度器中的三种结构G、P、M系统线程固定2M,且维护一堆上下文,对需求多变的并发应用并不友好,有可能造成内存浪费或内存不够用。Go将并发的单位下降到线程以下,由其设计的goroutine初始空间非常小,仅2kb,但支持动态扩容到最大1G,这就是go自己的并发单元——goroutine协程。实际上系统最小的执行单元仍然是线程,go运行时执行的协程也是挂载到某一系统线程之上的,这种协程...原创 2020-01-20 16:04:43 · 2884 阅读 · 0 评论 -
golang 中slice 、map、chan作为函数参数分析
写这篇文章之前考虑一个问题: go里面都是值传递,不存在引用传递?先来总结一下slice、map、chan的特性:slice:func makeslice64(et *_type, len64, cap64 int64) unsafe.Pointertype slice struct { array unsafe.Pointer len int cap int...原创 2020-01-03 13:16:29 · 5618 阅读 · 0 评论 -
go语言中切片 slice
参考文章:https://studygolang.com/articles/18194?fr=sidebarhttps://github.com/cch123/golang-notes/blob/master/slice.mdhttps://blog.haohtml.com/archives/18094slice:先看一下slcie结构:runtime/slice.gotype sl...原创 2019-12-31 16:35:15 · 335 阅读 · 0 评论 -
Go语言之map:map的用法到map底层实现分析
带着几个问题阅读本文:1. go map 实现方法?如何解决hash冲突的?2. go map是否线程安全?3. go map 的扩容机制?什么是map? 由一组 <key, value> 对组成的抽象数据结构,并且同一个 key 在map中只会出现一次map 的设计也被称为 “The dictionary problem”,它的任务是设计一种数据结构用来维护一个集合的...原创 2019-12-30 16:08:27 · 6148 阅读 · 1 评论 -
Go调度器中的三种结构G、P、M
Go调度器中的三种结构G、P、M系统线程固定2M,且维护一堆上下文,对需求多变的并发应用并不友好,有可能造成内存浪费或内存不够用。Go将并发的单位下降到线程以下,由其设计的goroutine初始空间非常小,仅2kb,但支持动态扩容到最大1G,这就是go自己的并发单元——goroutine协程。实际上系统最小的执行单元仍然是线程,go运行时执行的协程也是挂载到某一系统线程之上的,这种协...原创 2019-12-25 11:40:24 · 2215 阅读 · 0 评论 -
golang context包 的理解
先看一下context包的英文介绍:// Programs that use Contexts should follow these rules to keep interfaces// consistent across packages and enable static analysis tools to check context// propagation://// Do n...原创 2019-12-23 17:04:43 · 725 阅读 · 0 评论 -
go语言实现36进制算法
36进制由0-9,a-z,共36个字符表示,最小为'0''0''9'对应十进制的09,'a''z'对应十进制的1035例如:'1b' 换算成10进制等于 1 * 36^1 + 11 * 36^0 = 36 + 11 = 47要求按照加法规则计算出任意两个36进制正整数的和如:按照加法规则,计算'1b' + '2x' = '48'要求:不允许把36进制数字整体转为10进制数字,计算出10...原创 2019-12-19 16:18:24 · 1845 阅读 · 0 评论 -
go学习之- cas的理解
参考文章:[CAS(Compare and Swap)算法介绍、缺陷和解决思路]( https://blog.csdn.net/q2878948/article/details/90105951 https://www.jianshu.com/p/c74c85db5129)CAS(compare and swap)go中CAS操作具有原子性,在解决多线程操作共享...原创 2019-12-18 15:13:51 · 2186 阅读 · 1 评论 -
go语言 记录奇怪的写法--慢慢品味
package mainimport "fmt"type TestFunc func(*Bar, string)type Bar struct { Name string Alias string}func (t *Bar) SetName(name string) { t.Name = name fmt.Println("Name:", t.N原创 2017-08-04 19:06:17 · 624 阅读 · 0 评论 -
mysql创建多列组合唯一索引,unique index
CREATE TABLE IF NOT EXISTS `ppserver`.`eventTable`( `userId` INT UNSIGNED NOT null, `taskId` INT UNSIGNED NOT null, `date` TIMESTAMP DEFAULT CURREN原创 2017-08-04 15:46:03 · 57638 阅读 · 1 评论 -
mac系统下使用beego工具创建项目出现kill -9 解决方法
最近在使用go和python开发项目,之前一直是用c++做,发现c++熟悉了,其他的语言手到擒来,人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。网上搜到一个解决方案:按照下面的步骤发现果真管用mac最新系统安装beego出现kiil 9(内容来自:http://www.oschina.net/question/2626413_2237311)应该是最原创 2017-08-24 17:23:37 · 1507 阅读 · 0 评论 -
在Go语言中使用JSON
在Go语言中使用JSON标签: go语言golangjsongojson.RawMessage2014-08-30 15:10 36580人阅读 评论(2) 收藏 举报 分类:学习笔记(3) 版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]Encode将一个对象编码成JSON数据,接受一转载 2017-08-02 16:15:55 · 1163 阅读 · 0 评论 -
Micro 架构与设计
Micro 架构与设计翻译自 Micro architecture & design patterns for microservices注: 原文作者即 Micro 框架的开发者。过去几个月中,我们收到了很多关于 micro 的微服务架构和设计模式的问题。所以今天我们试着解释一下这两方面的问题。关于 MicroMicro 是一个微服务工具集。它被用来实现它的特性和接口,同时提供强大的可插...转载 2018-07-07 10:02:48 · 759 阅读 · 0 评论 -
go语言并发编程-----Goroutines 并发模式
前言在Goroutines 并发模式(一)中,我们简单地通过boring函数的例子来粗略地阐述了通过channels来和goroutines交流的方法。在本篇中,我将从pattern的方向出发,通过对boring函数的例子进行各种改写,来讲解几种常见了goroutines的并发模式。并发模式让我们先来回顾一下boring函数的例子。func boring(msg str转载 2017-07-07 16:20:05 · 1292 阅读 · 0 评论 -
beego框架之路由实践
近日在学习beego框架,今天把beego框架中的路由设置这一块进行了动手实践,感觉beego框架的路由功能还是蛮强大的。参考原文:http://beego.me/docs/mvc/controller/router.md#namespace修改过程中主要是修改了routers/router.go文件,当然也有修改controllers/default.gorouters/router转载 2017-08-25 10:26:46 · 1820 阅读 · 0 评论 -
net/http包的使用模式和源码解析
目录:一、http包的3个关键类型二、HTTP服务器的使用模式三、HTTP服务器的执行过程四、重定向五、客户端的实现 一、http包的3个关键类型:Handler接口:所有请求的处理器、路由ServeMux都满足该接口;123type Handler interface { ServeHTT转载 2017-10-20 16:46:16 · 730 阅读 · 0 评论 -
grpc-go使用教程之helloworld
protobuf的安装github上下载一个cpp包:https://github.com/google/protobuf/releasesmake make install安装即可google的grpc-go使用教程github地址:https://github.com/grpc/grpc-go使用之前请配置好go环境和gopath路劲helloworld教程:1、首先安装proto文件生成...原创 2018-04-20 10:54:31 · 7909 阅读 · 1 评论 -
go语言之反射-------Reflection
Reflection is one of the advanced topics in Go. I will try to make it as simple as possible.This tutorial has the following sections.What is reflection?What is the need to inspect a variable and find ...转载 2018-05-15 10:31:35 · 1367 阅读 · 1 评论 -
go lang学习笔记——channel机理及调度理解
《Go语言编程》一书介绍了libtask库,可以认为这个库等同于go的底层goroutine实现。libtask库的channel的数据结构如下:struct Alt{ Channel *c; void *v; unsigned int op; Task *task; Alt *xalt;}; struct Altarray{ Alt **a; unsig...转载 2018-05-15 16:32:08 · 796 阅读 · 1 评论 -
Go使用grpc+http打造高性能微服务
大家可以发现,Go越来越流行,其一是目前云计算领域基本是使用Go作为底层开发语言;其二是随着区块链的火爆,引申出了其背后很多开源项目,很多都是使用Go语言进行开发;其三就是在微服务方面,Go也展示很大的优势性。那么微服务是什么,如何将其与Go做一个整合,来提升整体开发生产效率,下面会进行详细讲解。什么是微服务微服务的概念最早由 Martin Fowler 提出,在他的理论当中,微服务是一整套小的服...转载 2018-05-16 16:42:52 · 6257 阅读 · 2 评论 -
go-micro讲解--Go Micro编写微服务
一、什么是go-micro Go Micro是一个插件化的基础框架,基于此可以构建微服务。Micro的设计哲学是『可插拔』的插件化架构。在架构之外,它默认实现了consul作为服务发现,通过http进行通信,通过protobuf和json进行编解码。我们一步步深入下去。Go Micro是:一个用Golang编写的包一系列插件化的接口定义基于RPcGo Micro为下面的模块定义了接口:服务发现编解...原创 2018-07-07 10:53:09 · 39785 阅读 · 5 评论 -
Go 语言基础之变量
这小节我们将要介绍如何定义变量、常量、Go内置类型以及Go程序设计中的一些技巧。定义变量Go语言里面定义变量有多种方式。使用var关键字是Go最基本的定义变量方式,与C语言不同的是Go把变量类型放在变量名后面://定义一个名称为“variableName”,类型为"type"的变量var variableName type定义多个变量//定义三个类型都是“type”的原创 2016-07-30 21:33:16 · 3388 阅读 · 0 评论 -
go flag的使用
package mainimport "flag"import "fmt"import "strconv"type percentage float32func (p *percentage) Set(s string) error { v, err := strconv.ParseFloat(s, 32) *p = percentage(v) return err}fu转载 2017-06-27 18:31:59 · 1153 阅读 · 0 评论 -
go语言学习----mysql的操作
package mainimport ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "log")func main() { db, err := sql.Open("mysql", "chenxun:123456@tcp(202.120.1.1:330)/ppserver?ch原创 2017-07-06 10:22:44 · 610 阅读 · 0 评论 -
go语言文件读写
package mainimport ( "fmt" "os" "bufio" "io" "io/ioutil")func readFile(path string){ file,err := os.Open(path) if err != nil{ fmt.Printf("read file error\n") return } defer file.Cl原创 2017-03-17 01:02:17 · 4113 阅读 · 0 评论 -
go语言实现快速排序
先看一下c++的实现方法:1、快速排序的描述 快速排序算法采用的分治算法,因此对一个子数组A[p…r]进行快速排序的三个步骤为: (1)分解:数组A[p...r]被划分为两个(可能为空)子数组A[p...q-1]和A[q+1...r],给定一个枢轴,使得A[p...q-1]中的每个元素小于等于A[q],A[q+1...r]中的每个元素大于等于A[q],q下标是在划分过程原创 2016-12-24 01:17:28 · 7262 阅读 · 2 评论 -
go语言实现斐波数列
斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)递归实现package mainimport ( "fmt")func main() { for i := 0; i 10; i++原创 2016-07-04 01:04:52 · 2159 阅读 · 0 评论 -
Go如何使得Web工作
web工作方式的几个概念以下均是服务器端的几个概念Request:用户请求的信息,用来解析用户的请求信息,包括post、get、cookie、url等信息Response:服务器需要反馈给客户端的信息Conn:用户的每次请求链接Handler:处理请求和生成返回信息的处理逻辑分析http包运行机制如下图所示,是Go实现Web服务的工作模式的流程图图3.9 h原创 2016-07-31 04:35:03 · 1777 阅读 · 0 评论 -
Go搭建一个Web服务器
前面小节已经介绍了Web是基于http协议的一个服务,Go语言里面提供了一个完善的net/http包,通过http包可以很方便的就搭建起来一个可以运行的Web服务。同时使用这个包能很简单地对Web的路由,静态文件,模版,cookie等数据进行设置和操作。http包建立Web服务器package mainimport ( "fmt" "net/http" "s原创 2016-07-31 03:14:07 · 10643 阅读 · 1 评论 -
go语言 面向对象
前面两章我们介绍了函数和struct,那你是否想过函数当作struct的字段一样来处理呢?今天我们就讲解一下函数的另一种形态,带有接收者的函数,我们称为methodmethod现在假设有这么一个场景,你定义了一个struct叫做长方形,你现在想要计算他的面积,那么按照我们一般的思路应该会用下面的方式来实现package mainimport "fmt"type Rectang原创 2016-07-30 21:20:29 · 1604 阅读 · 0 评论 -
go web服务(2)
练习:HTTP 处理实现下面的类型,并在其上定义 ServeHTTP 方法。在 web 服务器中注册它们来处理指定的路径。type String stringtype Struct struct { Greeting string Punct string Who string}例如,可以使用如下方式注册处理方法:http.原创 2016-07-30 18:24:13 · 1898 阅读 · 0 评论 -
go web服务(1)
package main import ( "net/http") func SayHello(w http.ResponseWriter, req *http.Request) { w.Write([]byte("Hello"))} func main() { http.HandleFunc("/hello", SayHello) http.Lis原创 2016-07-30 17:51:14 · 736 阅读 · 0 评论 -
A Tour of Go: Exercise: Rot13 Reader
package main import ( "io" "os" "strings" ) type rot13Reader struct { r io.Reader } func rot13(p byte) byte { switch { case p >= 'A' && p <= 'M':原创 2016-07-30 03:19:41 · 1394 阅读 · 0 评论 -
go语言socket编程
go语言socket编程用go写socket非常简单,如果你了解其他语言的socket的话一看便知,如果想深入的话,个人建议看uninx网络编程套接字联网API这本书。在go中,网络协议被封装的非常完好了,我们并不需要像其他语言那样需要socket、bind、listen、receive、connect等一系列的操作,只需要go中自带的net包就可以很方便的完成socket编程。server.gop原创 2016-12-27 01:44:40 · 3844 阅读 · 1 评论 -
go http server读书笔记
go http server读书笔记package mainimport ( "fmt" "net/http" "time")type customHandler struct {}func (cb *customHandler) chenxun(w http.ResponseWriter, r *http.Request) { fmt.Prin原创 2017-06-29 10:22:43 · 905 阅读 · 0 评论 -
快速搭建HTTP服务器 go http server
go http server 例子,自定义路由。package mainimport ( "fmt" "net/http" "reflect" "strings")func hello(w http.ResponseWriter, req *http.Request) { w.Write([]byte("Hello"))}type Han原创 2017-06-28 18:34:21 · 19147 阅读 · 0 评论 -
go语言学习----字符串、数组和切片的应用
字符串、数组和切片的应用 从字符串生成字节切片假设 s 是一个字符串(本质上是一个字节数组),那么就可以直接通过 c := []bytes(s) 来获取一个字节的切片 c。另外,您还可以通过 copy 函数来达到相同的目的:copy(dst []byte, src string)。同样的,还可以使用 for-range 来获得每个元素(Listing 7.13—fo原创 2017-07-04 20:35:46 · 6744 阅读 · 0 评论 -
go语言学习之-------go httpserver进阶之路(1)
package mainimport ( "io" "net/http" //"strings" "time")var ( server = &http.Server{ Addr: ":9090", Handler: &ppserver{}, ReadTimeout:原创 2017-07-04 19:35:37 · 7093 阅读 · 0 评论 -
go语言学习-------Go语言中使用 protobuf
Go语言中使用 protobuf2016年05月03日protobuf以前只支持C++, Python和Java等语言, Go语言出来后, 作为亲儿子, 那有不支持的道理呢? github地址: go protobuf.1. 安装protobuf 首先去 go protobuf 下载protobuf, 然后执行脚本./autogen.sh, 脚本中会转载 2017-07-03 11:36:27 · 2671 阅读 · 0 评论 -
go语言学习------Go 记录日志——log包
Go 记录日志——log包吃一堑消化不良 · 2016-12-15 21:00:03 · 2161 次点击 · 预计阅读时间 2 分钟 · 3天之前 开始浏览 这是一个创建于 2016-12-15 21:00:03 的文章,其中的信息可能已经有所发展或是发生改变。 Golang's log模块主要提供了3类接口。分别是 “Print 、Panic 、转载 2017-07-03 11:12:03 · 1303 阅读 · 0 评论