修改mvn.bat文件,在文件前面添加。
set MAVEN_OPTS=-Xmx512m
2011年4月18日星期一
2011年4月4日星期一
在debain上架设vpn
1.安装pptpd
apt-get -y update
apt-get -y install pptpd
2.编辑 /etc/pptpd.conf
#设置服务器 IP 地址与客服端 DHCP 分配地址范围
localip 192.168.0.1
remoteip 192.168.0.2-245
3.编辑 /etc/ppp/pptpd-options
#为客户端提供DNS
ms-dns 8.8.8.8
ms-dns 8.8.4.4
4.编辑 /etc/ppp/chap-secrets
#添加用户名、服务名、密码以及IP地址(服务名需要与pptpd-options文件中指定名称一致)
username servername password *
5.编辑 /etc/sysctl.conf
#开启IPV4转发
去掉net.ipv4.ip_forward=1前的注释,然后运行"sysctl -p"使修改生效;
7.设置IP伪装
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
#设置MTU大小,解决部分网站无法访问的情况(MTU=MSS+20+20)
iptables -A FORWARD -p tcp --syn -s 192.168.0.0/24 -j TCPMSS --set-mss 1356
8.大功告成,启动服务
/etc/init.d/pptpd start
apt-get -y update
apt-get -y install pptpd
2.编辑 /etc/pptpd.conf
#设置服务器 IP 地址与客服端 DHCP 分配地址范围
localip 192.168.0.1
remoteip 192.168.0.2-245
3.编辑 /etc/ppp/pptpd-options
#为客户端提供DNS
ms-dns 8.8.8.8
ms-dns 8.8.4.4
4.编辑 /etc/ppp/chap-secrets
#添加用户名、服务名、密码以及IP地址(服务名需要与pptpd-options文件中指定名称一致)
username servername password *
5.编辑 /etc/sysctl.conf
#开启IPV4转发
去掉net.ipv4.ip_forward=1前的注释,然后运行"sysctl -p"使修改生效;
7.设置IP伪装
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
#设置MTU大小,解决部分网站无法访问的情况(MTU=MSS+20+20)
iptables -A FORWARD -p tcp --syn -s 192.168.0.0/24 -j TCPMSS --set-mss 1356
8.大功告成,启动服务
/etc/init.d/pptpd start
2011年4月2日星期六
你想知道a love b=?吗 --- QLExpress
在项目中时常需要涉及对表达式的处理,如:
- "3.14 * 2.5 + 103/(24 + 13)" 的值
- "aVar && (bVar || (cVar && dVar))" 的结果
甚至:
- "1==2?50 +50:100+100"
- "if 1==1 then return 100 else return 10;"
- "a love b"
- " for ... "
若实现以上要求QLExpress即可,QLExpress是Quick Laconic Express 高效简洁脚本,淘宝玄难的一个开源的表达式项目,纯java实现。
我们不用再借助groovy也能实现复杂,带有简单逻辑的处理代码,可自定义操作符。
项目地址:http://code.taobao.org/project/view/294/
wiki非常详细,再有其他叙述就是多余(包括技术和使用):http://code.taobao.org/trac/QLExpress/wiki/ZhWikiStart
给出一个在项目中实际使用的例子。
需要判断一个用户是否具有某种符合的权限,如用户是否开通某中服务、是否打上某个标记、
是否附上某个权限code,这些权限还要进行与、或、非等逻辑运算、优先级控制如括号,如:
isService(userid) && ( hasTag("LP") || hasCode(256) ) #开通某个指定的服务, 并且具有"LP"标记或有256权限码。
代码截图如附件图:
这里的场景代码很简单,就是把表达式里的name如isService绑定到对象的方法isService上。
在以前如果我们实现这样的需求,一般把expression写成groovy语法脚本,再在java里调用执行。
如果有其他类似表达式的需要,可以试试QLExpress,能减少不少麻烦,代码里有大量的测试用例参考。
订阅:
博文 (Atom)