当前位置: 首页 > news >正文

【Solr 学习笔记】Solr 源码启动教程

Solr 源码启动教程

本教程记录了如何通过 IDEA 启动并调试 Solr 源码,从 Solr9 开始 Solr 项目已由 ant 方式改成了 gradle 构建方式,本教程将以 Solr 9 为例进行演示,IDE 选择使用 IntelliJ IDEA。
Solr github 地址:https://github.com/apache/solr
JDK 版本:jdk17
关于系统版本可以参考:https://solr.apache.org/guide/solr/latest/deployment-guide/system-requirements.html

下载 Solr 源码并导入到 IDEA 中

可以从 github 上 clone 下载 java 源码:

git clone git@github.com:apache/solr.git 
# git clone https://github.com/apache/solr.git

亦或者下载相应版本的 java 源码包,如下图所示:
在这里插入图片描述

下载或 clone 好后,用 IDEA 打开 solr 源码,由于现在 Solr 使用 gradle 构建,IDEA 会自动识别 gradle 项目并进行加载,加载好后如下:
在这里插入图片描述
可以在项目的根目录下运行 ./gradlew dev 会构建 Solr 的开发发行版,其会在项目的 solr/packaging 目录下生成 build 目录,如下所示:

我们可以在 help 目录下查看一些关于项目的帮助说明,比如在 formatting.txt 中,如下所示:
在这里插入图片描述
提到了项目使用了 goole-java-format 来风格化代码,所以如果更改 Solr 源码后,我们可以使用 ./gradlew tidy 来风格化代码,亦或者 IDEA 安装 goole-java-format 插件并应用于 Solr 项目。

运行 StartSolrJetty 启动 Solr 服务(非 SolrCloud 方式运行)

如果我们不以 SolrCloud 的方式启动 Solr 服务,我们可以修改 StartSolrJetty 来启动项目,具体做法如下:

  1. 定义 SolrHome 目录
    可以在本地电脑选择一个目录作为 SolrHome,SolrHome 是指 Apache Solr 的主目录,它是 Solr 实例运行的基础环境和配置的中心位置。这个目录包含了所有关键的配置文件、库文件、日志以及包含各个 Solr Core 数据的目录。
    比如我创建了本地目录 /Workspace/SolrHome/Solr9/standalone,之后把项目的solr/server/solr/solr.xml 文件拷贝至该目录下,如下所示:
    在这里插入图片描述
  2. 定义 SolrCore 目录
    之后我们在 /Workspace/SolrHome/Solr9/standalone 中创建一个 core 目录,把 solr/server/solr/configsets/_default/conf 的内容拷贝至该目录下,如下所示:
    在这里插入图片描述
    这里我创建了一个 core_default 目录,并把源码提供的 _default 的配置拷贝了到了这个目录下,这个目录作为演示的 Solr Core 目录。

什么是 Solr Core?
Solr Core 是 Apache Solr 中的一个基本构建块,它代表一个单独的可搜索的文档集合。每个 Solr Core 都包含其自己的索引文件、配置文件和与之相关的处理逻辑。这使得 Solr 能够在同一个 Solr 实例中同时运行多个搜索应用,每个应用拥有不同的数据和配置,但共享相同的资源。


Solr Core 的目录结构
Solr Core 的目录结构是 Solr 应用中管理索引和配置的关键部分。每个 Core 目录通常包含若干关键文件和子目录,这些组成部分确保了 Solr 能够高效地处理搜索请求和索引操作。

Solr Core 目录结构的关键组成部分:

  1. conf/:
    • solrconfig.xml:控制 Solr Core 的操作和行为,包括搜索组件、请求处理器等。
    • schema.xml 或 managed-schema:定义索引中的字段和类型,是索引创建和查询的基础。
    • stopwords.txt:列出在索引过程中将被忽略的词汇,有助于优化搜索效率和准确性。
    • synonyms.txt:定义搜索中使用的同义词,增强搜索的灵活性和深度。
  2. data/:
    • 存放实际的索引数据,由 Lucene 管理,包括但不限于文档数据、索引文件等。
    • 这个目录的内容通常是动态变化的,随着文档的增加、更新和删除而更新。
  3. lib/:
    • 可选的目录,包含 Core 特定的 Java 类库文件。如果某个 Core 需要特殊的库而不是共享 Solr 实例中的库,则会使用这个目录。
  4. lang/:
    • 可选的目录,包含支持多语言处理的配置文件,如语言分析器等。
  5. logs/:
    • 可选的目录,某些配置下 Solr Core 可能会在这里生成特定的日志文件。

功能和用途:

  • conf/ 目录是 Core 配置的核心,影响索引结构和搜索行为的所有方面。
  • data/ 目录是索引和搜索操作的物理基础,直接关联到性能和存储。
  • lib/ 和 lang/ 目录提供了扩展性和灵活性,使得每个 Core 能够根据特定需求定制功能。
  1. 修改 StartSolrJetty 类,并启动
    在项目中找到 StartSolrJetty.java 这个类,如下图所示:

    我们需要对这个类的main方法做简单的修改,具体代码如下:
    public static void main(String[] args) {// System.setProperty("solr.solr.home", "../../../example/solr");// 这里需要填写之前创建的 SolrHome 的绝对路径System.setProperty("solr.solr.home", "/Workspace/SolrHome/Solr9/standalone");Server server = new Server();ServerConnector connector = new ServerConnector(server, new HttpConnectionFactory());// Set some timeout options to make debugging easier.connector.setIdleTimeout(1000 * 60 * 60);connector.setPort(8983);server.setConnectors(new Connector[] {connector});WebAppContext bb = new WebAppContext();bb.setServer(server);bb.setContextPath("/solr");// bb.setWar("webapp/web");// 这里需要填写 Solr 源码的 `solr/webapp/web` 的绝对路径bb.setWar("/Workspace/source-code/solr/solr/webapp/web");//    // START JMX SERVER//    if( true ) {//      MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();//      MBeanContainer mBeanContainer = new MBeanContainer(mBeanServer);//      server.getContainer().addEventListener(mBeanContainer);//      mBeanContainer.start();//    }server.setHandler(bb);try {System.out.println(">>> STARTING EMBEDDED JETTY SERVER, PRESS ANY KEY TO STOP");server.start();while (System.in.available() == 0) {Thread.sleep(5000);}server.stop();server.join();} catch (Exception e) {log.error("failed to start", e);System.exit(100);}}
    
    在代码中,我们需要指定 SolrHome 的绝对路径以及 Solr 的 webapp/web 的绝对路径,webapp/web 目录对应项目目录如下:

    之后运行启动这个类:
    在这里插入图片描述
    浏览器访问:http://localhost:8983/solr,页面如下:
    在这里插入图片描述
  2. 创建 Core
    如下所示:
    在这里插入图片描述
    我们添加一个 Core,这里的 instanceDir 就是刚才我们创建的 Core 目录的名称,添加好后,如下所示,可以看到添加的 Core 名称为 example_demo 同时会在 Core 目录下多出了 data 索引目录以及 core.properties Core 属性文件
    在这里插入图片描述
    在如下页面可以运行查询:
    在这里插入图片描述
  3. 断点调试 Solr 源码
    如果 StartSolrJetty 是以 debug 方式运行的,你可以在项目中打断点调试 Solr 源码,Solr 的请求入口在 SolrDispatchFile.doFilter 处,如下所示:
    在这里插入图片描述

以 SolrCloud 方式运行 Solr 源码

如果想通过 SolrCloud 方式运行并调试 Solr 源码,我们需要创建一个运行应用,具体操作如下所示:

  1. 运行 ./gradlew dev 构建 Solr 开发发行版
    在项目中我们可以运行 ./gradlew dev 构建 Solr 开发发行版,或者在 IDEA 中,在 gradle 面板运行,如下图所示:

    运行成功后,会在 solr/server/build 目录下生成 packaging 目录,如下所示:

  2. 引入 start.jar 依赖项
    上面打包后的目录可以看到有一个 start.jar jar 包,打开项目结构,选择 server 模块,将这个 jar 包添加到依赖项中,如下所示:
    在这里插入图片描述

  3. 新建 solrcloud 应用
    在 IDEA 右上角,如下图所示:
    在这里插入图片描述
    选择 Edit Configurations,之后添加一个 Application 如下所示:

    按下图所示编辑应用:
    在这里插入图片描述
    之后选择 Modify options -> Add VM options
    在这里插入图片描述
    并在 VM options 中添加如下内容:

    -DzkHost=127.0.0.1:2181/solr9
    -Dsolr.jetty.host=0.0.0.0
    -Djetty.port=8983
    -Duser.timezone=UTC
    -Djetty.home=/Workspace/source-code/solr/solr/server
    -Dsolr.solr.home=/Workspace/SolrHome/Solr9/SolrHome_1
    -Dsolr.install.dir=/Workspace/source-code/solr/solr
    -Dsolr.log.dir=/Workspace/SolrHome/Solr9/logs/solr_1
    -Dsolr.log=/Workspace/SolrHome/Solr9/logs/solr_1/solr.log
    -Dlog4j.configurationFile=file:/Workspace/source-code/solr/solr/server/resources/log4j2.xml
    

    注意上面启动参数的路径要改成你自己的,而且要确保你本地是有启动 ZooKeeper 的,上面启动项的含义如下:

    启动项的详细解释:

    1. -DzkHost=127.0.0.1:2181/solr9
      • 指定 Solr 连接到的 ZooKeeper 主机和端口。此属性对于 SolrCloud 模式是必需的,因为它协调集群状态。127.0.0.1:2181 表示 ZooKeeper 运行在本地机器的 2181 端口上,/solr9 是 Solr 使用的 ZooKeeper 的 chroot 路径,它将所有 Solr 相关的数据隔离在这个路径下。
    2. -Dsolr.jetty.host=0.0.0.0
      • 设置 Jetty 服务器绑定的 IP 地址。使用 0.0.0.0 表示接受所有网络接口上的连接,使得任何远程机器都可以访问此 Solr 实例。
    3. -Djetty.port=8983
      • 指定 Jetty 服务器监听的端口号。8983 是 Solr 默认的端口号。
    4. -Duser.timezone=UTC
      • 设置运行 Solr 进程的时区为协调世界时(UTC)。这有助于确保时间的统一性,尤其是在多时区的环境中操作数据时。
    5. -Djetty.home=/Workspace/source-code/solr/solr/server
      • 指定 Jetty 的安装目录。这是 Jetty 服务器寻找其配置文件和库文件的地方。
    6. -Dsolr.solr.home=/Workspace/SolrHome/Solr9/SolrHome_1
      • 设置 Solr 的主目录(SolrHome),Solr 将从这个目录加载其配置文件、核心等信息。
    7. -Dsolr.install.dir=/Workspace/source-code/solr/solr
      • 指定 Solr 的安装目录,Solr 会在这个目录下查找它的一些核心库文件。
    8. -Dsolr.log.dir=/Workspace/SolrHome/Solr9/logs/solr_1
      • 设置 Solr 日志文件的存储目录。这是 Solr 存放日志文件的位置,有助于日志管理和故障排查。
    9. -Dsolr.log=/Workspace/SolrHome/Solr9/logs/solr_1/solr.log
      • 设置 Solr 的日志文件路径。指定具体的日志文件名称和路径,通常用于定制日志文件的存储位置和命名。
    10. -Dlog4j.configurationFile=file:/Workspace/source-code/solr/solr/server/resources/log4j2.xml
      • 指定 Log4j 2 的配置文件路径。这个文件定义了日志管理的配置,包括日志级别、输出格式和输出目的地等。

    之后选择 Working directory 为 项目的 solr/server/build/packaging 目录,如下所示:
    在这里插入图片描述
    填写 Program arguments--module=http,配置完毕如下所示:
    在这里插入图片描述
    点击应用并确定。

  4. 运行调试程序
    如下所示以 Debug 方式运行
    在这里插入图片描述
    由于我本地启动了 ZooKeeper,solr9 路径如下:
    在这里插入图片描述
    启动 solrcloud 后,会初始化一些配置到 ZooKeeper 中,如下所示:
    在这里插入图片描述
    程序启动成功,同时:

    Zookeeper 节点写入了一些数据
    访问 http://localhost:8983/solr 页面如下:
    在这里插入图片描述
    可以看到 SolrCloud 模式下页面有些许不同,当然我们也可以在 SolrDispatchFilter 中打断点,断点依旧会进来:
    在这里插入图片描述

SolrCloud 模式下上传配置和创建 Collection

此时由于 Zookeeper 中没有 Collection 的配置所以此时我们只能创建 _default 配置的 Collection,此时我们可以运行 Solr 代码的 ZkCLImain 方法把我们本地的 Collection 配置上传至 Zookeeper 中。
如下所示:
在这里插入图片描述
源码中我们找到 org.apache.solr.cloud.ZkCLI 这个类,运行 main 方法后,控制台会打印出使用帮助,由此可知如何上传配置,比如我本地有一个 MOVIE 的配置文件,如下所示:

这时,我们需要编辑 ZkCLI 的程序参数,在程序启动参数(Program Arguments)中填写如下内容:
在这里插入图片描述
之后运行程序,访问 Zookeeper,如下所示,可以看到配置文件已上传到指定的 ZK 目录下
在这里插入图片描述
在创建 Collection 的页面上也可同时看到有了 MOVIE 的选项:
在这里插入图片描述

相关文章:

【Solr 学习笔记】Solr 源码启动教程

Solr 源码启动教程 本教程记录了如何通过 IDEA 启动并调试 Solr 源码,从 Solr9 开始 Solr 项目已由 ant 方式改成了 gradle 构建方式,本教程将以 Solr 9 为例进行演示,IDE 选择使用 IntelliJ IDEA。 Solr github 地址:https://gi…...

Java中的事件驱动编程模型

Java中的事件驱动编程模型 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我将为大家介绍Java中的事件驱动编程模型。事件驱动编程模型是一种以事件为核心驱…...

Python 语法基础一

1.变量 python 中变量很简单,不需要指定数据类型,直接使用等号定义就好。python变量里面存的是内存地址,也就是这个值存在内存里面的哪个地方,如果再把这个变量赋值给另一个变量,新的变量通过之前那个变量知道那个变量…...

从零开始:Spring Boot 中使用 Drools 规则引擎的完整指南

规则引擎作用 规则引擎主要用于将业务逻辑从应用程序代码中分离出来,提高系统的灵活性和可维护性。规则引擎通过预定义的规则来处理输入数据并做出相应的决策,从而实现业务逻辑的自动化和动态调整。 例如 门店信息校验:美团点评在门店信息…...

工业边缘计算网关

1 介绍 HINETG系列边缘计算网关(Linux操作系统),是华辰智通的—款面向工业现场设备接入、数据采集、设备监控的工业级边缘计算网关。采用ARM Cortex-A7 800MHz高性能CPU,拥有以太网、串口、CAN口、IO口等丰富的接口,支持以太网、…...

【C++ 初阶路】--- 类和对象(末)

目录 一、const成员1.1 取地址及const取地址操作符重载 二、再谈构造函数2.1 构造函数体赋值2.2 初始化列表2.3 explicit关键字 三、static成员3.1 概念3.2 特性 四、友元4.1 友元函数4.2 友元类 五、内部类六、匿名对象 一、const成员 将const修饰的“成员函数”称之为const成…...

bable 【实用教程】

简介 bable 用于将 ES6 的语法编译为 ES5 只关心语法,不关心 API 是否正确。不处理模块化(webpack 会处理) 搭建开发环境 安装相关的包 npm i babel/cli babel/core babel/preset-env新建文件 .babelrc,内容为 { "presets…...

Android中使用startActivityForResult启动活动

Android中使用startActivityForResult启动活动 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在本文中,我们将深入探讨Android开发中使用startActi…...

NineData和华为云在一起!提供一站式智能数据库DevOps平台

以GuassDB数据库为底座 NineData和华为云一起 为企业提供 一站式智能数据库DevOps平台 帮助开发者 高效、安全地完成 数据库SQL审核 访问控制、敏感数据保护等 日常数据库相关开发任务 NineData 智能数据管理平台 NineData 作为新一代的云原生智能数据管理平台&#xf…...

深入解析 Redisson分布式锁看门狗机制

一、Redisson分布式锁概述 1.1 分布式锁的意义 在分布式系统中,多个节点可能同时访问共享资源,导致数据不一致或竞态条件。分布式锁通过协调不同节点对共享资源的访问,确保数据的一致性和并发访问的安全性。 1.2 Redisson分布式锁的优势 …...

Apache Arrow 和数据的未来:开放标准推动人工智能发展

Apache Arrow 是一种开源列式内存格式,适用于平面数据和分层数据。在现代数据湖中,开放数据格式(如 Apache Arrow)位于现代对象存储的存储层中。这些格式成为对象存储中的对象。 在最新版本中,Apache Arrow 宣布计划从…...

Vue项目生产环境的打包优化

Vue项目生产环境的打包优化 前言 在这篇文章我们讨论Vue项目生产环境的打包优化,并按步骤展示实际优化过程中的修改和前后对比。 背景 刚开始的打包体积为48.71M 优化 步骤一:删除viser-vue viser-vue底层依赖antv/g2等库一并被删除,…...

oracle数据库之使用Java程序调用存储过程(二十四)

在Oracle数据库中,你可以使用Java程序来调用存储过程。这通常涉及几个步骤:首先,确保你的Java环境能够连接到Oracle数据库;其次,使用JDBC(Java Database Connectivity)来调用存储过程。 以下是…...

西电953总分第一、专业课第一考研上岸

今年上岸西电杭研院网信院网络与信息安全专业,总分370分,专业课116分,分别是总分第一名,专业课第一名,感谢研梦的953叶学姐,非常负责,本硕大佬学姐,当年密码学38分选手(满…...

pytorch-模型训练

目录 1. 模型训练的基本步骤1.1 train、test数据下载1.2 train、test数据加载1.3 Lenet5实例化、初始化loss函数、初始化优化器1.4 开始train和test 2. 完整代码 1. 模型训练的基本步骤 以cifar10和Lenet5为例 1.1 train、test数据下载 使用torchvision中的datasets可以方便…...

Linux /proc目录总结

1、概念 在Linux系统中,/proc目录是一个特殊的文件系统,通常被称为"proc文件系统"或"procfs"。这个文件系统以文件系统的方式为内核与进程之间的通信提供了一个接口。/proc目录中的文件大多数都提供了关于系统状态的信息&#xff0…...

【JavaEE】浅谈线程(二)

线程 线程的常见属性 线程属性可以通过下面的表格查看。 •ID 是线程的唯⼀标识,不同线程不会重复 • 名称是各种调试⼯具⽤到(如jconsoloe) • 状态表示线程当前所处的⼀个情况,下⾯我们会进⼀步说明 • 优先级高的线程理论上来…...

爬虫:爬取知乎热榜一级评论及回答2024不包含翻页

一、先上结果(注:本文仅为兴趣爱好探究,请勿进行商业利用或非法研究,负责后果自负,与作者无关) 1、爬标题及其具体内容 2、抓标题下的对应回答 3、爬取对应一级评论 二、上流程 1、获取cookies(相信哥哥姐姐…...

AI 编程探索- iOS动态标签控件

需求分析: 标签根据文字长度,自适应标签居中显示扩展 超过内容显示范围,需要换行显示,且保持居中显示 AI实现过程 提问: 回答: import UIKit import SnapKitclass DynamicLabelsContainerView: UIView…...

计算机网络——数据链路层(数据链路层概述及基本问题)

链路、数据链路和帧的概念 数据链路层在物理层提供服务的基础上向网络层提供服务,其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。 链路(…...

【前端】前端权限管理的实现方式:基于Vue项目的详细指南

前端权限管理的实现方式:基于Vue项目的详细指南 在Web开发中,前端权限管理是一个确保应用安全性和优化用户体验的关键部分。本文将详细介绍前端权限管理的几种实现方式,并通过Vue项目中的代码示例来演示具体实现方法。 前端权限管理的基本实…...

MySQL数据库基础练习系列——教务管理系统

项目名称与项目简介 教务管理系统是一个旨在帮助学校或教育机构管理教务活动的软件系统。它涵盖了学生信息管理、教师信息管理、课程管理、成绩管理以及相关的报表生成等功能。通过该系统,学校可以更加高效地处理教务数据,提升教学质量和管理水平。 1.…...

windowns server2016服务器配置php调用powerpoint COM组件

解决问题:windowns server2016服务器配置php调用powerpoint COM组件 环境: windows server2016 宝塔(nginxmysqlphp7.2) IIS 搭建宝塔: 下载地址:https://www.bt.cn/download/windows.html ​ 安装使用&…...

Git之checkout/reset --hard/clean -f区别(四十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…...

MySQL数据库基础练习系列:科研项目管理系统

DDL CREATE TABLE Users (user_id INT AUTO_INCREMENT PRIMARY KEY COMMENT 用户ID,username VARCHAR(50) NOT NULL UNIQUE COMMENT 用户名,password VARCHAR(255) NOT NULL COMMENT 密码,gender ENUM(男, 女) NOT NULL COMMENT 性别,email VARCHAR(100) UNIQUE COMMENT 邮箱 …...

算法设计与分析--考试真题

分布式算法试题汇总选择题简答题算法题 2013级试题2019级试题2021年秋考卷 根据考试范围找相应题目做。 分布式算法试题汇总 选择题 下述说法错误的是___ A 异步系统中的消息延迟是不确定的 B 分布式算法的消息复杂性是指在所有合法的执行上发送消息总数的最大值 C 在一个异步…...

【鸿蒙学习笔记】页面和自定义组件生命周期

官方文档:页面和自定义组件生命周期 目录标题 [Q&A] 都谁有生命周期? [Q&A] 什么是组件生命周期? [Q&A] 什么是组件?组件生命周期 [Q&A] 什么是页面生命周期? [Q&A] 什么是页面?页面生…...

ASPICE与ISO 21434:汽车软件与网络安全标准的协同与互补

ASPICE(Automotive SPICE)与ISO 21434在汽车行业中存在显著的相关性,主要体现在以下几个方面: 共同目标: ASPICE和ISO 21434都旨在提高汽车系统和软件的质量、可靠性和安全性。ASPICE关注汽车软件开发过程的成熟度和…...

视频格式转换方法:如何使用视频转换器软件转换视频

众所周知,目前存在许多不同的视频和音频格式。但我们的媒体播放器、移动设备、PC 程序等仅兼容少数特定格式。例如,如果不先将其转换为 MP4、MOV 或 M4V 文件,AVI、WMV 或 MKV 文件就无法在 iPhone 上播放。 视频转换器允许您将一种视频格式…...

vim操作小诀窍:快速多行添加注释

在使用vim编译python代码的时候,经常碰到需要将一段代码注释的情况,每次都要按“向下” “向左”按钮,将光标移到句首,然后再键入#井号键。如果行数较多,则操作相当繁琐。 vim里面有将一段文字前面加#注释的方法&#…...

无线麦克风领夹哪个牌子好,2024年领夹麦克风品牌排行榜推荐

​随着短视频热潮的兴起,越来越多的人倾向于用vlog记录日常生活,同时借助短视频和直播平台开辟了副业。在这一过程中,麦克风在近两年内迅速发展,从最初的简单收音功能演变为拥有多样款式和功能,以满足视频创作的需求。…...

Mybatis入门——语法详解:基础使用、增删改查、起别名、解决问题、注释、动态查询,从入门到进阶

文章目录 1.基础使用1.添加依赖2.在resouces文件下新建xml文件db.properties3.在resouces文件下新建xml文件mybatis-config-xml4.创建一个MybatisUtils工具类5.创建xml文件XxxMapper.xml映射dao层接口6.添加日志5.测试 2.增删改查1.select2.delete3.update4.insert5.模糊查询6.…...

仓库选址问题【数学规划的应用(含代码)】阿里达院MindOpt

本文主要讲述使用MindOpt工具优化仓库选址的数学规划问题。 视频讲解👈👈👈👈👈👈👈👈👈 一、案例场景 仓库选址问题在现代物流和供应链管理中具有重要的应用。因为仓库…...

Docker Compose 一键快速部署 RocketMQ

Apache RocketMQ是一个开源的分布式消息中间件系统,最初由阿里巴巴开发并贡献给Apache软件基金会。RocketMQ提供了高性能、高可靠性、高扩展性和低延迟的消息传递服务,适用于构建大规模分布式系统中的消息通信和数据同步。 RocketMQ支持多种消息模型&am…...

Vscode lanuch.json

Intro 使用launch.json 能够方便的运行需要传很多参数的代码文件 如下: import math import argparse # 1、导入argpase包def parse_args():parse argparse.ArgumentParser(descriptionCalculate cylinder volume) # 2、创建参数对象parse.add_argument(--rad…...

Golang开发:构建支持并发的网络爬虫

Golang开发:构建支持并发的网络爬虫 随着互联网的快速发展,获取网络数据成为了许多应用场景中的关键需求。网络爬虫作为一种自动化获取网络数据的工具,也因此迅速崛起。而为了应对日益庞大的网络数据,开发支持并发的爬虫成为了必…...

2024年跨境电商关键数据统计:市场规模将达到1.976万亿美元

预计2024年跨境电商消费市场规模将达到1.976万亿美元,占全球网上销售总额的31.2%。这一数据无疑展示了跨境电商市场的巨大潜力和迅猛增长趋势。 全球跨境电商的现状与未来 现状 2023年,全球跨境电商市场规模预计达到1.56万亿美元,占全球电子…...

联想至像M3070DNA打印机加粉及清零方法

基本参数: 产品类型:黑白激光多功能商用一体机(打印/复印/扫描) 网络功能:支持有线网络打印 最大处理幅面:A4 双面功能:自动 打印速度:30页/分钟(高速激光打印&…...

通过nginx去除 api url前缀 并保持后面剩余的url不变向后台请求

如 我前台浏览器向后台请求的接口是 http://127.0.0.1:5099/api/sample/sample/getbuttonlist 实际的请求接口传向 http://192.168.3.71:5099/sample/sample/getbuttonlist 方法是向config中加入下面这样一个server server {listen 5099;location /api/ {rewrite ^/a…...

AI技术在现代社会中的广泛应用及其影响

目录 前言: 一、AI技术在医疗领域的应用 二、AI技术在教育领域的应用 三、AI技术在工业领域的应用 四、AI技术在金融领域的应用 五、AI技术在生活领域的应用 前言: 随着科技的不断发展,人工智能(AI)技术逐渐成为人…...

VBA 批量变换文件名

1. 页面布局 在“main”Sheet中按照下面的格式编辑。 2. 实现代码 Private wsMain As Worksheet Private intIdx As LongPrivate Sub getExcelBookList(strPath As String)Dim fso As ObjectDim objFile As ObjectDim objFolder As ObjectSet fso = CreateObject("Scrip…...

OpenHarmony 5.0 纯血鸿蒙系统

OpenHarmony-v5.0-Beta1 版本已于 2024-06-20 发布。 OpenHarmony 5.0 Beta1 版本标准系统能力持续完善,ArkUI 完善了组件通过 C API 调用的能力;应用框架细化了生命周期管理能力,完善了应用拉起、跳转的能力;分布式软总线连接能力…...

计算机网络地址划分A-E(自学)

1、网络地址组成 (1)物理地址MAC(Media Access Control Address) 网卡生产商分配,全球唯一,48/64位二进制 (2)逻辑地址IP(Internet Protocol) 网络层地址,用于在不同网…...

js导入导出

好久没有学习新的知识点了&#xff0c;今天开始学一下前端的知识点。直接在vscode里面编写&#xff0c;然后从基本的前端知识开始。 JS的导入导出 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"…...

python办公自动化之excel

用到的库&#xff1a;openpyxl 实现效果&#xff1a;读取单元格的值&#xff0c;写入单元格 代码&#xff1a; import openpyxl # 打开现有工作簿 workbookopenpyxl.load_workbook(现有工作簿.xlsx) # 选择一个工作表 sheetworkbook[交易表] # 读取单元格的值 cell_valueshe…...

生命在于学习——Python人工智能原理(2.5.1)

五、Python的类与继承 5.1 Python面向对象编程 在现实世界中存在各种不同形态的事物&#xff0c;这些事物之间存在各种各样的联系。在程序中使用对象来映射现实中的事物&#xff0c;使用对象之间的关系描述事物之间的联系&#xff0c;这种思想用在编程中就是面向对象编程。 …...

visual studio 2022配置和使用jsoncpp

下载 jsoncpp下载位置&#xff1a; GitHub - open-source-parsers/jsoncpp: A C library for interacting with JSON. 编译库 1、下载完成之后解压 2、在解压文件的makefiles文件下有个vs71&#xff0c;在vs71中有visual studio项目&#xff0c;不过这里的项目是visual stud…...

Spring Boot中的动态数据源切换

Spring Boot中的动态数据源切换 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;我们将探讨如何在Spring Boot中实现动态数据源切换的技术。动态…...

npm error code EUNSUPPORTEDPROTOCOL 解决

更换包管理工具 npm i -g pnpm pnpm install pnpm run dev 参考 https://blog.csdn.net/qq_42592823/article/details/137541827...

基于改进天鹰优化算法(IAO)优化支持向量机(SVM)数据分类预测(IAO-SVM)

改进天鹰优化算法(IAO)见&#xff1a;【智能优化算法】改进的AO算法(IAO)-CSDN博客 支持向量机(SVM)数据分类预测&#xff1a;基于支持向量机(SVM)的数据分类预测-CSDN博客 代码原理 基于改进天鹰优化算法&#xff08;IAO&#xff09;优化支持向量机&#xff08;SVM&#xf…...

Linux搭建Socks5网络代理服务器,Centos 8 系统

一、目的用途 用于网络代理转发请求&#xff0c;隐藏真实的请求ip地址&#xff0c;或者用于绕过网络限制的目标服务器&#xff0c;将自己的访问请求到代理服务器&#xff0c;通过网络代理服务器将请求转发到目标服务器 二、安装Socks5前的准备 1、从官网下载ss5安装包&#xf…...

uni-app组件 子组件onLoad、onReady事件无效

文章目录 导文解决方法 导文 突然发现在项目中&#xff0c;组件 子组件的onLoad、onReady事件无效 打印也出不来值 怎么处理呢&#xff1f; 解决方法 mounted() {console.log(onLoad, this.dateList);//有效// this.checkinDetails()},onReady() {console.log(onReady, this.da…...

自动化测试的艺术:Postman 脚本使用指南

Postman 是一个强大的 API 开发和测试工具&#xff0c;它内置了脚本功能&#xff0c;允许用户在请求发送前后执行自定义的 JavaScript 代码&#xff0c;从而实现测试流程的自动化。本文将详细介绍如何在 Postman 中使用脚本进行自动化测试&#xff0c;包括测试脚本的编写、运行…...

使用 Qt 实现自定义拖动窗口

文章目录 如何在 Qt 中实现无标题栏窗口的拖动准备工作创建自定义窗口类使用 QDialog 实现拖动功能详细解释代码行解释 小结 如何在 Qt 中实现无标题栏窗口的拖动 在许多桌面应用程序中&#xff0c;我们经常需要自定义窗口外观&#xff0c;包括去掉标题栏&#xff0c;使窗口看…...

【人工智能】--强化学习(2.0)

个人主页&#xff1a;欢迎来到 Papicatch的博客 课设专栏 &#xff1a;学生成绩管理系统 专业知识专栏&#xff1a; 专业知识 文章目录 &#x1f349;强化学习与有监督学习的区别 &#x1f348;数据特点 &#x1f348;学习目标 &#x1f348;反馈机制 &#x1f348;策略…...

大数据面试题之Spark(4)

目录 RDD的容错 Executor内存分配? Spark的batchsize&#xff0c;怎么解决小文件合并问题? Spark参数(性能)调优 介绍一下Spark怎么基于内存计算的 说下什么是RDD(对RDD的理解)?RDD有哪些特点?说下知道的RDD算子 RDD底层原理 RDD属性 RDD的缓存级别? Spark广播变…...

2024年全球汽车零部件供应商百强榜出炉:宁德时代排第4!国轩高科新上榜

6月23日,《美国汽车新闻》重磅发布了2024年全球汽车零部件供应商百强榜。值得一提的是,今年上榜的中国企业又多了两家,分别是国轩高科和三花汽零,另外宁德时代的排名又上升了一位,目前仅次于博世、采埃孚和麦格纳国际这三家传统零部件巨头。中国企业一共上榜15家,其中前5…...

[10] CUDA程序性能的提升 与 流

CUDA程序性能的提升 与 流 1. CUDA程序性能的提升 在本节中,我们会看到用来遵循的基本的一些性能来提升准则,我们会逐一解释它们1.1 使用适当的块数量和线程数量 研究表明,如果块的数量是 GPU 的流多处理器数量的两倍,则会给出最佳性能,不过,块和线程的数量与具体的算法…...

对北京新发地当时菜品三十天内价格分布式爬取(1)---(获取当时菜品数据并构建请求数据推入redis)

本次项目网页url 北京新发地: http://www.xinfadi.com.cn/priceDetail.html 我们首先创建一个爬虫用于收集url与请求的data然后b,c,d使用RedisCrawlSpider来对数据进行分布式爬取 在此篇中我们仅介绍爬虫a 一.获取当天所有菜品数据 这是一条请求的负载我们只需要对pubDateSta…...

VPN的详细理解

VPN&#xff08;Virtual Private Network&#xff0c;虚拟私人网络&#xff09;是一种在公共网络上建立加密通道的技术&#xff0c;通过这种技术可以使远程用户访问公司内部网络资源时&#xff0c;实现安全的连接和数据传输。以下是对VPN的详细介绍&#xff1a; 选择代理浏览器…...

Java入门基础学习笔记44——String

为什么要学习String的处理呢&#xff1f; 开发中&#xff0c;对字符串的处理是非常常见的。 String是什么&#xff1f;可以做什么&#xff1f; java.lang.String 代表字符串。可以用来创建对象封装字符串数据&#xff0c;并对其进行处理。 1、创建对象 2、封装字符串数据 3…...

成都百洲文化传媒有限公司引领电商服务新风尚

在当今数字化时代&#xff0c;电商行业正以前所未有的速度蓬勃发展&#xff0c;而在这个充满机遇与挑战的领域中&#xff0c;成都百洲文化传媒有限公司以其专业的电商服务&#xff0c;成为了行业的佼佼者。作为一家专注于电商服务的传媒公司&#xff0c;百洲文化不仅为商家提供…...