linux安装influxdb-rpmyum方式
一、influxdb的安装
InfluxDB简介
时序数据库InfluxDB版是一款专门处理高写入和查询负载的时序数据库,用于存储大规模的时序数据并进行实时分析,包括来自DevOps监控、应用指标和IoT传感器上的数据
主要特点:
专为时间序列数据量身订造高性能数据存储。TSM引擎提供数据高速读写和压缩等功能
简单高效的HTTP API写入和查询接口
针对时序数据,量身订造类似SQL的查询语言,轻松查询聚合数据
允许对tag建索引,实现快速有效的查询
数据保留策略(Retention policies)能够有效地使旧数据自动失效
————————————————
下载链接:
官网
https://portal.influxdata.com/downloads
其他版本
#修改内核参数等切换其他版本
https://repos.influxdata.com/rhel/7/arm64/stable/
2、linux版本的1.8.10版本具体参考链接:
#下载rpm包wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.10.x86_64.rpm#直接yum安装
sudo yum localinstall influxdb-1.8.10.x86_64.rpm
3、安装后的相关配置或文件的路径:
/etc/influxdb/influxdb.conf 默认的配置文件
/var/log/influxdb/influxd.log 日志文件
/var/lib/influxdb/data 数据文件
/usr/lib/influxdb/scripts 初始化脚本文件夹
4、启动influx数据库
# 1.正常后台启动[root@aliyun ~]# systemctl start influxd 或者service influxdb restart(重启)# 前台启动可以查看运行状态 也可以用 -config 指定启动时的配置文件
[root@aliyun ~]# /usr/bin/influxd8888888 .d888 888 8888888b. 888888b.888 d88P" 888 888 "Y88b 888 "88b888 888 888 888 888 888 .88P888 88888b. 888888 888 888 888 888 888 888 888 8888888K.888 888 "88b 888 888 888 888 Y8bd8P' 888 888 888 "Y88b888 888 888 888 888 888 888 X88K 888 888 888 888888 888 888 888 888 Y88b 888 .d8""8b. 888 .d88P 888 d88P8888888 888 888 888 888 "Y88888 888 888 8888888P" 8888888P"
5,进入命令行工具
进入命令行工具界面进行用户添加,如果修改了默认绑定的端口,需要添加-port参数指定端口(没改端口 可忽略):
[root@aliyun ~]# influx -port '8086'
Connected to http://localhost:18088 version 1.8.6
InfluxDB shell version: 1.7.6
Enter an InfluxQL query
# 创建管理员用户
> create user "admin" with password 'admin' with all privileges;
# 查看用户信息
> show users;
user admin
---- -----
admin true
6,开启登录认证
# 修改配置
vim /etc/influxdb/influxdb.conf
# http相关参数 权限认证
[http]# 开启 HTTP APIenabled = true # bind-address = ":8086"# 默认绑定端口为 8086可进行修改bind-address = ":18088"# auth-enabled = false# 用户及密码验证默认关闭【注意】创建管理员用户后生产环境进行开启auth-enabled = true#改完重新启动
service influxdb restart(重启)
7,数据保存地址配置
# 修改配置
vim /etc/influxdb/influxdb.conf
# 以下三个文件夹可根据需要进行修改
[meta]dir = "/var/lib/influxdb/meta"
[data]dir = "/var/lib/influxdb/data"wal-dir = "/var/lib/influxdb/wal"
7,重启服务后使用用户名及密码进行登录:
# 重启服务
systemctl restart influxd# 如果不使用用户及密码登录操作时会报错
[root@aliyun ~]# influx -port '8086'
Connected to http://localhost:18088 version 1.7.6
InfluxDB shell version: 1.7.6
Enter an InfluxQL query
> show users;
ERR: unable to parse authentication credentials
Warning: It is possible this error is due to not setting a database.
Please set a database with the command "use <database>".
# 验证用户及密码
> auth
username: admin
password:
> show users;
user admin
---- -----
admin true# 使用用户名及密码正确登录
[root@aliyun ~]# influx -port '18088' -username 'admin' -password 'admin'
Connected to http://localhost:18088 version 1.7.6
InfluxDB shell version: 1.7.6
Enter an InfluxQL query
> show users;
user admin
---- -----
admin true
7,数据保存地址配置
# 修改配置
vim /etc/influxdb/influxdb.conf
# 以下三个文件夹可根据需要进行修改
[meta]dir = "/var/lib/influxdb/meta"
[data]dir = "/var/lib/influxdb/data"wal-dir = "/var/lib/influxdb/wal"
二,常用操作
1. 官方文档
https://influxdb-v1-docs-cn.cnosdb.com/influxdb/v1.8/administration/authentication_and_authorization/
2. influxdb基本操作
2.1. 数据库基本操作
# 创建数据库
> create database db01;# 查看数据库
> show databases;
name: databases
name
----
_internal
mydb
db01# 删除数据库
> drop database db01;
> show databases;
name: databases
name
----
_internal
mydb# 使用数据库
> use mydb;
Using database mydb
2.2. 表基本操作(measurement)
# 查看表
> show measurements;
name: measurements
name
----
meas01
meas02
mymeans
mymeas# 新建表
# disk_free 就是表名,hostname是索引,value=xx是记录值,记录值可以有多个,最后是指定的时间
> insert disk_free,hostname=server01 value=442221834240i 1435362189575692182
> show measurements;name: measurements
name
----
disk_free
meas01
meas02
mymeans
mymeas# 查看表
> select * from disk_free;
name: disk_free
time hostname value
---- -------- -----
1435362189575692182 server01 442221834240# 删除表
> drop measurement disk_free;
> show measurements;
name: measurements
name
----
meas01
meas02
mymeans
mymeas
2.3. 系列基本操作(series)
> select * from disk_free;
name: disk_free
time hostname value
---- -------- -----
1435362189335692182 server01 442221834240
1435362189345692182 server01 442221834240
1435362189355692182 server01 442221834240
1435362189355692182 server02 442221834240
# series表示这个表里面的数据,可以在图表上画成几条线,series主要通过tags排列组合算出来。
> show series from disk_free;
key
---
disk_free,hostname=server01
disk_free,hostname=server02
2.4 存储策略操作(rentention policy)
# 注意:策略名称需要添加引号
# 新建策略
> create retention policy "role-02" on "mydb" duration 2h replication 1 default# 查看策略
> show retention policies on mydb;
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 false
2_hours 2h0m0s 1h0m0s 1 false
role-01 2h0m0s 1h0m0s 1 false
role-02 2h0m0s 1h0m0s 1 true# name--名称,此示例名称为 default
# duration--持续时间,0代表无限制1h, 90m, 12h, 7d, 4w, INF 最小1h, 最大INF
# shardGroupDuration--shardGroup的存储时间,shardGroup是InfluxDB的一个基本储存结构,应该大于这个时间的数据在查询效率上应该有所降低。
# replicaN--全称是REPLICATION,副本个数
# default--是否是默认策略# 修改策略
> alter retention policy "role-01" on mydb duration 3h default
> show retention policies on mydb;
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 false
2_hours 2h0m0s 1h0m0s 1 false
role-01 3h0m0s 1h0m0s 1 true
role-02 2h0m0s 1h0m0s 1 false# 删除策略
> drop retention policy "role-01" on mydb;
> show retention policies on mydb;
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 false
2_hours 2h0m0s 1h0m0s 1 false
role-02 2h0m0s 1h0m0s 1 false
2.5. 用户操作
# 查看用户
> show users;
user admin
---- -----
admin true# 创建普通用户
> create user root with password '123456';
> show users;
user admin
---- -----
admin true
root false# 创建具有admin权限的用户
> create user root with password '111111' with all privileges;
> show users;
user admin
---- -----
admin true
root true# 授权root用户admin权限
> grant all privileges to root;
> show users;
user admin
---- -----
admin true
root true# 删除用户
> drop user root;
> show users;
user admin
---- -----
admin true# 修改用户密码
> set password for admin='111111';
3.配置文件详解
# reporting-disabled = false # 该选项用于上报influxdb的使用信息给InfluxData公司,默认值为false
bind-address = "127.0.0.1:8085" # 备份恢复时使用,默认值为8088
### [meta]
[meta]dir = "/data/influxdb/meta" # meta数据存放目录# retention-autocreate = true # 用于控制默认存储策略,数据库创建时,会自动生成autogen的存储策略,默认值:true# logging-enabled = true # 是否开启meta日志,默认值:true
### [data]
[data]dir = "/data/influxdb/data" # 最终数据(TSM文件)存储目录wal-dir = "/data/influxdb/wal" # 预写日志存储目录# wal-fsync-delay = "0s" # 在同步写入之前等待的总时间,默认0s# index-version = "inmem" # 用于新碎片的切分索引的类型。# trace-logging-enabled = false # 跟踪日志记录在tsm引擎周围提供了更详细的输出# query-log-enabled = true # 是否开启tsm引擎查询日志,默认值: true# Valid size suffixes are k, m, or g (case insensitive, 1024 = 1k).# cache-max-memory-size = "1g" # 用于限定shard最大值,大于该值时会拒绝写入,默认值:1000MB,单位:byte# Valid size suffixes are k, m, or g (case insensitive, 1024 = 1k).# cache-snapshot-memory-size = "25m" # 用于设置快照大小,大于该值时数据会刷新到tsm文件,默认值:25MB,单位:byte# cache-snapshot-write-cold-duration = "10m" # tsm引擎 snapshot写盘延迟,默认值:10Minute# compact-full-write-cold-duration = "4h" # tsm文件在压缩前可以存储的最大时间,默认值:4Hour# max-concurrent-compactions = 0 # 压缩并发的最大数量,默认设置为0表示runtime.GOMAXPROCS(0)*50% ,否则以设置的非零值为准# Valid size suffixes are k, m, or g (case insensitive, 1024 = 1k).# max-index-log-file-size = "1m" # 限制索引日志文件大小# max-series-per-database = 1000000 # 限制数据库的级数,该值为0时取消限制,默认值:1000000# max-values-per-tag = 100000 # 一个tag最大的value数,0取消限制,默认值:100000# tsm-use-madv-willneed = false # 如果为true,mmap的建议值MADV_WILLNEED会被提供给内核
### [coordinator]
[coordinator]# write-timeout = "10s" # 写操作超时时间,默认值: 10s# max-concurrent-queries = 0 # 最大并发查询数,0无限制,默认值: 0# query-timeout = "0s" # 查询操作超时时间,0无限制,默认值:0s# log-queries-after = "0s" # 慢查询超时时间,0无限制,默认值:0s# max-select-point = 0 # SELECT语句可以处理的最大点数(points),0无限制,默认值:0# max-select-series = 0 # SELECT语句可以处理的最大级数(series),0无限制,默认值:0# max-select-buckets = 0 # SELECT语句可以处理的最大"GROUP BY time()"的时间周期,0无限制,默认值:0
### [retention]
[retention]# enabled = true # 是否启用该模块,默认值 : true# check-interval = "30m" # 检查时间间隔,默认值 :"30m"
### [shard-precreation]
[shard-precreation]# enabled = true # 是否启用该模块,默认值 : true# check-interval = "10m" # 检查时间间隔,默认值 :"10m"# advance-period = "30m" # 预创建分区的最大提前时间,默认值 :"30m"
[monitor]# store-enabled = true # 是否启用该模块,默认值 :true# store-database = "_internal" # 默认数据库:"_internal"# store-interval = "10s" # 统计间隔,默认值:"10s"
### [http]
[http]# enabled = true # 是否启用该模块,默认值 :true# bind-address = ":8086" # 绑定地址,默认值 :":8086"# auth-enabled = false # 是否开启认证,默认值:false# realm = "InfluxDB" # 配置JWT realm,默认值: "InfluxDB"# log-enabled = true # 是否开启日志,默认值:true# suppress-write-log = false # 在启用日志时是否抑制HTTP写请求日志# access-log-path = "" # 当启用HTTP请求日志时,该选项指定了路径。如influxd不能访问指定的路径,它将记录一个错误并将请求日志写入stderr# write-tracing = false # 是否开启写操作日志,如果置成true,每一次写操作都会打日志,默认值:false# pprof-enabled = true # 是否开启pprof,默认值:true# debug-pprof-enabled = false # 是否开启pprof,默认值:true# https-enabled = false # 是否开启https ,默认值 :false# https-certificate = "/etc/ssl/influxdb.pem" # 设置https证书路径,默认值:"/etc/ssl/influxdb.pem"# https-private-key = "" # 设置https私钥,无默认值# shared-secret = "" # 用于JWT签名的共享密钥,无默认值# max-row-limit = 0 # 配置查询返回最大行数,0无限制,默认值:0# max-connection-limit = 0 # 配置最大连接数,0无限制,默认值:0# unix-socket-enabled = false # 是否使用unix-socket,默认值:false# bind-socket = "/var/run/influxdb.sock" # unix-socket路径,默认值:"/var/run/influxdb.sock"# max-body-size = 25000000 # 客户端请求主体的最大值,以字节为单位。0无限制,默认值0# max-concurrent-write-limit = 0 # 并发处理的最大写入次数,0无限制,默认值0# max-enqueued-write-limit = 0 # 排队等待处理的最大数量,0无限制,默认值0# enqueued-write-timeout = 0 # 在队列中等待处理的最长时间,0或者setting max-concurrent-write-limit=0无限制,默认值0
### [ifql]
[ifql]# enabled = true # 是否启用该模块,默认值 :true# log-enabled = true # 是否开启日志,默认值:true# bind-address = ":8082" # ifql RPC服务使用的绑定地址默认是8082
### [logging]
[logging]# format = "auto" # 日志格式,默认是自动# level = "info" # 日志级别默认info# suppress-logo = false # 当程序启动时,会抑制打印出来的logo输出
### [subscriber]
[subscriber]# enabled = true # 是否启用该模块,默认值 :true# http-timeout = "30s" # http超时时间,默认值:"30s"# insecure-skip-verify = false # 是否允许不安全的证书# ca-certs = "" # 设置CA证书# write-concurrency = 40 # 设置并发数目,默认值:40# write-buffer-size = 1000 # 设置buffer大小,默认值:1000
### [[graphite]]
[[graphite]]# enabled = false # 是否启用该模块,默认值 :false# database = "graphite" # 数据库名称,默认值:"graphite"# retention-policy = "" # 存储策略,无默认值# bind-address = ":2003" # 绑定地址,默认值:":2003"# protocol = "tcp" # 协议,默认值:"tcp"# consistency-level = "one" # 一致性级别,默认值:"one# batch-size = 5000 # 批量size,默认值:5000# batch-pending = 10 # 配置在内存中等待的batch数,默认值:10# batch-timeout = "1s" # 超时时间,默认值:"1s"# udp-read-buffer = 0 # udp读取buffer的大小,0表示使用操作系统提供的值,如果超过操作系统的默认配置则会出错。 该配置的默认值:0# separator = "." # 多个measurement间的连接符,默认值: "."# tags = ["region=us-east", "zone=1c"] # 将被添加到所有指标的默认标签。这些可以在模板级别上覆盖或者从指标中提取的标签# templates = [# "*.app env.service.resource.measurement",# # Default template# "server.*",# ]
### [collectd]
[[collectd]]# enabled = false # 是否启用该模块,默认值 :false# bind-address = ":25826" # 绑定地址,默认值: ":25826"# database = "collectd" # 数据库名称,默认值:"collectd"# retention-policy = "" # 存储策略,无默认值# typesdb = "/usr/local/share/collectd" # 路径,默认值:"/usr/share/collectd/types.db"# security-level = "none" # 安全级别# auth-file = "/etc/collectd/auth_file"# batch-size = 5000 # 从缓存中批量获取数据的量,默认值:5000# batch-pending = 10 # 可能在内存中等待的批次的数量,默认值:10# batch-timeout = "10s" # 即使没有达到缓冲区的限制,至少要刷新一下,默认值:"10s"# read-buffer = 0 # udp读取buffer的大小,0表示使用操作系统提供的值,如果超过操作系统的默认配置则会出错。默认值:0# parse-multivalue-plugin = "split" # 两种处理方式split和join,split会分到不同的表中,join会将记录作为一个单独的记录处理。默认是split
### [opentsdb]
[[opentsdb]]# enabled = false # 是否启用该模块,默认值 :false# bind-address = ":4242" # 绑定地址,默认值:":4242"# database = "opentsdb" # 默认数据库:"opentsdb"# retention-policy = "" # 存储策略,无默认值# consistency-level = "one" # 一致性级别,默认值:"one"# tls-enabled = false # 是否开启tls,默认值:false# certificate= "/etc/ssl/influxdb.pem" # 证书路径,默认值:"/etc/ssl/influxdb.pem"# log-point-errors = true # 出错时是否记录日志,默认值:true# batch-size = 1000 # 从缓存中批量获取数据的量,默认值:1000# batch-pending = 5 # 可能在内存中等待的批次的数量,默认值:5# batch-timeout = "1s" # 即使没有达到缓冲区的限制,至少要刷新一下,默认值:"1s"
### [[udp]]
[[udp]]# enabled = false # 是否启用该模块,默认值 :false# bind-address = ":8089" # 绑定地址,默认值:":8089"# database = "udp" # 数据库名称,默认值:"udp"# retention-policy = "" # 存储策略,无默认值# precision = "" # 接收点的时间点的精度("" or "n", "u", "ms", "s", "m", "h")# batch-size = 5000 # 从缓存中批量获取数据的量,默认值:5000# batch-pending = 10 # 可能在内存中等待的批次的数量,默认值:10# batch-timeout = "1s" # 即使没有达到缓冲区的限制,至少要刷新一下,默认值:"1s"# read-buffer = 0 # udp读取buffer的大小,0表示使用操作系统提供的值,如果超过操作系统的默认配置则会出错。 该配置的默认值:0
### [continuous_queries]
[continuous_queries]# enabled = true # 是否启用该模块,默认值 :true# log-enabled = true # 是否开启日志,默认值:true# query-stats-enabled = false # 控制查询是否被记录到自我监控数据存储中# run-interval = "1s" # 时间间隔,默认值:"1s"
### [tls]
[tls]# ciphers = [# "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305",# "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",# ]# min-version = "tls1.2"# max-version = "tls1.2"
4. 基本操作 postman
#移步大佬博客
https://blog.csdn.net/qq_40378034/article/details/111112737
三:可视化工具InfluxDBStudio
软件虽然界面简陋,但是目前暂未发现另一款可以可视化操作InfluxDB的软件,
虽然简陋,但是还是很容易上手,简单介绍下如何使用
Name 名称 - 连接的名称。这是使用此连接时将看到的标签
Address 地址 - InfluxDB服务器的主机URI。排除协议信息。端口填写在右侧
Database 数据库 - 用于连接的数据库。将其留空以列出所有数据库(需要管理员权限)
UserName 用户名 - 用于连接的InfluxDB用户名
Password 密码 - 与连接一起使用的InfluxDB密码
Security - Use SSL 使用SSL - 连接到InfluxDB时是否使用SSL安全性(HTTPS)
https://github.com/CymaticLabs/InfluxDBStudio/releases/tag/v0.2.0-beta.1
1,使用方式



进去就不用多说了吧,低配版的SQLyog,哈哈哈
相关文章:

linux安装influxdb-rpmyum方式
一、influxdb的安装InfluxDB简介时序数据库InfluxDB版是一款专门处理高写入和查询负载的时序数据库,用于存储大规模的时序数据并进行实时分析,包括来自DevOps监控、应用指标和IoT传感器上的数据主要特点:专为时间序列数据量身订造高性能数据存…...
死锁
1.死锁的定义 多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力。然而,并发执行也带来了新的问题——死锁。所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法…...

C++基础了解-05-C++常量
C常量 一、C常量 常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。 常量可以是任何的基本数据类型,可分为整型数字、浮点数字、字符、字符串和布尔值。 常量就像是常规的变量,只不过常量的值在定义后不能进…...
深度学习笔记-2.自动梯度问题
通过反向传播进行自动求梯度1-requires_grad问题2-梯度3- detach() 和 with torch.no_grad()4- Tensor.data.requires_gradPyTorch提供的autograd包能够根据输入和前向传播过程自动构建计算图,并执行反向传播. 1-requires_grad问题 requires_gradTrue …...

一文读懂倒排序索引涉及的核心概念
基础概念相信对于第一次接触Elasticsearch的同学来说,最难理解的概念就是倒排序索引(也叫反向索引),因为这个概念跟我们之前在传统关系型数据库中的索引概念是完全不同的!在这里我就重点给大家介绍一下倒排序索引&…...

Java基础算法题
以创作之名致敬节日 胜固欣然,败亦可喜。 --苏轼 目录 练习1 : 优化代码 扩展 : CRTL Alt M 自动抽取方法 练习2: 方法一: 方法二: 方法三: Math : 顾名思义,Math类就是用来进行数学计算的,它提供了大量的静态方法来便于我们实…...

「SAP ABAP」你真的了解OPEN SQL的DML语句吗 (附超详细案例讲解)
💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言A…...

数据结构3——线性表2:线性表的顺序结构
顺序结构的基本理解 定义: 把逻辑上相邻的数据元素存储在物理上相邻(占用一片连续的存储单元,中间不能空出来)的存储单元的存储结构 存储位置计算: LOC(a(i1))LOC(a(i))lLOC(a(i1))LOC(a(i))l LOC(a(i1))LOC(a(i))l L…...

VMware虚拟机搭建环境通用方法
目录一、前期准备1.下载并安装一个虚拟机软件二、开始创建虚拟机1.配置虚拟机硬件相关操作2.虚拟机网络相关操作三、开机配置相关内容0.开机遇到报错处理(选看--开机没有报错请忽略)1.开始配置2.开机之后配置3.使用xshell远程登录4.使用xshell配置虚拟机…...

2.Fully Convolutional Networks for Semantic Segmentation论文记录
欢迎访问个人网络日志🌹🌹知行空间🌹🌹 文章目录1.基础介绍2.分类网络转换成全卷积分割网络3.转置卷积进行上采样4.特征融合5.一个pytorch源码实现参考资料1.基础介绍 论文:Fully Convolutional Networks for Semantic Segmentati…...

深度解析Spring Boot自动装配原理
废话不多说了,直接来看源码。源码解析SpringBootApplication我们在使用idea创建好Spring Boot项目时,会发现在启动类上添加了SpringBootApplication注解,这个注解就是Spring Boot的核心所在。点击注解可以查看到到它的实现ementType.TYPE) Re…...

Linux:环境变量
目录一、环境变量的理解(1)什么是环境变量?(2)Linux中的环境变量二、环境变量的使用(1)PATH环境变量(2)和变量相关的指令三、环境变量与普通变量的区别在平时使用电脑的时…...

Codeforces Round 703 (Div. 2)(A~D)
A. Shifting Stacks给出一个数组,每次可以将一个位置-1,右侧相邻位置1,判断是否可以经过若干次操作后使得数列严格递增。思路:对于每个位置,前缀和必须都大于该位置应该有的最少数字,即第一个位置最少是0&a…...
Django项目5——基于tensorflow serving部署深度模型——windows版本
1:安装docker for windows 可能需要安装WLS2,用于支持Linux系统,参照上面的教程安装 2:在Powershell下使用docker docker pull tensorflow/serving3:在Powershell下启动tensorflow serving docker run -p 8500:8500 …...

MySQL基础篇3
第一章 多表关系实战 1.1 实战1:省和市 方案1:多张表,一对多 方案2:一张表,自关联一对多 id1 name‘北京’ p_id null; id2 name‘昌平’ p_id1 id3 name‘大兴’ p_id1 id3 name‘上海’ p_idnull id4 name‘浦东’…...

携程 x TiDB丨应对全球业务海量数据增长,一栈式 HTAP 实现架构革新
随着新冠病毒疫情的缓解和控制,全球旅游业逐渐开始重新复苏。尤其在一些度假胜地,游客数量已经恢复到疫情前的水平。 携程作为全球领先的一站式旅行平台,旗下拥有携程旅行网、去哪儿网、Skyscanner 等品牌。携程旅行网向超过 9000 万会员提供…...
记一次Kafka warning排查过程
1、前因 在配合测试某个需求的时候,正好看到控制台打印了个报错,如下: 2023-03-06 17:05:58,565[325651ms][pool-28-thread-1][org.apache.kafka.common.utils.AppInfoParser][WARN] - Error registering AppInfo mbean javax.management.I…...
MySQL学习笔记(6.视图)
1. 视图作用 (1). 简化业务,将多个复杂条件,改为视图 (2). mysql对用户授权,只能控制表权限,通过视图可以控制用户字段权限。 (3). 可以避免基本表变更,影响业务。只需更改视图即可。 2. 视图(创建&…...
java多线程与线程池-01多线程知识复习
多线程知识复习 文章目录 多线程知识复习第1章 多线程基础1.1.2 线程与进程的关系1.2 多线程启动1.2.1 线程标识1.2.2 Thread与Runnable1.2.3 run()与start()1.2.4 Thread源码分析1.3 线程状态1.3.1 NEW状态1.3.2 RUNNABLE状态1.3.3 BLOCKED状态1.3.4 WAITING状态1…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
32单片机——基本定时器
STM32F103有众多的定时器,其中包括2个基本定时器(TIM6和TIM7)、4个通用定时器(TIM2~TIM5)、2个高级控制定时器(TIM1和TIM8),这些定时器彼此完全独立,不共享任何资源 1、定…...

基于stm32F10x 系列微控制器的智能电子琴(附完整项目源码、详细接线及讲解视频)
注:文章末尾网盘链接中自取成品使用演示视频、项目源码、项目文档 所用硬件:STM32F103C8T6、无源蜂鸣器、44矩阵键盘、flash存储模块、OLED显示屏、RGB三色灯、面包板、杜邦线、usb转ttl串口 stm32f103c8t6 面包板 …...