本文主要介绍 Filebeat 的相关概念及基本使用,相关的环境及软件信息如下:CentOS 7.9、FileBeat 8.2.2、Logstash 8.2.2、Elasticsearch 8.2.2。
Filebeat 是用于转发和集中日志数据的轻量级传送程序。 作为服务器上的代理安装,Filebeat 监视你指定的日志文件或位置,收集日志事件,并将它们转发到 Elasticsearch 或 Logstash 以进行索引。
Filebeat 具有如下的一些特性:
Filebeat 的工作方式如下:启动 Filebeat 时,它将启动一个或多个输入,这些输入将在为日志数据指定的位置中查找。 对于 Filebeat 所找到的每个日志,Filebeat 都会启动收集器(havester)。 每个收集器都读取一个日志以获取新内容,并将新日志数据发送到 libbeat。libbeat 会汇总事件,并将汇总的数据发送到为 Filebeat 配置的输出。

从上面有可以看出来在 spooler 里有一些缓存,这个可以用于重新发送以确保至少一次的事件消费,同时也可以用于背压敏感。一旦 Filebeat 生成的事件的速度超过 Elasticsearch 能够处理的极限,这个缓存可以用于存储一些事件。每个 Filebeat 可以配置多个 input,并且每个 input 可以配置来采集一个或多个文件路径的文件。 就像上面的图显示的那样,Filebeat 支持多种输入方式。Filbeat 支持如下的一些输出:
一个 Filebeat 模块通常由如下的部分组成:

Filebeat 模块简化了常见日志格式的收集,解析和可视化。文件集包含以下内容:
Filebeat 会根据你的环境自动调整这些配置,并将它们加载到相应的 Elastic Stack 组件中。
一个典型的模块(例如,对于 Nginx 日志)由一个或多个文件集(对于 Nginx,访问和错误日志)组成,比如,Nginx 模块解析 NGINX HTTP 服务器创建的访问和错误日志。它在幕后执行如下的一些任务:
针对其它的 Beats 模块来说,基本和 Filebeat 一样。目前针对 Elasticsearch 所提供的模块来说,有非常多的模块可以供使用:

关于 Filbeat 的模块信息,可查看官网文档:https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-modules.html。
根据环境下载对应的安装包:https://www.elastic.co/cn/downloads/beats/filebeat,这里选择 Linux x86_64 版本;下载完成后在服务器上解压即可:
tar zxvf filebeat-8.2.2-linux-x86_64.tar.gz
这里使用 Filebeat 来收集 Nginx 访问日志并发送到 Logstash 和 Elasticsearch 中。
修改配置文件 filebeat.yml,配置输入、输出,开始可以先把输出配成 console,调试没问题后再配置输出到 Logstash 和 Elasticsearch。
filebeat.inputs:
- type: filestream
id: my-filestream-id
enabled: true
paths:
- /home/hadoop/app/nginx-1.8.0/logs/access.log
output.console:
pretty: true
enable: true
./filebeat -e -c filebeat.yml
访问 Nginx,日志文件 /home/hadoop/app/nginx-1.8.0/logs/access.log 会输出日志:
10.49.196.1 - - [16/Sep/2022:15:35:20 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
filebeat 的控制台打印采集的日志信息如下:
{
"@timestamp": "2022-09-16T07:35:25.797Z",
"@metadata": {
"beat": "filebeat",
"type": "_doc",
"version": "8.2.2",
"pipeline": "filebeat-8.2.2-nginx-access-pipeline"
},
"event": {
"timezone": "+08:00",
"module": "nginx",
"dataset": "nginx.access"
},
"fileset": {
"name": "access"
},
"ecs": {
"version": "1.12.0"
},
"agent": {
"type": "filebeat",
"version": "8.2.2",
"ephemeral_id": "5f0443a4-e5c6-43c0-88d2-4ad7b946c4a7",
"id": "197bfd49-e03a-416e-b53f-4ac143b94fa5",
"name": "pxc2"
},
"message": "10.49.196.1 - - [16/Sep/2022:15:35:20 +0800] \"GET / HTTP/1.1\" 304 0 \"-\" \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36\"",
"input": {
"type": "log"
},
"host": {
"id": "a91a3eb89492470398ed77cd24a29299",
"containerized": false,
"ip": [
"10.49.196.11",
"fe80::2011:ba1b:b32b:b63a"
],
"mac": [
"00:0c:29:97:29:ce"
],
"hostname": "pxc2",
"name": "pxc2",
"architecture": "x86_64",
"os": {
"version": "7 (Core)",
"family": "redhat",
"name": "CentOS Linux",
"kernel": "3.10.0-957.el7.x86_64",
"codename": "Core",
"type": "linux",
"platform": "centos"
}
},
"log": {
"offset": 16308,
"file": {
"path": "/home/hadoop/app/nginx-1.8.0/logs/access.log"
}
},
"service": {
"type": "nginx"
}
}
View Code
默认情况下配置了如下处理器:
processors:
- add_host_metadata:
when.not.contains.tags: forwarded
- add_cloud_metadata: ~
- add_docker_metadata: ~
- add_kubernetes_metadata: ~
如果觉得输出的日志过多,可以把这些处理器去掉并添加去除字段的处理器:
processors:
#- add_host_metadata:
# when.not.contains.tags: forwarded
#- add_cloud_metadata: ~
#- add_docker_metadata: ~
#- add_kubernetes_metadata: ~
- drop_fields:
fields: ["agent.id", "log"]
output.logstash:
hosts: ["localhost:5044"]
Logstash 接受到的日志信息如下:
{
"tags" => [
[0] "beats_input_codec_plain_applied"
],
"event" => {
"timezone" => "+08:00",
"original" => "10.49.196.1 - - [16/Sep/2022:15:51:38 +0800] \"GET / HTTP/1.1\" 304 0 \"-\" \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36\"",
"dataset" => "nginx.access",
"module" => "nginx"
},
"log" => {
"offset" => 16866,
"file" => {
"path" => "/home/hadoop/app/nginx-1.8.0/logs/access.log"
}
},
"@version" => "1",
"fileset" => {
"name" => "access"
},
"message" => "10.49.196.1 - - [16/Sep/2022:15:51:38 +0800] \"GET / HTTP/1.1\" 304 0 \"-\" \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36\"",
"@timestamp" => 2022-09-16T07:51:45.515Z,
"agent" => {
"name" => "pxc2",
"type" => "filebeat",
"ephemeral_id" => "9a6a130b-04c6-4bbf-a228-60e1f237f5a9",
"version" => "8.2.2",
"id" => "197bfd49-e03a-416e-b53f-4ac143b94fa5"
},
"ecs" => {
"version" => "1.12.0"
},
"host" => {
"name" => "pxc2"
},
"service" => {
"type" => "nginx"
},
"input" => {
"type" => "log"
}
}
View Code
output.elasticsearch:
hosts: ["localhost:9200"]
Elasticsearch 会自动创建名为 filebeat-8.2.2 的数据流,数据流中保存的日志信息如下:
{
"_index": ".ds-filebeat-8.2.2-2022.09.16-000001",
"_id": "8qxKRYMBPnCOyxVi1GuP",
"_version": 1,
"_score": 1,
"_source": {
"agent": {
"name": "pxc2",
"id": "197bfd49-e03a-416e-b53f-4ac143b94fa5",
"ephemeral_id": "a6b1d9a5-8485-4391-92be-6a6ae530a5cd",
"type": "filebeat",
"version": "8.2.2"
},
"nginx": {
"access": {
"remote_ip_list": [
"10.49.196.1"
]
}
},
"log": {
"file": {
"path": "/home/hadoop/app/nginx-1.8.0/logs/access.log"
},
"offset": 17052
},
"source": {
"address": "10.49.196.1",
"ip": "10.49.196.1"
},
"fileset": {
"name": "access"
},
"url": {
"path": "/",
"original": "/"
},
"input": {
"type": "log"
},
"@timestamp": "2022-09-16T07:54:24.000Z",
"ecs": {
"version": "1.12.0"
},
"_tmp": {},
"related": {
"ip": [
"10.49.196.1"
]
},
"service": {
"type": "nginx"
},
"host": {
"name": "pxc2"
},
"http": {
"request": {
"method": "GET"
},
"response": {
"status_code": 304,
"body": {
"bytes": 0
}
},
"version": "1.1"
},
"event": {
"ingested": "2022-09-16T07:54:34.439241175Z",
"original": "10.49.196.1 - - [16/Sep/2022:15:54:24 +0800] \"GET / HTTP/1.1\" 304 0 \"-\" \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36\"",
"timezone": "+08:00",
"created": "2022-09-16T07:54:33.213Z",
"kind": "event",
"module": "nginx",
"category": [
"web"
],
"type": [
"access"
],
"dataset": "nginx.access",
"outcome": "success"
},
"user_agent": {
"original": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36",
"os": {
"name": "Windows",
"version": "10",
"full": "Windows 10"
},
"name": "Chrome",
"device": {
"name": "Other"
},
"version": "105.0.0.0"
}
},
"fields": {
"event.category": [
"web"
],
"user_agent.os.full": [
"Windows 10"
],
"user_agent.original.text": [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
],
"url.original.text": [
"/"
],
"source.address": [
"10.49.196.1"
],
"user_agent.os.name.text": [
"Windows"
],
"user_agent.os.version": [
"10"
],
"user_agent.os.name": [
"Windows"
],
"traefik.access.user_agent.name": [
"Chrome"
],
"service.type": [
"nginx"
],
"agent.type": [
"filebeat"
],
"event.module": [
"nginx"
],
"http.request.method": [
"GET"
],
"related.ip": [
"10.49.196.1"
],
"traefik.access.user_agent.original": [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
],
"source.ip": [
"10.49.196.1"
],
"agent.name": [
"pxc2"
],
"host.name": [
"pxc2"
],
"user_agent.version": [
"105.0.0.0"
],
"http.response.status_code": [
304
],
"http.version": [
"1.1"
],
"event.kind": [
"event"
],
"event.timezone": [
"+08:00"
],
"event.outcome": [
"success"
],
"user_agent.original": [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
],
"event.original": [
"10.49.196.1 - - [16/Sep/2022:15:54:24 +0800] \"GET / HTTP/1.1\" 304 0 \"-\" \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36\""
],
"fileset.name": [
"access"
],
"nginx.access.remote_ip_list": [
"10.49.196.1"
],
"input.type": [
"log"
],
"log.offset": [
17052
],
"user_agent.name": [
"Chrome"
],
"agent.hostname": [
"pxc2"
],
"http.response.body.bytes": [
0
],
"traefik.access.user_agent.os_name": [
"Windows"
],
"user_agent.os.full.text": [
"Windows 10"
],
"event.ingested": [
"2022-09-16T07:54:34.439Z"
],
"url.original": [
"/"
],
"@timestamp": [
"2022-09-16T07:54:24.000Z"
],
"url.path": [
"/"
],
"agent.id": [
"197bfd49-e03a-416e-b53f-4ac143b94fa5"
],
"ecs.version": [
"1.12.0"
],
"event.type": [
"access"
],
"log.file.path": [
"/home/hadoop/app/nginx-1.8.0/logs/access.log"
],
"event.created": [
"2022-09-16T07:54:33.213Z"
],
"agent.ephemeral_id": [
"a6b1d9a5-8485-4391-92be-6a6ae530a5cd"
],
"agent.version": [
"8.2.2"
],
"user_agent.device.name": [
"Other"
],
"event.dataset": [
"nginx.access"
]
}
}
View Code
Filebeat 中 Nginx 模块可以针对 Nginx 日志进行解析,简化了我们处理日志的过程。
A、filebeat.yml 文件配置
filebeat.inputs:
- type: filestream
id: my-filestream-id
enabled: false
paths:
- /home/hadoop/app/nginx-1.8.0/logs/access.log
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
output.elasticsearch:
hosts: ["localhost:9200"]
B、modules.d/nginx.yml 文件配置
- module: nginx
access:
enabled: true
var.paths: ["/home/hadoop/app/nginx-1.8.0/logs/access.log"]
error:
enabled: false
ingress_controller:
enabled: false
./filebeat modules enable nginx
./filebeat -e -c filebeat.yml
访问 Nginx 后,Elasticsearch 会自动创建名为 filebeat-8.2.2 的数据流,数据流中保存的日志信息如下:
{
"_index": ".ds-filebeat-8.2.2-2022.09.16-000001",
"_id": "-qxgRYMBPnCOyxVikGvO",
"_version": 1,
"_score": 1,
"_source": {
"agent": {
"name": "pxc2",
"id": "197bfd49-e03a-416e-b53f-4ac143b94fa5",
"type": "filebeat",
"ephemeral_id": "c7505853-b6de-46b0-abb0-7727dfb37d4b",
"version": "8.2.2"
},
"nginx": {
"access": {
"remote_ip_list": [
"10.49.196.1"
]
}
},
"log": {
"file": {
"path": "/home/hadoop/app/nginx-1.8.0/logs/access.log"
},
"offset": 17424
},
"source": {
"address": "10.49.196.1",
"ip": "10.49.196.1"
},
"fileset": {
"name": "access"
},
"url": {
"path": "/",
"original": "/"
},
"input": {
"type": "log"
},
"@timestamp": "2022-09-16T08:18:09.000Z",
"ecs": {
"version": "1.12.0"
},
"_tmp": {},
"related": {
"ip": [
"10.49.196.1"
]
},
"service": {
"type": "nginx"
},
"host": {
"name": "pxc2"
},
"http": {
"request": {
"method": "GET"
},
"response": {
"status_code": 304,
"body": {
"bytes": 0
}
},
"version": "1.1"
},
"event": {
"ingested": "2022-09-16T08:18:19.574911507Z",
"original": "10.49.196.1 - - [16/Sep/2022:16:18:09 +0800] \"GET / HTTP/1.1\" 304 0 \"-\" \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36\"",
"timezone": "+08:00",
"created": "2022-09-16T08:18:18.539Z",
"kind": "event",
"module": "nginx",
"category": [
"web"
],
"type": [
"access"
],
"dataset": "nginx.access",
"outcome": "success"
},
"user_agent": {
"original": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36",
"os": {
"name": "Windows",
"version": "10",
"full": "Windows 10"
},
"name": "Chrome",
"device": {
"name": "Other"
},
"version": "105.0.0.0"
}
},
"fields": {
"event.category": [
"web"
],
"user_agent.os.full": [
"Windows 10"
],
"user_agent.original.text": [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
],
"url.original.text": [
"/"
],
"source.address": [
"10.49.196.1"
],
"user_agent.os.name.text": [
"Windows"
],
"user_agent.os.version": [
"10"
],
"user_agent.os.name": [
"Windows"
],
"traefik.access.user_agent.name": [
"Chrome"
],
"service.type": [
"nginx"
],
"agent.type": [
"filebeat"
],
"event.module": [
"nginx"
],
"http.request.method": [
"GET"
],
"related.ip": [
"10.49.196.1"
],
"traefik.access.user_agent.original": [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
],
"source.ip": [
"10.49.196.1"
],
"agent.name": [
"pxc2"
],
"host.name": [
"pxc2"
],
"user_agent.version": [
"105.0.0.0"
],
"http.response.status_code": [
304
],
"http.version": [
"1.1"
],
"event.kind": [
"event"
],
"event.timezone": [
"+08:00"
],
"event.outcome": [
"success"
],
"user_agent.original": [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
],
"event.original": [
"10.49.196.1 - - [16/Sep/2022:16:18:09 +0800] \"GET / HTTP/1.1\" 304 0 \"-\" \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36\""
],
"fileset.name": [
"access"
],
"nginx.access.remote_ip_list": [
"10.49.196.1"
],
"input.type": [
"log"
],
"log.offset": [
17424
],
"user_agent.name": [
"Chrome"
],
"agent.hostname": [
"pxc2"
],
"http.response.body.bytes": [
0
],
"traefik.access.user_agent.os_name": [
"Windows"
],
"user_agent.os.full.text": [
"Windows 10"
],
"event.ingested": [
"2022-09-16T08:18:19.574Z"
],
"url.original": [
"/"
],
"@timestamp": [
"2022-09-16T08:18:09.000Z"
],
"url.path": [
"/"
],
"agent.id": [
"197bfd49-e03a-416e-b53f-4ac143b94fa5"
],
"ecs.version": [
"1.12.0"
],
"event.type": [
"access"
],
"log.file.path": [
"/home/hadoop/app/nginx-1.8.0/logs/access.log"
],
"event.created": [
"2022-09-16T08:18:18.539Z"
],
"agent.ephemeral_id": [
"c7505853-b6de-46b0-abb0-7727dfb37d4b"
],
"agent.version": [
"8.2.2"
],
"user_agent.device.name": [
"Other"
],
"event.dataset": [
"nginx.access"
]
}
}
View Code
可以看到日志信息已经被解析出各个单独的有用字段,如:source.ip,url.path,user_agent.name 等等。
参考:https://blog.csdn.net/UbuntuTouch/article/details/104432643
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现
遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg
ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear
文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定
TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是
文章目录一、项目场景二、基本模块原理与调试方法分析——信源部分:三、信号处理部分和显示部分:四、基本的通信链路搭建:四、特殊模块:interpretedMATLABfunction:五、总结和坑点提醒一、项目场景 最近一个任务是使用simulink搭建一个MIMO串扰消除的链路,并用实际收到的数据进行测试,在搭建的过程中也遇到了不少的问题(当然这比vivado里面的debug好不知道多少倍)。准备趁着这个机会,先以一个很基本的通信链路对simulink基础和相关的debug方法进行总结。 在本篇中,主要记录simulink的基本原理和基本的SISO通信传输链路(QPSK方式),计划在下篇记
目录H2数据库入门以及实际开发时的使用1.H2数据库的初识1.1H2数据库介绍1.2为什么要使用嵌入式数据库?1.3嵌入式数据库对比1.3.1性能对比1.4技术选型思考2.H2数据库实战2.1H2数据库下载搭建以及部署2.1.1H2数据库的下载2.1.2数据库启动2.1.2.1windows系统可以在bin目录下执行h2.bat2.1.2.2同理可以通过cmd直接使用命令进行启动:2.1.2.3启动后控制台页面:2.1.3spring整合H2数据库2.1.3.1引入依赖文件2.1.4数据库通过file模式实际保存数据的位置2.2H2数据库操作2.2.1Mysql兼容模式2.2.2Mysql模式
最近在工作中,看到一些新手测试同学,对接口测试存在很多疑问,甚至包括一些从事软件测试3,5年的同学,在聊到接口时,也是一知半解;今天借着这个机会,对接口测试做个实战教学,顺便总结一下经验,分享给大家。计划拆分成4个模块跟大家做一个分享,(接口测试、接口基础知识、接口自动化、接口进阶)感兴趣的小伙伴记得关注,希望对你的日常工作和求职面试,带来一些帮助。注:文章较长有5000多字,希望小伙伴们认真看完,当然有些内容对小白同学不是太友好,如果你需要详细了解其中的一些概念或者名词,请在文章之后留言,后续我将针对大家的疑问,整理输出一些大家感兴趣的文章。随着开发模式的迭代更新,前后端分离已不是新的概念,