Golang
文章平均质量分 76
QQ7650371
请大家多多关注。 这里记录我技术进步的点点滴滴。Q7650371
展开
-
Go安装、变量声明、strings模块
推荐书籍:Go语言学习资料指引https://github.com/unknwon/go-study-index 《Go Web 编程》https://github.com/astaxie/build-web-application-with-golang Go语言快速入门例子:https://github.com/jaywcjlove/golang-tutorial 单元测试断言模块testifyhttps://github.com/stretchr/testifygo语言time模块:原创 2020-11-14 10:48:14 · 185 阅读 · 0 评论 -
空数组和空对象
在实际项目中,往往需要事先声明一个空数组或者一个空对象,用于防止因为缺少数据而导致的报错。以php举例,声明一个空数组很简单, $array = [],就完成了数组变量$array的创建.而要想创建一个空对象,就不像数组那样那么简单了。我整理了一下php创建空对象的几种方法,比较正规的有以下两种:1: $object = new StdClass();2: $object = (object)[];还有几种比较另类的声明方法,虽然也能用,但却显得多余了一些1: class object {}; .原创 2020-11-14 09:26:04 · 752 阅读 · 0 评论 -
Dubbo-go 源码笔记(二)客户端调用过程
导读:有了上一篇文章《Dubbo-go 源码笔记(一)Server 端开启服务过程》的铺垫,可以类比客户端启动于服务端的启动过程。其中最大的区别是服务端通过 zk 注册服务,发布自己的ivkURL并订阅事件开启监听;而客户应该是通过zk注册组件,拿到需要调用的serviceURL,更新invoker并重写用户的RPCService,从而实现对远程过程调用细节的封装。配置文件和客户端源代码1. client 配置文件helloworld 提供的 demo:profiles/client.yaml。原创 2020-11-14 09:13:55 · 179 阅读 · 0 评论 -
一文了解 Go 并发模型
今天我们来了解一下 Go 语言的协程并发机制,这也可能是 Go 语言最为吸引人的特性了,了解它的原理和底层机制对于掌握 Go 语言大有裨益,话不多说开始吧!并发和并行并发和并行都是为了充分利用 CPU 多核计算资源所提出来的概念,相信我们或多或少都对二者的概念有所了解: 并发指的是在同一时间段内,多条指令在 CPU 上同时执行; 并行指的是在同一时刻内,多条指令在 CPU 上同时执行。 并发程序并不要求 CPU 具备多核计算的能力。在同一时间段内,多个线程会被分..原创 2020-11-14 09:08:08 · 284 阅读 · 0 评论 -
golang HTTP cookie 登陆百度
package main//QQ29295842 欢迎大家技术交流import ( "fmt" "io/ioutil" "net/http" "net/http/cookiejar" // "os" "net/url" "time")func main() { //Init jar j, _ := cookiejar.New(nil) // Create cli原创 2017-09-01 09:20:24 · 2007 阅读 · 0 评论 -
代码记录下 拼图改成TAB页
{{template "index-header" .}} $(document).ready(function () { //$("#Server_name").val("Apache/2.4.4"); $("select[name='add_form']").change(function () { var selecte原创 2017-09-07 10:21:34 · 1437 阅读 · 0 评论 -
golang网站流量统计 中 消息队列+多线程+orm+sql 存库
```package main//golang网站流量统计 中 消息队列+多线程+orm+sql 存库//QQ:29295842 欢迎技术交流//http://blog.csdn.net/webxscan//里面包含了数据库 整个工程GIT有下载//github https://github.com/webxscan/golang_tj2//bee api原创 2017-08-26 11:38:14 · 839 阅读 · 0 评论 -
beego ORM配置及使用实例
转载请注明来源-作者@loongshawn:http://blog.csdn.net/loongshawn/article/details/54973203,建议读者阅读原文,确保获得完整的信息1、ORM配置package mainimport ( "fmt" "github.com/astaxie/beego/orm" _ "github.com/go-sql转载 2017-08-25 17:54:39 · 2018 阅读 · 0 评论 -
golang web流量统计 上
#golang web流量统计 上BLOG: http://blog.csdn.net/webxscan/BY:斗转星移 QQ:29295842 自己做流量统计当你网站访问量过大时 第3方统计系统就不愿意了,这时就需要自己来设计个流量统计了。有技术交流的可以加我。package main//golang网站流量统计 上//QQ:29295842//ht原创 2017-08-25 10:00:50 · 1899 阅读 · 0 评论 -
golang 版本 百度,360,sogou,bing,google 网站收录量批量 查询
package main//golang 版本 百度,360,sogou,bing,google 网站收录量批量 查询//qq:29295842 欢迎技术交流import ( "Public_file" "fmt" "regexp" //"strings" //"http_get_post" "net/url" "strings" "time" "github.原创 2017-09-01 16:13:30 · 5317 阅读 · 0 评论 -
Golang 字符串拼装方式性能对比
Go语言中字符串的拼装方法很多,那么问题来了,到底哪家性能好?下面代码,分别比较了 fmt.Sprintf,string +,strings.Join,bytes.Buffer,方法是循环若干次比较总时间。在VMWare下的Ubuntu 14.04下运行的结果如下,仅供参考:fmt.Sprintf 和 strings.Join 速度相当string + 比上述二原创 2017-09-28 09:33:59 · 1734 阅读 · 0 评论 -
golang 获取当前路径和上一级父路径(目录)
package main//QQ:29295842import ( "fmt" "log" "os" "path/filepath" "strings")func substr(s string, pos, length int) string { runes := []rune(s) l := pos + length if l > len(runes) { l原创 2017-09-21 09:40:11 · 5300 阅读 · 0 评论 -
go语言生成uuid
操作系统: CentOS 6.9_x64go语言版本: 1.8.3问题描述golang没有提供生成uuid的接口,但开发中确实需要uuid。这里把看到的代码记录下,也方便我以后查阅。解决方案示例代码如下:package mainimport ( "fmt" "sync/atomic" "time")type UUID [16]byte原创 2018-01-08 08:30:22 · 5694 阅读 · 0 评论 -
PHP调用Go服务的正确方式 - Unix Domain Sockets
问题可能是由于经验太少,工作中经常会遇到问题,探究和解决问题的过程总想记录一下,所以我写博客经常是问题驱动,首先介绍一下今天要解决的问题:服务耦合我们在开发过程中可能会遇到这样的情况:进程依赖于某服务,所以把服务耦合在进程代码中;服务初始化耗时长,拖慢了进程启动时间;服务运行要占用大量内存,多进程时内存损耗严重。如我上篇文章 小时到分钟原创 2018-01-08 08:31:50 · 435 阅读 · 0 评论 -
编写地道的Go代码
最地道的Go代码就是Go的标准库的代码,有空的时候可以多看看Google的工程师是如何实现的。1. 注释可以通过/* ... */或者//增加注释, //之后应该有个空格如果想在每个文件的头部加上注释,需要在版权注释和Package前面加一个空行,否则版权注释会作为package的注释// Copyright 2009 The Go Authors. All rights rese原创 2018-01-08 08:33:34 · 303 阅读 · 0 评论 -
Gotorch - 多机定时任务管理系统
前言最近在学习 Go 语言,遵循着 “学一门语言最好的方式是使用它” 的理念,想着用 Go 来实现些什么,刚好工作中一直有一个比较让我烦恼的问题,于是用 Go 解决一下,即使不在生产环境使用,也可以作为 Go 语言学习的一种方式。先介绍下问题:组内有十来台机器,上面用 cron 分别定时执行着一些脚本和 shell 命令,一开始任务少的时候,大家都记得哪台机器执行着什么,随着时原创 2018-01-29 22:37:13 · 376 阅读 · 0 评论 -
golang获取硬盘分区剩余空间大小
需求是这样的,想远程执行这个命令,返回各个硬盘分区的剩余空间的大小,当然,剩余空间太小可能就要处理了。01package main02 03import (04 "fmt"原创 2017-06-04 09:41:59 · 6497 阅读 · 0 评论 -
SSDB Redis替代品
SSDB是一个快速的用来存储十亿级别列表数据的开源 NoSQL 数据库。项目地址:https://github.com/ideawu/ssdbhttp://ssdb.io/特性替代 Redis 数据库, Redis 的 100 倍容量LevelDB 网络支持, 使用 C/C++ 开发Redis API 兼容, 支持 Redis 客户端适合存储集合数据, 如 li原创 2017-06-06 11:38:12 · 656 阅读 · 0 评论 -
golang TIME 时间获取时间转换
func Get_time()string{ //获取当前时间QQ29295842 // now := time.Now() // year, mon, day := now.UTC().Date() // hour, min, sec := now.UTC().Clock() // zone, _ := now.UT原创 2017-04-21 11:59:07 · 8284 阅读 · 0 评论 -
Golang简单写文件操作的四种方法
转载别人的代码http://www.android100.org/html/201407/28/47230.htmlpackage mainimport ( "bufio" //缓存IO "fmt" "io/ioutil" //io 工具包 "io" "os")func check(e error) { if e != nil {转载 2017-01-26 02:09:19 · 3615 阅读 · 0 评论 -
Golang sqlite3
//QQ29295842package mainimport ( "database/sql" "fmt" "log" _ "github.com/mattn/go-sqlite3" // sqlite3 dirver)// People - database fieldstype People struct {原创 2017-01-27 04:28:10 · 1482 阅读 · 0 评论 -
Golang sqlite3
//QQ29295842github.com/mattn/go-sqlite3"代码示例packagemainimport ( "database/sql" "fmt" _ "github.com/mattn/go-sqlite3" "log" "os")func main() { os.R转载 2017-01-27 04:29:27 · 855 阅读 · 0 评论 -
golang sqlite3 BY
//QQ29295842我的例子packagego_taskimport ( "database/sql" "fmt" "os" //"strings" "time" _ "github.com/mattn/go-sqlite3")type appContext struct { db *sql.DB原创 2017-01-27 04:31:14 · 1138 阅读 · 0 评论 -
go语言实现7大排序算法
package mainimport ( "fmt" "math/rand" "time" // "os" // "os/signal")const ( num = 100000 rangeNum = 100000)func main() { randSeed := rand.New(rand.NewSour转载 2017-03-29 15:21:28 · 430 阅读 · 0 评论 -
怎样计算大文件的MD5
package mainimport ( "crypto/md5" "fmt" "io/ioutil" "os" "path/filepath" "sort")// MD5All读取文件目录root下所有文件,并返回从文件路径到文件内容MD5值的映射。如果扫描目录// 出错或者任何操作失败,MD5All返回失败。func MD5All(转载 2017-03-29 16:36:48 · 1926 阅读 · 0 评论 -
字节转文件大小
packagemainimport ( "fmt" "reflect")//实现 try catch 例子func Try(fun func(), handler func(interface{})) { defer func() { if err := recover(); err != nil {原创 2017-03-13 18:49:30 · 293 阅读 · 0 评论 -
GoLang几种读文件方式的比较
GoLang提供了很多读文件的方式,一般来说常用的有三种。使用Read加上buffer,使用bufio库和ioutil 库。那他们的效率如何呢?用一个简单的程序来评测一下: Go代码 package main import( "fmt" "os" "flag" "io" "io/ioutil"转载 2017-03-13 18:58:51 · 1120 阅读 · 0 评论 -
测试golang中的多核多线程
"并发 (concurrency)" 和 "并行 ( parallelism)" 是不同的。在单个 CPU 核上,线程通过时间片或者让出控制权来实现任务切换,达到 "同时" 运⾏多个任务的⺫的,这就是所谓的并发。但实际上任何时刻都只有一个任务被执行,其他任务通过某种算法来排队。多核 CPU 可以让同⼀进程内的 "多个线程" 做到真正意义上的同时运,它们之间不需要排队 (依然会发生排队,因为线程数量原创 2017-03-14 08:31:01 · 666 阅读 · 0 评论 -
golang-goroutine与channel:高效的channel
golang有两个非常大的特性,那就是goruntime与channel,这两个特性直接将开发人员从并发和线程同步中解放了出来,使高并发和线程同步之间代码的编写变得异常简单,并且占用资源少,同步传输效率高。 资源占用方面,goroutine 会从4096字节的初始栈内存占用开始按需增长或缩减内存占用。同步传输效率方面,我曾经在松本行弘的《代码的未来》一书上看到一个简洁的例子(原创 2017-03-14 08:41:08 · 329 阅读 · 0 评论 -
golang channel的使用技巧
go的横空出世,让很多人眼前一亮,它的语法以简洁著称,并且它对多核并发的原生支持,让他在云计算和分布式领域展露头脚,它的核心围绕channel和goroutine展开。首先golang channel 分为有缓冲与无缓冲两种类型,很多人认为无缓冲channel单单只是 默认缓冲为1缓冲的channel,其实它们最大的区别是阻塞问题。如下c1:=make(chan int)转载 2017-03-14 09:00:15 · 712 阅读 · 0 评论 -
【Go语言】连接数据库SQLite、MySQL、Oracle - Mike_zh
本文目录 说明: go语言连接数据库不像Java那么方便,本文分别介绍了连接三种典型的数据库的驱动以及连接方法:小型,SQLite;中型,MySQL;大型,Oracle.1.Go连接SQLite 1_1.SQLite推荐驱动 https://github.com/mattn/go-sqlite31_2.SQLite连接示例代码 示例代码如下: package原创 2017-03-15 08:29:36 · 1416 阅读 · 0 评论 -
Golang操作数据库
基本概念 Open() – creates a DBClose() - closes the DBQuery() - 查询QueryRow() -查询行Exec() -执行操作,update,insert,deleteRow - A row is not a hash map, but an abstraction of a cursorNext()Scan()转载 2017-03-16 10:04:04 · 532 阅读 · 0 评论 -
golangphp--GO解析PHP源码并实现一个miniPHP服务器
golangPHPcgi GOphp–GO解析PHP源码并实现一个miniPHP服务起器byBLOG: http://blog.csdn.net/webxscan/ BY:斗转星移 QQ:29295842 软件目的实现一个本地PHP解析器,不用使用阿帕奇或者IIS。这样就可以实现很多自定义扩展。软件目前写了4天,还有很多不完美的地方还希望大家予以纠正。代码package mainimpor原创 2017-04-12 10:43:40 · 5761 阅读 · 0 评论 -
Golang操作数据库
基本概念Open() – creates a DBClose() - closes the DBQuery() - 查询QueryRow() -查询行Exec() -执行操作,update,insert,deleteRow - A row is not a hash map, but an abstraction of a cursorNext()Scan()注意:DB并不是指的一个c原创 2017-04-14 17:40:55 · 1552 阅读 · 0 评论 -
beego 如何自定error
我们在做 Web 开发的时候,经常会遇到页面调整和错误处理,beego 这这方面也进行了考虑,通过 Redirect 方法来进行跳转:func (this *AddController) Get() { this.Redirect("/", 302)}如何中止此次请求并抛出异常,beego 可以在控制器中这操作:func (this *MainController) Ge转载 2017-05-11 15:23:40 · 1470 阅读 · 0 评论 -
『Golang』在Golang中使用json
由于要开发一个小型的web应用,而web应用大部分都会使用json作为数据传输的格式,所以有了这篇文章。包引用import ( "encoding/json" "github.com/bitly/go-simplejson" // for json get)用于存放数据的结构体type MyData struct { Name string `转载 2017-02-07 23:57:01 · 457 阅读 · 0 评论