The Young Chen Academy of Science
欢迎光临!You are welcome!
科学Science:
Cloud Computing
技术Technology:
Java,PHP,Python,C/C++,scala
相信科学,分享技术
Believing in science and sharing technology
2021 8 9
机房保障 olink.cloud 本文档 pdf 格式提供下载
目录 1
目录
1 摘要 Abstract 2
2 序言 Introduction 2
3 第一阶段 The first phase 3
4 第二阶段 The second phase 4
5 第三阶段 The three phase 5
6 总结 Conclusion 6
1
摘要
ABSTRACT
2
1 摘要Abstract
这是一份技术总结文档,作者在国内从事互联网技术行 15 年以上,第一
篇技术日志从大学时期开始记录,在北京著名互联网公司的工作过程中,也一点
一滴地记录了一些遇到的技术问题,时间跨度超过 15 年。
技术领域涉及到 mysqlpgsql 等常见存储,更是横跨至复杂的深度神经网络
设计、云计算安全等领域,整体更偏工程一些。
如果将过去的时间分为前中后三段,前段时间主要在应用程序开发,涉及到
的主要是语言特性、应用配置技能。中段时间开始研究存储层的东西,更加关注
深层的细节。后段时间开始理解商业和管理,对团队理解、方法论、数据相关的
内容更多一些。
从所有的这些内容看下来,可以想象一个技术人,从技术爱好走向专业深度
诠释,亦可侧面感受行业浪潮对于技术的影响。
This is a summary tech document. The author worked in the internet industry of China for more than 15 years. I wrote the first tech article when I was in university. When I
worked for famous tech companies in Beijing, I also recorded loads of tech issues.
The content is of more than 15 years’ duration. The tech domain contains normal storage such as mysql, pgsql etc. Moreover, there are some more complicated contents
including DNN design, security of cloud computing etc. Mostly, they are about engineering.
I divide history into three phases. In the first phase, I focused on coding skills including various languages, applications configuration skills etc. In the second phase, I worked
in the storage layer. There were more detailed and deeper contents. When it came to the third phase, business and management was the point. There were more things about
team management, methodology, data etc.
From all the articles, you can imagine the history of a tech person who grew up from a tech geek to a deep professional. You also can feel the impact of industry wave on
technology.
2 序言Introduction
1997 年开始讲起,当时的小霸王学习机简直是梦寐以求的配置了,冥冥
之中有一种对计算机键盘的追求, windows98 都还没出世的时候,我用小霸五
学习机学会了五笔输入法,从一开始就解决了一个南方人拼音不好的问题。
站,能, asp
access,当时很多知识都需要从新华书店的计算机书里找答案,从此产生了对
算机领域的深厚热情。
时间到了高考填写志愿的时候,机缘巧合遇到了云南大学的一位教授,旁边
的人说他是著名的“x 物理”(姓 x是物理教授),我自豪的告诉他我所有的志愿
都是计算机科学与技术专业,不服从调剂。他说的一句话就让我非常失望了,“计
算机以后肯定是技术,是不是科学就不一定了”
在第一阶段的计算机经历,更多的内容还是关于技术的,而非科学,大学校
园给了一非常好的境可潜心写代码,课堂内容将数结构、系统构、
编译原理等基础知识体系搭建起来。
在第二阶段,因为市场上常见的语言都已经摸了一遍,开始选择一个特定的
3
第一阶段
THE FIRST PHASE
3
方向,结合工作需要,进行深入的研究。
在第三阶段,平台发展要求个人能力多样化发展,简单的写代码已经不能为
企业所需要了,开始考虑团队级别的事情,更多的与人打交道,但依然对写代码
恋恋不舍,对事物的发展预判,数据的使用都有了更深的理解。
The Xiaobawang learning machine was my dream machine in 1997, which was a kind of machine like Gameboy with a computer-like keyboard. At that time, windows98 was
not ready. I learned the WUBI input method from the learning machine. That was good for a southern person who is always not good at PinYin.
When I went to high school, I developed a class website, which had bbs and album functions designed by asp and access. Lots of knowledge had to be found in the books,
which were in the XinHua bookstore. From that time, I began to learn computer technology with strong enthusiasm.
I met a professor of YunNan University when I graduated from high school. He said to me that computers could be technology but would not be science. I was disappointed
with that guy.
In the first phase of my computer learning experience, it was more about technology, but not science. At the University campus, there was a good environment to study the
subject in more depth. The course of computer science was also building fundamental knowledge with data structure, system architecture, compiler theory etc.
In the second phase, I started to research a specific direction, which could combine with my work. I did more research on the work details.
In the third phase, the company required further management. With the development of the platform, coding is not the most important thing for me. I began to think about
teamwork, and had more time to talk with others. Even though I have no time to develop projects, I still miss the feeling of coding. At that time, I obtained the skills of
analysing.
3 第一阶段The first phase
2005 年,写下了第一篇 (Chen, 2005),记录 mysql 的字段的长短,以及怎
么给 mysql 用户加减权限,后来又补充了一篇 (Chen, 2006e)都非常实用。后来
工作了,又有机会进行了 postgreSQL 的文档补充,包括 (Chen, 2008p) 介绍了安
装,(Chen, 2008l) 置,(Chen, 2008k) (Chen, 2008o) 以及 (Chen,
2008s) 增加了集群方案 pgpool plproxy 的安装和配置,(Chen, 2008u) 记录了一
pgsql 的常问题,包括据同步问题。早期的日是记录在 hi 空间里,
这导致了时间上只是个大概,并不十分准确。
还有一些内容是关于操作系统的应用,(Chen, 2006d) 是在 gnome 下的 gtk
码,通过一系列的文章,包括 Linux(Chen, 2006c)汇编 (Chen, 2006b)网络 (Chen,
2006g)反编译 (Chen, 2007a)C 语法 (Chen, 2008h)协议抓包 (Chen, 2008y)
终推出了当时在校园里大家都要用的拨号软件 myNet并将代码进行了详细的分
析,连载文章见 (Chen, 2008a, 2008b, 2008c, 2008d)现在看当时技术水平还挺在
线的。
还有很多与服务器端相关的配置经验总结,包括 Apache(Chen, 2006a)NFS
配置 (Chen, 2006f)JQuery(Chen, 2008i)smartDNS(Chen, 2008w)PHP 发邮
(Chen, 2008m)SSH(Chen, 2008x),配置管理工具 Cobbler(Chen, 2009t)ipta-
bles(Chen, 2009q),这阶段的配经验,其实在网上都可以到,不同的
录下的都是当时实验成功的。
的, Perl(Chen, 2008j)VB(Chen,
2008t)PHP(Chen, 2008n)还有一些关于 C 的细节,入门的有 (Chen, 2008v)
入的 sscanf(Chen, 2008q)PHP TSRM_CC (Chen, 2008f)
布在偏 CPHP 的角度,也是当时的技术趋势。
4
第二阶段
THE SECOND PHASE
4
摘, (Chen, 2007b)BBS
(Chen, 2008e)
章,网的 (Chen, 2009a)之家 (Chen, 2009p)
虎和淘宝当时怎么用 Hadoop(Chen, 2009l)GIS 相关技术 (Chen, 2009f),一个
列表 (Chen, 2008z) 现在多半打不开了,用 PHP 搞当时很流行的开放平台 (Chen,
2008r)
I wrote the first article (Chen, 2005) to record the length of mysql fields and the method of flushing privileges of mysql. Later, I enclosed the second one (Chen, 2006e). Both
of them are useful. After working in the office, there are more articles about PostreSQL including installation(Chen, 2008p), permissions settings (Chen, 2008l), Pgpool and
Plproxy for the usage of cluster (Chen, 2008k, 2008o, 2008s), common issues (Chen, 2008u). The date of these articles were not accurate because they were transferred from
Baidu Hi.
Some more articles were about operation systems. The first one is about gtk coding in gnome (Chen, 2006d). A series of articles described the 802.1x client on Linux,
including Linux (Chen, 2006c), assembler programming (Chen, 2006b), networking (Chen, 2006g), decompilation of C(Chen, 2007a), C language (Chen, 2008h), protocol
cracking (Chen, 2008y). A client named myNet was used on campus for the 802.1x protocol. The introduction of it was shown in articles in serial form (Chen, 2008a, 2008b,
2008c, 2008d).
There were a lot of articles to describe the server configuration, including Apache (Chen, 2006a), NFS (Chen, 2006f), jQuery (Chen, 2008i), smartDNS (Chen, 2008w), php
mailer (Chen, 2008m), SSH (Chen, 2008x), Cobbler (Chen, 2009t), iptables(Chen, 2009q). All of the articles were tested by myself.
Different languages were showed in this phase, including Perl (Chen, 2008j), VB(Chen, 2008t), PHP(Chen, 2008n). There were also some details of C, including basic
knowledge (Chen, 2008v), research on sccanf (Chen, 2008q), TSRM_CC in PHP (Chen, 2008f). All of them were the trend of technology at that time.
There were also some articles about startup, including cases (Chen, 2007b), development of BBS (Chen, 2008e). Some articles were from other websites or famous architecture,
including RenRen (Chen, 2009a), mobile home (Chen, 2009p), the usage of hadoop in Yahoo and Taobao (Chen, 2009l), GIS (Chen, 2009f), a list (Chen, 2008z), open platform
by PHP (Chen, 2008r).
4 第二阶段The second phase
第二阶段,花了大量的时间在存储技术,搜索技术,技术细节上,Berkeley
DB 的收藏 (Chen, 2008g)java 使用 bdb(Chen, 2009i, 2010g),一系列 kv 相关的,
memcached(Chen, 2009o)Discuz BBS 的缓存设计 (Chen, 2009b),当时很流行的
TC(Chen, 2009s) java 压力测试 TC(Chen, 2009r)设计人人网分布式存储时的
思考 (Chen, 2009m)linkedin dynamo 现伏地魔 voldemort(Chen, 2009j)
布式存储的开发心得 (Chen, 2010l),这篇在淘宝推出 oceanbase 的时候做了些记
(Chen, 2011j)还有这篇国内互联网公司的数据连接方案也不错 (Chen, 2010e)
另外这篇是《程序员》杂志的稿子,讲的是在人人网开 nuclear 布式存储的
过程和心得 (Chen, 2010f)
关于中文全文检索,当时记录了比较好用 pgsql+bamboo 的方案,连载
(Chen, 2009c, 2009d, 2009e) sphinx (Chen, 2010c, 2010h,
2010i),当时还用 sphinx 做了一次二度好友的推荐 (Chen, 2010j)
很多内容由浅入深的在探讨技术细节,这篇是研究 mysql 的索引技术 (Chen,
2010d),常见的 jdbc io 原理 (Chen, 2010b)根据系统负载决定代码运行
实现,在做一些后台任务时非常有用 (Chen, 2010a)如何精准控制用户上传的文
档类 (Chen, 2009k)JAVA list byte 数组的研究 (Chen, 2009g)java 并发
(Chen, 2009n) PHP Java 的,都要用,
这篇 PHP call_user_func(Chen, 2010k)篇还了当出名
hashdos 攻击的各种补救和原理 (Chen, 2011i)这篇直接在 nginx 做了点改动达到
防备效果 (Chen, 2012i)
5
第三阶段
THE THREE PHASE
5
C 特, 3 篇,MAC gcc(Chen,
2015b)C++ protobuf 有一个很 Core Dump (Chen, 2016a)C++
SHA1WithRSA/ras/X509 怎么写逻辑 (Chen, 2016b)
In the second phase, I spent a lot of time on storage, search engine, details of technology. Berkeley DB was researched in some articles (Chen, 2008g, 2009i, 2010g). A series
of articles about KV storage were shown in serial form, including memcached (Chen, 2009o), the cache design of Discuz BBS (Chen, 2009b), TC storage (Chen, 2009s),
load test of TC by java (Chen, 2009r). There were some considerations of the design of RR distributed storage system (Chen, 2009m) and the development summary (Chen,
2010l). Some other famous companies also had the details of storage, including voldemort from Linkedin (Chen, 2009j), OceanBase from Taobao (Chen, 2011j), general
summary from domestic companies (Chen, 2010e). An article was published in the CSDN journal describing the experiences and reflections of Nuclear distributed storage
system (Chen, 2010f).
Chinese fulltext search was also a hot issue. PostgreSQL with Bamboo is a good design (Chen, 2009c, 2009d, 2009e). Sphinx was also very popular (Chen, 2010c, 2010h,
2010i). I used sphinx to design a case of people you may know (Chen, 2010j).
A large amount of contents were talked about the technique details, including index technology of mysql (Chen, 2010d), common theory of IO locking in JDBC (Chen, 2010b),
accurate control of the uploading file type (Chen, 2009k), research of List and byte array in Java (Chen, 2009g), theory of concurrent programming (Chen, 2009n). Running
different codes by the different system load situation was very useful when you needed to design some task running background (Chen, 2010a). I had to use both Java and
PHP in the office. This article researched the call_user_func in PHP (Chen, 2010k). HashDos attack was very popular at that time, so here was the explanation and prevention
(Chen, 2011i), and the changing of ngnix to prevent the attack was also uploaded (Chen, 2012i).
C environment was always special, so there were three articles describing it, including updateing gcc on Mac (Chen, 2015b), a core dump issue with c++ and protobuf (Chen,
2016a), the Sha1WithRSA/ras/X509 in C++ (Chen, 2016b).
5 第三阶段The three phase
第三阶段的内容比较繁杂,有深有浅,也有方法论。Erlang 快速入门 (Chen,
2011a)然后开始从安装到压力测试再到核心源码,连载研究一个叫 Riak 的分布
式存储 (Chen, 2011b, 2011c, 2011d, 2011e, 2011f, 2012j, 2012z)
Rose 使用手册载,历 3 多月 (Chen, 2012k, 2012l, 2012m, 2012n,
2012o, 2012p, 2012q, 2012r, 2012s, 2012t, 2012u, 2012v, 2012w, 2012x)
cloud foundry 手记, 记录 ruby (Chen, 2012y)cf
码学习、服务器虚拟化文 warden 节,用时大 2 个月 (Chen, 2012a, 2012b,
2012c, 2012d, 2012e, 2012f, 2012g, 2012h)
有段时间公司开始成立 IoT 业务,于是就开始研究开源硬件,就有了一系列
Arduino 习手记, (Chen, 2013c, 2013d, 2013e)
后来线制的要,各种 Arduino 的无线 (Chen, 2013a)
最终用上了低功耗蓝牙 (Chen, 2013b),集成的板子 BLUNO(Chen, 2013f)
公司进入平台期,各项技术趋于稳定,于是有大把的时间开始总结,就有了
文章,记录了在米六七年间创业期技术总结 (Chen, 2016c,
2016d, 2016e, 2016f, 2016g)
因为有很长一段时间一直在研究网络层,于是便有了大量的关于 IO 的文章,
socket read 各层的理解 (Chen, 2014k),移动网 (Chen, 2014l),移动互联网系
统架构陷阱 (Chen, 2013j)JAVA IO 理解 (Chen, 2009h, 2014c, 2015a),怎么压
力测 IO(Chen, 2014m)facebook thrift 少, disruptor nio
(Chen, 2014b)cassandra thrift (Chen, 2013g)
本的 thrift 级有大 (Chen, 2014h) resin 组合 thrift 进行压力测试 (Chen,
2013h),也有 thrift 的入门教程 (Chen, 2011g, 2011h)
IM 领域,一直在研究接入层,于是有一系列的相关文章,调研一系列的协议
6
总结
CONCLUSION
6
BoshCometlongpolling 之类的 (Chen, 2014a)java xmpp 实现之一的 Tigase
分析 (Chen, 2014i, 2014j)
Scala 也在一段时间里保持着在分布式服务处理的重要角色,于是也有一
列的文章记录,入门手记 (Chen, 2013i)akka scala actor 模型,一系列的实
用连载,用 java 调用 akka,可以在线上使用 (Chen, 2014d, 2014e, 2014f, 2014g)
在人工智能如火如荼的时代,也不能少了一系列的文章,利用 keras ten-
sorflow 完成支付风控 (Chen, 2017c)一些基础知识包括优化器、激活函数、评价
函数等 (Chen, 2017b)Caffe 的使用入门 (Chen, 2017a)
关于团队管理和整体技术架构,也有一些文章记录了最近的变动。这篇是一
篇关于团队目标和 OKR 相关的 (Chen, 2019)微服务架构很流行,这些文章都是
相关的记录 (Chen, 2018a, 2018b, 2018c).
In the third phase, the articles were complicated, which are about deep explanations and methodology. An article was about Erlang quick starting (Chen, 2011a). Then a
project named Riak, which was a distributed storage system, was researched by a series of articles from installation to load testing and core source codes (Chen, 2011b, 2011c,
2011d, 2011e, 2011f, 2012j, 2012z).
I spent more than 3 months on Rose manual, which was a famous web framework base Java Spring (Chen, 2012k, 2012l, 2012m, 2012n, 2012o, 2012p, 2012q, 2012r, 2012s,
2012t, 2012u, 2012v, 2012w, 2012x). And I spent more than 2 months on research of Cloud Foundry. They were the learning of Ruby (Chen, 2012y), the learning of CF and
Virtualization named Warden (Chen, 2012a, 2012b, 2012c, 2012d, 2012e, 2012f, 2012g, 2012h).
Because the company started the IoT business, I started the research of open hardware. There were some research results of Arduino (Chen, 2013c, 2013d, 2013e). When it
came to the wireless methods, various control cases were researched (Chen, 2013a), and at last I chose the low power bluetooth (Chen, 2013b) and the integrated resolution
BLUNO (Chen, 2013f).
When the company was not in such a busy situation, I started to review the history of development in XIAOMI. So there were lots of technique summaries in XIAOMI,
recording the history of startup period in XIAOMI (Chen, 2016c, 2016d, 2016e, 2016f, 2016g).
Because I spent a lot of time on networking, there were some articles about IO, including the understanding of socket read on different layers (Chen, 2014k), mobile networking
and architecture (Chen, 2013j, 2014l), understanding of Java IO (Chen, 2009h, 2014c, 2015a), load testing of IO (Chen, 2014m). Some articles were about Facebook Thrift,
including load testing by the disruptor nio (Chen, 2014b), the usage of Thrift in Canssandra (Chen, 2013g), the version upgrade of early Thrift (Chen, 2014h), load testing by
Resin and Thrift (Chen, 2013h), and the quick start of Thrift (Chen, 2011g, 2011h).
In the instant messaging domain, I focused on the access layer. There were some articles about protocols such as Bosh, Comet, Long polling (Chen, 2014a). I researched the
Java version of XMPP implementation named Tigase (Chen, 2014i, 2014j).
Scala played an important role in distributed systems in a particular period, so there were a series of articles about it. For example, the learning of Scala (Chen, 2013i). Akka
was the Actor model designed by Scala, which could be used online by Java (Chen, 2014d, 2014e, 2014f, 2014g).
In the period of AI, the articles about AI were also very useful. There was an example of using Keras and tensorflow to control the payment risk (Chen, 2017c). There were
an article about basic knowledge such as Optimizers, Activation (Chen, 2017b) and the learning of Caffe (Chen, 2017a).
About the team management and entire architecture, there were some articles. This was a article about the team objective and OKR (Chen, 2019). Because micro-service
architecture was popular, these articles were about it(Chen, 2018a, 2018b, 2018c).
6 总结Conclusion
还有很多零碎有用的内容没有在这里一一进行总结,比如说怎么在北京生孩
子之类的 (Chen, 2017d)像这篇对区块链的研究 (Chen, 2018d)研究信息可视化
的结果 (Chen, 2021)技术之余,这些知识都对个人的生活影响比较大,觉得
大家会有用处,于是也做了记录。
人归总,也许有用文章并归进来,人视
限,如有想添加的请查找公众号 java_scala
以上内容,能力有限,如有缺陷,万望指出。
There are still some useful articles which are not shown here. For example, this article explained how to born a child in Beijing (Chen, 2017d), this article explained the
blockchain (Chen, 2018d), this article is the research result of information visualisation (Chen, 2021). All of these contents were useful in common life.
The above recommendations are up to me. It is clear that my mind is limited and if you have any ideas about that, you can contact me by the Wechat Official Account:
java_scala.
Any suggestions about this file would be appreciated
REFERENCES
7
References
Chen, Z. (2005). Mysql 作要点整理 - 四陈科学院. https://www.54chen.com/blog/
2005/11/01/mysql-finishing-operation-points/
Chen, Z. (2006a). Apache 用设置 - 四陈科学院. https://www.54chen.com/blog/
2006/10/23/apache-common-set/
Chen, Z. (2006b). Intel 汇编与 at t 区别 - 五四陈科学. https://www.54chen.
com/blog/2006/10/26/intel-compile-the-difference-between-at-u0026amp-t/
Chen, Z. (2006c). Linux c mac ip - . https:
//www. 54chen.com/blog/2006/10/25/linux-c -to-obtain-the-machine-mac-and-
ip-2-functions/
Chen, Z. (2006d). Linux - . https://www.54chen.
com/blog/2006/10/13/linux-system-tray-under-the-realization-of/
Chen, Z. (2006e). Mysql - . https : / / www.
54chen.com/blog/2006/03/22/mysql-in-a-variety-of-fields-in-the-range/
Chen, Z. (2006f). Nfs 使用记录 - 五四陈科学院. https://www.54chen.com / blog /2006 /
11/17/nfs-usage-records/
Chen, Z. (2006g). Tcp :syn ack rst utg psh fin - . https : / / www.
54chen.com/blog/2007/09/29/tcp-connection-syn-ack-rst-utg-psh-fin/
Chen, Z. (2007a). Liteim/freeplus 的取 ip 代码 - 五四陈科学院. https://www.54chen.
com/blog/2007/10/29/liteim-freeplusu002639s-get-ip-code/
Chen, Z. (2007b). 稿 - . https : / / www.
54chen.com/blog/2007/12/28/students-finishing-business-case-analysis-script/
Chen, Z. (2008a). [秋零] 神州 802.1x 局域 udp 软件 mynet-gnome
part1- . https : / / www. 54chen . com / blog /
2008/09/14/%E4%B8%AD%E7%A7%8B%E9%9B%B6%E7%8C%AE-
%E7%A5%9E%E5%B7%9E%E6%95%B0%E7%A0%818021x%E5%B1%
80%E5%9F%9F%E7%BD%91udp%E6 %8B%94%E5%8F%B7%E8%BD%
AF%E4%BB%B6mynet- gnome%E6%BA%90%E4%BB%A3%E7%A0%
81%E5%A4%A7/
Chen, Z. (2008b). [中秋零献] 神州 802.1x 域网 udp 拔号软件 mynet-gnome
part2- . https : / / www. 54chen . com / blog /
2008/09/14/%E4%B8