• 工作阶段性总结



    到杭州工作快三个月了,一直跟随着公司的快节奏,很少让自己停下来总结总结。积累的多了,若是不总结,这些积累的东西可能也会随着时间慢慢丢失了吧…

    在公司做的工作内容与我自己所写的项目大致相同,公司的项目是前后端分离,我只需要关心后端的接口服务,偶尔抽个包之类的,这些事情做起来不说游刃有余,倒也没遇到多少瓶颈,还算是挺顺利的,也很有激情。激情是因为通过工作的内容,我能学到很多技术优秀的用法,比我曾经用的好得多的。

    async包,我以前是没有用过的。异步的机制在node来说是再正常不过的事了,而我也就简单的用用它的回调,感觉好像就这样了,其实我不知道的还有很多。async包能够将运行效率成倍的提升,例如其中的parallel、map等方法,有段时间,我在工作中疯狂的用这些方法,真入迷…但是这个包诱发的是我对其原理的兴趣,我想了解这些功能是如何实现的,因此,我在慢慢的啃源码…

    测试。关于javascript的测试,自己也有用过,使用jasmine来写的。到公司之后,接触了should、supertest、mocha、istanbul等包,这一套工具对测试来说,以我目前的水平已经足够用了。在践行测试先行之后,能将这一套工具初步的用起来,我的接口的测试代码均在500-600行左右,多的能有1000多行。为什么能写那么多行,除了基本的结果数据、边界、权限等,主要是造数据的代码太多了。没有忘记熊节老师的提点(写了这么多重复代码你也好意思- -),将造数据的代码提取了方法,获取登陆状态的也进行了封装,能精简的就精简,但还不够自动化…感觉这三个月,加上测试代码,妥妥的有一万行代码了…测试这块,我很想再提高的,想再精简一点,能自动化就最好了,得多逛逛github吧~

    健壮性。这个词,在龙湖的时候是经常提起的,健壮性、可读性、可靠性…而实际的工作中,程序出了bug崩溃了,才让我真正明白了何谓健壮性。nodejs作为单线程的语言,一旦有一处调用出问题了,那么整个程序便会挂掉。举个工作中的例子吧,比如,前台一个请求,需要一个数据列表,我收到这个请求之后去数据库查找,找到相关数据之后,为了显示的完整行,可能还需要返回这些数据的创建者信息,那么我就用这些数据存储的创建者的id去查找然后在返回的结果中给创建者信息赋值。这个过程中,假如某条数据没有存储创建的id,或者这个id对应的创建者不存在了,那么你调用data.creater/user.name,就会报错。随之而来的就是程序整个挂掉。正式运营的项目挂掉的严重性我就不提了,就说说怎么处理这些脏数据所造成的威胁吧。目前来说,我有三种处理方式:

    1. 在你觉得可能会出现问题的代码那里加上try catch块,在catch/finally中对其做处理
    2. 直接给个默认值,比如data.creater = data.creater || ''
    3. if条件判断

    除技术方面之外,在做事这块,也有很多体会(大多时候是被喷了- -、)。

    公司的项目是前后端分离,那么上线之前得有个联调阶段,这之间就可能会出一系列问题…比如,接口文档的字段写错了,前后端可能一方用正确的字段,一方可能不改,联调的时候就会出现

    “诶,你这少返回了一个字段啊喂” 
    “没有啊,我测试过了的” 
    “...你来看看”
    “我靠,你这字段错了,明显单词拼错了嘛”
    “你看文档,我们按文档来好吧”
    “文档定错了我们也按文档来?balabalbala”
    “...”
    

    比如,前后端联调都过了,

    “兄弟,你那边显示没问题了吧“
    ”没问题,我都看过了,数据有了“
    ”那行,棒棒哒~“
    ”...“
    

    快上线的日子到了,

    ”那孩子,这接口是你写的吧,测试过了没“
    ”没问题的,老大,我和前端测过了,ok的“
    ”那你来看看数据怎么才10条!!“
    

    蹬蹬蹬的跑过去,打开console,看了看返回数据,

    ”诶,你看,我这分页的数据有传给他啊“
    ”那当时联调的时候怎么没解决呢?这是你做的东西,你不跟进确认吗?你做的东西被糟蹋了你还淡定的跟我说你传了?是,前端是有责任,那你呢?balabalabala“
    

    感觉自己都要被喷死了…实话说,这一天我的状态是崩溃的థ౪థ

    成长的过程是痛苦的,我觉得我一定是成长了很多,这也是我这天唯一能高兴的点…

    这个故事告诉我,

    1. 自己做的东西一定切实的确认它成功的落地了,也就是说不仅要保证自己这边的东西没有bug,还得确认调用的人那边也没有问题,这算是对自己负责吧。
    2. 做事情,一定得和同事保证信息的畅通性、实时性,有什么问题、哪里有改动,需要通知的一定得互相知会到位。

    然后呢,我觉得应该总结出一个最重要的事,

    一有什么问题浮现在脑海里马上就不假思索的提出来,这并非是件对我们有帮助的事情。
    

    有时候,坑是自己挖的,自己掉进去了,也只有自己默默地爬了(含泪总结థ౪థ)…

    总的来说,这三个月过的还行(至少没找家里要钱),三思而后行,三思而后问,谋定后动。接下来,这些总结的东西需要学而时习之,最后还是对接下来的事情定个计划:

    1. 继续研究async包,尽力搞懂其原理
    2. 继续研究大文件读取写入(这个是自己某次偶然遇到),对node的文件操作有自己的心得
    3. 不辜负豪情大大的提点,在前端方面还是要自己多努力,做一个自己demo
    4. 对express框架进行更深入的理解

    加油,baby

  • 相关阅读:
    faster with MyISAM tables than with InnoDB or NDB tables
    w-BIG TABLE 1-toSMALLtable @-toMEMORY
    Indexing and Hashing
    MEMORY Storage Engine MEMORY Tables TEMPORARY TABLE max_heap_table_size
    controlling the variance of request response times and not just worrying about maximizing queries per second
    Variance
    Population Mean
    12.162s 1805.867s
    situations where MyISAM will be faster than InnoDB
    1920.154s 0.309s 30817
  • 原文地址:https://www.cnblogs.com/wfsovereign/p/4947246.html
Copyright © 2020-2023  润新知