上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 51 下一页
摘要: redis hash的底层是压缩列表 和 哈希表两种形式 ,哈希表的形式是下面这样一层层嵌套的 , 转载自公众号 CodeSheep 源码中这几种类型的定义 这里面的哈希结点dictEntry使用链地址法解决哈希冲突问题 字典dict里存了两个哈希表dictht , 用于处理rehash过程 , 哈 阅读全文
posted @ 2020-12-17 13:21 唯一客服系统开发笔记 阅读(635) 评论(0) 推荐(0) 编辑
摘要: Golang开发 1.GO语言基础 [日常] 搭建golang开发环境 [日常] Go语言圣经前言 [日常] Go语言圣经-声明,变量,赋值,类型,包和文件习题 [日常] Go语言圣经--作用域,基础数据类型,整型 [日常] Go语言圣经--浮点数习题 [日常] Go语言圣经--复数,布尔值,字符串 阅读全文
posted @ 2020-12-17 11:29 唯一客服系统开发笔记 阅读(650) 评论(1) 推荐(0) 编辑
摘要: ls命令是最常用的linux命令之一了 , 当要按时间或者按照大小进行排序文件的时候 , 可以使用以下参数 按时间倒序排列 ll -tr -t是按时间排序 -r是倒序 按大小倒序排列 ll -Srh -S 大写S是按大小排序 -r是倒序 -h是格式化文件大小, 看起来更直观 阅读全文
posted @ 2020-12-15 19:04 唯一客服系统开发笔记 阅读(1739) 评论(0) 推荐(0) 编辑
摘要: go-fly客服系统快捷回复功能 , 需要获取到分组名以及分组名下的回复内容 数据库的表结构是 , group_id是关联字段 , user_id是用户id: CREATE TABLE `reply_group` ( `id` int(11) NOT NULL AUTO_INCREMENT, `gr 阅读全文
posted @ 2020-12-15 18:58 唯一客服系统开发笔记 阅读(1644) 评论(0) 推荐(0) 编辑
摘要: 前面我们使用list实现过队列 , 现在就来看一下list的底层结构 list有两种实现方式: 1. 压缩链表 压缩列表(ziplist)是Redis为了节省内存而开发的,是由一系列特殊编码的连续内存块组成的顺序型数据结构,一个压缩列表可以包含任意多个节点(entry),每个节点可以保存一个字节数组 阅读全文
posted @ 2020-12-14 19:04 唯一客服系统开发笔记 阅读(1050) 评论(0) 推荐(0) 编辑
摘要: 上一篇是单机当前进程的滑动窗口限流 , 这一个是使用go redis list结构实现的滑动窗口限流 , 原理都一样 , 但是支持分布式 原理可以参考上一篇介绍 func LimitFreqs(queueName string, count uint, timeWindow int64) bool 阅读全文
posted @ 2020-12-14 18:42 唯一客服系统开发笔记 阅读(1103) 评论(0) 推荐(0) 编辑
摘要: 本代码基于原博客java版本的GO实现 , 原文解释也比较详细 , 这里也放上原文链接:https://www.cnblogs.com/dijia478/p/13807826.html 具体解释如下 , 代码在最下面 1.10秒内通过5次 , 这条线就是队列list,当第一个事件进来,队列大小是0, 阅读全文
posted @ 2020-12-14 14:06 唯一客服系统开发笔记 阅读(1664) 评论(0) 推荐(1) 编辑
摘要: 部门中有个字段存储的是十进制数字 , 但是表示的意思是转成二进制后 ,每一个位代表不同功能的开关状态 当超过32个功能开关的时候 , 就需要将int类型转换成bigint类型 , 原因就是int只能存储4个字节也就是2的32次方的整型值 , 装不下了, 下面就是具体的存的范围 bigint从 -2^ 阅读全文
posted @ 2020-12-14 11:48 唯一客服系统开发笔记 阅读(2144) 评论(0) 推荐(0) 编辑
摘要: 今天听到看部门同事有遇到IO过高的问题 , 简单的查询了下 iostat命令: %user:CPU处在用户模式下的时间百分比。 %nice:CPU处在带NICE值的用户模式下的时间百分比。 %system:CPU处在系统模式下的时间百分比。 %iowait:CPU等待输入输出完成时间的百分比。 %s 阅读全文
posted @ 2020-12-11 11:10 唯一客服系统开发笔记 阅读(828) 评论(0) 推荐(0) 编辑
摘要: 随着业务的增长,一般的公司都会经历一个从单库单表到分库分表的过程 , 需要考虑以下要素判断是否开始分库分表 1. 如果mysql单库的QPS超过1000就要考虑分库了 , 一般根据业务进行分库 目前新浪邮箱的主库是sinanet 各种辅助库 userservice客服系统 sinastore 文件存 阅读全文
posted @ 2020-12-10 17:20 唯一客服系统开发笔记 阅读(1072) 评论(0) 推荐(0) 编辑
摘要: 博客园从今天上午就开始报502错误 , 他的原因还不知道 , 暂时先说下我们遇到502的排查情况 最大的可能性就是后端的服务不能支撑前端过来的tcp请求连接,包括连接数据库服务时的连接数问题 1. php-fpm的进程是否启动 ,没启动肯定报这个错误 2. tcp连接数超过了fpm的进程数 nets 阅读全文
posted @ 2020-12-10 14:27 唯一客服系统开发笔记 阅读(693) 评论(0) 推荐(0) 编辑
摘要: 此处的限制是以下几个部分 每一个tcp的网络连接也是一个socket文件 , 所以有文件句柄数限制 系统级:当前系统可打开的最大数量,通过fs.file-max参数可修改用户级:指定用户可打开的最大数量,修改/etc/security/limits.conf进程级:单个进程可打开的最大数量,通过fs 阅读全文
posted @ 2020-12-10 13:45 唯一客服系统开发笔记 阅读(519) 评论(0) 推荐(0) 编辑
摘要: 在分布式的业务中 , 如果有的共享资源需要安全的被访问和处理 , 那就需要分布式锁 分布式锁的几个原则; 1.「锁的互斥性」:在分布式集群应用中,共享资源的锁在同一时间只能被一个对象获取。 2. 「可重入」:为了避免死锁,这把锁是可以重入的,并且可以设置超时。 3. 「高效的加锁和解锁」:能够高效的 阅读全文
posted @ 2020-12-09 19:00 唯一客服系统开发笔记 阅读(3558) 评论(0) 推荐(0) 编辑
摘要: 1秒=1000毫秒 1毫秒=1000微秒 1微秒=1000纳秒 fmt.Printf("时间戳(秒):%v;\n", time.Now().Unix()) fmt.Printf("时间戳(纳秒):%v;\n",time.Now().UnixNano()) fmt.Printf("时间戳(毫秒):%v 阅读全文
posted @ 2020-12-09 14:26 唯一客服系统开发笔记 阅读(3304) 评论(0) 推荐(0) 编辑
摘要: 当查询非主键的字段时 , MyISAM查询性能更好,从索引文件数据文件的设计来看 , myisam每一个索引字段都有上面的索引树: MyISAM直接找到物理地址后就可以直接定位到数据记录,但是InnoDB查询到叶子节点后,还需要再查询一次主键索引树,才可以定位到具体数据。 等于MyISAM一步就查到 阅读全文
posted @ 2020-12-09 13:39 唯一客服系统开发笔记 阅读(996) 评论(0) 推荐(0) 编辑
摘要: MyISAM用的是非聚集索引方式,即数据和索引落在不同的两个文件上(MYD是数据文件 , MYI是索引文件)。 MyISAM在建表时以主键作为KEY来建立主索引B+树,树的叶子节点存的是对应数据的物理地址。我们拿到这个物理地址后,就可以到MyISAM数据文件中直接定位到具体的数据记录了。 当我们为某 阅读全文
posted @ 2020-12-09 13:32 唯一客服系统开发笔记 阅读(1562) 评论(0) 推荐(1) 编辑
摘要: InnoDB是聚集索引方式,因此数据和索引都存储在同一个文件里。 首先InnoDB会根据主键ID作为KEY建立索引B+树,如左下图所示,而B+树的叶子节点存储的是主键ID对应的数据 比如在执行select * from user_info where id=15这个语句时 InnoDB就会查询这颗主 阅读全文
posted @ 2020-12-09 13:29 唯一客服系统开发笔记 阅读(1388) 评论(0) 推荐(0) 编辑
摘要: 联合索引有个最左前缀原则 , 这个原则的原因是这样的 比如有个联合索引 (b,c,d) 在索引的排序上 , 是先按b排序 , 再按c排序 , 再按d排序 比如有如下数据: a 是主键 , b c d创建了联合索引 生成的索引结构为: 看最后的叶子节点数据的排序 , 先按第一行b 排序 , 再按第二行 阅读全文
posted @ 2020-12-09 12:03 唯一客服系统开发笔记 阅读(1274) 评论(0) 推荐(0) 编辑
摘要: 一般想到的strconv.Atoi()转成的是int型的 下面这种是转成int64型的 strconv.ParseInt("111", 10, 64) func ParseInt(s string, base int, bitSize int) (i int64, err error) 如果base 阅读全文
posted @ 2020-12-08 22:42 唯一客服系统开发笔记 阅读(4490) 评论(0) 推荐(0) 编辑
摘要: 一张图保存一下 红点是当前地址 白色箭头是新打开页面 黑色箭头是后退页面 栈的思想 , 后退就是栈的索引往下移动 , 前进就是往上移动 , 点击新页面就是当前索引位置往上的所有元素都删除 , 然后再插入新页面 阅读全文
posted @ 2020-12-08 16:09 唯一客服系统开发笔记 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 下面这个工具包下的函数 package utils import ( "crypto/md5" "encoding/hex" ) //md5加密 func Md5(src string) string { m := md5.New() m.Write([]byte(src)) res := hex. 阅读全文
posted @ 2020-12-08 11:39 唯一客服系统开发笔记 阅读(935) 评论(0) 推荐(0) 编辑
摘要: php中判断两个数组是否相同 , 如果是关联数组 , 可以直接使用==来进行判断 $c=array("a"=>"12"); $d=array("a"=>"12"); var_dump($c==$d);//true 如果是索引数组 , 可以使用array_diff来进行判断: if( !array_d 阅读全文
posted @ 2020-12-07 15:50 唯一客服系统开发笔记 阅读(1471) 评论(0) 推荐(0) 编辑
摘要: 打开file==>settings==>tools >file watchers 点击右边的加号 , 增加go fmt 打开 file > settings > Go >go modules 那个复选框勾上 阅读全文
posted @ 2020-12-03 16:14 唯一客服系统开发笔记 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 有个内部接口 , 另外同事会调用该接口 , 把一份邮件内容上传到这个接口 对方反应该接口有调用超时现象 排查思路; 排查access日志 , 看到有499状态码 , 响应时间是5秒 , 可以确定的是对方设置了超时时间是5秒 对方想要把超时时间尽量小 , 因此继续排查代码中可能速度慢的地方 , 使用s 阅读全文
posted @ 2020-12-02 15:49 唯一客服系统开发笔记 阅读(740) 评论(0) 推荐(0) 编辑
摘要: 早期版本的git , git add . 的时候不会把删除的文件加入索引 新版本的git add . 会把删除的也加入进去的 <pathspec>…​ 要从中添加内容的文件。Fileglobs(例如 *.c)可以用来添加所有匹配的文件。此外,还可以提供一个前导目录名(例如,指定 dir 以添加 di 阅读全文
posted @ 2020-11-30 13:56 唯一客服系统开发笔记 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 当访问一个接口出现这个错误时 504 Gateway Time-out , 说明是后端服务超时了 , 504是gateway timeout 网关超时 , 如果fpm响应的太慢 , 超过了nginx里面配置的fastcgi_read_timeout 超时时间 , 就会出现这个错误 可以有以下处理流程 阅读全文
posted @ 2020-11-30 11:08 唯一客服系统开发笔记 阅读(4127) 评论(0) 推荐(0) 编辑
摘要: 以下是上传图片文件时 , tcp的传输过程 15:38:07.695683 IP localhost.35648 > localhost.tproxy: Flags [S], seq 87768135, win 43690, options [mss 65495,sackOK,TS val 1301 阅读全文
posted @ 2020-11-26 16:04 唯一客服系统开发笔记 阅读(555) 评论(0) 推荐(0) 编辑
摘要: tcp每个数据包的最大传输大小 , 可以通过ifconfig查看 , 例如下面的展示: 这个是包括头部和数据的总大小 , MTU就是最大传输单元的意思 eth0网卡是 1500字节 lo网卡是 65536字节 阅读全文
posted @ 2020-11-26 15:30 唯一客服系统开发笔记 阅读(1143) 评论(0) 推荐(0) 编辑
摘要: 当在调试代码的时候 , 经常需要打印出查询的sql语句 , 如果代码里面没有记录 , 并且不能登录mysql服务器时 , 可以使用tcpdump来查看所有的sql tcpdump -i any dst port 3306 -l -s 0 -w -|strings -i any 任意网卡 dst po 阅读全文
posted @ 2020-11-26 14:44 唯一客服系统开发笔记 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 前几天腾讯云到期了 , 进行服务器迁移 , 利用镜像重装了系统 , 但是有些命令没有自动启动 , 需要进行手动启动 我安装了elasticsearch服务 , 但是找不到原服务器该命令安装目录了 , 新服务器也没法启动这个服务, 所以就用lsof来看看 先查进程id ps aux|grep sear 阅读全文
posted @ 2020-11-26 14:01 唯一客服系统开发笔记 阅读(889) 评论(0) 推荐(0) 编辑
摘要: 1. 切片slice的声明和初始化 , 如果只是单纯的声明 var list []string , 那么list现在是nil , 转换成json会变成null 2. 声明后使用了append函数增加了数据 , 那么就是正常的列表了 var list []string list=append(list 阅读全文
posted @ 2020-11-24 19:08 唯一客服系统开发笔记 阅读(569) 评论(0) 推荐(0) 编辑
摘要: 使用append函数的时候 , 要把扩展后的新slice重新赋值给原变量名 , 因为当底层数组的空间不足的时候 , 会扩充内存空间 ,内存空间会重新分配 通常我们并不知道append调用是否导致了内存的重新分配,因此我们也不能确认新的slice和原始的slice是否引用的是相同的底层数组空间。同样, 阅读全文
posted @ 2020-11-24 19:01 唯一客服系统开发笔记 阅读(546) 评论(0) 推荐(0) 编辑
摘要: 单例模式: 懒汉式和饿汉式 , 只有一个实例 原型模式: clone出来的 简单工厂: 具体工厂生产具体产品 工厂方法: 抽象工厂,具体工厂,抽象产品,具体产品 一个工厂生产一种产品 抽象工厂: 抽象工厂,具体工厂,抽象产品,具体产品 一个工厂生产多种产品,抽象工厂里面定义多个抽象方法让具体工厂实现 阅读全文
posted @ 2020-11-24 17:44 唯一客服系统开发笔记 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 开闭原则:对扩展开放,对修改关闭 里式替换原则:继承时尽量不要修改父类方法 依赖倒置原则:面向接口编程 单一职责:一个类尽量是单一功能 接口隔离:一个接口尽量是单一的功能 迪米特原则:最少知识法则,尽量少发生直接调用 合成复用原则:采用组合和聚合的方式代替继承 阅读全文
posted @ 2020-11-24 17:36 唯一客服系统开发笔记 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 在jwt-go里存储一个map[string]interface{} 比如 info["id"]=10 解析出来的时候 info["id"]断言的时候 , 应该用float64断言 , info["id"].(float64) 然后再去强转 Go语言提供了两种精度的浮点数,float32和float 阅读全文
posted @ 2020-11-23 16:58 唯一客服系统开发笔记 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 先来看一下概念: 一个类型声明语句创建了一个新的类型名称,和现有类型具有相同的底层结构。 type 类型名字 底层类型 gin框架中的实例: type H map[string]interface{} 类型声明语句一般出现在包一级,因此如果新创建的类型名字的首字符大写,则在包外部也可以使用。 上面的 阅读全文
posted @ 2020-11-21 11:39 唯一客服系统开发笔记 阅读(246) 评论(0) 推荐(0) 编辑
摘要: TIMESTAMP在MySQL5.5中的行为: 1.第一个未设置默认值的TIMESTAMP NOT NULL字段隐式默认值:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 2.后面未设置默认值的TIMESTAMP NOT NULL字段隐式默认值:0000- 阅读全文
posted @ 2020-11-20 11:14 唯一客服系统开发笔记 阅读(2299) 评论(0) 推荐(1) 编辑
摘要: gofly客服websocket部分存在groutine泄露 , 在每次连接ws的时候都开启了groutine , 但是没有关闭 pprof是go标准库自带的功能 , 引进去就能分析程序中的性能问题 , 在gin框架下可以使用第三方的"github.com/gin-contrib/pprof" en 阅读全文
posted @ 2020-11-19 19:18 唯一客服系统开发笔记 阅读(2222) 评论(0) 推荐(1) 编辑
摘要: 使用delete删除数据 , 是我们常用的用法 , 但是这样并没有真正的把数据删除掉 , mysql只是标志了一下删除 测试如下, audit_log表删除之前的数据文件的大小 [root@dev-3-144 shihan1]# ll /data2/mysql3960/sinanet/|grep a 阅读全文
posted @ 2020-11-19 16:30 唯一客服系统开发笔记 阅读(586) 评论(0) 推荐(0) 编辑
摘要: 在排查所有查询语句效率的过程中 , 发现了join关联表的时候 , 被驱动表没有走索引而是进行的全表扫描 实际的sql语句如下: explain select a.* from audit_rules a left join audit_rules_detail b on a.id=b.rule_i 阅读全文
posted @ 2020-11-19 15:33 唯一客服系统开发笔记 阅读(2760) 评论(0) 推荐(0) 编辑
上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 51 下一页