Quantcast
Channel: Felix021
Browsing all 125 articles
Browse latest View live

Golang rand.Rand 并发panic: index out of range

线上服务Panic,部分日志如下引用err: runtime error: index out of range Traceback:goroutine 19209941 [running]:...panic(0x191d0e0, 0x2e078d0)  /usr/local/go/src/runtime/panic.go:502...

View Article


英语流利说 TED 课程

课程结束了,记录一下 Level 7 用到的这些 TED 课程,感觉还不错。* Level 7** Unit 1*** Part 1  On Procrastination  https://www.ted.com/talks/tim_urban_inside_the_mind_of_a_master_procrastinator/transcript*** Part 2  How Leaders...

View Article


从堆和栈开始的一些问题

- 堆和栈有什么区别?- 什么分配在堆上,什么分配在栈上?- 为什么有了堆还需要栈/有了栈还需要堆?- 效率差别在哪儿?如何优化?- 有哪些常见的内存分配算法?- 内存分配算法的主要挑战是什么?如何解决?继续引申还有gc的一系列问题这一篇写得还蛮好的:https://blog.csdn.net/jiahehao/article/details/1842234 ,但是注意不要被最后一段话洗脑。

View Article

goroutine调度导致的一次事故

1. 现象某日线上服务报警(基于时序数据库做的),请求量大幅下滑。观察ganglia监控图表,发现有部分机器CPU占用率断崖式下跌,从原先的1000%+下降到100%(20核40线程的CPU),通过内存监控可以确认服务本身并未重启。登录异常机器,用 lsof -i :PORT1 也可以看到端口号仍被占用,但是却无法接受请求;同样,该服务的 pprof 监听端口 PORT2...

View Article

记 python 超时的一个坑

# 背景有一个 python 脚本调用 A 服务的 x 接口获取若干 GB 的数据(大量对象),读取和解析大约需要 5 分钟。由于 x 接口的改造,需要改成调用 B 服务的 y 接口。A、B 服务都是基于字节跳动的 KITE 框架开发的(今日头条Go建千亿级微服务的实践),通信协议是 thrift 0.9.2 。# 现象改成调用 B 服务,在测试过程中发现,每次大约到 3 分钟以后就会出现报错...

View Article


Image may be NSFW.
Clik here to view.

使用pprof和go-torch排查golang的性能问题

最近线上服务压力很大,api的p99有点扛不住。广告业务对延时的要求普遍比较严格,有些adx设置的超时时间低至100ms,因此亟需找出性能热点。根据对目前系统情况的估计(和metrics埋点数据),大致估计问题出在广告的正排环节。使用 pprof  也证明了这一块确实是热点:引用$ go tool pprof...

View Article

Image may be NSFW.
Clik here to view.

程序员面试指北:面试官视角

== 结构化面试 ==在字节跳动,我学到了如何使用结构化面试法来考查应聘者的技能。所谓结构化,指的是将各种知识技能做好划分,例如编程语言,操作系统,数据库,网络,算法,工程/架构设计,并通过几个面试官之间的多轮交叉面试来考查掌握程度。这样的面试方法,可以避免某个面试官考察太偏,并充分挖掘候选人的亮点。== 技能...

View Article

PYTHON RSA加解密

和某厂通信需要按其要求用rsa加密某段数据,该厂给了个Example.java,和一个X509 Certificate。之前是把java编译好,然后在python里用system来调用它,有点丑。最近需要复用这段代码,希望代码干净点,所以在Python里重新实现一遍。# 1. 将 x509cer 转成  PEM 格式import java.io.*;import...

View Article


关于 RSA 的一些趣事

文章有点长(一共 2300 字), 但最后一个故事最有意思, 看不完的话可以直接拉到底== 1 ==从面试题说起好了。在考察到网络这一块的时候,可能会问问 http 协议,聊安全相关问题时,就顺便聊聊 https 。大多数候选人知道非对称加密,了解客户端会用 RSA...

View Article


UTF-8:一些好像没什么用的冷知识

原发于我的公众号:felix021在乔纳森·斯威夫特的著名讽刺小说《格列夫游记》中,小人国内部分裂成 Big-endian 和 Little-endian 两派,区别在于一派要求从鸡蛋的大头把鸡蛋打破,另一派要求从鸡蛋的小头把鸡蛋打破。然后忘了这个故事,咱们开始吧。== 坑 ==Charles 同学这周又踩了个坑,数据插入 MySQL 时报错:引用1366 Incorrect string...

View Article

Image may be NSFW.
Clik here to view.

TCP:学得越多越不懂

周末小课堂又开张了,这次我们来聊一聊TCP协议。== 握手 ==多少有点令人意外的是,大多数程序员对TCP协议的印象仅限于在创建连接时的三次握手。严格地说,“三次握手”其实是一个不太准确的翻译,英文原文是 "3-way handshake",意思是握手有三个步骤。不过既然教科书都这么翻译,我就只能先忍了。“三次握手”的步骤相信各位都非常熟悉了:引用A: 喂,听得到吗 (SYN)B: 阔以,你呢...

View Article

Image may be NSFW.
Clik here to view.

TCP#2: 西厢记和西厢计划

TCP#2:...

View Article

Image may be NSFW.
Clik here to view.

踩坑记:go服务内存暴涨

这周换换口味,记录一下去年踩的一个大坑。  == 起 ==大概是去年8月份,那会儿我们还在用着64GB的“小内存”机器。由于升级一次版本需要较长的时间(1~2小时),因此我们每天只发一次车,由值班的同学负责,发布所有已merge的commit。  当天负责值班的我正开着车,突然收到 Bytedance-System...

View Article


Image may be NSFW.
Clik here to view.

[译] C程序员该知道的内存知识 (1)

上篇 《踩坑记:go服务内存暴涨》还挺受欢迎的。虽然文中的核心内容很少,但是为了让大多数人能读懂,中间花了很大的篇幅来解释。尽管如此,我仍然觉得讲得不够透,思来想去觉得还是文中提到的《What a C programmer should know about memory》[1]讲得好,想借着假期翻译一下,也借机再学习一遍(顺便练习英文)。内容有点长,我会分成几篇。以下是正文。#...

View Article

Image may be NSFW.
Clik here to view.

[译] C程序员该知道的内存知识 (2)

续上篇:*  [译] C程序员该知道的内存知识 (1)这是本系列的第二篇,预计还会有2篇,感兴趣的同学记得关注,以便接收推送,等不及的推荐阅读原文。  先放图镇楼:  来源:Linux地址空间布局 - by Gustavo Duarte关于图片的解释可参见上篇。开始吧。  # 理解堆上的内存分配工具箱:  * brk(), sbrk() - 修改数据段的大小 * malloc() 家族 - 可移植的...

View Article


Image may be NSFW.
Clik here to view.

[译] C程序员该知道的内存知识 (3)

续上篇:* [译] C程序员该知道的内存知识 (1)* [译] C程序员该知道的内存知识 (2)这是本系列的第3篇,预计还会有1篇,感兴趣的同学记得关注,以便接收推送,等不及的推荐阅读原文。  ---照例放图镇楼:  来源:Linux地址空间布局 - by Gustavo Duarte关于图片的解释参见第一篇。开始吧。## 有趣的内存映射工具箱:  * sysconf() - 在运行时获取配置信息*...

View Article

[译] C程序员该知道的内存知识 (4)

系列更新:* [译] C程序员该知道的内存知识 (1)* [译] C程序员该知道的内存知识 (2)* [译] C程序员该知道的内存知识 (3)这是本系列的第4篇,也是最后一篇,含泪填完这个坑不容易,感谢阅读~这个系列太干了,阅读量一篇比一篇少,但我仍然认为这个系列非常有价值,在翻译的过程中我也借机进行系统性的梳理、并学习了很多新知识,收获满满。希望你也能有收获(但肯定没我多)。那,开始吧。  #...

View Article


golang: bufio.Scanner 的坑

之前从网上找的一段代码,按行读取文件:inFile, err := os.Open("xxx.log")if err != nil {    fmt.Fprintf(os.Stderr, "open failed: %v\n", err)    return}defer inFile.Close()scanner := bufio.NewScanner(inFile)for...

View Article

Image may be NSFW.
Clik here to view.

踩坑记#2:Go服务锁死

接着[上一篇-内存暴涨坑](https://v2ex.com/t/666257)再挖个坟,讲讲去年踩的另一个坑。  ---前方低能那是去年7月的一天,被透过落地玻璃的宇宙中心五道口的夕阳照着的正在工位搬砖的我,突然听到一阵骚乱,转头一看,收到夺命连环call的D同学反馈,流量严重异常。点开报警群,一串异常赫然在目:  引用[规则]:「流量波动过大(严重)...

View Article

Image may be NSFW.
Clik here to view.

Linux下删点日志也能搞死人

想了十天十夜不知道写些什么,那就写写面试题吧。1在面试应聘者的时候,我常常会问:在 Linux 下,如何删除一个目录下的所有 log 文件?不知道是不是我人畜无害的围笑给了应聘者我很好应付的错觉  以至于应聘者全都回答:`rm *.log`追问:该目录下可能有很多子目录,如何把子目录里的 log 文件也删掉呢?答:`rm -r *.log`  2令我很意外的是,真的只有很少的应聘者能想到 find...

View Article
Browsing all 125 articles
Browse latest View live