Web
colie_li
coding
展开
-
Servlet3之NIO线程池隔离
线程隔离主要是针对业务中不同业务场景,按照权重区分使用不同的线程池,以达到某一个业务出现问题,不会将故障扩散到其他的业务线程池,从而达到保证主要业务高可用。本案例主要讲解基于servlet3的线程隔离术。首先我们回忆一下在tomcat6,tomcat6只支持BIO,它的处理流程如下:1).tomcat负责接收servletRequest请求2).将接收的请求分配给servlet处理业务3...转载 2019-12-30 01:49:04 · 603 阅读 · 0 评论 -
使用httpclient必须知道的参数设置及代码写法、存在的风险
结论:如果使用httpclient 3.1并发量比较大的项目,最好升级到httpclient4.2.3上,保证并发量大时能抗住。httpclient 4.3.3,目前还有一些bug;还是用4.2.x稳定版本吧。以库存项目为例:httpclient一天并发量在1500w左右,峰值一秒7万。在之前使用过程中,一直存在大量的org.apache.http.co...转载 2019-11-20 18:35:09 · 679 阅读 · 0 评论 -
使用fastjson时出现$ref: "$.list[2]"的解决办法(重复引用)
最近下做成绩分析的功能的时候,出现了$ref: "$.list[2]"的情况。然后我查了一下出现这种情况的原因和解决办法。出现$ref: "$.list[2]"的原因是因为循环引用/内存对象重复那么什么是重复/循环引用?简单说,重复引用就是一个集合/对象中的多个元素/属性同时引用同一对象,循环引用就是集合/对象中的多个元素/属性存在相互引用导致循环。举例说明重复引用Li...转载 2019-05-08 21:20:37 · 3368 阅读 · 0 评论 -
AsyncHttpClient源码分析-基于Netty的连接池实现
这里暂且仅关注连接池的实现,部分涉及Netty的channel输入输出处理、哈希轮定时器算法、事件轮询方式的区别,又或者信号量的使用等等,以后有机会会单独拿出来详解。由于是基Netty的实现的,所以连接池实际上就是对channel的管理控制,有趣的是整个管理只用到了信号量+一个定时检测器,略微复杂的也就定时检测的逻辑,其实现方式简单且很好理解,不像httpclient里各种队列各种信号量难以理...转载 2019-03-14 17:11:36 · 2897 阅读 · 0 评论 -
AsyncHttpClient知识集锦
简介本文所指的AsyncHttpClient是指基于Netty的一个开源项目,该项目基于Java8编写,用于简化HTTP客户端的开发。该项目还支持WebSocket协议。要使用该AsyncHttpClient,引入以下Maven依赖:<dependency> <groupId>org.asynchttpclient</groupId> ...转载 2019-03-14 17:06:16 · 1505 阅读 · 0 评论 -
理解linux cpu load
你可能已经很熟悉linux的平均load. 平均load是3个数 (可以用uptime或者top命令查看), 他们看着像下面这样:load average: 0.09, 0.05, 0.01大多数人对这些数都有一个模糊的概念:三个数分别代表了一个随着更长时间上的一个平均值(1分钟, 5分钟, 15分钟). 并且值越小越好. 越大的数可能就表明有问题或者已经高负载了. 但是这个阈值是多少?...转载 2019-01-24 09:51:05 · 342 阅读 · 0 评论 -
Connection reset原因分析和解决方案
在使用HttpClient调用后台resetful服务时,“Connection reset”是一个比较常见的问题,有同学跟我私信说被这个问题困扰很久了,今天就来分析下,希望能帮到大家。例如我们线上的网关日志就会抛该错误: 从日志中可以看到是Socket套接字在read数据时抛出了该错误。 导致“Connection reset”的原因是服务器端因为某种原因关闭了Connect...转载 2018-09-08 01:34:42 · 103497 阅读 · 0 评论 -
继续深入理解HTTP keepalive
最近心里有几个疑问想要解决: 1. keepalive 是否开启服务端控制还是客户端控制? 2. keepalive的时间是由服务端控制还是客户端控制? 3. keepalive时间一到,是由客户端主动关闭还是服务端主动关闭? 4. 如果客户端不是httpclient,使用telnet连接服务端?下面带着上述问题,模拟相关场景进行抓包实验,先展示一张图,便于后续的分析: 场景一...转载 2018-09-08 01:23:43 · 9018 阅读 · 1 评论 -
当http连接池遇上keepalive
最近在使用netty作为http客户端通过pool连接tomcat的时候,出现了很多Connection reset by peer 的IOException的异常。便对问题的根源做了细致的调研。1 连接种类 一般连接主要分为长连接,短连接和http的keepalive连接。1.1 长连接:建立完连接后,该连接不再进行释放。 优点:性能较高,不需要重复建立tcp...转载 2018-09-08 01:23:15 · 1015 阅读 · 0 评论 -
web应用自动装配Spring配置
在《深入理解Spring系列之一:开篇》的示例代码中使用如下方式去加载Spring的配置文件并初始化容器。 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");在web应用中,配置文件都是自动加载的,示例代码中的方式...转载 2018-07-14 20:22:37 · 259 阅读 · 0 评论 -
CORS——跨域请求那些事儿
在日常的项目开发时会不可避免的需要进行跨域操作,而在实际进行跨域请求时,经常会遇到类似 No 'Access-Control-Allow-Origin' header is present on the requested resource.这样的报错。这样的错误,一般是由于CORS跨域验证机制设置不正确导致的,本文将详细讲解CORS跨域验证机制的原理,让您轻松掌握CORS跨域设置的使用方法,安全...转载 2018-07-14 17:34:56 · 667 阅读 · 0 评论 -
https原理通俗了解
https://blog.csdn.net/u014465934/article/details/81370111摘要:本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样。但是这并不代表HTTPS的真实设计过程。在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于“还原”过程。我们先不了聊HTTP,HTTPS,我们先从一个聊天软件说起,我们要实现A能...转载 2018-05-08 10:55:48 · 245 阅读 · 0 评论 -
OSI七层协议模型、TCP/IP四层模型学习笔记
转自:https://blog.csdn.net/guoguo527/article/details/520789621. OSI七层和TCP/IP四层的关系1.1 OSI引入了服务、接口、协议、分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型。1.2 OSI先有模型,后有协议,先有标准,后进行实践;而TCP/IP则相反,先有协议和应用再提出了模型,且是参照的OSI模型。1.3 ...转载 2018-05-18 11:21:17 · 197 阅读 · 0 评论 -
缓存穿透,缓存击穿,缓存雪崩解决方案分析
前言设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。解决方转载 2018-02-06 15:51:57 · 307 阅读 · 0 评论 -
HTTP缓存策略总结
所有的缓存都是基于一套规则来帮助他们决定什么时候使用缓存中的副本提供服务(假设有副本可用的情况下,未被销毁回收或者未被删除修改)。这些规则有的在协议中有定义(如HTTP1.0和HTTP1.1),有的则是由缓存的管理员设置(如DBA、浏览器的用户、代理服务器管理员或者应用开发者)浏览器的缓存规则对于浏览器端的缓存来讲,这些规则是在HTTP协议头和HTML页面的Meta标签中定义的。他转载 2018-01-21 01:24:32 · 299 阅读 · 0 评论 -
漫画:如何给女朋友解释为什么有些网站域名不以 WWW 开头
女朋友问我淘宝网国际站的地址是什么,她想看看海淘上面都有哪些东西,于是我把网址:https://world.taobao.com 发给了她。于是……首先介绍下到底什么是域名,然后再来介绍域名的各个组成部分。域名网域名称(英语:Domain Name,简称:Domain),简称域名、网域,是由一串用点分隔的字符组成的互联网上某一台计算机或计算机组的名称,用于在...转载 2019-03-27 14:54:03 · 963 阅读 · 1 评论 -
spring boot部署启动脚本
#功能:#1、指定用户运行——未实现#2、默认logs目录——可否另外指定?#3、JMX监控——待实现,需要启用第二参数来指定#4、设置JVM参数(指定程序运行名称、时区、内存大小、GC回收器设置、gc日志文件)#5、 指定配置文件的环境变量#6、start 启动时检查程序是否已经启动#7、stop 停止程序、stop之前会先dump。带完善:kill失败检查,然后用k...转载 2019-04-12 14:44:18 · 298 阅读 · 0 评论 -
HTTP的几种认证方式
HTTP Basic Authentication 基础认证简单的使用base64对密码、用户名进行加密,并将加密后的信息放在Header中,本质上还是明文传输用户名、密码等,基本流程:客户端发起GET请求 服务器响应401 Unauthorized,www-Authenticate指定认证算法,realm指定安全域 客户端重新发起请求,Authorization指定用户名和密码信息 服...转载 2019-05-06 10:52:31 · 1173 阅读 · 0 评论 -
Java异常体系和异常处理机制
异常简介在程序运行过程中出现错误,导致程序出现非预期场景。异常处理可以保证出现错误后,控制接下来的程序流程,是选择定位错误信息,还是抛出异常或捕获异常、还是避免程序非正常退出,都取决于我们。Java的异常体系结构(来自网络) Java把异常作为一种类,当做对象来处理。所有异常类的基类是Throwable类,两大子类分别是Error和Exception。这些异常类可以分为三种类型...转载 2019-08-15 15:55:08 · 205 阅读 · 0 评论 -
快速了解RESTEasy
什么是 RESTEasyRESTEasy 是 JBoss 的一个开源项目,提供各种框架帮助你构建 RESTful Web Services 和 RESTful Java 应用程序。它是 JAX-RS 规范的一个完整实现并通过 JCP 认证。作为一个 JBOSS 的项目,它当然能和 JBOSS 应用服务器很好地集成在一起。 但是,它也能在任何运行 JDK5 或以上版本的 Servlet 容器中运...转载 2019-07-29 18:02:08 · 597 阅读 · 0 评论 -
@javax.ws.rs Webservice注解
https://blog.csdn.net/wabiaozia/article/details/70487306转载 2019-07-24 16:42:19 · 265 阅读 · 0 评论 -
上传图片保存base64 优缺点
使用base64:URL的优缺点个人觉得base64:URL传输图片文件的好处在于:1.减少了HTTP请求2.某些文件可以避免跨域的问题3.没有图片更新要重新上传,还要清理缓存的问题不足在于:1.浏览器支持使用base64编码图片作为背景图片的这种技术IE6/IE7浏览器是不支持的(IE9浏览器IE7模式下支持,这里被@前端的那点破事鄙视了 )。对于目前PC页面,兼容性...转载 2019-06-30 00:48:09 · 9557 阅读 · 0 评论 -
jquery ajax和后台请求重定向请求转发的踩坑心得
1.在使用了ajax作为请求方式的时候就不能再使用form表单的默认submit按钮当我们给一个按键绑定了点击事件:通过ajax提交请求的时候,这个按键不能是submit按键,因为submit的功能是将表单中的所有输入内容提交到action指定的路径,然后关闭当前页面大剋新页面,而我们使用ajax通常是用来局部发送请求,来达到不使页面整体刷新的效果,所以submit按钮与我们使用ajax的初衷相...转载 2019-06-28 01:22:12 · 4365 阅读 · 0 评论 -
form-data、x-www-form-urlencoded、raw的区别
http请求场景:前端:SDK通过http发送请求/页面Ajax提交。后台:Springboot服务,Rest风格,需在controller层之前拦截请求。Springboot支持Rest风格给编码带来了很好的便捷性,@RequestBody让我们可以直接以application/json请求并在到达controller层获得已反序列化的对象,当有拦截的需求,这种方式却不再奏效。...转载 2019-06-12 11:15:27 · 10831 阅读 · 3 评论 -
如何理解Latency和Throughput: 吞吐量和延迟
Latency,中文译作延迟。Throughput,中文译作吞吐量。它们是衡量软件系统的最常见的两个指标。 延迟一般包括单向延迟(One-way Latency)和往返延迟(Round Trip Latency),实际测量时一般取往返延迟。它的单位一般是ms、s、min、h等。 而吞吐量一般指相当一段时间内测量出来的系统单位时间处理的任务数或事务数(TPS)。注意“相当一段时间...转载 2019-06-11 22:01:02 · 9121 阅读 · 0 评论 -
@ResponseBody 和 @RequestBody 的作用
先提一嘴 @RequestMapping(“url”),这里的 url写的是请求路径的一部分,一般作用在 Controller的方法上,作为请求的映射地址。代码:@RequestMapping(value = "/test")//类级别映射,可以没有,一般用于减少书写量public class myController { //方法级别映射,必须有,那么这个方法的访问...转载 2019-06-10 00:06:30 · 428 阅读 · 0 评论 -
前端以form-data方式/raw方式发送post请求的区别
POST请求@RequestParam:① 用来处理(前端)Content-Type: 为 application/x-www-form-urlencoded或者form-data编码的内容② 该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定;注意这里Headers里不能以application/json作为C...转载 2019-06-10 00:02:52 · 30008 阅读 · 1 评论 -
url中#(hash)的含义
url中#(hash)的含义hash 属性是一个可读可写的字符串,该字符串是 URL 的锚部分(从 # 号开始的部分)1.“#”代表网页中的一个位置。其右面的字符,就是该位置的标识符比如:http://www.example.com/index.html#print就代表网页index.html的print位置。浏览器读取这个URL后,会自动将print位置滚动至可视区域。(...转载 2019-05-14 15:36:15 · 439 阅读 · 0 评论 -
跨域原理及jsonp解决方法
浏览器同源策略URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示他们同源。相反,只要协议,域名,端口有任何一个的不同,就被当作是跨域。e.g. 对于http://store.company.com/dir/page.html进行同源检测:URL 结果 原因 http://store.company.com/dir2/other.html...转载 2019-05-09 15:13:38 · 696 阅读 · 0 评论 -
HTTP基本认证(Basic Authentication)
在浏览网页时候,浏览器会弹出一个登录验证的对话框,如下图,这就是使用HTTP基本认证。1、 客户端发送http request 给服务器,服务器验证该用户是否已经登录验证过了,如果没有的话,服务器会返回一个401 Unauthozied给客户端,并且在Response 的 header “WWW-Authenticate” 中添加信息。如下图。2、:浏览器在接受到40...转载 2019-05-06 19:31:03 · 1935 阅读 · 0 评论 -
HTTP缓存策略总结
所有的缓存都是基于一套规则来帮助他们决定什么时候使用缓存中的副本提供服务(假设有副本可用的情况下,未被销毁回收或者未被删除修改)。这些规则有的在协议中有定义(如HTTP1.0和HTTP1.1),有的则是由缓存的管理员设置(如DBA、浏览器的用户、代理服务器管理员或者应用开发者).浏览器的缓存规则对于浏览器端的缓存来讲,这些规则是在HTTP协议头和HTML页面的Meta标签中定义的。他们转载 2018-01-21 01:17:57 · 343 阅读 · 0 评论 -
Cookie的路径和域问题
Cookie的路径我们知道Cookie的属性有很多,其中有一个属性是路径。有些人认为Cookie的路径指的是Cookie在客户端的保存路径,其实并不是。Cookie的路径是在服务器创建Cookie时设置的,它的作用是决定浏览器访问服务器的某个资源时,需要将浏览器端保存的那些Cookie归还给服务器,所以说cookie的路径是访问路径:Cookie1 路径:/Example/cookie原创 2018-01-15 00:06:20 · 2276 阅读 · 0 评论 -
HTTP 304状态分析
HTTP 304: Not Modified 标准解释是:Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。 我们先来看下浏览器的工作原理: (1)直接在缓存中去获取内容。如果先前有效访问的响应头包含 Expires, max-age的转载 2016-04-04 23:29:20 · 477 阅读 · 0 评论 -
Velocity基本语法
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只 关注页面的显示效果,而由java程序开发人员关注业务转载 2016-03-31 10:45:53 · 398 阅读 · 0 评论 -
Struts 2学习笔记
历时三个星期的时间终于把Struts 2 给看完了。中间断断续续的学习,在这个过程中学到了很多东西,也真正的明白了时间是挤出来的。大三了课程越来越来多了,有自己学校的课程要学习,又是各种各样的实验,时间的真的是太紧了。这个时间,利用一切的空余时间来学习编程。这个过程的苦和乐真的只有经历了才明白... 不多说了,下面是对这三个星期学习Struts 2的知识总结:转载 2012-03-22 16:07:04 · 967 阅读 · 0 评论 -
TCP/IP 协议 建立与链接
TCP的可靠传输首先是建立在可靠的连接建立与关闭之上,这一块包含以下要点:TCP三次握手建立连接TCP半关闭TCP的状态变迁TCP服务端监听和处理设计TCP三次握手建立连接TCP为了通信双方确认建立起连接,设计了三次握手的策略,三次握手的过程如下:1) 请求端发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号(ISN)。2) 服务器发回包含服务器的初始序号的SYN转载 2015-09-09 23:08:45 · 492 阅读 · 0 评论 -
Tomcat启动过程原理详解
Tomcat的核心是Connector和Container,被Service包装,所有的Service由最外层的Server统一管理图Server->service1(多个service)->Connectors(每个service对应多个connector)->Engine(处理引擎)->Host(多个主机资源)->Context(多个虚拟目录)组织结构描述转载 2014-12-12 15:02:57 · 638 阅读 · 0 评论 -
Web中的监听器 过滤器 拦截器
1.过滤器:顾名思义就是过滤请求内容的,所谓的过滤就是我们可以获得request对象中的值进行一系列的判断或者其他的操作。我们可以使其字符集编码格式改变等。具体的示例代码看下面的例子。public class MyFilter implements javax.servlet.Filter { 2 /** 3 * 初始化 4 */ 5 @Override转载 2015-04-09 11:57:45 · 674 阅读 · 0 评论 -
Spring mvc进行Excel导出
Spring 结合 apach poi 导出Excel,并增加批注、冻结窗口等功能原创 2015-06-12 16:02:27 · 818 阅读 · 0 评论 -
cookie和session
现在的HTTP协议都是无状态的HTTP协议,即完成一次 请求 处理 响应就结束了。下一次请求会是一个新的请求。由于HTTP协议是无状态,所以我们需要采取一定的方式用来保存这个回话状态。具体的保存策略:1、客户端接受到服务端的请求,进行业务处理,初次之外在服务端保存了 一个类似Map数据结构的回话场景数据,结构是Key-value形式的。这个存储的东西称之为session2、将保存的数据的标原创 2015-11-20 19:53:38 · 362 阅读 · 0 评论