web 开发(后端)的核心是什么

专业术语:

CURD是一个数据库技术中的缩写词,代表创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)操作,一般的项目开发的各种参数的基本功能都是CURD,用于处理数据的基本原子操作

以下来自某帖子的评论
转载评论一:
各领域技能重要程度排序
1. 扎实的数据结构、算法、计算机网络、操作系统知识,但是这些又如何体现在平时的开发。 
2. 还是关系型、非关系型数据库的掌握 
3. 架构、设计模式的理解 

4. Linux 系统的使用、部署能力 
5. HTTP 协议(暂时只想到这个)的理解,是否要很早的涉及 TCP/IP 
6. 对所使用语言、框架的掌握 
7. 一定的前端技能
get
8、业务能力(可行方案能力,交流(客户需求)能力,和展示(具体方案)能力

其实后端主要还是理论要扎实,实际解决问题就会快很多。理论基础是第一重要的,没有这个就没有办法分析问题。 
实际开发的时候,通常的场景是,遇到一个问题 
1.利用自己的理论基础诊断分析可行的方案,预测需要什么算法或方式解决问题。 
2.扩大视野寻找可用工具和成熟的方案,这时候很看英文能力,毕竟很多资料都是英文的。 
3.搭建最小化的架构测试工具和方案的可行性,这时候很看中对 linux 系统的使用、部署能力和语言熟练程度。 
4.分析测试结果,评估可选方案,这时候就只是看数据和经验了。 
5.最后就是定方案开发。 

这一套走下来,主要还是靠分析,如果实际开发能力足够强,经验丰富,往往可以跳过 123,直接选择一个成熟的方案上线。 

像我是经验和代码熟练读不太够的,我会在第 2 步查资料和第 3 步搭建最小化的架构耗费比较多的时间,才能定下来一个可用的方案。 
如果熟练的老手,时间可能是在日常的视野扩展上花的比较多,平时就会有意识去了解业内的新技术新方案并快速做个小系统练练手,这中间的试错积累的就是经验。这样实际遇到问题,就可以直接选型解决掉。

如果是进阶的话,我个人觉得再进一步提升的捷径是了解一些网络攻防的 hacker 技巧,这对提升架构能力很有帮助,做为开发者写代码的时候,有时候由于视野的局限,没有精力去考虑系统的健壮性,写出来的程序的可用性就要差一些。 

如果业余有时间了解一下别人是怎么攻击 web 服务器的,比如 xss 攻击, sql 注入,溢出, DDOS 等等破坏系统的行为是怎么绕过正常检测攻击系统的。有时间实践实践,对个人架构提升还是挺大的。 

这样至少会在开发上多注意几点 
1.不信任任何客户端提交的数据,写代码的时候会额外做提交数据校验,对敏感数据进行多种检测,负值、转义符、超大溢出数值这些普通应用在开发的时候往往是交给框架处理的,但是自己要有这个意识去确定框架是否能完全解决这个问题。 
2.不会将敏感数据传给客户端,敏感数据只会在服务器之间传输,客户端永远只凭借 session_id 或者 auth2 的 key 提交请求,服务端拿到标识依然要进行鉴权,比如避免构造 session_id 或者 key 之类的仿造用户提交的请求,用户的敏感信息如邮箱、身份证等返回给客户端的接口被人恶意遍历。 
3.对接口性能比较敏感,对直达数据库的接口尽可能做缓存。比如校验用户是否存在,密码是否正确,生成验证码之类的接口会考虑到容易被攻击,使用缓存、多做一些请求频率的限制。 
4.对数据一致性和安全性特别敏感,比如数据库操作的时候会考虑是否加锁,风险高的业务要不要用队列分摊请求峰值,日常数据库备份的方案等等。 

这些意思如果自己不去接触 hacker 的技巧,再强调也没有用。自己动手玩一遍,知道危害程度有多大,开发的时候就会分出一部分精力去预先考虑解决方案了,当然可能最后考虑到开发成本和实际能力没有去做,但至少不至于遇到问题会慌张。


转载评论二:
处理 Http 中的 Request 和 Response


转载评论三:
我感觉看你想发展的方向吧,是纵向还是横向 
纵向的话,就针对于目前工作所需的技术研究透彻,并有所创新。 
横向的话,类似全栈,核心竞争力应该是超强的动手能力和给出解决方案的能力,这种的话感觉需要多关注新技术、新框架,自己有什么想法的话尝试着自己实现

你可能感兴趣的:(web编程)