Arganzheng's Blog

stay hungry, stay foolish

用Photoshop磨皮

需求:色斑、痘痘如何PS掉呢? 思路:斑点是由于色调和明度相对于光滑部分的皮肤而言比较暗淡,只要将他们的色调和明度调高就可以了。 关键:如何选择色斑。 方法:通道与选区的关系:黑不选中,白选中。 实战 步骤一:在通道中选择色斑比较明显的通道,如这里的green通道,复制该通道,得到green copy通道。 步骤二:对该通道进行更进一步的对比度强化。 使用FilterOtherHigh Pass(保留高反差) 使用ImageCalculations,在弹出菜单中将Blending(混合模式)选择为Hard Light(强光),这样以后得到一个Alpha1通道。 重复多次Calculations命令,知道色斑已经凸出的很明显为止。(还可...

如何实现用户认证授权系统

需求 用户注册 登陆(Authentication) 登出 访问权限控制(Authorization,匿名用户、普通用户、管理员) 实现 Authentication 一旦用户注册之后,用户信息就保存在服务器端(DB/Cache)。关键在于用户需要提供身份凭证,一般是用户名和密码。即常见的登陆页面:用户输入username和password,勾选Remember Me(可选,一般是记住一周),点击登陆,提交请求到服务端(这里一般是走HTTPS)。服务端根据用户名和密码到数据库查询是否匹配,如果匹配的话,说明身份认证成功。这是一次普通的身份认证过程。非常好理解。 关键在于HTTP是无状态的,用户登陆过一次,但是如果你没有做一些状态管理操作...

spring AOP internal

Spring AOP mechanisms in a word, Spring AOP is proxy-based. That’s, AOP by proxying. and Spring use one of the following two ways to create the proxy for a given target bean. JDK dynamic proxies, preferred wheneven the proxied target implements at least one interface. CGLIB, if the target object does not implement any inter...

使用curl和wget模拟REST请求

模拟HTTP请求一般使用curl,例如有这么一个REST接口 会员卡推送接口文档 1. 绑卡 开放平台POST消息格式: { "topic": "wecard", "event": "bindCard", "uin": 商家的uin, "data": { "openId": "用户的唯一标识", "mobile": "手机号", "cardNo": "卡号" } } 应用应该返回的消息格式: HTTP Status Code:200 { "errorCode": 0, // 必填。错误码(10000以上(不含),0为正常) ...

return async result in java

在java中,异步操作往往喜欢返回一个Future对象,顾名思义,表示结果在未来的某个时刻才完成,虽然future是立马返回的,但是其实是一个未知的结果。调用方可以(需要)查询这个future对象,看是不是已经出结果了。其实是一种polling方式来的。 这些Future对象,一般都是实现java.util.concurrent.Future接口: package java.util.concurrent; /** * A <tt>Future</tt> represents the result of an asynchronous * computation. Methods are provided to check if ...

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 use a technique called copy-on-write, which avoids a copy of the parent’s data space to the child until the child needs its own copy. But, ...

高并发下额度限制问题

问题 在很多场景下资源是有额度的,跟事务一样,我们要求资源不多不少的分配出去。比如 普通会员只能免费发布10个产品 火车票订票系统 秒杀系统 抽奖系统 流量控制系统 等等,非常常见。 一般的想法就是:假设资源S的总份额是C,当前已经消耗的份额是X(或者已知当前剩余的份额为N)。每个用户要获取资源时,我们做如下判断: C = getTotalResourceCount(); X = getResourceConsume(); if (X>C){ // allow,用户可以进行 发布产品,下单支付等。 }else{ // out of resource! } 这段程序在单用户可以运行正确,但是在分布式高并发下...

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 of all events POST /event submit an event for create or update(if id>0) DELETE /event/{name} delete an event 说明:由于采用了Modal和aj...

如何让tomcat不解压你的war包

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

Rest Response and Exception

在笔者的上一篇博文 Restful Spring MVC 中,详细的介绍了使用Spring MVC构建RESTful的web应用的各个方面,不过对于RESTful应用还有很重要的一块笔者没有介绍到,就是异常和错误信息rest化。 对于一个RESTful web应用,正常情况下,应该返回一个200的HTTP response,返回内容格式由ContentNegotiatingViewResolver协商决定,一般是json或者xml格式。如果出错了,业务一般是抛出业务异常,如果没有特殊处理,那么将返回一个出错HTML页面,状态码是500。我们希望这些异常能够映射到HTTP status,并且能够按照json/xml的格式返回,这时候就需要引入Spring MVC的H...

×