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

Go语言学习笔记9

5.Go语言流程控制方法 5.2 defer语句 defer 语句被用于预定对一个函数的调用。被 defer 语句调用的函数称为延迟函数。defer 语句只能出现在函数或方法的内部。 一条 defer 语句总是以关键字 defer 开始。在 defer 的右边还会有一条表达式语句,且它们之间要以空格分隔。例如: defer fmt.Println("The finishing touches.") 如上的表达式语句必须代表一个函数或方法的调用。但是像针对各种内建函数的那些调用表达式,因为它们并不能称为表达式语句,所以不允许出现在这里。同时这个位置出现的表达式语句是不能被圆括号括起来的。 defer 语句的执行时机总是在直接包含它的那个函数(简称外围函数)把流程控制权交还给它的调用方的前一刻,...阅读全文

博文 2016-08-09 14:00:02 u012855229

golang讲解(go语言)标准库分析之os(5)

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; Golang标准库 今天我们继续os包分析~~~木有废话~~ (1)os.Rename()这个函数的原型是func Rename(oldname, newname string) error,输入的是旧文件名,新文件名,然后返回一个error其实这个函数的真正实现用的syscall.Rename()然后通过MoveFile(from *uint16, to *uint16) (err error) = MoveFileW来重新命名这个我们讲syscall的时候再给大家说 [php] import ( "fmt" "os" ) func main() { err := os.Rename("1....阅读全文

博文 2017-02-09 18:38:49 widuu

Golang使用心得

Golang使用心得 转自:http://blog.jobbole.com/84554/ 13年上半年接触了Golang,对Golang十分喜爱。现在是2015年,离春节还有几天,从开始学习到现在的一年半时间里,前前后后也用Golang写了些代码,其中包括业余时间的,也有产品项目中的。一直有想法写点Golang相关的总结或者感想,决定还是在年前总结下吧。注明下:我只是Golang的喜好者,不是脑残粉,也无意去挑起什么语言之争。 特性少,语法简单。GO是崇尚极简主义的,提倡少即是多。这点在它的Spec上尤其凸显,一下午的时间绝对可以看完。GO的特性很少,很多GO的使用者都反馈,GO的关键字至少完全可以记在大脑里。同时它的语法极为简单,而且语义清晰。 部署方便。GO是一个强类型静态语言,可以...阅读全文

博文 2016-08-06 18:00:02 yueguanyun

golang中compress/bzip2

一、bzip2的简介 bzip2包实现bzip2的解压缩,bzip2是对单个文件进行压缩,可以先进行tar归档,然后进行压缩。 二、bzip2的使用 go标准库中提供了一个对bzip2压缩包进行读取的操作,但是并没有提供进行bzip2压缩操作。 package main import ( "compress/bzip2" "os" "log" "fmt" ) func main() { fz, err := os.Open("1.go.bz2") if err != nil { log.Fatal(err) } w := bzip2.NewReader(fz) buf := make([]byte, 1024 * 100) for { n, err := w.Read(buf) if n =...阅读全文

博文 2018-12-06 16:34:47 laijh

设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。

使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。​设计模式的类型共有 23 种设计模式。这些模式可以分为三大类:创建型模式(Creational Patterns)- 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。工厂模式(Factory Pattern)抽象工厂模式(Abstract Factory Pattern)单例模式(Singleton Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern)对象池模式 *(P...阅读全文

博文 2019-07-26 16:04:34 wyygxly

2019-08-07

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。mongodb特点它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:*面向集合存储,易存储对象类型的数据。模式自由。*支持动态查询。*支持完全索引,包含内部对象。*支持查询。*支持复制和故障恢复。*使用高效的...阅读全文

Golang web之http标准库简析

本文首先介绍使用http标准库搭建web服务,共三种方式,然后简析内部实现原理,最后对http的使用做出总结。阅读本文需要简单的go基础知识和web开发相关知识。 1.使用http搭建简单的web服务 1.1 单个handler形式 func main() { server := http.Server{ Addr: "127.0.0.1:8081", Handler: &helloHandler{}, } _ = server.ListenAndServe() } type helloHandler struct{} func (h *helloHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { _, _ = fmt.F...阅读全文

博文 2019-06-03 23:34:20 郁乎文

最近学go语言的小结

因为单位业务需要(据说是http://www.oschina.net/p/docker 这个方向),最近开始学go语言。google做这门语言的目的在于代替部分C/C++在服务器端开发,这门语言是以C为主干,模仿java,javascript及C++的基础上,做了些微创新。个人感觉就是强类型语言版的javascript++。 1、文件结构,和C/C++一样的主文件。主函数如main可以写在主文件前面,而全局变量及函数写在后面,C/C++这样做要专门的声明,这个功能php也有,不过应该是php4以后的事。 2、变量的作用域和javascript类似,因而很方便地实现了闭包。 3、模块及结构体的变量及函数没有显式声明public及private,而是第一个字母大写就是public,小写反之。模块...阅读全文

博文 2015-06-17 23:01:36 erlanp

一个学习爱好者,应该怎么学习golang

如何学习一门看似简单,比较深奥的golang语言 1.前期多练 多学习25个关键字 为什么golang语言的关键字比较少(相对于其他语言),看似很少。 但是相帮25个关键字灵活运用和理解,说明你已经是个老司机。我虽软说自己是个老司机,但是自己觉得自己还是差的远。 2.进入公司,通过业务,熟悉golang语言的一下用法。 特定的场景才会用到特定的知识 处理数据,并发处理会用到 chan ,go,sync...等 代码规整:易于查看,需要了解interface.为什么这么说。我觉得golang 中的interface特别灵活。善于借鉴其他语言的理解,去理解和设计golang的方式和方法。作为21世纪的新语言。有多强的生命力,看后期的发展吧。 其他的我就一一介绍了,如果有特定场景讨论。可以留言。我...阅读全文

15.Go语言标准库之log介绍

1.log 1.1使用Logger log包定义了Logger类型,该类型提供了一些格式化输出的方法。 本包也提供了一个预定义的"标准"logger,可以通过调用Print系列(Print|Printf|Println)、Fatal系列(Fatal|Fatalf|fatalln)和Panic系列(Panic|Panicf|PanicLn)来使用,比自行创建一个logger对象更容易使用。 例如:我们可以像下面的代码一样,直接通过log包来调用上岸提到的方法,默认它们会把日志信息大隐刀终端界面。 package main import ( "log" ) func main() { log.Println("这是一条很普通的日志。") v := "很普通的" log.Printf("这是一条%...阅读全文

博文 2020-02-07 01:33:11 DevOperater

golang之cgo---调用C/C++动态库函数

之前说过golang调用C代码的方式可以通过cgo或者是swig,而cgo是不能使用C++相关的东西的,比如标准库或者C++的面向对象特性。怎么办,将c++的功能函数封装成C接口,然后编译成动态库,或者是功能较为简单的可以直接嵌入到go源文件中。   cgo的使用是在linux平台上,在windows平台上可以配置交叉编译器。 动态库头文件:myfuns.h #pragma once #include #include #include #include void fun1(); void fun2(int a); int func3(void **b); // others 动态库名:myfuns.so...阅读全文

博文 2016-09-07 09:00:08 FreeApe

使用golang的标准库搭建网站--3.模板函数

和大多数语言的的模板语法类似:{{.Name | FuncName}} go本身自带了一些模板函数,我们现在来看一看如何自定义模板函数: 先来看一个函数声明: func (t *Template) Funcs(funcMap FuncMap) *Template Funcs函数就是用来创建我们模板函数的函数了,它需要一个FuncMap类型的参数,继续看手册 type FuncMap map[string]interface{} 官方文档里是这么解释的 FuncMap is the type of the map defining the mapping from names to functions. Each function must have either a single retur...阅读全文

博文 2017-01-07 07:00:41 这里好像没有人

2018-12-21晚间日记

天气:小雨 任务清单 验证go-swaager 使用cookie 转发 编写新用户系统的yaml 不同域名使用swagger 进行 cookie传递 习惯养成类:日更800+字 && writingTime >=1h 习惯养成类:单词 30个,复习优先,你的目的是为了记住单词,而不是看到更多的单词。 周目标·完成进度 golang 1K 众病之王---癌症治疗的认知升级(总结2000字+) 梁宁的产品思维30讲(写总结2000字+) 学有所得 烟草的发现: 今天听吴伯凡老师的认知方法论,里面写到烟草产生与美洲人在丛林中,燃烧烟草可以驱蚊,为了使烟草不至于熄灭,会经常吸一吸,不断的反复,就让人的大脑产生了对烟草的依赖性和某种快感,后来即便他们不在丛林中的时候,也会对这种气味产生一种不可遏制的欲...阅读全文

博文 2018-12-21 23:34:42 郭青耀

golang讲解(go语言)标准库分析之string开篇

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; 今天我们继续讲golang标准库的string这个包,我选定这个是看了下别的包真的需要这个功能所以我们来这个包,string包实现了简单的函数方法来操作字符串。其中的type Reader很简单,因为会返回一个*Reader这就用到我们前边讲的io了,废话不多说进入正题 (1)func Contains(s, substr string) bool这个函数是查找某个字符是否在这个字符串中存在,存在返回true [php] import ( "fmt" "strings" ) func main() { fmt.Println(strings.Contains("widuu", "wi")) /...阅读全文

博文 2017-02-09 18:40:36 widuu

Golang-import-introduce

本文主要讲解golang中import关键字的用法 import( "fmt" ) //然后在代码里面可以通过如下的方式调用 fmt.Println("hello world") 上面这个fmt是Go语言的标准库,他其实是去GOROOT下去加载该模块,当然Go的import还支持如下两种方式来加载自己写的模块: 相对路径import "./model" //当前文件同一目录的model目录,但是不建议这种方式import 绝对路径import "shorturl/model" //加载GOPATH/src/shorturl/model模块 上面展示了一些import常用的几种方式,但是还有一些特殊的import,让很多新手很费解,下面是三种导入包的使用 点操作: 有时候会看到如下的方式导入包...阅读全文

博文 2016-01-20 03:00:00 liujb

Go日志,打印源码文件名和行号造成的性能开销

日志中打印源码文件名和行号,是非常实用的功能,尤其是开发阶段的debug日志,可以快速通过日志找到对应的源码位置。 Go标准库中的package log也支持打印源码文件名和行号,打开方式是设置以下两个标志中的任意一个: Llongfile // full file name and line number: /a/b/c/d.go:23 Lshortfile // final file name element and line number: d.go:23. overrides Llongfile 标准库中所有的日志打印最后都要调用Output函数,再在里面调用runtime.Caller获取源码文件名和行号: // package log func (l *Logger) Outpu...阅读全文

博文 2020-05-31 14:32:46 就想叫yoko

Go语言_反射篇

Go语言的基本语法的使用已经在前几篇陆陆续续学完了,下面可能想写一些Go的标准库的使用了。 先是reflect库。 reflect库的godoc在http://golang.org/pkg/reflect/ Type和Value 首先,reflect包有两个数据类型我们必须知道,一个是Type,一个是Value。 Type就是定义的类型的一个数据类型,Value是值的类型 具体的Type和Value里面包含的方法就要看文档了: http://golang.org/pkg/reflect/ 这里我写了个程序来理解Type和Value: package main import( "fmt" "reflect" ) type MyStruct struct{ name string } func ...阅读全文

博文 2016-07-11 02:00:07 yjf512

Golang之命令行操作(第三章)

参考 简书说明系列 https://www.jianshu.com/c/bef4e958ecd6 视频教学系列 https://www.imooc.com/learn/1021 正文 进入到项目代码 main包的路径下执行 go install命令,会在 GOPATH/bin路径下面生成一个可执行文件,比如 coin.exe 然后通过 coin 命令 参数的形式执行 go代码,每次输入一次,都表示执行一次main方法(支持带参数的执行main方法),而不是启动一个进程持续监听 代码实现:依赖 flag和 os 类库,读取执行main方法的参数的个数和参数值 flag指向一个命令,os用来获取参数的值和个数 默认命令算一个参数 比如 coin addCoin 命令就是2个参数 func (cl...阅读全文

博文 2018-11-27 18:34:43 黄靠谱

Go 开发关键技术指南 | 敢问路在何方?(内含超全知识大图)

作者 | 杨成立(忘篱) 阿里巴巴高级技术专家 Go 开发关键技术指南文章目录: 为什么你要选择 Go? Go 面向失败编程 带着服务器编程金刚经走进 2020 年 敢问路在何方? Go 开发指南大图 Engineering 我觉得 Go 在工程上良好的支持,是 Go 能够在服务器领域有一席之地的重要原因。这里说的工程友好包括: gofmt 保证代码的基本一致,增加可读性,避免在争论不清楚的地方争论; 原生支持的 profiling,为性能调优和死锁问题提供了强大的工具支持; utest 和 coverage,持续集成,为项目的质量提供了良好的支撑; example 和注释,让接口定义更友好合理,让库的质量更高。 GOFMT 规范编码 之前有段时间,朋友圈霸屏的新闻是码农因为代码不规范问题枪...阅读全文

博文 2020-01-10 12:34:20 阿里巴巴云原生

MyBatis 为什么需要通用 Mapper ?

MyBatis 为什么需要通用 Mapper ? 在早期项目文档中有过类似主题的内容,但是最近我自己看文档的时候发现一个问题,文档虽然很详细,但是并不适合初次接触的人。为了方便第一次听说,第一次尝试的开发人员了解通用 Mapper,补充此文档。 一、通用 Mapper 的用途 ? 我个人最早用 MyBatis 时,先是完全手写,然后用上了 MyBatis 代码生成器(简称为 MBG) ,在使用 MBG 过程中,发现一个很麻烦的问题,如果数据库字段变化很频繁,就需要反复重新生成代码,并且由于 MBG 覆盖生成代码和追加方式生成 XML,导致每次重新生成都需要大量的比对修改。除了这个问题外,还有一个问题,仅仅基础的增删改查等方法,就已经产生了大量的 XML 内容,还没有添加一个自己手写的方法,代...阅读全文

博文 2018-10-15 13:44:39 Enjoyjava

自动算法转换 Pseudo

Pseudo利用一个算法/一个简单程序,然后在Python, JavaScript, C#, Go 和 Ruby 中生成为惯用代码。 Pseudo实现两层翻译:它采取目标 语言的语法 ,可以使用Y语言的本地标准库表达出X语言的标准库的方法/API。 应用实例: * generate code for the same task/algorithm in different languages (parser generators etc) * port a library/codebase * develop core logic in one language and use it in other language codebases * write a compil...阅读全文

golang 基础(7)条件语句

images.png 条件语句 if 语句 if true { fmt.Println("this is true) } func bounded(num int) int { if num > 100 { return 100 }else if num < 0 { return 0 }else{ return 0 } } if 的条件里不需要括号的 引入用于读取文件的io/ioutil标准库 func main() { const filename = "abc.txt" body, err := ioutil.ReadFile(filename) if err != nil{ fmt.Println(err) }else{ fmt.Printf("%s\n",body) } } iout...阅读全文

博文 2019-03-16 18:34:41 zidea

golang标准库之net/url包

完整的URL格式为: [scheme:][//[userinfo@]host][/]path[?query][#fragment] URL package main import ( "fmt" "net/url" ) func main() { urlString := "https://www.baidu.com/s?ie=UTF-8&wd=github#test" // func Parse(rawurl string) (url *URL, err error) // Parse函数解析rawurl为一个URL结构体,rawurl可以是绝对地址,也可以是相对地址。 u, err := url.Parse(urlString) if err != nil { return } fmt....阅读全文

(十四)golang unsafe.Pointer

golang 的指针 Go语言是个强类型语言。也就是说Go对类型要求严格,不同类型不能进行赋值操作。指针也是具有明确类型的对象,进行严格类型检查 package main import ( "fmt" ) func main() { u := string(32) i := int32(1) fmt.Println(&u, &i) // 打印出地址 p := &i // p 的类型是 *int32 p := &u // &u的类型是 *string,于 p 的类型不同,不能赋值 会报错 p := (*string)(&u) // 这种类型强制转换也是无效的 会报错 fmt.Println(p) } 针对刚刚的问题,我们可以采用 unsafe 标准库来解决。在官方的诠释中,有如下概述: 围绕 ...阅读全文

博文 2019-07-01 20:32:58 杰克慢

Go 语言压缩库合集 compress

compress 的目标是提供 Go 语言除了标准库以外的其它纯粹、流行的压缩算法合集。 这些包的**目标**如下: * 可维护性:代码保持良好的文档,良好的测试,可读性,易于维护,并且易于验证它符合正在实现的格式的规范 * 执行者:能够以 C 接口实现至少80%来压缩和解压缩 * 灵活:代码提供相对低级和精细的压缩流 **安装** 运行命令 `go get -u github.com/dsnet/compress` 要求 `Go1.5` 或更高版本的库才能构建。 **性能:** 相对于 Go1.5 中的标准库: BZip2 解压速度大约是 1.5x到3.0x DEFLATE 解压大约是 1.5x到1.8x 甚至更快 相对于规范的C实现: Brotli ...阅读全文

go语言载入json的一个坑

问题简介 go语言标准库汇总内置了对 json 文件的处理,非常方便,最近在写一个应用的时候,需要从 json 文件中载入 配置,由于是 go 新手,忽略一个细节,导致载入内容始终为空 代码演示 代码是最好的说明载体 package config type config struct{ a string `json:"a"` b string `json:"a"` } func Load(file string)(*config, error){ c = &config{} file, err := os.Open(file) if err != nil { //file open failed todo } jsonParser := json.NewDecoder(file) err =...阅读全文

博文 2017-07-04 16:04:59 luxixing

第 02 课:基础模板用法

在上一节课中,我们学习了如何使用 Go 语言编写 HTTP 服务器的 N 种写法。但是,总是响应固定的字符串对用户和开发者而言都会显得非常无趣。因此,这堂课我们来学习如何使用 Go 语言标准库的 [`text/template`](https://gowalker.org/text/template) 包来向客户端(即浏览器或终端)响应动态的内容。 ## 初识文本模板引擎 标准库中的 [`text/template`](https://gowalker.org/text/template) 包是 Go 语言内置的文本模板引擎,虽然在灵活性上不如其它语言中第三方框架自带的模板引擎(如 Django、Ruby on Rails 等等),但功能依旧十分强大。根据标准库给出的定义,它的主要特性如下:...阅读全文

博文 2019-11-09 09:47:04 Unknwon

go lang中的import

import 我们在写Go代码的时候经常用到import这个命令用来导入包文件,而我们经常看到的方式参考如下: import( "fmt" ) 然后我们代码里面可以通过如下的方式调用 fmt.Println("hello world") 上面这个fmt是Go语言的标准库,其实是去GOROOT环境变量指定目录下去加载该模块,当然Go的import还支持如下两种方式来加载自己写的模块: 1. 相对路径 import “./model” //当前文件同一目录的model目录,但是不建议这种方式来import 2. 绝对路径 import “shorturl/model”//加载gopath/src/shorturl/model模块 上面展示了一些import常用的几种方式,但是还有一些特殊的imp...阅读全文

博文 2015-06-17 23:08:19 rznice

在使用gorilla/sessions时遇到了个问题

![1.png](https://static.studygolang.com/171008/3d8e3d0742e3b22a648a285387e8d0bd.png) 我定义了一个结构体user,有id,username,password属性,我想把从数据库拿出来的user整个保存到session里面,以user的id作为key,现在我看到了session里面倒是有个map,是我取session的时候有问题吗?还是说我保存的时候有问题...阅读全文

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 和 Rust ---- RwLock 读写锁

读写锁顾名思义就是只允许单进程同时写,在数据没有被写的情况下允许多进程同时读,的锁。 rust 里和 Mutex 类似,使用RAII(Resource Acquisition Is Initialization)来保证在值被Drop的时候自动解锁。而 go 里依然是需要手动解锁。 举个改写自Go标准库测试的栗子 import ( . "sync" "sync/atomic" ) const NumIterations = 1000 const NumReaders = 1000 func writer(rwm *RWMutex, activity *int32, cdone chan bool) { for i := 0; i < NumIterations; i++ { rwm.Lock(...阅读全文

博文 2020-03-06 11:33:22 Tericoder

关于收集,标准化和集中化处理Golang日志的一些建议

依赖分布式系统的公司组织和团队经常使用Go语言编写其应用程序,以利用Go语言诸如通道和goroutine之类的并发功能。如果你负责研发或运维Go应用程序,则考虑周全的日志记录策略可以帮助你了解用户行为,定位错误并监控应用程序的性能。 这篇文章将展开聊一些用于管理Go日志的工具和技术。我们将首先考虑要使用哪种日志记录包来满足各种记录要求。然后会介绍一些使日志更易于搜索和可靠,减少日志资源占用以及使日志消息标准化的技术。 日志包的选择 Go标准库的日志库非常简单,仅仅提供了print,panic和fatal三个函数对于更精细的日志级别、日志文件分割以及日志分发等方面并没有提供支持. 所以催生了很多第三方的日志库,流行的日志框架包括logrus、zap、glog等。我们先来大致看下这些日志库的特点...阅读全文

博文 2020-03-25 12:32:43 KevinYan_a990

go标准库(fmt)学习

go标准库(fmt)学习 每种编程语言都有自己的格式化输入和输出。c语言是通过标准输入输出库(stdio),python语言是语言的一部分(print)。go语言是通过库(fmt)来实现格式化输入输出的功能。 1 打印 1.1 打印格式 格式符号 描述 %v 打印默认格式 %+v 当打印结构体时,会添加字段名 %#v go语法展示数据 %T go语法展示数据的类型 %% 打印% 测试数据: type Person struct { Name string age int } var SimpleData = map[string]interface{}{ "int": 1, "string": "hello", "float": 1.23, "complex": complex(1, 2),...阅读全文

博文 2019-04-23 12:34:40 今生路人甲

利用CPU cache特性优化Go程序

demo 如下Go语言伪代码,开启两个协程,分别对一个结构体变量中的两个相邻的数据成员进行n次原子自增操作,当打开_ [56]byte这个看似多余的代码后,程序运行速度加快了一倍!你知道是为什么吗? ... type Foo struct { a uint64 // _ [56]byte b uint64 // _ [56]byte } ... go func() { for i := 0; i < 1000 * 1000; i++ { atomic.AddUint64(&foo.a, 1) } }() go func() { for i := 0; i < 1000 * 1000; i++ { atomic.AddUint64(&foo.b, 1) } }() // 等待两个协程执行完毕,...阅读全文

博文 2019-12-29 19:32:38 就想叫yoko

Golang标准库深入 - 双向链表(container/list)

1. 什么是双向链表 (引用) 和单链表比较,双向链表的元素不但知道自己的下线,还知道自己的上线(越来越像传销组织了)。小煤车开起来,图里面可以看出,每个车厢除了一个指向后面车厢的箭头外,还有一个指向前面车厢的箭头(车头、车尾除外)。车头只有指向后面车厢的箭头,车尾只有指向前面车厢的箭头。 2. 和单向链表相比的优势 1. 插入删除不需要移动元素外,可以原地插入删除 2. 可以双向遍历 插入数据到中间 删除中间数据 3、双向链表与Go的对应结构 1.节点分析 我们先把车厢分解开来。每节车厢都由煤炭、车体、拉前车厢绳索、拉后车厢绳索这4部分组成。车体是我们的运输工具,在Go语言里我们用结构提DNode表示;煤炭代表运的货物,用data变量表示;拉前车厢绳索和拉后车厢绳索我们分别用指针prev和...阅读全文

博文 2018-05-16 11:33:06 90design

杨晓峰:开发者其实不太需要关注 Java 收不收费

作为继 Java 8 之后的第一个 LTS 版本,Java 11 的发布引起了广泛关注,一方面是因为这个版本带来了一些重要的新特性,比如热议的 ZGC、HTTP/2 Client、Flight Recorder 等,在内存管理与 JVM 诊断/Profiling 等方面都有很强的能力突破。 另一方面是因为 Oracle 针对 Java 的一系列动作,比如宣布变更版本迭代周期、修改了商业支持方式,推出订阅模式、在两种不同的 License 下提供 JDK ****发布版……这持续性的变化让大家不断困惑,开发者不知道还能不能愉快地免费使用 Java,也不清楚接下来将会面对一些什么。 虽然 Oracle 官方有解释,并且也有 30 几位 Java 社区领袖与专家联名发表了一篇文章,详细分析了 Ja...阅读全文

博文 2019-03-21 00:34:40 开发之家

Golang学习--开篇

最近开始接收一个新项目,是使用Golang写的,需要重新捡起Golang来,于是就有了这个系列博客。 Golang的环境配置,我就不说了,让我们直接开始。 Golang官网:https://golang.org Golang标准库文档:https://golang.org/pkg Golang中文标准库文档:https://studygolang.com/pkgdoc 下面我们先来执行一个Hello World,代码如下: package main import "fmt" func main() { fmt.Println("Hello World") } 编译执行,输出 Hello World 我们再来使用go启动一个web server,大家通过浏览器可以访问到相应的页面 我们先来实现...阅读全文

博文 2017-11-16 17:00:10 CraryPrimitiveMan

golang讲解(go语言)标准库分析之io(2)

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; 今天我们继续讲golang的io的标准库 [1]type PipeReader [php] type PipeReader struct { // contains filtered or unexported fields } [/php] (1)func Pipe() (*PipeReader, *PipeWriter)创建一个管道,并返回它的读取器和写入器,这个会在内存中进行管道同步,它的开启会io.Reader然后等待io.Writer的输入,没有内部缓冲,它是安全的调用Read和Write彼此和并行调用写 [php] import ( "fmt" "io" "reflect" ) f...阅读全文

博文 2017-02-09 18:39:41 widuu

goroutine背后的系统知识

Go语言从诞生到普及已经三年了,先行者大都是Web开发的背景,也有了一些普及型的书籍,可系统开发背景的人在学习这些书籍的时候,总有语焉不详的感觉,网上也有若干流传甚广的文章,可其中或多或少总有些与事实不符的技术描述。希望这篇文章能为比较缺少系统编程背景的Web开发人员介绍一下goroutine背后的系统知识。 1. 操作系统与运行库 2. 并发与并行 (Concurrency and Parallelism) 3. 线程的调度 4. 并发编程框架 5. goroutine 1. 操作系统与运行库 对于普通的电脑用户来说,能理解应用程序是运行在操作系统之上就足够了,可对于开发者,我们还需要了解我们写的程序是如何在操作系统之上运行起来的,操作系统如何为应用程序提供服务,这样我们才能分清楚哪些服务...阅读全文

博文 2015-06-17 20:05:23 duhf_think

2018-12-23晨间日记

天气:晴 任务清单 调试yaml文件 go 实例 Errors ,Goroutines, Channels 习惯养成类:日更800+字 && writingTime >=1h 习惯养成类:单词 30个,复习优先,你的目的是为了记住单词,而不是看到更多的单词。同理,记住单词也不是目的,而是使用英文阅读理解,沟通交流的手段。所以每个单词至少要熟悉一个例句。 周目标·完成进度 golang 1K 众病之王---癌症治疗的认知升级(总结2000字+) 梁宁的产品思维30讲(写总结2000字+) 学有所得 健康·饮食·锻炼 每天8000步,今天: 食物中低热量,底油,低盐的比重大于50%的重量:早上OK 人际·家人·朋友 至少每天1小时的陪伴 联系一个老朋友 工作·思考 最美好的三件事 早上没看天气,...阅读全文

博文 2018-12-23 11:34:45 郭青耀

Go 语言标准库之 strings包

(1)func Contains(s, substr string) bool这个函数是查找某个字符是否在这个字符串中存在,存在返回true [php] import ( "fmt" "strings" ) func main() { fmt.Println(strings.Contains("widuu", "wi")) //true fmt.Println(strings.Contains("wi", "widuu")) //false } [/php] (2)func ContainsAny(s, chars string) bool这个是查询字符串中是否包含多个字符 [php] import ( "fmt" "strings" ) func main() { fmt.Println(...阅读全文

博文 2016-11-16 07:00:11 gjy211

Go语言的一些使用心得

序 起初一直使用的Python,到了18年下半年由于业务需求而接触了Golang,从开始学习到现在的快半年里,也用Golang写了些代码,公司产品和业余写的都有,今天就写点Golang相关的总结或者感想吧。 PS:运维人员学习一两门开发语言是很重要切明智的,不会开发的运维我认为会逐渐被淘汰的,转型是迟早的事情。 语法简单 GO是崇尚极简主义的,提倡少即是多,GO的特性很少,内部关键字也不多,基础的话一天就可以学完,同时它的语法极为简单,很容易看懂。 部署方便 GO是一个强类型静态语言(最初不习惯),直接把代码编程成可执行文件,不依赖系统环境,完全可以做到轻松的发布。而且还可以交叉编译。这点我很喜欢。 标准库 GO自身带的标准库现在已经很全面的了,目前从文件归档、压缩、数据库到数据序列化,字符...阅读全文

博文 2019-04-13 01:34:40 程序员同行者

阿里云RDC自动化测试和持续集成服务上线

一、前言 在大数据推动行业发展的年代,大型企业级应用往往选择多种数据库产品,分别支持在线交易、报表生成、日志存储、离线分析等,用以驱动业务的高速发展,但这种组合式解决方案,需要精细的控制不同产品间的数据流转和一致性问题,使用难度颇高,每个数据库产品间的数据同步和冗余,也带来了很高的成本开销,进一步限制了企业级应用的发展。 近年来Gartner提出了HTAP数据库概念,一个数据库既能支持OLTP(在线事务处理),又能支持OLAP(在线分析处理),涵盖大部分企业级应用的需求,一站解决这些问题。数据库云服务供应厂商,纷纷响应支持,企业级应用案例也如雨后春笋般涌现。 HTAP数据库在架构上做了哪些创新,解决了哪些关键问题?又能为企业级应用降低哪些应用难度,减少...阅读全文