基于注解整合Spring4、Jersey2与Groovy(非零配置)

众所周知,Servlet3.0作为J2EE 6规范一部分,随J2EE6一起发布,并且Tomcat7已经完全支持,其中就我个人而言,最为关注的就是异步与注解支持,但这么久以来,实际项目中一直不曾使用,近来业余有空,就尝试了一下Servlet 3.0的注解,但这不是重点,关于Servlet 3.0注解@WebServlet的使用,网上一搜一大把,这里不再赘述。

本文的重点是大部分基于注解来整合Spring4、Jersey2与Groovy实现Restful风格接口,为什么说是大部分呢?因为实践中发现个小小的问题,Jersey2.0开始,同样采用新规范,支持Spring加载但目前只支持XML配置形式,毕竟这两个东西不是同一公司出品,完全融合还需要一定的时间去折腾,这里就不自己造轮子了,毕竟写几行XML配置也不是那么的麻烦,当然,如果你有洁癖、如果你愿意基于Spring官方方案实现Restful或者自己实现Jersey2与Spring4的桥接,依然可以保持零配置,这里就不再啰嗦,简单分享下配置示例。 查看更多...

Git push error:dst refspec XXX matches more than one

最近工作中遇到这样的问题,使用的是Git做版本控制,在PUSH代码的时候,出现如下错误:

error: dst refspec XXX matches more than one.
error: failed to push some refs to 'git@xxx.xx:xxx.git'

初步一看,还想,怎么可能,出现两个相同的分支?表示很不解。
查看Git服务器上的分支也只有一个指定名称的分支,最后无意间发现在于服务器上有一个和分支名称相同的tag,安装项目组的习惯,tag一般都是以时间作为名称的,这里怎么会出现这个,好奇中删掉它重试,果然,Git把tag和分支搞在一起了,tag名称不能和分支名称完全相同,不知道这是Git个别版本的bug还是就这样机制。

仅此记录以方便大家。

Android View动画进行中事件无效解决方法

Android View动画运行时,在运动的View上绑定的事件将不能被触发,因为诸如点击事件等,触发点是绑定在View控件初始化时所在位置的点击,当动画移动后点击坐标就发生了改变,通过查询一些资料,了解到,Android 3.0以下,动画存在问题,它只移动了View绘制显示的地方,却没有移动View的物理位置,具体底层实现大家可以看源代码了解,我不大清楚底层,这里就不多说了,下面说说简单的解决方法。

只需继承父级布局,覆盖onTouchEvent(或者其他需要捕获的事件)。这里我以FrameLayout为例,因为要捕获点击事件,实现onTouchEvent,然后通过获取当前点击坐标计算出当前点击范围内包含的View控件,找到第一个就直接触发该View的事件,然后break,示例代码如下: 查看更多...

关于HTML5不得不说的一些事

近两年来,IT界炒的最火热的发展方向无非是O2O,而炒的火热的技术也无非是HTML5,但实际上,HTML5究竟是什么?能做什么呢?知其然,更要知其所以然,这是中国人对知识真理的追求写照。然而在关于HTML5的问题上,这句话并没有显现出来。HTML5会改变下一代互联网,HTML5潜力无限,这些观点在互联网上多之甚多。为什么呢?HTML5在互联网上究竟带来了什么?这些问题一抛出,全行就愕然了。甚至HTML5究竟是什么,都很难让人阐述清楚。

首先,简单而言HTML5就是超文本标记语言规范的5.0版本,当然对于不同的人来说,HTML5具有不同的意义。对某些人来说,它仅仅意味着"页眉"和"页脚"之类的新标签,以及一系列出现于标记的新属性。对其他人而言,这意味着出现在网络上的新鲜有趣事物,其中包括植入单个浏览器或其他非HTML5规格的技术。 查看更多...

巧用Fiddler代理调试微信JSSDK

最近开发微信端网页,涉及到使用微信JSSDK提供的分享、照片选择、上传、预览等功能,由于微信官方有安全域名的限制,调试一开始都是通过暴漏在公网的一个测试环境上进行,但是一次次的修改、构建再修改再构建太耽误时间,最后就考虑模拟安全域名,绕过检测。

PC端很方便,直接修改HOST指向微信公众号后台配置的安全域名即可,但是这样也只能使JSSDK通过校验,实际使用中往往会调用手机资源,如分享、上传等。

于是,又找到了我们的前端神器——Fiddler,熟悉前端的都知道,这玩意很强大,具体功能这里不再赘述。我们就说说其代理功能,其实Fiddler默认的拦截形式就是通过代理实现,即所有请求通过127.0.0.1:8888(默认值)中转,而这个地址则是Fiddler处理程序所提供的。 查看更多...

使用Chrome调试(编辑)JavaScript、CSS、HTML

说起来Chrome的调试,可能大多数人都用过,用Chrome调试JavaScript、CSS的确是方便了前端开发人员,但这大多数人中,基本都是用它来调试,而非编辑,通常情况下,应该都是打开浏览器开发者工具,对JavaScript进行debug或者对CSS进行修改,完成后返回编辑器(IDE)修改源码,刷新并重试。这看似简单的过程,实际上已经在浏览器、编辑器(IDE)之间的切换中消耗了一倍以上的时间,事实上,我们并不需要如此,Chrome为开发者提供了更为方便的调试模式,可以让你在浏览器中调试的同时,一步到位、修改源码,下面我们就来简单介绍一下。

方法很简单,只需两个步骤。 查看更多...

简单处理,让AvalonJS支持cmd

AvalonJS是国内前端大神开发维护的一个迷你MVVM框架,它不像AngularJS大而全,但实现了常见业务逻辑中能用到的功能,这里就不再赘述,欲知详情,可前往官网了解

官网地址:http://avalonjs.github.io/

AvalonJS自带加载器,当然,如果是大的项目,我们可能在引入AvalonJS之前就在使用诸如RequireJS(AMD)、SeaJS(CMD)之类的加载器,而AvalonJS自带的加载器也是基于AMD的,对于我们使用SeaJS的来说,想引入AvalonJS看来只能是在源码上下功夫了。

分析发现,官方提供了关闭加载器的方式,同时也提供了不带加载器的版本,所以如果使用RequireJS作为项目加载器的话,直接关闭自带加载器或者下载无加载器版本(avalon.shim.js)即可,关闭方式如下 查看更多...

Window环境下Python不能卸载问题解决

近期整理电脑,想升级下Python环境(习惯性的卸载旧版安装新版,因为很多类似开发环境、SDK的安装是不会自动卸载的旧版覆盖的),发现旧版卸载不了,提示如下:

there is a problem with this windows installer package.A programe run as part of the setup
did not finish as expected.Contact your support personnel or package vendor.

网上查了下有的建议强制删除目录,清理注册表,感觉有点太暴力,故没有采纳。有些童鞋说是因为卸载文件损坏,建议使用修复功能,但实际情况发现卸载损坏的情况修复也会让你选镜像(安装包)的。最后抱着试试看的态度,下载了相同的版本,重新覆盖安装一下,再次卸载,果然OK了,看来思路没错,但要注意,需要是完全相同的版本(包括小版本),至于你原先安装的版本号是多少,可以到控制面板找到对应项来识别。
查看更多...

辞掉第一份工作了,发文纪念一下

在两年前的8月26号,曾发过这样一篇文章《找到第一份工作了,发文纪念一下》。

回忆起来,那时候刚毕业,真是什么都不懂,总觉得自己很牛,得到同学、朋友哪怕是那么一点点赞许,就高兴地找不到方向,也就是这样,摸爬滚打折腾了两个多月,最后找到了一家创业公司,也在那儿一待就是将近三年,大概就像网上说的那样,因为80后归属感比较强,再加上大部分人对自己的第一份工作比较看重的缘故,很多人觉得这样很正常,自然我也不例外。

不过,终究还是离职了,没有太多的不满与抱怨,只是觉得近一年的情况来看,对于自身能力已经没有太多可提升空间了,至少在我看来是这样 查看更多...

合理使用Intellij Idea,提高开发效率,避免内存溢出

最近使用Intellij idea(phpstorm、webstorm、pycharm、rubymine等类似)开发的时候,经常遇到内存被占满,导致异常卡顿,一开始总以为是自己程序内存泄露,后面发现即使不启动自己的项目,只是单纯的开发,依然会出现内存占满甚至溢出的情况。

最后,实在受不了,在各大技术网站上搜罗相关文章,都说修改Intellij idea默认的vm配置文件即可增大使用内存,比如,将bin目录下的idea.exe.vmoptions文件内由
-server
-Xms128m
-Xmx512m
-XX:MaxPermSize=250m
-XX:ReservedCodeCacheSize=150m
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djsse.enableSNIExtension=false
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
修改为 查看更多...