go语言中的for循环
## go语言中的for循环 *假如给你一个字符串让你遍历获取其中的内容,或者查找其中的是否包含某个字符串,你会如何做?* #### 理所当然的我们选择了for循环来进行遍历 在go语言中使用比较多的两个循环一个是**for i**,一个是**for range**,这两者都能够很有效的对一个集合体进行遍历。(string也是一个集合体),下面我们来具体展示一下他们之间的区别 #### for i ```go func main() { str := "Hel...阅读全文
GO vs Python哪个更适合做web开发?
GO和python都是当下非常受欢迎的编程语言,因为各具有不同的优势受到了很多人喜欢,现在很多人都想要通过培训来从事web开发,但是面对编程语言选择就十分困扰,该选择python还是GO呢? 在GO与python语言当中,当涉及到用户社区的时候,python是绝对的赢家。python有着丰富的扩展库,更加成熟稳定,具有更多框架,配备了用于web开发的资源。 GO和python语言将自己宣传为面向简单性,尽管它们两个代码都易于阅读和理解,但是GO需要更多代码来执行与python相同的操作。 GO ...阅读全文
for-range造就循环永动机?快来看看go中for-range的那些事!
来自公众号:新世界杂货铺循环永动机Q1: 如果我们在遍历数组的同时修改数组元素,能否得到一个永远都不会停止的循环呢?func main() { arr := []int{1, 2, 3} for _, v := range arr { arr = append(arr, v) } fmt.Println(arr) } // 输出: 1 2 3 1 2 3上述代码的输出意味着循环只遍历了原始切片中的三个元素,我们遍历切片时追加的元素不会增加循环的执行次数, 所以循环最终还是停了下来答: 对于所有的...阅读全文
特殊情况下,不同取模操作的效率比较
### 所指代的特殊情况是指 a % b,b 为 2 的 n 次方的情况。 > 额(⊙﹏⊙),作为平时使用的话,完全用不上,在非常巨量的操作下才可能会有差距 - 先拿 10 进制举例,如果 15648615341 % 10,那你肯定立马知道结果是 1,10 变成 100,你也知道结果是 41 - 同样的换成二进制 1110100100101110101110101110101101 % 10 (二进制哦~~),结果是 1(也就表示是奇数),换成 100 结果是 1,1000 ==...阅读全文
一道比较运算符相关的面试题把我虐的体无完肤
来自公#众#号:新世界杂货铺 杂(货铺)谈 今天这篇文章相对来说比较基础,大家花几分钟时间看看,有所收获自然是最好,没有收获也就消磨几分钟时间罢了,你不亏,笔者也不亏~ 前几期还是有一定难度的HTTP系列文章,今天却是画风突变讲起了基础,这当然是因为基础重要呀。正所谓万丈高楼平地起,我们夯实基础,楼才能建的高,毕竟精美的小矮楼总是很容易被高楼遮挡。嗨,扯远了,总之笔者今天写这篇文章绝对不是下面这个原因: 累呀!真的累!工作嘛?当然不是!前几期分析HTTP系列文章确实耗费了太多精力,周末连续熬夜就...阅读全文
linux安装go环境
第一步、官网下载安装包https://golang.google.cn/go1.4.linux-amd64.tar.gz 第二步、解压缩tar -C /usr/local -xzf go1.4.linux-amd64.tar.gz/usr/local指目录,可自行修改第三步、添加环境变量export PATH=$PATH:/usr/local/go/bin第四步、安装测试其实已经安装好了,接下来测试一下是否安装成功。写一段简单的go程序,输出hello world!吧,保存为test.gopac...阅读全文
golang-grpc示例
原文链接 1. 环境配置 go环境配置(略) 1.1 protoc-gen-go cd $GOPATH/src/github.com/golang/ git clone https://github.com/golang/protobuf.git cd protobuf/protoc-gen-go go build #生成protoc-gen-go go install . #or cp protoc-gen-go $GOHOME/bin/ 1.2 protoc-gen-go-grpc cd $...阅读全文
go学习笔记:io.copy
package main import ("bufio""fmt""io""net/http""os") func main() {DownFile()} func DownFile() {url := "https://s3.pstatp.com/toutiao/xitu_juejin_web/img/juejin-extension-icon.4b79fb4.png"resp,err:=http.Get(url)if err !=nil{fmt.Fprintf(os.Stderr,"get ...阅读全文
go学习笔记:并发获取多个URL
package main import ("fmt""io""io/ioutil""net/http""os""time") func main(){start:=time.Now()ch:=make(chan string)//启动多个协程后台处理for _,url := range os.Args[1:]{go fetch(url,ch)}//这个循环不会提前执行完,因为上边的循环每次都会往chan里写入for range os.Args[1:]{fmt.Println(<-ch)}fmt....阅读全文
Golang Defer详解
在用Golang开发的时候,defer这个语法也是必备的知识,但是我们除了知道他是在一个函数退出之前执行,对于defer是否还有其他地方需要注意的呢。本文整理的defer的全场景使用情况,部分场景源自网络,加上自己的额外观点和分析,完成了这份defer的7个隐性必备知识点。提纲 知识点1:defer的执行顺序 知识点2: defer与return谁先谁后 知识点3:函数的返回值初始化与defer间接影响 知识点4:有名函数返回值遇见defer情况 知识点5:defer遇见panic 知识点6:d...阅读全文
GO语言基础学习一------------基本语法与使用
基本语法和使用 程序代码架构 添加程序入口:package main 导入程序所需要的包:import () 定义命令行参数:var mode = flag.Sting (”mode ”,“”,“ process mode ”) 初始化函数:func init(){} 执行函数/入口函数:func main (){} 变量 声明变量 标准格式:var 变量名称 变量类型 如:var a int 整型var b string 字符串var c [) float32 浮点贴片var d func()...阅读全文
go练手:简单的单词格式转换工具
声明 代码引自书籍 《Go语言编程之旅:一起用Go做项目》 作者:陈剑煜 徐新华 部分代码实现上做了调整,达到了自己想要的效果。功能描述支持5种单词格式转换, 模式如下:1: 全部单词转大写2: 全部单词转小写3: 下划线转大写驼峰4: 下划线转小写驼峰5: 驼峰转下划线举例:TimeForFun 使用模式1 转换为 TIMEFORFUN 使用模式2 转换为 timeforfuntime_for_fun 使用模式3 转换为 TimeForFun 使用模式4 转换为 timeForFunTim...阅读全文
Golang标准库——encoding(1)
encoding ascii85 asn1 base32 base64 encoding encoding包定义了供其它包使用的可以将数据在字节水平和文本表示之间转换的接口。encoding/gob、encoding/json、encoding/xml三个包都会检查使用这些接口。因此,只要实现了这些接口一次,就可以在多个包里使用。标准包内建类型time.Time和net.IP都实现了这些接口。接口是成对的,分别产生和还原编码后的数据。 type BinaryMarshaler type Bina...阅读全文
Golang:I/O 操作,千万不要小瞧这些知识点
I/O 操作也叫输入输出操作。其中 I 是指 Input,O 是指 Output,用于读或者写数据的,有些语言中也叫流操作,是指数据通信的通道。 Golang 标准库对 IO 的抽象非常精巧,各个组件可以随意组合,可以作为接口设计的典范。 io 包 io 包中提供 I/O 原始操作的一系列接口。它主要包装了一些已有的实现,如 os 包中的那些,并将这些抽象成为实用性的功能和一些其他相关的接口。 在 io 包中最重要的是两个接口:Reader 和 Writer 接口,首先来介绍这读的操作。 Rea...阅读全文
go学习笔记:计算文件中重复的行,并输出重复次数
方法一:按行读取package main import ("bufio""fmt""os") func main() {counts:=make(map[string]int)files:=os.Args[1:]if len(files) == 0 {countLines(os.Stdin,counts)}else{for _,arg:=range files{f,err:=os.Open(arg)if err != nil {fmt.Fprintf(os.Stderr,"dup2:%v\n",...阅读全文
Windows10下VScode环境编译运行go语言
1.下载VScode工具(和下载常用软件一样) 官方网址:https://code.visualstudio.com/ a.下载安装完之后可以在vscode中一些插件第一个:Chinese language第二个:GO第三个(推荐):markdown 2.下载安装go开发工具包SDK 官方网址:https://golang.google.cn/dl/ 3.go有一些依赖包在外网上,下载需要进行代理 代理方式网址介绍:https://goproxy.io/zh/添加这两个环境变量添加环境变量方式:...阅读全文
还在担心服务挂掉?Sentinel Go 让服务稳如磐石
作者 | 赵奕豪 背景 微服务的稳定性一直是开发者非常关注的话题。随着业务从单体架构向分布式架构演进以及部署方式的变化,服务之间的依赖关系变得越来越复杂,业务系统也面临着巨大的高可用挑战。 在生产环境中大家可能遇到过以下不稳定的情况: 大促时瞬间洪峰流量导致系统超出最大负载,load 飙高,系统崩溃导致用户无法下单; “黑马”热点商品击穿缓存,DB 被打垮,挤占正常流量; 调用端被不稳定第三方服务拖垮,线程池被占满,调用堆积,导致整个调用链路卡死。 这些不稳定的场景可能会导致严重后果,但很多时候...阅读全文
从JVM中dump出动态代理生成的class
由于动态代理生成的 class 是直接以二进制的方式加载进内存中的,并没有对应的.class 文件生成,所以如果想通过反编译工具查看动态代理生成的代码需要通过特殊的手段来处理。 方案一 设置运行环境变量,运行后会把 class 文件生成在 classpath 目录下 //动态代理时生成class文件 System.getProperties().put("sun.misc.ProxyGenerator.saveGeneratedFiles","true"); 缺点是只适用于 JDK 动态代理 方...阅读全文