Arganzheng's Blog

stay hungry, stay foolish

return async result in java

在java中,异步操作往往喜欢返回一个Future对象,顾名思义,表示结果在未来的某个时刻才完成,虽然future是立马返回的,但是其实是一个未知的结果。调用方可以(需要)查询这个future对象,看是不是已经出结果了。其实是一种polling方式来的。 这些Future对象,一般都是实现java.util.concurrent.Future接口: package java.util.c...

Java并发学习笔记

线程 线程VS进程 lightweight processes fork is expensive. Memory is copied from the parent to the child, all descriptors are duplicated in the child, and so on. Current implementations...

高并发下额度限制问题

问题 在很多场景下资源是有额度的,跟事务一样,我们要求资源不多不少的分配出去。比如 普通会员只能免费发布10个产品 火车票订票系统 秒杀系统 抽奖系统 流量控制系统 等等,非常常见。 一般的想法就是:假设资源S的总份额是C,当前已经消耗的份额是X(或者已知当前剩余的份额为N)。每个用户要获取资源时,我们做如下判断: C = getTotalResourceC...

RESTful CRUD with spring-mvc-and-bootstrap

bootstrap非常简单好用,以一个简单的实例说明一下。假设我们有一个事件表。 public class Event{ int id; String topic; String name; } 我们要搞一个配置页面,让后台业务人员进行配置。 URL规划 参考这篇文章:URL Conventions GET /event return a list...

使用亚马逊EC2搭建web工程

申请Amazon EC2免费主机实例 具体参考这篇文章使用免费的Amazon EC2 服务搭建nginx+wordpress,非常详细,这里就不赘述了。仅仅列出一些信息供参考。 arganzheng-mbp:~ argan$ chmod 400 argan-aws-ec2.pem argan-aws-ec2.pem arganzheng-mbp:~ argan$ ls -ahl |gr...

如何让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,开发者只需要简单实现接口,处理业务数据。 常见应用场景 订单状态变化 物流信息 ...