-
pdo和pdo_mysql安装
今天要安装一个PHP的项目,每次想到都头大,因为又出现了一个莫名其妙的问题:```libtool:link:`mysql_statement.lo'isnotavalidlibtoolobjectmake:***[pdo_mysql.la]Error1```这个把我找哭了。开始说使用命令:`makerealclean`,结果直接:`make:***Noruletomaketarget'realclean'.Stop.`后来看到一个网站[http://blog.csdn.net/lwx2615/article/details/7597427](http://blog.csdn.net/lwx2615/article/details/7597427),这里说使用:`makedistcheck`,果断成功了。至于这个命令干什么的请看这里:[http://www.cnblogs.com/hnrainll/archive/2011/06/08/2075052.html](http://www.cnblogs.com/hnrainll/archive/2011/06/08/2075052.html)。这里也说一下上面两个...
pdo pdo_mysql PHP MySQL -
JPA session 关闭
发生了一个不幸的事情:```javaorg.hibernate.LazyInitializationException:failedtolazilyinitializeacollectionofrole:net.shopxx.entity.Product.parameterValue,nosessionorsessionwasclosed```为什么发生这种事情?一般有两种可能:1.自己把`session`关闭了导致2.在页面获取`lazy`的属性,但是我是在`dao`里面代码报的错误?我是想不通,最后发现了原因,原来JAP的`entityManager.clear();`这个方法也会关闭`session`。
JPA session entityManager -
Java使用WebSocket
之前有一篇`WebSocket`的视频通话教程,那个主要不是讲怎么使用`WebSocket`,这篇文章主要就说一下`WebSocket`的使用。首先要用到的是最新的`Tomcat8`,因为要支持`JavaEE7`,`JavaEE7`把`WebSocket`纳入规范的。下面是代码:```java@ServerEndpoint("/face/accept/{rid}")publicclassFaceSocket{@OnOpenpublicvoidonOpen(Sessionsession,@PathParam("rid")Stringrid){//打开一个websocket时调用方法,上面的注解有点类似springMVCsession.getAsyncRemote().sendText("逗比你好!");}@OnClosepublicvoidonClose(Sessionsession,@PathParam("rid")Stringrid){//关闭时调用方法,这个方法好像存在问题,而且不要手动关闭session}@OnMessagepublicvoidonMessage(Stringmessage,Sessio...
Java WebSocket JavaEE -
排序算法 - 快速排序
有时候发现越写代码越麻木了,很多代码都copy,不深究。难道就这样甘愿当一辈子码农?所以最近又拾起了看书的习惯了,先看看算法吧。冒泡那些就不说了,这里主要描述一下快速排序。快速排序简单说就是选一个基数作比较,小的在左边,大的在右边,然后两边在按照相同的办法进行排序。这是一种分治法,大事化小,小事再化小。当最后分解为三个数/两个数的时候,左右一分就排序完成了。对于递归的算法,最重要的就是需要找到每个部分的相同点。就比如快速排序,相同的地方就是,每部分都要选择基数,然后按照基数左右排序。下面附上代码:```javapublicstaticvoidsort(int[]data,intleft,intright){if(left>right)return;inttmp=data[left];//选择最左边数作为基数intl=left,r=right;//两边的下标while(l<r){//替换一轮:先替换左边,再替换右边(如果你选择最右边为基数,可以先替换右边再替换左边)while(l<r&&tmp<data[r])//从右边找小于基数的下标r--;if(l<r){dat...
排序算法 快速排序 -
手机offline
今天刷机,发现`adbdevices`时,提示`offline`,原来是要打开USB调试,而且手机会有个提示,一定要确定。
offline -
jQuery获取元素高度
使用jQuery获取元素高度,但是发现获取到的高度不正确,原来是使用的方法不正确。jQuery有四种获取高度的方法:1.`height()`=`height`2.`innerHeight()`=`height+padding`3.`outerHeight()`=`height+padding+border-width`4.`outerHeight(true)`=`height+padding+border-width+margin`例如:```html```各个值:1.`height()`=102.`innerHeight()`=303.`outerHeight()`=344.`outerHeight(true)`=54>参考文章:[http://www.jb51.net/article/51100.htm](http://www.jb51.net/article/51100.htm)
jQuery height innerHeight outerHeight -
CSS小技巧
最近学到的CSS技巧真的非常多。以前调一些元素位移的时候,总是用`relative`然后什么`margin-top:-xxpx;`,后来发现父元素为`relative`,然后把要调的元素定位设置为绝对定位`absolute`配合`top`和`left`非常好用。还有`background-size:1rem;`这样背景图就可以自适应了,在终端适配上面非常不错。在一些需要使用小图标的列表,可以使用`:before`伪元素,非常简洁:>注:一定要设置高度,不然不能垂直居中。
CSS -
数据库instr使用
以前一直知道`like`查询,不过在一些情况下效率非常糟糕,所以用了`instr`这个函数。当然,我这里探究的不是`instr`和`like`的效率问题,而是`instr`的一个细节问题。看下面一个语句:```sqlselectSUM(casewheninstr(IC.info_course_title,'T8')>0then1wheninstr(IC.info_course_title,'T9')>0then1wheninstr(IC.info_course_title,'T10')>0then1else0end)assum_a,SUM(casewheninstr(IC.info_course_title,'T19')>0then1wheninstr(IC.info_course_title,'T20')>0then1else0end)assum_b,SUM(casewheninstr(IC.info_course_title,'T1')>0then1wheninstr(IC.info_course_title,'T2')>0then1wheninstr(IC.in...
instr SQL -
HTML5文本编辑器
最近一直头疼网页编辑的时候加粗,我在想怎么写。开始我一直认为要获取到选择的文本加粗后再放回去,所以搞了很久最后发现非常简单。后来发现使用`document.execCommand`配合HTML的`contenteditable`属性非常方便实现这些功能了。还有一个获取选中属性值的方法:`document.queryCommandValue`例如:*加粗`document.execCommand("Bold",false);`*修改颜色`document.execCommand("ForeColor",false,"#CCCCCC");`*获取颜色`document.queryCommandValue("ForeColor");`DEMO地址:[http://www.acgist.com/demo/editor/index.html](http://www.acgist.com/demo/editor/index.html)>参考文章:[http://blog.csdn.net/woshinia/article/details/18664903](http://blog.csdn.net/woshinia...
contenteditable execCommand 文本编辑器 -
HTML5桌面通知
之前做个这个功能的但是后来发现失效了,最后Google了一下,好像是Google浏览器不支持原来的那一套API了,然后就没注意了,最近发现居然有个网站又使用了这个功能,于是乎有研究了一下。注意几个问题:1.必须放到服务器上面才能测试。2.本地有点慢。DEMO地址:[http://www.acgist.com/demo/notification/index.html](http://www.acgist.com/demo/notification/index.html)获取权限:```javascriptif(Notification&&Notification.permission!=="granted"){Notification.requestPermission(function(status){if(Notification.permission!==status){Notification.permission=status;}});}```构造通知:```javascriptvaroptions={lang:"utf-8",//编码icon:"http://www.acgist.c...
桌面通知 notification HTML5 -
各种编码转化中文乱码
今天无聊搞了一下中文不同编码间相互转化时,出现的乱码的样子,主要用了`GBK`/`UTF-8`/`GB2312`和`ISO-8859-1`,结果如下:编码:GBK==>GBK=对啊这就是一个测试啊逗比编码:GBK==>UTF-8=�������һ����������编码:GBK==>GB2312=对啊这就是一个测试啊逗比编码:GBK==>ISO-8859-1=¶Ô°¡Õâ¾ÍÊÇÒ»¸ö²âÊÔ°¡¶º±È编码:UTF-8==>GBK=瀵瑰晩杩欏氨鏄竴涓祴璇曞晩閫楁瘮编码:UTF-8==>UTF-8=对啊这就是一个测试啊逗比编码:UTF-8==>GB2312=瀵瑰��杩�灏辨��涓�涓�娴�璇�����姣�编码:UTF-8==>ISO-8859-1=对åè¿å°±æ¯ä¸ä¸ªæµè¯å鿝编码:GB2312==>GBK=对啊这就是一个测试啊逗比编码:GB2312==>UTF-8=�������һ����������编码:GB2312==>GB2312=对啊这就是一个测试啊逗比编码:GB2312==&g...
编码转化 乱码 -
Spring MVC中文乱码
这里讲的中文乱码主要正对于`@ResponseBody`这个导致的中文乱码,之前一直没发现,因为返回`JSON`的时候中文没有乱码,但是返回`XML`或者包含中文的的字符串都会乱码,中文变成问号。这是因为返回的时候编码为`ISO-8859-1`,所以导致乱码,解决办法:```xml```加上上面的配置即可,另外还有一种就是在配置`mapping`的时候,设置返回的内容格式:```java@RequestMapping(method=RequestMethod.POST,produces="plain/text;charset=UTF-8")```不过这个比较繁琐。>参考文章:[http://tedeum.iteye.com/blog/1913500](http://tedeum.iteye.com/blog/1913500)[http://jejoker.iteye.com/blog/1973565](http://jejoker.iteye.com/blog/1973565)[http://blog.csdn.net/wuxinzaiyu/article/details/8813974](http:/...
Spring MVC @ResponseBody 中文乱码 -
Nginx重写去掉后面的参数
我本来以为自己能搞定,太高估自己了,最后还是百度出来了。把`http://www.acgist.com/article?type=anime`重定向到`http://www.acgist.com/article`##写法一`rewrite(.*)/articlepermanent;`重定向后的结果是:`http://www.acgist.com/article?type=anime`##写法二`rewrite(.*)/article?permanent;`这样结果就是:`http://www.acgist.com/article`注意上面的`?`,简直精髓。参考文章:[http://my.oschina.net/loveking/blog/150164](http://my.oschina.net/loveking/blog/150164)
Nginx rewrite -
Nginx文件下载
做了一个文件下载,配置如下:```location^~/upload/resource/{add_headerContent-Type"application/octet-stream";if($args~^filename=(.*)){add_headerContent-Disposition"attachment;filename=$1";}root/home/www/tomcat/acgist/ROOT;}```就是重新把下载文件名称修改一下,之前保存文件的时候呢,文件名使用的`MD5`码比较长,但是又不想去改,所以就写了这个东西。还有一个原因就是下载图片的时候,浏览器总是打开图片,加上这段代码:```add_headerContent-Type"application/octet-stream";```
Nginx 文件下载 图片下载 -
Tomcat下载包含中文文件名的文件
多说无益:```javaresponse.setHeader("Content-Disposition","attachment;filename="+newString(filename.getBytes("UTF-8"),"ISO-8859-1"));```将编码转为`ISO-8859-1`即可。
中文 乱码 文件名 Tomcat -
XML解析
做了一个XML的工具,满足一下常用的功能,如果有什么问题,欢迎指点。XPath感觉用起来还是非常顺手的,非常简单的选择器,非常的好用。XPath语法:[http://www.w3school.com.cn/xpath/xpath_syntax.asp](http://www.w3school.com.cn/xpath/xpath_syntax.asp)```javapackagecom.acgist.utils;importjava.io.ByteArrayInputStream;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.UnsupportedEncodingException;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importjava.util.Set;importorg.apac...
XML dom4j XPath -
微信支付
今天弄了弄微信支付,一些细节标注一下:##body不是UTF8编码这个东西主要是因为只有body这里才可能有中文,所以这么提示,原因是我是用的`HTTPClient`这个工具,需要在添加参数的时候设置一下编码,而不是将`body`转为`UTF-8`。代码如下:```post.setEntity(newByteArrayEntity(newString(xml.toString()).getBytes("UTF-8")));```##invalidtotal_fee这个问题是因为你的价格不符合规定,价格为分,必须为整数。说实话感觉微信支付的文档有点乱,而且很多地方都没批注,就比如签名的`key`我去,我搞了很久才知道在哪里去找。搞了一会我又想喷了,证书是安装了几次了。。。
微信支付 -
XML解析异常
最近看了一下微信支付的接口,不得不说这接口还用的是XML,在当下JSON火热的情况下使用XML还是要一定勇气的。而且最坑爹的是XML不能使用`]]`,自己还要转义,但他返回的XML居然可以使用。好吧进入主题,说一下这个问题,下面是TX返回的内容:```xml<xml><return_code><[http://www.cnblogs.com/zhuhongbao/archive/2013/06/04/3118061.html](http://www.cnblogs.com/zhuhongbao/archive/2013/06/04/3118061.html)更多详细信息以及安装配置:[http://19001989.blog.51cto.com/3447586/701186](http:...
Nginx -
MySQL使用like查询使用索引情况及fulltext索引
最近有个功能需要使用到模糊查询,当时我也不想使用`lucene`来做,所以就像直接使用MySQL的`like`查询就可以了。于是就在这个字段上面建了个索引,但是印象中我记得好像`like`查询是不能使用索引的,所以我这里做了个实验,结果如图:我相信上图已经非常直观的给出答案了,我就不多解释了。如果需要实现模糊查询怎么办,这时我们需要使用到`fulltext`索引,但是需要注意只有`MyISAM`这个引擎的MySQL才能支持,而且对中文支持不好,主要是中文分词,因为我这里都是查询的一些标签而且都是用逗号分隔所以查询起来效果还可以,如果是用来文章检索,还是看看有什么插件或者使用其他方法了。如果使用`fulltext`查询不到结果那么可能有以下几个问题:1.你的数据库引擎不对2.中文分词3.MySQL有一个设置:`ft_min_word_len`这个是最短的索引字符串,默认为`4`,如果查询的字符串小于这个值,也查下不到4.如果你的关...
MySQL like 索引 fulltext