在ES中,针对全文检索我们都会采用分词的方式进行搜索。分词器的种类也比较多,使用得较多的分词器比如ansj,ik 等。ES使用了这些分词器后,中文搜索体验得到较大的改善,但是在使用这些分词器的同时,也会暴露出一些问题或bug,比如高亮、分词不准确、搜索数据丢失等,本章就介绍下使用ansj分词器出现的短语搜索丢失数据(不准确)问题以及如何解决该问题。
为了更清晰的描述问题,我们做个如下实验:
1.随机抽取包含“新能源” 且包含 "汽车"的数据M 条(本例中43条)
2.设置样本中包含 “新能源汽车” 的数据N条(N
3.建立搜索引擎字段映射(字段采用ansj分词),将此批数据导入搜索引擎
搜索测试:
1.搜索引擎中搜索关键词“新能源汽车”,可以看到结果数与数据库 中的记录相同
2.搜索短语“新能源汽车”时候发现搜索出来的条数仅有 18条,通过对比数据库,可找到若干包含”新能源汽车“但没有被搜索到的数据,例如数据:50993755
大家都知道lucene中的查询是通过倒排索引查询,而配置了分词器的字段是通过分词查找,短语查询内部实现也是分词查找,但其又与非短语查询存在一些差别,短语查询步骤如下:
首先,短语查询在语法解析的时候会解析提取到短语单元、关键词
其次,将短语单元分析成一个或多个关键词,使用生成的所有关键词到索引中查找并计算文档是否满足了输出逻辑条件
最后,lucene对文档进行短语检查,若文档包目标短语,则将文档加入结果集,若不满足则抛弃。
我们再来看看lucene检查文档是否存在短语的逻辑(如下为检查是否存在短语的lucene函数):
通过代码可以知道,lucene检查短语是否在文档中存在是通过索引中关键词的位置差与输入样本中的位置差的差值是否相等来进行判定的。
我们再来看看分词情况,由于建索引时候我们需要将词分的较细,故采用index的模式来进行分词。
以 "新能源汽车行业进入一个全新时代 " 为例,采用ansj官方提供的分词插件分词后,lucene中的索引位置信息如下:
(新能源 , pos:0 ),(汽车行业 , pos:1),(进入 , pos:2),(一个 , pos:3),(全新 , pos:4),(的 , pos:5),(时代 , pos:6),(新 , pos:7),(新能 , pos:8),(能 , pos:9),(能源 , pos:10),(源 , pos:11),(源汽 , pos:12),(汽 , pos:13),(汽车 , pos:14 ),(车 ,pos:15),(车行 , pos:16),(行 , pos:17),(行业 , pos:18),(业 , pos:19),(业进 , pos:20),(进 , pos:21),(入 , pos:22),(一 , pos:23),(个 , pos:24),(全 , pos:25),(新 , pos:26),(新的 , pos:27),(时 , pos:28),(代 , pos:29)
而查询时候采用基于向量的分词方式,以“新能源汽车 ”为例,系统将会才分为如下信息:
(新能源 , pos:0),(汽车 , pos:1)
通过分词信息可以看到,输入样本中,关键词“汽车 ” 与关键词 “新能源 ” 距离差为 1 ,而在索引样本中,关键词“汽车 ” 与关键词 “新能源 ” 的距离为 14, 因此在lucene上会判定 该条文档中不存在“新能源汽车”的短语。
解决方案:
lucene判定是否存在短语的方式是为 索引关键词(n)位置 + 输入样本关键词(n+1)偏移 = 索引起始关键词(n+1)位置 ,故只要将分词阶段分析出的词的位置以及位置差满足该公式,该bug即可解决。目前在ansj方式常用的分词方式中,仅ToAnalysis 满足该关系式,为能将index与query方式均能满足该公式,我们需要将ansj输出的关键词统一设置一个位置输出信息。按照该关系式,我们只要将分词结果按照词的终止地址做排序输出,词的偏移量采用词的终止地址做位置差即可。
因在lucene中首个词位置增量值不能小于等于0,故可将所有词按照终止偏移地址(采用起始地址会导致首个曾量值为0)排序以后依次数据,输出过程的位置差即为位置增量。
修改点1:
ansj 源码修改,在分词器中进行修改:
修改 IndexAnalysis.java 中result 方法,
将原来的sort方法修改为(低版本没有sort函数,无sort函数的直接在setRealName(graph, result) 函数上方加上如下函数即可):
Collections.sort(result, new Comparator
() {
@Override
public int compare(Term o1, Term o2) {
int offset = o1.getOffe() - o2.getOffe() + o1.getName().length() - o2.getName().length();
if (0==offset) {
return o1.getName().length() - o2.getName().length();
} else {
return offset;
}
}
});
修改点2:
ansj_lucene_plug 源码修改:
修改 AnsjTokenizer.java 类
a.添加成员变量 private int position = 0;
b.修改incrementToken 方法:
@Override public final boolean incrementToken() throws IOException { 中间省略 if (obj instanceof Term) { 中间省略 offsetAtt.setOffset(term.getOffe(), term.getOffe() + term.getName().length()); typeAtt.setType(term.getNatureStr()); int incPosition = term.getOffe() - position; position += incPosition; positionAttr.setPositionIncrement(incPosition ); termAtt.setEmpty().append(rName); } else { positionAttr.setPositionIncrement(0 ); termAtt.setEmpty().append(obj.toString()); } return true; }
c.修改parse方法:
private void parse() throws IOException { Result parse = ta.parse(); if (synonyms != null) { for (SynonymsRecgnition sr : synonyms) { parse.recognition(sr); } } this.position =0; result = new LinkedList(parse.getTerms()); }
到此,所有修改已完成,我们同样以 "新能源汽车行业进入一个全新时代 " 为例,采用ansj建索引后,lucene中的索引位置信息如下:
(新 , pos:1),(新能 , pos:2),(能 , pos:2),(
新能源 , pos:3 ),(能源 , pos:3),(源 , pos:3),(源汽 , pos:4),(汽 , pos:4),(
汽车 , pos:5 ),(车 , pos:5),(车行 , pos:6),(行 , pos:6),(汽车行业 , pos:7),(行业 , pos:7),(业 , pos:7),(业进 , pos:8),(进 , pos:8),(进入 , pos:9),(入 , pos:9),(了 , pos:10),(了一 , pos:11),(一 , pos:11),(一个 , pos:12),(个 , pos:12),(全 , pos:13),(全新 , pos:14),(新 , pos:14),(新时 , pos:15),(时 , pos:15),(新时代 , pos:16),(时代 , pos:16),(代 , pos:16)
查询时候同样以“新能源汽车 ”为例,系统将会拆分为如下信息:
(新能源 , pos:3),(汽车 , pos:5)
可以看到,输入样本中词的距离为 2,而在lucene索引中,关键词" 汽车 "与 关键词"新能源 " 的距离同样为 2,代码修改达理论上已正确。
更新ansj相关的插件后重建索引,重新执行短语“新能源汽车” 搜索,可以看到结果已完全正确
你可能感兴趣的:(ElasticSearch)
elasticsearch7.10.2 安装实战
spring208208
ES 大数据 运维 elasticsearch
Es7.10.2安装:1.下载es:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-10-2useraddes_userpasswdes_user//123456chgrp-Res_user/home/apps/elasticsearch-7.10.2chown-Res_user/home/apps/elastic
ElasticSearch学习笔记 --- 调研笔记知识点
杨鑫newlfe
大数据挖掘与大数据应用案例 搜索引擎
笔记总结知识点:1.安装ElasticSearch。2.ELasticSearch是使用Java开发并使用Lucene作为核心来实现所有索引和搜索的功能3.使用是通过简单的restfulAPI来使用。4.安装Marvel(ES的管理和监控)5.特点:分布式的实时文件存储,每个字段都被索引并可被搜索分布式的实时分析搜引擎可以扩展到上百台服务器,处理PB级机构化或非结构化数据6.集群是一组具有相同cl
Elasticsearch--基础知识点--2--elasticsearch.yml
Chasing__Dreams
Elasticsearch ES配置文件详解 elasticsearch
bin:脚本文件,包括ES启动&安装插件等等config:elasticsearch.yml(ES配置文件)、jvm.options(JVM配置文件)、日志配置文件等等JDK:内置的JDKlib:类库logs:日志文件modules:ES所有模块,包括X-pack等plugins:ES已经安装的插件。默认没有插件data:ES启动的时候,会有该目录,用来存储文档数据。该目录可以设置########
如何收集 Kubernetes 集群的日志
沉默的八哥
运维 kubernetes 运维
一、Kubernetes日志收集核心方案1.EFKStack(Elasticsearch+Fluentd+Kibana)•适用场景:企业级日志分析、复杂查询需求、长期日志存储。•组件作用:•Fluentd:日志收集器(部署为DaemonSet,每个Node运行一个实例)。•Elasticsearch:日志存储与索引(支持分布式、高并发)。•Kibana:可视化仪表盘(日志搜索、图表展示)。2.Lo
Elasticsearch 分布式架构解析
Mr' 郑
elasticsearch 分布式 架构
Elasticsearch是一个分布式的搜索和分析引擎,以其高可扩展性和实时性著称。它基于Lucene开发,但提供了更高级别的抽象,使得开发者能够轻松地构建复杂的搜索应用。本文将深入探讨Elasticsearch的分布式存储和检索机制,解释其背后的原理及其优势。一、Elasticsearch的基本概念在开始之前,我们先了解几个Elasticsearch的基础概念:索引(Index):相当于关系型数
springboot+es批量新增、批量修改、根据内部id批量查询
程序小增
elasticsearch spring boot java
pom.xml配置org.elasticsearch.clientelasticsearch-rest-high-level-client7.8.0elasticsearchorg.elasticsearchelasticsearch-rest-clientorg.elasticsearch.clientorg.springframework.bootspring-boot-starter-dat
ELK(elasticsearch-7.17.4-windows-x86_64+logstash-7.17.4-windows-x86_64+kibana-7.17.4-windows-x86_64)
LongtengGensSupreme
elk elasticsearch 大数据
1、下载ELK(elasticsearch-7.17.4-windows-x86_64+logstash-7.17.4-windows-x86_64+kibana-7.17.4-windows-x86_64)2、解压elasticsearch-7.17.4-windows-x86_64,config目录下修改elasticsearch.yml文件,修改elasticsearch.yml内容如下:#
【Elasticsearch】自定义内置的索引生命周期管理(ILM)策略。
risc123456
Elasticsearch elasticsearch
以下是对Elasticsearch官方教程《Customizebuilt-inILMpolicies》的详细解读,结合原文内容,帮助您更好地理解如何自定义内置的索引生命周期管理(ILM)策略。---Elasticsearch教程:自定义内置ILM策略1.背景与目标Elasticsearch提供了内置的索引生命周期管理(ILM)策略,例如`logs@lifecycle`、`metrics@lifec
elasticsearch聚合查询
warrah
岁月云——大数据杂烩 elasticsearch 大数据
9聚合后再过滤查询汇总后多条件过滤超过100万的数据POSTzzp_invoice/_search{"size":0,"query":{"range":{"SSYF":{"gte":"202101","lte":"202112"}}},"aggs":{"ssyf_group":{"terms":{"field":"XHDWMC.raw"},"aggs":{"sum_aggs":{"sum":{"f
【Elasticsearch】索引 强制合并 缓存 refresh flush 等操作
九师兄
elasticsearch es 索引 合并 refresh
文章目录1.概述1.1索引强制合并1.1.1实战1.2缓存清理1.3、flush操作1.4、refresh操作1.概述1.1索引强制合并强制合并的功能为强制合并一个或多个索引,目的是通过索引合并达到减少段的数量,通过POST方法执行_forcemergeAPI。强制合并请求在没有执行完成之前,请求会一直被阻塞,直到执行完成才会返回,如果期间该HTTP请求由于网络或者其它原因被断开,合并请求将继续在
elasticsearch 刷新问题
时代在召唤r
数据库 elasticsearch
用elasticsearch作为搜索功能要求实时返回index或update的数据,指定refresh=True即可el.update(index="x",doc_type='xx',id=xxx,body=xxxx,refresh=True)refresh操作:先将index-buffer中文档(document)生成的segment写到文件系统之中,这样避免了比较损耗性能io操作,又可以使搜索
ElasticSearch第十五讲 ES数据写入过程和写入原理以及数据如何保证一致性
程序员路同学
ElasticSearch elasticsearch java 大数据
Es的数据并发冲突ES数据并发冲突控制是基于的乐观锁和版本号的机制一个document第一次创建的时候,它的_version内部版本号就是1;以后,每次对这个document执行修改或者删除操作,都会对这个_version版本号自动加1;哪怕是删除,也会对这条数据的版本号加1(假删除)。对于更新操作客户端对es数据做更新的时候,如果带上了版本号,那带的版本号与es中文档的版本号一致才能修改成功,否
Elasticsearch 聚合查询的 Java 实现
Leon_Jinhai_Sun
elasticsearch java
importco.elastic.clients.elasticsearch._types.aggregations.Aggregation;Mapaggregations=qu.buildAggregations(data.get("aggregations"));这段代码是Java语言编写的,用于构建Elasticsearch聚合查询。Elasticsearch是一个基于Lucene的搜索服务
Elasticsearch 聚合查询(aggs)
2401_85112189
作者\/ elasticsearch jenkins 大数据
桶内度量前面的例子告诉我们每个桶里面的文档数量,但是我们需要更复杂的文档度量,我们需要告诉Elasticsearch使用哪个字段,使用何种度量方式进行运算,这些信息要嵌套在桶内,度量的运算会基于桶内的文档进行现在,为刚刚的聚合结果添加求价格平均值的度量:GET/cars/_search{“size”:0,“aggs”:{“popular_colors”:{“terms”:{“field”:“col
ES中数据刷新策略refresh
不平衡的叉叉树
java elasticsearch 大数据 搜索引擎
在Elasticsearch中,插入数据时的refresh参数控制文档在写入后何时对搜索可见,其行为直接影响数据可见性和系统性能。以下是refresh参数的三个可选值(true、false、wait_for)的详细说明及适用场景:1.refresh=true行为:立即触发一次强制刷新(Refresh),将当前写入操作涉及的数据从内存缓冲区(In-memoryBuffer)刷新到新的LuceneSe
【Elasticsearch】Index Lifecycle Management
risc123456
Elasticsearch elasticsearch
Elasticsearch的索引生命周期管理(IndexLifecycleManagement,简称ILM)是一种自动化管理索引生命周期的功能,旨在帮助用户根据索引的使用模式和数据价值,高效地管理和优化索引的存储、性能和成本。以下是关于Elasticsearch索引生命周期的详细说明:---1.索引生命周期的五个阶段Elasticsearch的ILM定义了五个主要阶段,每个阶段对应不同的索引使用模
[Elasticsearch] refresh/flush/merge概念及Api
小鱼收藏夹
elasticsearch 大数据 搜索引擎
一、Refresh操作默认情况下,Elasticsearch写入的数据会存在于内存缓冲区中,此时并没有落入segment,而是等待index.refresh_interval的时间间隔后,数据会落入到segment中,此时才可以被检索;而refresh操作简而言之就是将内存缓冲区的数据刷入segement中,使其可以被索引;而默认情况下es配置index.refresh_interval为1s,即
FastGPT 引申:借鉴 FastGPT 基于MySQL + ES 实现知识库(含表结构以及核心代码)
窝窝和牛牛
FastGPT mysql elasticsearch 开源
文章目录FastGPT引申:借鉴FastGPT基于MySQL+ES实现知识库(含表结构以及核心代码)一、整体思路二、存储结构2.1MySQL表结构(1)knowledge_base_dataset(2)knowledge_base_data(3)knowledge_base_index(4)ai_kb_relation2.2ElasticsearchMapping结构(1)ES索引(2)字段说明三
ELK —— Logstash 将 MySQL 数据同步至 ElasticSearch
2301_82242204
程序员 elk mysql elasticsearch
一、搭建环境1.0环境依赖1.1搭建ElasticSearch环境1.1.1ElasticSearch简介1.1.2启动ElasticSearch1.2Logstash(多数据源采集系统)1.3Kibana(可视化面板)二、Logstash配置2.1配置数据库连接2.2配置同步ES2.3重新启动三、下一步更新计划Author:GoritDate:2021/4/7Refer:各种同类文章参考融合+自
ES(Elasticsearch)SSL集群部署
sj1163739403
elasticsearch ssl 大数据
8.x后ES不在需要自行准备JDK环境,部署的服务包含ES、Kibana、Logstash,使用二进制方式部署,为了提高安全性,加密logstash、kibana及其他客户端到ES间的通信。1、准备工作1.1、es无法使用root用户启动useradd-m-s/bin/bashesuser1.2、配置必要的内核参数,否则会启动失败vm.max_map_count定义了一个进程可以拥有的最大内存映射
app上架vivo应用商店流程
奔跑吧邓邓子
企业运营
提示:“奔跑吧邓邓子”的高效运维专栏聚焦于各类运维场景中的实际操作与问题解决。内容涵盖服务器硬件(如IBMSystem3650M5)、云服务平台(如腾讯云、华为云)、服务器软件(如Nginx、Apache、GitLab、Redis、Elasticsearch、Kubernetes、Docker等)、开发工具(如Git、HBuilder)以及网络安全(如挖矿病毒排查、SSL证书配置)等多个方面。无论
一文揭秘!Java 如何与 Elasticsearch 完美 “牵手”?
程序员顾茗
java elasticsearch
引言本文适合有一定Java编程基础,且对搜索引擎技术感兴趣,尤其是希望在项目中运用Elasticsearch实现高效数据检索与分析功能的开发人员阅读。在当今大数据和高并发的时代,高效的数据检索与分析变得愈发关键。Elasticsearch作为一款强大的分布式搜索和分析引擎,受到了广泛青睐。而Java作为企业级开发的主流语言,如何与Elasticsearch无缝结合,发挥出最大效能呢?今天,就让我们
Elasticsearch平台介绍
yzhujue
elasticsearch
1简介Elasticsearch是一个实时分布式搜索和分析引擎。它能以很高的速度处理数据。它用于全文搜索、结构化搜索、分析以及将这三者混合使用。Ø维基百科使用Elasticsearch提供全文搜索并高亮关键字,以及输入实时搜索(search-as-you-type)和搜索纠错(did-you-mean)等搜索建议功能。Ø英国卫报使用Elasticsearch结合用户日志和社交网络数据提供给他们的编
java 批量查询es_java操作ES的简单查询和bool查询
weixin_39831567
java 批量查询es
导入包org.elasticsearch.clienttransport5.2.2org.apache.logging.log4jlog4j-api2.7org.apache.logging.log4jlog4j-core2.7junitjunitRELEASEViewCode2.Java操作基本操作通过client客户端对象获得客户端然后通过preparIndex等方法传入index,type,
【Elasticsearch】数据管理(Data Management)
risc123456
Elasticsearch elasticsearch
Elasticsearch的数据管理(DataManagement)是其核心功能之一,旨在帮助用户高效地存储、维护和查询不同类型的数据,同时优化性能和成本。以下是结合原文内容对Elasticsearch数据管理的详细阐述:1.数据类型Elasticsearch中的数据主要分为两类:(1)内容(Content)•定义:这是用户希望进行搜索的项目集合,例如产品目录、用户信息等。•特点:•数据可能会频繁
Elasticsearch 学习
Anthonywish
java 后端 elasticsearch springdata 全文检索
内容摘要安装Elasticsearch使用Rest的API操作索引使用Rest的API查询数据使用Rest的API聚合数据SpringDataElasticsearch使用1.Elasticsearch介绍和安装用户访问我们的首页,一般都会直接搜索来寻找自己想要购买的商品。而商品的数量非常多,而且分类繁杂。如果能正确的显示出用户想要的商品,并进行合理的过滤,尽快促成交易,是搜索系统要研究的核心。面
ElasticSearch批量(mget)查询
书香水墨
数据库 elasticsearch
一、批量(mget)查询1.1不同索引POST'http://localhost:9200/_mget?pretty/'{"docs":[{"_index":"index1","_type":"type1","_id":"1"},{"_index":"index2","_type":"type2","_id":"3"}]}1.2相同索引//相同index不同typePOST'http://loca
ES批量查询
C18298182575
elasticsearch elasticsearch php jenkins
在Elasticsearch中,multi_search(也称为msearch)是一种允许你在单个请求中执行多个搜索操作的API。它可以显著减少网络开销,尤其是在需要执行多个查询时。multi_search会将多个查询打包成一个请求发送给Elasticsearch,然后返回多个查询的结果。1.multi_search的基本用法multi_search的请求格式如下:请求头:指定索引名称(可选)和搜
【Elasticsearch】使用Data Streams
risc123456
Elasticsearch elasticsearch
在Elasticsearch中,数据流(DataStreams)是一种用于处理时间序列数据的高级功能,它提供了一种高效、可扩展的方式来管理和查询大量的时序数据。以下是结合网页内容对Elasticsearch中“使用数据流”的详细说明:---1.什么是数据流?数据流是一种逻辑结构,用于管理时间序列数据。它由多个后端索引(BackingIndices)组成,这些索引在内部自动管理,用户无需手动操作。数
【Elasticsearch】ignore_malformed
risc123456
Elasticsearch elasticsearch
在Elasticsearch中,`ignore_malformed`是一个字段映射参数,用于控制在索引文档时,如果字段数据不符合其定义的数据类型,Elasticsearch应该如何处理这种情况。具体来说,`ignore_malformed`参数决定了是否忽略格式错误的数据,而不是直接拒绝整个文档。作用当启用`ignore_malformed`参数时(设置为`true`),Elasticsearch
java责任链模式
3213213333332132
java 责任链模式 村民告县长
责任链模式,通常就是一个请求从最低级开始往上层层的请求,当在某一层满足条件时,请求将被处理,当请求到最高层仍未满足时,则请求不会被处理。
就是一个请求在这个链条的责任范围内,会被相应的处理,如果超出链条的责任范围外,请求不会被相应的处理。
下面代码模拟这样的效果:
创建一个政府抽象类,方便所有的具体政府部门继承它。
package 责任链模式;
/**
*
linux、mysql、nginx、tomcat 性能参数优化
ronin47
一、linux 系统内核参数
/etc/sysctl.conf文件常用参数 net.core.netdev_max_backlog = 32768 #允许送到队列的数据包的最大数目
net.core.rmem_max = 8388608 #SOCKET读缓存区大小
net.core.wmem_max = 8388608 #SOCKET写缓存区大
php命令行界面
dcj3sjt126com
PHP cli
常用选项
php -v
php -i PHP安装的有关信息
php -h 访问帮助文件
php -m 列出编译到当前PHP安装的所有模块
执行一段代码
php -r 'echo "hello, world!";'
php -r 'echo "Hello, World!\n";'
php -r '$ts = filemtime("
Filter&Session
171815164
session
Filter
HttpServletRequest requ = (HttpServletRequest) req;
HttpSession session = requ.getSession();
if (session.getAttribute("admin") == null) {
PrintWriter out = res.ge
连接池与Spring,Hibernate结合
g21121
Hibernate
前几篇关于Java连接池的介绍都是基于Java应用的,而我们常用的场景是与Spring和ORM框架结合,下面就利用实例学习一下这方面的配置。
1.下载相关内容: &nb
[简单]mybatis判断数字类型
53873039oycg
mybatis
昨天同事反馈mybatis保存不了int类型的属性,一直报错,错误信息如下:
Caused by: java.lang.NumberFormatException: For input string: "null"
at sun.mis
项目启动时或者启动后ava.lang.OutOfMemoryError: PermGen space
程序员是怎么炼成的
eclipse jvm tomcat catalina.sh eclipse.ini
在启动比较大的项目时,因为存在大量的jsp页面,所以在编译的时候会生成很多的.class文件,.class文件是都会被加载到jvm的方法区中,如果要加载的class文件很多,就会出现方法区溢出异常 java.lang.OutOfMemoryError: PermGen space.
解决办法是点击eclipse里的tomcat,在
我的crm小结
aijuans
crm
各种原因吧,crm今天才完了。主要是接触了几个新技术:
Struts2、poi、ibatis这几个都是以前的项目中用过的。
Jsf、tapestry是这次新接触的,都是界面层的框架,用起来也不难。思路和struts不太一样,传说比较简单方便。不过个人感觉还是struts用着顺手啊,当然springmvc也很顺手,不知道是因为习惯还是什么。jsf和tapestry应用的时候需要知道他们的标签、主
spring里配置使用hibernate的二级缓存几步
antonyup_2006
java spring Hibernate xml cache
.在spring的配置文件中 applicationContent.xml,hibernate部分加入
xml 代码
<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
<prop key="hi
JAVA基础面试题
百合不是茶
抽象实现接口 String类 接口继承 抽象类继承实体类 自定义异常
/* * 栈(stack):主要保存基本类型(或者叫内置类型)(char、byte、short、 *int、long、 float、double、boolean)和对象的引用,数据可以共享,速度仅次于 * 寄存器(register),快于堆。堆(heap):用于存储对象。 */ &
让sqlmap文件 "继承" 起来
bijian1013
java ibatis sqlmap
多个项目中使用ibatis , 和数据库表对应的 sqlmap文件(增删改查等基本语句),dao, pojo 都是由工具自动生成的, 现在将这些自动生成的文件放在一个单独的工程中,其它项目工程中通过jar包来引用 ,并通过"继承"为基础的sqlmap文件,dao,pojo 添加新的方法来满足项
精通Oracle10编程SQL(13)开发触发器
bijian1013
oracle 数据库 plsql
/*
*开发触发器
*/
--得到日期是周几
select to_char(sysdate+4,'DY','nls_date_language=AMERICAN') from dual;
select to_char(sysdate,'DY','nls_date_language=AMERICAN') from dual;
--建立BEFORE语句触发器
CREATE O
【EhCache三】EhCache查询
bit1129
ehcache
本文介绍EhCache查询缓存中数据,EhCache提供了类似Hibernate的查询API,可以按照给定的条件进行查询。
要对EhCache进行查询,需要在ehcache.xml中设定要查询的属性
数据准备
@Before
public void setUp() {
//加载EhCache配置文件
Inpu
CXF框架入门实例
白糖_
spring Web 框架 webservice servlet
CXF是apache旗下的开源框架,由Celtix + XFire这两门经典的框架合成,是一套非常流行的web service框架。
它提供了JAX-WS的全面支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用,同时它能与spring进行完美结合。
在apache cxf官网提供
angular.equals
boyitech
AngularJS AngularJS API AnguarJS 中文API angular.equals
angular.equals
描述:
比较两个值或者两个对象是不是 相等。还支持值的类型,正则表达式和数组的比较。 两个值或对象被认为是 相等的前提条件是以下的情况至少能满足一项:
两个值或者对象能通过=== (恒等) 的比较
两个值或者对象是同样类型,并且他们的属性都能通过angular
java-腾讯暑期实习生-输入一个数组A[1,2,...n],求输入B,使得数组B中的第i个数字B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]
bylijinnan
java
这道题的具体思路请参看 何海涛的微博:http://weibo.com/zhedahht
import java.math.BigInteger;
import java.util.Arrays;
public class CreateBFromATencent {
/**
* 题目:输入一个数组A[1,2,...n],求输入B,使得数组B中的第i个数字B[i]=A
FastDFS 的安装和配置 修订版
Chen.H
linux fastDFS 分布式文件系统
FastDFS Home:http://code.google.com/p/fastdfs/
1. 安装
http://code.google.com/p/fastdfs/wiki/Setup http://hi.baidu.com/leolance/blog/item/3c273327978ae55f93580703.html
安装libevent (对libevent的版本要求为1.4.
[强人工智能]拓扑扫描与自适应构造器
comsci
人工智能
当我们面对一个有限拓扑网络的时候,在对已知的拓扑结构进行分析之后,发现在连通点之后,还存在若干个子网络,且这些网络的结构是未知的,数据库中并未存在这些网络的拓扑结构数据....这个时候,我们该怎么办呢?
那么,现在我们必须设计新的模块和代码包来处理上面的问题
oracle merge into的用法
daizj
oracle sql merget into
Oracle中merge into的使用
http://blog.csdn.net/yuzhic/article/details/1896878
http://blog.csdn.net/macle2010/article/details/5980965
该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据. ORACLE 9i 中,使用此命令必须同时指定UPDATE 和INSE
不适合使用Hadoop的场景
datamachine
hadoop
转自:http://dev.yesky.com/296/35381296.shtml。
Hadoop通常被认定是能够帮助你解决所有问题的唯一方案。 当人们提到“大数据”或是“数据分析”等相关问题的时候,会听到脱口而出的回答:Hadoop! 实际上Hadoop被设计和建造出来,是用来解决一系列特定问题的。对某些问题来说,Hadoop至多算是一个不好的选择,对另一些问题来说,选择Ha
YII findAll的用法
dcj3sjt126com
yii
看文档比较糊涂,其实挺简单的:
$predictions=Prediction::model()->findAll("uid=:uid",array(":uid"=>10));
第一个参数是选择条件:”uid=10″。其中:uid是一个占位符,在后面的array(“:uid”=>10)对齐进行了赋值;
更完善的查询需要
vim 常用 NERDTree 快捷键
dcj3sjt126com
vim
下面给大家整理了一些vim NERDTree的常用快捷键了,这里几乎包括了所有的快捷键了,希望文章对各位会带来帮助。
切换工作台和目录
ctrl + w + h 光标 focus 左侧树形目录ctrl + w + l 光标 focus 右侧文件显示窗口ctrl + w + w 光标自动在左右侧窗口切换ctrl + w + r 移动当前窗口的布局位置
o 在已有窗口中打开文件、目录或书签,并跳
Java把目录下的文件打印出来
蕃薯耀
列出目录下的文件 文件夹下面的文件 目录下的文件
Java把目录下的文件打印出来
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年7月11日 11:02:
linux远程桌面----VNCServer与rdesktop
hanqunfeng
Desktop
windows远程桌面到linux,需要在linux上安装vncserver,并开启vnc服务,同时需要在windows下使用vnc-viewer访问Linux。vncserver同时支持linux远程桌面到linux。
linux远程桌面到windows,需要在linux上安装rdesktop,同时开启windows的远程桌面访问。
下面分别介绍,以windo
guava中的join和split功能
jackyrong
java
guava库中,包含了很好的join和split的功能,例子如下:
1) 将LIST转换为使用字符串连接的字符串
List<String> names = Lists.newArrayList("John", "Jane", "Adam", "Tom");
Web开发技术十年发展历程
lampcy
android Web 浏览器 html5
回顾web开发技术这十年发展历程:
Ajax
03年的时候我上六年级,那时候网吧刚在小县城的角落萌生。传奇,大话西游第一代网游一时风靡。我抱着试一试的心态给了网吧老板两块钱想申请个号玩玩,然后接下来的一个小时我一直在,注,册,账,号。
彼时网吧用的512k的带宽,注册的时候,填了一堆信息,提交,页面跳转,嘣,”您填写的信息有误,请重填”。然后跳转回注册页面,以此循环。我现在时常想,如果当时a
架构师之mima-----------------mina的非NIO控制IOBuffer(说得比较好)
nannan408
buffer
1.前言。
如题。
2.代码。
IoService
IoService是一个接口,有两种实现:IoAcceptor和IoConnector;其中IoAcceptor是针对Server端的实现,IoConnector是针对Client端的实现;IoService的职责包括:
1、监听器管理
2、IoHandler
3、IoSession
ORA-00054:resource busy and acquire with NOWAIT specified
Everyday都不同
oracle session Lock
[Oracle]
今天对一个数据量很大的表进行操作时,出现如题所示的异常。此时表明数据库的事务处于“忙”的状态,而且被lock了,所以必须先关闭占用的session。
step1,查看被lock的session:
select t2.username, t2.sid, t2.serial#, t2.logon_time
from v$locked_obj
javascript学习笔记
tntxia
JavaScript
javascript里面有6种基本类型的值:number、string、boolean、object、function和undefined。number:就是数字值,包括整数、小数、NaN、正负无穷。string:字符串类型、单双引号引起来的内容。boolean:true、false object:表示所有的javascript对象,不用多说function:我们熟悉的方法,也就是
Java enum的用法详解
xieke90
enum 枚举
Java中枚举实现的分析:
示例:
public static enum SEVERITY{
INFO,WARN,ERROR
}
enum很像特殊的class,实际上enum声明定义的类型就是一个类。 而这些类都是类库中Enum类的子类 (java.l