Arganzheng's Blog

stay hungry, stay foolish

如何解决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...

移除SVN锁

现在还有用SVN悲观锁的。。赶紧移除吧 svn propdel svn:needs-lock -R -q 要移除锁设置的工程目录 TIPS 在这之前,你可能需要先抢占锁: Tortoise==>Check For Modifications==>sell all==>Break Lock==>Commit

卓有成效的程序员——windows篇

windows下如何查看端口被哪个进程占用 比如要找出哪个进程占用了80端口: Here is netstat command & output to find which process is holding port 80. C:\Users\arganzheng>netstat -nao | findstr "0.0.0.0:80" TCP 0.0.0.0:8...

卓有成效的程序员——windows篇

windows下如何查看端口被哪个进程占用 比如要找出哪个进程占用了80端口: Here is netstat command & output to find which process is holding port 80. C:\Users\arganzheng>netstat -nao | findstr "0.0.0.0:80" TCP 0.0.0.0:8...