mvc:annotation-driver

<mvc:annotation-driver />背后的故事

spring-mvc 版本3.0.5

我们在用spring-mvc开发时,通常会采用少量xml配置加注解的方式进行开发,通常会再xxxx-servelet.xml配置文件中添加如下的配置:

<mvc:annotation-driven />

根据我们对spring工作方式的理解,这样的标签会有对应的java类来进行解析,而所有的标签解析器都是
BeanDefinitionParser 接口的子类. 在它的子类中我们找到了AnnotationDrivenBeanDefinitionParser.class 这个类,源码文档有这么句简单的解释:

{@link BeanDefinitionParser} that parses the {@code annotation-driven} element to configure a Spring MVC web application.    

由此我们可以判定该类就是上述标签的解析类。

openresty-lua-nginx-module

前言

偶然听见一个同事说openresty基于Lua操作redis时没有使用连接池,因此会不断的连接后端的redis服务,在高并发环境下会把redis搞垮。首先,redis单机肯定是有性能上限的,就算使用了连接池也会有被打垮的可能。这个和是否使用连接池没有必然的关系。当然了使用连接池肯定能大幅提高接口的QPS值。记忆中Lua中操作redis的模块lua-resty-redis是启用了连接池功能的。当时翻译的文档不小心丢了,所以重新整理如下。

linux中最大文件描述符数

前言

关于Linux下系统,进程能最大能打开的文件描述符数看过好多文章,但大都没有完整,详细说明每个值表示什么意思,在实践中该怎么设置.今天刚好有时间就通过Google来整理了如下的内容.如有错误请指出,谢谢.

系统级别

Linux系统级别限制所有用户进程能打开的文件描述符总数可以通过如下的命令查看

$ cat /proc/sys/fs/file-max 
2259544

HTTP301和302的区别

官方解释

301 Moved Permanently

The requested resource has been assigned a new permanent URI and any future references to this resource SHOULD use one of the returned URIs. Clients with link editing capabilities ought to automatically re-link references to the Request-URI to one or more of the new references returned by the server, where possible. This response is cacheable unless indicated otherwise.

The new permanent URI SHOULD be given by the Location field in the response. Unless the request method was HEAD, the entity of the response SHOULD contain a short hypertext note with a hyperlink to the new URI(s).

If the 301 status code is received in response to a request other than GET or HEAD, the user agent MUST NOT automatically redirect the request unless it can be confirmed by the user, since this might change the conditions under which the request was issued.

Note: When automatically redirecting a POST request after
receiving a 301 status code, some existing HTTP/1.0 user agents
will erroneously change it into a GET request.

Node.js 调试 GC 以及内存暴涨的分析

前言

最近写的一个功能在本地开发的时候没有明显问题,但是到真实环境测试的时候发现内存不断增长,并且增长很快,同时 CPU 占用也很高,接近单核心的 100% 。这对于一个大部分都是 IO 操作的进程显然是有问题的。所以尝试分析内存和 CPU 异常的原因。最终发现是因为生产者和消费者速度差异引起的缓冲区暴增。在 MySQL 连接对象的 Queue 中积压了大量的 Query,而不是内存泄漏。

NodeJS的代码调试和性能调优

NodeJS是2009年发布的第一个版本,到目前已经7年多.我第一次使用Node是在13年10月份左右. 在开发中调试代码大多是通过console.log打印结果,后来用IDE下断点的方式来调试,没有接触过其它的方式. 项目做完后2年多的时间再没有用过.现在接触到的项目有用到Node. 搜索Node的文章是发现了淘宝同学的一个关于Node调试的文章,觉得很有用,就记录下来,以备不时之需.原文地址

压测工具siege简介

简介

siege是一个http负载测试和基准测试工具。它旨在让web开发人员了解自己代码在压力测试中的执行性能。siege支持基本身份验证,coockie,HTTP、HTTPS和FTP协议。用户也可以通过配置来模拟访问服务器的并发用户数.

|