- 博客(9)
- 资源 (1)
- 收藏
- 关注
原创 [日常] Go语言圣经-Goroutines和线程
Goroutines和线程:1.动态栈: 1)线程都有一个固定大小的内存块(一般会是2MB)来做栈 2)一个goroutine会以一个很小的栈开始其生命周期,一般只需要2KB,不是固定的;栈的大小会根据需要动态地伸缩2.Goroutine调度: 1)线程是使用硬件定时器进行的调度,速度慢 2)Go是使用的自己的调度器,在线程的基础上调度,不需要进入内核的上下文3.GO...
2018-05-24 10:31:00 81
原创 [日常] Go语言圣经-并发的非阻塞缓存
1.go test命令是一个按照约定和组织进行测试的程序2.竞争检查器 go run -race 附带一个运行期对共享变量访问工具的test,出现WARNING: DATA RACE 说明有数据竞争3.理想情况下是应该避免掉多余的工作的,称为duplicate suppression(重复抑制/避免)4.设计并发,不重复,无阻塞 cache 1.并发: go func(){}...
2018-05-23 11:00:00 107
原创 [日常] Go语言圣经-竞争条件习题
package mainimport( "fmt" "sync")var balance intfunc Deposit(amount int) { balance = balance + amount }func Balance() int { return balance }/*问题:1.在Alice运行期间 balance = balan...
2018-05-17 15:33:00 150
原创 [日常] 高性能MySQL-索引
1.mysql的索引工作类似一本书的目录部分,想找某个特定主题,先查找书的目录部分,找到对应的页码2.ORM工具只能生成基本的合法的查询3.索引是在存储引擎层实现的,不是服务器层4.B-tree就是指的B树,多叉平衡查找树,很多存储引擎使用的b+树,降低磁盘I/O操作,将随机i/o变成顺序i/o5.b树意味着所有的值是按顺序存储的,每个叶子页到根的距离相同,叶子页存储了指向下一个叶子页的...
2018-05-15 17:33:00 52
原创 [日常] PHP与Mysql测试kill慢查询并检验PDO的错误模式
<?phptry{ //1. pdo的错误模式,抛出异常,不记录到php的error日志,不影响代码继续运行, $opts=array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, ); ...
2018-05-07 23:03:00 112
原创 [日常] Go语言圣经-示例: 并发的目录遍历习题
练习 8.9: 编写一个du工具,每隔一段时间将root目录下的目录大小计算并显示出来。package mainimport ( // "filepath" "flag" "fmt" "io/ioutil" "os" "path" "sy...
2018-05-07 15:45:00 132
原创 [日常] Go语言圣经-基于select的多路复用习题
练习 8.8:使用select来改造8.3节中的echo服务器,为其增加超时,这样服务器可以在客户端10秒中没有任何喊话时自动断开连接。reverb3.gopackage mainimport ( "bufio" "fmt" "log" "net" "strings" ...
2018-05-05 19:34:00 115
原创 [日常] Go语言圣经--并发的web爬虫
两种:crawler.gopackage mainimport ( "fmt" "links" //"log" "os")func main() { worklist := make(chan []string) // Start with t...
2018-05-05 15:17:00 151
原创 [日常] Go语言圣经--并发的循环习题
练习 8.4:修改reverb2服务器,在每一个连接中使用sync.WaitGroup来计数活跃的echo goroutine。当计数减为零时,关闭TCP连接的写入,像练习8.3中一样。验证一下你的修改版netcat3客户端会一直等待所有的并发“喊叫”完成,即使是在标准输入流已经关闭的情况下。重点:等待所有的goroutine执行完成后再关闭TCP连接package ...
2018-05-02 20:53:00 164
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人