Go语言中文网 为您找到相关结果 2978

Go-数据库连接

GO src中自带了sql包和连接数据库的包。这里以连接MYsql为例子。 sql.Open 就是开启了一个数据库连接处。在执行EXEC 或者 QUERY的时候就会自己去建立连接。因此整个应用程序 只需要初始化一次sql.db指针。然后到处用就oK了。 // dbTest project main.go package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "time" ) func IsErr(err error) { if err != nil { fmt.Printf("程晗错误:%s", err) } } func main() { //初始化数据库信息,此时就是一个数据库连接池 d...阅读全文

博文 2015-11-07 15:00:01 shuanger_

Go Mvc的一个示例

下载 Go Mvc的一个示例,项目后台用户管理部分,包括用户的添加,修改,删除,分页,查询等操作。分享出来供大家参考。 data.sql 是表结构的创建SQL,运行前先创建数据表。DBConfig.xml是数据库连接字符串的设置,只所以独立出来一个文件,主要是方便程序里对文件进行修,力求简单,在程序运行前先设置Mysql连接信息。访问地址为:http://localhost:6080/Admin/AdminUser/Index 下...阅读全文

博文 2015-05-12 21:00:02 王岩0001

雨痕新作《Go语言学习笔记》出版了

《Go语言学习笔记》——雨痕著 出版了。购买地址: - [china-pub](http://product.china-pub.com/4971695) - [京东](http://item.jd.com/10466396823.html) 目录: ``` 上卷 语言详解 第1 章 概述 ............... 3 1.1 特征 ....................... 3 1.2 简介 ....................... 6 第2 章 类型 ..............18 2.1 变量 ..................... 18 2.2 命名 ..................... 22 2.3 常量 ........................阅读全文

数据库不适合Docker及容器化的7大原因

导读:所有的服务都开始了容器化升级,在一切皆容器的主流思想下,无状态的服务采用容器化已经是大势所趋,常常困扰架构师的一个问题是,数据库是否需要容器化,本文作者 Mikhail Chinkov 提出了自己否定观点,由高可用架构翻译。如果我们观察 2017 年技术行业,容器和 Docker 依然将是最热门的流行语。我们开始在每个领域的 Docker 容器中打包开发的软件。从小型初创公司到巨大的微服务平台都在使用容器技术。从 CI 平台到 Raspberry Pi 。从数据库到……数据库?您确定要将数据库放在容器中吗?不幸的是,这不是虚构的场景。我看到许多快速增长的项目将数据持久化到容器中。并且将计算服务和数据服务放在同一台机器上。笔者希望有经验的人不会用这个解决方案。下面是我的观点,数据库容器化...阅读全文

博文 2017-02-15 03:10:00 Mikhail Chinkov

p2p端口映射工具 dog-tunnel

狗洞是一个高速的 P2P 端口映射工具,同时支持Socks5代理。 0.5版后开始开源,UDP底层基于开源库KCP重写,效率大大提高,在恶劣环境下优势明显。 同时提供非P2P版本(Lite版本),两端连接过程完全不依赖中间服务器,支持加密和登陆认证,自动重连,但是需要人为确保两端能正常连通(否则请使用默认的P2P版本) ![image](http://static.oschina.net/uploads/space/2014/1213/080425_bS2n_12.png) 特性: * 数据安全,P2P模式通讯时数据不经过服务端,用户可自定义访问密码 * P2P模式底层采用KCP协议,在恶劣网络环境下比TCP延迟降低 30%-40% * P2P模式支持AES加密 * P2P模式可...阅读全文

开源项目 2014-12-12 16:00:00 vzex

gorm关联查询的坑

背景:最近在学习 golang,尝试将之前的PHP项目用 go改写一下。涉及的表模型如下三个: // 文章 type Topics struct { Id int `gorm:"primary_key"` Title string `gorm:"not null"` Body string `gorm:"not null"` UserId int `gorm:"not null"` CategoryId int `gorm:"not null"` ReplyCount int ViewCount int LastReplyUserId int Order int Excerpt string Slug string Status int `gorm:"default:1"` CreatedA...阅读全文

博文 2018-09-13 17:34:47 AuroraLZDF

GO语言练习:第二个工程--模拟音乐播放器

1、代码 2、编译及运行 1、目录结构 1.1) 1 $ tree 2 . 3 ├── mplayer.go 4 └── src 5 ├── mlib 6 │ ├── manager.go 7 │ └── manager_test.go 8 └── mp 9 ├── mp3.go 10 └── play.go 1.2)mlib库的代码 1.2.1)manager.go代码 1 package library 2 3 import "errors" 4 5 type MusicEntry struct { 6 Id string 7 Name string 8 Artist string 9 Genre string 10 Source string 11 Type string 12 } 1...阅读全文

博文 2015-07-14 03:00:00 fengbohello

使用 plot 绘制图表

作为一个程序员,很多时候虽然我喜欢盯着 console 输出的一堆数字看一些系统变化指标,但俗话说,一图胜千言,如果能自动的将很多数据生成图表展示,会更加清晰明了,而且能直接从变化的曲线上面得知更多的信息。这也就是我特别喜欢 Prometheus + Grafana 的原因。 但很多项目,尤其是临时的一些测试项目,我不可能为了看一个数据图表就搭建一套 Prometheus + Grafana 系统,那样效率太低,更多时候,我还是希望能有一个更简单的工具将一些数据展示出来。 幸运的是,我们可以通过 plot 非常方便的做到。plot 是一个用 Go 语言实现的绘图库,我们可以通过它绘制非常丰富的图表,并且可以输出成多种格式。另外,plot 还提供了非常方便的 interface,我们可以通过它...阅读全文

博文 2017-06-21 02:14:10 siddontang

Golang 开发的微信 SDK go-wechat-sdk

### WeChat SDK for Go 使用Golang开发的微信SDK,简单、易用。 ### 快速开始 以下是一个处理消息接收以及回复的例子:

//配置微信参数
config := &wechat.Config{
    AppID:          "xxxx",
    AppSecret:      "xxxx",
    Token:          "xxxx",
    EncodingAESKey: "xxxx",
    Cache:          memCache
}...阅读全文

go语言测试----切片删除

package main import ( "fmt" "math/rand" //"time" ) func main() { vect := make([]int, 100000) for i, _ := range vect { vect[i] = i } for i := 0; i < 10; i++ { k := rand.Intn(100000) //这里有可能会有重复的值,但我们假定有10个不同的值 vect[k] = -1 } for i, v := range vect { if v == -1 { //当V=-1时,假定是不需要的数据 vect = append(vect[:i], vect[i+1:]...) } } //测试一下 for i, v := range v...阅读全文

博文 2015-06-17 23:05:44 zistxym

也谈并发与并行

也谈并发与并行 六 23 bigwhite技术志 Concurrency, Go, Go1.5, Golang, Google, Gopher, goroutine, parallelism, RobPike, 并发, 并行, 线程, 编程语言, 调度 No Comments 在一般人的眼中,“并行”就是并行,即你干你的,我干我的,两个“并行”的执行过程可能是两条毫无瓜葛的平行线,也可能是有交叉,但瞬即分开的两条线。不 过在程序员的世界里,有关“并行”的概念却有两个单词:Concurrency和Parallelism,对应的比较主流的中文翻译为并发 (Concurrency)和并行(Parallelism)。 之前一直使用C、Python进行Coding,对Concrrency和Parall...阅读全文

Go使用grpc+http打造高性能微服务

大家可以发现,Go越来越流行,其一是目前云计算领域基本是使用Go作为底层开发语言;其二是随着区块链的火爆,引申出了其背后很多开源项目,很多都是使用Go语言进行开发;其三就是在微服务方面,Go也展示很大的优势性。那么微服务是什么,如何将其与Go做一个整合,来提升整体开发生产效率,下面会进行详细讲解。什么是微服务微服务的概念最早由 Martin Fowler 提出,在他的理论当中,微服务是一整套小的服务,其中每一个服务互相之间都是独立的,它们之间通过 lightweight 机制进行交互。图 1图 1 所示是最传统的一个应用软件架构,最顶层是 load balancer ,下面布局很多cuisine,这些cuisine共享一个数据库。图 2图 2 是微服务的架构图,由图中我们可以看出整体架构分布...阅读全文

博文 2017-11-22 09:32:26 astaxie

默默前行的livego--基于go语言的rtmp直播服务器

为什么go语言,原因太多了! 轻量级协程,随时goroutine方便的channel方便的interface强大的服务器性能 简单点GO语言---为服务器而生! 我们来看看: livego--基于go语言的rtmp直播服务器 github地址: https://github.com/runner365/livego 什么是livego livego是基于golang开发的rtmp服务器 为什么基于golang golang在语言基本支持多核CPU均衡使用,支持海量轻量级线程,提高其并发量 当前开源的缺陷: srs只能运行在一个单核下,如果需要多核运行,只能启动多个srs监听不同的端口来提高并发量; ngx-rtmp启动多进程后,报文在多个进程内转发,需要二次开发,否则静态推送到多个子进程,效...阅读全文

博文 2017-08-25 01:32:12 sweibd

你应该知道Go语言的几个优势

要说起GO语言的优势,我们就得从GO语言的历史讲起了…… 本文由腾讯技术工程官方号发表在腾讯云+社区 2007年,受够了C++煎熬的Google首席软件工程师Rob Pike纠集Robert Griesemer和Ken Thompson两位牛人,决定创造一种新语言来取代C++, 这就是Golang。出现在21世纪的GO语言,虽然不能如愿对C++取而代之,但是其近C的执行性能和近解析型语言的开发效率以及近乎于完美的编译速度,已经风靡全球。特别是在云项目中,大部分都使用了Golang来开发,不得不说,Golang早已深入人心。而对于一个没有历史负担的新项目,Golang或许就是个不二的选择。 被称为GO语言之父的Rob Pike说,你是否同意GO语言,取决于你是认可少就是多,还是少就是少(Les...阅读全文

博文 2018-06-19 16:34:45 腾讯云加社区

GO语言结构体方法跟结构体指针方法的区别

首先,我定了三个接口、一个结构和三个方法: type DeptModeA interface { Name() string SetName(name string) } type DeptModeB interface { Relocate(building string, floor uint8) } type Dept struct { name string building string floor uint8 Key string } func (self Dept) Name() string { return self.name } func (self Dept) SetName(name string) { self.name = name } func (self *D...阅读全文

博文 2017-01-18 16:00:08 tree2013

AliPay SDK for Golang

https://github.com/smartwalle/alipay AliPay SDK for Golang ## 已实现接口 #### 手机网站支付API * **手机网站支付接口** alipay.trade.wap.pay * **统一收单线下交易查询** alipay.trade.query * **统一收单交易支付接口** alipay.trade.pay * **统一收单交易关闭接口** alipay.trade.close * **统一收单交易退款接口** alipay.trade.refund * **统一收单交易退款查询** alipay.trade....阅读全文

Go 语言中文网 联合 实验楼 送福利

[实验楼](https://www.shiyanlou.com) 是国内领先的IT技术实训平台,采用创新的“在线实验”学习模式,为学生及在职程序员提供编程、运维、测试、云计算、大数据、数据库等最新的IT技术实践课程。 实验楼建设初衷是帮助学习者通过动手实践收获知识,同时体会实验精神。德国教育学家斯普朗格说:“教育的最终目的不是传授已有的东西,而是要把人的创造力量诱导出来”,实验楼设计理念也是如此:从实践切入,依靠交互性、操作性更强的课程,理论学习+动手实践共同激发你的创造力。 实验楼 联合 Go 语言中文网 给 gopher 送福利:**价值 30 元的优惠码**,可以抵扣会员或训练营。 优惠码兑换在 [物品兑换](/gift) 页面。 ...阅读全文

Go语言为什么这么流行?

这个问题很复杂,多方面原因决定了Golang的实用价值。 Go语言的背景 Go的吉祥物Gordon田鼠,是由Google公司创造一种新程序语言,并且公司为这门语言付出了极大的努力。Go语言一出现就获得业界的普遍关注和使用。为什么呢? Go具有一些多数程序语言没有的资产。首先,这是一个Google计划,它有数量庞大的服务器和技术高超的程序设计师为后盾。Google的一个实验产品可能比许多其他公司的实际产品更具商业意义。2007年,Google公司的三位核心人员 Robert Griesemer, Rob Pike, 和 Ken Thompson 设计出了Go语言,其语言定位为系统编程语言。只看Go创始人就理解Google有多么厉害,这三位创始人的简介如下。 Robert Griesemer i...阅读全文

博文 2016-04-29 13:00:01 GreatElite

go语言的php cgi执行程序

/* PHP FactCGI Remote Code Execute Exploit * Date: 2012-09-15 * Author: wofeiwo@80sec.com * Affected: All PHP-FPM exposed outsie, but "system" cmd only affects >=5.3.3 * !!Note: Only for research purpose!! * Usage: * First use nmap. * $nmap -sV -p 9000 --open xxx.xxx.xxx.xxx/24 * Find any open port marked as "tcpwrapped". * $go build fcgi_exp.go * ...阅读全文

博文 2014-10-04 19:26:03 yatere

beego框架下无法读取中文cookie

使用场景是应用在登录界面 当用户名为纯英文时,一切正常 当用户名为中文时 经测试排查 1、可以在浏览器开发工具中看到中文cookie,也就是beego成功将中文写入cookie 2、在读取时,读取到的为空(如果是英文就可以读取到) 使用的是Ctx.SetCookie 和 Ctx.GetCookie 请大家帮忙指点一...阅读全文

用wrk对golang/nodejs/nginx做性能测试对比

sudo taskset -c 1 ./wrk -c1 -t1 -d30 http://localhost/hello wrk+nginx(helloworld module) sudo taskset -c 0 sbin/nginx nginx: cpu:76% wrk: cpu:70% Running 30s test @ http://localhost/hello 1 threads and 1 connections Thread Stats Avg Stdev Max +/- Stdev Latency 61.55us 27.57us 4.30ms 99.28% Req/Sec 11.58k 682.50 14.44k 76.94% 325276 requests in 30.0...阅读全文

博文 2015-05-18 21:00:02 chuqingq

关于golang里停止程序执行与变量打印

1)golang里有没有停止程序执行的语句,类似于php里的die和exit. 2)在beego里,如何直接打印变量输出到浏览器里,而不需要渲染到模板里,类似于php里的 echo $a; die; 如果使用fmt.Printf(),需要在后台进行查看了。 有没有更直接的方法,刚接触学习,需要进行各种调试,来了解它的执行过程和原理, ...阅读全文

保存一个别人的golang 日志库

package loggerimport ( "fmt" "log" "os" "runtime" "strconv" "sync" "time")const ( _VER string = "1.0.0")type LEVEL int32var logLevel LEVEL = 1var maxFileSize int64var maxFileCount int32var dailyRolling bool = truevar consoleAppender bool = truevar RollingFile bool = falsevar logObj *_FILEconst DATEFORMAT = "2006-01-02"type UNIT int64const ( _ = iot...阅读全文

博文 2014-10-04 19:27:43 984195889

聊聊GOPATH、GOROOT

在go语言中环境变量GOPATH和GOROOT需要设置好才可进行开发编译,学过JAVA的朋友理解起来就比较快,这里就这两个变量作个详细的说明,不足之处,请大家批评指正。1. GOROOT简而言之,GOROOT在GO语言中表示的是go语言编译、工具、标准库等的安装路径,在Linux系统中一般安装在/usr/go或者/usr/local/go,这样Linux系统中的PATH变量一般都包含了这两个目录,所以就可以直接运行go命令,而Windows系统中一般默认安装在C:\go中。如果自定义安装go的话,需要设置GOROOT的值,比如在Linux系统中用户如有root用户权限时,想安装go至自己的工作目录中,就要设置GOROOT为自己的HOME目录中,假设安装在/home/目录中的go目录,则需要这...阅读全文

博文 2017-07-02 03:12:12 jasonvfang

go语言开发有哪些工具

Go语言在并发编程方面比绝大多数语言要简洁不少,这一点是其最大亮点之一,也是其在未来进入高并发高性能场景的重要筹码。本篇文章主要是给大家介绍一些go语言开发的开源工具! 1、Go Reviverevive 是一个 Go 语言的代码质量检测工具(Linter for Go),具有快速、可配置、可扩展、灵活和美观等特性,可作为 golint 的替代方案。虽然 golint 很受欢迎,但是 revive 提供了更多新功能,值得你去花时间研究,例如,它运行得更快(最高可达6x!),允许使用 TOML 文件配置 linting 规则,并提供更多规则。2、Go Callvis一定要收藏这个可视化工具,你可以使用 Go Callvis 来可视化 Go 程序的调用图。这个开发工具有一个使用HTTP服务器的交...阅读全文

博文 2019-03-28 21:34:40 QFdongdong

vim中go的语法高亮设置

测试环境:ubuntu 14.04 之kylin 版 vim本身不带golang的语法高亮 解决方案: 在 /usr/share/vim/vim74/ 中 有这么几个文件夹:syntax, ftplugin, indent, compiler等, 我们查看syntax可以看到有gcc.vim等其他语法文件,但是没有go.vim, 好在我们可以从源码下载 http://www.golangtc.com/download 下载 go1.3.3.src.tar.gzgo1.3.3 (source only),解压缩, 将下载目录的 go/misc/vim/中有对应的 syntax, ftplugin, indent, compiler 中的go.vim文件复制到/usr/share/vim/vim...阅读全文

golang channal中buf和for range一些用法

go的gocontinue用法实现了轻量级的线程,可以被大量创建。线程之间用channal通信,以下说说基本用法。 channal的buf c:=make(chan int ,3) 3就是设定的chanal的缓存量,缓存只意味着这个创建的channal可以同时存入3个数据,并不意味读channal时可以同时读出。 x:=<-c 读channal时仍然是以阻塞的方式一次一个地将数据读出。 当channal缓存中存在有效数据时,即使close掉channal,仍然可以读出buf里的数据。需要注意的是,从close掉的channal读数据时,channal是不阻塞的,当channal中的buf数据被读完时,仍然会以不阻塞的方式读出0值。 channal的for range c:=make(chan...阅读全文

博文 2015-12-21 16:00:01 iwbno1

专业 Golang HTTP 服务器

> 如何使用 Go 启动新的 Web 项目,使用路由,中间件和让我们加密认证。 Golang 有一个很棒的自带 http 服务器软件包,不用说就是: net/http, 它非常简单,但是功能非常强大。 定义处理路由的函数,端口是 80。 ```go package main import ( "io" "net/http" ) func main() { http.HandleFunc("/", helloWorldHandler) http.ListenAndServe(":80", nil) } func helloWorldHandler(w http.ResponseWriter, r *http.Request) { io.WriteString(w, "Hello world!"...阅读全文

博文 2018-05-18 14:38:22 wentingrohwer

golang 开发gui,还真有gui的框架,就是做个简单的行

1,关于gui golang 还真的有gui的开发框架。在mac上面好像比较简单。直接用就好。 不知道在其他平台上面咋样。 github项目地址: https://github.com/andlabs/ui/wiki/Getting-Started 起重核心还是使用了:https://github.com/andlabs/libui 在github上面加星的还是挺多的。非常的活跃的项目。 doc文档: https://godoc.org/github.com/andlabs/ui 其他的想好想也没有啥了。感觉上wxWidgets应该也是跨平台的。 https://github.com/dontpanic92/wxGo 也有一个哥们做的封装。 但是看了下加星的比较少呢。还是用andlabs/u...阅读全文

博文 2017-07-12 10:27:36 freewebsys

多云环境应用管理平台OpenPitrix

OpenPitrix 是一个将应用程序打包和部署到诸如 QingCloud,AWS,Kubernetes 等多个云环境中的开放平台. Pixrix [Paitriks] 是指 PaaS 和 IaaS 的矩阵,可以轻松开发,部署,管理各种应用程序,包括各种 PaaS 运行时环境,即 Pitrix = PaaS + IaaS + Matrix。 它也意味着一个包含无尽的矩阵(PI - 希腊字母“π”)应用程序。 设计: 基本思想是解耦应用程序存储库和运行时环境。 应用程序可以运行的运行时环境是通过匹配运行时环境的标签和应用程序所在的存储库的选择器。详情请查看[如何设计项目](https://github.com/openpitrix/openpitrix/blob/master/docs...阅读全文

golang中的单元测试

一般为了保证整个系统的稳定性,通常都需要编写大量的单元测试,诸如像java的junit,php的phpunit等都提供了类似的功能。golang中的testing包提供了这个测试的功能,结合go test工具搞起来就很方便了。 golang中的单元测试不单有功能测试,也还提供了性能测试,非常给力。 功能测试 在golang的src目录下新建目录math,测试目录结构如下: golang单元测试目录 fibonacci.go代码如下,主要有一个Fibonacci函数 package lib //斐波那契数列 //求出第n个数的值 func Fibonacci(n int64) int64 { if n < 2 { return n } return Fibonacci(n-1) + Fibon...阅读全文

博文 2015-10-16 21:52:52 陈杰斌

Golang比较两个slice是否相等

Compare two string slices in GoLang 开发中经常会遇到需要比较两个slice包含的元素是否完全相等的情况,一般来说有两个思路: reflect比较的方法 循环遍历比较的方法 这里用检查两个字符串slice是否相等的例子来测试一下这两种思路的效率我当然知道你知道reflect方法效率更差啦 reflect比较的方法 func StringSliceReflectEqual(a, b []string) bool { return reflect.DeepEqual(a, b) } 这个写法很简单,就是直接使用reflect包的reflect.DeepEqual方法来比较a和b是否相等 这是我最初完成这个需求的方式,年轻嘛,比较天真,觉得reflect啊,高端大...阅读全文

博文 2017-04-13 07:17:14 Kenshinsyrup

Go 语言如何去解决 Web 开发人员面临的众多问题?

坦白的说,我的团队非常厌恶我对 Go 语言传道的方式,每当我们团队的代码库出现问题时,他们希望我用一种更委婉的方式提出。 ![](https://raw.githubusercontent.com/studygolang/gctt-images/master/web-developers/Screen-Shot-2016-01-29-at-11-57-56.png) 我学会的第一门编程语言是 PHP,这是个优秀的语言,我可以用它很快地构建 Web 应用程序,这些应用程序也能够达到预期的效果。但是我注意到,为了使其可用,我会花费大量的时间来关注缓存。 我也发现自己依靠很多第三方库来做一些更复杂的任务,比如队列,Web Sockets 等等。我发现自己使用了 Pusher,RabbitMQ,Be...阅读全文

博文 2017-12-11 11:22:12 Dingo1991

golang编写的数据库中间件kingshard

偶然网上看到这个kingshard,自己对golang感兴趣就试玩了一下,可以正常跑成功。 数据库中间件是什么呢?简单的说和数据库类似,不同的是当程序里发送sql给它的时候,它会根据配置对sql进行分析,而后将sql发送到指定的节点(node)上,它的后面是若干数据库运行实例。 当应用发展起来后,随着数据库的压力逐渐变大,通常都要进行分库,分表,主从分离,这些东西在应用程序里实现也可以,但是会造成应用程序过于复杂,后续难以维护。使用中间件,将分库、分表、主从分离逻辑放到中间件上就更好的分离代码。 kingshard整体架构如下: kingshard架构图 其中 client是需要连接数据库的客户端; kingshard就是数据库中间件了; node1和node2就是不同的mysql数据库节点...阅读全文

博文 2015-10-16 21:53:38 陈杰斌

Golang学习-第三篇 认识Web框架

序言 作为一个Web开发人员,相信对框架并不陌生。那么什么是Web框架呢?我们学习的语言中有哪些框架呢?带着这两个疑问,来走进我们今天要写的内容。 Golang学习-第一篇 Golang的简单介绍及Windows环境下安装、部署 Golang学习-第二篇 搭建一个简单的Go Web服务器 正文 什么是Web框架? Web application framework,Web应用框架(Web框架),用来支持动态网站、网络应用程序及网络服务的开发。 Web应用框架有助于减轻网页开发时共通性活动的工作负荷,例如许多框架提供数据库访问接口、标准样板以及会话管理等,可提升代码的可再用性。 认识Go语言中的框架 Web框架,特别是一个好的Web框架,让我们在开发项目的过程中会减少很多的麻烦。不过,作为一个...阅读全文

博文 2017-08-03 09:05:11 盏茶_作酒

GO语言简单工厂模式

简单工厂模式的特点是工厂可以根据条件产生不同功能的类,从而达到提高程序代码的可复用性。 package main import ( "fmt" ) type Operater interface { //运算接口 Operate(int, int) int } type AddOperate struct { //加法运算类,实现了运算接口 } func (this *AddOperate)Operate(rhs int, lhs int) int { return rhs + lhs } type SubOperate struct { //减法运算类,实现了运算接口 } func (this *SubOperate)Operate(rhs int, lhs int) int { retu...阅读全文

博文 2015-09-23 18:00:01 wenjianming

尝鲜vgo

> 查看原文:[blog.keyboardman.me](http://blog.keyboardman.me/2018/02/23/early-adopters-versioned-go/) 一直以来,对go来说依赖包的版本控制上没有一个好的方案,当前主要有两种方式`Import Versioning`和`Semantic Versioning`。 * Import Versioning:`gopkg.in`网站,其实是GitHub版本变化的重定向器,你可以通过`gopkg.in/yaml.v1`和`gopkg.in/yaml.v2` 的这样的导入方式来指向Git库的不同提交版本 * Semantic Versioning:制定了一个文件格式规范来描述管理vendor目录下代码的准确源和版...阅读全文

博文 2018-02-23 16:22:39 0x5010

常见规则引擎技术

什么是业务规则?在需求里面我们往往把约束,完整性,校验,分支流等都可以算到业务规则里面。在规则引擎里面谈的业务规则重点是谈当满足什么样的条件的时候,需要执行什么样的操作。因此一个完整的业务规则包括了条件和触发操作两部分内容。而引擎是事物内部的重要的运行机制,规则引擎即重点是解决规则如何描述,如何执行,如何监控等一系列问题。 对于快速软件开发平台往往会包括两个方面的内容,一个是可重用性,一个是可配置性。对于公用组件,公用基础类库,公用算法等往往是增加了可重用性;而对于对象模型,权限模型,工作流模型,规则引擎则是解决平台的高可配置性。 权限模型实现了用户岗位,角色和权限调整可配置。工作流引擎实现了在流程出现变化的时候可以灵活配置。规则引擎将业务决策也从程序代码从抽离出来,实现规则变化也可以灵活配...阅读全文

博文 2017-11-29 02:51:42 it_man

golang项目打包

GOLANG打包 工程目录结构 假设有个Go语言的工程myproject,目录结构如下 myproject +-- src |-- myapp | +-- myapp.go +-- mylib +-- logger.go123456 其中mylib目录是一个lib库,myapp是一个应用,其中引用了mylib库。 工程样例程序 下面是logger.go和myapp.go程序代码 logger.go package mylib import "fmt" func Print(msg string) { fmt.Print(msg) }1234567 myapp.go package main import ( "mylib" ) func main() { mylib.Print("Hello...阅读全文

博文 2017-03-05 05:55:49 skh2015java

常见的加密算法

在项目开发过程中,当我们利用数据库存储一些关于用户的隐私信息,诸如密码、帐户密钥等数据时,需要加密后才向数据库写入。这时,我们需要一些高效地、简单易用的加密算法,当我们向数据库写数据时加密数据,然后把加密后的数据存入数据库;当需要读取数据时,从数据库把加密后的数据取出来,再通过算法解密。 常用的加密算法有Base64、MD5、AES和DES。 Base64 Base64是一种任意二进制到文本字符串的编码方法,常用于在URL、Cookie、网页中传输少量二进制数据。 首先使用Base64编码需要一个含有64个字符的表,这个表由大小写字母、数字、+和/组成。采用Base64编码处理数据时,会把每三个字节共24位作为一个处理单元,再分为四组,每组6位,查表后获得相应的字符即编码后的字符串。编码后的...阅读全文

博文 2017-06-25 09:07:21 witchiman

Go 代码重构:23 倍性能提升!

要说写代码是每位程序员的使命,那么写优秀的代码则是每位程序员的底线。本文作者分享基于 Go 语言的代码重构,使得性能提升 23 倍的快速方法。以下为译文:几周前,我读了一篇名为“Go 语言中的好代码与差代码”(https://medium.com/@teivah/good-code-vs-bad-code-in-golang-84cb3c5da49d)的文章,作者一步步地向我们介绍了一个实际业务用例的重构。文章的主旨是利用 Go 语言的特性将“差代码”转换成“好代码”,即更加符合惯例和更易读的代码。但是它也坚持性能是项目重要的方面。这就引起了我探索的好奇心:让我们深入看看!1这篇文章里的程序基本上就是读取输入文件,然后解析每一行并存储到内存的对象中。作者不仅在 Github 上发布了他的代码...阅读全文

博文 2018-07-11 14:20:16 Val Deleplace

Go 语言机制之内存剖析(Language Mechanics On Memory Profiling)

## 前序(Prelude) 本系列文章总共四篇,主要帮助大家理解 Go 语言中一些语法结构和其背后的设计原则,包括指针、栈、堆、逃逸分析和值/指针传递。这是第三篇,主要介绍堆和逃逸分析。(译者注:这一篇可看成第二篇的进阶版) 以下是本系列文章的索引: 1. [Go 语言机制之栈与指针](https://studygolang.com/articles/12443) 2. [Go 语言机制之逃逸分析](https://studygolang.com/articles/12444) 3. [Go 语言机制之内存剖析](https://studygolang.com/articles/12445) 4. [Go 语言机制之数据和语法的设计哲学](https://studygolang.com/a...阅读全文

博文 2018-02-26 12:12:59 gogeof

golang实现抽象工厂模式

在项目过程中,遇到某处需要使用工厂模式,因此写了个测试代码进行测试, 首先定义了interface Worker,其中包含一个接口Work(task *string) 然后定义创建Worker的interface WorkerCreator,包含一个接口Create() ,返回值为Worker type Worker interface { Work(task *string) } type WorkerCreator interface { Create() Worker } 我们假设有一个工种程序员,实现了Work接口,同时定义其构造类,实现Create()接口 type Programmer struct { } func (p *Programmer) Work(task *stri...阅读全文

博文 2016-04-16 19:00:00 qq_33204116

QOR:基于go语言开发的电商系统、CMS工具包

QOR是首个使用Go语言开发的电商系统和CMS的软件工具开发包(SDK),开源项目,包含一系列的通用功能模块,实现快速集成、灵活配置,让开发电商网站、CMS,像搭积木一样简单快捷。 ## 目前已经上线的模块 * Admin: 快速为您的应用程序生成一个漂亮、可跨平台运行、可配置的管理后台。 * Publish: 分别设置预演和正式服务器,使用Publish,内容管理员就能在正式发布之前预览所更新的内容。 * Transition: 用Transition来体现业务流程和执行业务规则。 * Media Library: 支持上传文件至云端或其他位置;支持图像裁剪和调整尺寸。 * Worker: 运行批处理进程,进行批量数据处理或其他耗时的计算。 * Exchange: 应...阅读全文

golang的协程原理

协程是应用层的线程。 应用层是相对于内核层而言,是操作系统的概念,对应的是cpu的运行级别。操作系统的核心代码运行的ring0级别,应用程序的代码运行在ring3级别。内核与应用层的级别设置保证了一些高权限的操作只有内核代码能做,应用程序要使用这些功能必须通过调用操作系统的API(linux上称为系统调用)来调用内核的代码。这个调用会导致cpu从ring3到ring0的上下文切换,这个切换是耗费一些cpu时间的。 线程是操作系统的内核对象,多线程编程时,如果线程数过多,就会导致频繁的上下文切换,这些cpu时间是一个额外的耗费。所以在一些高并发的网络服务器编程中,使用一个线程服务一个socket连接是很不明智的。于是操作系统提供了基于事件模式的异步编程模型。用少量的线程来服务大量的网络连接和I...阅读全文

博文 2017-03-15 15:00:43 徐学良

性能测试工具boom

Boom 是 google 一女工程师使用 Go 语言开发的类似 apache ab 的性能测试工具。相比 ab,boom跨平台性更好,而且更容易安装。 ##安装## `go get github.com/rakyll/boom` ##使用## ``` Usage: boom [options...] Options: -n Number of requests to run. -c Number of requests to run concurrently. Total number of requests cannot be smaller than the concurency level. -q Rate...阅读全文

开源项目 2014-10-31 07:42:35 rakyll

在 Golang 中尝试简洁架构

>(独立性,可测试性的和简洁性) 在阅读了 Bob 叔叔的 Clean Architecture Concept 之后,我尝试在 Golang 中实现它。我们公司也有使用相似的架构,[Kurio - App Berita Indonesia](https://kurio.co.id/), 但是结构有点不同。并不是太不同, 相同的概念,但是文件目录结构不同。 你可以在这里找到一个示例项目[https://github.com/bxcodec/go-clean-arch](https://github.com/bxcodec/go-clean-arch),这是一个 CRUD 管理示例文章 ![](https://raw.githubusercontent.com/studygolang/gctt...阅读全文

博文 2018-05-07 22:23:03 fredvence

HTTP 流量复制工具Gor

Gor 是用 Go 编写的简单 HTTP 流量复制工具,主要是为了从生产服务器返回流量到开发环境。使用 Gor 可以在实际的用户会话中测试代码。 Gor 基础工作流: ![Diagram](http://static.oschina.net/uploads/img/201507/21161205_ezre.jpg) 从端口捕获流量: # Run on servers where you want to catch traffic. You can run it on each `web` machine. sudo gor --input-raw :80 --output-tcp replay.local:28020 # Replay server (rep...阅读全文

开源项目 2015-08-02 14:24:59 buger