在性能测试过程中,往往会出现各种各样的性能瓶颈。其中java常见瓶颈故障模型有cpu资源瓶颈;文件IO瓶颈;网络IO瓶颈;内存资源瓶颈;资源消耗不高程序本身执行慢等场景模型。 如何快速定位分析这些类型瓶颈?工欲善其事必先利其器。 本文主要讲述针对cpu高耗和网络IO瓶颈两个场景,使用排查提效脚本工具 ...
分类:
编程语言 时间:
2020-07-22 15:53:07
阅读次数:
66
防抖函数 /** * * @param {*} fn :callback function * @param {*} duration :duration time,default wait time 0.8 秒 * @demo in vue methods: * handleEvent: _deb ...
分类:
编程语言 时间:
2020-07-22 02:10:29
阅读次数:
72
线程的通信 线程的状态 新建 就绪 运行 阻塞 死亡 通信涉及到三个方法 wait() 一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器 notify() 一旦执行此方法,就会唤醒被wait()的一个线程 如果有多个线程被wait,就唤醒优先级高的那个线程 线程之间没有优先级就随机唤醒 no ...
分类:
编程语言 时间:
2020-07-22 01:57:15
阅读次数:
72
Go语言中数据类型极其丰富,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道channel等。Go语言的基本类型和其他语言大同小异。 基本数据类型 整型 整型分为以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8 ...
分类:
编程语言 时间:
2020-07-22 01:40:44
阅读次数:
87
虽然两者都是用来暂停当前运行的线程,但是 sleep() 实际上只是短暂停顿,因 为它不会释放锁,而 wait() 意味着条件等待,这就是为什么该方法要释放锁,因 为只有这样,其他等待的线程才能在满足条件时获取到该锁。 ...
分类:
编程语言 时间:
2020-07-20 22:27:47
阅读次数:
92
1 自定制频率 # 自定制频率类,需要写两个方法 -# 判断是否限次:没有限次可以请求True,限次了不可以请求False def allow_request(self, request, view): -# 限次后调用,显示还需等待多长时间才能再访问,返回等待的时间seconds def wait ...
分类:
其他好文 时间:
2020-07-20 15:39:52
阅读次数:
94
无缓冲通道(阻塞通道) 写入后立即阻塞,需要另一个协程读取通道的数据后,才能继续执行。 通道操作符 ch <- v // Send v to channel ch. v := <-ch // Receive from ch, and // assign value to v. 无缓冲通道 ch := ...
分类:
其他好文 时间:
2020-07-20 15:23:45
阅读次数:
70
1. 向已经 close 的 channel 写数据 2. map 多 goroutinue 读写冲突 3. interface 转换为不同类型 4. 向空指针类型的变量写数据 5. 切片数据越界 6. 除数为 0 7. cgo 的 panic 8. 用户调用 panic 9. goroutinue ...
分类:
其他好文 时间:
2020-07-20 15:21:50
阅读次数:
72
在Netty中 事务的处理都是放入自定义的Handler中的 如果某些业务比较耗时 最终也会阻塞线程 这时就需要任务队列来异步处理任务了。 1.用户自定义的普通任务 例: ctx.channel().eventLoop().execute(new Runnable() { @Override pub ...
分类:
Web程序 时间:
2020-07-20 10:56:39
阅读次数:
127
1、展开操作符 顾名思义,用于对象或数组之前的展开操作符(…),将一个结构展开为列表。演示一下: let firstHalf = [ one , two ];let secondHalf = [ three , four , ...firstHalf]; 这种写法够优雅,够简洁吧?如果不用展开操作符 ...
分类:
其他好文 时间:
2020-07-20 10:39:44
阅读次数:
69