自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

寻梦友的博客

好记忆不如烂笔头

  • 博客(155)
  • 资源 (17)
  • 收藏
  • 关注

原创 【python】--python+webSocket初识

因项目需要,结识webSocket。本博客参考网上例子,单纯集成webSocket,初步了解Flask-SocketIO如何工作。

2024-08-12 17:45:12 348 1

原创 【案例】python集成OCR识别工具调研

因项目需要OCR识别能力,且要支持私有化部署。本文将对比市场一些开源的OCR识别工具,从中选择适合项目需要的OCR,且后续进一步研究/训练对应OCR模型。主要OCR识别有:Tesseract_OCR、PaddleOCR、EasyOCR、dddd_ocr、CnOCR备注说明:后面的图片测试使用如下。

2024-07-10 18:27:13 498 1

原创 【ES】--Elasticsearch的Nested类型介绍

当字段是普通数组类型,其实在ES中,每个对象元素的属性值被扁平化存储在了数组中,已丢失了对应关系,因此无法保证搜索的准确。:在实际项目中,一些数组存储的字段,根据匹配条件去查询经常会查询到一些“其他不需要”的数据,为什么会出现这种情况?:word_one是普通数组List,多个must匹配条件会匹配整个List数组数据,而不是每个Bean去匹配。通过key,value形式去更新对应数组节点的数据,如果nested数组多个被匹配,都会被修改。通过高亮显示可以看出,只会匹配第一项数据。

2024-06-29 15:34:50 1250

原创 【ES】--Elasticsearch的高亮模式

一般情况下,用plain highlight也就足够了,不需要做其他额外的设置;如果对高亮的性能要求很高,可以尝试启用posting highlight;如果field的值特别大,超过了1M,那么可以用fast vector highlight;在ES中,针对某个字段同时配置 Fast Vector Highlighting 和 Postings Highlighting 高亮模式是不可行的,因为这两种高亮模式是互斥的。它们分别依赖于不同的内部索引结构和算法,不可能同时应用于同一个字段;

2024-06-29 15:19:38 1169

原创 【ES】--Elasticsearch的翻页详解

ES的分页常见的主要有三种方式:from+size浅分页、scroll深分页、search_after分页。

2024-06-29 15:01:54 1270

原创 【数据结构和算法】--RangeSet时间范围管理示例

ImmutableRangeSet是一个不可修改的RangeSet,而TreeRangeSet则是利用树的形式来实现,提供了高效的查询和插入操作。这种自动合并的特性使得RangeSet能够保持范围的不重叠性,从而简化了范围集合的管理。当向RangeSet中添加一个新的范围时,它会遍历范围树,找到与新范围相交或相邻的现有范围,并进行合并。例如,当查询一个元素是否包含在RangeSet中时,可以从树的根节点开始,沿着适当的分支向下遍历,直到找到一个包含该元素的范围或确定该元素不在RangeSet中。

2024-05-05 15:09:04 467 1

原创 【案例】--自定义DSL查询

自定义ES的DSL查询(dynamic ES Query Language)【DEQL】是针对非结构化信息加工、提取需求而设计的查询语言。DEQL可以任意组合搭配各类逻辑操作符,提供便捷、强大、复杂的查询功能。存在问题思考现实项目中,不同用户都要求根据的自身查询条件来获取想要的数据。但是,对搜索中间件(如ES)了解程度、对表结构的“黑盒”、对业务复杂性等等,这些问题导致搜索效果往往不尽如意,很难做到满足所有用户的要求。

2024-04-23 20:50:11 131

原创 【MongoDB】--MongoDB的组合索引

本文章主要介绍Mongodb的组合索引的使用。

2024-04-23 20:24:37 583

原创 【案例】--“超大容量”存储思考

案例背景最近项目遇到一个问题,用户在创作时,有文件流、图片、超链接、文本等信息产生,而这些信息的容量高达几十M【超大容量的信息】。由于历史技术方案局限性,将超大容量的信息存入mongodb/ES的一个字段中。导致查询时往往会内存泄漏或接口响应慢等现象。思考面对上面的问题,有这些思考:(1)、对于超大容量的文件该如何去存储?(2)、如果是超大容量的二进制信息流该如何存储?----基于超大容量的文件存储,在【(非结构化)文件管理案例】中有详细介绍。下面主要介绍“超大容量的二进制流的存储”。

2024-04-06 15:36:32 161

原创 【ES】--Elasticsearch DSL的简单查询

ES中常见的查询类型分为简单查询、复合查询、聚合查询等。这里基于这些查询进行详细的介绍。**term查询**:单词查询,在字段的倒排索引(发生分词)或者直接在字段值(未发生分词)中查找条件值,只要找到这个条件值就算匹配上,得分为1。**terms查询**:多个单词查询,效果为 多个 term 或者的逻辑。**match查询**:分词后搜索。比如分词后有N个分词,只要匹配上其中一个就可以返回数据。

2024-02-25 17:44:00 1153

原创 【ES】--ES的DSL语句初识

类似关系型数据库,ES也有自己的query语言,其搜索结构都是由json串组合构成请求体发送。Elasticsearch提供了基于JSON的完整查询DSL(特定于域的语言)来定义查询。该篇文章对DSL的基本使用做简单介绍。

2024-02-23 09:00:51 484

原创 【ES】--Elasticsearch的分词器深度研究

分词器是ik_max_word,会将“龙马家书”拆分为“龙马”、“马家”、“家书”。然后filter配置的是edge_ngram_filter,在上面拆分的token词组基础上,按照edge_ngram_filter规则进一步拆分。从结果看:分词器是keyword,filter支持edge_ngram_filter,字符过滤器支持tsconvert【简繁体】。分词器是keyword,表明是不进行分词,但filtet中edge_ngram_filter是按照布长方式拆分token,所以得到如此结果。

2024-02-12 15:33:29 1785 2

原创 【ES】--ES集成热更新自定义词库(字典)

Win10下安装部署Tomcat,在**\webapps\ROOT路径下,创建一个hotDict.dic文件。knowledge_customize.link_info.value设置了[“analyzer”: “ik_max_word”]。在实际项目中词库是时刻在变更的,但又不希望重启ES,对此我们应该如何解决?把“追命少年”加入hotDict.dic文件中,不需要重启Tomcat和ES,等待一分钟左右时间。针对上面的问题,可以采用**“自定义热更新词库”方案:使用Tomcat来实现热更新**。

2024-02-12 15:22:22 1332

原创 【ES】--ES集成自定义分词库

在…\elasticsearch-7.3.2\plugins\ik\config下找到IKAnalyzer.cfg.xml,并打开,如下添加一个自定义的扩展字典myDict.dic,在这里添加词语,并设置编码格式是UTF-8。如果是多个自定义词典,就用;拼接。重启ES,如下表明已经加载了自定义的字典myDict.dic。

2024-02-12 15:16:16 1320

原创 【ES】--Elasticsearch的分词器详解

最近项目需求,针对客户提出搜索引擎业务要做到自定义个性化,如输入简体或繁体能能够互相查询、有的关键词不能被分词搜索等等。为更好解决这些问题,“分词器”的原理和使用至关重要。

2024-02-12 15:07:55 1998

原创 【案例】--分布式”雪花算法案例

前段时间线上系统出现一个严重的bug:一个表中插入两条一样的id记录信息(该字段未设置唯一主键)。查看了代码,第一印象是绝对不可能出现该Bug,不科学,怎么会出现两个相同的id记录呢?带着疑惑又仔细查看了代码,id的生成是SnowFlake雪花算法。大脑灵光一闪,这不就是分布式高并发下,SnowFlake雪花算法会出现重复id的问题。问题发现了,接下来就是“分布式高并发下,如何生成唯一id”的问题。UUIDJava自带的生成一串唯一随机36位字符串(32个字符串+4个“-”)的算法。

2024-02-05 10:02:36 1235

原创 【Redis】--RedissonClient的Lock锁详解

redisson的分布式锁在实际开发中经常遇到,这里将详细介绍各种Lock的源码,通过源码来了解每个Lock的使用,以及介绍相关示例。

2024-02-02 13:11:38 755

原创 【ES】--Elasticsearch的深度分页/内存超限等问题

(2)、查询的内容太大,超过内存限制,报错:entity content is too long [138159637] for the configured buffer limit [104857600]----解决: 设置ES查询内容限制HeapBufferedResponseConsumerFactory。(3)、如何提高ES搜索的内容?ES搜索是有分词功能,为了返回高精度的内容,要设置最低分数。对于ES搜索,往往会有一系列的问题。

2023-12-18 14:36:05 874

原创 【ES】--Elasticsearch的索引别名和主副分片

【----原因:根据条件查询到具体索引的记录,然后对查询到的数据按照“具体index”进行删除。根据“具体index”及主键id,先查询数据,然后“具体index”删除。根据“别名”及主键id,先查询数据,然后“具体index”删除。(2)、优化查询效率,副本的数据和主分片一致,可以充分发挥查询时的效率。使用别名过滤器来屏蔽文档,他们可以对正在执行的查询自动地实施过滤。插入数据时,按照“具体index”来插入数据,同时可以设置别名。例如“在不同的索引创建窗口”。根据“别名”来查询所有索引的数据。

2023-12-18 14:35:34 462

原创 【MongoDB】--MongoDB的Sort排序问题

对于shell的find()查询方法,深度查询往往会触发sort的内存限制,对此,我们可以使用聚合查询aggregate()方法。经过排查,sort排序的字段未使用到索引,sort时触发内存限制而报错。-----从上面可以看出,sort的升序/降序和创建的索引顺序全部相同或全部相反,才会走索引。如果查询语句的排序是单列排序,那么直接加索引即可,(升序/降序)排序规则无影响。------经过测试,建立合适的索引并且语句执行使用了索引,查询没问题。如果查询的排序是使用组合排序,那么需要建立合适的索引。

2023-12-18 14:34:33 833

原创 【MongoDB】--MongoDB的crud操作

一般使用mongodb存储非结构化数据,因此,除了常见的数字类型、String等外,还有数组等复杂格式。查询方式有常见对象/数组等查询、aggregate聚合查询,下面将具体介绍各类查询。

2023-12-18 09:26:58 592

原创 【案例】--“特别抢购”案例

B公司的这套产品有多个应用系统服务【如appId1、appId2、appId3】,每个应用都有各自的业务应用场景,但都需要管理文档,那么就需要磁盘/内存容量。按照上面的要求,同一个公司,不同的组织架构的用户容量分配好,彼此是隔离。这里的技术关键点不是高并发,而是并发,即固定的容量,怎么保证同一时刻多个用户能够抢到容量资源,并且不能超过最大容量限制。根据实际的情况,如何保证并发下,各个应用服务的容量不超限制。A公司的不同组织分配不同的容量,并且不同组织使用产品的不同应用服务,做到分隔。

2023-12-17 21:34:14 70

原创 【python】--文件/文件夹读写及操作

读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。:包括文件夹的创建、修改(改名/移动),查询(查看、遍历)、删除等。:文件夹或文件的路径操作,如绝对路径,文件名与路径分割,扩展名分割等。:包括文件的创建、修改、读取、删除等。

2023-11-26 16:05:51 282

原创 【python】--python基础学习

Python基本数据类型一般分为6种:数值(Numbers)【int有符号整型、float浮点型、bool布尔型、complex复数】、字符串(String)、列表(List)、元组(Tuple)、字典(Dictionary)、集合(Set)。列表中值的切割也可以用到变量[头下标:尾下标],就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。对于from M import *导入语句,在全局变量上加一个前导的下划线,如_var_name。

2023-11-19 17:27:33 246

原创 【案例】--解析提取docx文档案例

项目中遇到这样的一个需求:“一个docx文档,用户根据关键词能搜索定位到文档的哪一页”。docx文档主要有文本、表格、图片、附件这几类组合,为了达到高精度要求,表格、图片、附件等附带的内容也要能够搜索定位到,那么,对docx文档的每一页要收集上述几类的数据,以便后续功能扩展。以上就是这个需求的核心诉求,针对上面的问题,首先我们要解决的是:(1)、“如何精准的对docx文档按照页进行精准提取出文本、图片、表格等位置/信息”;(2)、对图片中文字信息进行提取;

2023-10-29 20:39:34 191

原创 【python】--python环境安装及配置

要安装一个python环境,最起码需要下面几个软件工具【Miniconda、PyCharm】。Python是对应不同版本的环境,Conda可用于安装相关库、工具等。参考该网址即可https://www.quanxiaoha.com/pycharm-pojie/pycharm-pojie-202323.html。下载链接:https://conda.io/miniconda.html。接下来,打开pycharm创建一个项目并关联python版本环境即可。创建Flask项目,关联前面的python版本环境。

2023-10-23 14:08:39 380

原创 【ES】--track_total_hits参数影响ES分页数据

工作遇到一个ES深度分页查询时出现报错,报错内容如下出现这个问题的原因是:ES为了避免用户的过大分页请求造成ES服务所在机器内存溢出,默认对深度分页的条数进行了限制,默认的最大条数是10000条。

2023-10-11 16:48:32 2732

原创 【数据结构和算法】--N叉树中,返回某些目标节点到根节点的所有路径

这么多年工作经历中,“数据结构和算法”真的是超重要,工作中很多业务都能抽象成某种数据结构问题。下面是项目中遇到的一个问题。在一个复杂的N叉树目录上,通过模糊搜索只返回搜索到的【要返回完整的从root到目标节点】节点链路,以便外围系统直接使用按照实际操作,模糊搜索只能搜索到需要的几个目标节点数据,但实际业务需要的是这些目标节点到根节点的结构,以便完美展示。N叉树中,找到所有目标节点到根节点的数据,并构建成tree结构返回。

2023-09-27 17:19:04 1138

原创 【项目管理】--敏捷开发管理之Scrum

从事软件开发工作有7年之久,接触过传统行业、高并发互联网行业、新型工业互联网行业等软件开发工作。在这些年,通过工作得到不少成长,同时在公司也担任过技术项目管理的角色,不同团队往往有自己的工作形式,但“万变不离其宗”,一直接触的是敏捷式项目开发模式。结合自身几年技术项目管理及实际开发经验,做一些简单记录,以后接触新人,也能迅速让新人进入团队开发,熟悉团队工作模式。因此,这里讲述敏捷开发管理的一种Scrum方式。

2023-09-26 17:12:17 708

原创 【案例】---EasyExcel实际项目思考

前面一篇文章介绍了EasyExcel常见的导入导出的方式、以及如果合理持久化存储数据的思考。但是,在实际项目中,我们要考虑的是大内存、高并发场景,在这些场景下,怎么保证我们的功能正常运行。因此,针对文件导入导出,从“大内存、高并发”角度,有以下几点问题思考:(1)、对于大文件上传或多文件上传,如何保证系统性能和提高效率?(2)、大数据量导出,不能导出一个sheet、不能频繁IO操作,技术上如何实现?

2023-09-19 09:59:42 355

原创 【案例】--EasyExcel导入导出文件案例

最近项目中,需要对excel、csv等文件进行解析,并做相关的业务功能。在实际业务中,遇到不少难题:(1)、excel、csv格式未知,如果解析并合理存储数据?(2)、对于大文件上传或多文件上传,如何保证系统性能和提高效率?本篇文章,我们主要介绍的是EasyExcel如何解析各类格式的文档,并合理存储数据的技术方案思路。

2023-09-15 18:08:28 779

原创 【ES】---Aggregation聚合,遇到String类型如何分组

在单纯搜索中,要达到左右模糊查询,可采用 fuzzyQuery: 左右模糊查询 【不分词,fuzziness的参数作用是在查询时,es动态的将查询关键词前后增加或者删除一个词,然后进行匹配】。在一些聚合中,按照一定要求聚合,遇到string类型进行聚合分组。

2023-09-11 10:47:57 402

原创 【ES】---field、field.keyword的区别

另外,Date类型特殊,如果加上 @JSONField(name = “file_upload_time”, format = “yyyy-MM-dd HH:mm:ss”),表明将Date按照format形式转换了,因此在查询时为了不分词,需要加上keyword;ElasticSearch5.x以上版本使用text和keyword作为字符串类型取代之前版本的string类型。:用于全文索引,该类型的字段将通过分词器进行分词,最终用于构建索引;:不分词,只能搜索该字段的完整的值,用于精准匹配过滤和聚合;

2023-09-11 10:43:51 714 1

原创 【mongodb】--自定义排序规则

最近项目接到一个功能点,需要对状态值status字段按照规则排序。这个status在表存储的是String纯字母,另外排序要求又不能按照字典排序方法。那这种问题如何解决?但是,在某些特别场景下, 比如对中文有要求按照指定规则排序,此时就是MongoDB的自定义排序规则。通过集合方式来自定义查询。

2023-09-11 10:28:50 726

原创 【流程引擎】---springboot+camunda案例之费用审批流程

上面分析过程,是按照流程的链路进行执行以及每个阶段能通过哪些接口查询到信息。后续将介绍更复杂的实际案例…

2023-08-19 16:48:58 545

原创 【流程引擎】--Camunda基础及sprringboot简单集成Camunda

目前市场上有常见的流程引擎:JBPM、Activiti、Camunda、Flowable、CompileFlow。它们的发展史如下:Camunda 官方首页:https://camunda.com/Camunda 官方文档:https://docs.camunda.org/get-started/quick-start/Camunda 中文翻译文档:http://camunda-cn.shaochenfeng.com/

2023-08-19 16:34:10 2444

原创 【数据结构和算法】--N叉树返回根节点到目标节点的路径

项目中接触一个问题:在大量有父子关系的列表中,需要筛选出特定约束的数据【要求某个目标节点延续到根节点的数据】。N叉树返回根节点到目标节点的路径。

2023-08-03 17:12:45 795

原创 【案例】--GPT衍生应用案例

GPT,全称Generative Pre-trained Transformer ,中文名可译作生成式预训练Transformer。ChatGPT是由一个叫OpenAI的机构开发的,它使用了一种叫做GPT的技术,这种技术可以让它从互联网上学习大量的文字信息,然后根据文字之间的关联性概率性来生成新的文字。因此,它的局限性是可能会生成不准确或不合适的答案。相信未来技术发展,GPT的准确性会大幅度提高,会应用到各领域/场景,并且能够与其他技术或平台集成。

2023-07-30 16:33:28 1749 1

原创 【MongoDB】--MongoDB聚合Aggregation

聚合操作组值来自多个文档,可以对分组数据执行各种操作以返回单个结果。单一作用聚合、聚合管道、MapReduce。单一作用聚合:提供对常见聚合过程的简单访问,操作都从单个集合聚合文档聚合管道操作:将文档在一个管道处理完毕后,把处理的结果传递给下一个管道进行再次处理MapReduce操作:是将集合中的批量文档进行分解处理,然后将处理后的各个结果进行合并输出。

2023-07-30 15:21:57 1016

原创 【ES】---ES的聚合(aggregations)

聚合是对文档数据的统计、分析、计算。参与聚合的字段类型必须是:keyword、数值、日期、布尔,不能是分词字段。

2023-07-23 13:08:04 828

jca分析工具.zip

利用Jca工具分析JavaCore文件/Thread dump文件。Jca工具分析JavaCore文件/Thread dump文件。很实用。

2020-08-14

redis-4.0.6(Linux版本).zip

安装在CentOS下的Redis.4.0.6版本包。本人亲测,可以正常使用。具体安装步骤见博客介绍。

2020-08-09

CentOS-7(64位 mini版 linux).zip

Linux系统,CentOS7是mini版本,几百M大小,可以搭建Linux服务器环境。比ubuntu的Linux系统小型很多。适合程序员部署相关服务。

2020-08-05

Jdk-1.8(win+Linux).zip

这里提供win+Linux两种环境下的Jdk1.8版本资源。具体安装部署,可以参考本人相关博客文章介绍。很实用。

2020-08-05

Xftp6版本.zip

在CentOS环境下,常用到Xftp6辅助工具。 这里是Xftp6版本。可以正常安装使用。正常安装使用。正常安装使用。

2020-08-05

Xshell-6版本.zip

在CentOS环境下,常用到Xshell辅助工具。 这里是Xshell6版本。可以正常安装使用。正常安装使用。正常安装使用。

2020-08-05

Redis软件+RedisClient工具.zip

这里提供win下,Redis软件和Redis Client客户端。两者结合,在工作中很实用。实用。实用。实用。实用

2020-08-05

HiJson 辅助工具.zip

程序员开发需要的JSon辅助工具。便捷实用。

2020-08-05

apache-tomcat(win+Linux).zip

apache-tomcat,压缩包中有win、linux两种环境的安装包。win是直接解压即可使用。linux是本人在CentOS环境集成的。相关部署可参考本人相关博客文章。

2020-08-05

IDEA-JProfiler插件+JProfiler软件.zip

完整的“[本地会话实时分析模式] IDEA集成JProfiler”所需要的资源。 具体可以参考博客文章的步骤安装。 亲测可以监控分析。

2020-08-05

mysql绿色版3306

这里是mysql绿色版。

2019-03-10

Postman软件安装包

postman用于模拟发包 http

2018-11-06

makrdown安装包

typora markdown软件安装包,开发中很多需要这种.md格式

2018-11-06

Redis安装包

Redis 64位的 msi安装包

2018-11-06

CentOS7下安装搭建Redis-4.0.6

CentOS7下安装搭建Redis-4.0.6的详细过程,有具体的截图说明过程。其中还包含Redis客户端是在Win下搭建,可以连接Redis服务,实现程序测试查看。 tar.gz、exe等包已经包含

2018-09-29

CentOS7下安装elasticsearch-5.2.2分布式集群

CentOS7下安装搭建elasticsearch-5.2.2.tar.gz分布式集群的全过程,包括创建非root用户、配置参数设置等详细过程,这是本人亲自搭建,有详细的截图说明过程。 说明的是:CentOS7下基本的JDK、防火墙等设置就不多讲

2018-09-29

CentOS下 dubbo+zookeeeper伪集群和分布式集群

为了搭建Hadoop平台学习,前期搭建dubbo+Zookeeper集群,这里有详细介绍zookeeeper伪集群和分布式集群, dubbo在tomcat下安装等过程。相关jdk、war、jar等也在百度云https://pan.baidu.com/s/16Eu0afAysdKmNlMXVSfi-Q 下载 ,密码见doc中。

2018-09-21

空空如也

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

TA关注的人

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