本文目录
网络开发需要学什么?
1、前端知识。最好能了解一些前端知识(html,css,javascript等)。但在一些分工非常明确的公司,有些开发人员只做后端开发,不懂前端的知识也是可以的,这时需要前后端的开发人员进行配合。毫无疑问,前端开发人员掌握一些后端的知识或者后端开发人员了解一些前端的知识,能使项目联调过程更顺畅、效率更高。
2、linux基础。由于在主流情况下项目部署都是使用的linux系统,比如项目有一个bug,在本地windows上复现不了,就得ssh到部署的机器上想各种办法进行复现与分析。尽管python是跨平台的,但各平台之间还是有不小的差异,因此掌握一些基础的linux操作还是非常有必要的。
3、数据库系统。web应用一般离不开对数据库的增加、删除、修改和查找,一般都会用到数据库。读者除了掌握这些常见的操作外,最好能对数据库的原理有一些了解,虽然我们平时使用的是orm,可能不会直接编写sql语句,但归根结底到最后,都是在数据库中执行sql语句,只有理解了sql语句,才能设计出更合理的表结构,才能写出更优秀的sql语句,才能更好地使用orm提供的各种功能。
4、缓存系统。网站访问一般会出现热点内容,比如微博的热搜,将热点内容缓存到内存中,然后直接从内存中读取返回给查询的用户,这样无疑能极大地提高效率。有的开发人员可能觉得缓存系统比较简单,其实不然,如果深入了解各缓存系统的内存分配方式、key淘汰算法、底层网络协议细节等,就要注意可能发生的比如缓存失效、缓存穿透、缓存雪崩等一系列问题。
5、http协议。由于web开发就是遵循http协议来进行的,比如可以通过expires,cache-control,last-modified和etag等字段来设定浏览器的缓存行为。再比如实现一个下载的功能,如果不知道http协议中的content-disposition这个响应报头和一些约定,就可能不知道应该如何下手。
6、网络协议(tcp/ip协议)。常见的tcp“三次握手”,“四次挥手”等过程,每一步的原理都要能够弄清楚。
7、数据结构和算法。算法可以说是程序员的内功,只有更好地掌握了算法,才能编写出更高效的程序。如果编写程序时不考虑性能,觉得自己的程序能用就行了,那么这样的程序远远达不到商业使用的标准。例如,数据结构中最基础的比如队列,栈,树等以及操作它们的算法在编程过程中非常常用。
8、操作系统。web应用会运行在某个操作系统的一个或多个进程中。比如从日志中看到有一个接口访问时特别慢,该怎么进行分析?影响的因素非常多,可能是网络缓慢、可能是服务器当前负载过高、可能是程序算法的复杂度高而效率低等。
服务器拒绝请求怎么解决?
原因是:发起连接请求的客户端,在 http 请求头部字段里没有维护对应的 authorized 字段导致的错误。
解决方法:收到这种错误后,客户端需要仔细检查错误消息,在 http rfc 里,根据状态码查找到对应的错误消息,再有针对性的进行处理。
如何让nginx修改responsehttpheader中的server的值?
可以设置server_tokens,设置为off,则不显示server字段,设置为一个字符串,则server显示为该字符串的值,用法如下(此为附加版本功能):
jsp怎么判断是否是新页面?
1. 可以通过判断request.getheader("referer")是否为空来判断是否是新页面。2. 因为referer是http请求头中的一个字段,用于表示请求的来源页面的url。如果referer为空,则说明当前请求没有来源页面,即为新页面。3. 另外,还可以通过判断request.getparameter("jsp")是否为空来判断是否是新页面。如果jsp参数为空,则说明当前请求是从新页面发起的。
http报文类型?
http报文格式有两种类型,分别为请求报文和响应报文。
请求报文是客户端发送给服务器端的,而响应报文是服务器端发送给客户端的
报文格式由如下几部分构成:
(1)请求行:方法 空格 uri 空格 版本
uri:对资源的标识符
版本:http的版本号。
(2)首部行:首部字段名 空格 值
(3)空行。
(4)http报文的实体。实体前面的东西即请求行、首部行和空行是脑袋,它所起的作用是控制。要传输的东西是放在主体中。这也是很多协议所采用的结构方式。。