Web/协议
文章平均质量分 72
Cloud_N
这个作者很懒,什么都没留下…
展开
-
接口幂等问题
项目代码里类似有这样的业务逻辑... ...Service service1 =serviceDao.getService(serviceId);if(service1.getStatus == 200){ throw new BusinessException("status exception!");}Service service2 =new Service();s...原创 2018-08-26 14:16:37 · 344 阅读 · 0 评论 -
对REST的一点理解
restful,指的是web开发中的一种接口风格,但凡稍微接触过web开发的都应该了解过。rest是Representational State Transfer的缩写,翻译后意为”表征状态转移“。刚开始接触rest的时候对这个”表征状态转移“一脸懵逼,但现在一看翻译的确实很精准,这个词应该从两方面理解,即”表征“和”状态转移“。表征:Representational翻译过来是”具体的“,...原创 2018-09-02 13:55:51 · 273 阅读 · 0 评论 -
MQTT协议发布流程
转自:http://www.blogjava.net/yongboy/archive/2014/02/10/409689.html前言这次要讲到客户端/服务器的发布消息行为,与PUBLISH相关的消息类型,会在这里看到。PUBLISH客户端发布消息经由服务器分发到所有对应的订阅者那里。一个订阅者可以订阅若干个主题(Topic name),但一个PUBLISH消息只能拥有一个主题。...转载 2018-09-09 10:45:38 · 871 阅读 · 0 评论 -
wss连接的一些坑
转自:https://blog.csdn.net/qq_28804275/article/details/80891921 过去的这一个多月里,我的工(开)作(发)任务转战回了游戏。短短的一个月里,催着输出两款h5游戏,再加上对接、联调,想想真是够辛(ku)苦(bi)的。本人负责后端,也就是服务端这块的游戏主流程输出。去年下半年,在前任大佬的带领下,做过一两款棋牌类的手游,虽然目前的运营状况...转载 2018-09-18 15:32:10 · 118445 阅读 · 19 评论 -
tomcat源码解析——NIO线程模型
最近在用netty写一些东西,有点好奇tomcat和netty在性能上到底有多大差距,毕竟tomcat也支持nio,都是基于reactor模式的,8.0之后还支持异步servlet(虽然还用不起来),跟netty比应该不落下风,回头看一下tomcat NIO部分的源码。上一章看的是tomcat初始化和start部分的源码,就接着上回的地方看,之前看到的是JIO的init方法,这回直接从NIO的...原创 2018-09-25 20:56:53 · 1110 阅读 · 0 评论 -
tomcat优化后的worker线程池
tomcat实现了自己的worker线程池,重写了ThreadPoolExecutor的execute部分逻辑,使之更适合web服务这种IO密集型任务。直接贴源码。自定义的ThreadPoolExecutor:/** * Same as a java.util.concurrent.ThreadPoolExecutor but implements a much more effici...原创 2018-09-27 15:24:17 · 2468 阅读 · 0 评论 -
netty-channel的attachment源码解读
netty的每一个channel都会有一个绑定当前channel的attachment(附件),有点类似ThreadLocal,但在netty里你不能直接用ThreadLocal,因为一个EventLoop可能与多个channel绑定,一个线程可能处理几个channel,这时ThreadLocal无法做到与某一channel绑定。直接上代码吧,attachment用起来很简单,调用channe...原创 2018-10-30 11:47:54 · 1046 阅读 · 0 评论 -
SSL用pem和key文件生成jks文件
转自:https://blog.csdn.net/long19901216/article/details/79696796 在工作中时长会遇到配置https,我使用的是Tomcat服务器,tomcat服务器一般使用的.jks文件配置SSL加密。但是,https供应商不会直接提供.jks文件。所以,我们就需要将加密文件转换成所需要的jks文件。现将我遇到并解决的相关问题记录下来,仅供各位...转载 2018-11-06 19:43:32 · 6821 阅读 · 0 评论 -
Reactor线程模型
无论是C++还是Java编写的网络框架,大多数都是基于Reactor模式进行设计和开发,Reactor模式基于事件驱动,特别适合处理海量的I/O事件,netty、redis、nodejs都是reactor模型的典型代表,tomcat的nio也是基于reactor模型的,reactor模型大概可分为三种。1.2.1. 单线程模型Reactor单线程模型,指的是所有的IO操作都在同一个NIO线...转载 2018-10-27 11:37:46 · 297 阅读 · 0 评论 -
NIO之Selector
--------------------- 转自 江湖人称小白哥 的CSDN 博客 :https://blog.csdn.net/dd864140130/article/details/50299687?utm_source=copy1. Selector简介选择器提供选择执行已经就绪的任务的能力.从底层来看,Selector提供了询问通道是否已经准备好执行每个I/O操作的能力。Selec...转载 2018-09-25 19:07:54 · 166 阅读 · 0 评论 -
webRTC协议
如图可见,webRTC协议是建立在websocket协议之上的ICE交互式连接建立Interactive Connectivity Establishment (ICE) 是一个允许你的浏览器和对端浏览器建立连接的协议框架。在实际的网络当中,有很多原因能导致简单的从A端到B端直连不能如愿完成。这需要绕过阻止建立连接的防火墙,给你的设备分配一个唯一可见的地址(通常情况下我们的大部分设备没...转载 2018-08-07 16:33:35 · 2889 阅读 · 0 评论 -
关于java与cpu内核的疑惑
一直以来都有这样一个疑惑,即为什么多线程可以提高程序的运行效率,因为无论开多少线程,都是基于cpu切片时间的,理论上讲,无论开多少线程,由于cpu线程间切换的缘故,其效率都应该不如单线程。 其实这个问题可以分两部分看: 1.程序在运行过程中,cpu不总是满负荷的。假设cpu只有单核,由于各种各样的原因,总是会导致IO资源的阻塞,比如网络太慢,业务代码使用...原创 2018-07-03 11:06:28 · 360 阅读 · 0 评论 -
Servlet源码解析初步
如何写一个Servlet类?围绕这个问题,可以看一下Servlet的类结构。首先Servlet类也是一个Java类,只不过这个类比较特殊,它不能单独运行,必须要依托Servlet容器才能运行,Servlet类是一个组件,供Servlet引擎调用。既然是这样,那么Servlet类和Servlet引擎必然要遵循一套规范,以约束彼此的行为,遵循规范编写的Servlet类可以运行在任何符合规范的Serv转载 2017-10-04 15:54:29 · 217 阅读 · 0 评论 -
使用jwt实现restful接口用户验证
基于restful进行前后端分离的项目由于是基于json进行数据传输,前端既可以是web、android也可以是IOS,但是这样就产生了一个问题,http协议是无状态的,restful也是无状态的,用户状态信息该如何保存?restful接口的用户认证有几种方案:1.使用session+cookie进行用户认证。 2.使用token进行认证,如果用户登陆成功,则通过某种规则(比如userName+t原创 2017-12-27 21:38:29 · 4850 阅读 · 3 评论 -
单点登录实现方案
转自https://www.cnblogs.com/ywlaker/p/6113927.html一、单系统登录机制1、http无状态协议 web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系 但这转载 2018-01-13 12:47:57 · 230 阅读 · 0 评论 -
对restful的理解
http://blog.csdn.net/qing_mei_xiu/article/details/524939551. 什么是REST REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。 他在论文中提...转载 2018-03-14 20:42:05 · 422 阅读 · 0 评论 -
tomcat单机多实例启动设置
直接复制tomcat到另一个文件夹然后在cmd中临时配置环境变量到新文件夹 set CATALINA_HOME D:\apache-tomcat-others\apache-tomcat-solr然后启动tomcat即可原创 2018-03-11 23:14:11 · 349 阅读 · 0 评论 -
从输入URL到显示网页,都经历了什么?
转自http://www.dailichun.com/2018/03/12/whenyouenteraurl.html前言见解有限,如有描述不当之处,请帮忙指出,如有错误,会及时修正。为什么要梳理这篇文章?最近恰好被问到这方面的问题,尝试整理后发现,这道题的覆盖面可以非常广,很适合作为一道承载知识体系的题目。关于这道题目的吐槽暂且不提(这是一道被提到无数次的题,得到不少人的赞同,也被很多人反感),...转载 2018-03-19 20:48:23 · 1674 阅读 · 1 评论 -
http请求user_agent字段解析
浏览器的常见User Agent 各字段的解释浏览器的User Agent字段令人迷惑,例如:某一版本的Chrome访问网络时,User Agent字段如下:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.29 Safari/537.36其中既包含多个公司的浏览器...转载 2018-05-19 17:57:18 · 8419 阅读 · 0 评论 -
tomcat源码解析——初始化
tomcat作为一个web容器,实现了servlet规范,是对http请求进行处理的关键部分。下面是Tomcat整体架构:catalina类是tomcat处理请求的起点。下面的server是tomcat组件的容器,可以在server.xml中配置多个。service包含了connector和container,connector即连接器,支持http/https/ajp协议...原创 2018-05-26 11:17:41 · 555 阅读 · 0 评论 -
Servlet3 异步原理
一、什么是Servletservlet 是基于 Java 的 Web 组件,由容器进行管理,来生成动态内容。像其他基于 Java 的组件技术一样,servlet 也是基于平台无关的 Java 类格式,被编译为平台无关的字节码,可以被基于 Java 技术的 Web 服务器动态加载并运行。容器(Container),有时候也叫做 servlet 引擎,是 Web 服务器为支持 servlet 功能扩展...转载 2018-06-02 22:34:32 · 710 阅读 · 0 评论 -
web服务器IO模型随笔
进程是系统资源管理最小单位,线程是CPU调度的最小单位。一个进程中应至少有一个线程,否则该进程无法被CPU调度执行,一个进程中可以有多个线程。进程更偏向于内存管理,每个进程的内存都是相互隔离的,无法互相访问。线程作为CPU调度的最小单位,有些程序是基于进程调度的,一个进程中由一个或多个线程。但进程粒度过高,CPU都是基于时间片转轮法切换进程的,每次切换进程都需要保存程序运行的上下文,如临时变量...原创 2018-10-21 15:34:13 · 496 阅读 · 0 评论