-
网站动态生成图片
最近用微信动态生成了一个二维码,地址`http://xxxx.com/code.jhtml?id=1`。后台代码:```javaImageIO.write(codeImage,"png",response.getOutputStream());```但是这样就会存在一个问题,就是用`img`标签加载图片是没有问题的,但是保存的时候后缀名确实`.jhtml`,这个就悲剧了。然后加了下面一段代码:```javaresponse.setHeader("Content-Disposition","attachment;filename=code.png");```这样图片就会被直接下载。最后我分析了一下图片加载的`response`的头部信息:我们可以看到有一个`Content-Type`,OK,加上以下代码就解决了:```response.setHeader("Content-Type","image/png");```这...
图片下载 Content-Type -
Java图片压缩
最近发现网站传的图片很多都是直接使用相机照的,很多图片都非常大,这样占用空间,而且用户加载也会变慢,所以搞了一下压缩图片的方法。但是网上很多都只有JPG的压缩方式,PNG的很少,这里也记录一下。我们用PS把PNG转为网络图片我们一般会讲`PNG24`转为`PNG8`,这里也是我的思路,下面贴上代码:```javapublicstaticfinalStringPNG_EXTENSION="png";publicstaticfinalStringJPG_EXTENSION="jpg";publicstaticbooleancompress(StringfilePath){Filefile=StringUtils.isEmpty(filePath)?null:newFile(filePath);if(!file.exists()||!file.isFile()){returnfalse;}Graphics2Dgraphics2D=null;ImageWriterimageWriter=null;ImageWriteParamimageWriteParams=null;FileOutputStreamfileOutp...
Java 图片压缩 png -
POI替换Word图片
之前做了一个Word在线编辑导出的功能,里面替换图片是把文字替换为图片,原因也是之前的Word的头像都是简单的四边形,没有特殊效果。但是最近的模板是圆图,而且有边框和阴影效果:之前替换文本的文章:[http://blog.csdn.net/webrobot/article/details/25989295](http://blog.csdn.net/webrobot/article/details/25989295)那么现在就只能去替换图片了,但是网上找了找也没找到,POI的方法也找了一下,没有替换图片的方法。然而在我不懈努力之下,最后终于是找到了解决办法。首先我们把一个Word的文档用`7z`解压出来或者把后缀改为`zip`解压都可以,可以得到以下的文件:;formatter.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));//北京时间System.out.println(formatter.format(newDate()));formatter.setTimeZone(TimeZone.getTimeZone("JST"));//日本时间System.out.println(formatter.format(newDate()));```我们一般打印`newDate()`的时候发现后面跟有一个`CST`,我一直以为获取北京市区的`ID`就是`CST`,但是发现获取到的时间不对,后来发现`CST`是简写,不止一个时区的简写是`CST`。所以下面给出一个比较全的Java时区的ID表,还有一些简写的ID都在下面的两篇文章:时区ID:[http://blog.csdn.net/yangbobo1992/article/details/994...
Java 时区 TimeZone ID -
图表库highcharts
最近也是做了一些统计的东西,之前一直用的是`flash`,但是发现不是开源的,用起来也不是很方便,所以找了个替补。就发现了`highcharts`,这个是用`javascript`做的,还不错,也是非商业免费的,功能也十分的强大。我也搞了个简单的例子:```javascriptvarchart=$('#dataChart').highcharts({title:{text:'销售额/销售量统计图',x:0},subtitle:{text:'2013-12~2015-04',x:0},xAxis:{//X轴categories:['2013-12','2014-01','2014-02','2014-03','2014-04','2014-05','2014-06','2014-07','2014-08','2014-09','2014-10','2014-11','2014-12','2015-01','2015-02','2015-03','2015-04'],labels:{rotation:0},gridLineColor:'#cccccc',//下面的是表格线gridLineWidth:1,lineC...
highcharts 图表库 -
CSS3笔记本翻盖特效
闲来无事,做了个笔记本翻盖的简单特效:[http://www.acgist.com/demo/fold/index.html](http://www.acgist.com/demo/fold/index.html)
CSS3 动画 特效 -
正则表达式查找
以前也搞过正则表达式查找字符串,但是一直都不求甚解,所以也就只会糊里糊涂的用,有时候还是试出来的。最近用Nginx重写,里面用了些正则表达式,所以这里也认真看了看正则表达式查找。##基本查找```javaStringreg="\\d";Stringtxt="12这a3是4c一g5个6i测7s试89t!0";Patternpattern=Pattern.compile(reg);Matchermatcher=pattern.matcher(txt);while(matcher.find()){System.out.println(matcher.groupCount());//匹配到的组System.out.println(matcher.group());//找到的第一个组合下面一样,0表示匹配整个表达式System.out.println(matcher.group(0));System.out.println("------------------------------分割线------------------------------");}```##分组匹配```javaStringreg="(\\d...
正则表达式 -
Nginx中location分号转义
正则表达式中分号是不需要转义的,但是Nginx中,分号是由含义的,所以分号需要转移,直接加个斜杠就可以了:```location~*^/[0-9]+([\?\;].*)?${rewrite^/([0-9]+)(.*)$/article/$1.action$2last;proxy_passhttp://acgist;}```
Nginx location -
Java获取网页重定向后的真实地址
最近做了个功能需要到百度抓取网页下来,但是百度和百度新闻不一样,网页结果的地址是百度的一个地址,统计了信息后再做重定向,那么如何通过该地址获取到,网页真实的地址呢?在网上找到了一个答案:```javaURLurl=newURL("http://www.baidu.com/link?url=YvFbRiD8vlW77HC4JgvgDd81Cdrl-XvY-SZV4ce_x60n3LjDU1QkB4ann7m_mIw6");//可以换成其他任何的地址HttpURLConnectionconnection=(HttpURLConnection)url.openConnection();connection.setInstanceFollowRedirects(false);//设置是否自动重定向System.out.println(connection.getHeaderField("Location"));System.out.println(IOUtils.toString(connection.getInputStream()));```原理:重定向是获取头信息里面`Location`字段进行跳转的,所以不自...
重定向 302 301 Java -
MySQL整理
####CentOS安装```wgethttps://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpmyumlocalinstallmysql57-community-release-el7-11.noarch.rpmrpm--importhttps://repo.mysql.com/RPM-GPG-KEY-mysql-2022yuminstallmysql-community-serversystemctlstartmysqldsystemctlenablemysqld#查看密码cat/var/log/mysqld.log|greppassword#修改密码等级setglobalvalidate_password_policy=LOW#修改密码ALTERUSER'root'@'localhost'IDENTIFIEDBY'acgist';#远程登陆GRANTALLPRIVILEGESON*.*TO'root'@'%'IDENTIFIEDBY'acgist'WITHGRANTOPTION;```####修改密码生效```flushpri...
MySQL -
通过账号生成微信二维码
将`img`的`src`属性改为:`http://open.weixin.qq.com/qr/code/?username=微信号`,修改微信号就可以了。2015年3月后,该链接只能用来生成公众号的二维码了。
生成微信二维码 -
微信accessToken失效
今天微信下载图片返回错误码:`{"errcode":40001,"errmsg":"invalidcredential"}`,但是这个不科学啊,本地我测试过几次获取`accessToken`都没问题的,怎么回事呢?后来发现了问题,**因为我本地测试的时候刷新了accessToken导致服务器上面缓存的token失效了。****所以测试的时候,最好是获取服务器的token,而不要去刷新,或者测试账号和生产账号分开。**
微信公众平台 40001 -
手机端点击不要背景框
手机端`a`标签点击有一个边框和背景很难看,需要设置属性`tap-highlight-color`就可以去掉了。
tap-highlight-color -
HTML5新特性学习
看了看HTML5的一些新元素:##控制条`input````html```##颜色选取`input````html```##进度条`progress````html```##折叠标签`details````html战斗配置演示```战斗配置演示##照相机这是用这些做了一个小游戏,名字大乱斗,DEMO地址:[http://www.acgist.com/demo/name-fight/index.html](http://www.acgist.com/demo/name-fight/index.html)
HTML5 表单元素 进度条 颜色选择 控制条 -
微信redirect_uri参数错误
最近又做微信的东西,搞了半天一直提示**redirect_uri参数错误**,原来要在**开发者中心->网页账号->修改->OAuth2.0网页授权这里添加域名/IP**,但是我填写了本地IP还是出了问题,原来**非80端口需要加上端口号**。如图:如果是微信开放平台,需要修改授权回调域为域名,而不是像`cookie`那种域。说到这里我TM不得不吐槽一下,微信这个东西了,MD所有的API都一样的,但就是要搞了两个平台,而且两个地方都要收费。FTMDX
redirect_uri 微信 参数错误 微信开放平台 微信公众平台 -
网页获取微信openid
现在有个功能需要用到用户的`openid`,但是发现微信JS接口没这个功能。后来去官网找了一下,原来在这里:[http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html](http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html)。
微信公众号 openid -
SVN迁移
把SVN迁移到本地来,本来以为直接拷贝SVN目录就可以了,但是发现直接拷贝SVN目录是会存在问题的,因为版本不同总是提示:**期望文件系统格式在“1”到“4”之间;发搜索现格式“6”**。所以还是使用了svn的命令,步骤如下:*备份svn存储库```bash#压缩备份svnadmindumpE:/SVN/acgist|gzip>./acgist.gz#不压缩备份svnadmindumpE:/SVN/acgist>./acgist.svn```*恢复svn存储库```bash#建立新的svn存储库svnadmincreateE:/SVN/new#导入存储库数据svnadminloadE:/SVN/new<./acgist.svn```>更多参考:[http://blog.chinaunix.net/uid-354915-id-3766906.html](http://blog.chinaunix.net/uid-354915-id-3766906.html)项目迁移使用`relocate`,还有就是Eclipse/MyEclipse里面废弃旧的SVN地址,会出现无法废弃旧的位置,迁移后废...
SVN 废弃位置 SVN迁移 -
Google Chrome浏览器滚动条优化
做了一个Chrome滚动条优化的示例,但没做IE和Firefox的兼容。```css::-webkit-scrollbar{width:16px;height:16px;box-sizing:border-box;}/**滚动条基本信息*//***滚动条两端的按钮样式:*vertical:竖直滚动条;*:horizontal:横向滚动条;*:start:上边/左边按钮;*:end:下边/右边按钮*后面控制条相同*/::-webkit-scrollbar-button{width:16px;height:16px;background-repeat:no-repeat;background-image:url("./bar_arrows.png");}::-webkit-scrollbar-button:vertical:start{background-position:0px0px;}::-webkit-scrollbar-button:vertical:start:hover{background-position:-32px0px;}::-webkit-scrollbar-button:vertical...
Google Chrome 滚动条 -
Java设置socket超时时间
网上看了写文章,发现很多设置`socket`连接超时时间使用的是`setSoTimeout`这个方法,但这个不是设置连接超时方法,而是设置读取超时方法。设置连接超时实在`socket`的`connect`方法,方法的最后一个参数就是连接超时参数:```java/***Connectsthissockettotheserverwithaspecifiedtimeoutvalue.*Atimeoutofzeroisinterpretedasaninfinitetimeout.Theconnection*willthenblockuntilestablishedoranerroroccurs.**@paramendpointtheSocketAddress*@paramtimeoutthetimeoutvaluetobeusedinmilliseconds.*@throwsIOExceptionifanerroroccursduringtheconnection*@throwsSocketTimeoutExceptioniftimeoutexpiresbeforeconnecting*@throwsjava.nio...
Java socket timeout -
IE7/8/9/Firefox/Google Chrome的css hack
一直不想调CSS的兼容,但是没有前端这破事就落到了我的身上。特别是IE这坑爹的东西,IE7/8/9/10/11标准一个和一个不一样。看下面的代码吧:```css.search{height:30px;width:30px;position:absolute;margin-top:3px;//以Chrome为基准margin-top:10px\0;//IE8,但是\0包含的IE版本为:7/8/Edge+margin-top:2px;//IE7}:root.search{//注意:root选择器Firefox和Chrome都支持的margin-top:4px\9;//IE9/10,9和10的区别不是非常大,就这样或者IE10用CSS调margin-top:4px\0;//Edge模式,我不知道这是个什么模式反正也是坑爹的东西}@-moz-documenturl-prefix(){.search{margin-top:4px;}};//火狐```IE6没有适配,是因为我的IE没这个模式的选项,不过网上说的是`_margin-top`这样可以。还有`*margin-top`好像IE6/7都支持,没试过。![IE调试]...
IE Firefox Google Chrome css hack