如果你没有接触过服务端开发,是否会好奇服务端的同学究竟做了什么?仅仅是做数据增删改查这样的事情吗?这篇文章告诉你,服务端的开发者都做了哪些事情,他们需要掌握和使用到哪方面的技术。本文适合有学习服务端开发想法或者初级的服务端开发者们阅读。不是技术干货但是希望能提供入门或初步进阶方向上的指引。

进入正题吧。

level1

1.熟悉并能使用一门服务端语言,会使用一个开发框架

2.会在服务器上搭建环境。环境不会搭怎么搞生产哦,拿lamp来说linux和apache、mysql、php四者担任的角色要清楚。这个级别的开发者不说每个软件都能自己装,就算是集成环境也是你要会的,像wampserver、xampp这样的。当然,这些前提是你要基本会使用你所用的服务器比如linux。

3.会使用一种数据库。比如关系型数据库mysql,能熟练写出增删改的语句和不算很复杂的查询语句,再如了解各种方式的多表查询有哪些不同等数据库技能还是需要的。

4.了解http通信协议。跨平台的交互一般的http是使用比较广泛的,至少对它大概要了解,比如:http是HyperText Transfer Protocol的缩写,英文常忘的话至少中文要知道是超文本传输协议,再比如你得清楚请求报文通常包含哪些部分、常见的服务器返回码对应的含义。

5.会使用一种数据格式。服务端和移动(前)端建立了联系,数据的传输也需要一种协议格式去统一。json是目前使用率最高的格式了。json的数据格式还是简单明了易学的,主要是要了解如何使用它较好的去定义接口,统一返回格式,举个栗子{code:"200","message":"OK","data":{"xx":"xx"}},code定义业务码,message显示服务端消息,返回数据写在data中,尽量写出对移动(前)端友好的接口。这里说个题外话,我们常说好的用户体验更能让用户接受和使用,那么,做为写接口的开发者为调用者提供的其实也是一种服务,调用者就是我们的用户,同样要注重体验。包括但不限于定义语义明确的字段、良好统一的传参方式和返回值风格、清晰易读的文档。

有了以上几种技能,基本上可以搭建出简单的服务端并写接口给其他端的开发同学调用了。

level2

1.熟练运用一门或以上语言,了解常见服务端语言的异同和优势。如果你只了解一门语言那么你一定会少学到很多东西,例如:为什么php适合快速实现业务?为什么node.js适合处理高并发?为什么很多公司喜欢用java、c++去数据层服务?

2.熟练使用数据库,有不错的数据库优化能力。遵循木桶短板原理,服务端的性能瓶颈多出现在数据库方面,所以优秀的数据库操作方式能大幅度提高项目或系统的性能,所以开发者需要很熟悉自己所用的数据库的特点,比如关系型数据库和非关系型数据库的异同和其各自适应的业务,再比如mysql数据库中Innodb和mysiam之间的特点,再比如Innodb中如何更好的利用索引,再比如...

3.理解和熟悉各种网络协议。除了熟悉http外,了解https的原理为什么更安全。要学会如何在自己的服务器配置https服务,了解单/双向验证原理。再如要了解tcp/ip协议、长/短连接、socket等等。

4.良好的业务设计能力。坏的业务设计或者过于复杂,可能导致使用流程复杂,项目不好维护,资源浪费,影响新业务等一系列问题。举个站内信的例子:站长要给拥有500W用户量的所有用户发一条消息的并且要标记用户是否读取。如果按正常的逻辑在消息表为每个用户插入一条新消息然后标记为未读,等待用户读取时标记为已读,这个方式的话一次性就要插入500W条记录,这仅仅是一条消息,那么消息频繁发送呢?用户量更加多呢?越多数据同时插入数据库的性能也将大幅度下降,而且有些用户或许永远都不可能上线去看这条消息了,数据库资源也大大浪费。那么,换个解决方案,等待用户上线的时候去系统表查询是否有新的系统消息,有的话再作为未读消息插入到消息表里面。这样是不是就优化了很多呢,同时解决了插入大量数据和资源浪费的问题。

5.有一些自己的可靠的开发套路。其实就是踩过坑后的一些可行的解决方案,比如总结出自己的一些性能优化方案、高并发的解决方案。这个概念模糊不好描述但是不可缺少。

level3

1.在level1、2的技能点上不断的深入、扩展理解。

2.模块化拆分能力,可扩展的编程思维。能将业务清晰理解并合理拆分模块,技术上比如单个项目拆分到数据层、缓存层、展示层、资源层、消息队列等更细分模块时,业务上比如电商系统拆分为用户模块、订单模块、商品模块等,做任何事情前先考虑如何拆分和扩展。再说扩展,假如缓存服务以前是由一台服务器提供要扩展到多台服务器时的解决方案,即为一台服务器扩展到多台服务器时能轻松过渡提前做好准备。

3.附加技能,不错的运维能力。有了这个能力能快速的排查系统故障,能自如的安装卸载自己需要的模块,能更好更方便的做压测调优,能清楚的知道项目的性能和承受力,修改优化起来得心应手好处多多。所以说,运维能力不必要吗?有运维能力的开发工程师才是好产品经理。

level++

到这里你觉得服务端开发是难是易?我自己认为,服务端相对移动(前)端来说大部分情况需要的经验比编程能力要高。应届生中可以将一个app做到效果和体验很好的见过蛮多,但是能开出完整一套高性能高可用服务端的缺很少。

结合目前的经验和能力大概归纳了这几个等级,每个等级所涉及的技能多少有点主观性,但是大致方向如此。编程路上没有尽头,还需要不断的学习。坚持主动更新阅历,总结新旧知识,当有更多的见解时我也会继续总结出来。


作者:newo链接:https://www.jianshu.com/p/3112115a10fd

转载于:https://www.cnblogs.com/aieceo/p/8289082.html

服务端开发所需技能归纳相关推荐

  1. 微信服务端开发必备技能——内网穿透

    前言    我们在做微信服务端开发的时候,经常会碰到需要调试,但是微信回调必须要外网环境,这时候只能打到服务器上了:那有没有什么办法是可以直接在本地调试呢?内网穿透可以让我们在本地进行调试. 什么是内 ...

  2. 百万在线:大型游戏服务端开发

    进入手游时代,服务端技术也在向前演进.现代游戏服务端既要承载数以万计的在线玩家,又要适应快速变化的市场需求,因此,如何设计合适的架构就成了重中之重.服务端技术并不简单,作为服务端新人,全面掌握服务端技 ...

  3. 抖音、腾讯、阿里、美团春招服务端开发岗位硬核面试(二)

    在上一篇 文章中,我们分享了几大互联网公司面试的题目,本文就来详细分析面试题答案以及复习参考和整理的面试资料,小民同学的私藏珍品????. 首先是面试题答案公布,在讲解时我们主要分成如下几块:语言的基 ...

  4. NodeJS+Express+mySQL服务端开发详解

    NodeJS+Express+mySQL服务端开发详解 随着NodeJS的发展,现在已经被很多人熟知,NodeJS已经成为了前端开发人员必备的技能.本文不会对NodeJS过多介绍 如果你感兴趣可以访问 ...

  5. 一、服务端开发基础(搭建Web服务器、网络基础概念、请求响应流程、配置Apache、静态网站与动态网站)

    一.建立你的第一个网站(目标) 前端开发 最终还是属于 Web 开发 中的一个分支,想要成为一名合格的前端开发人员,就必须要 充分理解Web 的概念. 构建一个专业的网站是一项巨大的工作!对于新手我们 ...

  6. 2016届360公司PHP服务端开发笔试和面试之所得所感

    这是一篇叙述自己在360公司参加笔试和面试的过程,可能面试的职位并不是你所学的方向,但是如果你能从中学到些什么或者吸取我的教训,那么作者就非常知足了.本着"学习别人是怎么失败的,活着出来的人 ...

  7. 网站建设的基本流程及服务端开发简介

    服务端开发: 前面部分都是在介绍前端开发,接下来将介绍后端开发,这里采用php介绍,在本篇应当掌握编程能力,编程思想,解决问题的思路,熟悉网页开发,网站开发,应用开发的基本流程. 网站开发: 下面将介 ...

  8. Express+MongoDB服务端开发教程

    本项目源码地址 my_express_server 参考资料 NodeJS服务端开发极速入门 准备工作 安装一些必要的全局依赖 # 全局暴力设置淘宝源 npm config set registry ...

  9. 华为帐号服务学习笔记(四):Authorization Code模式服务端开发

    笔者在<华为帐号服务学习笔记(二):OAuth2.0协议详解>中已经给大家介绍了Authorization Code模式是需要有后台服务器才能使用的,并且在<华为帐号服务学习笔记(三 ...

  10. 我问你这篇保熟不?! -- 做服务端开发,不懂网络层,真的可以吗?

    文章目录 唠嗑两句·网络层 网络层简介 网际协议IP 常见的三类IP地址 A类 B类.C类 IP地址与硬件地址 地址解析协议ARP IP层转发分组 子网划分 子网划分的背景意义 什么是子网划分? 子网 ...

最新文章

  1. mac mtu测试_一个关于MTU的现象,请兄弟们看看是不是确实是这样。 - 网络管理论坛 - 51CTO技术论坛_中国领先的IT技术社区...
  2. 解决wamp、vertrigo等集成环境安装后apache不能启动的问题
  3. mpls ***简介
  4. 不要成为自己讨厌的那种程序员
  5. java sql 联表查询系统_Spring Hibernate JPA 联表查询 复杂查询(转)
  6. asp.net 获取客户端mac_Mac软件安利(人人影视 for Mac 3.1.2)
  7. ActiveMQ专题2: 持久化
  8. SpringCloud学习笔记001-SpringCloud_001_SpringCloud简介_单体架构_微服务架构_服务注册与发现_微服务调用关系
  9. phpExcel使用方法二
  10. Swift代码实现加载WEBVIEW
  11. 04 Linux软件安装与卸载命令
  12. linux防火墙 限制流量,linux – iptables和阻止可能不可能的流量
  13. Unity VideoPlayer组件一个接一个的播放视频
  14. TrueCrypt加密安全问题
  15. flashpaper实现百度文库、豆丁网文档预览功能 - 坑
  16. 在MAC OSX系统中删除、添加、恢复、管理launchpad的STEAM游戏图标
  17. linux里sub用法,awk中gsub和sub 的用法
  18. 使用Mailgun API简化应用程序中的电子邮件
  19. VMware Tools 安装成功无法从主机拖动文件到虚拟机
  20. 左偏树初步学习 洛谷P3377

热门文章

  1. 帆软已知年和第几周,算出7天日期如何写?
  2. android上对cookie的读写操作,Android上对Cookie的读写操作(附Demo)
  3. 11gpath失败 oracle_win10安装oracle11g提示path长度不够,该怎样解决?
  4. php 请求 响应,发送http响应后继续处理php
  5. PHP面试常考内容之面向对象(3) 1
  6. JS二维数组排序组合
  7. Mac 显示和隐藏文件
  8. Python [6] IT资产管理(下)
  9. Java 代理模式之三:Cglib动态代理
  10. 安装windows7系统报错