Windows环境下Elasticsearch相关软件安装

news2024/11/27 0:35:08

Windows环境下Elasticsearch相关软件安装

本文将介绍在 windows 环境下安装 Elasticsearch 相关的软件。

1、安装Elasticsearch

1.1 安装jdk

ElasticSearch是基于lucence开发的,也就是运行需要java jdk支持,所以要先安装JAVA环境。

由于ElasticSearch 5.x 往后依赖于JDK 1.8的,所以现在我们下载JDK 1.8或者更高版本。

这里将不再介绍JDK的安装,如果有需要请参考JDK的安装。

下载JDK1.8,下载完成后安装。

在这里插入图片描述

1.2 安装Elasticsearch

1.2.1 ElasticSearch下载

下载地址: https://www.elastic.co/downloads/elasticsearch
在这里插入图片描述

根据需要点击View past releases →选择不同的版本,这里我选择的是7.12.1

1.2.2 解压

在这里插入图片描述

1.2.3 启动Elasticsearch

进入bin目录下,双击执行elasticsearch.bat
在这里插入图片描述

看到started说明启动成功

在这里插入图片描述

1.2.4 测试

打开浏览器输入http://localhost:9200 进行测试,结果如下:

在这里插入图片描述

1.3 安装Elasticsearch-head插件

1.3.1 安装node环境

网址:https://nodejs.org/en/download/

下载Windows版msi的,下载完直接安装,一直确定。

这里选择的安装包是 node-v16.13.1-x64.msi

安装完后cmd查看版本node-v

在这里插入图片描述

1.3.2 安装grunt

grunt是一个很方便的构建工具,可以进行打包压缩、测试、执行等等的工作,5.x里之后的head插件就是通过

grunt启动的,因此需要安装grunt。

npm install -g grunt-cli

查看版本号 grunt -version

在这里插入图片描述

1.3.3 下载head插件

https://github.com/mobz/elasticsearch-head网站下载安装包,解压安装包

在这里插入图片描述

进入head文件夹下,执行命令:npm install (此处是为安装pathomjs)

如果安装速度慢,设置成淘宝的镜像重新安装

npm config set registry https://registry.npm.taobao.org

或者在https://npm.taobao.org/dist/phantomjs/下载

1.3.4 启动

安装完成之后npm run startgrunt server,启动head插件

在这里插入图片描述

访问http://localhost:9100

在这里插入图片描述

发现集群健康值是未连接,下面进行配置的修改。

1.3.5 修改es使用的参数

编辑elasticsearch-7.12.1\config\elasticsearch.yml文件

在这里插入图片描述

# 增加新的参数,这样head插件可以访问es
http.cors.enabled: true 
http.cors.allow-origin: "*"
# 注意,设置参数的时候后面要有空格

在这里插入图片描述

1.3.6 重启es

修改完配置将es重启,浏览器访问 http://localhost:9100

在这里插入图片描述

到此,Elasticsearch和ElasticSearch-head已经装好了。

1.4 Elasticsearch安装为Windows服务

elasticsearch的bin目录下有一个elasticsearch-service.bat

在这里插入图片描述

cmd 进入bin目录下执行: elasticsearch-service.bat install

在这里插入图片描述

原因是使用了系统环境变量中的jdk(1.8),而es7要求的jdk版本为11。

打开elasticsearch-env.bat,找到:

rem comparing to empty string makes this equivalent to bash -v check on env var
rem and allows to effectively force use of the bundled jdk when launching ES
rem by setting JAVA_HOME=
if defined ES_JAVA_HOME (
  set JAVA="%ES_JAVA_HOME%\bin\java.exe"
  set JAVA_TYPE=ES_JAVA_HOME
) else if defined JAVA_HOME (
  rem fallback to JAVA_HOME
  echo "warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME" >&2
  set JAVA="%JAVA_HOME%\bin\java.exe"
  set "ES_JAVA_HOME=%JAVA_HOME%"
  set JAVA_TYPE=JAVA_HOME
) else (
  rem use the bundled JDK (default)
  set JAVA="%ES_HOME%\jdk\bin\java.exe"
  set "ES_JAVA_HOME=%ES_HOME%\jdk"
  set JAVA_TYPE=bundled JDK
)

设置ES_JAVA_HOME环境变量:

在这里插入图片描述

重新执行:

在这里插入图片描述

查看电脑服务es已经存在了

在这里插入图片描述

elasticsearch-service.bat的常用命令:

install: 安装Elasticsearch服务
remove: 删除已安装的Elasticsearch服务(如果启动则停止服务)
start: 启动Elasticsearch服务(如果已安装)
stop: 停止服务(如果启动)
manager: 启动GUI来管理已安装的服务

1.5 Elasticsearch分词器Elasticsearch-Analysis-ik安装

1、进入Elasticsearch安装目录下的bin目录下执行下面命令(只支持 v5.5.1以上)

elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.5.3/elasticsearch-analysis-ik-5.5.3.zip

在这里插入图片描述

2、进入 Elasticsearch安装目录,新建plugins/ik文件夹

https://github.com/medcl/elasticsearch-analysis-ik/releases 找到对应的版本下载zip包,然后

解压放入上面目录重启elasticsearch就可以了。
在这里插入图片描述

3、分词测试

默认分词测试

在这里插入图片描述

ik_max_word

在这里插入图片描述

ik_smart

在这里插入图片描述

2、安装ElasticHD

可执行程序的下载地址:https://github.com/360EntSecGroup-Skylar/ElasticHD/releases/

在这里插入图片描述

下载时需要下载对应的版本:

在这里插入图片描述

下载解压后,就会有一个ElasticHD.exe 的可执行文件,我们来继续看官方说明:

Step1: Download the corresponding elasticHD version,Double click zip package to unzip
Step2: exec elastichd ./ElasticHD -p 127.0.0.1:9800 

意思是说我们要用cmd命令去启动它,在启动的时候去指定它的访问端口。

CMD命令:

cd 文件目录
ElasticHD -p 127.0.0.1:9800  

在这里插入图片描述

如果你觉得每次都这样启动麻烦,可以用个记事本写下来,然后把记事本后缀名改成.bat ,这样就双击启动了。

然后,我们浏览器访问下(如果你启动的服务想要别的电脑访问,就不要使用127.0.0.1 ,要使用局域网IP或者外网

的固定IP)。

在这里插入图片描述

当然,这个工具还有其它的一些特色功能,如果你们有需要,就自己去研究吧。

3、安装Kibana

下载地址:https://artifacts.elastic.co/downloads/kibana/kibana-7.12.1-windows-x86_64.zip

下载完成后解压:

在这里插入图片描述

先去运行es启动完毕后,在进入bin目录后点击Kibana.bat就能运行Kibana。
在这里插入图片描述

浏览器输入localhost:5601就能访问Kibana。

在这里插入图片描述

点击Explore on my ownDismiss

在这里插入图片描述

左侧下拉列表菜单:

在这里插入图片描述

选择Dev Tools

在这里插入图片描述

这样就可以执行相关的语句,这里做了一下小测试,用起来比head插件方便,head插件需要去安装node.js,相

比来说比较麻烦。

在这里插入图片描述

Kinana如果启动出错,进行如下操作:

curl -X DELETE http://localhost:9200/.kibana*
{"acknowledged":true}

4、安装Logstash

logstash 安装,下载最新版本的logstash: https://www.elastic.co/fr/downloads/logstash

在这里插入图片描述

根据自己的需要,点击View past releases →下载相应的版本,这里我下载的是这个版本logstash-7-12-1

https://www.elastic.co/cn/downloads/past-releases/logstash-7-12-1

解压到磁盘根目录下:

在这里插入图片描述

启动脚本在 logstash-7.12.1>bin

在这里插入图片描述

logstash使用

1、进入目录logstash-7.12.1 > config,打开:logstash-sample.conf,设置如下内容:

在这里插入图片描述

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}

2、进入bin目录,cmd启动

logstash.bat -f C:\zsxsoftware\logstash-7.12.1\config\logstash-sample.conf

启动成功

在这里插入图片描述

在这里插入图片描述

3、浏览器访问

在这里插入图片描述

4.1 Logstash同步数据库配置案例

C:\zsxsoftware\logstash-7.12.1路径下新建一个sync文件夹用来进行操作。

新建一个logstash-db-sync.conf文件,文件的内容为:
在这里插入图片描述

input {
    jdbc {
        # 设置 MySql/MariaDB 数据库url以及数据库名称
        jdbc_connection_string => "jdbc:mysql://localhost:3306/logstash-db?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true"
        # 用户名和密码
        jdbc_user => "root"
        jdbc_password => "root"
        # 数据库驱动所在位置,可以是绝对路径或者相对路径
        jdbc_driver_library => "C:\zsxsoftware\logstash-7.12.1\sync\mysql-connector-java-5.1.41.jar"
        # 驱动类名
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        # 开启分页
        jdbc_paging_enabled => "true"
        # 分页每页数量,可以自定义
        jdbc_page_size => "10000"
        # 执行的sql文件路径
        statement_filepath => "C:\zsxsoftware\logstash-7.12.1\sync\logstash.sql"
        # 设置定时任务间隔  含义:分、时、天、月、年,全部为*默认含义为每分钟跑一次任务
        schedule => "* * * * *"
        # 索引类型
        type => "_doc"
        # 是否开启记录上次追踪的结果,也就是上次更新的时间,这个会记录到 last_run_metadata_path 的文件
        use_column_value => true
        # 记录上一次追踪的结果值
        last_run_metadata_path => "C:\zsxsoftware\logstash-7.12.1\sync\track_time"
        # 如果 use_column_value 为true, 配置本参数,追踪的 column 名,可以是自增id或者时间
        tracking_column => "updated_time"
        # tracking_column 对应字段的类型
        tracking_column_type => "timestamp"
        # 是否清除 last_run_metadata_path 的记录,true则每次都从头开始查询所有的数据库记录
        clean_run => false
        # 数据库字段名称大写转小写
        lowercase_column_names => false
    }
}
output {
    elasticsearch {
        # 如果是7.x不设置该属性会失败
        document_type => "_doc"
        # es地址
        hosts => ["127.0.0.1:9200"]
        # 同步的索引名
        index => "logstash-test"
        # 设置_docID和数据相同。itemId与sql同步脚本中的itemId保持一致
        document_id => "%{itemId}"
        # document_id => "%{id}"
        
        # 定义模板名称
        template_name => "myik"
        # 模板所在位置
        template => "C:\zsxsoftware\logstash-7.12.1\sync\logstash-ik.json"
        # 重写模板
        template_overwrite => true
        # 默认为truefalse关闭logstash自动管理模板功能,如果自定义模板,则设置为false
        manage_template => false
    }
    # 日志输出
    stdout {
        codec => json_lines
    }
}

logstash.sql文件内容

SELECT
    i.id as itemId,
    i.item_name as itemName,
    i.sell_counts as sellCounts,
    ii.url as imgUrl,
    tempSpec.price_discount as price,
    i.updated_time as updated_time
FROM
    items i
LEFT JOIN
    items_img ii
on
    i.id = ii.item_id
LEFT JOIN
    (SELECT item_id,MIN(price_discount) as price_discount from items_spec GROUP BY item_id) tempSpec
on
    i.id = tempSpec.item_id
WHERE
    ii.is_main = 1
    and
    i.updated_time >= :sql_last_value
--:sql_last_value是记录的最后的一个值

logstash-ik.json文件内容

{
    "order": 10,
    "version": 1,
    "index_patterns": ["*"],
    "settings": {
        "index": {
            "refresh_interval": "5s"
        }
    },
    "mappings": {
        "_default_": {
            "dynamic_templates": [
                {
                    "message_field": {
                        "path_match": "message",
                        "match_mapping_type": "string",
                        "mapping": {
                            "type": "text",
                            "norms": false
                        }
                    }
                },
                {
                    "string_fields": {
                        "match": "*",
                        "match_mapping_type": "string",
                        "mapping": {
                            "type": "text",
                            "norms": false,
                            "analyzer": "ik_smart",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        }
                    }
                }
            ],
            "properties": {
                "@timestamp": {
                    "type": "date"
                },
                "@version": {
                    "type": "keyword"
                },
                "geoip": {
                    "dynamic": true,
                    "properties": {
                        "ip": {
                            "type": "ip"
                        },
                        "location": {
                            "type": "geo_point"
                        },
                        "latitude": {
                            "type": "half_float"
                        },
                        "longitude": {
                            "type": "half_float"
                        }
                    }
                }
            }
        }
    },
    "aliases": {}
}

track_time文件内容

--- 1970-01-01 00:00:00.000000000 Z

进入cmd启动

logstash.bat -f C:\zsxsoftware\logstash-7.12.1\sync\logstash-db-sync.conf

启动成功

在这里插入图片描述

在这里插入图片描述

{"@version":"1","itemName":"【天天吃货】澳洲大龙虾 餐桌霸气大菜 聚会有面子","imgUrl":"http://122.152.205.72:88/foodie/seafood-1004/img1.png","type":"_doc","price":7840,"@timestamp":"2022-06-12T04:08:00.102Z","itemId":"seafood-1004","sellCounts":206}
{"@version":"1","itemName":"美味三文鱼 寿司 聚会必备","imgUrl":"http://122.152.205.72:88/foodie/seafood-138/img1.png","type":"_doc","price":26800,"@timestamp":"2022-06-12T04:08:00.103Z","itemId":"seafood-138","sellCounts":3051}
{"@version":"1","itemName":"【天天吃货】武汉鸭胗 卤味齐全 香辣麻辣","imgUrl":"http://122.152.205.72:88/foodie/snacks-1002/img1.png","type":"_doc","price":22500,"@timestamp":"2022-06-12T04:08:00.104Z","itemId":"snacks-1002","sellCounts":147}
{"@version":"1","itemName":"新鲜卤辣香菇 香甜可口","imgUrl":"http://122.152.205.72:88/foodie/snacks-90/img1.png","type":"_doc","price":880,"@timestamp":"2022-06-12T04:08:00.104Z","itemId":"snacks-90","sellCounts":2652}
{"@version":"1","itemName":"儿童爱吃奶糖 休闲食品","imgUrl":"http://122.152.205.72:88/foodie/suger-116/img1.png","type":"_doc","price":1520,"@timestamp":"2022-06-12T04:08:00.105Z","itemId":"suger-116","sellCounts":2296}
{"@version":"1","itemName":"【天天吃货】精品碧螺春 居家必备茶叶 喝茶最佳","imgUrl":"http://122.152.205.72:88/foodie/tea-1003/img1.png","type":"_doc","price":17600,"@timestamp":"2022-06-12T04:08:00.106Z","itemId":"tea-1003","sellCounts":3100}
{"@version":"1","itemName":"养生茶必喝红茶 秋冬必备","imgUrl":"http://122.152.205.72:88/foodie/tea-148/img1.png","type":"_doc","price":22800,"@timestamp":"2022-06-12T04:08:00.108Z","itemId":"tea-148","sellCounts":2331}

索引已经新建,查看索引的信息:

在这里插入图片描述

索引的字段和数据库的查询字段是相互对应的。

查看数据:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

搜索测试:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

结果一切正常。

4.2 通过Logstash导入演示数据到ElasticSearch

1、准备数据

https://grouplens.org/datasets/movielens/上下载数据

下载ml-latest-small.zip文件:

https://files.grouplens.org/datasets/movielens/ml-latest-small.zip

解压后得到movies.csv文件

在这里插入图片描述

2、logstash配置文件

logstash-7.12.1/conf目录下拷贝一份logstash-sample.conf文件, 命名为:logstash-movies.conf

内容如下:

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
  file {
    path => "C:/zsxsoftware/logstash-7.12.1/movies/movies.csv"
    start_position => "beginning"
    sincedb_path => "C:/zsxsoftware/logstash-7.12.1/movies/null.txt"
  }
}

filter {
  csv {
    separator => ","
    columns => ["id", "content", "genre"]
  }
  
  mutate {
    split => { "genre" => "|"}
    remove_field => ["path", "host", "@timestamp", "message"]
  }
  
  mutate {
    split => { "content" => "(" }
    add_field => { "title" => "%{[content][0]}"}
    add_field => { "year" => "%{[content][1]}"}
  }
  
  mutate {
    convert => {
      "year" => "integer"
    }
    strip => ["title"]
    remove_field => ["path", "host", "@timestamp", "content"]
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "movies"
    document_id => "%{id}"
    #user => "user"
    #password => "password"
  }
  stdout {}
}

3、执行导入

logstash.bat -f C:\zsxsoftware\logstash-7.12.1\config\logstash-movies.conf

执行需要等一会,而后控制台输出内容,如下:

在这里插入图片描述

4、kibana检查数据是否导入index

在这里插入图片描述

4.3 Logstash实现数据读取

Logstash 配置文件有两个必需元素,输入(inputs)和输出(ouputs),以及一个可选元素 filters。输入插件配

置来源数据,过滤器插件在你指定时修改数据,输出插件将数据写入目标。

在这里插入图片描述

我们首先需要创建一个配置文件,配置内容如下图所示:

在这里插入图片描述

创建配置文件 weblog.conf
在这里插入图片描述

配置内容如下:

input {
  tcp {
    port => 9900
  }
}
 
filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
 
  mutate {
    convert => {
      "bytes" => "integer"
    }
  }
 
  geoip {
    source => "clientip"
  }
 
  useragent {
    source => "agent"
    target => "useragent"
  }
 
  date {
    match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
  }
}
 
output {
  stdout { }
 
  elasticsearch {
    hosts => ["localhost:9200"]
  }
}

在上面,我们同时保留两个输出:stdout 及 elasticsearch。事实上,我们可以定义很多个的输出。stdout 输出对

于我们初期的调试是非常有帮助的。等我们完善了所有的调试,我们可以把上面的 stdout 输出关掉。

启动logstash:

logstash.bat -f C:\zsxsoftware\logstash-7.12.1\streamconf\weblog.conf

在这里插入图片描述

发送数据:

在这里插入图片描述

看logstash的后台输出:
在这里插入图片描述

这一次,我们打开 Kibana,执行命令,成功看到 es 中的这条记录。

在这里插入图片描述

5、安装Filebeat

5.1 下载安装包

https://www.elastic.co/cn/downloads/beats/filebeat

在这里插入图片描述

根据自己的需要,点击View past releases →下载相应的版本,这里我下载的是这个版本filebeat-7-12-1

5.2 解压

在这里插入图片描述

5.3 修改配置文件

编辑filebeat.yml配置文件:

1、配置 filebeat:inputs:path ,这里的路径是所要收集日志的路径。

在这里插入图片描述

2、配置 enabled: true 这个配置很重要,只有配置为true之后配置才可生效,否则不起作用。

在这里插入图片描述

3、配置Outputs ,这里的Outputs有elasticsearch,logstash。按照配置文件下面的示例配置即可,只能配置一

个输出,默认是ElasticSearch。

在这里插入图片描述

5.4 启动

.\filebeat -e -c filebeat.yml

在这里插入图片描述

正常情况下,应该有个链接ES的过程,将数据输出到es。

在这里插入图片描述

5.5 测试

用以下命令向beat.log文件写入内容,以下内容是全量覆盖,不是追加往里面写内容,若想改成追加内容,把下

面的>符号改成 >>即可。

echo "2020-10-31 08:55:09,578 [8] INFO  test.Logging - 2017-06-11 08:55:09--System.ArgumentOutOfRangeException" > beat.log

后台打印信息:

在这里插入图片描述

kinaba查看,多了一个索引:

在这里插入图片描述

默认情况下,Filebeat写事件到名为filebeat-7.12.1-yyyy.MM.dd的索引,其中yyyy.MM.dd是事件被索引的日

期。为了用一个不同的名字,你可以在Elasticsearch输出中设置index选项。

在这里插入图片描述

在这里插入图片描述

到目前为止,和Elasticsearch相关的一些常用的软件都介绍完毕。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/781981.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】深入剖析list

本期我们来深入list的实现原理: 目录 一、STL中的list 二、list的模拟实现 2.1 搭建list的框架 2.2 list迭代器的实现 2.2.1 普通迭代器的实现 2.2.2 const类型迭代器的实现 2.2.3 迭代器中->运算符重载实现 2.3 其他功能函数的实现 2.3.1 insert 2.…

爬虫小白-如何辨别是否有cookie反爬案例

目录 一、Cookie介绍二、cookie生成来源区分查找三、如何判断是否有cookie反爬四、来自服务器生成的cookie反爬解决方法五、来自js生成的cookie反爬解决方法 一、Cookie介绍 先推荐该篇文章简单了解Cookie、Session、Token、JWT1、cookie的类型:会话cookie和持久co…

【LeetCode热题100】打卡第42天:滑动窗口最大值搜索二维矩阵II

文章目录 【LeetCode热题100】打卡第42天:滑动窗口最大值&搜索二维矩阵II⛅前言 滑动窗口最大值🔒题目🔑题解 搜索二维矩阵II🔒题目🔑题解 【LeetCode热题100】打卡第42天:滑动窗口最大值&搜索二维…

装箱问题(背包问题)

题目描述 有一个箱子容量为v(正整数,o≤v≤20000),同时有n个物品(o≤n≤30),每个物品有一个体积 (正整数)。要求从 n 个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。 输入格式 第一行,一个整…

js函数增强

目录 函数的属性arguments将arguments转换成数组rest 纯函数柯里化函数自动实现函数柯里化组合函数自动实现组合化with与evalwitheval 严格模式严格模式的限制 函数的属性 函数其实也是一个对象 是对象就会有对应的方法与属性 以下是几个常用属性 name name属性主要用于访问给…

vue 富文本图片回显

富文本上传 <el-form-item label"服务费打款银行回单" prop"bankreceipt"> <!-- <ImageUpload--> <!-- :value"form.bankreceiptUrl"--> <!-- :fileType"fileType"--> <…

【解决方案】视频传输方案怎样选择适用的WiFi模块

工作环境中&#xff0c;我们接触的最多的是有线传输&#xff0c;但是这个会因为转换接口、传输距离等原因受到一些限制&#xff0c;而无线传输不会&#xff0c;不需要布线&#xff0c;不限制接口&#xff0c;传输距离也由于有线传输&#xff0c;这也是物联网广泛使用无线通信技…

了解下余弦相似度在文本处理中的应用

大家好啊&#xff0c;我是董董灿&#xff01; 昨天写了一篇介绍词向量的文章&#xff1a;5分钟搞懂什么是词嵌入&#xff0c;里面说到&#xff1a;通过把文本转换为词向量&#xff0c;就可以十分方便的计算两者之间的关系&#xff0c;看看哪两个单词更为相近。 比如有四个单词…

AtCoder Beginner Contest 288 F. Integer Division(递推+前缀和优化dp)

题目 给定一个n(2<n<2e5)位的数字串X&#xff0c; 可以将X划分成若干段&#xff0c;得分为每一段的乘积&#xff08;可以不分割&#xff0c;此时得分为X&#xff09; 求所有种分法的得分之和&#xff0c;答案对998244353取模 思路来源 洛谷题解 [ABC288F] Integer …

【PostgreSQL内核学习(十)—— 查询执行(可优化语句执行)】

可优化语句执行 概述物理代数与处理模型物理操作符的数据结构执行器的运行 声明&#xff1a;本文的部分内容参考了他人的文章。在编写过程中&#xff0c;我们尊重他人的知识产权和学术成果&#xff0c;力求遵循合理使用原则&#xff0c;并在适用的情况下注明引用来源。 本文主要…

SAP客制化区域菜单和IMG配置清单

1. 自定义区域菜单 事务代码 SE43&#xff0c;操作如下 添加菜单对象 展示效果 输入区域菜单名称并回车&#xff0c;效果如下 2. 自定义IMG配置 事务代码 SIMGH IMG structure 示例-事务代码入口 示例-表格维护入口 示例-自定义代码控制对象 需要创建dummy表并设置表维护 页面设…

平头哥TH5120 BeagleV-Ahead开机系统软件使用体验

等了许久&#xff0c;Beagle 社区官网终于上线了BeagleV-Ahead 的主页 网址 https://beagleboard.org/beaglev-ahead &#xff0c;我们的系统软件评测将会以这个官方主页为出发点 &#xff0c;进行一系列的系统软件功能等操作演示&#xff0c;因官网没有中文页面&#xff0c;我…

【雕爷学编程】Arduino动手做(168)---ATTINY85迷你USB开发板2

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

瑞吉外卖开发笔记 二

1、完善登录功能 问题分析 前面我们已经完成了后台系统的员工登录功能开发&#xff0c;但是还存在一个问题:用户如果不登录&#xff0c;直接访问系统首页面&#xff0c;照样可以正常访问。 这种设计并不合理&#xff0c;我们希望看到的效果应该是&#xff0c;只有登录成功后…

JVM运行时数据区——字符串常量池位置的调整

在JDK6及之前&#xff0c;使用永久代来实现方法区&#xff0c;字符串常量池(StringTable)是在永久代(方法区)中的&#xff0c;但是方法区的回收效率不高&#xff0c;在Full GC时才会回收。 在JDK7中&#xff0c;将字符串常量池转移到了堆中&#xff0c;分配在年轻代和老年代中。…

ROS——roslaunch传参注意

本文就总结自己最近开发项目中出现的一些roslaunch有关传参的注意事项说明一下&#xff0c;以免下次有犯错 roslaunch 文件传入到.cpp 这里我采用传参比较简单的方式&#xff0c;还有其他方式&#xff0c;不过这种最为简便 nh.param<xxx>("roslaunch中的名字,如A…

基于 H5 的画图工具

完整资料进入【数字空间】查看——baidu搜索"writebug" 第一章 绪论 1.1 研究的背景 计算机图形学是随着计算机及其外围设备而产生和发展起来的。它是近代计算机科学 与雷达电视及图象处理技术的发展汇合而产生的硕果。在造船、航空航天、汽车、电子、 机械、土建工…

Spring 容器

Spring 容器 两个核心接口&#xff1a;BeanFactory 和 ApplicationContext&#xff08;是BeanFactory的子接口&#xff09;&#xff0c;生成Bean实例并管理Bean的工厂 Bean 对象 Spring管理的基本单位&#xff0c;在基于Spring应用中&#xff0c;所有的组件都可以理解为是一…

【前端|CSS系列第4篇】CSS布局之网格布局

前言 最近在做的一个项目前台首页有一个展示词条的功能&#xff0c;每一个词条都以一个固定大小的词条卡片进行展示&#xff0c;要将所有的词条卡片展示出来&#xff0c;大概是下面这种布局 每一行的卡片数目会随着屏幕大小自动变化&#xff0c;并且希望整个卡片区域周围不要…

【CSDN竞赛】练习题(练手题)及解析(含代码+注释):小玉家的电费;饿龙咆哮-逃离城堡;收件邮箱;寻找宝藏山

订阅专栏,学习更多干货知识! 为想要参与CSDN竞赛的朋友提供几道练手题目及解决方案。含有题目描述以及不同编程语言的解决方案。 💿目录 🏮一、题目一:小玉家的电费📂1.1 题目描述📂1.2 示例代码🏮二、题目二:饿龙咆哮-逃离城堡📂2.1 题目描述📂2.2 示例代码…