首页 文章 精选 留言 我的

精选列表

搜索[智能推荐],共10000篇文章
优秀的个人博客,低调大师

推荐 | 7个你最应该知道的机器学习相关github项目

欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习、深度学习的知识! 磐石 目录: 介绍 Person Blocker(人体自动遮挡) AstroNet(天体网络) ANN Visualizer(神经网络可视化) Fast Pandas Tensorflow.js Caffe 64(小巧版caffe) Tensorflow Hub 介绍 GitHub是我生活中不可或缺的一部分!你不仅可以在Github上关注到不同领域的工作,还可以很好的协作处理多个开源项目。包括谷歌和Facebook在内的(几乎)所有科技公司,都会在GitHub上上传他们的开源项目代码,以利于社区发展与大家的进步。 但是,如果你难以找到下面的这几个GitHub,可以持续关注我们的动态,我们每个月都会为你提供排名靠前的那些项目的项目摘要。以便于你可以通过此随时了解领域发展的最新动态,甚至可以直接复制那些项目代码到自己的设备上! 本月的名单包括一些极棒的项目仓库。从谷歌大脑(Google Brain)的AstroNet到人工神经网络可视化工具(ANN Visualizer),我们整理了一个独有的开源项目仓库列表来扩展你对机器学习最新动态的了解与把握。 你准备好了吗?我们来看看上个月的前7名! 你可以查看我们之前整理的top5项目仓库,一月份在这里和二月的在这里。 Person Blocker(人体自动遮挡) 你准备好了吗?我们来看看上个月的前7名! 你可以查看我们之前整理的top5项目仓库,一月份在这里和二月的在这里。 Person Blocker(人体自动遮挡) ‘Person Block’是一个开源python项目。它可以使用预先训练好的神经网络自动遮挡(block)图像里的任何一个人。该算法使用基于MS COCO数据集上预训练的Mask R-CNN模型。更加锦上添花的是?它不需要用GPU!!! 算法不仅仅只可以应用于人体的遮挡(block),而且还可以遮挡其他目标。该算法目前可识别80种不同类型的物体,包括车辆,动物,电子小配件等。 你可以在Analytics Vidhya的博客上阅读更多关于此库的信息。 AstroNet(天体网络) 早在2017年12月,谷歌大脑团队(Google Brain)就透露他们已经应用Astronet发现了2颗新行星-它(Astronet)是处理天文数据的深层神经网络模型。这个巨大的发现深深体现了机器学习给当今世界带来的深远影响!! 如今,Google Brain已经发布了实现该技术的全部代码,并且已经将它提供给所有人。该模型(Astronet)基于卷积神经网络(CNN)。 我们曾在这篇文章中报道过Astronet。 ANN Visualizer(神经网络可视化) ANN Visualizer是一个开源python库。它使我们可以实现使用一行代码就可视化人工神经网络。它可以结合Keras,并利用python的’graphviz’库来创建一个视化神经网络图。 更多细节介绍在这里。 Fast Pandas 任何python初学者都感叹pandas的灵活性和强大功能。作为一名数据科学研究者,你需要考虑从多个角度去解决某个问题。“fast pandas”旨在针对这些情况下的多种可用方法进行基准测试评估(benchmark)。 这是一个非常有用的python库,我们强烈建议你去尝试一下。 TensorFlow.js TensorFlow.js是一个全新开源机器学习框架,可以使用最底层的 Java 线性代数库或最高级的 API 在浏览器上开发机器学习模型。如果你对了解Keras,那么高级神经网络层级API对你来说应该不那么陌生。 TensorFlow.js支持GPU加速,并自动支持WebGL(创建复杂的数据可视化应用)。它允许你在浏览器上训练模型,或以推断模式运行预训练的模型。 在这里有更详细报道。 Caffe64(小巧版caffe) Caffe64是一个简单,小巧但功能非常强大的神经网络库。我们都知道安装神经网络库有多繁琐。根据其开发人员的说法,Caffe64放弃了所有的繁琐工作,并且是“目前最容易编译和最轻量级的神经网络库”。 如果你之前使用过caffe,这对你来说就是小菜一碟! TensorFlow Hub TensorFlow Hub是一个发布、发现和重用TensorFlow中机器学习模块部分的平台。特别是,它使得可以在其他类似的任务中重复使用一个模块(一个TensorFlow的独立片段及其权重)。通过在相关任务上重用模块,你可以实现: 用较小的数据集训练模型 改进泛化 大大加快训练 你以前使用过这些库吗?有什么样的使用感受?请在下面的评论部分告诉我们!(编译自:analyticsvidhya) 本篇文章出自http://www.tensorflownews.com,对深度学习感兴趣,热爱Tensorflow的小伙伴,欢迎关注我们的网站!

优秀的个人博客,低调大师

国内外五款免费的协作类管理软件推荐

Slack Slack是一款国外的内部协作工具,特点是内容强大,为团队沟通交流提供了一个中心化的信息交流平台。它将邮件、IM、短信、企业内网等所有工作中使用的工具所发出的通知都整合到自己的平台,这种将分散的沟通方式聚合到一个统一入口的方法,就非常贴心的免去了频繁切换不同软件带来的时间和精力成本,是一款真正协同的工具。 除了整合沟通方式外,Slack 还整合了文件分享系统,公司内所有共享文件,包括上传到 Slack 上的,还有储存在 Google Doc 或者 Dropbox 里的,通过内置的搜索工具,都能进行全文检索。 Slack同时拥有网页端、Window桌面客户端、iOS和Android应用。根据所享受的功能不同,Slack目前有免费版、标准版和加强版。 Trello Trello的功能设置围绕Borad、List、Card三个层级推进。在看板(board)中可以创建待办事项列表(to do list),如个人事项,团队任务等。可以为list清单添加Card(卡片),包括到期时间、描述、清单、附件、评论等,相当于备注事项。 Trello最大的特色是可视化界面,设计简单明了,层次清晰,而且自定制流程方便,可以按照自己的喜好来设置。 Trello 既可以当做公司的多人协作平台,也可以当做个人的列表管理工具。 目前Trello完全免费。适合 iPhone、iPad、 安卓手机、平板、手表以及 Kindle Fire 平板的应用,还适合任何屏幕尺寸的网络应用。 Leangoo 说完Trello,接下来就说Trello的姐妹Leangoo,二者从界面设计到功能极其类似。不过Leangoo是国内的一款项目协作工具,在习惯上更加适合国人。 和Trello一样,Leangoo的核心也是看板,通过看板可以共享和实时同步团队工作,团队工作同样体现为卡片,内容可以是需求、任务、问题等。 不同的是Leangoo看板上的主要元素包括列表和泳道,列表管理工作的不同阶段或状态,泳道实现任务的分组对应。相对于Trello,leangoo加入了更多敏捷开发中用到的元素,例如任务的点数、Sprint周期、燃尽图等,是一个简洁、可视化的敏捷团队协作工具。 Leangoo提供永久免费的在线版本,企业、个人或其他组织在线注册之后即可免费使用。 禅道 说到国内的协作类工具,就不得不提禅道。禅道是专业的研发项目管理软件,也是国内首家开源的项目管理软件,相对于前面提到的几款,禅道的专业性更突出,它是一款完整覆盖软件研发生命周期的协作工具。 而非简单的任务管理软件。 禅道的特色在于功能完备,它集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体,仅产品管理就包括产品、需求、计划、发布、路线图等功能。可以说,每个功能模块又是一套完整的管理工具。 禅道跟leangoo一样采用敏捷管理方法,在遵循Scrum管理方式基础上,结合国内研发现状,整合了bug管理,测试用例管理,发布管理等功能,使用禅道可以进行项目任务管理,又可以仅作为bug管理或产品管理,甚至个人的事务跟踪管理。 禅道拥有网页端、Window桌面客户端、iOS和Android应用。分为开源版和专业版、企业版三个版本,开源版永久免费,企业版设有非研发人员界面,专业版针对专业研发团队。 然之 说完禅道,接下来说一下出自禅道本家的另一款协作软件——然之协同办公系统。 由于出自同一支研发团队,从产品网站到使用界面都可以看出二者一脉相承的设计风格,同样在功能设置上,然之也是以功能为大,弱化设计,力求简单实用。 然之协同系统的功能模块除了客户管理(crm )、日常办公(oa)、文档管理(doc)、项目管理(pm)团队分享(team)和应用导航(ips)外,比较难能可贵的是加入了现金记账(cash)模块,对于中小企业的现金流管理比较实在,项目管理模块则引入了禅道项目管理的概念,任务,指派,工时统计等大大提高了协作性。 然之同时集成了自主研发的即时聊天工具喧喧,加强了团队内部沟通的即时有效性。总之,然之 是适用于非研发团队的日常办公的一款协作工具。 禅道拥有网页端、Window桌面客户端、iOS和Android应用。分为开源版和专业版本。

优秀的个人博客,低调大师

Elasticsearch之中文分词器插件es-ik(博主推荐)

elasticsearch官方默认的分词插件 1、elasticsearch官方默认的分词插件,对中文分词效果不理想。 比如,我现在,拿个具体实例来展现下,验证为什么,es官网提供的分词插件对中文分词而言,效果差。 [hadoop@HadoopMaster elasticsearch-2.4.3]$ jps 2044 Jps 1979 Elasticsearch [hadoop@HadoopMaster elasticsearch-2.4.3]$ pwd /home/hadoop/app/elasticsearch-2.4.3 [hadoop@HadoopMaster elasticsearch-2.4.3]$curl 'http://192.168.80.10:9200/zhouls/_analyze?pretty=true' -d '{"text":"这里是好记性不如烂笔头感叹号的博客园"}' { "tokens" : [ { "token" : "这", "start_offset" : 0, "end_offset" : 1, "type" : "<IDEOGRAPHIC>", "position" : 0 }, { "token" : "里", "start_offset" : 1, "end_offset" : 2, "type" : "<IDEOGRAPHIC>", "position" : 1 }, { "token" : "是", "start_offset" : 2, "end_offset" : 3, "type" : "<IDEOGRAPHIC>", "position" : 2 }, { "token" : "好", "start_offset" : 3, "end_offset" : 4, "type" : "<IDEOGRAPHIC>", "position" : 3 }, { "token" : "记", "start_offset" : 4, "end_offset" : 5, "type" : "<IDEOGRAPHIC>", "position" : 4 }, { "token" : "性", "start_offset" : 5, "end_offset" : 6, "type" : "<IDEOGRAPHIC>", "position" : 5 }, { "token" : "不", "start_offset" : 6, "end_offset" : 7, "type" : "<IDEOGRAPHIC>", "position" : 6 }, { "token" : "如", "start_offset" : 7, "end_offset" : 8, "type" : "<IDEOGRAPHIC>", "position" : 7 }, { "token" : "烂", "start_offset" : 8, "end_offset" : 9, "type" : "<IDEOGRAPHIC>", "position" : 8 }, { "token" : "笔", "start_offset" : 9, "end_offset" : 10, "type" : "<IDEOGRAPHIC>", "position" : 9 }, { "token" : "头", "start_offset" : 10, "end_offset" : 11, "type" : "<IDEOGRAPHIC>", "position" : 10 }, { "token" : "感", "start_offset" : 11, "end_offset" : 12, "type" : "<IDEOGRAPHIC>", "position" : 11 }, { "token" : "叹", "start_offset" : 12, "end_offset" : 13, "type" : "<IDEOGRAPHIC>", "position" : 12 }, { "token" : "号", "start_offset" : 13, "end_offset" : 14, "type" : "<IDEOGRAPHIC>", "position" : 13 }, { "token" : "的", "start_offset" : 14, "end_offset" : 15, "type" : "<IDEOGRAPHIC>", "position" : 14 }, { "token" : "博", "start_offset" : 15, "end_offset" : 16, "type" : "<IDEOGRAPHIC>", "position" : 15 }, { "token" : "客", "start_offset" : 16, "end_offset" : 17, "type" : "<IDEOGRAPHIC>", "position" : 16 }, { "token" : "园", "start_offset" : 17, "end_offset" : 18, "type" : "<IDEOGRAPHIC>", "position" : 17 } ] } [hadoop@HadoopMaster elasticsearch-2.4.3]$ 总结 如果直接使用Elasticsearch的朋友在处理中文内容的搜索时,肯定会遇到很尴尬的问题——中文词语被分成了一个一个的汉字,当用Kibana作图的时候,按照term来分组,结果一个汉字被分成了一组。 这是因为使用了Elasticsearch中默认的标准分词器,这个分词器在处理中文的时候会把中文单词切分成一个一个的汉字,因此引入es之中文的分词器插件es-ik就能解决这个问题。 如何集成IK分词工具 总的流程如下: 第一步:下载es的IK插件https://github.com/medcl/elasticsearch-analysis-ik/tree/2.x 第二步:使用maven对下载的es-ik源码进行编译(mvn clean package -DskipTests) 第三步:把编译后的target/releases下的elasticsearch-analysis-ik-1.10.3.zip文件拷贝到ES_HOME/plugins/ik目录下面,然后使用unzip命令解压 如果unzip命令不存在,则安装:yum install -y unzip 第四步:重启es服务 第五步:测试分词效果: curl 'http://your ip:9200/zhouls/_analyze?analyzer=ik_max_word&pretty=true' -d '{"text":"这里是好记性不如烂笔头感叹号的博客们"}' 注意:若你是单节点的es集群的话,则只需在一台部署es-ik。若比如像我这里的话,是3台,则需在三台都部署es-ik,且配置要一样。 elasticsearch-analysis-ik-1.10.0.zip 对应于 elasticsearch-2.4.0 elasticsearch-analysis-ik-1.10.3.zip 对应于 elasticsearch-2.4.3 我这里,已经给大家准备好了,以下是我的CSDN账号。下载好了,大家可以去下载。 http://download.csdn.net/detail/u010106732/9890897 http://download.csdn.net/detail/u010106732/9890918 https://github.com/medcl/elasticsearch-analysis-ik/tree/v1.10.0 第一步: 在浏览器里,输入https://github.com/ 第二步:https://github.com/search?utf8=%E2%9C%93&q=elasticsearch-ik 第三步:https://github.com/medcl/elasticsearch-analysis-ik ,点击2.x 。当然也有一些人在用2.4.0版本,都适用。若你是使用5.X,则自己对号入座即可,这个很简单。 第四步:https://github.com/medcl/elasticsearch-analysis-ik/tree/2.x得到 第五步:找到之后,点击,下载,这里选择离线安装。 第六步:将Elasticsearch之中文分词器插件es-ik的压缩包解压下,初步认识下其目录结构,比如我这里放到D盘下来认识下。并为后续的maven编译做基础。 第七步:用本地安装好的maven来编译 Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。 C:\Users\Administrator>cd D:\elasticsearch-analysis-ik-2.x C:\Users\Administrator>d: D:\elasticsearch-analysis-ik-2.x>mvn 得到, D:\elasticsearch-analysis-ik-2.x>mvn clean package -DskipTests [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building elasticsearch-analysis-ik 1.10.4 [INFO] ------------------------------------------------------------------------ Downloading: http://maven.aliyun.com/nexus/content/repositories/central/org/apac he/maven/plugins/maven-enforcer-plugin/1.0/maven-enforcer-plugin-1.0.pom Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/apach e/maven/plugins/maven-enforcer-plugin/1.0/maven-enforcer-plugin-1.0.pom (7 KB at 2.5 KB/sec) Downloading: http://maven.aliyun.com/nexus/content/repositories/central/org/apac he/maven/enforcer/enforcer/1.0/enforcer-1.0.pom Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/apach e/maven/enforcer/enforcer/1.0/enforcer-1.0.pom (12 KB at 19.5 KB/sec) Downloading: http://maven.aliyun.com/nexus/content/repositories/central/org/apac he/maven/maven-parent/17/maven-parent-17.pom Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/apach e/maven/maven-parent/17/maven-parent-17.pom (25 KB at 41.9 KB/sec) Downloading: http://maven.aliyun.com/nexus/content/repositories/central/org/apac he/maven/plugins/maven-enforcer-plugin/1.0/maven-enforcer-plugin-1.0.jar Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/apach e/maven/plugins/maven-enforcer-plugin/1.0/maven-enforcer-plugin-1.0.jar (22 KB a t 44.2 KB/sec) Downloading: http://maven.aliyun.com/nexus/content/repositories/central/org/apac he/maven/plugins/maven-compiler-plugin/3.5.1/maven-compiler-plugin-3.5.1.pom Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/apach e/maven/plugins/maven-compiler-plugin/3.5.1/maven-compiler-plugin-3.5.1.pom (10 KB at 35.3 KB/sec) Downloading: http://maven.aliyun.com/nexus/content/repositories/central/org/apac he/maven/plugins/maven-plugins/28/maven-plugins-28.pom Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/apach e/maven/plugins/maven-plugins/28/maven-plugins-28.pom (12 KB at 42.1 KB/sec) Downloading: http://maven.aliyun.com/nexus/content/repositories/central/org/apac he/maven/maven-parent/27/maven-parent-27.pom Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/apach e/maven/maven-parent/27/maven-parent-27.pom (40 KB at 94.0 KB/sec) Downloading: http://maven.aliyun.com/nexus/content/repositories/central/org/apac he/apache/17/apache-17.pom Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/apach 需要等待一会儿,这个根据自己的网速快慢。 Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/apach e/maven/maven-archiver/2.4/maven-archiver-2.4.jar (20 KB at 19.8 KB/sec) Downloading: http://maven.aliyun.com/nexus/content/repositories/central/org/apac he/maven/shared/maven-repository-builder/1.0-alpha-2/maven-repository-builder-1. 0-alpha-2.jar Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/apach e/maven/maven-project/2.0.4/maven-project-2.0.4.jar (107 KB at 84.7 KB/sec) Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/codeh aus/plexus/plexus-utils/2.0.1/plexus-utils-2.0.1.jar (217 KB at 158.7 KB/sec) Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/apach e/maven/shared/maven-repository-builder/1.0-alpha-2/maven-repository-builder-1.0 -alpha-2.jar (23 KB at 16.4 KB/sec) Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/apach e/maven/maven-model/2.0.4/maven-model-2.0.4.jar (79 KB at 54.3 KB/sec) Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/apach e/maven/maven-artifact/2.0.4/maven-artifact-2.0.4.jar (79 KB at 52.9 KB/sec) [INFO] Reading assembly descriptor: D:\elasticsearch-analysis-ik-2.x/src/main/as semblies/plugin.xml [INFO] Building zip:D:\elasticsearch-analysis-ik-2.x\target\releases\elasticsearch-analysis-ik-1.10.4.zip [INFO] ------------------------------------------------------------------------ [INFO]BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 01:22 min [INFO] Finished at: 2017-02-25T14:48:40+08:00 [INFO] Final Memory: 35M/609M [INFO] ------------------------------------------------------------------------ D:\elasticsearch-analysis-ik-2.x> 成功,得到。 这里,需要本地(即windows系统)里,提前安装好maven,需要来编译。若没安装的博友,请移步,见 Eclipse下Maven新建项目、自动打依赖jar包(包含普通项目和Web项目) 最后得到是, 第八步:将最后编译好的,分别上传到3台机器里。$ES_HOME/plugins/ik目录下,注意需要新建ik目录。 [hadoop@HadoopSlave1 elasticsearch-2.4.3]$ pwd /home/hadoop/app/elasticsearch-2.4.3 [hadoop@HadoopSlave1 elasticsearch-2.4.3]$ ll total 56 drwxrwxr-x. 2 hadoop hadoop 4096 Feb 22 01:37 bin drwxrwxr-x. 3 hadoop hadoop 4096 Feb 22 22:43 config drwxrwxr-x. 3 hadoop hadoop 4096 Feb 22 07:07 data drwxrwxr-x. 2 hadoop hadoop 4096 Feb 22 01:37 lib -rw-rw-r--. 1 hadoop hadoop 11358 Aug 24 2016 LICENSE.txt drwxrwxr-x. 2 hadoop hadoop 4096 Feb 25 05:15 logs drwxrwxr-x. 5 hadoop hadoop 4096 Dec 8 00:41 modules -rw-rw-r--. 1 hadoop hadoop 150 Aug 24 2016 NOTICE.txt drwxrwxr-x. 4 hadoop hadoop 4096 Feb 22 06:02 plugins -rw-rw-r--. 1 hadoop hadoop 8700 Aug 24 2016 README.textile [hadoop@HadoopSlave1 elasticsearch-2.4.3]$cd plugins/ [hadoop@HadoopSlave1 plugins]$ ll total 8 drwxrwxr-x. 5 hadoop hadoop 4096 Feb 22 06:02 head drwxrwxr-x. 8 hadoop hadoop 4096 Feb 22 06:02 kopf [hadoop@HadoopSlave1 plugins]$mkdir ik [hadoop@HadoopSlave1 plugins]$ pwd /home/hadoop/app/elasticsearch-2.4.3/plugins [hadoop@HadoopSlave1 plugins]$ ll total 12 drwxrwxr-x. 5 hadoop hadoop 4096 Feb 22 06:02 head drwxrwxr-x. 2 hadoop hadoop 4096 Feb 25 06:18 ik drwxrwxr-x. 8 hadoop hadoop 4096 Feb 22 06:02 kopf [hadoop@HadoopSlave1 plugins]$cd ik/ [hadoop@HadoopSlave1 ik]$ pwd /home/hadoop/app/elasticsearch-2.4.3/plugins/ik [hadoop@HadoopSlave1 ik]$rz [hadoop@HadoopSlave1 ik]$ ll total 4400 -rw-r--r--. 1 hadoop hadoop 4505518 Jan 15 08:59elasticsearch-analysis-ik-1.10.3.zip [hadoop@HadoopSlave1 ik]$ 第九步:关闭es服务进程 [hadoop@HadoopSlave1 ik]$ jps 1874 Elasticsearch 2078 Jps [hadoop@HadoopSlave1 ik]$ kill -9 1874 [hadoop@HadoopSlave1 ik]$ jps 2089 Jps [hadoop@HadoopSlave1 ik]$ 第十步:使用unzip命令解压,如果unzip命令不存在,则安装:yum install -y unzip。 [hadoop@HadoopSlave1 ik]$unzip elasticsearch-analysis-ik-1.10.3.zip Archive: elasticsearch-analysis-ik-1.10.3.zip inflating: elasticsearch-analysis-ik-1.10.3.jar inflating: httpclient-4.5.2.jar inflating: httpcore-4.4.4.jar inflating: commons-logging-1.2.jar inflating: commons-codec-1.9.jar inflating: plugin-descriptor.properties creating: config/ creating: config/custom/ inflating: config/custom/ext_stopword.dic inflating: config/custom/mydict.dic inflating: config/custom/single_word.dic inflating: config/custom/single_word_full.dic inflating: config/custom/single_word_low_freq.dic inflating: config/custom/sougou.dic inflating: config/IKAnalyzer.cfg.xml inflating: config/main.dic inflating: config/preposition.dic inflating: config/quantifier.dic inflating: config/stopword.dic inflating: config/suffix.dic inflating: config/surname.dic [hadoop@HadoopSlave1 ik]$ ll total 5828 -rw-r--r--. 1 hadoop hadoop 263965 Dec 1 2015 commons-codec-1.9.jar -rw-r--r--. 1 hadoop hadoop 61829 Dec 1 2015 commons-logging-1.2.jar drwxr-xr-x. 3 hadoop hadoop 4096 Jan 1 12:46 config -rw-r--r--. 1 hadoop hadoop 55998 Jan 1 13:27 elasticsearch-analysis-ik-1.10.3.jar -rw-r--r--. 1 hadoop hadoop 4505518 Jan 15 08:59 elasticsearch-analysis-ik-1.10.3.zip -rw-r--r--. 1 hadoop hadoop 736658 Jan 1 13:26 httpclient-4.5.2.jar -rw-r--r--. 1 hadoop hadoop 326724 Jan 1 13:07 httpcore-4.4.4.jar -rw-r--r--. 1 hadoop hadoop 2667 Jan 1 13:27 plugin-descriptor.properties [hadoop@HadoopSlave1 ik]$ 同理,其他两台也是。 第十一步:重启三台机器的es服务进程 其实,若想更具体地,看得,es安装中文分词器es-ik之后,的变化情况,直接,在$ES_HOME下,执行bin/elasticsearch。当然,我这里只是给你展示下而已,还是用bin/elasticsearch -d在后台启动吧! 第十二步:测试,安装了es中文分词插件es-ik之后的对中文分词效果 ik_max_word方式来分词测试 [hadoop@HadoopMaster elasticsearch-2.4.3]$ pwd /home/hadoop/app/elasticsearch-2.4.3 [hadoop@HadoopMaster elasticsearch-2.4.3]$curl 'http://192.168.80.10:9200/zhouls/_analyze?analyzer=ik_max_word&pretty=true' -d '{"text":"这里是好记性不如烂笔头感叹号的博客园"}' { "tokens" : [ { "token" : "这里是", "start_offset" : 0, "end_offset" : 3, "type" : "CN_WORD", "position" : 0 }, { "token" : "这里", "start_offset" : 0, "end_offset" : 2, "type" : "CN_WORD", "position" : 1 }, { "token" : "里", "start_offset" : 1, "end_offset" : 2, "type" : "CN_WORD", "position" : 2 }, { "token" : "好记", "start_offset" : 3, "end_offset" : 5, "type" : "CN_WORD", "position" : 3 }, { "token" : "记性", "start_offset" : 4, "end_offset" : 6, "type" : "CN_WORD", "position" : 4 }, { "token" : "不如", "start_offset" : 6, "end_offset" : 8, "type" : "CN_WORD", "position" : 5 }, { "token" : "烂", "start_offset" : 8, "end_offset" : 9, "type" : "CN_CHAR", "position" : 6 }, { "token" : "笔头", "start_offset" : 9, "end_offset" : 11, "type" : "CN_WORD", "position" : 7 }, { "token" : "笔", "start_offset" : 9, "end_offset" : 10, "type" : "CN_WORD", "position" : 8 }, { "token" : "头", "start_offset" : 10, "end_offset" : 11, "type" : "CN_CHAR", "position" : 9 }, { "token" : "感叹号", "start_offset" : 11, "end_offset" : 14, "type" : "CN_WORD", "position" : 10 }, { "token" : "感叹", "start_offset" : 11, "end_offset" : 13, "type" : "CN_WORD", "position" : 11 }, { "token" : "叹号", "start_offset" : 12, "end_offset" : 14, "type" : "CN_WORD", "position" : 12 }, { "token" : "叹", "start_offset" : 12, "end_offset" : 13, "type" : "CN_WORD", "position" : 13 }, { "token" : "号", "start_offset" : 13, "end_offset" : 14, "type" : "CN_CHAR", "position" : 14 }, { "token" : "博客园", "start_offset" : 15, "end_offset" : 18, "type" : "CN_WORD", "position" : 15 }, { "token" : "博客", "start_offset" : 15, "end_offset" : 17, "type" : "CN_WORD", "position" : 16 }, { "token" : "园", "start_offset" : 17, "end_offset" : 18, "type" : "CN_CHAR", "position" : 17 } ] } [hadoop@HadoopMaster elasticsearch-2.4.3]$ [hadoop@HadoopMaster elasticsearch-2.4.3]$curl 'http://192.168.80.10:9200/zhouls/_analyze?analyzer=ik_max_word&pretty=true' -d '{"text":"我们是大数据开发技术人员"}' { "tokens" : [ { "token" : "我们", "start_offset" : 0, "end_offset" : 2, "type" : "CN_WORD", "position" : 0 }, { "token" : "大数", "start_offset" : 3, "end_offset" : 5, "type" : "CN_WORD", "position" : 1 }, { "token" : "数据", "start_offset" : 4, "end_offset" : 6, "type" : "CN_WORD", "position" : 2 }, { "token" : "开发", "start_offset" : 6, "end_offset" : 8, "type" : "CN_WORD", "position" : 3 }, { "token" : "发", "start_offset" : 7, "end_offset" : 8, "type" : "CN_WORD", "position" : 4 }, { "token" : "技术人员", "start_offset" : 8, "end_offset" : 12, "type" : "CN_WORD", "position" : 5 }, { "token" : "技术", "start_offset" : 8, "end_offset" : 10, "type" : "CN_WORD", "position" : 6 }, { "token" : "人员", "start_offset" : 10, "end_offset" : 12, "type" : "CN_WORD", "position" : 7 } ] } [hadoop@HadoopMaster elasticsearch-2.4.3]$ 可以看出,成功分词了且效果更好! 其实,啊,为什么“是”没有了呢?是因为es的中文分词器插件es-ik的过滤停止词的贡献!请移步,如下 Elasticsearch之IKAnalyzer的过滤停止词 es官方文档提供的ik_max_word和ik_smart解释 https://github.com/medcl/elasticsearch-analysis-ik/tree/2.x ik_smart方式来分词测试 [hadoop@HadoopMaster elasticsearch-2.4.3]$ curl 'http://192.168.80.10:9200/zhouls/_analyze?analyzer=ik_smart&pretty=true' -d '{"text":"这里是好记性不如烂笔头感叹号的博客园"}' { "tokens" : [ { "token" : "这里是", "start_offset" : 0, "end_offset" : 3, "type" : "CN_WORD", "position" : 0 }, { "token" : "好", "start_offset" : 3, "end_offset" : 4, "type" : "CN_CHAR", "position" : 1 }, { "token" : "记性", "start_offset" : 4, "end_offset" : 6, "type" : "CN_WORD", "position" : 2 }, { "token" : "不如", "start_offset" : 6, "end_offset" : 8, "type" : "CN_WORD", "position" : 3 }, { "token" : "烂", "start_offset" : 8, "end_offset" : 9, "type" : "CN_CHAR", "position" : 4 }, { "token" : "笔头", "start_offset" : 9, "end_offset" : 11, "type" : "CN_WORD", "position" : 5 }, { "token" : "感叹号", "start_offset" : 11, "end_offset" : 14, "type" : "CN_WORD", "position" : 6 }, { "token" : "博客园", "start_offset" : 15, "end_offset" : 18, "type" : "CN_WORD", "position" : 7 } ] } [hadoop@HadoopMaster elasticsearch-2.4.3]$ [hadoop@HadoopMaster elasticsearch-2.4.3]$ curl 'http://192.168.80.10:9200/zhouls/_analyze?analyzer=ik_smart&pretty=true' -d '{"text":"我们是大数据开发技术人员"}' { "tokens" : [ { "token" : "我们", "start_offset" : 0, "end_offset" : 2, "type" : "CN_WORD", "position" : 0 }, { "token" : "大", "start_offset" : 3, "end_offset" : 4, "type" : "CN_CHAR", "position" : 1 }, { "token" : "数据", "start_offset" : 4, "end_offset" : 6, "type" : "CN_WORD", "position" : 2 }, { "token" : "开发", "start_offset" : 6, "end_offset" : 8, "type" : "CN_WORD", "position" : 3 }, { "token" : "技术人员", "start_offset" : 8, "end_offset" : 12, "type" : "CN_WORD", "position" : 4 } ] } [hadoop@HadoopMaster elasticsearch-2.4.3]$ 本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/6440373.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

《软件设计精要与模式》第二版推荐序四

胡铭娅 IT168技术频道资深编辑 微软最有价值专家(MVP) 有人总喜欢拿“软件危机”说事——我们总是无法足够快、足够低成本或足够好地开发软件。软件开发确实非常复杂。那么软件成本是否缘于其复杂性?其实,很多时候软件成本高的原因来自于使用了错误的行为来管理软件的高成本。一个架构图可能非常有帮助,而缺乏优秀的设计,软件开发就会陷入混乱。设计模式是针对面向对象设计过程中反复出现的问题的解决方案,必须经过反复分析,才能确保正确性。就如同任何数学方面的分析,你需要图标和公式,而且你需要展示你的工作。软件设计不需要故弄玄虚,而需要务实。 软件设计模式与实践的相关会议每年都会吸引众多业界享有盛誉的大师级人物参加,更有众多来自顶尖软件开发企业的技术决策者与资深架构师参与。由此,软件模式也成为近几年全球软件业最为关注的高端话题,该领域的每一项重大研究成果与突破都会为全球软件产业带来革命性的变化。 回想最初接手IT168的.NET技术频道时,博览国内众多技术人员网站及博客,张逸先生的博客便跃然眼前。面对这样一个优秀架构师所设计的模块结构和编写的代码,直观地彰显了设计之美,其深厚的技术功底更是不言而喻。之后几年的合作当中,张逸先生的稿件总是优质的,被广大网友所乐道,因此也成为了我的优秀作者。 “设计没有标准,只有目标。如果硬要制定一个标准,那么标准就是快捷、适用与优雅。对于软件设计而言,满足客户需求的设计就是最好的标准!然而,前提是怎样通过设计来满足客户需求?”张逸先生将软件设计理论与项目实践完美地结合起来得出《软件设计精要与模式》,后来更是精益求精,得出第2版。不要再去苦恼那些理论研究的空泛,相信这本书可以帮助找到你的软件设计之道。 本文转自wayfarer51CTO博客,原文链接:http://blog.51cto.com/wayfarer/283559,如需转载请自行联系原作者

优秀的个人博客,低调大师

《软件设计精要与模式》第二版推荐序二

InfoQ中文站(infoq.com/cn)总编辑霍泰稳 在InfoQ中文站.NET社区首席编辑朱永光介绍张逸,并希望邀请其加入编辑团队之后,我特别在网上找到张逸的相关资料研读,并粗略翻阅了他的著作《软件设计精要与模式》及译著《WCF服务编程》。一番考察之后,认为其符合InfoQ编辑人员所必备的两个特点:态度认真和技术扎实,然后郑重向其发出邀请。最终,张逸答应了我们的邀请,而我也为能和这样一位优秀的架构师合作而荣幸。通过其在InfoQ中文站上发表的作品,我和永光均为当初的决定欣慰,而张逸的作品也让网站.NET社区的内容更加充实。 很长一段时间以来,与模式相关的话题都特别引人注目。在去年InfoQ中文站举办的QCon北京大会上,来自知名网站eBay的架构师Randy Shoup介绍了eBay架构设计过程中的经验,场面之热烈,让很多参会者现在依然记忆犹新。今年Jolt图书大奖获得者Michael Nygard会带来他在系统设计过程中的反模式,虽未开场,已有多位朋友表示对此非常期待。诚然,在软件研发过程中,要找到一劳永逸的“银弹”并非易事,但类如“模式”和“反模式”这也的经验总结总会给后来者一些启发。 每个软件系统都有其独特的一面,研发所用的技术或者平台也多有不同,但仔细考察其背后的设计思想,总能发现几丝共性。而正是这些共性经过抽象之后,形成模式,然后被后来者不断传承和演进,使得我们的软件系统愈加庞大和健壮。希望通过本书,读者能够了解作者张逸对技术的真诚,也能够帮助自己在软件设计的道路上找到知音和共鸣。 本文转自wayfarer51CTO博客,原文链接:http://blog.51cto.com/wayfarer/280142,如需转载请自行联系原作者

优秀的个人博客,低调大师

Elasticsearch之四种查询类型和搜索原理(博主推荐)

Elasticsearch Client发送搜索请求,某个索引库,一般默认是5个分片(shard)。 它返回的时候,由各个分片汇总结果回来。 官网API https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.4/index.html es 在查询时, 可以指定搜索类型为下面四种: QUERY_THEN_FETCH QUERY_AND_FEATCH DFS_QUERY_THEN_FEATCH DFS_QUERY_AND_FEATCH 那么这 4 种搜索类型有什么区别? 在讲这四种搜索类型的区别之前, 先分析一下分布式搜索背景介绍: ES 天生就是为分布式而生, 但分布式有分布式的缺点。 比如要搜索某个单词, 但是数据却分别在 5 个分片(Shard)上面, 这 5 个分片可能在 5 台主机上面。 因为全文搜索天生就要排序( 按照匹配度进行排名) ,但数据却在 5 个分片上, 如何得到最后正确的排序呢?ES是这样做的, 大概分两步: step1、 ES 客户端将会同时向 5 个分片发起搜索请求。 step2、 这 5 个分片基于本分片的内容独立完成搜索, 然后将符合条件的结果全部返回。 客户端将返回的结果进行重新排序和排名,最后返回给用户。也就是说,ES的一次搜索,是一次scatter/gather过程(这个跟mapreduce也很类似) 然而这其中有两个问题:第一、 数量问题。 比如, 用户需要搜索"衣服", 要求返回符合条件的前 10 条。 但在 5个分片中, 可能都存储着衣服相关的数据。 所以 ES 会向这 5 个分片都发出查询请求, 并且要求每个分片都返回符合条件的 10 条记录。当ES得到返回的结果后,进行整体排序,然后取最符合条件的前10条返给用户。 这种情况, ES 中 5 个 shard 最多会收到 10*5=50条记录, 这样返回给用户的结果数量会多于用户请求的数量。第二、 排名问题。 上面说的搜索, 每个分片计算符合条件的前 10 条数据都是基于自己分片的数据进行打分计算的。计算分值使用的词频和文档频率等信息都是基于自己分片的数据进行的, 而 ES 进行整体排名是基于每个分片计算后的分值进行排序的(相当于打分依据就不一样, 最终对这些数据统一排名的时候就不准确了), 这就可能会导致排名不准确的问题。如果我们想更精确的控制排序, 应该先将计算排序和排名相关的信息( 词频和文档频率等打分依据) 从 5 个分片收集上来, 进行统一计算, 然后使用整体的词频和文档频率为每个分片中的数据进行打分, 这样打分依据就一样了。 Elasticsearch在搜索过程中存在以下几个问题: (1)返回数据量问题 如果数据分散在默认的5个分片上,ES会向5个分片同时发出请求,每个分片都返回10条数据,最终会返回总数据为:5 * 10 = 50条数据,远远大于用户请求。 (2)返回数据排名问题 每个分片计算符合条件的前10条数据都是基于自己分片的数据进行打分计算的。计算分值(score)使用的词频和文档频率等信息都是基于自己分片的数据进行的,而ES进行整体排名是基于排名是基于每个分片计算后的分值进行排序的(打分依据就不一致,最终对这些数据统一排名的时候就不准确了) ============================================================================= 再举个例子解释一下【 排名问题】: 假设某学校有一班和二班两个班级。 期末考试之后, 学校要给全校前十名学员发奖金。 但是一班和二班考试的时候使用的不是一套试卷。 一班: 使用的是 A 卷【 A 卷偏容易】 二班: 使用的是 B 卷【 B 卷偏难】 结果就是一班的最高分是 100 分, 最低分是 80 分。 二班的最高分是 70 分, 最低分是 30 分。 这样全校前十名就都是一班的学员了。 这显然是不合理的。 因为一班和二班的试卷难易程度不一样, 也就是打分依据不一样, 所以不能放在一块排名。 【 这个就解释了刚才的排名问题】 如果想要保证排名准确的话, 需要保证一班和二班使用的试卷内容一样。 可以这样做, 把 A 卷和 B 卷的内容组合到一块, 作为 C 卷。 一班和二班考试都使用 C 卷, 这样他们的打分依据就一样了, 最终再根据所有学员的成绩排 名求前十名就准确合理了。 ============================================================================= 这两个问题, ES 也没有什么较好的解决方法, 最终把选择的权利交给用户, 方法就是在搜索的时候指定 search type。 Elasticsearch在搜索问题的解决思路 (1)返回数据数量问题 第一步:先从每个分片汇总查询的数据id,进行排名,取前10条数据 第二步:根据这10条数据id,到不同分片获取数据 (2)返回数据排名问题 将各个分片打分标准统一 Elasticsearch的搜索类型(SearchType类型) 1、 query and fetch 向索引的所有分片 ( shard)都发出查询请求, 各分片返回的时候把元素文档 ( document)和计算后的排名信息一起返回。 这种搜索方式是最快的。 因为相比下面的几种搜索方式, 这种查询方法只需要去 shard查询一次。 但是各个 shard 返回的结果的数量之和可能是用户要求的 size 的 n 倍。优点:这种搜索方式是最快的。因为相比后面的几种es的搜索方式,这种查询方法只需要去shard查询一次。缺点:返回的数据量不准确, 可能返回(N*分片数量)的数据并且数据排名也不准确,同时各个shard返回的结果的数量之和可能是用户要求的size的n倍。 2、 query then fetch( es 默认的搜索方式) 如果你搜索时, 没有指定搜索方式, 就是使用的这种搜索方式。 这种搜索方式, 大概分两个步骤: 第一步, 先向所有的 shard 发出请求, 各分片只返回文档 id(注意, 不包括文档 document)和排名相关的信息(也就是文档对应的分值), 然后按照各分片返回的文档的分数进行重新排序和排名, 取前 size 个文档。 第二步, 根据文档 id 去相关的 shard 取 document。 这种方式返回的 document 数量与用户要求的大小是相等的。 优点: 返回的数据量是准确的。 缺点: 性能一般,并且数据排名不准确。 3、 DFS query and fetch 这种方式比第一种方式多了一个 DFS 步骤,有这一步,可以更精确控制搜索打分和排名。也就是在进行查询之前, 先对所有分片发送请求, 把所有分片中的词频和文档频率等打分依据全部汇总到一块, 再执行后面的操作、 优点: 数据排名准确 缺点: 性能一般 返回的数据量不准确, 可能返回(N*分片数量)的数据 4、 DFS query then fetch 比第 2 种方式多了一个 DFS 步骤。 也就是在进行查询之前, 先对所有分片发送请求, 把所有分片中的词频和文档频率等打分依据全部汇总到一块, 再执行后面的操作、 优点: 返回的数据量是准确的 数据排名准确缺点: 性能最差【 这个最差只是表示在这四种查询方式中性能最慢, 也不至于不能忍受,如果对查询性能要求不是非常高, 而对查询准确度要求比较高的时候可以考虑这个】 DFS 是一个什么样的过程? 从 es 的官方网站我们可以发现, DFS 其实就是在进行真正的查询之前, 先把各个分片的词频率和文档频率收集一下, 然后进行词搜索的时候, 各分片依据全局的词频率和文档频率进行搜索和排名。 显然如果使用 DFS_QUERY_THEN_FETCH 这种查询方式, 效率是最低的,因为一个搜索, 可能要请求 3 次分片。 但, 使用 DFS 方法, 搜索精度是最高的。 总结一下, 从性能考虑 QUERY_AND_FETCH 是最快的, DFS_QUERY_THEN_FETCH 是最慢的。从搜索的准确度来说, DFS 要比非 DFS 的准确度更高。 关于es的四种查询API编程,请见我下面写的博客 本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/6438352.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

推荐Java五大微服务器及其代码示例教程

微服务越来越多地用于开发领域,因为开发人员致力于创建更大,更复杂的应用程序,这些应用程序作为较小的服务组合而更好地开发和管理,可将工作在一起,实现更大的应用程序范围的功能。工具正在上升,以满足使用逐块方法思考和构建应用程序的需求,与同时考虑整个应用程序相比。下面为大家讲述一下Java五大微服务器,使用这些功能的好处以及相关的代码示例。 什么是微服务 微服务是一种面向服务的架构风格(Java开发人员最重要的技能之一),其中应用程序被构建为不同的小型服务而不是整个应用程序的集合。您可以使用多个独立的应用程序来独立运行,并且可以使用不同的编码或编程语言来创建。大而复杂的应用程序可以由可自行执行的更简单和独立的程序组成。这些较小的程序组合在一起,以提供大型单片应用程序的所有功能。 微服务捕获用户的业务场景,它通常由只有少数成员的工程团队开发,可以用任何编程语言编写并且可以使用任何框架。每个涉及的程序都是独立版本化,执行和缩放。这些微服务器可以与其他微服务器交互,并且可以具有唯一的URL或名称,同时即使遇到故障时始终可用和一致。 微服务的好处是什么? 使用微服务使得较小的应用程序不依赖于相同的编码语言,开发人员可以使用他们最熟悉的编程语言。这有助于开发人员以更低的成本和更少的错误更快地提出一个程序。灵活性和低成本也可以来自于将这些较小的程序重用于其他项目,从而使其更有效率。 Java的微服务框架示例 可用于开发Java的微服务框架,其中包括如下: Spring Boot:这可能是最好的Java微服务框架,它可以用于反转控制,面向对象编程等语言。 Jersey :开源框架支持Java中的JAX-RS API非常容易使用。 Swagger:帮助用户记录API,并为用户提供开发门户,允许用户测试API。 用户还可以考虑的其他内容包括:Dropwizard,Ninja Web Framework,Play Framework,RestExpress,Restlet,Restx和Spark Framework。 如何使用Microservices With Spring Boot创建 Spring Boot使用户可以通过嵌入式服务器将Java应用程序与自己的应用程序一起使用。不必再使用其他Java EE容器。 Spring Boot项目包括: 1) Spring IO平台:版本化应用程序的企业级分发 2) Spring框架:用于事务管理,依赖注入,数据访问,消息传递和Web应用程序 3) Spring Cloud:用于分布式系统,用于构建或部署您的微服务器 4) Spring数据:对于与数据访问相关的微服务,无论是映射减少,关系还是非关系 5) Spring Batch:用于批处理作业等操作 6) Spring Security:用于授权和身份验证支持 7) Spring REST文档:用于记录RESTful服务 8) Spring Social:用于连接社交媒体API 9) Spring Mobile:适用于移动网络应用 快速搭建Spring Boot框架,参考示例代码: importorg.springframework.boot.*; importorg.springframework.boot.autoconfigure.*; importorg.springframework.stereotype.*; importorg.springframework.web.bind.annotation.*; @RestController @EnableAutoConfiguration publicclassExample{ @RequestMapping("/") Stringhome(){ return"HelloWorld!"; } publicstaticvoidmain(String[]args)throwsException{ SpringApplication.run(Example.class,args); } } Jersey Jersey RESTful框架是开源的,它基于JAX-RS规范。Jersey应用程序可以扩展现有的JAX-RS实现并添加功能和实用程序,使RESTful服务更简单,并使客户端开发变得更加轻松。 Jersey最好的一点是它有很好的文档,完善的案例。性能方面快捷并且路由简单,参考示例代码: packageorg.glassfish.jersey.examples.helloworld; importjavax.ws.rs.GET; importjavax.ws.rs.Path; importjavax.ws.rs.Produces; @Path("helloworld") publicclassHelloWorldResource{ publicstaticfinalStringCLICHED_MESSAGE="HelloWorld!"; @GET @Produces("text/plain") publicStringgetHello(){ returnCLICHED_MESSAGE; } } Jersey 非常容易与其他libraries一起使用,如Netty或Grizzly,支持异步连接不需要servlet容器,然而它有一个不依赖注入的实现。 Play Framework Play Framework为用户提供了使用Scala和Java构建,创建和部署Web应用程序的更加简单的方法。Play Framework是RESTful应用程序的理想选择,需要您并行处理远程调用。它也非常模块化,支持异步。Play Framework也是所有微服务框架中最大的社区之一。 参考示例代码: packagecontrollers; importplay.mvc.*; publicclassApplicationextendsController{ publicstaticvoidindex(){ render(); } publicstaticvoidsayHello(StringmyName){ render(myName); } } Restlet Restlet帮助开发人员创建遵循RESTful架构模式的快速和可扩展的Web API。它具有良好的路由和过滤功能,可用于Java SE/EE,OSGi,Google AppEngine(Google Compute部分),Android和其他主要平台。 参考示例代码: packagefirstSteps; importorg.restlet.resource.Get; importorg.restlet.resource.ServerResource; /** *Resourcewhichhasonlyonerepresentation. */ publicclassHelloWorldResourceextendsServerResource{ @Get publicStringrepresent(){ return"hello,world"; } } DropWizard DropWizard将成熟稳定的Java库集成在轻量级包中,可用于自己的应用程序。它使用Jetty for HTTP,Jersey for REST和Jackson for JSON,以及Metrics,Guava,Logback,Hibernate Validator,Apache HttpClient,Liquibase,Mustache,Joda Time和Freemarker。 您可以使用Maven设置Dropwizard应用程序在pom.xml文件中,使用最新版本的DropWizard添加一个dropwizard.version属性 <properties> <dropwizard.version>LATESTVERSION</dropwizard.version> </properties> <!--Thenlistthedropwizard-corelibrary:--> <dependencies> <dependency> <groupId>io.dropwizard</groupId> <artifactId>dropwizard-core</artifactId> <version>${version}</version> </dependency> </dependencies> Maven项目设置完成后,可以创建配置类,应用程序类,表示类,资源类或运行状况检查,还可以构建Fat JARS,然后运行应用程序。 在此链接中查看Dropwizard用户手册,GitHub地址:https://github.com/dropwizard/dropwizard,参考示例代码: packagecom.example.helloworld; importcom.yammer.dropwizard.config.Configuration; importcom.fasterxml.jackson.annotation.JsonProperty; importorg.hibernate.validator.constraints.NotEmpty; publicclassHelloWorldConfigurationextendsConfiguration{ @NotEmpty @JsonProperty privateStringtemplate; @NotEmpty @JsonProperty privateStringdefaultName="Stranger"; publicStringgetTemplate(){ returntemplate; } publicStringgetDefaultName(){ returndefaultName; } } 本文作者:佚名 来源:51CTO

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册