win下搭建elk并集成springboot
一、ELK 是什么?
ELK 实际上是三个工具的集合,Elasticsearch + Logstash + Kibana,这三个工具组合形成了一套实用、易用的监控架构,很多公司利用它来搭建可视化的海量日志分析平台。
-
ElasticSearch
ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 -
Logstash
Logstash 是一个用于管理日志和事件的工具,你可以用它去收集日志、转换日志、解析日志并将他们作为数据提供给其它模块调用,例如搜索、存储等。 -
Kibana
Kibana 是一个优秀的前端日志展示框架,它可以非常详细的将日志转化为各种图表,为用户提供强大的数据可视化支持。
二、ELK 有何优势?
-
强大的搜索功能,elasticsearch 可以以分布式搜索的方式快速检索,而且支持 DSL 的语法来进行搜索,简单的说,就是通过类似配置的语言,快速筛选数据。
-
完美的展示功能,可以展示非常详细的图表信息,而且可以定制展示内容,将数据可视化发挥的淋漓尽致。
-
分布式功能,能够解决大型集群运维工作很多问题,包括监控、预警、日志收集解析等。
三、ELK 一般用来做啥?
ELK 组件在海量日志系统的运维中,可用于解决:
-
分布式日志数据集中式查询和管理
-
系统监控,包含系统硬件和应用各个组件的监控
-
故障排查
-
安全信息和事件管理
-
报表功能
ELK 组件在大数据运维系统中,主要可解决的问题如下:
-
日志查询,问题排查,上线检查
-
服务器监控,应用监控,错误报警,Bug 管理
-
性能分析,用户行为分析,安全漏洞分析,时间管理
四、ELK 搭建
1、版本介绍
这里笔者采用 win11 进行搭建,其余版本如下
elasticsearch-7.12.0
kibana-7.12.0-windows-x86_64
logstash-7.12.0-windows-x86_64
最后奉上网址:下载中心 - Elastic 中文社区 (elasticsearch.cn)
看清楚喽,是 windows 下,版本要一致
2、启动 elasticsearch
ok,下载解压之后开始我们的文件配置,首先打开我们的 elasticsearch 文件夹,进入 config 文件夹,编辑 elasticsearch.yml 文件,在文件中引入
cluster.name: my-application #集群名:类似于数据库名
path.data: D:/log #数据目录
path.logs: D:/log #日志目录
node.name: node-1
node.attr.rack: r1
cluster.initial_master_nodes: node-1
node.master: true
node.data: true
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.compression: true
transport.tcp.compress: true
indices.query.bool.max_clause_count: 10240
xpack.watcher.execution.default_throttle_period: 1s
http.cors.enabled: true
http.cors.allow-origin: "*"
保存配置后,启动 ElasticSearch,进入 bin 目录,elasticsearch.bat 启动成功,打开浏览器访问:http://127.0.0.1:9200,出现下面界面,说明 ElasticSearch 启动成功
3、安装 elasticsearch-head 插件
安装 elasticsearch-head 插件(这是 elasticsearch 的一个 web 端管理插件,通过管理插件可以查看 ElsasticSearch 的客户端工具,由 node.js 构建的前端工程。)git 地址:https://github.com/mobz/elasticsearch-head 。拉去过慢,可以使用 gitclone 进行拉取 https://gitclone.com/github.com/mobz/elasticsearch-head
拉取成功后,可以使用进入使用 vscode 打开或者其他编译器,打开终端,
npm install
npm run start
这里 npm install 可能会有一个包 npm install 时 phantomjs 包下载不下来,单独下载就可以批量下载时,
npm install phantomjs@2.1.1 --ignore-scripts
然后再重复上述操作即可,启动之后,访问 http://localhost:9100,界面如下:
4、启动 logstash
进入 logstash/config 中新建配置文件 logstash.conf, 内容如下:
input {file {type => "logstash"//path用来指定要加载到logstash中的文件目录,path => ["D:/logs/*/error/*.log","D:/logs/*/warn/*.log","D:/logs/*/info/*.log"]start_position => "beginning"}
}
output {elasticsearch {hosts => ["127.0.0.1:9200"]//index用来指定在es中自动创建的索引库index => "logstash-%{+YYYY.MM.dd}"}stdout {//以JSON的形式传输到es中codec => json_lines}
}
启动 logstash, 进入 logstash/bin 执行:.\logstash.bat -f …/config/logstash.conf
以下界面就是启动成功了
5、启动 Kibana
进入 Kibana 下 config 下的 kibana.yml 修改为:
server.port: 5601
server.host: "127.0.0.1"
elasticsearch.hosts: ["http://localhost:9200"]
xpack.encryptedSavedObjects.encryptionKey: encryptedSavedObjects12345678909876543210
xpack.security.encryptionKey: encryptionKeysecurity12345678909876543210
xpack.reporting.encryptionKey: encryptionKeyreporting12345678909876543210
xpack.reporting.capture.browser.chromium.disableSandbox: true
启动 Kibana,进入 Kibana/bin 执行:kibana.bat,打开浏览器访问 http://localhost:5601/
五、与 springboot 集成
- 引入依赖
<!--logstash--><dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>5.3</version></dependency><!--web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>
yml 配置文件中写入
spring.application.name=myElkserver.port = 8081
在 resource 下创建 logback-spring.xml 文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration><property name="LOG_CONTEXT_NAME" value="log"/><!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--><property name="LOG_HOME" value="D:/logs" /><!-- 定义日志上下文的名称 --><contextName>${LOG_CONTEXT_NAME}</contextName><!-- 控制台输出 --><!--<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!–格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符–><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}:%L) - %msg%n</pattern><charset>utf-8</charset></encoder><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>INFO</level></filter></appender>--><!-- 彩色日志依赖的渲染类 --><conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /><conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /><conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /><!-- 彩色日志格式 --><property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/><!--1. 输出到控制台--><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>INFO</level></filter><encoder><Pattern>${CONSOLE_LOG_PATTERN}</Pattern><!-- 设置字符集 --><charset>UTF-8</charset></encoder></appender><!--info日志统一输出到这里--><appender name="file.info" class="ch.qos.logback.core.rolling.RollingFileAppender"><Prudent>true</Prudent><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名,按小时生成--><FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}/info/info.%d{yyyy-MM-dd-HH}.%i.log</FileNamePattern><!--日志文件保留天数--><MaxHistory>30</MaxHistory><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><!-- 除按日志记录之外,还配置了日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始, --><maxFileSize>10MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %method 方法名 %L 行数 %msg:日志消息,%n是换行符--><pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{56}.%method:%L - %msg%n</pattern><charset>utf-8</charset></encoder><!-- 此日志文件只记录info级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>INFO</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!--错误日志统一输出到这里--><appender name="file.error" class="ch.qos.logback.core.rolling.RollingFileAppender"><Prudent>true</Prudent><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名,按天生成--><FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}/error/error.%d{yyyy-MM-dd}.%i.log</FileNamePattern><!--日志文件保留天数--><MaxHistory>30</MaxHistory><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><!-- 除按日志记录之外,还配置了日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始, --><maxFileSize>10MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %method 方法名 %L 行数 %msg:日志消息,%n是换行符--><pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{56}.%method:%L - %msg%n</pattern><charset>utf-8</charset></encoder><!-- 此日志文件只记录error级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!--warn日志统一输出到这里--><appender name="file.warn" class="ch.qos.logback.core.rolling.RollingFileAppender"><Prudent>true</Prudent><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}/warn/warn.%d{yyyy-MM-dd}.%i.log</FileNamePattern><!--日志文件保留天数--><MaxHistory>30</MaxHistory><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><!-- 除按日志记录之外,还配置了日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始, --><maxFileSize>10MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %method 方法名 %L 行数 %msg:日志消息,%n是换行符--><pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{56}.%method:%L - %msg%n</pattern><charset>utf-8</charset></encoder><!-- 此日志文件只记录warn级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>WARN</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!--输出到logstash的appender--><appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><!--可以访问的logstash日志收集端口--><destination>127.0.0.1:4560</destination><encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/></appender><!-- 日志输出级别 --><root level="DEBUG"><appender-ref ref="STDOUT" /><appender-ref ref="file.error" /><appender-ref ref="file.info" /><appender-ref ref="file.warn" /><appender-ref ref="LOGSTASH"/></root></configuration>
ok,接下来创建测试类
package com.example.myelk.controller;import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Date;@Slf4j
@RestController
@RequestMapping("/test")
public class TestController {@GetMapping("/success")public String test (){log.info("###test:{}", new Date());return "success";}}
访问接口后,在 Kibana 中创建索引 logstash-*, 时间选择 I dont want to use te time filter 就行
点击 create index pattern 即可创建成功
创建成功之后,可以选择上方搜索框,搜索 Discover, 可以选择 table 或者 json
IDEA 中控制台打印的原日志内容是下面内容。Logstash 作用就是把下面内容转换为上面 Elasticsearch 存储的内容。在中间做了数据格式转换,收集数据放入 Elasticsearch 中的工作。
相关文章:
win下搭建elk并集成springboot
一、ELK 是什么? ELK 实际上是三个工具的集合,Elasticsearch Logstash Kibana,这三个工具组合形成了一套实用、易用的监控架构,很多公司利用它来搭建可视化的海量日志分析平台。 ElasticSearch ElasticSearch 是一个基于 Lucen…...
ABAQUS柱状晶模型基于泰森多边形建模
建立柱状晶几何模型进行有限元分析有助于深入理解材料的微观结构与宏观性能之间的关系,为材料设计、制造工艺优化及失效预测提供了强有力的工具。本案例介绍采用AutoCAD基于泰森多边形算法生成柱状晶三维几何部件,并导入Abaqus有限元软件内建立包含晶粒及…...
MySQL InnoDB常用锁总结(行锁、间隙锁、临键锁、表锁)
在高并发数据库系统中,锁机制是保障数据一致性和事务隔离性的重要手段。MySQL 的 InnoDB 存储引擎提供了多种锁类型,包括行锁、间隙锁、临键锁和表锁。本文将详细介绍这些锁的原理、使用场景及其注意事项,并结合案例进行说明。 1. 表锁 概念…...
Flink系统知识讲解之:如何识别反压的源头
Flink系统知识之:如何识别反压的源头 什么是反压 Ufuk Celebi 在一篇古老但仍然准确的文章中对此做了很好的解释。如果您不熟悉这个概念,强烈推荐您阅读这篇文章。如果想更深入、更低层次地了解该主题以及 Flink 网络协议栈的工作原理,这里有…...
UE5行为树浅析
Tree 什么是树? 树是由节点或顶点和边组成的数据结构,没有任何循环。没有节点的树称为空树或空树。 非空的树由根节点和可能形成层次结构的多层附加节点组成。 树是一种数据结构树由点和有向边组成树是连通的,可达的树有执行顺序树没有环 …...
大模型测试-数飞机个数
时间是2025年1月7日,测试下各大网页端大模型的多模态识图能力。 测试题目 图片 问题 标记一下图里的飞机,并数一下飞机的个数 测试结果 千问qwen 在这张图片中,我可以看到总共12架飞机。以下是它们的位置标记:左上角跑道上有…...
Ubuntu挂载Windows 磁盘,双系统
首先我们需要在终端输入这个命令,来查看磁盘分配情况 lsblk -f 找到需要挂载的磁盘,检查其类型( 我的/dev/nvme2n1p1类型是ntfs,名字叫3500winData) 然后新建一个挂载磁盘的目录,我的是/media/zeqi/3500wi…...
快速上手:采用Let‘sEncrypt免费SSL证书配置网站Https (示例环境:Centos7.9+Nginx+Let‘sEncrypt)
1 关于Let’s Encrypt与Cerbot DNS验证 Let’s Encrypt 是一个提供 免费证书 的 认证机构。 Cerbot 是 Let’s Encrypt 提供的一个工具,用于自动化生成、验证和续订证书。 DNS验证是 Cerbot 支持的验证方式之一。相比 HTTP 验证或 TLS-ALPN 验证,DNS …...
【项目】修改远程仓库地址、报错jdk
一、修改远程仓库地址 进入你刚刚克隆到本地的仓库目录,执行以下命令来修改远程仓库的 URL,将其指向你自己的新仓库: cd 原仓库名 git remote set-url origin <你自己的新仓库的 Git 地址>二、运行报错 多数jdk版本问题 三、 知识图…...
.NET体系架构
引言 .NET是由微软开发的一个广泛应用的开发平台,旨在帮助开发者构建各种类型的应用程序,包括桌面应用、Web应用、移动应用和云服务。最初,.NET平台的构建主要集中在Windows环境上,但随着.NET Core和随后.NET 5及以上版本的推出&…...
MTK平台-- 无线AP隔离功能
前言: 无线AP上大都有一个选项:启用该功能后,连接到同一AP的无线终端之间不能互相通信,但该功能并不限制无线终端和有线终端之间的通信。 Hostapd参数ap_isolate,用于控制AP隔离,但hostapd本身并不实现这一功能,只是将该参数通过nl80211传递给mac80211,由mac80211来实…...
初学stm32 --- 电源监控
目录 STM32 电源监控介绍 上电/掉电复位POR/PDR(F1) 可编程电压检测器(PVD)(F1) PVD相关寄存器介绍(F1) 电源控制寄存器 PWR_CR 电源控制/状态寄存器 PWR_CSR PVD相关HAL库驱动介绍 PVD的使用步骤 …...
小程序组件 —— 28 组件案例 - 推荐商品区域 - 实现结构样式
这一节目标是实现底部推荐商品的结构和样式,由于这里要求横向滚动,所以需要使用上节介绍的 scroll-view 功能,并使用 scroll-x 属性支持横向滚动,推荐商品区域中的每一个商品是一个单独的 view,每个view 中需要写三个组…...
深入了解 SSL/TLS 协议及其工作原理
深入了解 SSL/TLS 协议及其工作原理 一. 什么是 SSL/TLS?二. SSL/TLS 握手过程三. SSL/TLS 数据加密与传输四. 总结 点个免费的赞和关注,有错误的地方请指出,看个人主页有惊喜。 作者:神的孩子都在歌唱 一. 什么是 SSL/TLS? 安全套接层&am…...
解决RuntimeError: No CUDA GPUs are available问题
今天运行之前可以正常运行的项目时,发现了以下问题: 接下来记录解决过程: 参考:os.environ[“CUDA_VISIBLE_DEVICES”]"2"的问题 因为代码中设置了选择了具体的GPU的型号,但是有可能没有这个GPU࿰…...
了解RabbitMQ中的Exchange:深入解析与实践应用
在分布式系统设计中,消息队列(Message Queue)扮演着至关重要的角色,而RabbitMQ作为开源消息代理软件的佼佼者,以其高性能、高可用性和丰富的功能特性,成为了众多开发者的首选。在RabbitMQ的核心组件中&…...
33.3K 的Freqtrade:开启加密货币自动化交易之旅
“ 如何更高效、智能地进行交易成为众多投资者关注的焦点。” Freqtrade 是一款用 Python 编写的免费开源加密货币交易机器人。它就像一位不知疲倦的智能交易助手,能够连接到众多主流加密货币交易所,如 Binance、Bitmart、Bybit 等(支…...
(概率论)区间估计 和 置信区间 、 假设检验
参考文章1:3分钟,看懂区间估计and置信区间 - 知乎 (zhihu.com) 1、点估计的定义: 2、区间估计的定义: 参考文章2:【概率论】- (1)区间估计 - 知乎 (zhihu.com) 这篇文章中的2中,2.1、2.2、2.3描述了需要用到…...
MBTiles 及爬取到发布
MBTiles :https://github.com/mapbox/mbtiles-spec/blob/master/1.3/spec.md 1.MBTiles是什么 MBTiles是一个在SQLite 数据库存储瓦片地图数据的标准,该标准的目的是即时传输和使用数据。 作为一个容器格式,MBTiles可以存储任何瓦片数据,…...
uniapp使用chooseLocation安卓篇
本文章全部以高德地图为例 代码 <view class"bottom"><button click"choose">定位</button> </view> choose() {uni.chooseLocation({success: function(res) {console.log(位置名称: res.name);console.log(详细地…...
el-cascader 树状选择-点击父级禁用子级
背景:项目上需要实现树状选择,点击父级禁用子级的功能,element组件本身没有该配置项说明:需要实现几个功能点:点击父级禁用子级;再次点击取消禁用;仅回填所选级;上下级不关联实现代码…...
力扣经典题目之219. 存在重复元素 II
今天继续给大家分享一道力扣的做题心得今天这道题目是 219. 存在重复元素 II,我使用 hashmap 的方法来解题 题目如下,题目链接:219. 存在重复元素 II 1,题目分析 此题目给我们了一个整数数组 nums 和一个整数 k ,需要…...
微服务保护—Sentinel快速入门+微服务整合 示例: 黑马商城
1.微服务保护 微服务保护是确保微服务架构可靠、稳定和安全的策略与技术。 在可靠性上,限流是控制进入微服务的请求数量,防止流量过大导致服务崩溃。比如电商促销时对商品详情服务进行流量限制。熔断是当被调用的微服务故障过多或响应过慢时,…...
Wireshark 学习笔记1
1.wireshark是什么 wireshark是一个可以进行数据包的捕获和分析的软件 2.基本使用过程 (1)选择合适的网卡 (2)开始捕获数据包 (3)过滤掉无用的数据包 (4)将捕获到的数据包保存为文件…...
voice agent实现方案调研
前言 目前语音交互主要的实现大体有两种: 级联方案,指的是,大规模语言模型 (LLM)、文本转语音 (TTS) 和语音转文本 (STT),客户的话通过vad断句到STT的语音转文本,经过大模型进行生成文本,生成文本后通过TTS进行回复给用户。(主流方案)端到端的方案,开发者无需再…...
pgpool配置安装之服务器的配置
第 1 章.服务器配置 1.1. 设置参数 1.1.1. 参数名称和值 所有参数名称均不区分大小写。每个参数都采用 值为以下五种类型之一:boolean、string、integer、floating point、 或枚举 (enum)。类型决定了设置 参数: 布尔…...
C++实现银行排队系统
网上看到的设计要求: 基本效果已经实现,希望大家帮忙指点指点。 程序中的一些基本模块 程序处理中的一些流程图 程序运行结果如下图: 程序代码如下: #include <iostream> #include <string> #include <random&g…...
UI自动化测试保姆级教程①
欢迎来到阿妮莫的学习小屋慢也好,步子小也好,在往前走就好 目录 自动化测试 简介 作用 分类 优缺点 优点 缺点(误区) UI自动化测试 自动化测试使用场景 自动化测试实现时间 Selenium框架 特点 Web自动化测试环境部署 Selenium包安装 浏览…...
多行输入模式(dquote> 提示符)double quote(双引号)
文章目录 1、引号不匹配具体原因解决办法如何避免此问题 2、double quote(双引号)出现原因解决办法预防措施 ~/Downloads/productqualification-develop git:[main] git commit -m "漏添加到暂存区的代码“ dgqdgqdeMac-mini productqualification-…...
【Uniapp-Vue3】原生事件监听及组件内置事件处理
如果我们想给元素添加一个事件就要使用到v-on,也可以简写为: <标签名 v-on:事件名"函数"></标签名> 或简写为 <标签名 事件名"函数"></标签名> 比如我们想要实现点击一下元素,num就1,…...
微软 2024 最新技术全景洞察
亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、Java 与 Python 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在未来…...
PHP语言的并发编程
PHP语言的并发编程 引言 随着互联网技术的迅速发展,Web 应用的复杂性和用户并发请求的增加,要求开发者在构建高性能应用时考虑并发编程。并发编程允许程序在同一时间执行多个任务,这对于处理高流量网站、API 和实时应用程序至关重要。虽然 …...
Nginx 解析漏洞复现
漏洞原理 该漏洞与Nginx、php版本无关,属于用户配置不当造成的解析漏洞。主要是由于下面两个配置的错误: cgi.fix_pathinfo1,该配置项的作用是如果访问的.php文件不存在,则采用上层路径,例如访问/test.png/.php,一般…...
使用XAML语言仿写BiliBil登录界面
实现步骤 实现左右布局 使用了Grid两列的网格布局,第一列宽度占35%,第二列宽度占65%。使用容器布局Border包裹左右布局内容,设置背景色、设置圆角 <!-- 定义两列--> <Grid.ColumnDefinitions><ColumnDefinition Width &quo…...
Kubernetes Gateway API-4-TCPRoute和GRPCRoute
1 TCPRoute 目前 TCP routing 还处于实验阶段。 Gateway API 被设计为与多个协议一起工作,TCPRoute 就是这样一个允许管理TCP流量的路由。 在这个例子中,我们有一个 Gateway 资源和两个 TCPRoute 资源,它们按照以下规则分配流量࿱…...
【C++动态规划 前缀和】3250. 单调数组对的数目 I|1897
本文涉及知识点 C动态规划 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode3250. 单调数组对的数目 I 给你一个长度为 n 的 正 整数数组 nums 。 如果两个 非负 整数数组 (arr1, arr2) 满足以下条件,我们称它们是 单调…...
【机器学习:五、使梯度下降法更快收敛的技巧】
1. 特征缩放 1.1 特征缩放的作用 特征缩放是一种将不同特征值归一化到相似范围的技术,可以显著提高梯度下降法的收敛速度。 作用: 避免数值差异导致的优化困难:当特征值范围差异较大时,代价函数呈现“长而窄”的形状࿰…...
系统思考—结构影响行为
托尔斯泰在《安娜卡列尼娜》中说:“幸福的家庭都是相似的,不幸的家庭各有各的不幸。”在企业经营管理中也如此——企业剧本总是相似,只是男女主角不同。 但无论外在表现如何变化,真正决定企业命运的,是系统结构。 企业…...
WorldQuant Settings 配置项名词解释
中文翻译及通俗解释 语言(Language) 解释:BRAIN 平台支持使用快速表达式(Fast Expression)语言。 例子:快速表达式就像写公式,比如 price + volume,简单易懂且高效。更多内容可以参考“可用操作符”。 工具类型(Instrument type) 解释:目前只能使用“股票”作为工…...
mybatisPlus动态sql语句 ${ew.sqlSegment}
mybatis-plus的${ew.sqlSegment},${ew.sqlSelect},${ew.customSqlSegment} ew是mapper方法里的Param(Constants.WRAPPER) Wrapper queryWrapper对象 简答介绍: ${ew.sqlSelect}:拼接select SQL主体 Select("select ${ew.…...
ATGM336H-5N71支持多种卫星导航系统的定位模块
ATGM336H-5N7 1是 9.7X10.1尺寸,AT6558芯片,导航模块,GPSBDSGLONASS定位,16.369M晶振,标准输出 ,电源2.7V~3.6V, 支持 UART0和UART1接口 . ATGM336H-5N特性: Flash TCXO 天线检测 天线过流保护 …...
Maven中管理SNAPSHOT版本含义及作用
在开发过程中突然产生了一个疑问:IDEA中 maven deploy的依赖包的版本号,比如 1.0.0-SNAPSHOT是在哪配置的?在远程仓库中的版本和这个有关系吗 ? 在 Maven 中,-SNAPSHOT 后缀是用于标识项目版本为快照(Snapshot…...
从技术到艺术:探索大模型提示词工程,给您的AI作品去去味
1. 增加互动性元素 请在文章中增加互动性元素,如提问、调查或互动链接,鼓励读者参与和反馈,提高文章的互动性和读者的参与度。 2. 加强视觉元素的应用 请在文章中适当加入图表、图片和其他视觉元素,增强文章的视觉效果࿰…...
OSPF - 1类LSA(Router-LSA)
点击返回LSA对照表 1类LSA是OSPF计算最原始的材料,他会泛洪发给所有的路由器 LSA是包含在LSU中的,一条LSU能够携带多条LSA options位所有LSA都会有,用于标记起源于什么类型的区域,具体查看文章【邻居建立】 flags位是一类LSA特…...
HTTP 协议中,GET、PUT、POST、DELETE、OPTIONS 和 PATCH 区别
在 HTTP 协议中,GET、PUT、POST、DELETE、OPTIONS 和 PATCH 是常见的请求方法(HTTP Methods),用于定义客户端与服务器之间的交互方式。每种方法都有特定的语义和用途。以下是它们的详细解释: 1. GET 用途: 用于从服务…...
黄仁勋演讲总结(2种显卡,1个开源大模型,1个数据采集平台)
研发算力显卡RTX50系列,PC端显卡GB10,开源大模型Cosmos(用于机器人和自动驾驶), Isaac GR00T(人形机器人的数据采集平台)。 新一代 RTX 50 系列显卡 RTX 50 系列 GPU,相对之前系列&a…...
支持向量机算法(一):像讲故事一样讲明白它的原理及实现奥秘
1、支持向量机算法介绍 支持向量机(Support Vector Machine,SVM)是一种基于统计学习理论的模式识别方法, 属于有监督学习模型,主要用于解决数据分类问题。SVM将每个样本数据表示为空间中的点,使不同类别的…...
掌握RabbitMQ:全面知识点汇总与实践指南
前言 RabbitMQ 是基于 AMQP 高级消息队列协议的消息队列技术。 特点:它通过发布/订阅模型,实现了服务间的高度解耦。因为消费者不需要确保提供者的存在。 作用:服务间异步通信;顺序消费;定时任务;请求削…...
Ansys Discovery 优化模式:掌握网格划分方法
本篇博客文章介绍了 Ansys Discovery 中高级 CFD 仿真的 Refine 模式下可用的网格划分方法。上一篇文章讨论了 Explore 模式中可用的网格划分技术。 Refine 模式下的高级网格划分技术 使用 Ansys Discovery 时,Refine 模式提供的网格划分技术比 Explore 模式多。这…...
CentOS: RPM安装、YUM安装、编译安装(详细解释+实例分析!!!)
目录 1.什么是RPM 1.1 RPM软件包命名格式 1.2RPM功能 1.3查询已安装的软件:rpm -q 查询已安装软件的信息 1.4 挂载:使用硬件(光驱 硬盘 u盘等)的方法(重点!!!) 1…...