摘要:
比如某个点击事件 , 两秒才能点一次 var ms= 1000*2; var lastClick = Date.now() - ms; $("a,div,p,li").click(function(){ if (Date.now() - lastClick >= ms) { lastClick =
阅读全文
posted @ 2021-05-12 23:11
唯一客服系统开发笔记
阅读(150)
推荐(0)
摘要:
当使用apt install php 安装完新版php以后 直接输入 php -v 结果显示仍然为旧版 是因为安装的时候 , 默认把新版php8安装到了 /usr/bin/php8.0 直接输入 /usr/bin/php8.0 -v是可以找到的 首先使用whereis php 查看旧版的是哪个 然后
阅读全文
posted @ 2021-05-12 17:16
唯一客服系统开发笔记
阅读(241)
推荐(0)
摘要:
好长时间没有用过composer , 现在都已经到了2.几了 , 如果用旧版的就会报错 windows下尽量用那个exe的安装器 , 这样就不需要设置环境变量了 , 而且winddows下需要bat的那几个脚本 , 用这个就更方便了 https://getcomposer.org/download/
阅读全文
posted @ 2021-05-12 15:59
唯一客服系统开发笔记
阅读(213)
推荐(0)
摘要:
现在有这样两种赋值方式 a := (*interface{})(nil) var c interface{} c = (*interface{})(nil) a现在是啥 ? (*interface{})(nil) 意思是把nil 类型转换为 *interface{}类型 a相当于 var a *in
阅读全文
posted @ 2021-05-11 13:20
唯一客服系统开发笔记
阅读(475)
推荐(0)
摘要:
CPU是有高速缓存的 , 三级缓存分别是 L1 , L2 , L3 L1缓存最贴近CPU , 所以速度也最快 数据在缓存中是一行一行存储的 , L1缓存一般的一行缓存64字节 一行能缓存64个字节 , 因为一个变量可能没有64字节大小 , 所以可能会缓存好几个变量 缓存需要保证一致性, 也就是当变量
阅读全文
posted @ 2021-05-11 10:07
唯一客服系统开发笔记
阅读(151)
推荐(0)
摘要:
当对同一个资源进行并发操作时 , 非常需要保证并发安全 , 常见的并发控制手段演进如下 锁 : 操作数据前锁定 , 操作后释放 , 但是这样就相当于串行化了 , 并发度不高 读写锁 : 读数据的时候加读锁 , 不妨碍其他读 , 只有修改的时候加写锁 , 这时会妨碍其他的读和写操作 数据多版本 : 操
阅读全文
posted @ 2021-05-11 09:47
唯一客服系统开发笔记
阅读(103)
推荐(0)
摘要:
计算机在表示数的时候 , 是二进制 , 如果是4位 对于正整数, 很简单就是 , 所有的位都是1表示最大的正整数15 但是对于负数 , 需要最高位用来表示正负符号 , 1是负数 , 0 是正数 所以4位的有符号整数最大是7 8位的是整数最大是 127 最小是-128 原始的二进制是原码 , 除了符号
阅读全文
posted @ 2021-05-10 16:49
唯一客服系统开发笔记
阅读(1153)
推荐(0)
摘要:
当使用PProf不是太详细的时候就可以使用 trace来查看跟踪了 这个命令可以配合PProf 先把trace文件下载下来 curl http://域名/debug/pprof/trace?seconds=20 > trace.out 使用 go tool trace C:\Users\shihan
阅读全文
posted @ 2021-05-10 11:12
唯一客服系统开发笔记
阅读(795)
推荐(0)
摘要:
PProf 是以 profile.proto来分析数据 可以采集程序执行时候的命令分析 可以采集HTTP服务时的运行时数据分析 可以通过go test 测试用例分析 有下面这些监控分析功能: CPU 分析 , 内存分析 , 阻塞分析 , 互斥锁分析 , Groutine分析 如果是http服务 ,
阅读全文
posted @ 2021-05-10 10:44
唯一客服系统开发笔记
阅读(670)
推荐(0)
摘要:
切片有个长度和容量两个参数 , 当长度超过容量的时候 , 容量会扩容2倍 当容量大于1024个的时候,容量会扩容为原来的1.25倍 从下面的代码中可以看得到 当增加新的元素的时候,超过了容量,但是容量大小小于1024的时候 , 是2倍扩容 当新增元素 , 超过了容量 , 并且容量大于1024 , 是
阅读全文
posted @ 2021-05-08 18:19
唯一客服系统开发笔记
阅读(224)
推荐(0)
摘要:
如果在一个页面上引入了多个jquery , 并且不能去掉的时候 , 或者$函数和自己的函数冲突的时候 可以使用这样的方式来解决 在引入jquery的后面加入 , 类似下面这样 <script src="https://cdn.jsdelivr.net/npm/jquery/dist/jquery.m
阅读全文
posted @ 2021-05-08 15:56
唯一客服系统开发笔记
阅读(128)
推荐(0)
摘要:
为了提升网络的处理能力 , 出现了I/O多路复用技术 比如常见的 select poll epoll Reactor 模型就是对上面I/O多路复用的封装 一般常使用如下几个组合使用方式: 单Reactor 单进程/线程 单Reactor 多进程/线程 多Reactor 多进程/线程 单Reactor
阅读全文
posted @ 2021-05-08 11:47
唯一客服系统开发笔记
阅读(253)
推荐(0)
摘要:
网络模型从最简单到后面的演进是这样的: 1. 普通socket模型 2. 多进程模型 3. 多线程模型 4. I/O多路复用 select poll 5. I/O多路复用 epoll 普通socket模型: 1对1的同步阻塞通信 , 一个进程只能处理一个连接 , 其他连接无法处理 多进程模型: 主进
阅读全文
posted @ 2021-05-08 11:15
唯一客服系统开发笔记
阅读(135)
推荐(0)
摘要:
当在代码中使用了第三方库 ,但是go.mod中并没有跟着更新的时候 如果直接run或者build就会报这个错误 missing go.sum entry for module providing package <package_name> 可以使用go mod tidy 来整理依赖 这个命令会:
阅读全文
posted @ 2021-05-07 22:58
唯一客服系统开发笔记
阅读(13786)
推荐(1)
摘要:
我们使用空接口 interface{} 可以接收任何类型的值 拿到以后我们还需要类型断言把类型转换回原始类型 ,空接口可以存储指针变量 , 也可以存储具体类型 断言回原始类型后有这样区别 如果是具体类型 , 直接赋值会报错 " cannot assign to xxxxx" 因为这时候是一个拷贝后的
阅读全文
posted @ 2021-05-07 15:51
唯一客服系统开发笔记
阅读(253)
推荐(0)
摘要:
go 1.16开始提供了embed指令 , 可以将静态资源嵌入到编译包里面 这样就可以把网页模板等文件直接打包了,就不需要每次还要拷贝静态文件 常规用法: import _ "embed" //go:embed hello.txt var s string func main() { print(s
阅读全文
posted @ 2021-05-07 11:43
唯一客服系统开发笔记
阅读(955)
推荐(0)
摘要:
Golang中的Map是一个键值对的数据结构 底层是一个哈希表,核心数据结构是数组+链表 哈希表自然会有哈希函数,通过一个哈希函数将key映射到哈希表的一个位置, 有哈希函数就会有哈希冲突 Golang是使用数组+链地址法解决哈希冲突,当多个key映射到同一位置的时候,会把冲突的key链接起来 形成
阅读全文
posted @ 2021-05-06 20:00
唯一客服系统开发笔记
阅读(350)
推荐(0)
摘要:
比如批量群发邮件的功能 因为发送邮件是个比较耗时的操作, 如果是传统的一个个执行 , 总体耗时比较长 可以使用golang实现一个协程池 , 并行发送邮件 pool包下的pool.go文件 package pool import "log" //具体任务,可以传参可以自定义操作 type Task
阅读全文
posted @ 2021-04-30 15:06
唯一客服系统开发笔记
阅读(328)
推荐(0)
摘要:
ps aux 可以看到进程的详细信息 配合grep 和 awk 命令 方便的查看内存 比如查看mysql使用的内存 ,占用246 M ps aux|grep mysql|awk '{print $6/1014 "M" "\t" $0}' 配合while循环实时查看内存情况 while true;do
阅读全文
posted @ 2021-04-29 22:19
唯一客服系统开发笔记
阅读(1782)
推荐(0)
摘要:
grep可以在排查日志时获取关键字那一行 有时候想要看到前后几行的信息 获取前后10行信息 grep -C 10 xxxx 获取后10行信息 grep -A 10 xxxx 获取前10行信息 grep -B 10 xxxx
阅读全文
posted @ 2021-04-29 14:22
唯一客服系统开发笔记
阅读(3240)
推荐(0)
摘要:
map不是并发安全的 , 当有多个并发的groutine读写同一个map时 会出现panic错误 concurrent map writes 例如下面的代码会出现这个错误: var mMap map[int]int func TestMyMap(t *testing.T) { mMap = make
阅读全文
posted @ 2021-04-29 13:54
唯一客服系统开发笔记
阅读(1519)
推荐(0)
摘要:
同一个struct的2个实例能不能比较 == !=答案:可以能、也可以不能 两个不同的struct的实例能不能比较 == !=答案:可以能、也可以不能 如果结构体的所有成员变量都是可比较的,那么结构体就可比较如果结构体中存在不可比较的成员变量,那么结构体就不能比较 type s2 struct {
阅读全文
posted @ 2021-04-29 10:39
唯一客服系统开发笔记
阅读(404)
推荐(0)
摘要:
空接口 interface{} 可以存储任何类型的数据 但是在和slice以及map配合时 ,要注意 []interface{} 或者 map[string]interface{} 可能会犯这样的错误 cannot use (type []string) as type []interface {}
阅读全文
posted @ 2021-04-28 19:21
唯一客服系统开发笔记
阅读(5736)
推荐(0)
摘要:
在很多启动脚本里开头看到有 set -e 这个的作用是当有命令错误时 , 直接停止执行下面的命令 例如: /ssss命令不存在报错后 , 这样会继续往下执行到 输出2222 加上后就不会执行下面的了
阅读全文
posted @ 2021-04-28 18:21
唯一客服系统开发笔记
阅读(336)
推荐(0)
摘要:
当执行go test某一个指定函数时报:testing: warning: no tests to run 例如 go test -v -run Mytest 测试文件名字必须是这个_test后缀 xxxx_test.go 如果不是指定函授运行 , 那么测试函数必须是Test开头 例如下面这个文件才
阅读全文
posted @ 2021-04-28 15:59
唯一客服系统开发笔记
阅读(1553)
推荐(0)
摘要:
go for range循环map是无序的 , 这个是go team团队 有意为之 在进行循环遍历的时候 , 生成了一个随机数作为遍历开始的位置 可以for range循环map取出所有的key , sort.Strings(keys) , 排序所有的keys 再循环所有的keys , 按这个循环取
阅读全文
posted @ 2021-04-28 14:29
唯一客服系统开发笔记
阅读(644)
推荐(0)
摘要:
因为docker官方不支持 32位的系统 , 只支持amd64等 64位的系统 所以可以使用ubuntu 官方维护的版本 , 安装更简单 apt install docker.io 这个就是git上有人问的问题
阅读全文
posted @ 2021-04-27 16:33
唯一客服系统开发笔记
阅读(869)
推荐(0)
摘要:
使用git的时候 , 如果我们在自己的工作区中修改了代码 , 既没有git add , 更没有git checkout , 想要恢复成修改之前的样子 用 git checkout git checkout 文件 , 恢复某个文件
阅读全文
posted @ 2021-04-27 14:18
唯一客服系统开发笔记
阅读(775)
推荐(0)
摘要:
DEPENDENT SUBQUERY:子查询中的第一个SELECT,取决于外面的查询 , 注意如果外部查询的结果集数量比较大, 比如几十万上百万,就会执行几十万上百万次子查询,必然造成慢查。 很多使用子查询的人 想当然的认为 子查询会由内到外,先完成子查询的结果, 然后在用子查询来驱动外查询的表,完
阅读全文
posted @ 2021-04-26 14:45
唯一客服系统开发笔记
阅读(995)
推荐(0)
摘要:
group by 的原理是 先把数据根据分组字段 , 分好组 , 然后再每个分组里面执行具体的聚合操作 ONLY_FULL_GROUP_BY模式的限制是: SELECT list is not in GROUP BY clause and contains nonaggregated column
阅读全文
posted @ 2021-04-26 11:24
唯一客服系统开发笔记
阅读(590)
推荐(0)
摘要:
mysql 5.7及以上版本 , 在进行group by时 , 查询到的所有的列都要在group by字段里 , 这很明显不符合我们的目的 解决1: 没有参与分组的字段, 使用ANY_VALUE()函数包括 解决2: 临时取消ONLY_FULL_GROUP_BY 模式 select @@global
阅读全文
posted @ 2021-04-26 10:35
唯一客服系统开发笔记
阅读(715)
推荐(1)
摘要:
在go语言中查看所有执行的init函数 , 可以使用这个环境变量 linux下可以直接执行 GODEBUG=inittrace=1 具体命令 winddows下 set GODEBUG=inittrace=1 在执行命令
阅读全文
posted @ 2021-04-25 17:35
唯一客服系统开发笔记
阅读(211)
推荐(0)
摘要:
只要导入了包 , 那么该包的init函数就会执行 , 执行的顺序和优先级为下面这种图 有点类似函数栈 , 先执行最后导入包的init函数
阅读全文
posted @ 2021-04-25 16:58
唯一客服系统开发笔记
阅读(689)
推荐(0)
摘要:
os.Args是个[]string 里面存着路径和全部参数 直接拼接一下就获取到完整路径了 func GetAllExecutePath()string{ allPath:="" for _,arg:=range os.Args{ allPath+=" "+arg } return allPath
阅读全文
posted @ 2021-04-23 19:02
唯一客服系统开发笔记
阅读(288)
推荐(0)
摘要:
在自己的电脑修改了PATH环境变量 , 但是goland terminal不更新 goland只在开机启动的时候会去读取系统的PATH环境变量 1.可以重启电脑解决 2.手动在terminal中设置一下PATH
阅读全文
posted @ 2021-04-23 17:35
唯一客服系统开发笔记
阅读(761)
推荐(0)
摘要:
下载符合自己系统版本的压缩包 https://sourceforge.net/projects/mingw-w64/files/mingw-w64/ 我是64位 , 下载这个版本 直接解压以后 , 把bin目录放入 PATH环境变量就行了 如果是使用的goland ide 开发 要重启goland
阅读全文
posted @ 2021-04-23 17:27
唯一客服系统开发笔记
阅读(3394)
推荐(1)
摘要:
linux下可以使用 kill 进程id 来杀死一个运行中的进程 windows下可以使用 taskkill.exe /f /pid 进程id 平常可能我们不会使用这样的命令来杀死进程 但是在写代码的过程中如果想在代码里kill进程 就可以使用这个方式了 比如下面的go代码 var command
阅读全文
posted @ 2021-04-23 16:31
唯一客服系统开发笔记
阅读(927)
推荐(0)
摘要:
go test 可以执行单元测试 , 一般把所有go文件测试单元都执行一遍 现在如果想要执行某一个指定的测试函数 , 可以像这样 go test -v -run 测试函数名字 例如: rpc_test.go package tools import ( "go-fly-muti/frpc" "tes
阅读全文
posted @ 2021-04-22 19:19
唯一客服系统开发笔记
阅读(3682)
推荐(0)
摘要:
在项目里很多时候需要用icon , 如果不想用图片 , 可以用一下这个图标库 https://github.com/saeedalipoor/icono 使用很简单 <link rel="stylesheet" href="icono.min.css"> 引入后直接加class就ok了 例如我项目中
阅读全文
posted @ 2021-04-22 16:54
唯一客服系统开发笔记
阅读(1913)
推荐(0)
摘要:
先上结论 , php的索引数组不是传统的从0开始的整数索引数组 , 而是一个关联数组 , 是一个有序的键值对 ,这个序就是定义时候的顺序 $arr=array('a','b') $arr[0] 这个的输出肯定是 a $arr=array(1=>'a',0=>'b') $arr[0] 输出b 说明ph
阅读全文
posted @ 2021-04-22 14:59
唯一客服系统开发笔记
阅读(239)
推荐(0)