前端与后端的思维专注点很不相同,前端聚焦在如何把内容以可视化的方式展现给用户,后端聚焦在如何利用IT基础设施实现业务逻辑。所以前端参与后端开发时(全栈工程师必备!)首先需要理解后端会做哪些事,其次才是如何才能做好这些事。

所谓“利用IT基础设施实现业务逻辑”,意味着以下几个概念:

  • IT基础设施有哪些?

数据库一定是最重要的,这里特指关系数据库,例如mysql。因为前端所用的数据库往往非常简单,浏览器或者APP毕竟只服务于一位用户,而后端的数据库需要服务于全部用户,这不是一个量级。在现实世界中,一旦量级发生改变,需要用到的技术就完全不一样了。数据库的基本操作ACID、事务、关联查询、索引都是完成业务逻辑的必备品。

缓存也是前端必须理解的概念。后端可以直接操作SATA磁盘,SSD磁盘,内存等不同的存储介质,而这些介质的存取速度差异巨大。CPU操作L1和L2缓存只有3个纳秒以内,到了L3缓存(可以以MB为单位计量了)就得10纳秒以上了,而到了内存就得100纳秒以上,通过网卡访问远端则需要数百微秒,访问机械硬盘则要几十毫秒。为了能够让用户的请求尽快获得响应,必须使用缓存。很少的场景下才会直接编写缓存,通常后端都在使用的缓存服务包括redis、memcached等,其中前者使用更多。

  • 如何正确的分析业务逻辑?

UML图是一个非常好的手段!类图、时序图、状态图可以帮助后端理清先做什么、再做什么、不会漏掉什么。这是因为后端的程序需要整年的运行不能宕机,而前端是没有这种要求的。因此,后端必须全面的考虑各种异常情况,防止一个用户(请求)引起的意外把整个服务宕机,影响了全部用户。

  • 业务逻辑如何与IT设施结合?

了解MVC模型!前端有许多模型,例如MVVM等,这些名词不重要,因为它们的关注点各不相同。对于后端,通常M意味着关系数据库,所以后端的WEB框架一定围绕着M进行。我们分析任何一个WEB框架,一定先要看它的数据库模型,即如何将数据库中的表、行映射到编程语言中。另一方面,HTTP协议有许多特性,它会导致MVC框架试图以此解耦,将URL的配置与业务处理代码分开。最后,WEB框架由于处理场景的复杂,通常以可插拔的方式将许多插件串行的组合起来处理一个请求。前端在学习WEB框架时,把握这三点即可快速掌握。

前端做后端时最容易犯2个错误:

  • 日志打得很少

后端的复杂场景会导致bug难以复现(相比前端更难),且一个应用服务可能跑在多个服务器上,所以error、info、debug等级日志的输出显得尤为重要!没有日志,问题很难定位!

  • 资源没有即用即放!

因为服务是7*24小时运行的,所以一点点资源泄露(如打开了句柄却未关闭)都会被时间放大!最后导致严重后果。

后端的代码如何更高效?答案一定是算法!

好的算法在我看来就是3点:

  1. 不做重复的事;
  2. 充分利用已知信息或者中间计算结果;
  3. 充分利用IT基础设施的特性。比如多核、CPU亲和性、存储介质的性价比、网络报文的收发等。

为了达到这一点,我们必须学习:

  1. 算法复杂度;
  2. 分而治之的思想,这可能是所有算法思想中最有用的了;
  3. 计算机体系的特点,如CPU架构、网络通讯成本等;
  4. 常用数据结构,如树、哈希表、图等。

本文出现的原因是团队中有前端同事想在后端试试水,我当然非常欢迎,于是尽量从我对前端的理解上阐述后端开发的要点,或者更准确的说,是后端WEB应用开发工程师的开发要点。全栈工程师的要求高得多,这里虽然有些标题党嫌疑,但好在标明了基础版,进阶版在好好谈谈前端转全栈工程师的其他要求。

(转载本站文章请注明作者和出处 陶辉笔记 ,请勿用于任何商业用途)

前端程序员如何快速转型全栈工程师(基础版)相关推荐

  1. 大写的服!用耳朵也能写代码?盲人程序员自学编程成为全栈工程师

    作者 | 年素清 责编 | 王晓曼 出品 | 程序人生 (ID:coder _life) 蔡勇斌幼年失明,靠着顽强的毅力和不服输的精神自学编程,成为了一名全栈工程师.作为一名盲人,为了让全中国的其他盲 ...

  2. 小程序高级电商前端第1周走进Web全栈工程师<二>

    业务对象的重要性: 在上一次小程序高级电商前端第1周走进Web全栈工程师<一>----小程序注册.开发工具推荐.<风袖>首页布局详尽分析.Webstorm开发小程序必配配置.m ...

  3. 小程序高级电商前端第1周走进Web全栈工程师<三>----首页Banner、分类六宫格

    继续接着上一次小程序高级电商前端第1周走进Web全栈工程师<二>的首页逻辑往下演示,上一次对于首页的主题已经处理完了: 接下来则来处理Banner: 接下来则来实现一下它. 获取Banne ...

  4. 程序员千万不要选全栈开发

    作者 | 千鸟(网名)   小路助手开发者 责编 | 晋兆雨 出品 | CSDN(ID:CSDNnews) 对于大多数人来说,大学毕业后选择一家满意的公司,一路升职加薪才是正解,但他却偏偏选择了一条鲜 ...

  5. “程序员千万不要选全栈开发”

    作者 | 千鸟(网名)   小路助手开发者 责编 | 晋兆雨 出品 | CSDN(ID:CSDNnews) 对于大多数人来说,大学毕业后选择一家满意的公司,一路升职加薪才是正解,但他却偏偏选择了一条鲜 ...

  6. 小程序高级电商前端第1周走进Web全栈工程师一----小程序注册、开发工具推荐、《风袖》首页布局详尽分析、Webstorm开发小程序必配配置、mock数据...

    接下来开启一门全新的课程的学习,其实这是去年6月份所记录的,只是木有公开,然后到目前为止已经间隔了快1年没管了,基本上是已经快放弃的节奏,但是呢它又是我一直特别想学习的,所以决定公开,鞭策自己得继续前 ...

  7. python全栈人工智能192集视频_黑马程序员分享:python全栈开发环境构建

    Sublime简介 Sublime Text是一个代码编辑器.也是HTML和散文先进的文本编辑器.漂亮的用户界面和非凡的功能,例如:多选择,Python插件,代码段等等.完全可自定义键绑定,菜单和工具 ...

  8. 程序人生:从全栈工程师看技术人生

    开场白:              道德三皇五帝,功名夏后商周.英雄五伯闹春秋,秦汉兴亡过手.              青史几行名姓,北邙无数荒丘. 前人田地后人收,说什么龙争虎斗. 最近国内外都在 ...

  9. 开课吧前端:全栈工程师的职业目的方向是什么呢?

    全栈工程师我们众所周知的就是,技术知识全面,个人技能涵盖前端后端的方方面面,那么全栈工程师的职业目的方向是什么呢? 首先明确全栈工程师的方向和意义--解决问题,而不是醉心技术 公司存在的意义就是解决问 ...

最新文章

  1. CodeMapping:稀疏SLAM实时密集建图(帝国理工学院)
  2. 简单的html5 readAsDataURL img和base64互相转换
  3. linux+用户的shell,linux更换用户_更改linux用户登录shell的方法
  4. Python专家编程
  5. 第五章 循环结构课后反思
  6. es6 --- 正确获取Generator函数内部的this对象使其可以使用new
  7. C# Action用法
  8. 【POJ - 1328】Radar Installation(贪心+计算几何)安装雷达辐射岛屿
  9. 重绘CButton控件
  10. ASP.NET 经典60道面试题
  11. C调用Python的示例代码
  12. 【图像隐写】基于matlab WOW算法图像自适应隐写【含Matlab源码 368期】
  13. [置顶] iOs LightBlue与cc2540 BLE开发板之间的通信实验 [原创, 多图]
  14. c语言中lookup函数功能,Lookup函数以及0/的用法
  15. 正则表达式——特殊字符(MyBatis)
  16. matlab学霸表白公式,一个理科学霸的表白:数学公式的超酷表白
  17. PHP 代码 微信、公众号、企业微信 发送表情符号 [U+1F449]
  18. (8)香橙派+apache2与php+天猫精灵=自建平台语音支持--天猫精灵对接3
  19. LINUX嵌入式系统开发平台选择
  20. Android之雪花飘落效果

热门文章

  1. AES加密和RSA加密详细原理及使用场景
  2. H5生成二维码及保存
  3. JavaScript(JS) 浏览器中设置启用或禁用
  4. 热搜排序 半衰期的应用
  5. unity android 震动,unity 调用android的震动
  6. 有趣的Python:Python控制键盘鼠标
  7. vue 自定义指令
  8. 企业文件防泄密整体解决方案
  9. 机器学习算法工程师需要掌握的技能与要踩的坑
  10. android 错误中英互译,安卓手机Recovery模式刷机情况下的中英文对照翻译