使用Apache的POI包设置excel列宽
可以使用setColumnWidth方法设置excel列的宽度。例如:
1 | sheet.setColumnWidth(i, width); |
需要注意语句的顺序,有时候在创建相应的行和列之前使用该语句,没有效果。所以,可以把上面的语句放在代码的最后。
使用java根据url下载并重命名文件
根据url下载并重命名文件,包含以下操作:
告诉浏览器新的文件名称
使用response.setHeader方法,设置filename,为了使中文文件名称不乱码,需要加UTF-8编码,代码如下:
1 | response.setHeader("Content-Disposition", "attachment; filename=\"" + URLEncoder.encode(fileName, "UTF-8") + "\""); |
设置contentType
首先,通过FilenameUtils.getExtension获取文件后缀,再根据文件后缀设置contentType,代码中例子为下载xls或xlsx类型的文件:
1 | String contentType = "xls".equals(FilenameUtils.getExtension(fileName)) |
通过url读取网络文件的内容并下载文件
1 | InputStream inputStream = new URL(filePath).openStream(); |
完整代码如下:
1 |
|
如何将select控件设置为只读
使用MySQL函数计算一段时间内的有效时长
有时候需要计算两个时间点之间的有效时间的长度,比如某天上午几点到某天下午几点之间,上班时间的长度,可以使用下面的函数进行计算。
1 | CREATE FUNCTION `get_eff_time_length`(datetime_start datetime,datetime_end datetime,eff_time_start TIME,eff_time_end TIME) RETURNS int(11) |
下面的测试用例计算一段时间内,在9点到21点之间的有效时长(取个对称的时间,方便测试。已经工作了的程序员留个言,看看有没有人经常加班到21点),单位为秒。测试用例没有覆盖所有情况,有兴趣的同学帮忙补一补。
1 | -- 同一天,两段时间相交,11.5小时,41400秒 |
Eclipse报PermGen space内存不足的解决办法
使用Eclipse开发Java Web应用时,经常会发现内存不足,报出内存溢出。此时,按照上图步骤编辑相应jre属性,并填写以下参数,并确保保存成功即可。
-Xms640m -Xmx640m -XX:PermSize=256m -XX:MaxPermSize=512m
Javascript中!!(两个感叹号,双感叹号)的作用
Javascript中!!(两个感叹号,双感叹号)的含义
使用javascript时,有时会在变量前面加上两个感叹号,这样做表示什么含义呢?Javascript中,!表示运算符“非”,如果变量不是布尔类型,会将变量自动转化为布尔类型,再取非,那么用两个!!就可以将变量转化为对应布尔值。
Javascript中哪些情况下!!值为真?
Javascript中哪些情况下!!值为真?当变量转化为布尔值true时为真咯!
Javascript中各种类型如何转换为布尔值?
我们至少可以想到undifined和null一定是转化为false的,数字0也一定是false,那么,空字符串,空数组,空对象呢?别急,下面的实验会有清晰的答案。
首先,定义三个转化布尔值的函数,我们后面会看到这三个函数是等价的,并且同时输出三个函数的转化结果
function trueOrFalseIf(toTest){ if(toTest){ return true; } else{ return false; } } function trueOrFalseDouble(toTest){ return !!toTest; } function trueOrFalseBoolean(toTest){ return new Boolean(toTest); } function print(toTest){ document.write(trueOrFalseIf(toTest)+","+trueOrFalseDouble(toTest)+","+trueOrFalseBoolean(toTest)+"<br/>"); }
依次测试undefined,null,空字符串,负0,正0,不确定数值,布尔值false,布尔值true,字符串0,数字1,数字无穷大,字符串true,字符串false,空数组,空对象,函数
function test(){ var toTestArray=[undefined,null,"",-0,0,NaN,false ,true,"0",1,Infinity,"true","false",[],{},function(){}]; for(var i=0;i<toTestArray.length;i++){ print(toTestArray[i]); } }
测试结果如下:
false,false,false
false,false,false
false,false,false
false,false,false
false,false,false
false,false,false
false,false,false
true,true,true
true,true,true
true,true,true
true,true,true
true,true,true
true,true,true
true,true,true
true,true,true
true,true,true
可以看到前面7个值都是false,后面9个值都是true。比较值得一提的结论如下:
众望所归,undefined和null为false。
任意数组,对象,函数(函数是特殊的对象)都转化为真,即使是空数组,空对象。
空字符串为false,非空字符串为true。
数值正负0,不确定值为false,其它为true,无穷大也是true。
字符串”0″和数值0可以相互转换,但它们转换为不同的布尔值,即0可转换为”0″,”0″可转换为true,但0却转换为false,可见Javascript中类型转换不具有传递性。
一个更有趣的现象是布尔值false会转化为字符串”false”,而字符串”false”却转换为布尔值true。
document.write(new String(false)); document.write(new Boolean("false"));
结果为
falsetrue
回到我们的题目,Javascript中!!(两个感叹号,双感叹号)可以用来做什么,可以用来判断一些变量的值啊!如果值为真,首先可以排除undefined和null,根据对象类型,可以做出如下判断:
数值:表示不是0,且有确定含义的值(包括无穷大)
字符串:表示长度大于0的字符串
数组,对象,函数:只能表示不是undefined或null,并不能判断是否有元素和内容。
另外,我们上面比较了三个函数,结果是一样的,所以下面两个用法其实是完全等价的:
if(!!value){ } if(value){ }
如果作为条件表达式,不需要使用!!进行转换,Javascript会自动转换,!!就只应用于将类型转换为布尔值。
WordPress 后台只有菜单,没有内容的解决办法
有时候在WordPress系统迁移后,或者在动了apache或php后,发现后台菜单都在,但是点击时,右侧窗体却不加载,内容为空白。而插件菜单都可以点击并且正常。惨状就像下面这张图这样:
或许,你还能发现以下的报错信息:
Fatal error: Access to undeclared static property: WP_Screen::$this in blog/wp-admin/includes/screen.php on line 706
而你很真的真的很确定自己没有动过WordPress的任何配置啊!这时要怎样修复呢?别当心,stackoverflow上有人遇到同样的问题。只要找到以下文件
/wp-admin/includes/screen.php
用你最喜欢的文本编辑器打开它,然后将
<?php echo self::$this->_help_sidebar; ?> (注意空格个数可能略有不同)
替换为
<?php echo $this->_help_sidebar; ?>
保存之后,看看是不是OK了?
中国电信发送QQ垃圾消息
2014年1月18日11点23分,也就是刚才,收到一个名为“中国电信”的用户发送的一条QQ消息,内容是促销热门手机。第一反应是有人假冒中国电信发送QQ垃圾消息。事实是…
促销链接地址,居然是189.cn的,whois信息显示这个网址确实属于中国电信,被雷到了。
很难理解电信直接以陌生人身份发送QQ垃圾促销内容的行为,这种用户体验的糟糕程度和新浪微博用私信推送新闻有得一拼了
你们有收到这样的消息吗?
2014年IT行业展望
2014如约而至,今年有许多值得期待的发展。
可穿戴设备
谷歌的Google Glass如果投入量产的话,会对人们的生活习惯造成很大冲击。而诸如苹果的智能手表也能带来很多方便。
智能手机操作系统
比较看好安卓系统的发展,应该在整理版本碎片方面能够取得不错的成绩。苹果明显感觉后劲越来越不足,但仍然有可能带来一些欣喜。
手机网络
韩国大力发展5G网络,而各国也会继续普及4G网络。但并不看好中国大陆地区4G网络的应用,因为资费太贵,流量又用得太快,在按流量计费的情况下,形同鸡肋。虽然相比3G网络,可以降低单位流量的价格,加快和增多非视频移动内容的浏览,从而促进相应网站和应用的发展,但可以随时随地轻松看视频的日子还没有到来。
超级电视
明年的增速将放缓,但随着竞争愈发激烈加上前期的技术积累,以及网络的提速,预计技术革新和三网融合将会加快。
智能路由器
其发展也会是2014年不大不小的亮点。
姑妄言之,总之对2014年IT界的发展是充满信心和期待的。