-
Spring MVC匹配多个value
最近搞SEO得优化,以前的一些链接优化,本来想用Nginx重写,但是想了想还是新站,还是改代码算了。需求是同时匹配:`icon|graph|ppt|image|font|soft`本来想的是:`@RequestMapping(value={"icon","graph","ppt","image","font","soft"})`,但是这样取不到值,还要自己写取值的方法。最后百度一下,原来还可以使用正则表达式:```java@RequestMapping(value="/{type:icon|graph|ppt|image|font|soft}")```>参考文章:[http://my.oschina.net/guhai2004/blog/170133](http://my.oschina.net/guhai2004/blog/170133)
Spring MVC @RequestMapping @PathVariable -
lucene多个field查询
一般使用`lucene`查询可能都是下面这样:```javakeyword=QueryParser.escape(keyword);QueryParserqueryParser=newQueryParser(field,newAnalyzer());IndexSearchersearch=newIndexSearcher(indexReader);TopDocstopDocs=search.search(queryParser.parse(keyword),size);if(topDocs!=null){for(inti=0;i<topDocs.scoreDocs.length;i++){docs.add(search.doc(topDocs.scoreDocs[i].doc));}}```如果多列查询怎么办?如下:```javaintlength=fields.length;BooleanClause.Occur[]occurs=newBooleanClause.Occur[length];//对应列关键词的情况for(inti=0;i<length;i++){occurs[i]=Boolean...
lucene MultiFieldQueryParser -
lucene转义
```org.apache.lucene.queryparser.classic.ParseException:Cannotparse'?':'*'or'?'notallowedasfirstcharacterinWildcardQueryatorg.apache.lucene.queryparser.classic.QueryParserBase.parse(QueryParserBase.java:125)atorg.apache.lucene.queryparser.classic.MultiFieldQueryParser.parse(MultiFieldQueryParser.java:307)atcom.acgist.module.search.utils.IndexReaderUtils.searchIndex(IndexReaderUtils.java:66)atcom.acgist.module.search.utils.SearchUtils.search(SearchUtils.java:16)atcom.acgist.controller.SearchController.index(...
lucene -
lucene自定义分词器
小黄书的分词很久就写好了,但是怎么结合`lucene`呢?首先要实现一个`Analyzer`的抽象类:```javapublicclassNLPAnalyzerextendsAnalyzer{@OverrideprotectedTokenStreamComponentscreateComponents(Stringfield){returnnewTokenStreamComponents(newNLPTokenizer());}}```代码非常简单,主要就是`NLPTokenizer`这个东西非常重要的,里面就是实现分词的代码:```javapublicclassNLPTokenizerextendsTokenizer{@OverridepublicbooleanincrementToken()throwsIOException{//内置input获取文本内容“你喜欢吃苹果吗?”clearAttributes();//清空CharTermAttributeterm=addAttribute(CharTermAttribute.class);term.append("分词");returntrue;}}```&...
lucene 分词器 -
手机浏览器拉起微信和支付宝
手机其他浏览器支付时如何拉起微信和支付宝呢?微信:[weixin://wxpay/bizpayurl?pr=3yrtD05](weixin://wxpay/bizpayurl?pr=3yrtD05)其实部分`APP`有自己的`schame`,例如支付宝是`alipays://`。包括PC微信也可以通过`weixin://`打开。
微信 支付宝 -
Java版MongoDB驱动Bson小技巧
我这里使用的驱动是`3.0.1`,API地址:[http://mongodb.github.io/mongo-java-driver/](http://mongodb.github.io/mongo-java-driver/)Bson主要就是做一些`CURD`的条件,如下图:![CRUD](https://static.acgist.com//resources/images/article/201509/14417682356531007.png)其实非常简单的,主要使用到的一个工具类`Filters`,一看名字就是知道是一个过滤的工具。里面的方法都是静态的,而且都是查询条件使用到的:![Filters](https://static.acgist.com//resources/images/article/201509/14417683049371008.png)至于都是什么意思我就不多解释了。还有排序用的Sorts:![Sorts](https://static.acgist.com//resources/images/article/201509/14417686469351009.png)
Java MongoDB Bson Filters Sorts -
JSON重复key值
JSON如果一个对象包含了两个`key`值一样,那么会发生什么呢?例如:```json{"name":"喻胜","name":"逗比"}```这个解析的结果获取到的`name`值为`逗比`。
JSON -
CSS图片固定百分比宽度等分文本
做了个固定图片百分比宽的,然后右侧有一些列表等分的例子:[http://www.acgist.com/demo/image-text/index.html](http://www.acgist.com/demo/image-text/index.html)主要用到的就是`position:absolute;`这个属性,设置了这个属性的元素就可以获取到父元素的高度,然后就可以使用百分比来调整里面元素的高度了。
CSS 图片文本 -
Bootstrap和modal.js制作确认框confirm
使用`Bootstrap`和`modal.js`制作一个确认框的示例:```javascript$("#confirm").modal({"show":false});$(".btn-delete").click(function(){var$this=$(this);//注意,后面传递的参数不能是$(this);resumeConfirm("删除后该内容将不可恢复,确认删除吗?",function(){$this.addClass("disabled").attr("disabled","disabled");alert("确定删除!");},function(){alert("取消删除!");});});functionresumeConfirm(content,success,cancel){if(!content)content="删除后该内容将不可恢复,确认删除吗?";$("#confirmContent").text(content);$("#confirm").modal("show");$("#confirmSuccess").click(function(){if(success){succ...
Bootstrap modal.js confirm -
Linux zip追加文件
要向一个zip里面添加一个文件,之前想用代码写的,但是都用了Linux,直接用命令来岂不是更帅?使用命令`zip-mzip.zipzip.txt`压缩,但是文件被删除了,那怎么才能把文件添加到压缩包,而文件又不被删除呢?找了半天没发现原来直接使用`zipzip.zipzip.txt`就可以了...更多压缩命令:[http://linuxnote.blog.51cto.com/9876511/1635830](http://linuxnote.blog.51cto.com/9876511/1635830)顺便写了两个批量添加文件到压缩包的脚本:##find```bash#!/bin/shzip_add_file(){forfilenamein`find$1-name*.zip`doif[-f"$filename"];thenecho"压缩$filename"zip"$filename"./t.txtfidone}zip_add_file./test```##ls```bash#!/bin/shzip_add_file(){forfilenamein`ls-A$1`doif[-d"$1/$filename"];t...
Linux zip -
JS拖拽div问题
这里不是来讲拖拽实现的,这里主要讲另外一个小问题,因为之前有一个功能写了下面一段JS:```javascript$(document).mousemove(function(){//...});```看是不起眼的一段代码,却和拖拽的代码冲突了,导致拖动的时候`div`不能跟随鼠标。不过幸好哥阅码无数,分分钟想到了这是一个冒泡的问题,于是乎:```javascript$(document).mousemove(function(e){//...returnfalse;});```拖拽具体实现参考:[http://www.cnblogs.com/dolphinX/p/3290520.htm](http://www.cnblogs.com/dolphinX/p/3290520.htm)
JS拖拽 -
Linux命令之killall
`killall进程名称`可以关闭和这个进程名称相同的所有进程,例如:`killallphp-fpm`,不用再`ps`然后`kill-9`,类似的还有`pkill`命令。
Linux killall pkill kill -
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`伪元素,非常简洁:![列表](https://static.acgist.com/resources/images/article/201508/14393665860961005.png)![列表](https://static.acgist.com/resources/images/article/201508/14393665861751006.png)![列表](https://static.acgist.com/resources/images/article/201508/14393665863001007.png)>注:一定要设置高度,不然不能垂直居中。
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