首页 文章 精选 留言 我的

精选列表

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

编写灵活、稳定、高质量的CSS代码的规范(推荐收藏)

一、唯一定律 无论有多少人共同参与同一项目,一定要确保每一行代码都像是唯一个人编写的。 二、HTML 2.1 语法 (1)用两个空格来代替制表符(tab) -- 这是唯一能保证在所有环境下获得一致展现的方法。 (2)嵌套元素应当缩进一次(即两个空格)。 (3)对于属性的定义,确保全部使用双引号,绝不要使用单引号。 (4)不要在自闭合(self-closing)元素的尾部添加斜线 -- HTML5 规范中明确说明这是可选的。 (5)不要省略可选的结束标签(closing tag)(例如,</li> 或 </body>)。 2.2 Example 三、HTML5 doctype 为每个 HTML 页面的第一行添加标准模式(standard mode)的声明,这样能够确保在每个浏览器中拥有一致的展现。 四、语言属性 根据 HTML5 规范: 强烈建议为 html 根元素指定 lang 属性,从而为文档设置正确的语言。这将有助于语音合成工具确定其所应该采用的发音,有助于翻译工具确定其翻译时所应遵守的规则等等。 五、IE 兼容模式 IE 支持通过特定的 <meta> 标签来确定绘制当前页面所应该采用的 IE 版本。除非有强烈的特殊需求,否则最好是设置为 edge mode,从而通知 IE 采用其所支持的最新的模式。 六、字符编码 通过明确声明字符编码,能够确保浏览器快速并容易的判断页面内容的渲染方式。这样做的好处是,可以避免在 HTML 中使用字符实体标记(character entity),从而全部与文档编码一致(一般采用 UTF-8 编码)。 七、引入 CSS 和 JavaScript 文件 根据 HTML5 规范,在引入 CSS 和 JavaScript 文件时一般不需要指定 type 属性,因为 text/css 和 text/javascript 分别是它们的默认值。 八、实用为王 尽量遵循 HTML 标准和语义,但是不要以牺牲实用性为代价。任何时候都要尽量使用最少的标签并保持最小的复杂度。 九、属性顺序 9.1 从大到小 HTML 属性应当按照以下给出的顺序依次排列,确保代码的易读性。 (1)class (2)id, name (3)data-* (4)src, for, type, href, value (5)title, alt (6)role, aria-* 9.2 Example 9.3 说明 class 用于标识高度可复用组件,因此应该排在首位。id 用于标识具体组件,应当谨慎使用(例如,页面内的书签),因此排在第二位。 十、布尔(boolean)型属性 10.1 注意 (1)布尔型属性可以在声明时不赋值。XHTML 规范要求为其赋值,但是 HTML5 规范不需要。 (2)元素的布尔型属性如果有值,就是 true,如果没有值,就是 false。 (3)如果属性存在,其值必须是空字符串或 [...] 属性的规范名称,并且不要在首尾添加空白符。 简单来说,就是不用赋值。 10.2 Example 十一、减少标签的数量 编写 HTML 代码时,尽量避免多余的父元素。很多时候,这需要迭代和重构来实现。 十二、减少 JavaScript 生成的标签 通过 JavaScript 生成的标签让内容变得不易查找、编辑,并且降低性能。能避免时尽量避免。 编写灵活、稳定、高质量的CSS代码的规范 一、语法 1.1 注意 (1)用两个空格来代替制表符(tab) -- 这是唯一能保证在所有环境下获得一致展现的方法。 (2)为选择器分组时,将单独的选择器单独放在一行。 (3)为了代码的易读性,在每个声明块的左花括号前添加一个空格。 (4)声明块的右花括号应当单独成行。 (5)每条声明语句之后应该插入一个空格。 (6)为了获得更准确的错误报告,每条声明都应该独占一行。 (7)所有声明语句都应当以分号结尾。最后一条声明语句后面的分号是可选的,但是,如果省略这个分号,你的代码可能更易出错。 (8)对于以逗号分隔的属性值,每个逗号后面都应该插入一个空格(例如 ,box-shadow)。 (9)不要在 rgb()、rgba()、hsl()、hsla() 或 rect() 值的内部的逗号后面插入空格。这样利于从多个属性值(既加逗号也加空格)中区分多个颜色值(只加逗号,不加空格)。 (10)对于属性值或颜色参数,省略小于 1 的小数前面的 0 (例如,.5 代替 0.5;-.5px 代替 -0.5px)。 (11)十六进制值应该全部小写,例如,#fff。在扫描文档时,小写字符易于分辨,因为他们的形式更易于区分。 (12)尽量使用简写形式的十六进制值,例如,用 #fff 代替 #ffffff。 (13)为选择器中的属性添加双引号,例如,input[type="text"]。只有在某些情况下是可选的,但是,为了代码的一致性,建议都加上双引号。 (14)避免为 0 值指定单位,例如,用 margin: 0; 代替 margin: 0px;。 1.2 Example 二、声明顺序 2.1 相关属性一组 相关的属性声明应当归为一组,并按照下面的顺序排列: (1)Positioning (2)Box model (3)Typographic (4)Visual 2.2 说明 (1)由于定位(positioning)可以从正常的文档流中移除元素,并且还能覆盖盒模型(box model)相关的样式,因此排在首位。 (2)盒模型排在第二位,因为它决定了组件的尺寸和位置。 (3)其他属性只是影响组件的内部(inside)或者是不影响前两组属性,因此排在后面。 2.3 Example 三、不要使用 @import 3.1 不用原因 与 <link> 标签相比,@import 指令要慢很多,不光增加了额外的请求次数,还会导致不可预料的问题。 3.2替代方法 (1)使用多个 <link> 元素 (2)通过 Sass 或 Less 类似的 CSS 预处理器将多个 CSS 文件编译为一个文件 (3)通过 Rails、Jekyll 或其他系统中提供过 CSS 文件合并功能 3.3 Example 四、媒体查询(Media query)的位置 4.1 相关规则附近 将媒体查询放在尽可能相关规则的附近。不要将他们打包放在一个单一样式文件中或者放在文档底部。如果你把他们分开了,将来只会被大家遗忘。 4.2 Example 五、带前缀的属性 5.1 垂直对齐 当使用特定厂商的带有前缀的属性时,通过缩进的方式,让每个属性的值在垂直方向对齐,这样便于多行编辑。 5.2 Example 六、单行规则声明 6.1 放在一行 对于只包含一条声明的样式,为了易读性和便于快速编辑,建议将语句放在同一行。对于带有多条声明的样式,还是应当将声明分为多行。 6.2 错误检测 这样做的关键因素是为了错误检测 -- 例如,CSS 校验器指出在 100 行有语法错误。如果是单行单条声明,你就不会忽略这个错误;如果是单行多条声明的话,你就要仔细分析避免漏掉错误了。 6.3 Example 七、简写形式的属性声明 7.1 滥用简写 在需要显示地设置所有值的情况下,应当尽量限制使用简写形式的属性声明。常见的滥用简写属性声明的情况如下: (1)padding (2)margin (3)font (4)background (5)border (5)border-radius 7.2 说明 大部分情况下,我们不需要为简写形式的属性声明指定所有值。例如,HTML 的 heading 元素只需要设置上、下边距(margin)的值,因此,在必要的时候,只需覆盖这两个值就可以。过度使用简写形式的属性声明会导致代码混乱,并且会对属性值带来不必要的覆盖从而引起意外的副作用。 7.3 Example 八、Less 和 Sass 中的嵌套 8.1 尽量不嵌套 避免不必要的嵌套。这是因为虽然你可以使用嵌套,但是并不意味着应该使用嵌套。只有在必须将样式限制在父元素内(也就是后代选择器),并且存在多个需要嵌套的元素时才使用嵌套。 8.2 Example 九、Less 和 Sass 中的操作符 为了提高可读性,在圆括号中的数学计算表达式的数值、变量和操作符之间均添加一个空格。 十、注释 10.1 注意 代码是由人编写并维护的。请确保你的代码能够自描述、注释良好并且易于他人理解。好的代码注释能够传达上下文关系和代码目的。不要简单地重申组件或 class 名称。 对于较长的注释,务必书写完整的句子;对于一般性注解,可以书写简洁的短语。 10.2 Example 十一、class 命名 11.1 规范 (1)class 名称中只能出现小写字符和破折号(dashe)(不是下划线,也不是驼峰命名法)。破折号应当用于相关 class 的命名(类似于命名空间)(例如,.btn 和 .btn-danger)。 (2)避免过度任意的简写。.btn 代表 button,但是 .s 不能表达任何意思。 (3)class 名称应当尽可能短,并且意义明确。 (4)使用有意义的名称。使用有组织的或目的明确的名称,不要使用表现形式(presentational)的名称。 (5)基于最近的父 class 或基本(base) class 作为新 class 的前缀。 (6)使用 .js-* class 来标识行为(与样式相对),并且不要将这些 class 包含到 CSS 文件中。 在为 Sass 和 Less 变量命名时也可以参考上面列出的各项规范。 11.2 Example 十二、选择器 12.1 注意 (1)对于通用元素使用 class ,这样利于渲染性能的优化。 (2)对于经常出现的组件,避免使用属性选择器(例如,[class^="..."])。浏览器的性能会受到这些因素的影响。 (3)选择器要尽可能短,并且尽量限制组成选择器的元素个数,建议不要超过 3 。 (4)只有在必要的时候才将 class 限制在最近的父元素内(也就是后代选择器)(例如,不使用带前缀的 class 时 -- 前缀类似于命名空间)。 12.2 Example 十三、代码组织 13.1 注意 (1)以组件为单位组织代码段。 (2)制定一致的注释规范。 (3)使用一致的空白符将代码分隔成块,这样利于扫描较大的文档。 (4)如果使用了多个 CSS 文件,将其按照组件而非页面的形式分拆,因为页面会被重组,而组件只会被移动。 13.2 Example 十四、编辑器配置 14.1 避免代码不同 将你的编辑器按照下面的配置进行设置,以避免常见的代码不一致和差异: (1)用两个空格代替制表符(soft-tab 即用空格代表 tab 符)。 (2)保存文件时,删除尾部的空白符。 (3)设置文件编码为 UTF-8。 (4)在文件结尾添加一个空白行。 原文发布时间为:2018-09-4 本文作者:WEBING 本文来自云栖社区合作伙伴“前端大学”,了解相关信息可以关注“前端大学”。

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

推荐一个小而美的Python代码格式化工具

代码可读性是评判代码质量的标准之一,有一个衡量代码质量的标准是 Martin 提出的 “WFT” 定律,即每分钟爆出 “WTF” 的次数。你在读别人代码或者做 Code Review 的时候有没有 “WTF” 冲动呢? 为了帮助开发者统一代码风格,Python 社区提出了 PEP8 代码编码风格,它并没有强制要求大家必须遵循,Python 官方同时推出了一个检查代码风格是否符合 PEP8 的工具,名字也叫 pep8,后来被重命名为了pycodestyle。 看如下代码: import time, datetime class ListNode: def __init__(self, val): self.val = val self.next = None # in python ne

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

推荐 | 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,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

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

Spring

Spring

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

Sublime Text

Sublime Text

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

用户登录
用户注册