boshuzhang的专栏

私信 关注
boshuzhang
码龄9年
  • 1,429,654
    被访问量
  • 240
    原创文章
  • 2,149
    作者排名
  • 146
    粉丝数量
  • 毕业院校 聊城大学
  • 目前就职 无
  • 于 2012-07-31 加入CSDN
获得成就
  • 获得179次点赞
  • 内容获得66次评论
  • 获得363次收藏
荣誉勋章
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

超级强&全的go学习网站

http://www.topgoer.com/%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B/
原创
6阅读
0评论
0点赞
发布博客于 6 天前

mysql导入csv文件

mysql --local-infile -uhoolai -phoolai ExtGameServer -e "LOAD DATA LOCAL INFILE '/root/share/removeCode/betaRebate.csv' INTO TABLE BETAREBATEINFO FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r
' IGNORE 1 LINES"LOAD DATA LOCAL INFILE '/root/share/remove
原创
15阅读
0评论
0点赞
发布博客于 22 天前

mysql 导入csv文件

mysql 导入csv文件linux下查看文件编码及修改编码http://blog.csdn.net/jnbbwyth/article/details/6991425/从FTP服务器上下载csv文件下来,我在Linux下查看得知文件的格式为(具体方法参考http://blog.csdn.net/jnbbwyth/article/details/6991425/):set fileencoding但是我直接使用load data导入的时候,发现中文的列,按照网上的方法修改文件的字符编码还是不行我的
转载
14阅读
0评论
0点赞
发布博客于 22 天前

超级好的golang学习网址

https://lessisbetter.site/subject/http://www.topgoer.com/%E5%BE%AE%E6%9C%8D%E5%8A%A1/GoMicro%E5%85%A5%E9%97%A8.htmlhttp://wen.topgoer.com/docs/gozhuanjia/chapter044.3-escape_analysis
原创
26阅读
0评论
0点赞
发布博客于 1 月前

内存分析脚本

#!/bin/bashprog_name="your_programe_name"prog_mem=$(pidstat -r -u -h -C $prog_name |awk 'NR==4{print $12}')time=$(date "+%Y-%m-%d %H:%M:%S")echo $time"\tmemory(Byte)\t"$prog_mem >>~/record/prog_mem.logcrontab -e*/1 * * * * ~/record/prog_mem.s.
原创
25阅读
0评论
0点赞
发布博客于 1 月前

linux最大连接数

https://www.cnblogs.com/chengtai/articles/6281792.html
转载
24阅读
0评论
0点赞
发布博客于 1 月前

高性能 Go 服务的内存优化 标准

https://www.jianshu.com/p/63404461e520?from=groupmessage
转载
12阅读
0评论
0点赞
发布博客于 1 月前

golang gc优化的几个点

记录几个gc 优化的点, 高频请求一定要注意: 1,函数尽量不要返回map, slice对象, 这种频繁调用的函数会给gc 带来压力。 2,小对象要合并。 3,函数频繁创建的简单的对象,直接返回对象,效果比返回指针效果要好。 4,避不开,能用sync.Pool 就用,虽然有人说1.10 后不推荐使用sync.Pool,但是压测来看,确实还是用效果,堆累计分配大小能减少一半以上。 5,类型转换要注意,官方用法消耗特别大,推荐使用雨痕的方式。 ...
转载
22阅读
0评论
0点赞
发布博客于 1 月前

go垃圾回收问题总结

============= 2014年7月7日,补充 =============之前回答问题的时候Go还处在1.1版本,到了1.2和1.3,Go的GC跟踪命令和GC内部实现已经有一些变化,并且根据评论中的反馈,这边一并做补充说明。Go 1.2之后的GC跟踪环境变量已经改为GODEBUG="gctrace=1",具体参数说明可以参考runtime包的文档。Go 1.3对GC做了优化,回收机制也改变了,从我的实验观测来看,用做内存存储时候产生的持久性的大量对象,一样是明显拖慢GC暂停时间的,但...
转载
15阅读
0评论
0点赞
发布博客于 1 月前

GDB如何使用符号表

登录SirDigitGDB如何使用符号表  如果现在有同一个工程构建出的Debug版和Release版可执行文件projectD和projectR,如下的命令可以帮助你把Debug版中的符号表加到Release版中,实现对Release版的调试。  1、objcopy --only-keep-debug projectD projectsymbol.dbg #生成符号表;  2、gdb -q --symbol=projectsymbol.dbg -exec=projectR #加载符.
转载
46阅读
0评论
0点赞
发布博客于 1 月前

jquery 下载地址

http://www.jq22.com/jquery-info122
原创
55阅读
0评论
0点赞
发布博客于 6 月前

Golang 1.13: 解决国内 go get 无法下载的问题

https://www.sunzhongwei.com/problem-of-domestic-go-get-unable-to-download?from=sidebar_new
原创
105阅读
0评论
0点赞
发布博客于 6 月前

beego写的blob 学习了

https://studygolang.com/articles/14278
原创
89阅读
1评论
0点赞
发布博客于 6 月前

一个golang牛人的blog  这里记录一下  以后慢慢学习

http://legendtkl.com/booklist/一个golang牛人的blog 这里记录一下 以后慢慢学习
原创
83阅读
0评论
0点赞
发布博客于 6 月前

goland + dlv

https://blog.csdn.net/foxlively/article/details/90697909
原创
120阅读
0评论
0点赞
发布博客于 6 月前

线程的查看以及利用gdb调试多线程

https://blog.csdn.net/zhangye3017/article/details/80382496
原创
94阅读
0评论
0点赞
发布博客于 8 月前

调试多线程程序

在某些操作系统(例如GNU / Linux和Solaris)中,单个程序可能具有多个执行线程。线程的精确语义因一个操作系统而异,但通常,一个程序的线程类似于多个进程,只是它们共享一个地址空间(也就是说,它们都可以检查和修改相同的变量)。另一方面,每个线程都有自己的寄存器和执行堆栈,也许还有私有内存。GDB提供了以下调试多线程程序的工具:自动通知新线程 '线程thread-id',在线程之间切换的命令 '信息线程',用于查询现有线程的命令 '线程适用[thread-id-list|全部]...
转载
101阅读
0评论
0点赞
发布博客于 8 月前

如何使用strace+pstack利器分析程序性能

引言有时我们需要对程序进行优化、减少程序响应时间。除了一段段地对代码进行时间复杂度分析,我们还有更便捷的方法吗?若能直接找到影响程序运行时间的函数调用,再有针对地对相关函数进行代码分析和优化,那相比漫无目的地看代码,效率就高多了。将strace和pstack工具结合起来使用,就可以达到以上目的。strace跟踪程序使用的底层系统调用,可输出系统调用被执行的时间点以及各个调用耗时;pstack工具对指定PID的进程输出函数调用栈。下面我们通过一个简单的消息收发程序,说明使用strace、pstack
转载
97阅读
0评论
0点赞
发布博客于 8 月前

linux命令-- pstack命令(跟踪进程栈)

linux命令-- pstack命令(跟踪进程栈)pstack是一个shell脚本,用于打印正在运行的进程的栈跟踪信息,它实际上是gstack的一个链接,而gstack本身是基于gdb封装的shell脚本.。此命令可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack 来确定进程挂起的位置。此命令允许使用的唯一选项是要检查的进程的 PID。与jstack功相比, 它能对潜在的死锁予以提示, 而pstack只提供了线索, 需要gdb进一步的确定。p
转载
166阅读
0评论
0点赞
发布博客于 8 月前

Linux操作系统的pstack工具

Linux操作系统的pstack工具Solaris操作系统提供了pstack工具,用来打印运行程序的线程堆栈信息。RedHat公司发行的Linux操作系统(RHEL,CentOS等等)也提供了pstack工具,只要安装gdb:# yum install gdb就会把pstack也一并安装成功。首先看一下pstack:# which pstack/usr/bin/pstack# ls -lt /usr/bin/pstacklrwxrwxrwx. 1 root root 6 Nov
转载
234阅读
0评论
0点赞
发布博客于 8 月前

linux 排查cpu负载过高异常

问:如何定位是哪个服务进程导致CPU过载,哪个线程导致CPU过载,哪段代码导致CPU过载?步骤一、找到最耗CPU的进程工具:top方法: 执行top -c ,显示进程运行信息列表 键入P (大写p),进程按照CPU使用率排序 图示:如上图,最耗CPU的进程PID为10765步骤二:找到最耗CPU的线程工具:top方法: top -Hp 10765 ,显示一个进程的线程运行信息列表 键入P (大写p),线程按照CPU使用率排序 图示:
转载
246阅读
0评论
0点赞
发布博客于 8 月前

c++基础总结

1 static(静态)变量有什么作用3个体明显的作用:1)在函数体内,静态变量具有“记忆”功能,即一个被声明为静态变量在一个函数被调用的过程中其值维持不变2)在模块内,它的作用域范围是有限制的,即如果一个变量被声明为静态的,那么该变量可以被模块内所有函数访问,但不能被模块外其他函数访问。3)内部函数应该在当前源文件中说明和定义,对于可在当前源文件以外使用的函数,应该在一个头文件中说明,使用这些函数的源文件要包含这个头文件。与局部变量和全局变量的区别:static全局变量和普通全局变量相比的区别在于
转载
82阅读
0评论
0点赞
发布博客于 9 月前

vs卸载不干净重新安装失败解决办法

https://blog.csdn.net/u014454538/article/details/86069806
原创
1300阅读
0评论
0点赞
发布博客于 9 月前

socket拆包与封包

对于基于TCP开发的通讯程序,有个很重要的问题需要解决,就是封包和拆包.下面就针对这个问题谈谈我的想法,抛砖引玉.若有不对,不妥之处,恳求大家指正.在此先谢过大家了.一.为什么基于TCP的通讯程序需要进行封包和拆包.TCP是个"流"协议,所谓流,就是没有界限的一串数据.大家可以想想河里的流水,是连成一片的,其间是没有分界线的.但一般通讯程序开发是需要定义一个个相互独立的数据包的,比如用于登陆的数据包,用于注销的数据包.由于TCP"流"的特性以及网络状况,在进行数据传输时会出现以下几种情况.假.
转载
355阅读
0评论
0点赞
发布博客于 9 月前

最好的6个Go语言Web框架

最好的6个Go语言Web框架翻译csdn研发技术最后发布于2017-12-07 14:26:37阅读数 170102收藏展开原文:Top 6 web frameworks for Go as of 2017作者:Edward Marinescu译者:roy译者注:本文介绍截至目前(2017年)最好的6个Go语言Web框架。以下为译文:GO 语言爱好者的最佳Web...
转载
654阅读
0评论
0点赞
发布博客于 1 年前

为什么会出现discard qualifiers错误

const 对象调用对象的非const函数会触发这个编译错误
原创
219阅读
0评论
0点赞
发布博客于 1 年前

算法学习网站

https://blog.csdn.net/v_july_v/article/details/6543438
原创
75阅读
0评论
0点赞
发布博客于 2 年前

算法学习网站

http://ddrv.cn/
原创
69阅读
0评论
0点赞
发布博客于 2 年前

linux: 编译hue碰到错误,郁闷了一天,在博士协助下花了45元,解决了

linux:编译hue碰到错误,郁闷了一天,在博士协助下花了45元,解决了(2014-04-25 15:22:40)转载▼ {standard input}: Assembler messages:{standard input}:468410: Warning: end of file not at end of a line; newline in...
转载
122阅读
0评论
0点赞
发布博客于 2 年前

很好的面试总结 网址

https://github.com/KeKe-Li/data-structures-questions?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
原创
64阅读
0评论
0点赞
发布博客于 2 年前

简单解决ImportError: No module named openpyxl,xlrd

简单解决ImportError: No module named openpyxl,xlrd原创aic1999发布于2018-04-05 14:10:27阅读数 28875收藏展开网上说要去site-packages目录下手动卸载了pandas包,然后再pip安装,但是!我不论是通过什么途径卸载了又安装都不行......常见库下有小东西出现这个问题,多数都...
转载
333阅读
0评论
0点赞
发布博客于 2 年前

Linux系统下查看版本信息

Linux系统下查看版本信息2018-03-19 16:53:10csdnszr阅读数 21852收藏更多分类专栏:Linux版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/szr4630/article/details/79613267查看Linux内...
转载
78阅读
0评论
0点赞
发布博客于 2 年前

很好的面试总结网址

https://github.com/KeKe-Li/data-structures-questions?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
原创
66阅读
0评论
0点赞
发布博客于 2 年前

golang面试题总结

https://mlog.club/article/5521
原创
562阅读
0评论
0点赞
发布博客于 2 年前

beego案例 百度网盘

https://www.jianshu.com/p/e927c89f0acahttps://pan.baidu.com/s/1kAtMKQ6fJtNaTOUa4kvVVw#list/path=%2F
原创
258阅读
0评论
0点赞
发布博客于 2 年前

golang 基础知识学习网站

https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/directory.md
原创
59阅读
0评论
0点赞
发布博客于 2 年前

beego使用简单案例

https://blog.csdn.net/rj2017211811/article/details/89702222
原创
178阅读
0评论
0点赞
发布博客于 2 年前

goweb几个好用的框架

https://www.cnblogs.com/desmond123/p/9821687.html
原创
228阅读
0评论
0点赞
发布博客于 2 年前

几种常用的go web框架

https://www.cnblogs.com/desmond123/p/9821687.html
原创
350阅读
0评论
0点赞
发布博客于 2 年前

gin中文文档

https://www.bookstack.cn/read/gin-doc/router.md
原创
457阅读
0评论
0点赞
发布博客于 2 年前

beego开发文档

https://www.kancloud.cn/hello123/beego/126139
原创
67阅读
0评论
0点赞
发布博客于 2 年前

beego 安装并创建项目

bee安装并创建项目1.下载bee源码下载地址为:https://github.com/beego/bee2.解压将下载的文件解压到最后的目录如下(相应目录的需要事先创建好,解压生产的目录名为bee-develop,重命名为bee):../src/github.com/beego/bee3.编译安装cd C:\Go\src\github.com\beego\beego b...
转载
1201阅读
0评论
0点赞
发布博客于 2 年前

golang panic

/* go panic panic 表示的意思就是有些意向不到的错误发生了 通常我们常用来表示程序正常运行的过程中 不应该出现的或者我们没有处理好的错误*/package mainimport ( "os")func main() { //我们使用panic来检查预期不到的错误 panic("a problem") /* ...
原创
77阅读
0评论
0点赞
发布博客于 2 年前

golang range函数

/*go range 函数range 函数是个神奇而有趣的内置函数你可以使用它来遍历数组切片字典当用于遍历数组和切片的时候 range函数返回索引和元素当用于遍历字典的时候 range函数返回字典的建和值*/package mainimport ( "fmt")func main() { /* 这里我们使用range来计算一...
原创
339阅读
0评论
0点赞
发布博客于 2 年前

golang sha1散列

/* go sha1 散列 sha1散列经常用来计算二进制或者大文本数据的短标识值*/package mainimport ( "crypto/sha1" "fmt")func main() { s := "sha2 this string" /* 生成一个hash的模式是sha1.New() ...
原创
54阅读
0评论
0点赞
发布博客于 2 年前

golang 字符串与byte切片

/* go string与byte切片之间的切换 string转换到byte数组时 每个byte保存字符串对应的字节的数值 go的字符串时utf-8编码的 每个字符长度是不确定的*/package mainimport ( "fmt")func main() { s1 := "abcd" //类型转换 b1 := []byte(s1)...
原创
1046阅读
0评论
0点赞
发布博客于 2 年前

golang switch

/* go switch语句 当条件判断分支太多的时候 我们会使用switch语句来优化*/package mainimport ( "fmt" "time")func main() { i := 2 switch i { case 1: fmt.Println("one") case 2: ...
原创
47阅读
0评论
0点赞
发布博客于 2 年前

golang url解析

/* go url解析 url提供了一种统一访问资源的方式 go里如何解析url*/package mainimport ( "fmt" "net/url" "strings")func main() { /* 我们将解析这个url 他包含了模式 验证信息 主机 端口 路径 查询参数 查询片段 ...
原创
671阅读
0评论
0点赞
发布博客于 2 年前

golang 互斥

/* go互斥 上面的例子汇总 我们看过了如何在多个协程之间 原子地访问计数器 对于更复杂的例子 我们可以使用Mutex来在多个协程之间安全地访问数据*/package mainimport ( "fmt" "math/rand" "runtime" "sync" "sync/atomic" "time")func m...
原创
98阅读
0评论
0点赞
发布博客于 2 年前

golang 信号处理

/* go信号处理 有的时候我们希望go能够智能地处理unix信号 例如我们希望一个server接收到一个SIGTERM信号后 能够自动地停止 使用channel来处理信号*/package mainimport ( "fmt" "os" "os/signal" "syscall")func main() { //go信号...
原创
219阅读
0评论
0点赞
发布博客于 2 年前

golang 关闭通道

/* go 关闭通道 关闭通道的意思是该通道将不再允许写入数据 这个方法可以让管道数据的接收端知道数据已经全部发送完成了*/package mainimport ( "fmt")func main() { //当我们数据发送完成后 我们关闭jobs通道 jobs := make(chan int, 5) done := make(cha...
原创
278阅读
0评论
0点赞
发布博客于 2 年前

golang 写文件

/*go写入文件go将数据写入文件的方法和上面介绍过的读取文件的方法类似*/package mainimport ("bufio""fmt""io/ioutil""os")func check(e error) {if e != nil {panic(e)}}func main() {...
原创
81阅读
0评论
0点赞
发布博客于 2 年前

golang命名返回值

/* go函数命名返回值 函数接收参数 在go中函数可以返回多个结果参数 而不仅仅是一个值 他们可以像变量那样命名和使用 如果命名了返回值参数 一个没有参数的return语句 会将当前的值作为返回值返回 注意 如果遇到if等代码块和返回值同名 还需要显示写出返回值*/package mainimport ( "fmt")func split(...
原创
450阅读
0评论
0点赞
发布博客于 2 年前

golang 函数回调

/* go函数回调 go支持函数回调 你可以把函数名称作为参数传递给另外一个函数 然后在别的地方实现这个函数*/package mainimport ( "fmt")/* 知识点: type xxx 基础类型 给基础类型起别名*/type Callback func(x, y int) intfunc main() { x, ...
原创
543阅读
0评论
0点赞
发布博客于 2 年前

golang命令行参数标记

/*go命令行参数标记命令行参数标记是为命令行程序指定选项参数的常用方法wc -l -l就是一个命令行参数标记go提供了flag包来支持基本的命令行标记解析*/package mainimport ("flag""fmt")func main() {/*基础的标记声明适用于 string integer bool选项...
原创
117阅读
0评论
0点赞
发布博客于 2 年前

golang命令行参数

/* go命令行参数 命令行参数是一种指定程序运行初始参数的常用方式*/package mainimport ( "fmt" "os")func main() { /* os.Args 提供了对命令行参数的访问 注意改切片的第一个元素是改程序的运行路径 os.Args[1:] 改程序的所有参数 */...
原创
67阅读
0评论
0点赞
发布博客于 2 年前

golang 可变参数列表

/* go可变长参数列表 支持可变长参数列表的函数可以支持任意个传入参数*/package mainimport ( "fmt")func sum(nums ...int) { fmt.Print(nums, " ") total := 0 for _, num := range nums { total += num...
原创
511阅读
0评论
0点赞
发布博客于 2 年前

golang 变量

/*go变量go是静态类型语言 变量是有明确类型的编译器会检查函数调用中 变量类型的正确性使用var关键字来定义变量boolstringint*/package mainimport ("fmt")func main() {/*var 关键字用来定义一个或者多个变量*/var a s...
原创
96阅读
0评论
0点赞
发布博客于 2 年前

golang 原子计数器

/* go原子计数器 go里面的管理协程状态的主要机制就是通道 多协程原子访问计数器的例子 sync/atomic*/package mainimport ( "fmt" "runtime" "sync/atomic" "time")func main() { var ops uint64 = 0 for i :...
原创
1273阅读
0评论
0点赞
发布博客于 2 年前

golang切片

/* go切片 切片是go语言的关键类型之一*/package mainimport ( "fmt")func main() { /* 和数组不同的是 切片的长度是可变得 我们可以使用内置的make来创建一个长度补位o的切片 */ s := make([]string, 3) s[0] = "a"...
原创
33阅读
0评论
0点赞
发布博客于 2 年前

golang 函数定义

/* go函数定义 函数是go语言的重要内容*/package mainimport ( "fmt")func plus(a int, b int) int { return a + b}func main() { res := plus(1, 2) fmt.Println(res)}//go的函数还有很多其他的特性 其中一个就是...
原创
163阅读
0评论
0点赞
发布博客于 2 年前

golang函数多返回值

/* go 函数多返回值 go语言内置支持多返回值 这个在go语言中用的很多 函数同时返回结果和错误信息*/package mainimport ( "fmt")func vals() (int, int) { return 3, 9}func main() { a, b := vals() // _ 下划线来忽略其他返回值...
原创
986阅读
0评论
0点赞
发布博客于 2 年前

golang Map

/* go字典 字典是go语言内置的关联数据类型 因为数组是索引对应数组元素 而字典是建对应值*/package mainimport ( "fmt")func main() { //创建一个字典可以使用内置函数make //make(map[建类型][值类型]) m:=make(map[string]int) //设置 ...
原创
50阅读
0评论
0点赞
发布博客于 2 年前

golang strings包提供的操作函数

/* go 字符串操作函数 strings 标准库提供了很多字符串操作相关的函数*/package mainimport ( "fmt" s "strings")var p = fmt.Printlnfunc main() { /* Contains Count HasPrefix H...
原创
46阅读
0评论
0点赞
发布博客于 2 年前

golang 格式化

/* go字符串格式化 go对字符串格式化提供了良好支持*/package mainimport ( "fmt" "os")type point struct { x, y int}func main() { /* go提供了几种打印格式用来格式化一般的go 下面的%v打印了一个point结构体的对象的值 ...
原创
76阅读
0评论
0点赞
发布博客于 2 年前

golang 使用协程和channel来实现工作池

/* go 工作池 使用goroutine 和channeL来实现工作池*/package mainimport ( "fmt" "time")func worker(id int, jobs <-chan int, result chan<- int) { for j := range jobs { time.Sleep...
原创
276阅读
0评论
0点赞
发布博客于 2 年前

golang 常量

/* go 常量 go支持定义字符常量 字符串常量 布尔常量 数值常量 const 关键字来定义常量*/package mainimport ( "fmt" "math")const s string = "constant"func main() { //常量必须有初始值 const n = 5000 const d = 2...
原创
95阅读
0评论
0点赞
发布博客于 2 年前

golang协程

/*go 并行功能goroutine是一个轻量级的线程*/package mainimport ( "fmt")func f(from string) { for i := 0; i < 3; i++ { fmt.Println(i) }}/* 知识点: go 函数 go func(){}() f...
原创
54阅读
0评论
0点赞
发布博客于 2 年前

golang并行通道

/* go并行通道channel Channel 是连接并行协程的通道 你可以向一个通道写入数据然后从另外一个通道读取出具*/package mainimport ( "fmt")func main() { /* 使用make(chan 数据类型)来创建一个Channel channel的类型就是他们所传递的数据类型 */...
原创
51阅读
0评论
0点赞
发布博客于 2 年前

golang打点器

/* go打点器 Timer是让你等待一段时间然后去做一件事情 这件事情只会做一次 而Ticker是让你按照一定的时间间隔循环地做一件事情 除非你手动挺住他*/package mainimport ( "fmt" "time")func main() { /* Ticker使用和Timer相似的机制 同样使用一个通道来发送数据...
原创
110阅读
0评论
0点赞
发布博客于 2 年前

golang 指针

/* go指针 go支持指针 可以用来给函数传递变量的引用 go没有像c/c++那样的引用 但是有指针*/package mainimport ( "fmt")//zeroval函数有一个int类型参数 这个时候传递给函数的变量的值func zeroval(ival int) { ival = 0}//zeriptr参数是int类型指针 这...
原创
108阅读
0评论
0点赞
发布博客于 2 年前

golang sort包内置类型排序

/*go 排序go的sort包实现了内置数据类型和用户自定义数据类型的排序功能内置数据类型的排序*/package mainimport ("fmt""sort")func main() {/*这些排序方法都是针对内置类型的这里的排序方法都是就地排序 也就是说排序改变了切片内容而不是返回一个新的切片*/...
原创
282阅读
0评论
0点赞
发布博客于 2 年前

golang 接口

/*go接口接口是一个方法签名的集合所谓方法签名 就是指方法的声明而不包括实现*/package mainimport ( "fmt" "math")type geometry interface { area() float64 perim() float64}type square struct { width, hei...
原创
18阅读
0评论
0点赞
发布博客于 2 年前

golang 数值

/* go数值 go有很多种数据类型 字符串类型 整形 浮点型 布尔型*/package mainimport ( "fmt")func main() { fmt.Println("go" + "lang") 1 + 1 7.0 / 3.0 true && false true || fal...
原创
62阅读
0评论
0点赞
发布博客于 2 年前

golang strconv 字符串解析为数字

/*go数字解析从字符串解析出数字是一个基本的 而且常见任务go内置的strconv 提供了数字解析功能*/package mainimport ( "fmt" "strconv")func main() { /* 使用ParseFloat 解析浮点数 64是说明使用多少位 精度来解析 */ f, _ :...
原创
505阅读
0评论
0点赞
发布博客于 2 年前

golang 数组

/* go数组 数组是一个具有相同数据类型的元素组成的固定长达的有序集合 数组是值类型 [10]int [20]int 是两种完全不同的两种数组类型 同类型的两个数组支持 == != 比较 数组作为参数时函数内部不改变数组内部的值 除非是传入数组的指针 *[2]int*/package mainimport ( "fmt")func main(...
原创
32阅读
0评论
0点赞
发布博客于 2 年前

golang 方法及struct的匿名字段方法继承

/* go方法 一般的函数定义叫做函数 定义在结构提上面的函数叫做该结构体的方法*/package mainimport ( "fmt")type rect struct { width int height int}/* 这个area方法有一个限定类型*rect 表示这个函数是定义在rect结构体上的方法*/func ...
原创
811阅读
0评论
0点赞
发布博客于 2 年前

golang 时间

/* go 时间 go提供了对时间和一段时间的支持*/package mainimport ( "fmt" "time")func main() { p := fmt.Println //获取当前时间 now := time.Now() p(now) /* 你可以提供年 月 日 等来创建一个时间 ...
原创
34阅读
0评论
0点赞
发布博客于 2 年前

批量修改文件编码为utf-8

import osfrom chardet import detectfileSuffix = input("请输入文件后缀")fns = []filedir = os.path.join(os.path.abspath('.'), "")file_name = os.listdir(os.path.join(os.path.abspath('.'), ""))for fn in f...
原创
5708阅读
0评论
2点赞
发布博客于 2 年前

golang时间戳

/* go时间戳 程序的一个通常需求是 计算从unix起始时间开始 到某个时刻的秒数 毫秒数 微妙数*/package mainimport ( "fmt" "time")func main() { /* 使用unix UnixNano 来分别获取从Unix起始时间到现在所经过的秒数和微妙数...
原创
56阅读
0评论
0点赞
发布博客于 2 年前

golang 时间格式化与解析

/* go时间格式化和解析 go使用模式匹配的方式来支持日期格式化和解析 知识点: 按照模式来 格式化或解析时间*/package mainimport ( "fmt" "time")func main() { p := fmt.Println t := time.Now() p(t.Format("2006-01-0...
原创
624阅读
0评论
0点赞
发布博客于 2 年前

golang正则表达式

/* go正则表达式 go内置了对正则表达式的支持 这里正则表达式常规用法例子*/package mainimport ( "bytes" "fmt" "regexp")func main() { /* 测试模式是否匹配字符串 */ match, _ := regexp.MatchString("p([a-...
原创
55阅读
0评论
0点赞
发布博客于 2 年前

golang 基于channel来同步数据

/* go状态协程 在上面的例子中 我们演示了如何通过使用 mutex来在多个协程之间共享状态 另外一种方法是使用协程内置的同步机制来实现 这种基于通道的方法和go的通过消息共享内存 保证每份数据为单独的协程所有的理念一直的*/package mainimport ( "fmt" "math/rand" "sync/atomic" ...
原创
722阅读
0评论
0点赞
发布博客于 2 年前

golang 环境变量

/* go环境变量 环境变量是一种很普遍的将配置信息传递给Unix程序的机制*/package mainimport ( "fmt" "os" "strings")func main() { /* 为了设置一个key/value对 使用os.Setenv 为了获取一个key的value 使用os.Getenv...
原创
51阅读
0评论
0点赞
发布博客于 2 年前

golang helloworld 实例

/* go hello world*/package mainimport ( "fmt")func main() { fmt.Println("hello world")}/* 为了使一个go文件能够编译为可执行文件 包名必须是main*/...
原创
281阅读
0评论
0点赞
发布博客于 2 年前

golang 结构体

/*go结构体go语言结构体数据类型是将各个类型的变量定义的集合通常用来表示记录*/package mainimport ( "fmt")/* 知识点: type struct{ } 里面的变量之间不需要加逗号*///这个person结构体有name和age成员type person struct { na...
原创
269阅读
0评论
1点赞
发布博客于 2 年前

golang 自定义排序

/* go自定义排序 有的时候我们希望排序不是仅仅按照自然顺序排序 例如我们希望按照字符串的长度来对一个字符串 数组排序而不是按照字母顺序来排序 这里我们介绍一下go的自定义排序*/package mainimport ( "fmt" "sort")/* 为了能够使用自定义函数来排序 我们需要一个对应的排序类型*/type...
原创
146阅读
0评论
0点赞
发布博客于 2 年前

golang 计时器

/*go计时器我们有的时候希望go 在未来的某个时刻执行或者是以一定的时间间隔重复执行go内置的timer和ticker功能使得这些任务变得简单了*/package mainimport ( "fmt" "time")/* 知识点: time.NewTimer() <-timer1.C timer1.Stop()...
原创
1168阅读
0评论
0点赞
发布博客于 2 年前

golang 请求处理频率控制

/* go请求处理 频率控制 频率控制是控制资源利用和保证服务高质量的重要机制 go可以使用goroutine channel ticker来以优雅的方式支持频率控制*/package mainimport ( "fmt" "time")func main() { /* 首先我们看下基本的频率限制 假设我...
原创
388阅读
0评论
0点赞
发布博客于 2 年前

golang读取文件

/* go读取文件 读写文件是很多程序的基本任务*/package mainimport ( "bufio" "fmt" "io" "io/ioutil" "os")/* 读取文件的函数调用大多需要检查错误 使用下面这个错误检查方法可以方便点*/func check(e error) { if e != ...
原创
47阅读
0评论
0点赞
发布博客于 2 年前

golang 使用channel time.After select 实现超时

/* go超时 超时对那些连接外部资源的程序来说是很重要的 否则就需要限定执行时间 go里面实现超时很简单 我们可以使用channel和select很容易做到*//* 知识点: channel select 实现超时 time.Sleep() <- -> ...
原创
536阅读
0评论
0点赞
发布博客于 2 年前

golang 进程执行外部命令

/* go进程执行 去触发执行一个外部进程 go进程里面可以访问外部进程的信息 执行一个外部进程来代替当前的go进程 go 提供一个exec函数*/package mainimport ( "os" "os/exec" "syscall")func main() { /* 本例中我们使用ls来演示 ...
原创
526阅读
0评论
0点赞
发布博客于 2 年前

golang调用外部进程

/* go进程触发 有的时候 我们需要从go程序里面触发一个其他的非go进程来执行*/package mainimport ( "fmt" "io/ioutil" "os/exec")func main() { /* 我们从一个简单的命令开始这个命令不需要任务参数 或者输入 仅仅向stdout输出一些信息...
原创
971阅读
0评论
0点赞
发布博客于 2 年前

golang递归函数

//go递归函数package mainimport ( "fmt")func fact(n int) int { if n == 0 { return 1 } return n * fact(n-1)}func main() { fmt.Println(fact(7))}...
原创
130阅读
0评论
0点赞
发布博客于 2 年前

golang 通道方向

/* go通道方向 当使用通道作为函数的参数时 你可以指定该通道是只读的还是只写的 这种设置有时候会提高程序的参数类型安全*/package mainimport ( "fmt")/* 这个ping函数 只接收能够发送数据的通道作为参数 试图从这个通道接收数据 会导致编译错误 这里只写的定义方式为 chan<- stri...
原创
124阅读
0评论
0点赞
发布博客于 2 年前

golang 通道同步功能

/* go通道的同步功能 我们使用通道来同步协程之间的执行 下面的例子是通过获取同步通道数据 来阻塞程序执行的方法来等待另一个协程运行结束的 也就是说main函数所在的协程在运行到《-done 语句的时候等待woker 函数所在的协程执行完成 向通道写入数据后才会继续执行*/package mainimport ( ...
原创
211阅读
1评论
0点赞
发布博客于 2 年前

golang带缓冲的通道

//go通道缓冲 使我们可以异步的读写通道/*默认情况下 通道是不带缓冲的发送端发送数据同时必须又接收端相应的接收数据而带缓冲区的通道则允许发送端的数据发送和接收端的数据获取处于异步状态就是说发送端发送的数据可以防范缓冲区里面 可以等待接收端取获取数据而不是立刻需要接收端去获取数据不过由于缓冲区的大小是有限的所以还是必须有接收端来接收数据否则缓冲区已满数据发送端就 无法再发送...
原创
577阅读
0评论
0点赞
发布博客于 2 年前

golang通道选择 select

/* go通道选择 Select go 的select关键字可以让你同时等待多个通道操作 将协程 通道和select结合起来构成了go的一个强大特性*/package mainimport ( "fmt" "time")func main() { //本例中 我们从两个通道中选择 /* make()...
原创
236阅读
0评论
0点赞
发布博客于 2 年前

golang遍历通道

/* go遍历通道 我们知道range函数可以遍历数组 切片 字典 这里我们可以使用range函数 来遍历通道以接收通道数据*/package mainimport ( "fmt")func main() { //遍历queue通道里面的两个数据 /* 知识点: make() ...
原创
837阅读
0评论
0点赞
发布博客于 2 年前

go 类型断言

/*go错误处理在go里面通常采用显示返回错误代码的方式来进行错误处理go的这种错误处理方式使得我们能够容易 函数可能返回的错误*/package mainimport ( "errors" "fmt")//go语言里面约定错误代码是函数的最后一个返回值//并且类型是error这是一个内置的接口func f1(arg int) (int, error) ...
原创
236阅读
0评论
0点赞
发布博客于 2 年前