技术点滴
宋玮-深圳
www.zhaogongleida.com
展开
-
Nginx rewrite permanent
fpm之后,尝试兼容url错误的一段redirect失效。具体如下:rewrite ^/hoomic-plugin/(.*)$ /$1 permanent;目的是使得下面网站都可以访问:http://plugin.abc.com/index.php/infohttp://plugin.abc.com/hoomic-plugin/index.php/info 非常不幸的...原创 2014-03-19 16:43:45 · 1547 阅读 · 0 评论 -
类模板语言的变量替换~简易java实现
场景1:数据库存有 xx,yy,zz,aa,bb 等字段, 但是前台根据不同场景需要选择性的展示部分字段,并且需求频繁调整。 这里的需求调整可以有前台展示的调整,也会有后台DB字段的调整 场景2:自定语法的模版语言实现 举例: xx=11&yy=22&zz=33&aa=55&bb=4 , 定义模板“${...2011-04-06 15:25:09 · 266 阅读 · 0 评论 -
XSS转码 && struts2 property标签的bug
一。了解背景下面两张图,比较html转义和js的转义。 一定要区分清楚的是,内容回写页面,一定要做的是JS转义!!而不仅仅是html转义 从上面两张图可以看出,js里面需要转义到的 单引号',反斜杠\ 均不在html转义字符之列!(如果针对XSS的话,只要对<>'") 二。<s:property value="xx"/>...原创 2011-03-25 15:36:44 · 266 阅读 · 0 评论 -
小折腾一下swing
近来看美剧《Lost》,可惜下载的rm文件名太长,很难找到自己看到第几集了。。于是又想起多年前的一段批量文件改名脚本,这次折腾成了swing的,支持DND(drag and drop) bug肯定有不少,不过折腾这个文件肯定是足够的,呵呵。直接使用replaceAll替换 试了一下进度条组件,其实很容易用的,就是要注意需要同时设置min&max valu...原创 2011-03-23 16:23:06 · 101 阅读 · 0 评论 -
FileUploadInterceptor ~mark陷阱
03/17 14:25:40 [ERROR] FileUploadInterceptor: File too large: picFile "upload_276c1698_12ec27b8b1d__8000_00000052.tmp" 780831 这东东在struts2默认拦截器栈里面。 but, 拦截之后并非返回“input”的result,而是会让action...2011-03-17 15:45:31 · 138 阅读 · 0 评论 -
java线程池2-任务队列的规则
先从一句代码开始,//创建固定线程数的线程池: newFixedThreadPool = Executors.newFixedThreadPool(THREAD_POOL_SIZE); 跟进这个方法,发现是一套默认参数创建出的ThreadPoolExecutor,而实际上,构造参数的参数是很多的,有门道 public static ExecutorServic...原创 2010-11-29 16:58:05 · 224 阅读 · 0 评论 -
BTrace~精确的profile
偶然间从一个blog上看到这个项目,于是就花时间看了看,真的值得一试. 优点比较明显,总结了几个自己适用的: 1.直接使用,无需重启需要监听的进程。 下载btrace,解压,写监控类, 然后获取需要监控程序的pid进程号,运行bin/btrace <pid> HelloWorld.java ,就这么简单一气呵成。 即时启用,即时关闭。e.g(每次进...2010-11-25 09:37:19 · 99 阅读 · 0 评论 -
jsonp小酌
先上一段js:这种类json格式的串,就是jsonP了。 data_today( { "goods" : [ { "good_id" : "72788C000000000000723A52071D6C9B", "forecast_time" : "1290009600", }, { "good_id" : "原创 2010-11-19 15:37:22 · 101 阅读 · 0 评论 -
新浪微博技术架构分析-转载
中国首届微博开发者大会在北京举行,这是国内微博行业的首场技术盛宴。作为国内微博市场的绝对领军者,新浪微博将在此次大会上公布一系列针对开发者的扶持政策,以期与第三方开发者联手推动微博行业的整体发展。图为微博平台首席架构师杨卫华演讲。以下为演讲实录:大家下午好,在座的大部分都是技术开发者,技术开发者往往对微博这个产品非常关心。最晚的一次,是12点多收到一个邮件说想了解一下微博底层是怎么构架的。很多技术...原创 2011-03-07 17:07:39 · 383 阅读 · 0 评论 -
【求解】linux上JMX部署的诡异问题
在公司的linux dev机器上,启动jmx之后,无法远程连接上,换到自己机器的ubuntu立马可以成功,始终找不出原因。已经有处理过传说中的linux hostname问题,具体启用参数是:-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=6001 -Djava.rmi.server.hostname=1...原创 2010-11-02 15:49:00 · 211 阅读 · 0 评论 -
ServletOutputStream回写页面乱码
一段utf-16的string,整了好多种格式,硬是无法正确输出到页面上: 首先尝试了outputstream, 即便指定string-》byte[]的编码,还是出错 resp.getOutputStream().write(out.getBytes("UTF-16"));resp.getOutputStream().print(out);resp.getOutputStr...2010-10-26 16:15:33 · 302 阅读 · 0 评论 -
线程池的用法
一。线程池的实例化ExecutorService pool = Executors.newFixedThreadPool(10); 二。线程组的概念 就是将n个线程归到某一类总控开关下。 我这里使用的是list结构,当然JDK的ThreadGroup也是可行。 //http发送线程组 public static List<HttpSender> httpS...原创 2010-10-15 09:54:05 · 112 阅读 · 0 评论 -
struts2-ognl mark
暂时mark在这,后面再补充 1. 关于漏洞的问题http://localhost:8080/struts2-blank-2.0.14/example/HelloWorld.action 2.0.9不行http://localhost:8080/struts2-blank-2.0.14/example/HelloWorld.action?('\u0023_member...原创 2011-12-29 16:49:14 · 117 阅读 · 0 评论 -
HttpClient4 POST数据及问题
post 方式挂参数的三种格式, mark一下。 其中尤其需要注意的是下面这个error()的调用方法,使用到MultipartEntity 带3个参数的完整 , 会导致请求参数在服务器端无法获取到post参数! MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.STRICT, n...2012-05-23 18:03:42 · 236 阅读 · 0 评论 -
ZmEu漏洞扫描
挺黑的,nginx抓出来的日志。扫描各种php软件、数据库软件的 setup脚本,一旦被执行到将可能被拖库。 抓取log的方法:/var/log/nginx# //查看全部404, 基本都是瞎蒙的grep '404' * //特定的zmeu,比较少grep 'ZmEu' * 1.各种setup.install都要留在/var/www之外才好;或者用完...原创 2014-02-21 16:59:54 · 1551 阅读 · 0 评论 -
Spring3.x中的几个异步执行
1.servlet3细节可以阅读http://www.ibm.com/developerworks/cn/java/j-lo-servlet30/现在通过使用 Servlet 3.0 的异步处理支持,之前的 Servlet 处理流程可以调整为如下的过程:首先,Servlet 接收到请求之后,可能首先需要对请求携带的数据进行一些预处理;接着,Servlet 线程将请求转交给一个异步线程来执...原创 2013-08-22 15:00:35 · 169 阅读 · 0 评论 -
Mybatis Cache探究
这里先不讨论第三方的cache集成(有memcache/oscache集成,控制力度跟下面说的一样比较粗,也可以跟spring3的cache做集成, spring3的cache是基于方法的缓存,具体可以在github找一下Spring MyBatis Memcached Bootstrap)。 先使用最简单的配置cache,比较粗放: 一,官方手册http://myb...原创 2013-08-22 12:01:20 · 191 阅读 · 0 评论 -
Continuous Integration with Xcode 5
xcode5 及持续集成, 花了20分钟上手配置, 效果非常接近我在java里面使用的hudson。 WWDC 2013 Session Videos 下载的ppt文稿, 鉴于需要开发者账号,所以在附件里面也放了一份。https://developer.apple.com/wwdc/videos/index.php?id=412 Why Continuous Integr...原创 2014-01-09 15:04:19 · 84 阅读 · 0 评论 -
Httpclient4.3实例。 每个版本接口变更都巨大
1.新增简单的url请求内容返回, 比较时髦的链调用 try { Content returnContent = Request.Get("http://www.qq.com") .execute().returnContent(); System.out.println(returnContent.toString()); } catch (C...原创 2014-01-08 17:55:24 · 142 阅读 · 0 评论 -
nginx proxy_http_version
nginx转 apache ,发现HTTP协议版本 从1.1 变成了1.0 其实并非某些人说的不支持1.1,而是有个参数,默认为1.0而已。NGINXHTTP/1.1" 200 3578 0.035 "http://plugin/index.php/video/youku" "Mozilla/5.0 (iPad; CPU OS 7_0_4 like Mac OS X) App...原创 2014-01-07 16:10:24 · 3206 阅读 · 0 评论 -
spring3-基于注解的AOP
要点:1.aop的概念真的很多。。。其实从使用出发无非两点:1,定义要拦截的方法,2,实现拦截后的操作方法。 2.基于注解的@Aspect需要配合bean声明来用,不然不报错,不执行。。官方doc貌似没提倒。 3. 注入的bean对象,访问其属性需要生成get/set方法, 如果直接访问也会出现空指针。@Autowired private MemCacheService...原创 2013-08-02 11:58:03 · 158 阅读 · 0 评论 -
ubuntu一键升级到13.10的教训
从13.04升级到13.10,主要两个变化非常蛋疼:1. php从5.4-》5.52.apache 2.2 -》 2.4抛开一些细节的配置不说, php5.5会出现一些安全警告,google之均可以解决(大约花费2小时)。更麻烦的问题在于: 升级apache的时候, 会自动删除/var/www目录 万幸的在于数据都是专区存储,/var/www只是一个软链,不然就真是倒大霉了...原创 2013-12-16 11:51:31 · 119 阅读 · 0 评论 -
【PHP】Codeigniter : Unable to locate the model you have specified
产生这个问题一般两个原因:1. google到的结果,类名文件必须小写。 可参考http://codeigniter.org.cn/forums/thread-9941-1-1.html 2. 这个是google了一圈都没说到的,linux目录访问权限导致! 排除命名问题之后,请ls查看目录权限,是否对www-data用户有读写权限 Unable to loca...原创 2013-12-10 11:36:22 · 182 阅读 · 0 评论 -
springMVC + jsonP
/** * 根据分类id,取新闻列表 jsonp对象 * @param stub * @param newsItemId rss分类id编号 * @param function jsonp回调函数名 * @return * @return jsonp对象 */ @RequestMapping(value ="/news/l")...原创 2013-11-20 12:58:41 · 129 阅读 · 0 评论 -
PC端 浏览器Agent切换工具
插件比较方便,技术流还是推荐fiddler原创 2013-11-18 11:04:38 · 224 阅读 · 0 评论 -
谨慎使用SocketChannel的read方法
下面的代码是一个实例化SocketChannel的过程: SocketChannel channel = SocketChannel.open(); //要设置连接超时 channel.socket().connect(addr,connectionTimeOut_ms); //设置读超时 channel.socket().setSoTimeout(timeou...2011-01-13 18:02:11 · 1004 阅读 · 0 评论 -
struts2拦截器[代码备份]
.从ActionSupport继承的基类中,获取全部request值:public abstract class BaseAction extends BaseAction { //自动注入request的参数,到日志 Map<String,String[]> params = getRequest().getParameterMap...原创 2010-09-21 17:34:15 · 109 阅读 · 0 评论 -
[构建高性能web站点]-2实际案例
想不到早上写了读书笔记一,晚上就给我一个实例来完成读书笔记的第二集了。 今天是举国哀悼日,国米比赛不转了,QQ农场也不能偷了。 猜测农场停机之后,作物和动物的生长计时应该是继续的。。。嘿嘿,所以12点不去偷菜,更待何时。 可惜我对自己农场的收割过程,是伴随着不断提示超时提示。通过锲而不舍的刷新-重试总算完成了收割,随后点击好友列表,抛异常...2010-04-22 00:41:59 · 463 阅读 · 0 评论 -
[构建高性能web站点]-笔记1绪论
绪论:找到瓶颈在哪里增加带宽减少网页里面的http请求加快服务器脚本计算速度使用动态内容缓存使用数据缓存动态内容静态化更换web服务器软件页面组件分离合理部署服务器使用负载均衡优化数据库考虑可扩展性减少视觉等待 初看标题真的没什么新鲜,可是不看绪论,我们能心有优化性能的全景么? 常说的负载均衡,其实还是有不少玩意: http...2010-04-21 07:46:53 · 120 阅读 · 0 评论 -
mysql那点事(行锁+not null + varchar)
一。not null vs DEAFUL value 在建表的时候,通常会要求给所有字段一个默认值,1来避免产生null字段,2来还可以在写代码的时候偷下懒。case1: not null +default于是这样的create sql就出来了DROP TABLE IF EXISTS `zhushan`.`admin`;CREATE TABLE `zhushan`.`ad...2009-08-14 15:21:42 · 207 阅读 · 0 评论 -
java profile【cpu负载过高】
问题描述: cpu负载陡增,内存占用情况稳定。(在多cpu的情况下,比如4核,free 看到cpuload 15%,但是查看单cpu会达到 100% 负载。。。) 1分析工具jstack: /usr/java/jdk1.6.0_13/bin/jstack -l 11831 > jstack.log //进程pid号 以前jstack弄出来的栈文件总是不知道...2010-04-16 12:37:21 · 225 阅读 · 0 评论 -
ExecutorService,也不是想象中的神
关于ExecutorService好用的方面就不说了,effective java里面是强烈推荐使用Executor代替自己管理Thread。e.g. public static void startReceiver() { ExecutorService pool = Executors.newFixedThreadPool(rec_thread_count); ...2010-03-30 18:31:13 · 83 阅读 · 0 评论 -
Jar包使用
一。可执行jar 使用java -jar 文件执行的,必须是可执行jar 制作方法有两种:1.打包的命令加上main类参数,下面是Test类做主类 jar cmf manifest.mf Test.jar Test.class 2.直接修改jar文件里面的Manifest.mf Manifest-Version: ...2010-03-24 14:46:56 · 100 阅读 · 0 评论 -
性能调优1-工具
一,jstack(linux下特有)可以观察到jvm中当前所有线程的运行情况和线程当前状态1. 抓取分析文件的用法是:/usr/java/jdk1.6.0_13/bin/jstack -l 11831(其中11831是当前的java进程,这个需要自己ps看) 2. 抓到的文件内容大概是下面这个样子: 2010-03-18 13:09:52Full thread dump...2010-03-22 19:48:29 · 143 阅读 · 0 评论 -
Java人也不能忘记的~~位操作技巧
一。数字运算与位运算 在2进制里面,一个位只可能是0,或者1。 java里面支持的位运算有:~ 按位非(NOT) & 按位与(AND) | 按位或(OR) ^ 按位异或(XOR 位操作需要跟逻辑操作区分开(逻辑运算符AND(&&)、OR(||)以及NOT(!)能生成一个布尔值(true或false)——以自变量的逻辑关系为基础) ,这里的区分的重点是敲...2010-03-10 22:47:49 · 122 阅读 · 0 评论 -
扩展log4j系列[一]为DailyRollingFileAppender加上maxBackupIndex属性
在log4j的大多数appender中,都有maxBackupIndex属性,但是这个DailyRollingFileAppender没有,也就是说它会每天滚一个文件,却没有办法控制文件总个数。这绝对是系统的一个“着火点”,下面就开始动手改造了: 一。研究整个log4j的appender结构: 对框架的一个模块进行扩展,并非总是直接继承某个类就好了,如果不进一步深入研究就有可能掉...2009-11-26 00:53:06 · 968 阅读 · 0 评论 -
XWork Features-
“XWork 2 is a generic command pattern framework. It forms the core of Struts 2.”~xwork2 是struts2 的核心!!!是基于命令模式的一个框架。其实要看懂xwork基本就不需要看struts2了、 个人理解的xwork,核心就是代理模式+AOP的拦截器, 命令模式实现,线程变量类! ...2009-11-15 22:07:29 · 102 阅读 · 0 评论 -
Object类型的参数
通常提供API函数的时候,会实现多种参数类型,比如:log4j里面获取log对象,可以传string,当然也可以更方便的传class进去自动转string public static Logger getLogger(String name) { return LogManager.getLogger(name); } public s...2009-11-04 21:28:18 · 875 阅读 · 0 评论 -
[bugfix]重新理解Thread的InterruptedException
在前面一篇blog中,错误理解了中断异常,还被评为新手贴,最近找时间认真理解了一下线程的这个异常,呵呵。:原文在这里。 下文部分内容来自dw上的一篇文章,已经贴在附件里面、。 下面通过一段代码来演示中断: package thread;/** * created on 2010-4-27下午04:32:40 * * @author weisong...2010-04-27 19:01:35 · 220 阅读 · 0 评论 -
恐怖的string+操作消耗
偶然翻到一本书,《Java程序员上班那点事儿》,按照其第四章的实例代码跑了一下string的“+”操作,测试数据真的有点恐怖。。 public class MemoryTest { public static void main(String args[]) { String s = "abcdefghijklmnop"; System.out.print(" 当前虚...2010-05-03 23:33:52 · 135 阅读 · 0 评论