2017-12-11 05:53:54

Elasticsearch The number of object passed must be even but was [1]

新版的elasticsearch 在调用setSource的时候传入json字符串、对象后都会爆:The number of object passed must be even but was [1].其实是新版需要传入Map类型。 使用fastjson转换成Map对象 Map data = JSONObject.parseObject((String) doc.get("json"), Map.class); 使用自带的XContentParser XContentParser parser = XContentFactory.xContent(XContentType.JSON). createParser(NamedXContentRegistry.EMPTY, json); 然后在setSource时转换成Map类型: .setSource(parser.map())

2017-11-06 08:20:13

Proxifier Mac和Windows全局代理

有很多时候我们利用ShadowsocksX或者SSH隧道打开代理后发现Mac和windows都无法全流量代理。Proxifier只需要简单的配置就可以支持全局的流量代理。 首先需要利用SSH隧道或者ShadowsocksX先在本地开发一个Socket代理(监听一个用于本机代理的socket端口)。 Mac版本配置 如果要使用mac下的ssh代理隧道,在控制台执行如下命令:ssh -nNTf -D 1080 root@123.123.123.123 (123.123.123.123是你的远程linux服务器地址)。如果用ShadowsocksX直接配置好ss服务器代理就可以了。 点击Proxies添加一个Socket5代理,如图: 设置代理规则(Applications可以选择你想要代理的应用,默认是任何的mac应用): action选择前面配置好的Socket5代理。 Windows版本 Windows版本配置过于简单,启动好ShadowsocksX或者ssh代理后直接添加代理就可以了。 Mac版:Proxifier+for+Mac+2.15.3.dmg (安装密码www.ifunmac.com) Windows汉化版:HA-Proxifier331-LDR.rar

2017-11-06 06:38:18

gitlab迁移遇到的版本不一致和无法导入问题

Gitlab恢复数据时提示备份版本和当前版本不匹配时无法导入? 这个时候需要卸载掉当前服务器安装的gitlab版本,并下载备份时的gitlab版本并重新安装(清华的tuna项目有所有的gitlab版本备份,下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/) 这里需要根据当前的操作系统类型选择e16或者e17,(centos 64bit是e16,centos7是 e17。如果不清楚具体是什么执行uname -a就知道了)。 下载完对应版本的rpm包后直接安装并再次导入备份文件即可。 "gitlab undefined method `full_path'" 遇到这个问题是因为数据库里有一个未删除的仓库记录而备份文件中并不存在此仓库,这时候直接注释掉:/opt/gitlab/embedded/service/gitlab-rails/lib/backup/repository.rb文件的78行: #project.ensure_storage_path_exists 然后执行: gitlab-ctl reconfigure gitlab-ctl restart gitlab-rake gitlab:backup:restore BACKUP=XXXXXX 等待命令执行完成即可成功恢复数据了

2017-04-08 16:18:15

IDEA 由数据库表生成带注释的java实体类代码

Java生成实体类代码有非常多的方案,而且强大的可以生成整个项目的解决方案,不过这里只是讨论实体类的生成。IDEA提供了类似的实体类生成脚本,用起来比较方便简捷。不过需要用IDEA支持的jvm脚本语言开发(默认示例是Clojure、Groovy)。 但是自带的脚本简单到生成的代码都没法用(有bug),所以花了点时间完善了下脚本实现代码,这里简单介绍下如何使用我们的脚本去生成java实体类代码。 连接数据库: 配置数据库连接信息,如果没有下载过jdbc的jar,这里需要点击download 找到IDEA的脚本扩展目录: 在这个脚本目录下新建Generate Entitys.groovy并复制如下代码 Generate Entitys.groovy: import com.intellij.database.model.DasTable import com.intellij.database.model.ObjectKind import com.intellij.database.util.Case import com.intellij.database.util.DasUtil /* * 默认可用的 context 绑定: * SELECTION Iterable* PROJECT project * FILES fi

2017-03-18 16:40:41

fastjson 远程代码执行漏洞

最近发现fastjson在1.2.24以及之前版本存在远程代码执行高危安全漏洞,为了保证系统安全,请升级到1.2.28/1.2.29或者更新版本。 官方公告:https://github.com/alibaba/fastjson/wiki/security_update_20170315 这个可能存在的远程代码执行漏洞产生的原因是fastjson反序列化json字符串为java对象的时候autoType没有正确的检测处理。 参照:https://github.com/alibaba/fastjson/commit/d52085ef54b32dfd963186e583cbcdfff5d101b5 触发漏洞需要构造一个特殊的json对象,这种应用场景多出现在C/S接口交互。公告中说道:"安全升级包禁用了部分autotype的功能,也就是"@type"这种指定类型的功能会被限制在一定范围内使用。" 当反序列化一个特殊的json字符串为java对象时可以实例化”任意“(有几个类如Thread在黑名单除外)的java对象并调用部分的java方法。 比如序列号如下json字符串(键包含了"@type" JsonTypeInfo类中的注解)时,fastjson会创建一个java对象实例: String json = "{\&q

2017-03-06 12:24:30

Struts2 S2-045 远程OGNL表达式执行漏洞

Struts2在解析请求的时候会主动把MULTIPART请求给解析成参数,这里的MULTIPART请求被解析了两遍。一遍是框架解析的,另一遍是那个自带的插件解析的。两个地方判断是否是文件上传请求的时候的代码不一致,导致了error。 Struts2的验证是否是MULTIPART的方式:  FileUploadBase验证方式: 简单的说就是Struts2的开发者判断是否是MULTIPART方式是如果字符串里面包含了multipart/form-data就认为是,而后面的FileUploadBase判断是字符串里面必须是以multipart/form-data开头的请求才认为是文件上传。如果把FileUploadBase的判断MULTIPART的时候方法换成Dispatcher类的content_type.contains("multipart/form-data")就不会触发这个error了。而这个error中的异常信息最终会被拿去当ognl表达式执行。这种神逻辑其实算起来跟上次的springboot的表达式注入漏洞差不多,因为异常导致的表达式注入。 官方的修复方式代码替换掉了LocalizedTextUtil.findText: 

2016-12-28 19:34:33

Elasticsearch 2.X

elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。使用elasticsearch可以快速的构建一个全文检索集群帮助你实时搜索。 一、安装环境 JDK环境安装 Elasticsearch 默认需要安装jdk1.7+版本,首先需要下载 jdk7 选择与当前操作系统相适应的JDK版本下载Java SE Development Kit(JDK). Linux: 选择Accept License Agreement,然后登陆Oracle账号就可以下载目前JDK7最新版的jdk-7u80-linux-x64.rpm 安装: rpm -ivh jdk-7u80-linux-x64.rpm 环境变量: vim ~/.bash_profile 在文件末尾添加 export JAVA_HOME=/usr/java/jdk1.7.0_80 export CLASS_PATH=./:$JAVA_HOME/lib export PATH=$PATH:$JAVA_HOME/bin Windows: 根据操作操作系统位数选择对应的版本,这里下载jdk-7u80-windows-x64.exe进行安装. 安装好JDK后需要再配置环境变量,右键我的电脑->属性->高级->环境变量 新建变量: 1. JAVA_H

2016-12-28 19:15:05

Elasticsearch 1.X

这个文档大约2014年在写的,只是修改了下版本号,这个文档写的非常简单,后面有空再发。 elasticsearch和solr都非常适合拿来做分布式全文索引,可以轻松的处理海量数据。 最近一年也没咋发文章,攒了很多都被弄丢掉了... elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。使用elasticsearch可以快速的构建一个全文检索集群帮助你实时搜索。 一、下载安装 wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.7.3.zip unzip elasticsearch-1.7.3.zip cp elasticsearch-1.7.3 elasticsearch-1.7.3-2 单机配置: 启动: ./bin/elasticsearch(windows下双击elasticsearch.bat) 后台方式启动: ./bin/elasticsearch -d 启动成功后会监听:9200(web api端)、9300(socket api)、54328(zen discovery udp广播) 二:中文分词 在默认情况下elasticsearch是不支持中文分词的,所以需要

2016-12-26 09:36:36

2016-12-25 10:37:24