首页 文章 精选 留言 我的

精选列表

搜索[es],共3901篇文章
优秀的个人博客,低调大师

ES 搜索结果expalain 可以类似数据库性能调优来看排序算法的选择

When we run a simpletermquery withexplainset totrue(seeUnderstanding the Score), you will see that the only factors involved in calculating the score are the ones explained in the preceding sections: PUT /my_index/doc/1 { "text" : "quick brown fox" } GET /my_index/doc/_search?explain { "query": { "term": { "text": "fox" } } } The (abbreviated)explanationfrom the preceding request is as follows: weight(text:fox in 0) [PerFieldSimilarity]: 0.15342641 result of: fieldWeight in 0 0.15342641 product of: tf(freq=1.0), with freq of 1: 1.0 idf(docFreq=1, maxDocs=1): 0.30685282 fieldNorm(doc=0): 0.5 The finalscorefor termfoxin fieldtextin the document with internal Lucene doc ID0. The termfoxappears once in thetextfield in this document. The inverse document frequency offoxin thetextfield in all documents in this index. The field-length normalization factor for this field. Of course, queries usually consist of more than one term, so we need a way of combining the weights of multiple terms. For this, we turn to the vector space model. 见:https://www.elastic.co/guide/en/elasticsearch/guide/current/scoring-theory.html 本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/6473226.html,如需转载请自行联系原作者

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

2018·JS“年鉴”:ES6锋芒依旧,React和Express成为前、后端最受欢迎框架

2018年JavaScript现状调查报告出来啦! JavaScript可以说是世界上最流行的脚本语言之一了,它是一种运行在浏览器中的解释型的编程语言。在我们的电脑、手机、平板上浏览的所有的网页,以及无数基于HTML5的手机App中,交互逻辑都是由JavaScript驱动的。 在这样的趋势下,熟练掌握JavaScript也成为了开发人员的必备技能点,而这些开发者对JavaScript的使用感受也非常重要。 就像在报告开头提到的那样:JavaScript总是在变化,新的库、新的框架、新的语言......这是它的乐趣所在,但这有时也会让人感到压力。今年StateOfJS调查了超过 20000 名 JavaScript 开发者,以确定他们正在使用什么,他们推崇什么以及他们想要学习什么。 根据得出来的一系列统计数据和见解,这份报告可以帮助开发者在

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

【REACT NATIVE 系列教程之十二】REACT NATIVE(JS/ES)与IOS(OBJECT-C)交互通信

一用到跨平台的引擎必然要有引擎与各平台原生进行交互通信的需要。那么Himi先讲解React Native与iOS之间的通信交互。 本篇主要分为两部分讲解:(关于其中讲解的OC语法等不介绍,不懂的请自行学习) 1. React Native 访问iOS 2. iOS访问React Native 一:React Native 访问iOS 1.我们想要JS调用OC函数,就要实现一个“RCTBridgeModule”协议的Objective-C类 所以首先我们先创建一个oc新类, Himi这里起名为:TestOJO (O: object-c, J: javaScript ) 2. TestOJO.h 1 2 3 4 5 6 #import<Foundation/Foundation.h> #import"RCTBridgeModule.h" @interfaceTestOJO:NSObject<RCTBridgeModule> @end 引入:#import “RCTBridgeModule.h” 且使用<RCTBridgeModule> 接口, 3.为了实现RCTBridgeModule协议,类需要包含RCT_EXPORT_MODULE()宏(这个宏也可以添加一个参数用来指定在Javascript中访问这个模块的名字。如果你不指定,默认就会使用这个Objective-C类的名字。) 4. 在TestOJO.m中添加如下: 1 2 3 4 5 6 RCT_EXPORT_MODULE(); //桥接到Javascript的方法返回值类型必须是void。ReactNative的桥接操作是异步的,所以要返回结果给Javascript,必须通过回调或者触发事件来进行 RCT_EXPORT_METHOD(j2oFun1:(NSString*)dataStringdateNumber:(int)dateNumber) { NSLog(@ "jscalliOSfunctionj2oFun1\ndataString:%@|dateNumber:%d" ,dataString,dateNumber); } 想要将oc的函数导出给js进行调用,那么就需要进行声明。声明通过RCT_EXPORT_METHOD()宏来实现: j2oFun1:函数名,后续是两个参数,分别是NSString 和 int 类型数据。 调用成功后,我们输出这两个传来的值到控制台。 注意:Javascript调用的OC函数,此函数返回值类型必须是void。由于React Native的桥接操作是异步的,所以要返回结果给Javascript,必须通过回调参数进行 后续详细讲解。 从js传来的参数我们可以依靠自动类型转换的特性,跳过手动的类型转换(RCTConvert,下面详细介绍),在定义函数参数类型时,直接写上对应想要的数据类型,例如NSData等。 5. 下面看js调用的代码段: 1 2 var TestOJO=require( 'react-native' ).NativeModules.TestOJO; TestOJO.j2oFun1( 'Himi' ,12321); var TestOJO=require(‘react-native’).NativeModules.TestOJO;(将OC注册进来的模块取出) TestOJO.j2oFun1(‘Himi’, 12321);(调用模块中的对应函数,且将参数进行传入) 6. 我们来看一段复杂的数据通信 OC 代码段(导出函数): 1 2 3 4 5 6 7 8 9 10 11 12 #import"RCTConvert.h" RCT_EXPORT_METHOD(j2oFun2:(NSDictionary*)details) { NSString*name=[RCTConvertNSString:details[@ "name" ]]; NSNumber*age=[RCTConvertNSNumber:details[@ "age" ]]; NSArray*array=[RCTConvertNSArray:details[@ "array" ]]; NSLog(@ "jscalliOSfunctionj2oFun2\nname:%@|age:%@" ,name,[agestringValue]); for (inti=0;i<[arraycount];i++){ NSLog(@ "array:第%d个元素:%@" ,i,array[i]); } } 需要注意的是,引入了”RCTConvert”类,作用: RCTConvert提供了一系列辅助函数,用来接收一个JSON值并转换到原生Objective-C类型或类。 JS代码段:(调用OC函数) 1 2 3 4 5 6 7 TestOJO.j2oFun2({ name: 'Himi' , age:12, array:[ 'hi,Himi' , 'i,m' , 'aarray!' ] }); 7. 我们下面来利用回调参数来得到访问OC的函数得到其返回值 1 2 3 4 5 6 RCT_EXPORT_METHOD(j2oCallbackEvent:(NSString*)jsStringcallback:(RCTResponseSenderBlock)callback) { NSLog(@ "jscalliOSfunction:j2oCallbackEvent\njsString:%@" ,jsString); NSArray*events=[[NSArrayalloc]initWithObjects:@ "Himi" ,@ "12321" ,nil]; callback(@[[NSNull null ],events]); } RCTResponseSenderBlock 是种特殊的参数类型——回调函数,通过此参数可以实现当JS访问的OC函数后,并能将此OC函数的返回值传递给JS。 RCTResponseSenderBlock 只接受一个参数(传递给JavaScript回调函数的参数数组) callback函数:第一个参数是一个错误对象(没有发生错误的时候为null),而剩下的部分是函数的返回值。 下面我们来看JS调用代码段: 1 2 3 4 5 6 7 TestOJO.j2oCallbackEvent( 'Himi' ,(error,callBackEvents)=>{ if (error){ console.error(error); } else { Alert.alert( 'J2O带返回值' , '数组的三个值:\n[0]:' +callBackEvents[0]+ '\n[1]:' +callBackEvents[1]+ '\n[2]:' +callBackEvents[2]); } }); 二:iOS访问React Native 1. 我们如果想要OC访问JS,给JavaScript发送事件通知,我们需要使用RCTEventDispatcher的函数,与RCTBridge的实例 因此我们需要先做准备,TestOJO.h: 1 2 #import"RCTEventDispatcher.h" @synthesizebridge=_bridge; bridge: 是RCTBridge 的实例,且在我们使用的接口RCTBridgeModule中。 OC访问JS的代码段: 1 [self.bridge.eventDispatchersendAppEventWithName:@ "eventName" body:@{@ "name" :@ "Himi" ,@ "age" :@12}]; 第一个参数:事件名 第二个参数(body):传入的参数 其中@{}是定义不可变的字典的快捷实例方式,因此我们也可以改成如下形式: 1 2 NSDictionary*direct=@{@ "name" :@ "Himi" ,@ "age" :@12}; [self.bridge.eventDispatchersendAppEventWithName:@ "eventName" body:direct]; 下面来看JS中定义OC调用的函数: 其实所谓OC能响应JS,是JS进行了对应函数的绑定监听。因此我们需要利用NativeAppEventEmitter 组件,利用其addListener进行注册监听!因此我们需要引入进来这个模块, 1 2 3 4 5 6 7 8 9 import{ ... NativeAppEventEmitter ... }from 'react-native' ; var o2cFun=NativeAppEventEmitter.addListener( 'eventName' , (para)=>Alert.alert( '被OC触发' , '字典数据:\nname:' +para.name+ '\nage:' +para.age) ); var o2cFun : 将绑定好的监听事件引用交给此变量保存。 addListener: 第一个参数:事件名 第二个参数:响应函数 注意:利用addListener进行监听,一定要对应有取消监听!要保持一一对应的好习惯。 且通常取消监听都在componentWillUnmount函数中进行。如下: 1 2 3 componentWillUnmount(){ o2cFun.remove(); } 其中对于原理并没有详细的介绍,这里推荐两篇文章,童鞋们可以详细的阅读一下,这里不赘述: http://www.jianshu.com/p/203b91a77174 http://reactnative.cn/docs/0.21/native-modules-ios.html#content 下面给出源码: TestOJO.h: 1 2 3 4 5 6 7 8 9 10 11 // //TestOJO.h //MyProject // //CreatedbyHimion16/6/2. //Copyright2016年Facebook.Allrightsreserved. // #import<Foundation/Foundation.h> #import"RCTBridgeModule.h" @interfaceTestOJO:NSObject<RCTBridgeModule> @end TestOJO.m: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 // //TestOJO.m //MyProject // //CreatedbyHimion16/6/2. //Copyright2016年Facebook.Allrightsreserved. // #import"TestOJO.h" //RCTConvert类支持的的类型也都可以使用,RCTConvert还提供了一系列辅助函数,用来接收一个JSON值并转换到原生Objective-C类型或类。 #import"RCTConvert.h" //本地模块也可以给JavaScript发送事件通知。最直接的方式是使用eventDispatcher #import"RCTEventDispatcher.h" @implementationTestOJO //====================================[JS->OC]======================================= RCT_EXPORT_MODULE(); //桥接到Javascript的方法返回值类型必须是void。ReactNative的桥接操作是异步的,所以要返回结果给Javascript,必须通过回调或者触发事件来进行 RCT_EXPORT_METHOD(j2oFun1:(NSString*)dataStringdateNumber:(int)dateNumber) { NSLog(@ "jscalliOSfunctionj2oFun1\ndataString:%@|dateNumber:%d" ,dataString,dateNumber); } RCT_EXPORT_METHOD(j2oFun2:(NSDictionary*)details) { NSString*name=[RCTConvertNSString:details[@ "name" ]]; NSNumber*age=[RCTConvertNSNumber:details[@ "age" ]]; NSArray*array=[RCTConvertNSArray:details[@ "array" ]]; NSLog(@ "jscalliOSfunctionj2oFun2\nname:%@|age:%@" ,name,[agestringValue]); for (inti=0;i<[arraycount];i++){ NSLog(@ "array:第%d个元素:%@" ,i,array[i]); } } //带回调函数RCTResponseSenderBlock,提供将返回值传回给js //RCTResponseSenderBlock只接受一个参数->传递给JavaScript回调函数的参数数组 RCT_EXPORT_METHOD(j2oCallbackEvent:(NSString*)jsStringcallback:(RCTResponseSenderBlock)callback) { NSLog(@ "jscalliOSfunction:j2oCallbackEvent\njsString:%@" ,jsString); NSArray*events=[[NSArrayalloc]initWithObjects:@ "Himi" ,@ "12321" ,nil]; callback(@[[NSNull null ],events]); } //====================================[OC->JS]======================================= @synthesizebridge=_bridge; //此函数是为了测试OC->JS过程,触发事件的函数 RCT_EXPORT_METHOD(emitterO2J) { [selfocCallJsFun]; } -(void)ocCallJsFun { NSDictionary*direct=@{@ "name" :@ "Himi" ,@ "age" :@12}; [self.bridge.eventDispatchersendAppEventWithName:@ "eventName" body:direct]; //[self.bridge.eventDispatchersendAppEventWithName:@"eventName"body:@{@"name":@"Himi",@"age":@12}]; } @end Main.js: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 importReact,{Component}from 'react' ; import{ View, Text, StyleSheet, Image, Alert, NativeAppEventEmitter, //引用NativeAppEventEmitter组件进行监听Native端派发的事件 }from 'react-native' ; var TestOJO=require( 'react-native' ).NativeModules.TestOJO; var o2cFun=NativeAppEventEmitter.addListener( 'eventName' , (para)=>Alert.alert( '被OC触发' , '字典数据:\nname:' +para.name+ '\nage:' +para.age) ); //千万不要忘记忘记取消订阅,通常在componentWillUnmount函数中实现。 //o2cFun.remove(); export default classMainextendsComponent{ constructor(props){ super (props); this .state={ selectedTab: 'home' }; } componentWillUnmount(){ o2cFun.remove(); } render(){ return ( <Viewstyle={{flex:1,alignItems: 'center' }}> <Textstyle={styles.himiTextStyle}>HimiReactNative系列教程</Text> <Text onPress={()=>{ TestOJO.j2oFun1( 'Himi' ,12321); TestOJO.j2oFun2({ name: 'Himi' , age:12, array:[ 'hi,Himi' , 'i,m' , 'aarray!' ] }); TestOJO.j2oCallbackEvent( 'Himi' ,(error,callBackEvents)=>{ if (error){ console.error(error); } else { Alert.alert( 'J2O带返回值' , '数组的三个值:\n[0]:' +callBackEvents[0]+ '\n[1]:' +callBackEvents[1]+ '\n[2]:' +callBackEvents[2]); } }); }} style={styles.himiTextStyle}>JS->OC </Text> <Text onPress={()=>{ TestOJO.emitterO2J(); }} style={styles.himiTextStyle}>JS->OC->JS </Text> </View> ); } }; var styles=StyleSheet.create({ himiTextStyle:{ backgroundColor: '#eee' , color: '#f00' , fontSize:30, marginTop:70, }, }); 下面是运行效果:(点击看动态图,主要看演示过程与控制台输出哦!) 注意: 1.点击JS->OC 后,会调用三个函数哦 2.点击JS->OC->JS, 先是通过JS->OC的临时函数,触发OC->JS的过程! 本文转自 xiaominghimi 51CTO博客,原文链接:http://blog.51cto.com/xiaominghimi/1786162,如需转载请自行联系原作者

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

【Elasticsearch 入门公开课】如何配置 ES-Mapping/Analyzer 及多种聚合分析介绍-回顾篇(5)

简介:本周课程(19~22讲)阮一鸣老师详细的讲解如何设置Elasticsearch Mapping,并通过配置 Mapping 实现自定义Analyzer,同时运用 Index Template 和 Dynamic Template 更方便的设计Mapping 索引,还简单介绍了 Elasticsearch 多种聚合分析方式。 讲师:阮一鸣——eBay Pronto 平台技术负责人、极客时间『Elasticsearch 核心技术与实战』课程讲师课程为了更多同学能快速体验 Elasticsearch,为大家提供了免费的阿里云 Elasticsearch (3节点1核2G)的测试环境>>>>去开通 课程回顾 19 | 显式Mapping设置与常见参数介绍20 | 多字段特性及Mapping中配置自定义Analyze

资源下载

更多资源
Mario

Mario

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

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

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

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册