web开发
文章平均质量分 77
北堂桓禧
好记性不如烂笔头,不记录下来都不是你的
展开
-
【Spring】spring如何注入ServletRequest、ServletResponse
使用姿势 spring里有很多小知识点,今天学习一下ServletRequest、ServletResponse是如何注入容器里面的。 看一个小例子,如果我们想在controller的方法里面获取request可以怎么做?参数中添加对应参数 这种方式就是在方法后面加一个HttpServletRequest或者HttpServletResponse参数,Sping做参数绑定的时候特殊处理。这个不是今天的主角。。。@RequestMapping("hello3") ...原创 2020-09-22 20:58:13 · 1583 阅读 · 0 评论 -
【问题经验】记一次Dubbo线程耗尽的问题-druid数据库连接池突发性能
问题现象1. 应用日志输出:"[DUBBO] Thread pool is EXHAUSTED!"2. 当时服务提供者的处理时间变长原因分析 我们都知道线程池溢出会触发拒绝策略,dubbo的线程池拒绝策略是抛异常,但是在异常抛出前dump一份当前jvm的堆栈信息(非常棒!),默认保存在当前用户的路径下(可通过dump.directory修改dump路径)。 粗看一下栈信息,大量的dubbo线程(dubbo提供者的线程命名规则是:DubboServerHande...原创 2020-09-12 00:32:02 · 3439 阅读 · 0 评论 -
【Spring】深入理解spring-aop之使用篇
目录spring-aopaop的概念spring aop支持的advice类型spring aop支持的pointcut表达式spring-aop aop是经常使用的,不过之前没有完整的了解aop,促使笔者系统的学习aop是因为之前的遇到的问题。这个问题在《掉进sping-aop的陷阱》介绍过。因为sping-aop的底层实现是基于动态代理,所以有必要了解一下《动态代理》。 aop是Aspect Oriented Programming简写,即面向切面编程,是OOP(...原创 2020-08-23 19:42:14 · 400 阅读 · 0 评论 -
【Spring】Spring中自定义Schema配置Bean
如何在Spring配置dubbo引用和服务<?xml version="1.0" encoding="UTF-8" ?><beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xsi:sch原创 2020-07-18 23:34:20 · 754 阅读 · 0 评论 -
【Spring】component-scan和@ComponentScan配置解析
配置形式 component-scan和@ComponentScan两者功能一致,用来让Spring容器扫描Bean,其中前者是配置在xml文件中,后者是在类上添加注解。 配置component-scan需要在xml中配置<component-scan>,属性"base-package"指定待扫描的包,支持多值用逗号","隔开。<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www...原创 2020-07-27 00:44:37 · 2401 阅读 · 0 评论 -
【问题经验】dubbo回声测试异常(NumberFormatException:null)
现象 在用dubbo回声测试机制做回声测试时返回信息分析方案原创 2020-06-20 12:01:19 · 548 阅读 · 0 评论 -
【Dubbo笔记】dubbo SPI、Adaptive机制解读
在很多场合,系统需要根据上下文、参数决定逻辑。例如支付,使用微信、支付宝、银联支付逻辑不一样,比较直接的写法是用 【if】判断,走不同的分支;另外,设计模式里面有一种工厂模式也适用这种场景。【Dubbo】里也有很多这种场景(多协议等等),但是【Dubbo】使用SPI(Service Provider Interface) + Adaptive机制来应付这种场景。这种机制更灵活、更具扩展性。原创 2020-06-06 23:46:38 · 572 阅读 · 0 评论 -
nginx内部重定向(X-Accel-Redirect)在商务合作定制开发中应用
适配层系统如何将请求转发到业务系统?nginx提供的内部重定向(X-Accel-Redirect)机制是一个比较好的方式。适配层系统在处理完特殊的解签后,在response里加一个header(X-Accel-Redirect)指定请求转发的路径(业务标准实现的路径),nginx收到响应报文不会返回给客户端,而是从指定的业务路径中请求内容返回客户端原创 2020-05-23 18:19:46 · 2187 阅读 · 1 评论 -
【问题经验】请求头Accept-Language:*导致freemarker异常 NegativeArraySizeException
1 现象 现象很简单,日志里不停打印异常,请求url很普通就是首页,抛出异常是NegativeArraySizeExceptionCaused by: org.springframework.context.ApplicationContextException: Could not load FreeMarker template for URL [/templates/ind...原创 2020-03-22 15:53:19 · 1267 阅读 · 0 评论 -
【Freemarker】SpringMVC&Freemarker视图渲染的两级缓存
开发springmvc+freemarker项目时经常调试页面模版元素。想让修改立即生效,就关闭缓存,否则视图渲染一直走缓存。关闭缓存就要注意了,需要关闭两处缓存。第一级缓存,FreeMarkerViewResolver的视图缓存(viewAccessCache),设置cacheLimit=0则关闭。 第二级缓存,模版缓存(TemplateCache),设置template_update_delay=0则关闭。原创 2020-03-14 03:15:19 · 636 阅读 · 0 评论 -
LockSupport最全使用方法 原理介绍
LockSupport是线程阻塞的基本原语,可以用来创建锁或者其它的同步类(ReentrantLock基于该类实现)。每个线程使用LockSupport都关联一个 “许可证”。某个线程调用LockSupport.park,“许可证”可用,调用立即返回,否则线程将会阻塞直到中断发生、超时或许可证变为可用。LockSupport.unpark(thread)可以使许可证可用。LockSupport底层依赖的是Unsafe类。原创 2020-02-20 17:50:54 · 1132 阅读 · 0 评论 -
【问题经验】Http请求返回大对象导致频繁GC
项目上线了一个活动,性能压测中某个接口表现不理想。该接口用到内存作为缓存。scheduler定时刷新缓存,不存在缓存击穿的情况。一次一次的请求,响应都是非常快。监控显示压测的gc非常频繁,一分钟甚至上百次的ygc。压测过程中dump内存,mat分析发现有很多比较大char[],打开看到char[]的内容就是接口返回内容。进一步追踪发现这些char[]是com.alibaba.fastjson.serializer.SerializeWriter的buf变量原创 2020-02-07 16:11:22 · 1186 阅读 · 0 评论 -
【问题经验】NullPointerException异常堆栈不打印
最近在项目中遇到一个现象,系统抛出NullPointerException。正常情况,这种问题非常好定位,根据调用栈看看是哪一行空指针就好。 不过这次比较诡异,跑异常的地方没有打出堆栈。"java.lang.NullPointerException: null" 这是唯一的信息。 因为这是个netty项目,一开始以为是用了“io.netty.util.intern...原创 2020-02-07 14:13:30 · 1332 阅读 · 0 评论 -
接口性能指标
第一阶段,应用整体超时率低于1/万(4个9的保障)。超时率=超时请求量/请求总量。 可定义RT大于500ms的请求算超时。第二阶段,超时率高于1/万的接口数。第三阶段,找出请求量大的接口,关注这些接口的具体RT最后,在应用层面做层隔离保护,使慢调用、快调用分两个优先级处理队列原创 2020-01-11 11:04:31 · 2934 阅读 · 0 评论 -
【Spring笔记】Servlet规范ServletContainerInitializer
ServletContainerInitializer(javax.servlet.ServletContainerInitializer)不是Spring的扩展点,而是web容器(jetty、tomcat)的扩展点,Springboot是基于这个扩展点来实现Servlet启动的。ServletContainerInitializer从Serlet3.0开始支持,注解@HandlesTypes与其配套使用原创 2020-01-01 12:17:47 · 1156 阅读 · 0 评论