2016年03月 归档

两行代码绕过基于referrer的防盗链

去年年底,微信公众号对图文消息内的图片做了防盗链设置,但验证发现业务域名下引用微信公众号图文还不受影响,以为做了白名单处理,不料近期发现所有自己网站的页面都不能正常显示图片,而是显示微信的防盗链提示。

由于业务需要,公司产品通过微信公众平台提供的接口创建、维护图文,大概去年8月15号,图文创建接口对非官方图片链接做了过滤,无奈将所有素材上传至微信,与此同时,我们自己也有页面需要显示对应图文信息,面对微信的防盗链屏蔽,想过维护两个图片路径,本地图文显示时替换为本地图片URL,后面感觉这样太影响效率,为了紧急修复图片不能显示的问题,遂通过简单的代码绕过了微信防盗链。

下面是核心代码(PHP) 查看更多...

Java方法究竟是值传递还是引用传递?

一直以来,Java地址引用概念的影响,认为Java传参分为值传递和引用传递,最近因为追究JavaScript的传递方式,遂翻出Java相关资料看了一下,发现原来这么久一直理解错了。Java中只有按值传递,没有按引用传递!

这里同样涉及到堆与栈的概念,至于区别,这里就不再赘述了,和JavaScript的说法类似,可以参考前面的《JavaScript函数究竟是值传递还是引用传递?》。

对于这个问题,网上说法各异,《Core Java》的作者,以及JAVA的创造者James Gosling都认为当一个对象或引用类型变量被当作参数传递时,也是值传递,这个值就是对象的引用,因此JAVA中只有值传递,没有引用传递。还有一种说法是引用可以看作是对象的别名,当对象被当作参数传递时,传递的是对象的引用,因此是引用传递。当然,也有《Thinking in Java》作者Bruce Eckel站在了中立的立场上。 查看更多...

JavaScript函数究竟是值传递还是引用传递?

很多人认为 JavaScript中函数进行参数传递有两种方式:基础类型值传递;对象类型按引用传递。很长一段时间我也这样认为,其实都是一种值传递。

事情是在近期QQ群里偶尔聊到,JavaScript函数传值到底是值传递还是引用传递,看到有人说都是值,原因即使是对象也是传了对象的拷贝,即对象的值本身。本着对技术的刨根问底儿的精神,查了相关资料,得到结论:ECMAScript中所有函数的参数都是按值来传递的

下面是一些相关概念的解释,整理自网络:

众所周知,在JavaScript中数据类型可以分为两类:

原始数据类型值 primitive type,比如Undefined,Null,Boolean,Number,String。

引用类型值,也就是对象类型 Object type,比如Object,Array,Function,Date等。 查看更多...

Jersey2 模拟登陆网站及登陆后301重定向识别

周末群里有人希望帮他搞个程序采集某个网站数据,虽然说没什么技术难点又不缺那点钱,但是好奇心还是比较重,没事看了看,最基本的基于SESSION的认证,POST个用户名密码即可,用java写的话我通常采用HttpClient,很强大,很通用,但是最近时不时有看过Jersey2的一些东西,貌似和我之前熟知的1.x差异挺大,就刚好拿来试试(不是接单帮搞数据,单纯的玩技术,采集别人数据的事我可不做)。

实践下来,发现Jersey2的API写起来更清爽了,因为是用来采集,这里只用了Jersey-client相关功能,期间遇到一些小问题,就是登陆成功后目标网站是301重定向到新页面的,而Jersey2的API调用后还保留在原始页面,最终导致SESSION无效,不能进行下一步操作,Stackoverflow上搜了下,最终解决了,很简单,如下 查看更多...

Virtualbox 安装时发生严重错误[解决]

看到有人发了eclipse che的截图,感觉挺清爽,就打算装上看看,不料安装Virtualbox的时候一直自动回滚,以为是曾经装过Virtualbox卸载不彻底,无意间在网上看到一帖子说是DeviceInstall服务没有开启,打开服务一看,状态果然是已停止,打开后重新安装,顺利成功,这里记录一下,以便有遇到同样问题的童鞋参考。

另外顺便提一句,eclipse che看似不错,不过配套要安装Virtualbox、Git和Docker,略显麻烦,目前还没有玩转,后面有机会分享下试用体验。

网站限制指定地区、来路、时段访问

做网站时,出于某种需要,我们可能需要限制某些地区或者某个时段对网站的访问,下面是一段简单的php脚本,记录、分享下。
查看更多...