上一页 1 2 3 4 5 6 ··· 29 下一页
摘要:1) 单线程 2) Init 函数 如果包P1中导入了包P2,则P2中的init函数Happens Before 所有P1中的操作main函数Happens After 所有的init函数3) Goroutine Goroutine的创建Happens Before所有此Goroutine中的操作G 阅读全文
posted @ 2020-12-28 15:07 陶士涵 阅读(36) 评论(0) 推荐(0) 编辑
摘要:在2014年2月10号以前的php存储变量的结构是: Zend/zend.h struct _zval_struct { /* Variable information */ zvalue_value value; /* value */ zend_uint refcount__gc; zend_u 阅读全文
posted @ 2020-12-28 12:06 陶士涵 阅读(12) 评论(0) 推荐(0) 编辑
摘要:php是弱类型语言 , 但是并不表示没有数据类型 PHP 支持 10 种原始数据类型。 四种标量类型: bool(布尔型)int(整型)float(浮点型,也称作 double)string(字符串) 四种复合类型: array(数组)object(对象)callable(可调用)iterable( 阅读全文
posted @ 2020-12-28 11:14 陶士涵 阅读(34) 评论(0) 推荐(0) 编辑
摘要:会panic的几种情况 1.向已经关闭的channel发送数据 2.关闭已经关闭的channel 3.关闭未初始化的nil channel 会阻塞的情况: 1. 从未初始化nil channel中读数据 2. 向未初始化nil channel中发数据 3.在没有读取的groutine时,向无缓冲ch 阅读全文
posted @ 2020-12-26 18:17 陶士涵 阅读(17) 评论(0) 推荐(0) 编辑
摘要:defer语句在不对的位置出现 , 会出现错误 file, err := os.Open("/null") defer file.Close() if err != nil { fmt.Println("open error! ", err) return } res, err := http.Ge 阅读全文
posted @ 2020-12-26 15:47 陶士涵 阅读(24) 评论(0) 推荐(0) 编辑
摘要:引用类型 1. 切片slice 2.映射map 3.函数func 4.方法(p *P)func 5.通道channel 值类型 数组 bool int string float 指针类型 nil可以赋值给引用类型和指针类型,不能赋值给值类型会报panic错误 阅读全文
posted @ 2020-12-26 14:52 陶士涵 阅读(20) 评论(0) 推荐(0) 编辑
摘要:Go语言的常量有个不同寻常之处。虽然一个常量可以有任意一个确定的基础类型,例如int或float64,或者是类似time.Duration这样命名的基础类型,但是许多常量并没有一个明确的基础类型。 math.Pi就是无类型的浮点数常量 const ( E = 2.718281828459045235 阅读全文
posted @ 2020-12-25 22:29 陶士涵 阅读(27) 评论(0) 推荐(0) 编辑
摘要:闭包的特点是: 1.函数里面嵌套函数 2.函数内部可以引用函数外部的参数和变量 3.参数和变量不会被垃圾回收机制回收 这个问题输出啥 function Foo(){ var i=0; return function(){ document.write(i++); } } var f1=Foo(), 阅读全文
posted @ 2020-12-25 16:59 陶士涵 阅读(17) 评论(0) 推荐(0) 编辑
摘要:一个字符串是一个不可改变的字节序列,字符串通常是用来包含人类可读的文本数据。和数组不同的是,字符串的元素不可修改,是一个只读的字节数组。每个字符串的长度虽然也是固定的,但是字符串的长度并不是字符串类型的一部分。由于Go语言的源代码要求是UTF8编码,导致Go源代码中出现的字符串面值常量一般也是UTF 阅读全文
posted @ 2020-12-25 10:54 陶士涵 阅读(32) 评论(0) 推荐(0) 编辑
摘要:go语言圣经中的解释: 数组和slice之间有着紧密的联系。 一个slice是一个轻量级的数据结构,提供了访问数组子序列(或者全部)元素的功能,而且slice的底层确实引用一个数组对象。 一个slice由三个部分构成:指针、长度和容量。 指针指向第一个slice元素对应的底层数组元素的地址,要注意的 阅读全文
posted @ 2020-12-23 22:21 陶士涵 阅读(34) 评论(0) 推荐(0) 编辑
摘要:函数的定义如下: spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] ) : bool 官方的解释是: 如果需要多条 autoload 函数,s 阅读全文
posted @ 2020-12-23 16:10 陶士涵 阅读(27) 评论(0) 推荐(0) 编辑
摘要:该函数的定义如下: class_exists ( string $class_name [, bool $autoload = true ] ) : bool 第二个参数就是表示是否自动调用autoload函数 class_name 类名。名字的匹配是不分区大小写的。 autoload 是否默认调用 阅读全文
posted @ 2020-12-23 15:54 陶士涵 阅读(27) 评论(0) 推荐(0) 编辑
摘要:目前go-fly客服系统是通过内存来记录客服和访客的映射关系 , 不能用于分布式的环境下 , 只能单机使用 , 后续如果要支持分布式 , 可以考虑redis的pub/sub机制 1.基于pub/sub的特点,他的典型使用场景就是实时消息系统,比如即时聊天,群聊等功能 2.还常用作减轻高并发的I/O写 阅读全文
posted @ 2020-12-18 10:53 陶士涵 阅读(36) 评论(0) 推荐(0) 编辑
摘要:我的爱发电主页地址是下面这里 https://afdian.net/@taoshihan 欢迎大家来用爱发电 , 支持鼓励菜地 阅读全文
posted @ 2020-12-17 23:01 陶士涵 阅读(26) 评论(0) 推荐(0) 编辑
摘要:在登录的时候 , 对安全性比较高的业务 , 需要进行限制指定IP或IP段才能登录 , 企邮企业有的就限制只能在本企业内登录 这个时候设计一下数据库 , 实现这个功能可以这样 表结构: CREATE TABLE `iplimit_list` ( `id` int(10) unsigned NOT NU 阅读全文
posted @ 2020-12-17 15:16 陶士涵 阅读(33) 评论(0) 推荐(0) 编辑
摘要:哈希表的完整结构 , 因为他是多个哈希一层层嵌套的 , 所以会是这样的结构 触发rehash的时机 字典类型容量变化过程叫做rehash,需要满足一定的条件才能触发扩容机制服务器当前没有进行BGWRITEAOF或者BGSAVE命令,且当前键值对个数超过一维数组的大小,才会触发扩容。 如果当前键值对个 阅读全文
posted @ 2020-12-17 13:49 陶士涵 阅读(52) 评论(0) 推荐(0) 编辑
摘要:redis hash的底层是压缩列表 和 哈希表两种形式 ,哈希表的形式是下面这样一层层嵌套的 , 转载自公众号 CodeSheep 源码中这几种类型的定义 这里面的哈希结点dictEntry使用链地址法解决哈希冲突问题 字典dict里存了两个哈希表dictht , 用于处理rehash过程 , 哈 阅读全文
posted @ 2020-12-17 13:21 陶士涵 阅读(31) 评论(0) 推荐(0) 编辑
摘要:Golang开发 1.GO语言基础 [日常] 搭建golang开发环境 [日常] Go语言圣经前言 [日常] Go语言圣经-声明,变量,赋值,类型,包和文件习题 [日常] Go语言圣经--作用域,基础数据类型,整型 [日常] Go语言圣经--浮点数习题 [日常] Go语言圣经--复数,布尔值,字符串 阅读全文
posted @ 2020-12-17 11:29 陶士涵 阅读(29) 评论(0) 推荐(0) 编辑
摘要:ls命令是最常用的linux命令之一了 , 当要按时间或者按照大小进行排序文件的时候 , 可以使用以下参数 按时间倒序排列 ll -tr -t是按时间排序 -r是倒序 按大小倒序排列 ll -Srh -S 大写S是按大小排序 -r是倒序 -h是格式化文件大小, 看起来更直观 阅读全文
posted @ 2020-12-15 19:04 陶士涵 阅读(59) 评论(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 陶士涵 阅读(110) 评论(0) 推荐(0) 编辑
摘要:前面我们使用list实现过队列 , 现在就来看一下list的底层结构 list有两种实现方式: 1. 压缩链表 压缩列表(ziplist)是Redis为了节省内存而开发的,是由一系列特殊编码的连续内存块组成的顺序型数据结构,一个压缩列表可以包含任意多个节点(entry),每个节点可以保存一个字节数组 阅读全文
posted @ 2020-12-14 19:04 陶士涵 阅读(39) 评论(0) 推荐(0) 编辑
摘要:上一篇是单机当前进程的滑动窗口限流 , 这一个是使用go redis list结构实现的滑动窗口限流 , 原理都一样 , 但是支持分布式 原理可以参考上一篇介绍 func LimitFreqs(queueName string, count uint, timeWindow int64) bool 阅读全文
posted @ 2020-12-14 18:42 陶士涵 阅读(82) 评论(0) 推荐(0) 编辑
摘要:本代码基于原博客java版本的GO实现 , 原文解释也比较详细 , 这里也放上原文链接:https://www.cnblogs.com/dijia478/p/13807826.html 具体解释如下 , 代码在最下面 1.10秒内通过5次 , 这条线就是队列list,当第一个事件进来,队列大小是0, 阅读全文
posted @ 2020-12-14 14:06 陶士涵 阅读(60) 评论(0) 推荐(0) 编辑
摘要:部门中有个字段存储的是十进制数字 , 但是表示的意思是转成二进制后 ,每一个位代表不同功能的开关状态 当超过32个功能开关的时候 , 就需要将int类型转换成bigint类型 , 原因就是int只能存储4个字节也就是2的32次方的整型值 , 装不下了, 下面就是具体的存的范围 bigint从 -2^ 阅读全文
posted @ 2020-12-14 11:48 陶士涵 阅读(104) 评论(0) 推荐(0) 编辑
摘要:今天听到看部门同事有遇到IO过高的问题 , 简单的查询了下 iostat命令: %user:CPU处在用户模式下的时间百分比。 %nice:CPU处在带NICE值的用户模式下的时间百分比。 %system:CPU处在系统模式下的时间百分比。 %iowait:CPU等待输入输出完成时间的百分比。 %s 阅读全文
posted @ 2020-12-11 11:10 陶士涵 阅读(59) 评论(0) 推荐(0) 编辑
摘要:随着业务的增长,一般的公司都会经历一个从单库单表到分库分表的过程 , 需要考虑以下要素判断是否开始分库分表 1. 如果mysql单库的QPS超过1000就要考虑分库了 , 一般根据业务进行分库 目前新浪邮箱的主库是sinanet 各种辅助库 userservice客服系统 sinastore 文件存 阅读全文
posted @ 2020-12-10 17:20 陶士涵 阅读(78) 评论(0) 推荐(0) 编辑
摘要:博客园从今天上午就开始报502错误 , 他的原因还不知道 , 暂时先说下我们遇到502的排查情况 最大的可能性就是后端的服务不能支撑前端过来的tcp请求连接,包括连接数据库服务时的连接数问题 1. php-fpm的进程是否启动 ,没启动肯定报这个错误 2. tcp连接数超过了fpm的进程数 nets 阅读全文
posted @ 2020-12-10 14:27 陶士涵 阅读(63) 评论(0) 推荐(0) 编辑
摘要:此处的限制是以下几个部分 每一个tcp的网络连接也是一个socket文件 , 所以有文件句柄数限制 系统级:当前系统可打开的最大数量,通过fs.file-max参数可修改用户级:指定用户可打开的最大数量,修改/etc/security/limits.conf进程级:单个进程可打开的最大数量,通过fs 阅读全文
posted @ 2020-12-10 13:45 陶士涵 阅读(69) 评论(0) 推荐(0) 编辑
摘要:在分布式的业务中 , 如果有的共享资源需要安全的被访问和处理 , 那就需要分布式锁 分布式锁的几个原则; 1.「锁的互斥性」:在分布式集群应用中,共享资源的锁在同一时间只能被一个对象获取。 2. 「可重入」:为了避免死锁,这把锁是可以重入的,并且可以设置超时。 3. 「高效的加锁和解锁」:能够高效的 阅读全文
posted @ 2020-12-09 19:00 陶士涵 阅读(173) 评论(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 陶士涵 阅读(153) 评论(0) 推荐(0) 编辑
摘要:当查询非主键的字段时 , MyISAM查询性能更好,从索引文件数据文件的设计来看 , myisam每一个索引字段都有上面的索引树: MyISAM直接找到物理地址后就可以直接定位到数据记录,但是InnoDB查询到叶子节点后,还需要再查询一次主键索引树,才可以定位到具体数据。 等于MyISAM一步就查到 阅读全文
posted @ 2020-12-09 13:39 陶士涵 阅读(70) 评论(0) 推荐(0) 编辑
摘要:MyISAM用的是非聚集索引方式,即数据和索引落在不同的两个文件上(MYD是数据文件 , MYI是索引文件)。 MyISAM在建表时以主键作为KEY来建立主索引B+树,树的叶子节点存的是对应数据的物理地址。我们拿到这个物理地址后,就可以到MyISAM数据文件中直接定位到具体的数据记录了。 当我们为某 阅读全文
posted @ 2020-12-09 13:32 陶士涵 阅读(53) 评论(0) 推荐(0) 编辑
摘要:InnoDB是聚集索引方式,因此数据和索引都存储在同一个文件里。 首先InnoDB会根据主键ID作为KEY建立索引B+树,如左下图所示,而B+树的叶子节点存储的是主键ID对应的数据 比如在执行select * from user_info where id=15这个语句时 InnoDB就会查询这颗主 阅读全文
posted @ 2020-12-09 13:29 陶士涵 阅读(107) 评论(0) 推荐(0) 编辑
摘要:联合索引有个最左前缀原则 , 这个原则的原因是这样的 比如有个联合索引 (b,c,d) 在索引的排序上 , 是先按b排序 , 再按c排序 , 再按d排序 比如有如下数据: a 是主键 , b c d创建了联合索引 生成的索引结构为: 看最后的叶子节点数据的排序 , 先按第一行b 排序 , 再按第二行 阅读全文
posted @ 2020-12-09 12:03 陶士涵 阅读(83) 评论(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 陶士涵 阅读(113) 评论(0) 推荐(0) 编辑
摘要:一张图保存一下 红点是当前地址 白色箭头是新打开页面 黑色箭头是后退页面 栈的思想 , 后退就是栈的索引往下移动 , 前进就是往上移动 , 点击新页面就是当前索引位置往上的所有元素都删除 , 然后再插入新页面 阅读全文
posted @ 2020-12-08 16:09 陶士涵 阅读(15) 评论(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 陶士涵 阅读(28) 评论(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 陶士涵 阅读(148) 评论(0) 推荐(0) 编辑
摘要:打开file==>settings==>tools >file watchers 点击右边的加号 , 增加go fmt 打开 file > settings > Go >go modules 那个复选框勾上 阅读全文
posted @ 2020-12-03 16:14 陶士涵 阅读(44) 评论(0) 推荐(0) 编辑
摘要:有个内部接口 , 另外同事会调用该接口 , 把一份邮件内容上传到这个接口 对方反应该接口有调用超时现象 排查思路; 排查access日志 , 看到有499状态码 , 响应时间是5秒 , 可以确定的是对方设置了超时时间是5秒 对方想要把超时时间尽量小 , 因此继续排查代码中可能速度慢的地方 , 使用s 阅读全文
posted @ 2020-12-02 15:49 陶士涵 阅读(70) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 29 下一页