2019-annual-summary

曾子曰:“吾日三省吾身”。可见两千多年前的人就已明了总结的重要性,总结这事儿应该是在平常多做。主动总结,有很多的好处,以往做得好的方面继续保持,做得不好的及时改进。坚持在成为更好的自己!

2019年是坎坷成长的一年,相较以前多了很多不同的经历,工作和生活有了新的收获与感悟。
总的来说,今年的大事记:

Read More

Yar RPC Framework

RPC(Remote-Procedure-Call)。简单来说,rpc就是一台计算机的进程远程调用另一台计算机里的进程所用的协议。
Yar是鸟哥(此鸟哥非linux私房菜的那个鸟哥)开发的一款轻量、简单易用、并行RPC框架。github地址https://github.com/laruence/yar
我们先在本地将环境跑起来。
然后再深入学习Yar的适用场景。

Read More

Design pattern

学习系统的最好方式就是做出一个系统。

学习设计模式也是,最佳实践便是写代码,多写代码,再多写代码。
当代码量达到一定程度的时候,便会有优化的需求,这个时候站在前人的肩膀上,使用设计模式便可以写出优雅的代码。

设计模式,是程序员们在多年的实践中总结出来的解决特定问题的优秀实现方案。是一种可以低耦合,高内聚的代码组织形式。

Read More

APUE

基本功的修炼都是枯燥乏味的。但是好的基本功,能让你每一步都走得更踏实,走得更远。
冰冻三尺,非一日之寒。内功修炼,切莫急于求成。
apue是一本讲unix操作系统的神书,900多页,很厚,拿来垫显示器很稳(=。=)
概括来说,apue主要讲了以下内容

  • I/O

    Read More

    Apache kafka

    是什么
    简单来说,Kafka是一个消息中间件。生产者产生消息,消费者消费消息。
    适用场景

    1. 系统解耦

    实战

    在Ubuntu(Debian)下安装Apache Kafka。
    Apache Kafka 依赖Java环境,所以需要先安装Java。

    Read More

    Sober thinking

    《清醒思考的艺术》,针对一些思维定势,有一定的警醒作用。
    但是凭心而论,我们广大普通人,不都是在凭借以往的经验在解决问题嘛。
    幸存偏误
    为什么你该去逛逛墓地

    游泳选手身材错觉
    哈佛是好大学还是烂大学?我们不清楚

    Read More

    记一次ss排错经历

    背景 :Linode上的VPS,服务商进行一次更新之后重启了服务器。重新启动ss-server之后,之前正常的ss连接不上了。

    解决步骤:
    凭借以往的经验,第一反应是ss端口被GFW禁了(以前经常被这样对待)。想都没想就直接将ss的端口换了一个。重新开启ss-server之后,客户端还是连接不上ss服务。进一步定位问题原因,发现服务器IP能够ping通,ssh服务连不上。这个又更加重了我对IP被ban的理解。这里面有很多思维误区,并没有去求证,这种习惯思维很不符合工程师思维,一点也不严谨,全是凭感觉在那解决问题。要不得,要不得。
    在服务器上netstat查看ssh,ss-server的端口都是处于listen状态。借助端口扫描工具,进一步确认端口开放情况。发现所有的端口都没开放。到这一步,想到了是不是防火墙开启的原因。

    Read More

    编写可读代码的艺术

    原则:虽说代码写出来是给机器运行的,但是是给人阅读的。好的代码,应该像好的文档那样,让阅读的人,可以花最少的时间理解表达的确切含义。

    具体怎样,才能做到呢?
    我们可以从三个方面去做。

    1、 取一个完美贴切的变量名

    将信息放入变量名中

    取一个特定的变量名

    Read More

    Clean Code

    <<gile Software Development: Principles, Patterns, and Practices>>
    Single Responsibility Principle SRP
    Open Closed Principle OCP
    Dependency Inversion Principle DIP
    书本教给你的只是一些工具,经验或技巧。能否掌握还是得靠不断地Practice and Practice

    Read More

    工欲善其事,必先利其器

    相信每位电脑使用者都有自己的习惯,有自己习惯的输入法、编辑器、开发环境……。每次换新机器的时候,配置自己熟悉的环境都要折腾半天。
    折腾的过程中又会遇到很多之前遇到过的问题。作为一名程序员,这种低效的方式是很不能忍的。所以,打造一个一劳永逸的方案就很有必要了。

    Homebrew

    /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

    Read More