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

Golang log日志

golang控制台输出log和两种将log输出到文件的方法 func Logs() { /* O_RDWR 读写模式打开文件 O_APPEND 写操作时将数据附加到文件尾部 O_CREATE 如果不存在将创建一个新文件 */ logFile, err := os.OpenFile("./golang.log", os.O_RDWR | os.O_CREATE | os.O_APPEND, 0766) if err != nil { panic(err.Error()) } else { // 控制台打印log log.Println([]string{"你好", "golang日志"}) // 方法一,将文件设置为log输出的文件 log.SetOutput(logFile) // 输出前缀...阅读全文

博文 2020-03-27 01:32:47 是个懒人

也谈Go语言代码包分发

也谈Go语言代码包分发 十 25 bigwhite技术志 bitbucket, Blog, Blogger, Git, github, Go, Golang, Google, launchpad, Opensource, Programmer, svn, 博客, 开源, 版本控制, 程序员 1 Comment Go语言目前(截至1.0.2版本)尚不支持直接链接.a文件(这里的.a文件指的不是传统静态共享库,而是对golang的非main包build后的产物)。这样一来Go的第三方库包或组织内部的公共代码库包只能以源码的形式分发了。 Go提供了get命令用于获取他人分发的代码包。我们通过get命令既可以获取一些知名代码托管站点上的代码,也可以获取组织内部版本控制服务器上的公共代码。 Go ge...阅读全文

博文 2014-11-30 21:24:31 bigwhite

打造容器工作流的云原生平台 Cyclone-caicloud

![image](https://static.oschina.net/uploads/space/2016/1108/174047_xW7k_2894582.jpeg) Cyclone是一个打造容器工作流的云原生持续集成持续发布平台。 Cyclone主要致力于将代码从本地开发环境用任意容器引擎封装搬运到测试或者生产环境运行。Cyclone包括一下特性: * 容器原生: 每次构建、集成、部署均在容器中运行,完全解决运行时环境不一致的问题。 * 依赖关系: 定义依赖规则或简单的组件关系,确保执行顺序依照既定策略。 * 版本控制: 基于版本控制构建,检索镜像/流水线历史就像查询版本管理接口一样简单。 * 双向绑定: 记录每次CI/CD操作用于回答类似问题:“各容器镜像部署在集群哪个角...阅读全文

go语言总结第一章

需要注意的地方:1.整型数据的溢出; 一个int8型整数的最大值是127,如果在加上一就是-128.2.特殊类型:复数: 复数实际上由两个浮点数构成,一个表示实部,一个表示虚部。3.Go语言规定,函数,控制结构等的左大括号“{”必须和函数声明或控制结构放在同一行。如果将左大括号放在函数声明,控制语句的下一行,编译器会在左大括号的前方自动加一个大括号,可能导致程序异常。4.Go对多语言的支持。5.函数名首字母为小写,即为private 函数名首字母为大写,即为publi...阅读全文

也许 Go 开发可以更简单!Go += Package Versioning

> > 简评:对于Go来说一直以来依赖包的版本控制上没有一个好的方案,尽管社区诞生了不下十余个解决该问题的工具,但一直以来没有一个官方的支持。这个提案有望在Go > 的下个版本中看到官方的包版本控制了,去除了GOPATH依赖,同时还引入了module 的概念,真正意义上实现了重编译,可谓一次大的变更 是时候为 Go 添加包版本控制了! 更确切地说,我们需要把包版本的概念普及到Go 开发者和工具常用词汇中,以便在后续的相互沟通时能准确一致的表达哪些程序代码需要编译、运行和解析。同样,go 命令也需要准确的告诉开发者在编译中使用了哪个包的哪个版本。 版本控制可以让我们能够实现重编译。当我让你试用我程序最新版本时,我清楚的知道你不仅仅获取到的是我最新程序的代码,还包括我代码所依赖的相同版本的包,这...阅读全文

博文 2018-02-23 10:59:15 缪斯的情人

GO1.6语言学习笔记2-安装配置及代码组织

一、关于GO开发环境的安装和配置 在linux环境中安装编译好的go安装包,参考官方指南的步骤一步步走下来就可以了。需要注意的是以下几个环境变量的配置: GOROOT - go编译库的目录,类似于java的JAVA_HOME PATH - 注意把$GOROOT/bin添加上去 GOPATH - go工作目录,类似于eclipse的workspace 以下是具体的安装步骤和环境配置 $ wget https://storage.googleapis.com/golang/go1.6.linux-amd64.tar.gz $ tar -C /usr/local -xzf go1.6.linux-amd64.tar.gz 安装目录是/usr/local/go, 工作目录是/usr/local/go...阅读全文

博文 2016-03-21 04:00:10 andrew-xie

sspanel按月结算,修改go版代码【mysql api】

开头感谢sspanel的作者orvice大神!【转载请注明】 博主最近在搭建sspanel v3,中间坑确实挺多的,我回头开贴补充一下,ss服务器端我选择了orvice的shadowsocks-go mu版,因为作者是基于流量控制的机理,实际上奸商都是通过时间控制(233),所以我就寻思在作者的基础上加以修改,添加时间的限制。 注:此版本基于mysqlapi,webapi的修改方式令开贴 我在sspanel数据的user表中添加了两个字段:end_time int,到期日期(1970开始的时间戳);package_type int 套餐类型(无,月,三个月,半年,一年)。 具体可以根据自己实际需要情况修改。 首先,我们找到用户控制代码,在shadowsocks-go-mu\mu\mysql\...阅读全文

golang协程为什么比线程轻量?

先理解下进程、线程跟协程的概念: 进程    计算机的操作系统模式是一种多任务系统,操作系统接管了所有的硬件资源,并且本身运行在一个受硬件保护的级别。所有的应用程序都以进程(process)的方式运行在比操作系统权限更低的级别,每个进程都有自己独立的地址空间,使得进程之间的地址空间相互隔离。CPU由操作系统统一进行分配,每个进程根据进程的优先级的高低都有机会得到CPU,但是如果允许时间超出了一定的时间,操作系统会暂停该进程,将CPU资源分配给其他等待的进程。这种CPU的分配方式即所谓的抢占式,操作系统可以强制剥夺CPU资源并且分配给它认为目前最需要的进程。如果操作系统分配给每个进程的时间都很短,即CPU在多个进程间快速地切换,从而造成了很多进程都在同时运行的假象。 线程   线程有时被称为轻...阅读全文

博文 2019-07-07 17:32:41 one_zheng

​在线更改 MySQL 表结构的工具gh-ost

gh-ost 是 GitHub 开源的在线更改 MySQL 表结构的工具。它是可测试的,并提供了停止服务(pausability)、动态控制/重新配置、审计和许多运维操作。 **gh-ost 工作流程** ![image](https://static.oschina.net/uploads/space/2018/0504/101104_6nYg_2720166.png) **具有以下特性** 动态控制:即使迁移仍在运行,也可以交互式地重新配置 gh-ost 审计:可以查询 gh-ost 的状态。gh-ost 监听 unix socket 或 TCP …...阅读全文

Go实现网站访问量控制(滑动窗口算法,类似利用Redis List数据结构属性)

对于用户访问频率控制,比如每分钟,只允许访问多少次,方法很多。较为精准的就有比如“利用Redis实现访问控制频率”,还有就是RateLimiter(令牌桶算法)等。visitercontrol 介绍:https://github.com/yudeguang/visitercontrol ,可实现单位时间内,最多允许多少用户访问,可以以IP或者用户名等作为区分用户。与RateLimiter不同,visitercontrol可以实现较为精确的流量限制。对于访问控制,分为两种,一种是简单规则,一种是复杂规则,复杂规则其实就是多个简单规则的叠加,并同时作用在同一用户身上。主要核心函数如下:package visitercontrolimport "github.com/yudeguang/visit...阅读全文

博文 2019-02-13 21:03:30 yudeguang

Go Module 工程化实践(三):工程实践篇

3. 工程实践篇 如何实现企业内项目的Go Module工程化迁移? 以本人以往所在公司的实际现状作为样例,说明具体的Go Module工程化迁移过程。 原有Go项目均采用单一vendor的模式进行依赖控制,即企业内所有Go项目的第三方依赖均引用该统一的vendor仓库,由专人专组独立维护。这样做的好处就是依赖包不会随实际开发者的版本变更而变更,企业内部维护一套相对稳定的版本,缺点就是缺少了依赖包的版本控制。 向Go Module工程化迁移的目标就是保持本地版本的稳定的同时兼顾版本控制功能。 3.1 modules仓库 在非Go Module项目中,所有项目的依赖包,使用了vendor仓库,在迁移到Go Module模式下,同样需要相应的modules仓库, 来保证本地开发包依赖版本的稳定。...阅读全文

博文 2019-05-18 16:34:37 JayL

使用glide管理golang依赖包

glide可以每个项目单独管理包, 在项目根目录vendor文件夹下 安装glide go get github.com/Masterminds/glide go install github.com/Masterminds/glide cd $GOPATH/src/github.com/Masterminds/glide go build cp glide /usr/local/bin 基本命令 glide create|init 初始化项目并创建glide.yaml文件. glide get 获取单个包 --all-dependencies 会下载所有关联的依赖包 -s 删除所有版本控制,如.git -v 删除嵌套的vendor glide install 安装包 glide updat...阅读全文

博文 2017-08-28 04:04:54 寺院的研究僧

GO 学习笔记(四)struct 结构

1.struct结构,字段集合。 2.字段使用点号来访问。 3.字段可以通过指针来访问。 func main() { row1 := []User{ User{"man1", 22, true}, User{"man2", 23, true}, } fmt.Println(row1) // [{man1 22 true} {man2 23 true}] user := User{"man", 18, true} fmt.Println(user) fmt.Println(user.Name) // {man 18 true} // man user1 := &user user1.Name = "super_man" fmt.Println(user1.Name) // super_man ...阅读全文

博文 2015-10-07 17:00:01 best_raven

【环境篇】go mod--让人又爱又恨的包管理工具

为什么我们需要包管理 Python有pip,Nodejs有npm。是不是别的语言有包管理工具,所以go就要有?当然不是,来看看下面这段代码: import ( "github.com/TomatoMr/something" ) 这是go引用包的方式,很明显这是个第三方包,那么它在我们本机上具体是怎么被找到的呢?先说说还没有go mod的时候,它是这么找的: 项目根目录下有vendor,那就在vendor下找; vendor找不到包就往GOROOT、$GOPATH找; 以上都找不到,就去网上找,比如"github.com/TomatoMr/something",那就去GitHub上找。 找到包之后就会将它下载到GOPATH下,简单易懂。但这不足够,比如当我对这些包有了版本控制的需求,那这个包管...阅读全文

博文 2020-01-15 01:33:12 wx5e1abbbb0a5e5

【币码翁•技术】 最新 HTTP/2 漏洞曝光,我们该如何保护个人信息安全? ​

在这个数据、应用横行的时代,漏洞的出现早已屡见不鲜。在尚未造成大面积危害之前,我们该如何做好防御措施?或许从过往经常发生漏洞的事件中我们能够得到一些启发。近日,Netflix、Google 及 CERT/CC 披露了 HTTP/2 相关的 8 个安全漏洞,就连用来打造 Kubernetes 的 Go 语言也受到其中两个漏洞的波及,导致 Kubernetes 所有版本都受到相关漏洞影响,可能造成服务阻断。不过好在现在漏洞已修复,而我们在这个过程中又可以学习到什么? 几周前,Netflix公开了许多第三方HTTP/2实现中都存在的资源耗尽漏洞——由Jonathan Looney发现。该漏洞会直接影响Kubernetes中的HTTP/2端点(由net/http、x/net/http2等GoLang...阅读全文

博文 2019-09-30 16:33:49 aside section ._1OhGeD

【求推荐】请大神推荐稳定的golang开源TCP服务端框架,生产环境访问量每秒一两百,自己写的一个连接协程挂了整个程序也panic了

如题,小弟需要一个TCP服务端接受和处理请求,请求内容是解析redis持久化文件和删除现有Redis内存库的记录,每秒访问量在几十到一两百,自己写的程序在新连接到来开了新协程后容错没处理好,例如新协程打开文件出错整个程序也宕了,例如新协程建立redis连接出错整个程序也宕了。 请各位帮忙推荐有没有现成的框架?先谢谢...阅读全文

Docker 问题 集装箱 不断更新中

本文档已经更新到GitHub上: 查看地址 docker 问题列表 Error parsing reference: "golang:alpine as builder" is not a valid repository/tag: invalid reference format 解决措施? 查看docker的版本 docker --version Docker version 1.13.1, build 94f4240/1.13.1 需要升级docker的版本 具体升级过程,可以查看007---如何升级docker的版本.md文档 Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting ...阅读全文

博文 2018-09-18 18:34:41 故新_d4ef

Golang初级系列教程-控制结构-defer语句

Golang初级系列教程-控制结构-defer语句 defer 语句是用来在函数返回之前执行特定功能的关键字。有啥用处呢?在编程时,通常需要 allocate/block/lock 资源,但是当程序崩溃时,代码无法执行到 un-allocate/unblock/unlock 资源的地方,可能导致死锁等问题得发生。通过使用 defer 语句,可以保证无论什么情况发生,这些资源总是会被释放的。 在下面的代码中,假设要执行一系列的数据库操作:打开数据库连接,执行操作。之后假设,数据库操作出现异常,程序会立即返回。如果什么也不做,数据库连接将会一直持续,如果使用 defer 语句,可以保证在程序返回之前,数据库连接被正确的关闭。 package main import "fmt" func conn...阅读全文

博文 2016-04-29 15:00:03 DowntownGuy

网站访问速度提升200%以上,阿里云虚拟主机支持PHP最新版本

摘要: 日前,阿里云虚拟主机推出了新功能,支持PHP的最新版本 7.0和7.1,并支持用户在多个不同PHP版本之间切换。 PHP 作为最好的Web编程语言,最新版本已经更新到了7.0和7.1。阿里云作为国内虚拟主机的领头羊,为了给用户提供更先进、选择更多的建站环境选择,推出了PHP7.0和7.1的支持。 日前,阿里云虚拟主机推出了新功能,支持PHP的最新版本 7.0和7.1,并支持用户在多个不同PHP版本之间切换。 PHP 作为最好的Web编程语言,最新版本已经更新到了7.0和7.1。阿里云作为国内虚拟主机的领头羊,为了给用户提供更先进、选择更多的建站环境选择,推出了PHP7.0和7.1的支持。 目前,国内绝大多数虚拟主机服务商目前支持的PHP最新版本还停留在PHP 5时代...阅读全文

Go 控制结构

在 Go 中只有很少的几个控制结构 。这里没有 do 或者 while 循环,只有 for。有(灵活的) switch 语句和 if,而 switch 接受像 for 那样可选的初始化语句。还有叫做类型选择和多路通讯转接器的 select。同 C 相比语法有所不同:无需圆括号,而语句体必须总是包含在大括号内。 1、if-else Go 中的 if 和 C 语言中的 if 很相似,区别主要有三点: 执行体必须要有大括号,且左大括号必须和 if(或 else) 在同一行即使只有一条语句; 条件语句不需要圆括号; 条件语句中可以包含初始化语句,通常用于设置一个(局部)遍量。 if x > 0 { // 左括号必须在同一行 return y } else { return x } if f, err...阅读全文

博文 2016-04-16 14:00:02 abc123man

golang学习笔记8:控制结构

if-else 结构if condition1 { // do something}else if condition2 { // do something else}else { // catch-all or default}关键字 if 和 else 之后的左大括号 { 必须和关键字在同一行,如果你使用了 else-if 结构,则前段代码块的右大括号 } 必须和 else-if 关键字在同一行。这两条规则都是被编译器强制规定的。多返回值函数func mySqrt(f float64)(v float64, okbool){iff <0 { return } // error casereturn math.Sqrt(f),true}func main(){t, ok := mySqrt...阅读全文

博文 2018-10-21 00:34:39 编程老司机

golang控制台字体的不同显示

编码含义 前景 背景 颜色 30 40 黑色 31 41 红色 32 42 绿色 33 43 黄色 34 44 蓝色 35 45 紫红色 36 46 青蓝色 37 47 白色 编码 含义 0 终端默认设置 1 高亮显示 4 使用下划线 5 闪烁 7 反白显示 8 不可见 举例 fmt.Printf("\x1b[42m%s\x1b[0m>\n", "aaa") // 使用分号组合 fmt.Printf("\x1b[4;42m%s\x1b[0m>\n", "aaa"...阅读全文

博文 2018-12-26 12:34:42 __simple

国内高防虚拟主机怎样判断好坏?

了解高防虚拟主机的人都知道,高防虚拟主机与普通的虚拟主机大不相同,它属于防御性的虚拟主机,能很好防御网络中的DDoS等流量攻击,服务器虚拟化不断发展,虚拟主机更容易受网络中的DDoS攻击,从而促使消费者偏向高防虚拟主机。 而高防虚拟主机的稳定性对网站非常重要,企业在建站时对高防虚拟主机选择要注意。那么怎样去辨别国内高防虚拟主机的好坏呢? 服务器放置的虚拟主机数量 国内专业的虚拟主机提供商都有严格的规定,每台服务器上有多少台高防虚拟主机才能更大限度的保证客户的访问速度。不排除一些小服务商为赚钱,在同一台服务器上放N多高防虚拟主机,导致用户越多访问速度越慢,所以客户在购买时可选择一些大品牌的高防虚拟供应商。 服务器稳定性 虽说高防虚拟主机防御性强,但不代表稳定,普通...阅读全文

sspanel按月结算,修改go版代码【mysql api】

开头感谢sspanel的作者orvice大神!【转载请注明】 博主最近在搭建sspanel v3,中间坑确实挺多的,我回头开贴补充一下,ss服务器端我选择了orvice的shadowsocks-go mu版,因为作者是基于流量控制的机理,实际上奸商都是通过时间控制(233),所以我就寻思在作者的基础上加以修改,添加时间的限制。 注:此版本基于mysqlapi,webapi的修改方式令开贴 我在sspanel数据的user表中添加了两个字段:end_time int,到期日期(1970开始的时间戳);package_type int 套餐类型(无,月,三个月,半年,一年)。 具体可以根据自己实际需要情况修改。 首先,我们找到用户控制代码,在shadowsocks-go-mu\mu\mysql\...阅读全文

【Golog】学习go

缘起 在写A new way to cpp的时候我想用数据库来引入 I/O模型,并发,数据结构的概念。发现我很尴尬的不知道从何起笔。找遍互联网的资料,知乎大佬上来就是大三作业做过数据库,高屋建瓴的说这说那,太不接地气。 恰好此时,我发现了TiDB发起了一个Talent Plan的项目,可以选择学习路线。我就选择了这个项目。 然后发现预备知识有go语言。那么这个是我第一次接触的语言我想知道我一宿能走到哪一步。毕竟我学习过编译原理,也学习了MIT6.001 SICP,所以这次我想直接站在词法分析到代码生成的角度考虑这个go语言。想想就兴奋的睡不着觉。 现在是2020/5/1-0:27。反正这次春招也是0 offer,不如学个习放松一下。给大脑来个马杀鸡 目录 练习题 练习 基础 包 变量 方法(...阅读全文

博文 2020-05-05 17:32:43 石渊友

如何快速让你的网站被收录

做网站的人最重要的就是让自己的网站被很快的收录。大部分人需要大概1个月作用才会被收了,但是有的几个小时就收录,甚至十多分钟就可以,是不是很神奇。这些是很有技巧性的。下面说下简单的方法1,去搜索引擎提交自己的域名。2、申请一些分类目录网站收录,大概几分钟就可以申请几个。但也不要太多。3、去搜外,A5,落伍者论坛等发帖,留自己的链接。4,交换几个友情了链接。5、购买几个高质量的友情链接。做到上面这几点,最重要的还是你的网站主题和内容要健康积极,千万别复制网上的文章,就算复制也要稍微改下,不然搜索引擎会视为垃圾站点,没有原创内容,要么收录很迟要么完全不收了。现在不是有一种外链工具吗,可以批量的发出几千条外链。我觉得新站最好别这样做,这种外链没有什么意义,他的原理很简单,就是去各种有搜索功能的网站不...阅读全文

关于结构化并发的笔记 —— Go 语言中有害的声明语句

## 前言 每一个并发的 API 背后的代码都需要允许并发运行的,以下是使用不同 API 的例子: ``` go myfunc(); // Golang pthread_create(&thread_id, NULL, &myfunc); /* C with POSIX threads */ spawn(modulename, myfuncname, []) % Erlang threading.Thread(target=myfunc).start() # Python with threads asyncio.create_task(myfunc()) # Python with asyncio ``` 在不同的符号和术语中有许多变体,但语义是一样的。上面的例子是以并发的方式运行 `my...阅读全文

博文 2018-07-09 09:30:40 lightfish-zhang

golang 自定义log日志

golang 自定义log日志 func TLog(){ dir, _ := filepath.Abs(filepath.Dir("")) logFileNmae := time.Now().Format("20060102")+".log" logFileAllPath := dir+"/log/"+logFileNmae _,err :=os.Stat(logFileAllPath) var f *os.File if err!=nil{ f, _=os.Create(logFileAllPath) }else{ //如果存在文件则 追加log f ,_= os.OpenFile(logFileAllPath,os.O_WRONLY|os.O_CREATE|os.O_APPEND, 06...阅读全文

博文 2019-09-29 14:32:55 aside section ._1OhGeD

sspanel按月结算,修改go版代码【mysql api】

开头感谢sspanel的作者orvice大神!【转载请注明】 博主最近在搭建sspanel v3,中间坑确实挺多的,我回头开贴补充一下,ss服务器端我选择了orvice的shadowsocks-go mu版,因为作者是基于流量控制的机理,实际上奸商都是通过时间控制(233),所以我就寻思在作者的基础上加以修改,添加时间的限制。 注:此版本基于mysqlapi,webapi的修改方式令开贴 我在sspanel数据的user表中添加了两个字段:end_time int,到期日期(1970开始的时间戳);package_type int 套餐类型(无,月,三个月,半年,一年)。 具体可以根据自己实际需要情况修改。 首先,我们找到用户控制代码,在shadowsocks-go-mu\mu\mysql\...阅读全文

也许 Go 开发可以更简单!Go += Package Versioning

简评:对于Go来说一直以来依赖包的版本控制上没有一个好的方案,尽管社区诞生了不下十余个解决该问题的工具,但一直以来没有一个官方的支持。这个提案有望在Go的下个版本中看到官方的包版本控制了,去除了GOPATH依赖,同时还引入了module 的概念,真正意义上实现了重编译,可谓一次大的变更编译:缪斯的情人 是时候为 Go 添加包版本控制了! 更确切地说,我们需要把包版本的概念普及到Go 开发者和工具常用词汇中,以便在后续的相互沟通时能准确一致的表达哪些程序代码需要编译、运行和解析。同样,go 命令也需要准确的告诉开发者在编译中使用了哪个包的哪个版本。 版本控制可以让我们能够实现重编译。当我让你试用我程序最新版本时,我清楚的知道你不仅仅获取到的是我最新程序的代码,还包括我代码所依赖的相同版本的包,...阅读全文

博文 2018-02-23 11:34:39 缪斯的情人

【译】The Clean Architecture

Robert C. Martin (Uncle Bob) 原文:https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html译:时序 在过去几年我们看到关于系统架构的很多想法。这些包括: Alistair Cockburn的六边形架构(也叫做端口与适配器),Steve Freeman, 和 Nat Pryce在他们精彩的著作Growing Object Oriented Software(http://www.amazon.com/Growing-Object-Oriented-Software-Guided-Tests/dp/0321503627)采用。 Jeffrey Palermo的Onion ...阅读全文

博文 2019-04-27 16:23:47 时序

[Go] --- 控制结构

Email : hahayacoder@gmail.com 1 Go语言中常用的控制结构有:if语句、switch语句和for循环 2 if语句和C语言很类似,但是判断条件没有圆括号括起来,必须有大括号 //if var value int = 2 if value%2 == 0 { fmt.Printf("%d是偶数\n",value) } //if...else if value%2 == 0 { fmt.Printf("%d是偶数\n",value) } else { fmt.Printf("%d是奇数\n",value) } //if多分支 if value < 0 { fmt.Printf("%d是负数\n",value) } else if value == 0 { fmt.Pr...阅读全文

博文 2015-06-17 23:08:10 qiurisuixiang

GO 依赖管理工具go Modules(官方推荐)

以前写过一篇关于go管理依赖包工具 dep的文章,当时认为dep将会成为官方依赖工具,现在看来是自己图样图斯内幕破了,正如官方一直提到dep是“official experiment”官方实验项目的那样,随着go modules 在go1.11版推出,go1.12版功能不断改进,再到go1.13版完善优化,正式扶正。预计dep将来也只能定格在“official experiment”了。 Go Modules有哪些特点: Go Modules是官方正式推出的包依赖管理项目,由Russ Cox (即Go 现在的掌舵人)推动,dep是“official experiment”仅此而已。 Go modules 出现的目的之一就是为了解决 GOPATH 的问题,也就相当于是抛弃 GOPATH 了。以...阅读全文

博文 2019-09-30 18:02:39 guyan0319

Golang学习笔记:体验Go的并发编程(二)

在Go指南中,最后一节的练习是一个WEB爬虫。刚开始看目录以为真的是要写一个爬虫,直到仔细阅读了代码才发现,只是让利用channel和mutex模拟一个爬虫的代码。 初始状态如下 package main import ( "fmt" ) type Fetcher interface { // Fetch 返回 URL 的 body 内容,并且将在这个页面上找到的 URL 放到一个 slice 中。 Fetch(url string) (body string, urls []string, err error) } // Crawl 使用 fetcher 从某个 URL 开始递归的爬取页面,直到达到最大深度。 func Crawl(url string, depth int, fetche...阅读全文

博文 2018-01-08 20:33:04 Coderztf

golang中等待所有goroutine执行完成.

golang中,创建一个channel并开始执行后便脱离了主程序控制,那么,类似于其他语言中, 多线程中的每个线程join到主线程,golang中 如何等待所有的 goroutine 都执行完毕? 查了下大概这个样子. 用 channel 进行同步 func main() { ch := make(chan int, 2) go func() { for i := 0; i < 10; i++ { time.Sleep(1 * time.Second) fmt.Println("go routine1", i) } ch <- 1 }() go func() { for i := 0; i < 10; i++ { time.Sleep(1 * time.Second) fmt.Println...阅读全文

博文 2019-06-17 13:32:40 trump2018

golang利用oci8库访问Oracle数据库

golang利用oci8库访问Oracle数据库例子。 package main import ( "fmt" "log" "database/sql" _ "github.com/mattn/go-oci8" ) func sqlExec(db *sql.DB, sqlStmt string) error { res, err := db.Exec(sqlStmt) if err != nil { return err } num, err := res.RowsAffected() if err != nil { return err } log.Printf("SQL Execute success rows affected %d\n", num) return nil } func...阅读全文

博文 2019-01-19 12:34:43 CodingCode

也许 Go 开发可以更简单!

价值 | 思考 | 共鸣简评:对于 Go 来说一直以来依赖包的版本控制上没有一个好的方案,尽管社区诞生了不下十余个解决该问题的工具,但一直以来没有一个官方的支持。这个提案有望在 Go 的下个版本中看到官方的包版本控制了,去除了 GOPATH 依赖,同时还引入了 module 的概念,真正意义上实现了重编译,可谓一次大的变更 是时候为 Go 添加包版本控制了!更确切地说,我们需要把包版本的概念普及到 Go 开发者和工具常用词汇中,以便在后续的相互沟通时能准确一致的表达哪些程序代码需要编译、运行和解析。同样,go 命令也需要准确的告诉开发者在编译中使用了哪个包的哪个版本。版本控制可以让我们能够实现重编译。当我让你试用我程序最新版本时,我清楚的知道你不仅仅获取到的是我最新程序的代码,还包括我代码所...阅读全文

博文 2019-02-11 15:31:04 IaC743nj0b

区块链应用于物联网:一种应用于物联网的,可扩展访问管理的体系结构

Title:区块链应用于物联网:一种应用于物联网的,可扩展访问管理的体系结构 Abstract:物联网正在从它的婴儿期走出去,进入完全的成熟期,并且它正在使自己成为未来互联网的一员。对于部署在全球数十亿的设备的管理能力,是其中一个技术挑战。虽然物联网中已经出现访问管理技术,但是这些技术都基于集中式框架,这种框架引进了一些新的全球管理设备的技术限制。在这篇论文中,我们提出了在物联网中对于仲裁角色(仲裁规则?)和权限的一个体系结构(新框架)。这个新体系结构是一个针对物联网的完全分布式的访问控制系统,它基于区块链技术。这个体系结构被一个概念实现的验证所支持(?)并且在现实的物联网场景中被评估。结果显示,区块链技术可以在特定的可扩展物联网场景中被用作访问管理技术。 Index Terms:访问控制,...阅读全文

博文 2019-02-08 18:47:28 1500250103

使用文件对象读目录出错了。。。

```go package main import ( "os" "fmt" ) func main(){ f,_ := os.OpenFile("hello.txt",os.O_RDWR|os.O_CREATE|os.O_APPEND, 0777) names,err := f.Readdirnames(2) fmt.Println(err.Error()) for name := range names{ fmt.Println(name) } } ``` 控制台的错误信息说The system cannot find the path specified.(找不到指定的路径) 是不是Readdirnames方法的使用有问...阅读全文

Bootstrap显示代码的三种效果

代码(一) 本节内容相对来说比较简单,一般在个人博客上使用的较为频繁,用于显示代码的风格。在Bootstrap主要提供了三种代码风格: 1、使用<code></code>来显示单行内联代码 2、使用<pre></pre>来显示多行块代码 3、使用<kbd></kbd>来显示用户输入代码 预编译版本的Bootstrap将代码的样式单独提取出来: 1、LESS版本,请查阅code.less文件 2、Sass版本,请查阅_code.scss文件 编译出来的CSS代码请查阅bootstrap.css文件第688行~第730行,由于代码太长,此处不一一列举。 在使用代码时,用...阅读全文

Golang learning 变量

变量声明 (隐式转换,强制类型) var a int 默认值0 var b string 默认值”“(控制符) var c = 0 强制类型int var b = "w" 强制类型string var e int = 1 指定类型int var f string = "w" 指定类型string a := 0 := 声明方式 a,b := 0 变量声明未使用为报错,防止随意声明无用变量,规范代码。 常量声明 const a int 错误,必须完成表达式(const declaration cannot have type without expression) const a int = 0 正确 const c = 0 const b string = c 错误 指定string类型,无法...阅读全文

博文 2019-05-10 19:35:11 wangyongyue

cgo 之 go 访问c 的数据 - int

以int 为例子. 适合int系列, float double . 不适用于字符串. ``` package main //#include //static int m; //int* get_m_addr(){return &m;} //void show_m(){printf("m=%d\n",m);} //void set_m(void *p,int x) {*(int*)p = x;} import "C" import "unsafe" func main() { t := C.get_m_addr() *t = 5 C.show_m(); x := 100 *t = C.int(x) C.show_m() y := 200 C.set_m(unsafe.Po...阅读全文

博文 2019-06-11 22:45:05 wzy2687

兄弟连区块链技术培训分享Go语言笔记-控制流

Go语言作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等;网络编程方面,Go语言广泛应用于Web应用、API应用、下载应用等;除此之外,Go语言还可用于内存数据库和云平台领域,目前国外很多云平台都是采用Go开发。 兄弟连Go语言+区块链培训课程共计22周学习时长,划分为9个学习阶段,即区块链主流语言-Go语言开发实战、区块链后端技术体系-Go语言高并发和服务器开发、Go开发区块链公链(区块链密码学、分布式编程、共识算法、基本概念,Golan公链开发)、eth与智能合约与DAPP开发、区块链分布式应用开发、区块链系统框架开发-超级账本与区块链3.0EOS、Go与区块链面试强化和高级企业级项目实战。控制语句条件语句条件语句不需要使用括号将条件包含起来(...阅读全文

博文 2018-08-28 14:35:30 兄弟连区块链培训

sublime text 3安装golang环境

1、安装sublime text 3 ,目前gosublime不再支持sublime text2 2、安装之后打开sublime,安装package control,打开控制台control+`,在控制台输入: import urllib.request,os,hashlib; h='7183a2d3e96f11eeadd761d777e62404'+'e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_open...阅读全文

博文 2016-09-09 17:00:01 lyKanTianXia