04 2021 档案
摘要:比如批量群发邮件的功能 因为发送邮件是个比较耗时的操作, 如果是传统的一个个执行 , 总体耗时比较长 可以使用golang实现一个协程池 , 并行发送邮件 pool包下的pool.go文件 package pool import "log" //具体任务,可以传参可以自定义操作 type Task
阅读全文
摘要:ps aux 可以看到进程的详细信息 配合grep 和 awk 命令 方便的查看内存 比如查看mysql使用的内存 ,占用246 M ps aux|grep mysql|awk '{print $6/1014 "M" "\t" $0}' 配合while循环实时查看内存情况 while true;do
阅读全文
摘要:grep可以在排查日志时获取关键字那一行 有时候想要看到前后几行的信息 获取前后10行信息 grep -C 10 xxxx 获取后10行信息 grep -A 10 xxxx 获取前10行信息 grep -B 10 xxxx
阅读全文
摘要:map不是并发安全的 , 当有多个并发的groutine读写同一个map时 会出现panic错误 concurrent map writes 例如下面的代码会出现这个错误: var mMap map[int]int func TestMyMap(t *testing.T) { mMap = make
阅读全文
摘要:同一个struct的2个实例能不能比较 == !=答案:可以能、也可以不能 两个不同的struct的实例能不能比较 == !=答案:可以能、也可以不能 如果结构体的所有成员变量都是可比较的,那么结构体就可比较如果结构体中存在不可比较的成员变量,那么结构体就不能比较 type s2 struct {
阅读全文
摘要:空接口 interface{} 可以存储任何类型的数据 但是在和slice以及map配合时 ,要注意 []interface{} 或者 map[string]interface{} 可能会犯这样的错误 cannot use (type []string) as type []interface {}
阅读全文
摘要:在很多启动脚本里开头看到有 set -e 这个的作用是当有命令错误时 , 直接停止执行下面的命令 例如: /ssss命令不存在报错后 , 这样会继续往下执行到 输出2222 加上后就不会执行下面的了
阅读全文
摘要:当执行go test某一个指定函数时报:testing: warning: no tests to run 例如 go test -v -run Mytest 测试文件名字必须是这个_test后缀 xxxx_test.go 如果不是指定函授运行 , 那么测试函数必须是Test开头 例如下面这个文件才
阅读全文
摘要:go for range循环map是无序的 , 这个是go team团队 有意为之 在进行循环遍历的时候 , 生成了一个随机数作为遍历开始的位置 可以for range循环map取出所有的key , sort.Strings(keys) , 排序所有的keys 再循环所有的keys , 按这个循环取
阅读全文
摘要:因为docker官方不支持 32位的系统 , 只支持amd64等 64位的系统 所以可以使用ubuntu 官方维护的版本 , 安装更简单 apt install docker.io 这个就是git上有人问的问题
阅读全文
摘要:使用git的时候 , 如果我们在自己的工作区中修改了代码 , 既没有git add , 更没有git checkout , 想要恢复成修改之前的样子 用 git checkout git checkout 文件 , 恢复某个文件
阅读全文
摘要:DEPENDENT SUBQUERY:子查询中的第一个SELECT,取决于外面的查询 , 注意如果外部查询的结果集数量比较大, 比如几十万上百万,就会执行几十万上百万次子查询,必然造成慢查。 很多使用子查询的人 想当然的认为 子查询会由内到外,先完成子查询的结果, 然后在用子查询来驱动外查询的表,完
阅读全文
摘要:group by 的原理是 先把数据根据分组字段 , 分好组 , 然后再每个分组里面执行具体的聚合操作 ONLY_FULL_GROUP_BY模式的限制是: SELECT list is not in GROUP BY clause and contains nonaggregated column
阅读全文
摘要:mysql 5.7及以上版本 , 在进行group by时 , 查询到的所有的列都要在group by字段里 , 这很明显不符合我们的目的 解决1: 没有参与分组的字段, 使用ANY_VALUE()函数包括 解决2: 临时取消ONLY_FULL_GROUP_BY 模式 select @@global
阅读全文
摘要:在go语言中查看所有执行的init函数 , 可以使用这个环境变量 linux下可以直接执行 GODEBUG=inittrace=1 具体命令 winddows下 set GODEBUG=inittrace=1 在执行命令
阅读全文
摘要:只要导入了包 , 那么该包的init函数就会执行 , 执行的顺序和优先级为下面这种图 有点类似函数栈 , 先执行最后导入包的init函数
阅读全文
摘要:os.Args是个[]string 里面存着路径和全部参数 直接拼接一下就获取到完整路径了 func GetAllExecutePath()string{ allPath:="" for _,arg:=range os.Args{ allPath+=" "+arg } return allPath
阅读全文
摘要:在自己的电脑修改了PATH环境变量 , 但是goland terminal不更新 goland只在开机启动的时候会去读取系统的PATH环境变量 1.可以重启电脑解决 2.手动在terminal中设置一下PATH
阅读全文
摘要:下载符合自己系统版本的压缩包 https://sourceforge.net/projects/mingw-w64/files/mingw-w64/ 我是64位 , 下载这个版本 直接解压以后 , 把bin目录放入 PATH环境变量就行了 如果是使用的goland ide 开发 要重启goland
阅读全文
摘要:linux下可以使用 kill 进程id 来杀死一个运行中的进程 windows下可以使用 taskkill.exe /f /pid 进程id 平常可能我们不会使用这样的命令来杀死进程 但是在写代码的过程中如果想在代码里kill进程 就可以使用这个方式了 比如下面的go代码 var command
阅读全文
摘要:go test 可以执行单元测试 , 一般把所有go文件测试单元都执行一遍 现在如果想要执行某一个指定的测试函数 , 可以像这样 go test -v -run 测试函数名字 例如: rpc_test.go package tools import ( "go-fly-muti/frpc" "tes
阅读全文
摘要:在项目里很多时候需要用icon , 如果不想用图片 , 可以用一下这个图标库 https://github.com/saeedalipoor/icono 使用很简单 <link rel="stylesheet" href="icono.min.css"> 引入后直接加class就ok了 例如我项目中
阅读全文
摘要:先上结论 , php的索引数组不是传统的从0开始的整数索引数组 , 而是一个关联数组 , 是一个有序的键值对 ,这个序就是定义时候的顺序 $arr=array('a','b') $arr[0] 这个的输出肯定是 a $arr=array(1=>'a',0=>'b') $arr[0] 输出b 说明ph
阅读全文
摘要:双击要编辑的页眉或页脚,或选择"页眉"或"页脚",然后选择"编辑页眉"或"编辑页脚"。 为页眉或页脚添加或更改文本,或执行下列任一操作: 删除首页页眉或页脚 选择“首页不同”。 添加页码 单击或点击需要编号的地方,选择" 页 码"并选择样式。 可能需要进行编辑,以更好地设置格式。 有关详细信息,请参
阅读全文
摘要:基础看的很多次,但是在实际的运用过程中 , 还是不能准确的理解变量和指针的细节 , 容易把自己搞晕 变量在运行的时候都有一个地址 , 这个地址代表了变量在内存中的位置 &变量 这就是"取地址" 操作 , 这样就可以取到这个变量的指针 a:=10 b:=&a b现在就是指针 对指针进行 * 操作 ,
阅读全文
摘要:golang main包下推荐只有一个main.go的入口文件 当有其他的go文件 , 并且在其他go文件中定义了函数 在main.go入口文件中调用了该函数 , 执行go run main.go , 会提示undefined 如果非得这样做那么go run 的时候把所有文件都得加上 , 否则默认只
阅读全文
摘要:当nginx里没有配置支持webocket时 , 但是已经配置了域名 比如:ws://gofly.sopans.com/ws_visitor 直接js连会返回400的错误 需要在nginx location 块下增加这三个header头 , 把http连接升级为websocket连接 proxy_h
阅读全文
摘要:当nginx里没有配置支持webocket时 , 但是已经配置了域名 比如:ws://gofly.sopans.com/ws_visitor 直接js连会返回400的错误 需要在nginx location 块下增加这三个header头 , 把http连接升级为websocket连接 proxy_h
阅读全文
摘要:php5.3之前的版本 , 只有引用计数 , 如果遇到循环引用的情况 , 会出现内存泄露 比如这样的代码: <?php $arr=array("tao"); $arr[]=$a; unset($arr) 虽然unset了$arr , 但是内存并不能回收 , 因为有引用自身这样的行为 php5.3 之
阅读全文
摘要:多次include同一个文件的需要注意 , 函数或者类会出现重复定义的错误 使用include_once 就可以避免出现这个错误,只会载入一次 include的路径问题: 被包含文件先按参数给出的路径寻找,如果没有给出目录(只有文件名)时则按照 include_path 指定的目录寻找。如果在 in
阅读全文
摘要:当tcp进行三次握手的时候 , 第一步是客户端发送syn请求 , 服务端返回syn+sck , 客户端响应sck 当syn请求超时的时候,tcp会进行超时重传 , 重传次数在这里查看 cat /proc/sys/net/ipv4/tcp_syn_retries 可以看到重传次数是6次 每次超时的时间
阅读全文
摘要:一般我们在windows获取mac开发代码 , 编译的时候如果要编译成指定系统的二进制文件 , 这时就需要使用交叉编译 1. 在Windows下编译Mac, Linux编译成 MacSET CGO_ENABLED=0SET GOOS=darwinSET GOARCH=amd64go build xx
阅读全文
摘要:当本地分支和远程修改了同一个文件代码,pull远程分支的代码的时候会出现文件冲突 出现这个错误 Please commit your changes or stash them before you merge. 可以先将当前的内容存储起来,git stash就可以把当前内容存储在栈内 git st
阅读全文
摘要:当在nil上调用一个属性或者方法的时候 , 会报空指针 尤其是结构体指针 , 非常容易出现这个问题 , 下面是测试代码 package tools import "fmt" func MyTest() { type MConn struct { Name string } var conn *MCo
阅读全文
摘要:在代码中看到这也的正则[\w\-\.]+ 所以来总结下\w与\W \w匹配任何单词字符包含下划线 >等价于 [A-Z a-z 0-9_] \W匹配任何非单词字符 (与上面的相反) >等价于 [^A-Z a-z 0-9_] 所以代码中的[\w\-\.]+ 意思是 [A-Z a-z 0-9 _\-\.]
阅读全文
摘要:现在的最新版不一定是1.16.3,安装方法一样,在https://studygolang.com/dl 找最新版的zip包 原文 我们的开发环境大部分还是在windows下,所以也要能够在windows下安装最新版go1.16.3 在这个地址下载go zip包 , https://studygola
阅读全文
摘要:使用github.com/emersion/go-smtp , 通过smtp发送通知邮件内容 加上html代码的内容后 , 在一些邮箱里会被原样展示 , 并没有展示成html , 原因是没有加Content-Type , 加上之后就可以了 tools/smtp.go package tools im
阅读全文
摘要:GMP是三个缩写 G : groutine M : Machine 系统线程 P : Processor 处理器 GMP调度就是循环在与P(处理器)绑定的M(系统线程)上寻找可执行的G(协程) 在当前P(处理器)上创建G(groutine)后 , 会把G放入P的本地队列或者全局队列 , 本地队列限制
阅读全文
摘要:普通占位符 占位符 说明 举例 输出 %v 相应值的默认格式。 Printf("%v", people) {zhangsan} %+v 打印结构体时,会添加字段名 Printf("%+v", people) {Name:zhangsan} %#v 相应值的Go语法表示 Printf("#v", pe
阅读全文
摘要:当出现406错误时 , 说明是客户端错误 , 客户端无法解析服务端返回的内容 一般是客户端发送的accept头里 , 设置了允许接受的类型 , 但是服务端没有按该格式返回 Accept代表发送端(客户端)希望接受的数据类型。 如果accept指定的类型和response返回的content-type
阅读全文
摘要:文章转载自"编程帮",也欢迎大家关注我的开源在线客服项目https://github.com.cnpmjs.org/taoshihan1991/go-fly,演示地址:https://gofly.sopans.com 1. GitHub 镜像访问 这里提供两个最常用的镜像地址: https://gi
阅读全文
摘要:分清这几块区域 工作区 ==> 暂存区 ==> 本地仓库 ==> 远程仓库 # 工作区 -> 暂存区 $ git add <file/dir> # 暂存区 -> 本地仓库 $ git commit -m "some info" # 本地仓库 -> 远程仓库 $ git push origin mas
阅读全文
摘要:在线客服下载地址:http://gofly.sopans.com/ 在mysql命令行下或者phpmyadmin网页管理面板里 , 创建好空数据库 , 例如: gofly. 编辑config/mysql.json , 更换为自己的数据库host/用户名/密码/数据库名 { "Server":"127
阅读全文
摘要:下载GOFLY客服(go语言开发的在线客服系统)系统后 ,运行起来服务 ,默认是监听8081端口 这个时候,只能使用http://ip:8081这样的形式来访问 ,不符合实际需求 下载安装配置nginx后,就可以通过域名来访问服务了 ubuntu系统安装nginx apt-get install c
阅读全文