服务器端

Netty 源码分析(一):引言和 Java NIO 介绍

梦想与她 提交于 2019-12-04 07:00:25
为什么要介绍 Netty 如今优秀的开源项目非常多,仅在 Java 服务器端开发领域,优秀的开源项目就不胜枚举。比如从十年前就开始流行到现在依旧十分活跃的 Spring Framework,如今已经发展为一个覆盖服务器端、大数据等多个领域的平台级开源项目。还有早年间的 MVC 框架、ORM 框架,到现在涉及各个服务器开发领域的开源技术。 但这次我要介绍的是 Netty 这个网络 IO 框架,而非 Spring 这样的流行项目。原因在于,Netty 这样的框架所实现的功能相比 Spring Framework 来说来说更为基础。因为对于服务器端开发来说,Spring Framework 核心的 IoC 和 AOP 技术其实并不是必须的。当然没有这两个技术,开发复杂的项目会很困难,但这两者只是充分而非必要的条件。但 Netty 这样的技术其实对于服务器端开发来说是必须的。 从产品的角度讲,没有像 Netty 这样的网络 IO 框架,就不会有优秀的 Web 服务器、应用服务器等等的平台,而没有这些平台,仅靠 IoC 和 AOP 等技术是不可能产生优秀的软件产品。一个服务器端软件,即便没有直接使用 Netty,那往往也是间接地使用了 Netty 这样的框架。所以 Netty 这样的框架对于一个优秀的服务器端项目或产品来说十分重要。 同时,因为 Netty 不仅被广泛地直接使用

【flask】处理表单数据

拈花ヽ惹草 提交于 2019-12-04 04:02:55
表单数据的处理涉及很多内容,除去表单提交不说,从获取数据到保存数据大致会经历以下步骤: 解析请求,获取表单数据。 对数据进行必要的转换,比如将勾选框的植转换为Python的布尔值。 验证数据是否符合要求,同时验证CSRF令牌 如果验证未通过则需要生成错误消息,并在模板中显示错误消息。 如果通过验证,就把数据保存到数据库或做进一步处理。 验证表单数据 1. 客户端验证和服务器端验证 表单的验 证通 常分为 以下两种形式: ( 1)客户端验证 客户端验证( client side validation)是指在客户端(比如 Web 浏览器)对用户的输入值进行 验证。 比如,使用 HTML5 内置的验证属性即可实现基本的客户端验证( type、 required、 min、 max、 accept 等) 。 比如,下面的 username 字段添加了 required 标志: <input type=” text" name=” username” required> 客户端验证可以增强用户体验,降低服务器负载 。 2.服务器端验证 服务器端验证 (server side validation)是指用户把输入的数据提交到服务器端,在服务器端 对数据进行验证 。 如果验证出错,就在返回的响应中加入错误信息 。 用户修改后再次提交表单 , 直到通过验证。 我们在 Flask程序中使用

Python TCP socket编程

一世执手 提交于 2019-12-04 04:01:27
# TCP通信设计 # 服务器端 # coding=utf-8from socket import *# 服务器端# 创建服务器端套接字对象serverSocket = socket(AF_INET,SOCK_STREAM)# 绑定端口serverSocket.bind(("", 5050))# 监听serverSocket.listen()# 等待客户端的连接clientSocket, clientInfo = serverSocket.accept()# 多次通信while True: # 接收客户端的消息 receiveData = clientSocket.recv(1024) print("客户端说:{}".format(receiveData.decode("utf-8"))) # 发送消息 message = input(">>:") clientSocket.send(message.encode("utf-8"))# 客户端 # coding=utf-8from socket import *# 客户端# 创建客户端套接字对象clientSocket = socket(AF_INET, SOCK_STREAM)# 调用connect方法与服务器建立连接clientSocket.connect(("127.0.0.1", 5050))# 通信while True:

APS.NET MVC + EF (1)---使用AJAX

☆樱花仙子☆ 提交于 2019-12-04 03:43:41
APS.NET MVC + EF (1)---使用AJAX 在Web系统中,Ajax技术已经成为提高用户体验的必备技术。开发Ajax程序,涉及两方面的内容:一是客户端技术,二是服务器端技术。 (1)客户端技术 核心工作是通过JavaScript向服务器发送数据和接收数据。初次之外还涉及两个工作,一是数据的展示,因此涉及Html DOM、CSS等相关技术;二是数据处理,因此涉及JSON、XML等数据格式处理技术。在实际开发过程中,可以借助一些客户端框架,来提高工作效率。 (2)服务器端技术 核心工作是完成在服务器端接收和发送数据。 10.1 使用动作方法处理Ajax请求 在动作方法中处理Ajax请求,重点关注的是如何向客户端返回数据。 对于接收数据,由于Ajax客户端程序仍是通过Get或Post方式发送数据,因此处理方式和接收非Ajax请求一致。 向服务器端发送数据,一般有如下几种形式。 10.1.1 返回纯文本数据 对于向客户端返回结构单一的数据,可以使用纯文本格式,如删除操作是否成功的提示,用法如示例1所示。 在Web系统中,Ajax技术已经成为提高用户体验的必备技术。开发Ajax程序,涉及两方面的内容:一是客户端技术,二是服务器端技术。 (1)客户端技术 核心工作是通过JavaScript向服务器发送数据和接收数据。初次之外还涉及两个工作,一是数据的展示,因此涉及Html

HTTP状态码

送分小仙女□ 提交于 2019-12-03 23:35:44
返回结果的HTTP状态码 状态码出现在响应报文的首部 包含响应结果的状态码,原因短语和HTTP版本 HTTP 状态码负责表示客户端 HTTP 请求的返回结果、标记服务器端 的处理是否正常、通知出现的错误等工作 类别 原因短语 1XX Informational(信息性状态码) 接收的请求正在处理 2XX Success(成功状态码) 请求正常处理完毕 3XX Redirection(重定向状态码) 需要进行附加操作以完成请求 4XX Client Error(客户端错误状态码) 服务器无法处理请求 5XX Server Error(服务器错误状态码) 服务器处理请求出错 2XX 成功 200 OK 表示从客户端发来的请求在服务器端被正常处理了 204 No Content 该状态码代表服务器接收的请求已成功处理,但在返回的响应报文中不包含实体的主体部分。另外,也不允许返回任何实体的主体。 206 Partial Content 该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求 3XX重定向 301 Moved Permanently 永久性从定向。该状态码表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI 302 Found 临时性重定向。该状态码表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问 303 See

《图解HTTP》读后总结

元气小坏坏 提交于 2019-12-03 21:08:07
阅读时间 :2019.10.30-2019.11.6 阅读心得 : 从知乎上看到有人推荐这本书,本身对计算机网络方面学习的比较少,于是就买来这本书开始看。这本书总体看下来比较轻松,因为书中的插画非常卡通,而且因为整本书都是在围绕HTTP进行讲解,所以内容上不会设计太多其他深奥的知识。读完之后,我对HTTP有了一个基本的认识,从以前只知道它是一个协议,到现在能够搞清楚这个协议内部的结构、返回的状态码等等,这都得益于这本小巧但又细致的书。也希望感兴趣的伙伴可以去读一读这本书呀! 阅读总结 : 【这本书一共有十一章,每一章都根据侧重点的不同展开介绍。在这里我将本书的章节框架展开,并根据自己读完的理解给每个部分做个小结,也方便自己日后复习。】 第一章:了解Web即网络基础 1.1 使用HTTP协议访问Web(什么是 HTTP ?什么是 客户端 、 服务器端 ?) 1.2 HTTP的诞生(诞生 原因 :知识共享; WWW (即Web)构建技术:HTML、HTTP、URL) 1.3 网络基础TCP/IP (HTTP是TCP/IP内部的一个子集;TCP/IP的传输流?发送端从应用层往下走,每通过一层增加首部,接收端从链路层往上走,每通过一层删除首部) TCP/IP分层 如下表所示: 应用层 各类应用服务,比如FTP(文件传输协议)、DNS(域名系统) 传输层 将计算机之间的数据进行分割、传输

三次握手和四次挥手以及TCP标志位的详细介绍

血红的双手。 提交于 2019-12-03 20:55:41
一、TCP标志位 在讲TCP三次握手和四次挥手之前,先说一下TCP标志位,方便后续的理解。 简单来说,TCP标志位的值代表了当前请求的目的。 标志位一共有6种,分别是: SYN(synchronous): 发送/同步标志,用来建立连接,和下面的第二个标志位ACK搭配使用。连接开始时,SYN=1,ACK=0,代表连接开始但是未获得响应。当连接被响应的时候,标志位会发生变化,其中ACK会置为1,代表确认收到连接请求,此时的标志位变成了 SYN=1,ACK=1。 ACK(acknowledgement):确认标志,表示确认收到请求。 PSH(push) :表示推送操作,就是指数据包到达接收端以后,不对其进行队列处理,而是尽可能的将数据交给应用程序处理; FIN(finish):结束标志,用于结束一个TCP会话; RST(reset):重置复位标志,用于复位对应的TCP连接。 URG(urgent):紧急标志,用于保证TCP连接不被中断,并且督促中间层设备尽快处理。 此外,还有两个序号: Sequence number :顺序号,发送数据包中的第一个字节的序列号,一般为小写的seq。 Acknowledge number:确认号,响应前面的seq,值为seq+1,可以理解为期望下次发出的序列号为seq+1; 二、TCP三次握手 1.TCP三次握手概述 所谓三次握手(Three-way

python xmlrpc入门

末鹿安然 提交于 2019-12-03 17:02:42
转: https://www.cnblogs.com/lxt287994374/p/3904219.html 一、简介   RPC是Remote Procedure Call的缩写,翻译成中文为:远程方法调用。 它是一种在本地机器上调用远端机器上的一个过程(方法)的技术,这个过程也被大家称为“分布式计算”,是为了提高各个分立机器的“互操作性”而发明出来的技术。   XML-RPC的全称是XML Remote Procedure Call,即XML远程方法调用。 它是一套允许运行在不同操作系统、不同环境的程序实现基于Internet过程调用的规范和一系列的实现。这种远程过程调用使用http作为传输协议,XML作为传送信息的编码格式。Xml-Rpc的定义尽可能的保持了简单,但同时能够传送、处理、返回复杂的数据结构。XML- RPC( http://www.xmlrpc.com )是由美国UserLand公司指定的一个RPC协议。简单的理解是:将数据定义为xml格式,通过http协议进行远程传输。 二、优点 1. 传输复杂的数据。 2. 通过程序语言的封装,实现远程对象的调用。 三、Python下的XML-RPC 1. 类库:SimpleXMLRPCServer   一般使用在服务器端,这个模块用来构造一个最基本的XML-RPC服务器框架。 2. 类库:xmlrpclib  

Eclipse上GIT插件EGIT使用手册

巧了我就是萌 提交于 2019-12-03 10:51:48
一_安装EGIT插件 http://download.eclipse.org/egit/updates/ 或者使用Eclipse Marketplace,搜索EGit 二_使用EGIT前的配置 配置个人信息,最重要的是user.name和user.email l Preferences > Team > Git > Configuration l New Entry 三_新建GIT仓库 新建NC module project l File > Team > Share Project 选择GIT 创建仓库后,在$workspace\demo目录下的.git文件夹,就是git的仓库地址。和CVS、SVN不同,GIT不会在每一个目录下建立版本控制文件夹,仅在根目录下建立仓库 同时,eclipse中的project也建立git版本控制,此时未创建分支,处于NO-HEAD状态 文件夹中的符号”?”表示此文件夹处于untracked状态,这样就成功创建GIT仓库。 四_配置.gitignore 此时我们尝试做一次提交 l Team -> Commit… 如上图所示,Author和Committer会默认为Git配置的用户信息。下面的Files窗口中可以看到此次提交的文件,其中有非常多带有NC_HOME的文件,此时可以猜测出,在我们的project中链接的NC

服务器端渲染与Nuxt.js

那年仲夏 提交于 2019-12-03 07:55:08
本文转载于: 猿2048 网站➪ https://www.mk2048.com/blog/blog.php?id=hca02aakaa 从前端发展史来看服务器端渲染 前段时间在知乎上看到一篇提问,说的是为什么现在又开始流行服务器端渲染html了。整理了网上一些评论,结合自己的想法,整理出了一段前端发展史。 早在1989年,HTML的诞生是一个物理学家为了方便学术文档的分享而创造,这个也是前端起始的时间。后来,CSS和Javascript加入前端行列,用来渲染页面样式和处理页面动效逻辑,前端三剑客成立。刚开始的前端程序员,其实就是做切图写样式(CSS)和做页面特效(JS)等一切基础的工作,处于程序员鄙视链的底层。 随着互联网发展与技术进步,静态页面已经远不能满足产品需求,页面上要根据逻辑产生动态的数据,这时,便迎来PHP,JSP等为代表的web1.0时代。此时的服务器渲染,是以“文档”为核心思想。服务器端的逻辑是把HTML,CSS和JS当做一个静态文件,对“文档”而言不存在“指令”和“数据”的区别,一切都是数据。所以我们可以看到服务器渲染,GET就是请求一个文件,而web 1.0时代的诸多服务端框架最基础的组件之一就是文档模版,比如asp, JSP之类,核心设计理念就是HTML文件里放占位符然后由服务端逻辑替换成实际数据后一股脑返回。很多中小型项目,不分前端后端