Archive

Archive for the ‘Life in Coding’ Category

一个OOP的AC自动机代码

12月 6th, 2012 1 comment

网上代码很多,但是大多ACMer的风格,呃不是我说,代码可读性和封装性是比较欠缺的…也许Java出身的码农也就这点还有些优势了吧…纯自己手动敲的,build_ac函数(建立fail指针的过程)学习了网上的教程后模仿着写的,而且带clear()释放内存。 阅读更多…

zoj 2891

10月 12th, 2012 3 comments

花了一晚上把zoj一道TLE的陈年旧题2891给A了,一个简单dfs加基于数列排序检查,算法比较简单但是代码量比较多有170行,可以算比较复杂,过了Sample和自己编的几个临界数据,想想就交了试试看吧。 阅读更多…

HashMap多线程中引发的死循环

10月 1st, 2012 5 comments

串叔发现的问题,觉得很有意思,已有文章作详细描述,把原文翻译地讲一下。原文:http://mailinator.blogspot.com/2009/06/beautiful-race-condition.html。

Java的HashMap本身就不支持多线程,是线程不安全的,不过代码中有一些机制来阻止多线程中的不安全因素,比如在多线程修改操作中抛出ConcurrentModificationException,但是HashMap忽视了数组扩容时候这一修改操作,从而导致可能在多线程中进行了不安全的操作。 阅读更多…

wordpress发布文章时的Action事件

9月 26th, 2012 11 comments

昨天一网友加QQ询问关于wp-sns-share对于定时发布文章同步微博失效的问题,然后LZ才知道wordpress还支持定时发布文章文章这一神奇的功能,原来在发布文章的界面点击 “立即发布” 右边的编辑按钮选择一个未来的时间,再点击确定,就变成定时发布了。

wordpress实现定时发布的原理,模拟了一套CRON API,位于/wp-includes/cron.php。程序上并没有真正每分钟都去扫描一次而是在有用户访问的时候才去检测是否到了触发的时间,如果满足触发条件就新发起一个http请求(这样异步的方式不会阻塞原来那次http访问),坏处就是如果完全没有人访问的话,定时就失效啦,而且比较难做到很准时除非每分每秒都有访问量。

为了搞明白wp-sns-share对于定时发布文章同步微博失效的原因,对着wordpress源码调试了很久,顺带着把这块源码摸熟了不少,搞清楚了Action事件这一套路,值得讲一讲。

阅读更多…

wp_sns_share更新至2.6,增加图片同步

8月 29th, 2012 30 comments

大致上的更新内容已经在 wp_sns_share更新至新浪API2.0,实现图片同步 这篇文章中介绍了,主要将新浪微博的API由1.0a升到了2.0,不仅仅为了避免1.0a版本的API即将无法使用的问题,更在于2.0版本的API可以支持同步的时候带上图片了,这相信大家会比较喜欢,博主为之已经奋斗好久了。然后在 吐槽人人开放平台 这篇文章中说明了人人网同步的问题,代码都写好了就是APP不让审核通过十分懊恼,而且之前用用户名和密码的方法好像也行不通了,所以这个版本索性就去掉了人人网的同步,感觉似乎大家用的也不多。 阅读更多…

吐槽人人开放平台

8月 16th, 2012 5 comments

为wp_sns_share 2.6努力中,自从将sina的OAuth改为2.0后,也想着将人人用用户名和密码改为OAuth实现,而人人网一直都用的OAuth2.0,开发难度并不大。的确,一番努力后还是比较顺利实现了OAuth授权和调用API的代码,而且人人网的OAuth2.0做得比新浪的好,因为它有refresh_token机制来使用代码自动延长授权时间而不是像新浪那样要引导用户手动进行再次授权。

不过人人网的API并不好,一则所有的API是统一URL,通过参数实现不同API的调用显得好不专业,而且还需要参数加密显得很麻烦。不过这些都是浮云,技术上的问题都不是问题! 阅读更多…

wp_sns_share更新至新浪API2.0,实现图片同步

7月 19th, 2012 4 comments

想实现新浪微博同步文章同步好久好久了,苦于在新浪API1.0下无论如何怎么尝试都行不通 :-D这篇博文中有介绍,半年前了),其实很早就想转到2.0版本的API,但是苦于2.0版本的应用必须填写一个固定的callback地址,而wordpress插件的性质决定callback的域名完全不一样,这看似无法实现,也就搁置了。最近收到新浪开发者邮件提示,9月份API1.0版本即将弃用,而且之前有网友提示有其他插件实现了图片同步这一功能,最近趁暑假有时间就来好好继续研究一番。 阅读更多…

敏感词过滤,PHP实现的Trie树

7月 3rd, 2012 13 comments

项目需求,要做敏感词过滤,对于敏感词本身就是一个CRUD的模块很简单,比较麻烦的就是对各种输入的敏感词检测了。用Trie树来实现是比较通用的一种办法吧,之前一直没机会用过这种数据结构,正好试着写了一下。

因为用PHP实现,关联数组用的很舒服。第一个要解决的是字符集的问题,如果在Java中就比较好办统一的Unicode,在PHP中因为常用UTF-8字符集,默认有1-4个字节不同的长度来表示一个字符,于是写了个Util类来将普通的UTF-8字符串转换成字符数组,每一个元素是一个UTF-8串形成的字符。这一点比较容易实现的,根据UTF-8字符集的格式而来就好。
阅读更多…

各大视频网站的视频截图抓取

6月 28th, 2012 3 comments

新的一个项目,要有视频的功能,当然只是简单的贴URL和标题罢了,不会涉及到要去上传视频文件,但是在展示视频的时候就需要用到视频截图了,自己去生成截图难度太大了也不现实,去视频的源网站抓取是可行也比较方便的方法。

试过优酷、土豆、酷6、56、腾讯、新浪、搜狐这些国内最大的视频门户,基本都成功获取到截图,其中属优酷最麻烦。

阅读更多…

Play框架中Action的参数绑定和验证

5月 15th, 2012 3 comments

再来讲讲Play框架中Action的参数绑定,用过的都说好,哈哈。不仅可以将任意字符串值(比如用户名和密码)、日期值(生日)、整数值(第几页、年龄等)直接作为Action方法的参数放入其中自动绑定,还可以对继承自play.db.jpa.JAPBase的Model类进行直接的封装,这对一个具有很多变量的JavaBean来说实在是一件令人惊喜的事情,省略了太多太多重复又难看的代码有木有! 阅读更多…

Play框架的Router机制和jregex包

5月 15th, 2012 2 comments

最近对Play框架兴趣甚浓,对其有兴趣的功能都想一探究竟,先研究了下它的Router机制。概要地说,主要使用routes文件和正则表达式来完成URL到函数的映射,不过这里正则表达式功能比较强可以解析出{id}这样的参数,因此Play使用了第三方jregex包而不是JDK的java.util.regex包来执行正则表达式的工作。 阅读更多…

Java Play framework

5月 13th, 2012 10 comments

因本科几个老同学的邀请参与一个项目的开发,用到了这个全新的Java框架,“Play”。名字很有意思,接触的1.2.4版本而不是最近的2.o,上手很快,安装包里有自带的Sample程序。框架的易用程度大大超过了自己的预期,果然随着时代的发展Java框架越来越强大并且越来越人性化,最大程度地方便程序员开发应用。

一直使用也看好Spring MVC,但是Spring的日益臃肿让这个框架的优势在不断流失。列举Play一些非常棒的地方,特别是较之Spring MVC的优势。

阅读更多…

java.util中的集合类解析

3月 22nd, 2012 3 comments

Java源码学习的第二个重点块,也是jdk中最有意义最有价值的一块,这里的集合类都是数据结构和算法,上手快学到的东西也多,而且在日常Java代码中出现率仅次于java.lang包。java.util中集合类必须是最重要的一块了,当然其他还有日期日历时区、货币、线程等工具类,不过这些类并没有太大的价值去精读。
阅读更多…

java.lang包的一些学习心得

3月 1st, 2012 9 comments

寒假很闲,就打算写代码之余看看JDK源码。别觉得JDK源码是什么很难看不懂的代码,都是Java代码而且以逻辑为主算法很少,觉得体验Class、OOP和API的设计远远比掌握某个Class、API的复杂算法有意义(meaningful)也有意思(interesting)的多。

当然因为精力和时间有限,挑选常用和比较重要的包和类去看一下来的实在一些,然后你就会发现java.*下面其实就真没有多少包和类了,10来个包几百个类吧,这些类中有一半是没有或者基本可忽略代码的Annotation、Interface、Exception、Error等,更别看随便一个什么类的代码就上千行,其中3/4是注释有木有!好了,所以这也算是给自己的一个动力吧。果断地拿java.lang开咬…

阅读更多…

wp_sns_share更新2.5

2月 10th, 2012 17 comments

寒假之初,更新wp_sns_share到了2.4版本,按照网友的提示增加了摘要输出这一功能,但更新之后立即有网友提示摘要输出没有剥去HTML标签这点需要改进,并提出是否能将摘要输出也应用到前台的分享栏。这次的插件有一半内容改进来自于网友的建议和自己的想法,还有一半功能想法来自于插件wp-connect,的确是很强大的一款插件,虽然稳定性还有待调试呵呵。 阅读更多…