-
golang第三方日志包seelog配置文件详解
所属栏目:[大数据] 日期:2020-12-16 热度:174
开发任何项目,都离不开日志,配好自己的项目日志输出,往往是开发项目的前提。在golang中,seelog应该是比较有名的日志处理包了,功能非常强大,seelog官方文档 一、seelog主要功能 下面我们看看seelog有啥强大 设置不同级别的日志; 输出到终端或文件; 过[详细]
-
golang中select实现非阻塞及超时控制
所属栏目:[大数据] 日期:2020-12-16 热度:87
// select.go package main import ( "fmt" "time" //"time" ) func main() { //声明一个channel ch := make(chan int) //声明一个匿名函数,传入一个参数整型channel类型ch go func(ch chan int) { ch - 1 //往channel写入一个数据,此时阻塞 }(ch) //由于g[详细]
-
Golang ioutil读写文件测试
所属栏目:[大数据] 日期:2020-12-16 热度:176
运用 ioutil.ReadFile 、ioutil.WriteFile package mainimport ( "io/ioutil" "log" "os")func main() { buf,err := ioutil.ReadFile("C:/文档/MHOSO/conf/conf.txt") if err != nil { log.Println(err) } log.Println(string(buf)) log.Println() //buf.app[详细]
-
golang channle close() x,ok := <- c
所属栏目:[大数据] 日期:2020-12-16 热度:87
close为内置函数 close内置函数关闭一个通道channle,其效果为:在最后的值从已关闭的信道中被接收后,任何对其的接收操作都会无阻塞的成功。对于已关闭的信道使用v,ok := - ?c还会将ok设置为false。 package mainimport ("fmt")func main() {var chan1 = ma[详细]
-
golang AES
所属栏目:[大数据] 日期:2020-12-16 热度:155
加密:ASE加密后使用base64编码 解密:base64解码后使用ASE解密 ? 1 package main 2 3 import ( 4 " crypto/aes " 5 " crypto/cipher " 6 " crypto/rand " 7 " encoding/base64 " 8 " fmt " 9 " io " 10 ) 11 12 // Encrypt string to base64 crypto using A[详细]
-
golang数组与切片
所属栏目:[大数据] 日期:2020-12-16 热度:157
golang中坑的慢慢踩! 我们都知道golang中的切片是引用类型,但是在函数中使用append给切片追加元素是行不通的,需要使用切片的指针类型才能增加元素 数组的使用: package mainimport ( " fmt " )func ChangeArr(arr [ 5 ] int ) { arr[ 0 ] = 6 }func Chan[详细]
-
X的平方根的golang实现
所属栏目:[大数据] 日期:2020-12-16 热度:150
实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 输入: 4 输出: 2 输入: 8 输出: 2 说明: 8 的平方根是 2.82842 ...,由于返回类型是整数,小数部分将被舍去。 首先[详细]
-
golang中锁mutex的实现
所属栏目:[大数据] 日期:2020-12-16 热度:76
golang中的锁是通过CAS原子操作实现的,Mutex结构如下: type Mutex struct { ????state int32? ? ? ? ? ? ? ?? ????sema??uint32 } ? //state表示锁当前状态,每个位都有意义,零值表示未上锁 //sema用做信号量,通过PV操作从等待队列中阻塞/唤醒goroutine[详细]
-
golang 创建压缩文件
所属栏目:[大数据] 日期:2020-12-16 热度:154
import ( "os" "archive/zip" "io" "fmt" "strings" ) // ZipFiles compresses one or many files into a single zip archive file. //压缩多个文件到一个文件里面 // Param 1: 输出的zip文件的名字 // Param 2: 需要添加到zip文件里面的文件 //Param 3: 由[详细]
-
golang.GoInAction.5-62
所属栏目:[大数据] 日期:2020-12-16 热度:89
//《Go 语言实战》 p110_listing60.go //这个示例程序展示当内部类型和外部类型要 //实现同一个接口的方法 ? package main ? import ( ????"fmt" ) ? //notifier 是一个定义了 //通知类行为的接口 type notifier interface { ????notify() } ? //user 在程序[详细]
-
Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误[2]
所属栏目:[大数据] 日期:2020-12-16 热度:137
初级篇 开大括号不能放在单独的一行 未使用的变量 未使用的Imports 简式的变量声明仅可以在函数内部使用 使用简式声明重复声明变量 偶然的变量隐藏Accidental Variable Shadowing 不使用显式类型,无法使用“nil”来初始化变量 使用“nil” Slices and Maps[详细]
-
Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误[1]
所属栏目:[大数据] 日期:2020-12-16 热度:83
初级篇 开大括号不能放在单独的一行 未使用的变量 未使用的Imports 简式的变量声明仅可以在函数内部使用 使用简式声明重复声明变量 偶然的变量隐藏Accidental Variable Shadowing 不使用显式类型,无法使用“nil”来初始化变量 使用“nil” Slices and Maps[详细]
-
golang爬取免费代理IP
所属栏目:[大数据] 日期:2020-12-16 热度:102
golang爬取免费的代理IP,并验证代理IP是否可用 这里选择爬取西刺的免费代理Ip,并且只爬取了一页,爬取的时候不设置useAgent西刺不会给你数据,西刺也做反爬虫处理了,所以小心你的IP被封掉 代码: package mainimport ( " fmt " " github.com/PuerkitoBio/[详细]
-
删除排序链表中的重复元素的golang实现
所属栏目:[大数据] 日期:2020-12-16 热度:183
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 输入: 1 - 1 - 2 输出: 1 - 2 输入: 1 - 1 - 2 - 3 - 3 输出: 1 - 2 - 3 我们先来看看图示: 引入一个curr指针,指向头元素 判断curr.Val==curr.Next.Val,如果是一样的话,那就把curr.Next[详细]
-
Go语言(Golang)约瑟夫游戏(Joseph)
所属栏目:[大数据] 日期:2020-12-16 热度:182
package mainimport ("fmt")//假设是一群小孩在玩这个游戏//创建一个小孩的结构体type BoyNode struct {No int //给每个小孩一个唯一的身份编号next *BoyNode //指向下一个小孩}//假设有number个小孩在玩游戏func AddBoyNode(number int) *BoyNode {head :=[详细]
-
golang逃逸分析和竞争检测
所属栏目:[大数据] 日期:2020-12-16 热度:134
最近在线上发现一块代码逻辑在执行N次耗时波动很大1ms~800ms,最开始以为是gc的问题,对代码进行逃逸分析,看哪些变量被分配到堆上了,后来发现是并发编程时对一个切片并发的写,导致存在竞争,类似下面的代码 func main() { //var count int array := make([]i[详细]
-
Golang channel 的基本使用方法
所属栏目:[大数据] 日期:2020-12-16 热度:163
package main import ( " fmt " " learner/Add " " time " ) // a. 普通类型,普通变量保存的就是值,也叫值类型 //b. 获取普通变量的内存地址,用,比如: var a int,获取a的内存地址: a // c. 指针类型,指针变量存的就是一个内存地址,这个地址指向值 //[详细]
-
Golang 实现守护主进程
所属栏目:[大数据] 日期:2020-12-16 热度:62
package main import ( " fmt " " runtime " " sync " " time " ) func test_goroutine() { fmt.Println( " 函数被执行了************************* " ) } func main() { // 测试多核并行化 // 在执一些昂贵的计算任务时,如果希望使用服务器的多核特性来尽量[详细]
-
在MacOS上使用gdb(cgdb)调试Golang程序
所属栏目:[大数据] 日期:2020-12-16 热度:101
如果你在MacOS上使用GDB工具载入Golang程序时无法载入,这篇文章可以解决。本文不具体介绍调试的方法,网上的文章太多了就不赘述了。 cgdb使用的是gdb的内核,方法和原理试用本文。 问题分析 最近接触Go语言,看了慕课网的这篇文章,里面介绍的Go函数,有一[详细]
-
golang开发遇到过的坑
所属栏目:[大数据] 日期:2020-12-16 热度:150
1、defer用法 // 正确的用法 func rightPrint() (data string ) { defer func() { fmt.Printf( " rsp %+v " ,data) }() data = " AAA " return } // 错误的用法 func wrongPrint() (data string ) { defer fmt.Printf( " rsp %+v " ,data) data = " AAA " re[详细]
-
Golang——垃圾回收GC(2)
所属栏目:[大数据] 日期:2020-12-16 热度:128
1 垃圾回收中的重要概念 1.1 定义 In computer science,garbage collection (GC) is a form of automatic memory management. The garbage collector,or just collector,attempts to reclaim garbage,or memory occupied by objects that are no longer in u[详细]
-
golang ----gc问题
所属栏目:[大数据] 日期:2020-12-16 热度:84
go程序内存占用大的问题 这个问题在我们对后台服务进行压力测试时发现,我们模拟大量的用户请求访问后台服务,这时各服务模块能观察到明显的内存占用上升。但是当停止压测时,内存占用并未发生明显的下降。花了很长时间定位问题,使用gprof等各种方法,依然[详细]
-
Golang-map
所属栏目:[大数据] 日期:2020-12-16 热度:153
map和其他语言的hashmap是一样的,是一个kv的数据集合,是按照哈希算法得到k的一个整数,将v存到一个数组的k位。 1 package main 2 3 import ( 4 " fmt " 5 ) 6 7 func main() { 8 9 map1 := make(map[ int ] string ) 10 map1[ 5 ] = " hello " 11 map1[ 7[详细]
-
golang使用redis
所属栏目:[大数据] 日期:2020-12-16 热度:80
redigo使用 手册地址:http://godoc.org/github.com/garyburd/redigo/redis github地址:https://github.com/garyburd/redigo 获取地址,进入GOPATH使用go get下载包 go get github.com/garyburd/redigo/redis 连接redis读写数据 package mainimport ("fmt""[详细]
-
Golang:sync.Map
所属栏目:[大数据] 日期:2020-12-16 热度:91
由于map在gorountine 上不是安全的,所以在大量并发读写的时候,会出现错误。 在1.9版的时候golang推出了sync.Map. sync.Map 通过阅读源码我们发现sync.Map是通过冗余的两个数据结构(read、dirty),实现性能的提升。 为了提升性能,load、delete、store等操作[详细]
