自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(140)
  • 收藏
  • 关注

原创 StarRocks优化统计分析

使用了 event_time精确过滤,但表是按 date_trunc('month', event_time)​​按月分区​​,​​无法利用分区裁剪,会扫描多个分区。​​COUNT(DISTINCT) 是计算密集型操作,尤其当 device_id 数量很大时,比如上百万个不同设备访问,性能开销非常高。这是一个​​高CPU、高内存、低效的操作​​,尤其在大规模数据下,可能消耗数秒甚至更长时间。使用 Bitmap 类型 + BITMAP_UNION_COUNT 实现高性能去重统计​​。1、分区字段未有效利用。

2025-08-14 17:55:56 171

原创 python代码调用三方网站获取当前网络ip

获取当前ip为了防止失败,使用了三个不同的网站进行获取ip,当前一个失败时,会通过下一个网站获取ip,每个网站的返回格式都不一样,需要单独解析;为了实现公司网路访问项目登录时免复杂校验的功能,需要获取公司网络的ip地址,但是公司没有购买固定ip,ip地址会动态变化。2、通过在公司机房允许python脚本,将获取到的ip地址通过http请求更新到项目中。2、当三个网站都获取失败后,可以使用钉钉机器人发送告警信息,方便监控(1、项目中维护一个ip白名单列表,用于请求校验ip是否在白名单中。

2025-08-13 14:39:18 192

原创 MySQL中的缓存机制

​​MySQL 5.7 及更早版本​​提供了一个 ​​查询缓存(Query Cache)​​,它会 ​​缓存 SELECT 查询的结果集​​。​​当相同的 SQL 语句再次执行时,MySQL 可以直接从缓存返回结果,而不需要重新查询磁盘​​,从而提高查询速度。​​InnoDB 存储引擎的核心缓存机制​​,用于 ​​缓存表数据和索引数据​​,减少磁盘 I/O。​​它是 MySQL 最重要的缓存,直接影响性能​​。缓存类型MySQL 5.7 及之前MySQL 8.0作用是否推荐。

2025-08-13 11:35:40 988

原创 钉钉群通过使用http接口发送消息

通过 @ 群机器人,将消息发送到指定外部服务,还可以将外部服务的响应结果返回到群聊会话。如果你需要在普通群(即外部群)发送消息时,你可以参考本文档操作步骤创建自定义机器人。登录钉钉客户端,选择需要添加机器人的群聊会话。(可选)是否开启 Outgoing 机制。单击编辑标识,上传机器人头像。进入群聊会话,单击右上角。,选择自定义机器人。

2025-07-30 11:31:53 320

原创 RabbitMQ使用topic Exchange实现微服务分组订阅

案例场景:用户下单后需要多个微服务(如营销、会员)分别订阅并处理订单事件,且每个微服务可能有多个集群实例,需要保证同一个微服务的集群中,只有一个实例消费到消息。使用 topic 类型的 Exchange:支持灵活的路由规则,不同微服务可通过 binding key 订阅特定事件。不同于Kafka和rocketMQ有分组消费的功能,rabbitMQ需要通过topic Exchange实现。生产者(订单服务)发布消息时,指定路由键(routing key) 为。4、消息订阅(营销服务)

2025-07-02 22:49:16 274

原创 EMQ X Broker 配置HTTP 的外部鉴权接口

在 EMQ X Broker 中可以通过配置 ACL(Access Control List,访问控制列表) 来实现。EMQ X 提供了多种 ACL 插件机制,其中最常用、也最适合企业级使用的方案是:基于 HTTP 的外部鉴权接口(

2025-06-26 22:11:24 323

原创 使用 Netty 实现 TCP 私有协议(解决粘包/拆包)

Netty 是一个高性能、异步、事件驱动的网络框架,非常适合用于构建 TCP 通信中的私有协议。相比原生 Java Socket,Netty 提供了更简洁、更高效的粘包/拆包处理机制,下面案例通过使用。如果消息长度超过 4 字节能表示的范围,可以调整为 8 字节(LengthFieldPrepender(8))。前 4 字节是长度字段(5 字节),后 5 字节是消息内容,总共发送 9 字节。2)长度字段表示的是消息内容的字节数,不包括长度字段本身。1)自动在每条消息前插入 4 字节的长度字段。

2025-06-25 21:36:49 368

原创 Elasticsearch 中实现个性化推荐搜索

商品数据存储使用存储商品的向量表示。其他字段(如标题、类别、价格)用于辅助搜索。用户画像包括兴趣标签、历史行为和嵌入向量。DSL 查询根据用户画像生成推荐查询。结合文本搜索、k-NN 搜索和布尔查询实现个性化推荐。向量化工具使用 Sentence-BERT 等模型生成商品和用户的向量。

2025-06-20 13:57:55 539

原创 StarRocks存算一体集群资源预估

个人见解:上述BE16c64g是官方基于在大型数据集上处理高度并发或复杂的查询时的配置,如果不是这种场景,对数据有效的分区过滤(表设计很重要),可以使用8g16g。2、磁盘:这个得根据业务数据来做一个计算,假设日均数据1000w,三个副本,下面写一个计算过程。跟预估结果,每台BE节点机器磁盘1TB,并且需要对BE节点磁盘做监控。​​安全边际​​:建议按 ​​3 TB​​ 规划,应对数据增长波动。​​保守估计​​:至少预留 ​​2~2.5 TB​​ 磁盘空间。

2025-04-30 11:50:55 384

原创 SSH 反向隧道访问内网服务

在内网192.168.1.157win机器的虚拟机里部署了StarRocks,虚拟机的地址是192.168.0.94,现在需要在服务器地址是120.xx.xx.xx的机器中部署一个go服务,使用go代码来连接内网192.168.0.94虚拟机里的StarRocks 9030 端口。原理:通过 SSH 的远程端口转发,将 120.xx.xx.xx 服务器的某个端口映射到内网虚拟机192.168.0.94的 9030 端口。确保 120.xx.xx.xx 的 SSH 服务允许远程端口转发。

2025-04-24 19:47:47 394

原创 3台CentOS虚拟机部署 StarRocks 1 FE+ 3 BE集群

动了三个配置:放开了storage_root_path 的注释,priority_networks修改为本机ip(注意2台机器的ip不同) ,增加了限制jvm的内存 JAVA_OPTS="-Xmx2048"放开了storage_root_path 的注释,priority_networks修改为本机ip ,增加了限制jvm的内存 JAVA_OPTS="-Xmx1024"2、下载源码 StarRocks-3.4.2-centos-amd64.tar.gz(我使用的版本 3.4.2),上传到虚拟机里。

2025-04-24 14:33:18 1416

原创 使用Ollama通过预训练模型获取句子向量(rest api方式)

到这就可以通过接口调用把句子转为向量,然后就可以在elasticsearch中使用了~接口里有2个入参,model表示模型,prompt作为句子入参。2、搜索预训练模型(all-minilm),选择合适的操作系统。3、复制下载指令并下载。1、下载Ollama。

2025-04-09 19:19:00 284

原创 Windows Anaconda使用Sentence-BERT获取句子向量

Anaconda是一个流行的Python数据科学平台,它包含了许多科学计算和数据分析的库,包括和。虽然不是必需的,但使用Anaconda可以简化环境管理和依赖安装的过程。可以从下载并安装Anaconda。为了避免不同项目之间的依赖冲突,建议为每个项目创建一个独立的虚拟环境。在虚拟环境中,通过pip安装和默认情况下,pip会从 pypi 的官方服务器下载包,这可能会因为网络问题导致速度较慢。可以切换到国内的镜像源来加速下载。

2025-04-08 20:32:37 1118 2

原创 es中分页边界数据重复问题处理方式

上述方案都可以解决翻页数据重复的问题,由于是c端查询,随着用户数量凉的增加,使用快照方式会导致服务器内存紧张,遂放弃2和3,如果在业务能够容忍新数据暂时查询不出来,可以使用1方案来解决。使用es提供的Scroll,基于初始搜索时刻的固定快照,内存较高,需维护完整的搜索上下文,需要手动管理(clear-scroll)以避免内存泄漏,适用于数据导出、批量处理。使用es提供的Point in time,提供基于创建时刻的数据快照,自动过期释放资源,,会占用内存,占用内存较低,适用于实时搜索、分页浏览。

2025-04-02 20:29:31 543

原创 es自定义ik分词器中文词库实现热更新

2.6、在es的config下面创建analysis-ik目录,{es-path}\config\analysis-ik。2.8、编辑 IKAnalyzer.cfg.xml,将web服务中的数据接口地址填进去。2.4、在es插件目录下新建ik目录,{es-path}\plugins\ik。2.7、将ik目录下config里面的文件拷贝到analysis-ik目录中。经过测试ik读取web地址的频率是每分钟一次,暂时没找到强制刷新的方法。索引字段与属性都属于静态设置,若后期变更历史数据需要重建索引才可生效。

2025-04-02 17:41:17 826

原创 es 第28节-深入掌握集群组建与集群设置

到这里就完成了3个节点的es集群配置,由于es的弹性扩展,当我们的集群资源不足时,可以动态的添加节点,es会自动帮助我们平衡节点上的数据,利用这个自动平衡节点数据的特性,我们可以很方便的做机房迁移,只要在新机房把节点部署起来并连接上集群,待数据都分配到新节点上后,可以依次关闭老机房的节点,但是自动平衡数据也有缺点,如果单个节点上的数据过大,集群间的网络带宽可能会被打满。# 1:有很多参数调节的设置,无需在集群启动之前设置,可以在集群启动之后,依据实际需求动态调整,即刻生效。大规模无需超过100。

2025-04-01 22:23:38 1118 5

原创 Java使用Californium 实现CoAP协议交互代码案例

CoAP(Constrained Application Protocol)是一种专为资源受限设备设计的互联网协议,特别是在物联网(IoT)环境中。它旨在允许这些设备在低功耗、低带宽和不稳定的网络连接条件下进行通信。CoAP协议基于REST架构风格,类似于HTTP,但针对的是更小、更简单的设备。CoAP非常适合用于智能家居、智能城市以及其他需要大量小型传感器和执行器相互通讯的场景。由于其高效性和适应性,使得即使是资源极为有限的设备也能参与到更大的网络和服务生态系统中。

2025-03-31 09:22:23 592

原创 记一个阿里云CDN域名配置不当引起服务鉴权失效问题

2、排查服务器代码中前置拦截器,查看是否拦截器中从cookie获取出错,或者是拦截器中的中间件出错,经过排查在结合现有的现象表明,请求不携带JWT也会使用第一个登录该域名的用户信息身份完成操作。问题现象:用户使用新域名登录后,返回的不是该用户的身份信息,不管是哪个账号,登录后返回的都是第一个使用该域名登录的用户信息,并且原先有鉴权的接口,现在通过该域名访问都不需要写在JWT凭证就能访问成功。3、开始怀疑是域名引起的问题,开始绕过域名使用ip直接访问服务器,结果发现请求正常了,确认是域名引起的。

2025-03-27 22:41:29 422

原创 es 第27节-运用Script脚本实现复杂需求

### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!#### 1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。# ES的脚本类同传统数据库的UDF,可以自定义一些规则表达式,目的是满足日益复杂的应用需求。# Lucene,继承原生lucene内置能力,性能好,简洁直接,性能同比其它,最好。

2025-03-27 22:18:18 1117

原创 MQTT协议笔记

消息格式MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息协议,专为低带宽、高延迟或不可靠的网络设计,广泛应用于物联网(IoT)设备之间的通信。

2025-03-26 15:30:57 770

原创 ES 使用geo point 查询离目标地址最近的数据

将带有经纬度坐标的省市区数据存入es中,mappings字段使用geo point类型,索引及查询dsl如下。使用mysql计算可优化的地方在于,新版本mysql提供了空间几何字段类型POINT,优化后新表结构如下。将带有经纬度坐标的省市区数据存入mysql中,使用mysql直接计算,表结构及查询sql如下。需求描述:项目中需要通过经纬度坐标查询目标地所在的行政区。解决思路有两种,使用mysql和es分别查询。计算每个点与目标点之间的距离(单位为米)。1、使用mysql进行查询。2、使用es进行查询。

2025-03-13 15:15:38 501

原创 Elasticsearch Java High Level Client [7.17] 使用

es 的 HighLevelClient存在es源代码的引用,结合springboot使用时,会存在es版本的冲突,这里记录下解决冲突和使用方式(es已经不建议使用这个了)。es 7 high Level client 主要的集成问题还是在与springboot的版本冲突,这点解决掉就可以了,官方文档里都能找到使用说明。pom依赖文件如下,在 dependencyManagement 里解决springboot引起的版本冲突-2.3 search 分页。2.4 aggs 聚合统计。2.5 新增单条数据。

2025-03-13 14:17:17 681

原创 Elasticsearch Java API Client [8.17] 使用

下面是按照了城市维度分组,统计了每个城市下面业务类型数量、网络类型数量、sdk版本数量、平台数量、手机型号数量,以及最后一个是带条件过滤在统计的数据平均值。es8出了个新的JavaClient,相较于HighLevelClient少了对es源代码的引用,更加的轻便了,这里记录下使用方式。建议使用模版的方式创建索引,比如我下面的dsl语句规定了索引内字段的类型。有单个新增和批量新增,使用批量时最好把索引的更新频率设置一下。聚合没有太多的通用性,按照自己业务的需求写就可以。本地运行的是es 8.6.2版本。

2025-03-10 20:59:43 933

原创 go执行java -jar 完成DSA私钥解析并签名

起因,最近使用go对接百度联盟api需要使用到DSA私钥完成签名过程,在百度提供的代码示例里面没有go代码的支持,示例中仅有php、python2和3、java的代码,网上找了半天发现go中对DSA私钥解析支持不友好,然后决定使用在java中完成签名计算过程,生成可执行jar后由外部传入参数获取签名数据。

2025-02-20 15:52:55 417

原创 es 第26节-文本分词深入探查

### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!# Token filter:基于前面文本分词之后的词项,做一些过滤信息,处理一些词项,达到归一化处理,语法关键字: filter。# 倒排索引是ES存储的基础,文本信息分词之后基于排索引构建索引库,即使没有分词,也是一个独立此项,也会基于倒排存储;# Whitespance,按照空格拆分词,不转换其中任何的字符,中文分词时,也是按照空格分词。

2025-01-24 11:11:31 1181

原创 es 第25节-运用Rollup减少数据存储

支持计算聚合函数:avg、max、min、sum、bucket_script 管道聚合、cardinality、filter、geo_bounds、geo_centroid、median_absolute_deviation、missing、percentiles、rare_terms、scripted_metric、terms、value_count、weighted_avg。# 1.与Rollup类似,将数据转换变化,基于聚合的思维,区别在于,可以不受时间限制,主要是在已有的聚合上做一次预聚合;

2025-01-21 23:15:12 1087 1

原创 es 第24节-运用SQL简化DSL查询

###2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!第1个,统计第95百分位的飞行时间平均时间;####1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。#ES提供的SOL查询近可能的靠近SOL的表达能力,但与标准的SOL还是有点差距。#分页查询,注意返回结果中的cursor,cursor相当于游标,用于翻页。

2025-01-18 23:06:25 823

原创 es 第23节-运用Pipeline实现二转聚合统计

### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!2.基于前置的分桶聚合,之后进行管道聚合。# 每个数据聚合阶段是一个环节,多个环节串联一起来,形成一个管道模型,上一个环节的聚合结果是下一个环节的输入数据。# 有些应用场景,分桶聚合之后的数据需要进行一些过滤,基于管道聚合很容易实现,有点类似与数据库中的。# 基于一定的窗口,计算前后分桶数据差值,如:redis监控中,总命令数差值,默认是递增的。

2025-01-10 22:49:38 921

原创 es 第22节-Bucket特殊分桶聚合实战

hard_bounds,用于限制分桶的范围,可以缩小分桶数,与extended bounds 内部执行逻辑不一样,善于应用在分桶数非常多的场景,可以大大减小非必要的分桶,减少资源消耗;# extended_bounds,扩展多余分桶数,配合查询条件限制,分桶的范围包括在 min~max之间,用于补足没有数据的间隔分桶。#### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!基于日期的直方图分桶;

2025-01-07 22:23:15 700

原创 es 第21节-Bucket常用分桶聚合实战

shard_min_doc_count,限制分片最小满足的文档数量,或者词项数量,此值默认是0,必须小于 min_doc_count,建议值:(shard_min_doc_count=min_doc_count/分片数)# depth_first,深度优先,擅长分桶数据小的,分桶比较固定的,建议 10000 以内,即 topX 类型,默认。与mysqltemp表完全不是一种逻辑;# size,返回分桶数量,默认 10,限制不能超过 65535,如果超过,需要设置超过参数,见后面设置。

2025-01-03 23:15:48 1248

原创 es 第20节-运用指标聚合快速统计数值

注意 taxful_total_price字段是float类型,数据本身只有2为小数,统计后会产生多小数,这是因为es底层是java写的,java自带的问题。#### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!超过这个值,计数可能会变得有点模糊。# carintility:背后的算法Hyperloglog,该算法是非精确型的,默认3000个,ES最高支持40000个,超过了就是非精确型的。

2025-01-01 22:43:00 1032

原创 es 第19节-运用异步机制执行重度查询

batched_reduce size,控制分片查询响应数,默认5,无需要等待所有分片执行查询完成,即可执行查询结果合并;#### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!# wait_for_completion_timeout,等待超时时间,默认 1s,如果是 1s内返回结果,则直接返回结果;相反,则会返回异步任务元数据信息。# 写一个聚合查询,这里数据量太少,很快就执行完了,就当它比较慢吧。

2024-12-30 22:41:52 1127

原创 什么是 ANT 表达式,以及如何在java中使用

ANT 表达式(也称为或)是一种用于匹配文件路径或目录结构的简单模式匹配语法。它最初由 Apache Ant 构建工具引入,广泛应用于各种构建工具、配置文件、文件系统操作等场景中,用于指定文件或目录的匹配规则。ANT 表达式的语法非常直观,允许使用通配符来匹配文件名、目录名或路径中的某些部分。它类似于 Unix Shell 的路径匹配规则,但有一些特定的扩展和差异。

2024-12-27 11:15:56 889

原创 es 第18节-分页查询使用避坑的一些事

快照查询基于缓存机制,将查询的所有数据ID缓存起来,下次查询,从缓存中直接找寻,避免重复执行查询,是目前业界做深度查询最佳的方式;# Search after,基于排序字段,查询下一页,基于上一页最后一条数据的排序字段值,作为参照,可以保证数据查询量大大减少。# Search after,基于排序字段,查询下一页,基于上一页最后一条数据的排序字段值,作为参照可以保证数据查询量大大减少。# 深度翻页真的需要这么多吗?# ES是分布式的,相比传统数据库多了分片机制,查询一次,要查询多个分片;

2024-12-24 22:18:57 1245

原创 es 第17节-查询结果排序深入解读

### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!# ES默认数据写入,非Text类型都会存储为列式,应用领域数据排序与数据聚合设置索引字段属性,docvalues:true/false,是否启用。# sort.mode,设定写入排序字段取值,max/min,支持多个字段,默认max。# sort.order,设定写入排序字段,排序顺序,支持多个字段,默认asc。

2024-12-20 23:03:41 377

原创 es 第16节-运用启发式特性引导用户查询

string_distance,关键字,词项字符计算距离的方式,支持多种高级的数学算法,建议专业性去看此方面论文,默认internal,其他值 damerau_levenshtein, levenshtein, jaro_winkler, ngram。# max_errors,关键字,最大错误短语数量,默认 1,控制匹配到的返回短语错误数据量,调整值,会增加返回的数据。# confidence,关键字,置信度,控制返回结果的数据量,取值 0~1,默认1,有命中的就返回,无命中的不返回。

2024-12-16 22:40:00 1103

原创 es 第15节-词项查询与跨度查询实战运用

inner_hits:可选参数,用于配置返回的固定文档的详细信息。# span,跨度查询,基于分词词项的精确位置,控制问隔,设定相似度来执行,相比match 匹配类查询,提供了更加底层灵活的查询机制,同时也是非常复杂。# prefix_length,关键字,控制容错词的起始位置,从左开始,设置的值应该小于 value 的字符长度,建议设置的更加精确,性能更好。# 有很多应用场景,我们对于输入的内容并无严格的校验,导致入库的内容有错别字,此时需要一定的纠错查询,ES 针对此需求,设计了糊纠错查询。

2024-12-12 23:25:38 1094

原创 es 第14节-全文文本分词查询

### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!# cross_fields,多字段查询时,部分分词在第一个字段里,其它的分词在另外的字段里phrase,短语匹配,等同match_phase。# 多个查询检索条件有先后,先基于第⼀个条件查询,之后在结果集上执⾏后⾯的查询条件,类似于 if,then 逻辑。# ordered,关键字,查询的内容是否必须符合顺序,取值true/false,默认false。

2024-12-08 22:31:29 818

原创 RabbitMQ 实现分组消费满足服务器集群部署

由于 fanout 交换机会将消息广播到所有绑定的队列,因此 group_a_queue 和 group_b_queue 都会接收到这条消息。接下来,创建一个配置类来声明交换机、队列和绑定关系。为每个消费者组创建单独的消费者类。每个消费者组内的多个消费者会竞争性地从队列中消费消息。中配置 RabbitMQ 的交换机、队列和绑定关系。消费,但每个组内的多个消费者只会有一个成员消费该消息。交换机不使用路由键,它会将消息广播到所有绑定的队列。交换机,并为每个消费者组创建一个独立的队列。注解来监听队列中的消息。

2024-12-06 16:43:47 1016

原创 es 第13节-多条件组合查询实战运用

# 多字段组合查询,数据排序依赖很多字段共同的分值,有些不必要的字段,可以设定一个固定值,仅仅用来作为过滤条件,防止过度干预排序分值计算,从而影响排序。## bool逻辑条件是组合查询,最常用的,也是必须掌握的,DSL查询与SQL不一,传统查询里面的多条件组合通过观关键字组合,这里采用的是以下关键字。## ES 查询默认排序,采取的是依据关键字的关联度计算分值,默认算法是 BM25,多个字段查询时,可以跟不同的字段设定不同的权重,来调整排序。

2024-12-05 22:16:56 1189

空空如也

空空如也

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

TA关注的人

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