Arganzheng's Blog

stay hungry, stay foolish

如何让tomcat不解压你的war包

默认情况下,tomcat会解压你的war包到webapps目录下,这样每次重新发布war包还要记得先把原来解压的war目录删除才会生效,麻烦又容易忘记。总以为发布没有生效。解决方案是增加这个一个配置: <Context docBase="/data/b2b2c/japp/api/meta.war" unpackWAR="false" privileged="true" antiR...

Rest Response and Exception

在笔者的上一篇博文 Restful Spring MVC 中,详细的介绍了使用Spring MVC构建RESTful的web应用的各个方面,不过对于RESTful应用还有很重要的一块笔者没有介绍到,就是异常和错误信息rest化。 对于一个RESTful web应用,正常情况下,应该返回一个200的HTTP response,返回内容格式由ContentNegotiatingViewReso...

scala的字符串格式化输出

如下: D:\code\api_sdk_proj\meta-idl>scala Welcome to Scala version 2.10.2 (Java HotSpot(TM) Client VM, Java 1.6.0_25). Type in expressions to have them evaluated. Type :help for more information....

如何解决time_wait状态占用端口问题

问题 在restart服务端的时候,总是发现启动失败,端口被占用。需要先stop,然后等待一段时间,再start。分析了一下,确定是time_wait导致端口缓慢释放问题。 相关背景知识 一、Linux服务器上11种网络连接状态: 通常情况下: 一个正常的TCP连接,都会有三个阶段: TCP三次握手 数据传送 TCP四次挥手 同时会有三种特殊的数据包 ...

开放平台主动推送预言

主动推送的好处 实时性: 每次数据的变化基本都在毫秒内返回给应用程序 提升用户体验 服务端数据过滤:不是轮询拉到数据再进行处理,可以指定推送条件(比如IFTTT)。 减少服务器压力(开发者轮询) 易用:只需要一个HTTP请求,就可以不停的接受消息,同时官方提供了SDK,开发者只需要简单实现接口,处理业务数据。 常见应用场景 订单状态变化 物流信息 ...

content negotiation using spring mvc

元数据管理平台的REST接口突然抽风,总是返回XML格式,不管我怎么设置accept头。Debug了一下,发现每次都是优先使用ServletPathExtensionContentNegotitionStrategy。谷歌了一下,原来Spring默认的三个ContentNegotiationStrategy是PPA Strategy (path extension, then paramet...

面试点

Java基础知识 基础类型,引用 static块 编码(中文乱码) 异常(checked && unchecked) 接口与抽象类 Collections:ConcurrentHashMap的实现机制(CAS) 非线程安全:HashSet、HashMap、ArrayList、T...

scala with maven

scala官方比较prefer SBT,不过maven也可以的。关键还是IDE问题啊。 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mave...

Scala的Option、Some和None

在java中,我们经常会遇到NPE异常,看到一个方法,我们无法确定它会不会返回一个null对象。方法本身也无法保证接收到的参数一定是不是null,所以有了防御式编程的说法。返回值与参数的取值说明,我们只能从代码注释或者文档中得知,更差情况,从代码实现得知,无法从函数签名直观得到。Scala引入Option关键字解决了这个问题。 必然下面这个函数定义: def computeFoo: Op...

C# Url Encoding的一些问题

最近API的C#版本SDK又出问题了,总是报sign计算错误。Sign计算问题一般是源串生成(参数排序、URL Encoding之类的)不一致,另一个就是签名算法(一般是HMAC或者MD5)不一致。首先看一下原串生成是不是有问题。 用Java和C#对同样的请求参数进行源串生成,发现果然不一样。对比了一下,发现是由于左右括号引起的。 public static void main(Stri...