6月份入职了新公司,并有幸参加了公司提供的技术栈培训。

虽然我这个人吧平时也不太热爱学习,技术底子比肾都虚,但毕竟也混了5年了,基本差不多的也都了解过或者经历过。所以一开始我是不慌的,但是从第一节课开始,我就惊雷了——我一直都很清楚我自己很菜,但没想到我竟然这么菜!

以下做了一些整理:

关于node.js

1.require加载文件的优先级以及唯一性:我只知道不会二次加载,且我们自定义的文件都是("./***")的方式,其他的就不知道了。

require加载文件的优先级以及唯一性
如果是名称,优先级 文件模块缓存->内置模块->第三方模块(node_modules)
如果是路径,则会按照自定义模块的规则查找。require("./a");  a->a.js->a.json->a.node->a文件夹(package.json mian指定 没有则index)
每一个编译成功的模块都会将其文件路径作为索引缓存在Module._cache对象上,以提高二次引入的性能。(深入浅出node.js p15-p20)
调用module.load()读取模块内容,然后调用modele.compile()编译执行

2.箭头函数的特性:我只知道不能this

没有自身的this,函数体内的this,指向定义时的对象,而不是使用时的对象
不能当作构造函数,不能使用new命令
不能使用arguments对象,可以使用rest参数代替
不可使用yield命令,因此箭头函数不能用作Generator 

3.块级作用域

arr = [];
let i;
for (i = 1; i < 10; i++) {arr.push(function () {console.log(i);});
}
arr.forEach((func) => func());  //10,10,10,10,10,10,10,10,10arr = [];
for (let i = 1; i < 10; i++) {arr.push(function () {console.log(i);});
}
arr.forEach((func) => func()); //1,2,3,4,5,6,7,8,9arr = [];
for (let a = []; a.length < 10; a.push(a.length)) {arr.push(function () {console.log(a.length);});
}
arr.forEach((func) => func());  //10,10,10,10,10,10,10,10,10

这个问题困扰我很久。

https://es6.ruanyifeng.com/#docs/let     看一下这个网站

阮一峰的文章对此的解释是每次循环都是一个新的变量,但这个说法又无法解释数组的现象。所以变量还是那个变量,只是基础类型赋值时会转化为常量值进行处理。而数组、对象等类型还是引用原来的指向。

关于http

重新学习整理了body过长的处理机制,端口复用,跨域等知识。这里有一个很有意思的小插曲

我们老生常谈的 get与post的区别!!!

我不知道我什么时候看过这篇帖子,并且被他文末的表情包所吸引。于是铭记了他的说法——GET产生一个TCP数据包;POST产生两个TCP数据包。

https://mp.weixin.qq.com/s?__biz=MzI3NzIzMzg3Mw==&mid=100000054&idx=1&sn=71f6c214f3833d9ca20b9f7dcd9d33e4#rd

当mentor问我的时候,我还很自信的回答了这个,然鹅,我感觉我mentor一脸看智障的样子看我= =!

后来我又看到了其他相关的文章

https://zhuanlan.zhihu.com/p/25028045

https://blog.josephscott.org/2009/08/27/xmlhttprequest-xhr-uses-multiple-packets-for-http-post/

所以这些都是不同浏览器或者服务端本身的设计处理机制,包括其他的我们说get数据放urlpost放body等都不能称之为区别。

那么究竟有什么区别呢?我找到了终极答案——名字不同。

关于mongodb与索引优化

主要是explain分析查询执行过程,包括b树,b+树,复合索引等

mongo的稀疏索引和其他的不同,mongo的稀疏索引(sparse)是指只包含有索引字段的文档的条目,跳过索引键不存在的文档,而我们常说的稀疏索引是区间化,与稠密索引相对。

关于框架开发与单元测试

log4j日志格式配置,config模块管理运行环境版本,不同于await的thenjs控制异步流程

重点是学习了mocha coverage report supertest模拟网络请求等单元测试相关的知识,以及运用。

子路由如果想拿父路由的值可以用const router = express.Router({ mergeParams: true });


通过此次培训,我深刻认识到了自己技术上的短板与开发中的陋习。
1.基础知识,概念极其薄弱,各种知识点一问,啥也不会。
2.只顾实现,不求甚解。很多库,模块根本不知道怎么回事,看着调通了能用就不管了。我自己也清楚这样会留下很多隐患。以后的工作中还是要多看官方文档,并且认真读源码,把问题剖析详细。不要带入自身的主观视角,觉得他应该是怎么怎么样,要去认真的理解它到底是什么样。
3.没有合理计划好就开工,我在培训过程中某一个环节卡了很久都没有review过就是这个原因,自己什么都没问清楚就开始写,搞了个表单防刷的机制,适当其反,画蛇添足。然后第二版相当于重新返工,再为了赶进度着急了代码质量就更差。事实上,磨刀不误砍柴工,先把思路理清,谋篇布局之后与团队,leader确认无误后再开始开发,这样其实效率会更高。
综上所述,对此次培训总结一句话就是——求真追细,谋定而动。
接下来的日子,在自身的学习与工作当中也将保持这个原则前行。
最后感谢公司提供的这次宝贵机会。

后端技术栈入职培训感悟相关推荐

  1. 【原创】《麦肯锡入职培训第一课》读书感悟

    自己作为新人刚入职,除了在编程技巧方面又需要学习提高的地方意外,自己在和领导沟通.和业务沟通上面遇见了许多问题,自己做的事情往往得不到领导的肯定,自己总结了一下原因,自己从学生到公司职员在做事的思维上 ...

  2. 深职院入职培训心得2021

    深职院入职培训心得2021 一.前言 二.课程流水账 3.8 下午 杨新斌 校长 党委书记 3.10 上午 温希东 副校长 3.10 下午 马晓明 副校长 3.11~12 素质拓展 3.15 上午 王 ...

  3. 如果让你做技术负责人,你会如何从0搭建公司后端技术栈

    如何您是一名创业公司的负责人,如何从0搭建公司的后端技术栈.今天要说的后台是大后台的概念,放在服务器上的东西都属于后台的东西,比如使用的框架,语言,数据库,服务,操作系统等等. 整个后台技术栈我的理解 ...

  4. 新员工入职表_入职培训流程,五大步骤让员工顺利上岗,来之能战战之能胜

    入职培训流程,主要有以下几步: 1.培训计划:根据企业入职培训大纲,针对入职的不同员工定制培训计划 2.岗前培训:入职后首次培训包括企业介绍.员工手册和培训考核等内容 3.部门培训:入岗后上岗前的培训 ...

  5. 新人入职培训流程及转正交流过程指导原则

    本编是自己初步总结的,对于中小型项目团队背景下新人入职流程及转正交流指导原则.后续会持续的做更新与同步,不合理之处还请多指正,谢谢. X1.入职常规手续.电脑装系统等事项,在安装开发环境的过程中穿插一 ...

  6. 作为技术负责人,如何从0搭建公司后端技术栈

    前沿技术早知道,弯道超车有希望 积累超车资本,从关注DD开始 图文编辑:xj.来源:网络 如何您是一名创业公司的负责人,如何从0搭建公司的后端技术栈.今天要说的后台是大后台的概念,放在服务器上的东西都 ...

  7. 小菜的进阶之路 | 入职培训 | 银行支付系统业务 #2

    文章目录 前言 一.背景 二.第二章(入职培训) 三.后续 四.总结 前言 这是一篇关于小菜-一名大四学生在刚入职后获得同事帮助以及在自身努力下成为一名架构师的故事 一.背景 聊背景故事之前先说说我自 ...

  8. 创业公司 如果让你作技术负责人,你会如何从0搭建公司后端技术栈

    创业公司 如果让你作技术负责人,你会如何从0搭建公司后端技术栈 文章目录 创业公司 如果让你作技术负责人,你会如何从0搭建公司后端技术栈 各系统组件选型 1.项目管理/Bug管理/问题管理 2.DNS ...

  9. 如果让你作技术负责人,你会如何从0搭建公司后端技术栈

    如何您是一名创业公司的负责人,如何从0搭建公司的后端技术栈.今天要说的后台是大后台的概念,放在服务器上的东西都属于后台的东西,比如使用的框架,语言,数据库,服务,操作系统等等. 整个后台技术栈我的理解 ...

最新文章

  1. oracle 截取字段长度substr
  2. 服务器虚拟化改写存储演进图
  3. android 基站信号强度,终于知道,到底是什么影响信号强弱了!
  4. 前端学习(2645):懂代码之header表头页之未读消息
  5. 实例:供应商管理报表需求调研报告
  6. Linux搭建NFS文件服务器
  7. [JNI]开发之旅 (3)jni域描述符说明
  8. 银河麒麟桌面操作系统中获取硬盘序列号
  9. 关于数据库学习的一些知识盲区
  10. 并查集(UnionFind)算法
  11. 镁客网每周硬科技领域投融资汇总(10.21-10.27),AI芯片创企Syntiant获英特尔等头部企业投资...
  12. Note8 android 9 root,三星Note8国行 root N9500 9.0 root
  13. google保存网页为图片
  14. 机器学习案例-信用卡诈骗识别。
  15. python 中的 Fraction和GCD求最大公约数
  16. RESTful Web 服务:教程
  17. 可能改变前端工程化未来的特性:ESM Loader Hooks
  18. Java程序员应该搞懂的六个问题
  19. QT 关于颜色的总结
  20. 手把手带你爬天猫,获取杜蕾斯评论数据

热门文章

  1. C语言 strlen函数实现
  2. C语言 printf函数实现
  3. C++:extern关键字
  4. OpenVINO InferenceEngine之读取IR
  5. 【Pytorch】model.train()和model.eval()用法和区别,以及model.eval()和torch.no_grad()的区别
  6. 【pytorch】requires_grad、volatile、no_grad()==>节点不保存梯度,即不进行反向传播
  7. Matlab - VideoReader Error: Unable to initialize the video properties
  8. phpcms函数:用*号替换(私密信息)中间数据(如手机号、邮箱)
  9. VSCode内npm run build编译打包时候报错:code ELIFECYCLE - (已解决)
  10. phpcms注入漏洞之文件poster.php