2 2 C ...阅读全文
本文介绍Sidecar模式的特点,及其应用的场景。熟悉Native Cloud或者微服务的童鞋应该知道,在云环境下,技术栈可以是多种多样的。那么如何能够将这些异构的服务组件串联起来,成为了服务治理的一个重大课题。而Sidecar模式为服务治理,提供了一种解决方案。将应用程序的组件部署到单独的进程或容器中,以提供隔离和封装。此模式还可以使应用程序由异构组件和技术组成。这种模式被称为Sidecar,因为它类似于连接到摩托车的边车。在该模式中,边车附加到父应用程序并为应用程序提供支持功能。 sidecar还与父应用程序共享相同的生命周期,与父项一起创建和退役。边车图案有时被称为搭接图案并且是分解图案。问题背景应用程序和服务通常需要相关的功能,例如监控、日志、集中化配置和网络服务等。这些外围任务可以...阅读全文
作者|Christian 编辑|禚娴静 当下市场瞬息万变,新技术不断涌现,而微服务持续火热。如果说2014年是微服务的元年,那么2015年和2016年则是微服务走下神坛的时刻,越来越多的开发者、架构师们探讨着如何落地,如何解决各种实际问题,而很多技术栈和工具也纷纷涌现。构建微服务时,我们真的深深进入了分析分布式系统 - 一个已经研究了40年以上的技术主题,复杂的自适应系统理论已经深入人心有很长的时间。从技术的角度来看,我们需要解决的事情如下:部署交付API版本控制合同缩放/自动缩放服务发现负载均衡路由/自适应路由健康检查配置熔断器bulk-headsTTL / deadlining延迟跟踪服务因果跟踪分布式日志度量操作与收集Netflix和一些互联网公司作为早期微服务的采用者在这些领域做了很...阅读全文
/* 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 * ...阅读全文
Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。 Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go Linux 下编译 Mac 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go Wind...阅读全文
Go作为Google2009年推出的语言,其被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。 到现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。 Go适合做什么?为何这么多人偏爱Go语言? 哪些大公司在使用Go语言: 1、Google 这个不用多做介绍,作为开发Go语言的公司,当仁不让。Google基于Go有很多优秀的项目,比如:https://github.com/kubernetes/kubernetes ,大家也可以在Github上 https://github.com/google/ 查看更...阅读全文
https://github.com/google/gop...阅读全文
本文原文地址:golang gorm中格式化时间的问题 欢迎到访我的博客。最近在开发项目时遇到了发现一个问题,gorm虽然可以自动帮你维护 created_at、updated_at、deleted_at这些关键时间字段。但是其原理与弊端需要了解一下。1.使用方法通过自定义一个localtime的结构,来控制时间的格式package utils import ( "time" //"strconv" "fmt" "database/sql/driver" "strconv" ) type LocalTime struct { time.Time } func (t LocalTime) MarshalJSON() ([]byte, error) { //格式化秒 seconds := t.U...阅读全文
地址: https://github.com/shen100/wemall
求star,求关注
 { C.daemon(1,0) } 上面代码确实可以成功执行,可问题随之而来。测试的时候,我发现使用了上述代码片段的程序,测试时会随机出现程序无限假死的情况,google的大部分结果都说的是golang的Scheduler和Linux的fork系统调用不兼容所致,各位如有知道个中明细,还望赐教! 没办法,之后基于Stack Overflow热心网友的解答,采用类似下述方法实现daemon化,注意使用相关命令行参数控制调用: func...阅读全文
#### 仅仅两年时间,在最流行的编程语言中,Go 语言从第 65 名飙升至第 17 名。以下是其快速增长的原因。  图像来自于 _opensource.com_ [Go 语言](https://golang.org/) ,也被称为谷歌的 Go 语言,人气正在强劲增长。 虽然诸如 Java 和 C 这样的语言继续主导编程,但新编程模型已经出现,它们更适合现代计算,特别是云计算领域。 Go ...阅读全文
package main import ( "bufio" "log" "os" "os/exec" "path/filepath" "strings" "time" ) /*获取当前文件执行的路径*/ func GetCurrPath() string { file, _ := exec.LookPath(os.Args[0]) path, _ := filepath.Abs(file) splitstring := strings.Split(path, "\\") size := len(splitstring) splitstring = strings.Split(path, splitstring[size-1]) ret := strings.Replace(splitstri...阅读全文
前言 在我们开发过程中,像数据库信息、邮件配置和其他的第三方服务密钥等这些固定的信息都会写在配置文件中,而配置文件又有多种表现形式和格式,有 JSON, TOML, YAML各种格式,而且测试环境,开发环境和生产环境用的配置文件也不是同一份,那就让我们说说Go 中用于加载配置信息的Viper。 什么是Viper? Viper是Go应用程序的完整配置解决方案,包括12-Factor应用程序。它旨在在应用程序中工作,并可以处理所有类型的配置需求和格式。它支持: 设置默认值 从JSON,TOML,YAML,HCL和Java属性配置文件中读取 实时观看和重新读取配置文件(可选) 从环境变量中读取 从远程配置系统(etcd或Consul)读取,并观察变化 从命令行标志读取 从缓冲区读取 设置显式值 V...阅读全文
【尚学堂•百战程序员201805版】视频课程主要介绍人工智能开发的远景与概况,今后会持续更新
资料链接
链接:https://pan.baidu.com/s/1T5HwLzEJQK_VwoaMGd5ygw 密码:qew...阅读全文
[go channel实现][1]
源至:[懒惰的程序员][2]
[1]: http://alpha-blog.wanglianghome.org/2012/04/13/go-channel-implementation/
[2]: http://alpha-blog.wanglianghome.org...阅读全文
学习什么语言都得从读文件开始,好像记得一个大神说过计算机编程就是"打开文件,操作,关闭文件"。初学Golang就记一下go语言的文件操作 Read File func main(){ rw,err := os.Open("") if err != nil { panic(err) } defer rw.Close() rb := bufio.NewReader(rw) for { line, _, err := rb.ReadLine() if err == io.EOF { break } //do something fmt.Println(string(line)) } } func main(){ rw,err := os.Open("") if err != nil { panic...阅读全文
第一本:Mastering-Go-Web-Services
下载地址: http://sharevip.org/2015/07/24/Mastering-Go-Web-Services/
第二本:Go-Programming-Blueprints
下载地址:
http://sharevip.org/2015/07/24/Go-Programming-Blueprints...阅读全文
首先解释以下什么是base64(来自百度百科): Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到。 在golang里有base64库可以实现相关操作,我尝试实现了加密解密...阅读全文
Go将动态语言易于编写的特性和静态语言的高效性相结合,具备良好的易用性和极佳的执行效率。Go语言最初定位于网络服务器、存储系统和数据库的程序设计,同时在语言中包含并发构造体,以方便的帮助开发者创建并行任务。 Go语言具有效率极高的编译器,目前Go编译器能在Linux、FreeBSD以及Mac OS X平台下运行,但暂时没有对Windows环境提供编译支持。Go开发团队曾在博客中表示,编译完成的Go程序运行速度接近C语言实现的程序。 在今年五月份举办的Google I/O大会上,Go语言背后的工程师Rob Pike和Russ Cox两人一同为开发者带来了Go语言编程讲座,解释Go语言的灵活设计和独到之处。Go语言的主要设计者Rob Pike是Google公司的资深工程师,在分布式系统、程序语言...阅读全文
Python是一门语法简洁、功能强大、上手简单的计算机编程语言,根据TIOBE最新排名,Python已超越C#,与Java,C,C++成为全球4大流行语言之一。
Python编程语言其应用广泛,在人工智能、云计算开发、大数据开发、数据分析、科学运算、网站开发、爬虫、自动化运维、自动化测试以及游戏领域均有应用。
在各大企业,如国内的阿里、腾讯、网易、新浪、豆瓣,国外的谷歌、NASA、YouTube、Facebook,Python的企业对Python开发人才均有巨大的需求,随着人工智能、大数据的发展和广泛的应用,Python人才的需求量也势必增加,而且在未来的发展前景也是不可限量的!
相比于Java、php等语言,目前,Python编程人才缺口较大,市场供不应求,就业薪资也普遍...阅读全文
package main import ( “fmt” “reflect”) type GenericSlice struct { elemType reflect.Type sliceValue reflect.Value} func (self *GenericSlice) Init(sample interface{}) { value := reflect.ValueOf(sample) self.sliceValue = reflect.MakeSlice(value.Type(), 0, 0) self.elemType = reflect.TypeOf(sample).Elem()} func (self *GenericSlice) Append(e interface{})...阅读全文
今日阅读GORTP代码的时候,发现其代码中收取UDP网络数据后总是可以认为是一个RTP包,而我一开始认为该代码逻辑存在问题,即如果对方发送的是半个RTP包,那不就存在问题?当经过修改代码验证,当接受数据的缓存缓存小于发送缓存时,ReadFromUDP就会报错。 后来,在网上查询资料得知,UDP的数据在缓存队列中是有边缘保证的,也就是说每一个udp的数据包都是游大小的,每次ReadFromUDP都会取一个完整的udp数据包上来,如果应用程序设置的缓存过小,不够一个udp数据包大小,那么ReadFromUDP就会报错。 以上问题,记录一下,以防下次忘记...阅读全文
喜欢和不喜欢Go语言的都喜欢拿性能PK说事. 流传比较广的是benchmarksgame的PK数据: http://benchmarksgame.alioth.debian.org/u64q/go.php 在 benchmarksgame 测试中, Go语言的性能已经由之前的很烂到现在和C语言持平或2倍差距之内, 当然还有 3个测试性能差距比较大. 具体的原因我就不细说了, 可以参考我另一个文章: Go1.1性能测试报告(和C差距在10%以内) . 当然, 很多Go语言黑是从来不相信Go语言的性能的, 特别是不相信和C差距在10%以内的说法. 不过在这个老外的最新测试结果中, Go的性能又超出了GCC的性能(GCC比clang有一些差距). 最近, 有另一个外国的博客评测了各种系统级编程语言...阅读全文
SAAS成熟度模型分级LEVEL1 定制开发软硬件都由SAAS服务商提供,软件的使用者只需要按时间、用户数、空间等逐步支付租赁使用费用即可LEVEL2 可配置通过不同的配置满足不同用户的需求,而不需要为每个用户进行特定定制,以降低定制开发的成本。LEVEL3 高性能的多租户架构多租户:通过一定的策略来保证不同租户间的数据隔离,确保不同租户即能共享同一个应用的运行实例,又能为用户提供独立的应用体验和数据空间。实现方案有独立数据库、共享数据库独立数据架构、共享数据库共享数据架构。高性能:满足多租户并发访问的性能挑战。LEVEL4 可伸缩性的多租户架构解决租户数量增加因集中式数据库带来的性能瓶颈。SAAS实现阶段性成熟度推进定制开发 --> 可配置 --> 多租户 --> 高性能 --> 可伸缩方...阅读全文
对开源开发来说 Golang 和 Python 哪个语言更好,我们详细分析对比一下。 在任何项目开始之前,大多开发团队需要通过多次会议讨论来确定最适合他们项目的编程语言。很多时候他们会在 Python 和 Golang 中间纠结。在这篇 Golang vs. Python 的博文中,我将亲自从多角度对比这两种语言,以帮你确定哪种语言最适合你。主要从以下几个方面比较: - 性能 - 可扩展性 - 应用 - 执行 - 库 - 代码可读性 让我们开始吧。在对比开始之前,让我来对这两种语言做简要介绍吧。 [最终都难免要回到C/C++原生函数调用上来。别对我说什么C/C++门槛太高,两年前谁知道ObjectiveC,现在排行榜都到第九位了。苹果的ObjectiveC,诺基亚的C++/QT都选对了开发语言,相信Google很快会采用Go回到正轨,手机...阅读全文
中国互联网络信息中心发布的第43次《中国互联网络发展状况统计报告》指出,截止于2018年12月中国网民规模达到8.29亿,同年新增网民高达5653万。在互联网高速发展和网民持续增长的背后离不开程序员的默默支持。据悉,2018年全球软件开发从业者人数高达2300万,预计今年年底可达2640万,但如此庞大的就业群体中真正能称为“软件工程师”的只有1%。调查统计,我国程序员多集中于北上广深杭等五个城市,这些城市在吸引优秀人才和企业的同时也反哺着互联网龙头企业。作为互联网飞速发展下的特殊群体,程序员在近几年备受民众关注,有人用这样一首打油诗描述程序员的工作和生活状态:十年编程两茫茫,工期短,需求长。千行代码,Bug 何处藏。纵使上线又如何,新版本,继续忙。黑白颠倒没商量,睡地铺,吃食堂。夜半梦醒,无...阅读全文
boltDB Blot Bolt 是由 Howard Chu 的 LMDB 项目启发的一个纯粹的 Go key/value数据库。 该项目的目标是为不需要完整数据库服务器(如Postgres或MySQL)的项目提供一个简单,快速和可靠的数据库。 由于 Bolt 是用来作为这样一个低层次的功能,简单是关键。 该API将是小的,只专注于获取值和设置值而已。 项目状态 Blot 稳定,API固定,文件格式固定。 使用完整的单元测试覆盖率和随机黑箱测试来确保数据库一致性和线程安全性。 Blot 目前用于高达1TB的高负载生产环境。 Shopify 和 Heroku等许多公司每天都使用 Bolt 来支持服务。 A message from the author Bolt 最初的目标是提供一个简单的纯 ...阅读全文
centos安装upx wget -c http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el7/en/x86_64/rpmforge/RPMS/ucl-1.03-2.el7.rf.x86_64.rpm rpm -Uvh ucl-1.03-2.el7.rf.x86_64.rpm yum install ucl wget -c http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el7/en/x86_64/rpmforge/RPMS/upx-3.91-1.el7.rf.x86_64.rpm rpm -Uvh upx-3.91-1.el7.rf.x86_64.rpm yum install upx #upx压缩...阅读全文
同类问题:什么是天命? 回答:潇洒走一回,才能告诉你。 根据编程语言学习的经验,我发现,这个问题,只有等到学习完一门语言,然后做过一个项目,熟练的Debug之后,才能有明确的认知。可是,几乎所有的相关书籍和网站,又不得不以这样的标题开头。 先“用不用学习Go语言”,“Go语言有前景么?”这类问题的朋友,能够节约些脑力,特写此篇文章:1.你必须保证精通一门语言,才能做程序员,因此,保证你学习go语言不后悔;2.Go语言是谷歌2009发布的第二款开源编程语言。9年过去了,还有人在用。google证明不了什么,只有时间,才能证明一切;3.【引自百科】Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。【/引自百科】 合格...阅读全文
golang 实现自动化部署的实例 自动化部署有Jenkins为什么我还要写这篇文件,应为公司服务器太菜了,装上jenkins服务器炸了。所以想用golnag撸一了自动化部署工具 每次更新程序都scp太痛苦了 实践完成的自动化部署工具 https://github.com/dollarkill... 自动化部署的实现思路 看了这个图 大家应该发现这实践起来并不困难就是收到 请求 后去 调用 git pull 就行 下面是程序分析 # devops生成文件 请填写完成检查确认后 再 运行啊 (每次运行会重写sh模块) # 这devops系统配置 app: host: "0.0.0.0:8083" debug: true max_request: 1000 task_num: 10 # 要自动化...阅读全文
概括 Go的垃圾回收官方形容为 非分代 非紧缩 写屏障 三色并发标记清理算法。 非分代:不像Java那样分为年轻代和年老代,自然也没有minor gc和maj o gc的区别。 非紧缩:在垃圾回收之后不会进行内存整理以清除内存碎片。 写屏障:在并发标记的过程中,如果应用程序(mutator)修改了对象图,就可能出现标记遗漏的可能,写屏障就是为了处理标记遗漏的问题。 三色:将GC中的对象按照搜索的情况分成三种: 黑色: 对象在这次GC中已标记,且这个对象包含的子对象也已标记 灰色: 对象在这次GC中已标记, 但这个对象包含的子对象未标记 白色: 对象在这次GC中未标记 并发:可以和应用程序(mutator)在一定程度上并发执行。 标记清理:GC算法分为两个大步骤:标记阶段找出要回收的对象,清理...阅读全文
2018年12月的TIOBE编程语言排行榜已经出炉,Python重回前三,Go语言跌出前十,Visual Basic.NET涨幅明显,保持第五名。TIOBE排行榜是根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube统计出排名数据,反映某个编程语言的热门程度。 在这全世界排名前二十的所有编程语言中,哪种语言最难学呢?关于到底是什么算难学,很多人有自己的看法,衡量标准各不相同。本文从一个全新的!无可反驳的!!角度来分析一下各个编程语言哪学程度。本次参与最难学编程语言排名的选手我从以上榜单中筛选了10位大家比较熟知的,他们分别是:Java、C、Python、C++、.NET、JavaScr...阅读全文
http://gochannel.org/
不定期更...阅读全文
我们在编程中经常需要对两个浮点型比较大小,下面我就来分享一段这样的代码,同时也展示了Go语言函数式编程的独特魅力: import ( "fmt" "math" ) func main() { // 设置精确度为0.00001 var a Accuracy = func() float64 { return 0.00001 } fmt.Println(a.Equal(0.11111222, 0.11111222233333)) //打印结果为:true } type Accuracy func() float64 func (this Accuracy) Equal(a, b float64) bool { return math.Abs(a-b) < this() } func (this ...阅读全文
通常开发项目开发时目录结构可以随意设计,但好的目录结构能让代码显得更加清晰。 Golang web 项目通用目录结构说明: projectName # 项目名称 |-- app # 应用程序目录 |---- controllers # 控制器,入参校验 |---- middleware # 中间件 |---- routers # 路由 |---- services # 业务逻辑处理 |-- config # 配置文件 |-- dao # 数据库访问 |-- models # 数据模型 |-- storage #存储 |---- cache # 缓存 |---- logs # 日志 |-- main.go # 程序入...阅读全文
beego是Golang写的应用程序开源框架http://beego.me/,我使用`beego`写了一个项目小项目,golang是编译语言,需要编译之后再部署,每次部署到服务上是件很麻烦的事情。就写了一个自动打包部署到服务器的脚本,方便发布部署。 ##**项目结构**先看看beego项目的结构: beepkg |-- conf | `-- app.conf |-- controllers | `-- default.go |-- main.go |-- models |-- routers | `-- router.go |-- static | |-- css | |-- img | `-- js |-- tests | `-- default_test.go `-- views `--...阅读全文
欢迎关注 IPFS 周报!提请注意: 请将 URL 复制/粘贴到浏览器中打开网站。感谢您的支持!星际文件系统 (IPFS) ( https://ipfs.io/ )是一种新的超媒体分布协议,通过内容和标识来寻址。IPFS 支持创建完全分布式的应用程序。它的目标是使网络更快、更安全、更开放。由于范围广大,本周刊旨在跟踪整个生态系统的开发。想参与其中?点击下面的一些链接,查看我们在 GitHub (https://github.com/ipfs ) 上的内容,或加入我们的 IRC ( https://riot.im/app/#/room/#ipfs:matrix.org )。想要更新你的收件箱吗? 订阅我们的每周通讯( https://tinyletter.com/ipfsnewslette...阅读全文
本文出自: http://golang.so/ 此文介绍的并非 使用panic/recover. 因为实际使用中不建议使用panic/recover. 但try catch finally 的编程方式 还是会经常用到的。 代码如下: package main import ( "fmt" "runtime" "os" ) // Try to open a file named dummy.one // for input. Return the error if it won't open. func dummy1() error { f,err:= os.Open("dummy.one") if(err!=nil) { return err } else { f.Close() retur...阅读全文
微服务架构·基础篇 看到最近“微服务架构”这个概念这么火,作为一个积极上进的程序猿,成小胖忍不住想要学习学习。而架构师老王(不是隔壁老王)最近刚好在做公司基础服务的微服务化研究和落地,对此深有研究。 于是成小胖马上屁颠屁颠的跑过去向老王请教:“王哥,我看微服务架构这么火,我也想学,您给我讲讲啥是微服务架构呗?” 老王笑了笑说:“要想知道什么是微服务架构,你得先知道什么系统架构设计。” 成小胖的理想是成为一名架构师,平时积累了不少知识,因此对“系统架构设计”这个概念还是很熟悉的,因此他马上就给出了答案【1】: 系统架构设计描述了在应用系统的内部,如何根据业务、技术、组织、灵活性、可扩展性以及可维护性等多种因素,将应用系统划分成不同的部分,并使这些部分彼此之间相互分工、相互协作,从而为用户提供某...阅读全文
8月31日,Google 在中国的开发者网站上提供数百份实用资源,让中国的开发者们能够更便捷地使用 TensorFlow 打造人工智能应用。所有对 TensorFlow 感兴趣的开发者、研究人员或公司都可以在 tensorflow.google.cn 上获取使用指南,在知识库中搜索现有的 API(应用程序编程接口),或是构建模型的方法。如果你是一家希望打造人工智能服务的初创公司,可以在这里清楚地了解到 TensorFlow 的使用方式,并通过实践教程进行学习,而这些资料和教程都完全免费。
Google 很重视中国的 AI 开发者?
中文官网:https://tensorflow.google.cn/
官网:https://www.tensorflow.org...阅读全文
Golang交叉编译 项目地址:https://github.com/EDDYCJY/go... (快上车,支持一波) 原文地址:https://segmentfault.com/a/11... 前言 在 连载九 讲解构建Scratch镜像时,我们编译可执行文件用了另外一个形式的命令,不知道你有没有疑问? $ CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o go-gin-example . 说明 我们将讲解命令各个参数的作用,希望你在阅读时,将每一项串联起来,你会发现这就是交叉编译相关的小知识 也就是 Golang 令人心动的特性之一跨平台编译 一、CGO_ENABLED 作用: 用于标识(声明) cgo 工具是否可用 意...阅读全文
大家好,我是一名留学生,现在在国外找工作。前几天收到一个公司通知,要我用GO完成一个题目,我从没有用过GO。自己尝试着写了一些,但还是有一些地方不明白。公司也催的急,所以所剩时间不多,而且我还在上课,时间也不是特别多。周围的朋友也不会这个语言,故在此发帖,请各位大神给我指导一下啊。
必有重谢!
qq:76926409...阅读全文
课程地址:http://icourse8.com/go_pachong.html
课程地址:http://icourse8.com/go_pachong.html 课程目录第1章 课程介绍第2章 基础语法第3章 内建容器第4章 面向“对象”第5章 面向接口第6章 函数式编程第7章 错误处理和资源管理第8章 测试与性能调优第9章 Goroutine第10章 Channel第11章 http及其他标准库第12章 迷宫的广度优先搜索第13章 开始实战项目第14章 单任务版爬虫第15章 并发版爬虫第16章 数据存储和展示第17章 分布式爬虫第18章 课程总结 class Solution: def isMonotonic(self, A: List[int])...
阅读全文
https://github.com/golang-standards/project-layout 项目总结了 Go 项目的布局,这是Go应用程序项目的基本布局,并不是Go核心开发团队定义的官方标准;但是,这是Go生态系统中的一种常见的项目布局模式。 Go目录 /cmd 该目录用于存放 Go 项目的入口,即 main.go。一般来说,我们应该在 cmd 目录下创建子目录,子目录名称代表可执行程序的名称(例如/cmd/myapp)。上面列出的优秀开源项目基本上遵循了这一规则。 一般来说,该目录中的代码应该尽可能少。如果认为该代码可以导入并在其他项目中使用,那么它应该位于/pkg目录中。如果该代码不可重用,或者不希望其他人重用它,则将该代码放在/internal目录中。 /internal 这...阅读全文