2016总结

2016-12-27

  • 写下这份总结,也意味着我的大学历程进入了最后一个阶段了,心中不知什么滋味。

自我沉默

  • 回想本年的年初,我还在工作的边缘徘徊。虽然过程艰难,但对于自己的追求还是有了一定的回报,大学里我努力所获得的最大回报莫过于这份坚持,十年,二十年后,几十年后,无论何时的自己,在回头看看当年的往事,一定会无比感谢这份坚持。
  • 怎么说,这一年大概是几年大学历程中最忙于奔波的时候,无论是应聘,还是写程序,看演讲,参加月考。
  • 记得开春的时刻,我在踏上返校的途中,甚至手里还攥着一本 剑指offer,在细细钻研。现在想想还有些忍不住发笑。
  • 无论如何,在三月初飞机降落在哈尔滨的那一刻,我还是有些紧张的,毕竟这是两年以来第一次实践,也就是正式的应聘吧。这其中有一些趣事,直到十天前,我才恍然大悟,原来机会总是在某些时候不知觉的来到你的身边,只是你未曾察觉让其错过了而已。但是就算没有这些机会也不会妨碍你接近自己的梦想,这些机会不过是锦上添花罢了。
  • 整个三月,都在仔细的筛选各个公司的实习招聘中度过,不知道是因为投的比较谨慎,亦或者学校211名头还有些用处,竟然都没有被刷去简历,这也算是稍微松了一口气,但是与去年不同的是,今年大部分互联网公司,无论内推与否,均需要笔试这一个环节,令我十分疑惑,个人觉得这一环节是我最讨厌的部分,也是最没有用的部分,原因大家都心知肚明。
  • 时间转瞬来到了四月份,由于女友的邀约,伴着招聘带来的些许压力,我还是直接踏上了秦皇岛的旅途,我觉得在这里也许能找到一些不一样的新鲜事物。

说的好像一个艺术家。

Read More

Windows10以后

Windows 10

  • 这是一个很符合当下审美的版本,当然蓝屏问题真是药丸吃太多。
  • 抛开蓝屏不说,其他各方面都让我感觉直追MacBook,特别是在最新版 MacBook 出来以后,更加认可我这个观点,日后还要不要入手Mac,有待考虑,那个Touch Bar纯粹是个没用的东西,竟然把我的Esc键给搞掉了!
  • 现在的我,对自己的机器还是挺满意的,完美的 ThinkPad,小机械加触控板,在使用的时候,已经三年没有碰鼠标了,当然玩游戏的时候用了三四回。
  • 换了内存,加了固态感觉自己飞起来了,但是和Mac的PCIe接口的固态比起来,还是差了几个档次,这是最大的痛点之一

    • Bash On Windows 是微软统治全宇宙里一个插曲,但是对于我们来说意义很明显
  • 但是,事实真是如此吗?

开启 Bash On Windows

  1. 首先确保你的系统版本是大于14393.0, 那么在系统设置里面(Win + I)->更新和安全->针对开发人人员->开发人员模式
  2. 摁下Win键,打开开始菜单栏,直接输入 启用或关闭 Windows 功能,打开后,翻到最下面,勾选适用于 Linux 的 Windows子系统(Beta),就能开启这个东西。
  3. 重启后,打开cmd 或者 PowerShell 输入 bash 回车,就能看见这个子系统开始下载了,等下载完成可能需要重启,再重来一遍操作,就行了!

    Read More

从50s到250ms

开头语

  1. 过了三年,终于我也从看别人写这种文章,到自己写下经验来分享,很有感触
  2. 虽然负责的项目的模块的大小远远不及网络上的众位,但对我来说还是一个很宝贵的经验和历程。
  3. 所以这篇的题目叫做 从50s到250ms,记录我的第一个PHP项目的优化过程,实际上很简单,一般人大概都会想到,但还是需要记录。

Read More

使用Vim

开始Vim

  1. 使用编辑器,最主要的目的就是编辑,即使你不愿意使用Vim这类终端编辑器,也会在某时候不得不靠他勉强编辑一些东西,例如中国人Geek们最起码都干过的改Linux Source list
  2. 所以无论你是情愿还是不情愿,当你执行这行命令 vim filename 之后,就算是进入了一个有意思,但又不怎么听话的界面,所以书上学来终是浅,实践才是最重要的。
  3. 首先在家目录 cd ~ 下创建或打开 .vimrc 这个文件,直接执行 vim .vimrc这个命令即可,无论有这个文件还是,没有这个文件都能够正确达到目的。
  4. 进入.vimrc文件之后,在其中追加以下内容(追加就是摁键盘上的i,光标移动暂时用方向键):

    syntax on
    set number
    set cindent
    set autoindent
    set smartindent
    set ruler
    set backspace=indent,eol,start
    set tabstop=4
    set shiftwidth=4
    set encoding=utf-8
    set termencoding=utf-8
    set fileencodings=utf-8,gbk
    set hls
    set laststatus=2
    set list
    set incsearch
    set showmatch
    set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
    set listchars=tab:>-,trail:-
    

    有这些功能开启就够了,也不需要有其他的第三方插件,也不需要再多了,就这样足矣。所以请简单使用Vim

    不想自己复制,手打的,可以去我的Github上下载

先不要问这些命令的意义所在,轻松一点,书读百遍其意自现,工具也一样,一开始这些规矩根本没必要记住,用久了自然就懂了。

Read More

后台开发之架构

实习

  • 近期在某家公司实习,顺应公司部门文化有一场为期十天左右的实习生小组赛,内容就像黑客马拉松一样。
  • 正好在此小组负起后台开发的职责,技术选择是 Python 的 Web框架 Flask, 至于本文想要记录的并不是 flask这个框架怎么用,好不好用,而是其他一些一直以来比较零散的知识
  • 也许这是在学校中开发所注意不到的,那就是实际情况总是与理想状态相去甚远。

架构图

  • 这个结构是我为本小组提供的后台拓扑,包含三个部分:
    1. Nginx反向代理
    2. Flask逻辑服务器
    3. MySQL数据库服务器
  • 看起来非常朴实,实际上门门道道,细节问题着实费了我两天时间,特别是在逻辑服务器哪里,因为粗心大意,愣是搭了一个晚上还是失败。
  • 本次是将终端和前端的接口进行了统一,实际上这样对一个快速开发项目来说的确是必须的,不必考虑太多细节,追求的是效率,毕竟Flask框架追求的的确就是开发效率,至于并发情况实际上在众多框架中,并不能算太好。

    Read More

直接理解红黑树旋转

只需要一张图

  1. 对于新插入的每个节点而言,它都是红色的,那么就有两种情况

    1. 他父亲是黑色(完美,啥都不用变)
    2. 他父亲是红色(需要调整了,从他自己开始,一路向根节点调整)
  2. 所以最外层可以用一个循环,来判断是否到了根,是否父节点是黑色。

  3. 无论是有接触到root节点,在最末尾都给他设置成黑色,这是最省事的做法,也不会有什么性能消耗。
  4. 红字中的: 左旋,右旋,是按照顺序的,且针对的目标不同,稍微看过的应该能很快知道

    1. 父为左子->伯父为黑->新点为右情况下: (先对父)左旋,改颜色,(再对祖父)右旋。
      • 无论如何,先对某个节点的父节点进行单旋转,仅仅是改变这两个家伙的位置(只有在颜色相同时才会触发旋转)。
    2. 父为左子->伯父为黑->新点为左情况下: 改颜色, (对祖父)右旋
  5. 下面的情况就是依此类推

  6. 改颜色,顾名思义就是,设置颜色的意思,并且将空节点(NULL节点)也视为黑色的

以上所述

  • 就是所有红黑树在插入或者删除之后的平衡操作时,需要注意以及执行的步骤。

    Read More