不要一上来就学框架

2019 年 8 月 21 日 码农翻身


问:有两年多前端经验,但感觉自己对后端知之甚少,没有安全感。但是后端语言又多,不知道学哪一门性价比好一些,求教。


语言不是重点,尤其是你已经会一门语言的情况下,后端编程最最基本的技术是这些


1.浏览器和服务器是怎么打交道的? 

重点就是HTTP协议。


2. 理解url 和 代码之间的关联, 例如 www.xxx.com?action=login  这样的url 是怎么和后端的业务代码关联起来的? 


这样的规则是在哪里定义的?用代码、注解还是配置文件?


后端的业务代码是怎么组织的?相信现在不会有人把业务逻辑都写到Servlet当中了,  所以需要很多MVC 框架像Struts , SpringMVC 来组织代码,让系统清晰易懂。


3.数据的验证、转换和绑定


如何保证浏览器发过来的数据是符合要求的?例如不能为空、不超过8个字符、两个密码必须相等....  , 出错了得给出错误提示。


浏览器发过来的数据都是形如username=liuxin&password=123456这样简单的文本, 但是后台程序却有着丰富的数据类型,什么String, Date ,Integer等等。所以需要把文本变成指定语言的类型,如何做转换?


类型转换以后, 后端的业务代码怎么才能有效的使用呢?


最简单的就是弄一个key : value 这个样的Map 出来, 业务代码直接用map.get(key) 即可,但是这样做缺乏“契约”,非常难以理解。


高级一点的可以把页面发来的数据直接绑定到对象的属性上, 并且支持数组,嵌套等复杂的结构。


例如user.name=liuxin&user.password=123456  可以绑定到一个叫User的对象, 其中有两个属性userName和password。 


4. 数据库访问


这一块是比较麻烦的, 毕竟面向对象(OO)世界和关系(Relational)数据库之间存在着天然的鸿沟。 


对于简单的应用, 直接写点JDBC就够用了,只需要掌握Connection, Statement , Resultset这三个基础。 


复杂点的需要用O/R Mapping 框架来搞定,例如 Hibernate, MyBatis  ,还有RoR的ActiveRecord。


这其中比较棘手的就是表之间的关联, 就是所谓的一对多, 一对一, 多对多这样的关系, 如何在面向对象的世界里描述。


扩展开去,还需要处理连接池, 事务,锁 等各种烦人问题。


5. 业务代码的执行

把业务代码放到哪里?代码该怎么组织?用事务脚本还是领域模型?贫血还是充血?


6.如何把对象变成json和其他格式,让前端使用


原来的后端会用模板(JSP,Veloctiy ,FreeMaker等)生成页面,现在基本上是通过API提供数据了,需要把Java/Python对象变成JSON等格式来传输到前端。


搞定了前面这几点,就搞定了一个基本的网站后端了。


如果你仅仅是想了解下后端编程是什么样子,可以直接去学学框架,Java可以直接学Springboot,MyBatis, Python可以学Django,  Flask,这些框架的抽象程度和封装程度都非常高,把上面所说的技术点都给屏蔽了,只要会用,就能开发后端程序。


如果你想深入学习后端编程,强烈建议:不要一上来就学框架


要先用这些语言提供的最基本的能力,把这些技术点自己做一下,然后进入框架的世界,这样理解会非常深刻。 


例如Java, 它提供了Web开发最最基本的功能:Servlet 和JDBC,Python也是类似,有WSGI, PyMySQL可以直接使用,用他们就可以做URL和代码的映射,数据的转换和绑定,数据库的访问。 


从实践上来讲,可以用项目驱动的方法,做个博客之类的小项目,和你的前端编程结合起来。


接下来就是高并发,海量数据相关的东西了:

用ngnix做负载均衡和反向代理,用redis做缓存,用es做搜索,用mq来解耦,削峰填谷。每一点都够你挖掘很久。 


上面这些软件都支持分布式下的高可用性,单点不够了就搞分布式,拆分数据库,拆分应用,搞微服务,限流/降级,部署的时候用docker,用k8s管理。


在分布式环境下很容易出现各种问题:数据一致性,同步操作,事务。这又会引发分布式锁,又需要通过分布式锁,BASE, TCC等技术来解决。


写了这么多,我想说的是:后端广阔天地,大有可为 !就看你想前进到哪一步了 !



这篇文章来自于我的知识星球“码农翻身”的一个问答, 类似的精华文章在星球中还有很多,你看到的只是冰山一角。 


我是刘欣, 拥有15年以上的软件行业从业经验,前IBM系统架构师,擅长企业应用架构和设计,领导过多个企业级应用架构设计和开发工作。


敏捷软件开发专家,敏捷教练,曾经给多家企业做过敏捷咨询和培训,包括华为杭州研发中心,工商银行广州开发中心,工商银行北京开发中心,鼎桥科技等。


强烈推荐我的星球“码农翻身”, 我会在其中分享我的所思所想,和大家近距离交流。



登录查看更多
0

相关内容

一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
Python导论,476页pdf,现代Python计算
专知会员服务
260+阅读 · 2020年5月17日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
225+阅读 · 2020年3月22日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
180+阅读 · 2020年1月1日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
R_leaflet包_最易上手地图教程(一)
R语言中文社区
10+阅读 · 2019年3月6日
深度学习线性代数简明教程
论智
11+阅读 · 2018年5月30日
推荐一些适合小白练手的Python项目
数据挖掘入门与实战
6+阅读 · 2018年5月17日
刚开始学编程?这几款小工具能让你事半功倍
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
一个小例子带你轻松Keras图像分类入门
云栖社区
4+阅读 · 2018年1月24日
【知识图谱】知识图谱从0级到10级简化版
产业智能官
7+阅读 · 2017年12月4日
【机器学习】推荐13个机器学习框架
产业智能官
8+阅读 · 2017年9月10日
Neural Image Captioning
Arxiv
5+阅读 · 2019年7月2日
Attend More Times for Image Captioning
Arxiv
6+阅读 · 2018年12月8日
Arxiv
7+阅读 · 2018年11月27日
Arxiv
7+阅读 · 2018年1月21日
Arxiv
27+阅读 · 2017年12月6日
VIP会员
相关VIP内容
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
Python导论,476页pdf,现代Python计算
专知会员服务
260+阅读 · 2020年5月17日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
225+阅读 · 2020年3月22日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
180+阅读 · 2020年1月1日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
相关资讯
R_leaflet包_最易上手地图教程(一)
R语言中文社区
10+阅读 · 2019年3月6日
深度学习线性代数简明教程
论智
11+阅读 · 2018年5月30日
推荐一些适合小白练手的Python项目
数据挖掘入门与实战
6+阅读 · 2018年5月17日
刚开始学编程?这几款小工具能让你事半功倍
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
一个小例子带你轻松Keras图像分类入门
云栖社区
4+阅读 · 2018年1月24日
【知识图谱】知识图谱从0级到10级简化版
产业智能官
7+阅读 · 2017年12月4日
【机器学习】推荐13个机器学习框架
产业智能官
8+阅读 · 2017年9月10日
相关论文
Neural Image Captioning
Arxiv
5+阅读 · 2019年7月2日
Attend More Times for Image Captioning
Arxiv
6+阅读 · 2018年12月8日
Arxiv
7+阅读 · 2018年11月27日
Arxiv
7+阅读 · 2018年1月21日
Arxiv
27+阅读 · 2017年12月6日
Top
微信扫码咨询专知VIP会员