自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 资源 (1)
  • 收藏
  • 关注

原创 为什么ES中不推荐使用wildcard查询

理论上本身是一个高效的算法。实践中:它的性能高度依赖于它所操作的数据结构。当与一个有序的词典结合使用时,对于前缀友好的模式(如text*),它可以利用“有序”这一特性进行快速定位,性能极高。但对于前缀不友好的模式(如*text),它无法利用“有序”特性,被迫退化为全量扫描,性能极差。Elasticsearch 作为一个大规模、多租户的系统,必须优先保证整个集群的稳定性和性能。因此,它强烈建议避免那些会导致资源浩劫的操作,而前缀通配符查询正是其中的典型代表。

2025-10-11 15:36:46 961

原创 lucene中AutomatonQuery类的作用

是 Lucene 中一个强大而底层的查询类型,它使用**有限自动机(Finite Automaton)**来匹配索引中的词项(Term)。它是很多常见查询(如通配符查询、正则表达式查询、模糊查询)的底层实现基础,也允许用户构建高度自定义的复杂匹配规则。要理解,首先要明白什么是“自动机”。你可以把一个有限自动机想象成一个状态机或一个流程图,它用来判断一个字符串是否符合某种预设的模式。状态(States): 像流程图中的节点。有一个起始状态。转换(Transitions)

2025-10-11 15:08:12 748

原创 lucene中的PointRangeQuery和PointInSetQuery有什么区别

特性核心概念连续范围离散集合查询逻辑字段值是否落在[min, max]区间内字段值是否等于v1或v2或v3SQL 等价物BETWEEN>=<=IN查询参数一个下界 (lower bound) 和一个上界 (upper bound)一个包含多个精确值的集合 (Set/List/Array)典型用例年龄/价格/日期范围过滤基于一批 ID 列表进行过滤性能极高,得益于 BKD 树的剪枝特性极高,对大量值的集合有特殊优化,远快于。

2025-10-09 13:52:37 611

原创 lucene 8.7.0 版本中的倒排索引、数字、DocValues三种类型的查询性能对比

特性 / 类型倒排索引 (Inverted Index)数字 (Points)DocValues核心思想(反向映射)多维空间分割树(正向映射/列存)数据结构BKD Tree列式存储最擅长的查询文本搜索、关键词精确匹配数值/日期/地理位置的范围过滤排序、聚合、脚本访问字段值查询性能Term 越稀有越快对范围大小不敏感,对数级复杂度,非常快用于过滤时性能极差(线性扫描)不擅长的场景数值范围查询、排序、聚合文本搜索任何形式的搜索/过滤典型查询TermQuery不用于查询,用于sort和。

2025-09-28 17:20:02 1063

原创 Lucene 8.7.0 版本中dvd、dvm文件详解

dvm和.dvd文件共同构成了 Lucene 的DocValues数据。.dvm: 元数据文件,记录了哪些字段拥有 DocValues、它们的类型以及在.dvd文件中的位置信息。可以理解为是.dvd文件的“目录”或“索引”。.dvd: 数据文件,包含了所有文档的实际 DocValues 值,但这些值经过了高度压缩和特定格式的编码。在了解文件格式之前,必须先理解 DocValues 是什么。传统的 Lucene 索引是倒排索引 (Inverted Index),它的结构是词项 -> 文档列表。

2025-09-26 13:38:44 1148 1

原创 Lucene 8.7.0 版本中docFreq、totalTermFreq、getDocCount等方法的含义

方法作用域统计内容docFreq()单个词项文档数量单个词项出现总次数整个字段所有词项的总出现次数整个字段所有词项的文档频率之和整个字段包含该字段的文档数这些统计信息在计算 TF-IDF、BM25 等相关性评分时非常重要。

2025-09-24 15:54:07 465

原创 倒排索引不适合做范围查询的原因

是的,你将 Lucene 的底层原理和 Elasticsearch 的上层实践完美地联系在了一起。ES 中不推荐对keyword字段进行range查询,其根源就在于keyword字段使用倒排索引存储,而倒排索引在处理范围查询时会因“词项爆炸”和“倒排列表大规模合并”而导致严重的性能问题。为了获得高效的范围查询性能,我们必须选择那些底层使用 BKD-Tree(即.dim和.dii文件)进行索引的字段类型,如longdoubledate等。这是 Elasticsearch 数据建模中的一个核心原则。

2025-09-23 14:46:01 864

原创 Lucene 8.7.0 版本中doc、tim、tip、tmd文件详解

文件扩展名文件类型主要用途.doc存储文档ID和词频信息.tim存储词项字典数据.tipTerm Index词项字典的索引文件.tmd词项元数据(8.7版本较少使用)

2025-09-23 11:03:50 911

原创 Lucene 8.7.0 版本的索引文件格式

Lucene 8.7.0 版本的索引文件格式非常丰富,每种文件都有特定的作用。

2025-09-04 15:06:07 349

原创 Failed to submit application_1662088449147_0004 to YARN : User sfapp cannot submit applications to q

提交MR任务,报无队列权限问题

2022-09-02 14:04:55 1984

原创 使用easyexcel时遇到Could not initialize class cglib.beans.BeanMap

maven依赖问题排查

2022-06-14 10:12:43 490

原创 Hadoop远程调试参数配置

在hadoop-env.sh下加#调试NODEMANAGERexpor YARN_NODEMANAGER_OPTS="-agentlib:jdwp=transport=dt_socket,address=11888,server=y,suspend=y"#调试RESOURCEMANAGERexport YARN_RESOURCEMANAGER_OPTS="-agentlib:jdwp=transport=dt_socket,address=10888,server=y,suspend=y"#调试M

2022-04-01 14:14:03 253

原创 java设置远程代理

问题配置代理后,在linux上能curl某接口但是应用代码中通过http访问却不行分析发现telnet连不上,但curl可以。因为curl走了代理,telnet不会走代理,所以java调用时会报连不上的错误。解决应用的启动参数加上代理设置java -Dhttp.proxyHost=ip -Dhttp.proxyPort=port -Dhttps.proxyHost=ip -Dhttps.proxyPort=port ...

2022-01-26 13:47:37 324

原创 ORA-27102: out of memory

问题背景使用Flink Oracle CDC组件<dependency> <groupId>com.ververica</groupId> <artifactId>flink-connector-oracle-cdc</artifactId> <version>2.1.0</version> </dependency>程序在运行一段

2022-01-18 19:02:52 2941

原创 spring aop中ms.getMethod().getAnnotation拿不到注解信息

问题场景注解如下public @interface GlobalQueueLock { String mode() default "block"; String lockName() default "globalQueueLock"; int expire() default 30;}aop pointcut如下 @Pointcut("@annotation(com.sf.annotation.GlobalQueueLock)") public void p

2022-01-12 13:58:14 1637

原创 Java HTTP接口返回数据乱码

问题场景使用hutool工具类发起get请求,代码如下String res = HttpUtil.get(url, Charset.forName("UTF-8"));实际返回结果没有中文,但还是显示乱码,如下问题分析结合这篇文章给的思路(关于Http请求后返回json乱码的问题),并结合源码,发现HttpUtil默认会给请求头加上Accept-Encoding: gzip, deflate设置代码如下导致hutool后续处理时,使用GZIP流解析响应结果而服务端可能并不是GZIP

2021-12-11 12:48:36 3460

原创 SpringBoo同时支持http和https

1.本地生成证书window打开cmd,输入keytool -genkey -alias tomcat -dname "CN=Andy,OU=kfit,O=kfit,L=HaiDian,ST=BeiJing,C=CN" -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 365最终在C:\Users\01393330可以发现keystore.p12文件2.项目配置1.证书复制到src/main

2021-11-25 11:32:26 260

原创 Spring中Primary注解在项目中的解决方案

项目背景项目采用springboot+mybatis-plus+druid。其中druid数据源供mysql使用,信息配置在yml文件中:spring: main: allow-bean-definition-overriding: true profiles: active: dev application: name: iotp datasource: url: jdbc:mysql://${mysql.ip}:3306/idap?character

2021-07-28 14:32:44 495

原创 Apache Hive中JdbcStorageHandler的入门和源码分析

文章目录一、JdbcStorageHandler入门1.为什么要有StorageHandler2.JdbcStorageHandler介绍3.开发步骤(1)环境搭建(2)建表语法(3)创建外部表(4)查询数据二、JdbcStorageHandler源码分析1.划分切片(1)JdbcStorageHandler类 (2)JdbcInputFormat类(3)DatabaseAccessor接口2.查询分片 (1)JdbcRecordReader类(2) JdbcRecordIterator类一、JdbcSt

2021-07-01 11:29:15 1491

原创 java读取远程jar的解决方案

需求背景用户将自己写的java代码打成jar包,然后在A项目的前端页面上上传,后台会将jar包通过http方式上传到B项目。现在有个需求是:A项目某业务逻辑会用到B项目的jar包,执行其中的方法并拿到方法返回结果。需求的难点在于:A项目如何远程执行B项目中jar包中的方法呢?URLClassLoader远程加载java中提供了URLClassLoader类来加载外部jar,并可以执行其中的方法,参考 记录——JAVA动态加载外部JAR,并调用方法以及卸载关闭打开的外部JAR。这篇博文介绍

2021-06-25 14:16:08 1801

原创 java线程池的核心线程数过少引发的血案

前置条件项目采用如下线程池 private static final ExecutorService CACHED_THREAD_POOL = new ThreadPoolExecutor(4, 40, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue(1024), NAMED_THREAD_FACTORY, new AbortPolicy());其中核心线程数为4,最大线程数为40。往线程池提交任务的逻辑如下 Threa

2021-06-25 13:37:18 852

原创 通过HTTP方式上传文件

前言A项目的后台接收到MultipartFile类型的参数,然后需要通过B项目暴露的http接口,将该文件上传至B项目。步骤1.引入相关依赖<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.8.1</version></dependenc

2021-06-22 19:19:49 3826

原创 java Instant与mysql时间对不上

文章目录前置条件问题描述问题解决前置条件1.mysql时间字段字段类型为某条记录的时间为2021-05-19 14:01:342.java时间字段字段类型为Instant createTime;3.代码中jdbc连接信息spring: datasource: url: jdbc:mysql://${mysql.url}:3306/idap?characterEncoding=UTF-8&rewriteBatchedStatements=true&so

2021-05-19 15:32:20 1024

原创 项目maven依赖冲突问题排查思路

文章目录前言问题场景问题分析1.分析异常链路,找到报错代码2.断点跟进3.对比其他正常项目4.分析依赖树,看是哪里引入了jsp-api包问题解决前言先介绍下接口字段校验的框架Java服务端接口参数校验框架——hibernate-validator使用。我们项目采用的springboot,在web依赖中已经封装了该框架,如下所以可以直接使用,无需再引入其他依赖。这里仅贴出一段在项目中用到的、和问题有关的代码,如下ValidationUtils类private static final Vali

2021-05-15 18:04:42 2071

原创 Java引用传递遇到的一个问题

问题场景在项目中有这样一段伪代码:A方法调用B方法,传入引用类型的入参C。B方法在业务处理后将新的引用指向入参。在A方法调用完B方法后,会继续操作入参C。A方法如下void A(){ .....业务处理 //C是一个对象 C c = ... //调用B方法 void B(c) .....业务处理,继续操作参数c}B方法如下void B(入参){ .....业务处理 入参 = 新的引用 .....业务处理}本来以为B方法对参数引用进行修改后,

2021-05-15 17:01:21 247

原创 TDengine在Apache Hive中的探索和实践

前言随着TDengine产品的名气越来越广,为了实现降本增效,公司最近将底层的时序数据库引擎由Opentsdb换成了TDengineHive对JDBC的实现Hive对TDengine的实现遇到的问题总结

2021-04-29 19:05:01 1332

原创 java子类重写父类后的泛型类型返回值

在java中,子类重写父类方法时,子类的返回值可以和父类相同,或者为父类的子类。比如abstract class Parent{ abstract Parent test();}class Son extends Parent{ @Override Son test() { return new Son(); }}而如果父类返回值包括泛型类型,那么子类重写时,如果返回值的泛型类型是父类泛型的子类,此时会报错 abstract class

2021-04-29 18:27:22 2403

原创 mybatis中xml的$符号是什么时候替换的

问题场景xml中某sql语句如下,其中变量使用${}括起来,而不#{}select * from base_collect_model ${condition}目前存在的是事实是,如果使用#{},mybatis底层会先对#{}占位符进行解析,将每个参数包装为ParameterMapping对象,同时将#{}占位符替换为"?",最后设置实际参数时,将有"?"的地方,根据ParameterMapping信息替换为实际的值。现在我们使用的是${},根据上述分析,mybatis解析时无法找到#{}占位符,

2021-04-16 17:09:55 1056

原创 java的appendReplacement方法去除反斜杠

问题场景项目中维护的一个字符串常量的内容为(\\d{2}:\\d{2}:\\d{2}.\\d{3})在业务逻辑中使用Matcher类的appendReplacement方法,将该常量写入StringBuffer中String str = "(\\d{2}:\\d{2}:\\d{2}.\\d{3})"StringBuffer sb = new StringBuffer();Matcher m = r.matcher(moduleFileContent);//moduleFileContent为另

2021-04-08 18:18:03 1678

原创 spring与mybatis的整合

一、原生spring与mybatis的整合分两种方式介绍:原始xml方式和基于注解的方式1.xml方式参考Spring的基本配置和Spring与Mybatis的整合2.注解方式@Configuration//开启事务支持@EnableTransactionManagement//指定mapper接口的路径@MapperScan(basePackages = {"cn.enjoy.dao"})public class MybatisConfig{ @Autowired p

2021-04-03 18:01:43 305

原创 项目中多线程修改同一引用引发的线程安全问题

问题描述项目中存在如下伪代码:其中customThreadPool变量是项目自定义的线程池,fileBeatInstanceDTO变量是线程池外部创建的一个对象。最后issueOperator.operateWhenFirstDeploy方法接收fileBeatInstanceDTO参数。FileBeatInstanceDTO fileBeatInstanceDTO = new FileBeatInstanceDTO(); ...... ...... //赋值 fileBeatInstanc

2021-03-30 17:25:31 429

原创 JAVA责任链设计模式在项目中的体现

项目需求项目包含如下业务逻辑1.前端界面点击“新增采集”按钮,进入后台逻辑。2.后台开始部署FileBeat实例的逻辑。部署过程包含下发、安装、启动、更新配置等操作,每个操作都是一次http接口调用。只有当前一个操作完成后,才能进行下一个操作,否则操作中断。传统设计由于“只有当前一个操作完成后,才能进行下一个操作,否则操作中断”,所以我们定义一个接口方法,方法使用如下伪代码结构:每个操作都用try-catch包裹public void deploy(FileBeatInstanceDTO fil

2021-03-27 17:07:24 193

原创 falcon-agent模块代码里执行sys.CmdOutBytes命令导致的问题

背景介绍在agent模块提供了一个方法,方法里的主要逻辑是通过内置的sys.CmdOutBytes函数,调用linux的sh -c命令。http.HandleFunc("/run", func(w http.ResponseWriter, r *http.Request) { if r.ContentLength == 0 { http.Error(w, "body is blank", http.StatusBadRequest) return } bs, err := io

2021-03-23 09:16:56 392

原创 Hive远程debug步骤

1.官网下载hive启动包我用的包版本为apache-hive-2.3.8-bin.tar.gz,下载完后解压到linux指定目录。我的路径为/app/hive/apache-hive-2.3.8-bin2.官网下载hive源码包对应的版本为apache-hive-2.3.8-src.tar.gz,下载完后解压到window指定目录,...

2021-03-10 19:53:19 1731

原创 kafka主题总消息大小和每条消息大小的计算方式

1.总消息大小假设主题名为monitor_data_to_hbase,共3个分区,分别分布在3个brokers上,都只有1个副本。monitor_data_to_hbase_0分布在broker1,monitor_data_to_hbase_1分布在broker2,monitor_data_to_hbase_2分布在broker3。进入monitor_data_to_hbase_0目录,执行du -shc *.log可以看到输出的总大小为依次类推,再分别计算1、2号分区的大小,最后相加。

2021-03-09 10:45:46 3303

原创 springmvc使用拦截器跳转至不同页面

前言在前后端未分离的传统web项目中,当前端访问后台时,后台controller会跳转至指定页面。假如现在需要根据页面选择的不同语言,让后台跳转至不同页面。传统做法是写不同的controller,每个controller对应一个语言的页面。其实,我们可以只写一个controller,然后再通过拦截器对页面进行修改。代码1.controller代码返回ok.jsp页面@RequestMapping("/ok")public String queryUser(@RequestParam(requ

2021-03-07 16:01:38 1400 1

原创 kafka的producer执行卡住的问题

前言在我前面写的一篇文章中(线上cpu过高的排查思路),提到了网关项目由于抗不住大量数据导致疯狂GC的问题。在解决这个问题之后,我在项目调用下游系统逻辑后加了一段逻辑————往自己搭建的kafka发送数据问题刚开始启动的时候,通过日志发现数据能发送kafka,过了一段时间后,日志没有再打印了。而且每次重新启动都是这个现象。原以为是外部没有再发送监控数据,所以kafka也不会收到。但是奇怪的是,为什么只有在刚启动那段时间才发送后面,就不发送了?断点分析通过打远程断点发现,刚开始启动那会,断点

2021-03-06 12:57:54 1085

原创 传统springmvc同时使用jsp和freemarker出现的无法访问页面的问题

项目介绍项目不是前后端分离,使用的springmvc架构。其中配置类如下,我们同时配置jsp和freeMarker两种静态页面@Configuration@EnableWebMvcpublic class AppConfig implements WebMvcConfigurer { @Bean public FreeMarkerConfigurer freeMarkerConfigurer() { FreeMarkerConfigurer freeMarkerC

2021-02-27 21:16:43 536 3

原创 springmvc三种不同的HandlerMapping介绍

先来看看继承关系,其中主要的类为RequestMappingUrlHandlerMapping、BeanNameUrlHandlerMapping、SimpleUrlHandlerMapping。1.类型一:RequestMappingUrlHandlerMapping该类型用于匹配我们最常用的controller类。原理是,发起请求后,RequestMappingUrlHandlerMapping匹配到RequestMapping注解中实际的url路径,从自身维护的map中根据url取出对应

2021-02-27 20:34:43 1654 2

原创 springboot测试类的子线程中注入对象报错

问题场景springboot测试类某方法如下:启动子线程,每个线程调用monitorPluginService.issueHostPlugin方法@RunWith(SpringRunner.class)@SpringBootTest(classes = Application.class)@ContextConfiguration@Slf4jclass MonitorPluginServiceImplTest { @Autowired private MonitorPlugi

2021-02-20 16:36:20 327

显卡配置显卡配置显卡配置显卡配

显卡配置显卡配置显卡配置显卡配

2025-03-07

dbgfdnbhgfhfgf2222222222

dbgfdnbhgfhfgf2222222222

2025-02-13

Navicat Premium.zip

连接mysq、oracle数据库的工具,以可视化的界面查询和操作数据库中的数据,极大的提升开发人员的工作效率

2020-04-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除