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脚本,记录、分享下。
查看更多...

丙申猴年祝福

大年初三,在家无聊胡言乱语写了篇总结,顺便发个新年祝福。

新的一年里,祝大家:工作舒心,薪水合心,被窝暖心,朋友知心,爱人同心,一切都顺心,永远都开心,事事都称心!

简洁Metro风格jQuery下拉框插件分享

日常工作中经常需要对form表单元素进行美化,而常用元素中唯独select下拉框最不易通过CSS重写样式,所以选择使用自定义的样式加列表模拟原生select。

此类插件网上也是很多,但很多插件功能是大而全的,而我需要的只不过是简简单单的风格样式上的统一,于是,自己草草写下了一款小插件,优点是可以通过以下三种方式生成:

1、在某个div上示例化组件,通过传入数组生成
2、通过固定格式的dl dd自定义列表生成
3、通过原生select生成,同时,如果你不愿意改动事件绑定代码来完成联动,可以保持原有程序不变,取值也依然是不变的。
查看更多...

关于七牛云不得不吐槽的那些事

最近无聊折腾博客,又萌发了把图片放到某个云存储的念头,这才想起之前注册过的七牛云,待登录了才发现,界面是这样的。

关于七牛云1

回忆一下,才想起来,这是很久前的事了,翻了翻邮件,发现自己注册七牛账户是在2013年的12月1日

关于七牛云2
查看更多...

如何通过HTTP缓存优化您的网站

对于互联网网站来说,加载速度是很重要的,面对各种资源的缓慢加载,大部分用户总是讨厌等待,以致于直接关掉页面(当然,如果你的网站内容不是必须或者不是唯一的情况下)。所幸HTTP协议中提供了完善的缓存机制,使我们可以一定程度上优化这种缓慢带来的负面影响。

什么是缓存?

缓存是一个到处都存在的用空间换时间的例子。通过使用多余的空间,我们能够获取更快的速度。用户在浏览网站的时候,浏览器能够在本地保存网站中的图片或者其他文件的副本,这样用户再次访问该网站的时候,浏览器就不用再下载全部的文件,减少了下载量意味着提高了页面加载的速度。

下面这个图例说明了浏览器和服务器之间如何进行交互。 查看更多...

基于CSS3 animation实现Marquee效果

最近实现手机端小游戏,看到有同事用到老掉牙的marquee标签,就不说html5已经废弃此标签了,单是性能就已经够呛,于是想换种实现方案,第一想法自然是js实现,当然也是最为灵活的,这里不再赘述。

期间曾看到有相关文章描述overflow实现的Marquee,用法如下:

overflow:-webkit-marquee;

尝试一下并无效果,最后发现30+的chrome版本中,Google已经把这玩意移除了。

另外就是今天的主角——CSS3 animation,依然很简单: 查看更多...