logback动态获取nacos配置
文章目录
- 前言
- 一、整体思路
- 二、使用bootstrap.yml
- 三、增加环境变量
- 四、pom文件
- 五、logback-spring.xml更改
- 总结
前言
主要是logback动态获取nacos的配置信息,结尾完整代码
项目springcloud+nacos+plumelog,使用的时候、特别是部署的时候,需要改环境,改地址
application.yml
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="10 seconds"><!--<include resource="org/springframework/boot/logging/logback/base.xml" />--><contextName>logback</contextName><!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 --><property name="log.path" value="./logs"/><property name="log.name" value="main"/><!--输出到控制台--><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>debug</level></filter><encoder><pattern>%green(TIMESTAMP):%-5d{yyyy-MM-dd HH:mm:ss.SSS}; %yellow(LEVEL):%level; %magenta(CLASS):%C{50};%magenta(METHOD):%M; %yellow(CT):%thread; %green(MSG):%msg%n</pattern><charset>UTF-8</charset></encoder></appender><!-- 时间滚动输出 level为 INFO 日志 --><appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><file>${log.path}/${log.name}.log</file><!--日志文件输出格式--><!-- class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder"--><encoder><pattern>%green(TIMESTAMP):%-5d{yyyy-MM-dd HH:mm:ss.SSS}; %yellow(LEVEL):%level; %magenta(CLASS):%C{50};%magenta(METHOD):%M; %yellow(CT):%thread; %green(MSG):%msg%n</pattern><charset>UTF-8</charset></encoder><!-- 日志记录器的滚动策略,按小时 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 每天日志归档路径以及格式 --><fileNamePattern>${log.path}/all/${log.name}-%d{yyyy-MM-dd-HH}.gz</fileNamePattern><!--日志文件保留小时数--><maxHistory>2160</maxHistory></rollingPolicy><!-- 此日志文件全部记录,不加入Filter --></appender><!-- 时间滚动输出 level为 ERROR 日志 --><appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><file>${log.path}/${log.name}-error.log</file><!--日志文件输出格式--><encoder><pattern>%green(TIMESTAMP):%-5d{yyyy-MM-dd HH:mm:ss.SSS}; %yellow(LEVEL):%level; %magenta(CLASS):%C{50};%magenta(METHOD):%M; %yellow(CT):%thread; %green(MSG):%msg%n</pattern><charset>UTF-8</charset> <!-- 此处设置字符集 --></encoder><!-- 日志记录器的滚动策略,按小时 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/error/${log.name}-error-%d{yyyy-MM-dd-HH}.gz</fileNamePattern><!--日志文件保留小时数--><maxHistory>2160</maxHistory></rollingPolicy><!-- 此日志文件只记录ERROR级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 异步输出 --><appender name="ASYNC_CONSOLE" class="ch.qos.logback.classic.AsyncAppender"><!-- 不丢失日志的话,discardingThreshold必须大于0,并且应小于appender的maxQueueSize --><discardingThreshold>0</discardingThreshold><!-- 设置日志事件的最大队列长度 --><queueSize>256</queueSize><!-- 添加真正的日志appender,引用同步,将其包装为异步 --><appender-ref ref="CONSOLE"/></appender><!-- 异步输出 --><appender name="ASYNC_INFO_FILE" class="ch.qos.logback.classic.AsyncAppender"><!-- 不丢失日志的话,discardingThreshold必须大于0,并且应小于appender的maxQueueSize --><discardingThreshold>0</discardingThreshold><!-- 设置日志事件的最大队列长度 --><queueSize>256</queueSize><!-- 添加真正的日志appender,引用同步,将其包装为异步 --><appender-ref ref="INFO_FILE"/></appender><!-- 异步输出 --><appender name="ASYNC_ERROR_FILE" class="ch.qos.logback.classic.AsyncAppender"><!-- 不丢失日志的话,discardingThreshold必须大于0,并且应小于appender的maxQueueSize --><discardingThreshold>0</discardingThreshold><!-- 设置日志事件的最大队列长度 --><queueSize>256</queueSize><!-- 添加真正的日志appender,引用同步,将其包装为异步--><appender-ref ref="ERROR_FILE"/></appender><!-- 使用kafka启用下面配置--><appender name="plumelog" class="com.plumelog.logback.appender.KafkaAppender"><appName>cmp-system</appName><!-- qa--><!-- <kafkaHosts>192.168.31.12:6667,192.168.31.13:6667,192.168.31.14:6667</kafkaHosts>--><!--prod--><kafkaHosts>192.168.30.17:6667,192.168.30.18:6667,192.168.30.19:6667,192.168.30.20:6667,192.168.30.21:6667</kafkaHosts></appender><!--开发环境:打印控制台--><springProfile name="dev"><root level="info"><appender-ref ref="CONSOLE"/><!--<appender-ref ref="DEBUG_FILE" />--><appender-ref ref="INFO_FILE"/><!--<appender-ref ref="WARN_FILE" />--><appender-ref ref="ERROR_FILE"/><appender-ref ref="plumelog"/></root></springProfile><!--测试环境:输出到文件--><springProfile name="test"><root level="info"><appender-ref ref="CONSOLE"/><!--<appender-ref ref="DEBUG_FILE" />--><appender-ref ref="INFO_FILE"/><!--<appender-ref ref="WARN_FILE" />--><appender-ref ref="ERROR_FILE"/><appender-ref ref="plumelog"/></root></springProfile><!--QA环境:输出到文件--><springProfile name="qa"><root level="info"><appender-ref ref="CONSOLE"/><!--<appender-ref ref="DEBUG_FILE" />--><appender-ref ref="INFO_FILE"/><!--<appender-ref ref="WARN_FILE" />--><appender-ref ref="ERROR_FILE"/><appender-ref ref="plumelog"/></root></springProfile><!--生产环境:输出到文件--><springProfile name="prod"><root level="info"><appender-ref ref="CONSOLE"/><!--<appender-ref ref="DEBUG_FILE" />--><appender-ref ref="INFO_FILE"/><!--<appender-ref ref="WARN_FILE" />--><appender-ref ref="ERROR_FILE"/><appender-ref ref="plumelog"/></root></springProfile></configuration>
每次部署需要修改使用active的版本。和修改xml的kafka地址。已经使用了nacos的服务发现功能。决定用配置中心整理下。
一、整体思路
在nacos上将配置信息配置上。logback动态获取nacos的配置
二、使用bootstrap.yml
原来是application.yml,但是在spring中,logback.xml的加载循序在application.yml之前。导致logback.xml动态获取kafka服务器地址失败。
bootstrap.yml
NACOS_SERVER_ADDR、NACOS_NAMESPACE
是自定义环境变量。
如果读取不到NACOS_SERVER_ADDR、NACOS_NAMESPACE值,默认值为后面的nacos地址、命名空间
三、增加环境变量
本地不用管。默认即可。qa、prod环境需要再机器上执行命令
export NACOS_SERVER_ADDR=192.168.31.11:8848
export NACOS_NAMESPACE=bd1c9d0c-be99-425f-a0bc-93838b2171a5
四、pom文件
pom中增加nacos-config依赖
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>
五、logback-spring.xml更改
logback-spring.xml修改为logback-nacos.xml,名字可以自定义。
在nacos的配置文件中。做日志指向。
logging:config: classpath:logback-nacos.xml
这步最重要,不然动态获取失败。也是看别人解决的
完整的代码
bootstrap.yml
# Tomcat
server:port: 9003# Spring
spring:application:# 应用名称name: cmp-sim-managementcloud:nacos:discovery:# 服务注册地址server-addr: ${NACOS_SERVER_ADDR:10.10.10.20:8848}config:# 配置中心地址server-addr: ${NACOS_SERVER_ADDR:10.10.10.20:8848}# 配置文件格式file-extension: yamlnamespace: ${NACOS_NAMESPACE:bd1c9d0c-be99-425f-a0bc-93838b2171a5}refresh-enabled: true
logback-nacos-xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="10 seconds"><!--<include resource="org/springframework/boot/logging/logback/base.xml" />--><!-- <contextName>logback1</contextName>--><!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 --><property name="log.path" value="./logs"/><property name="log.name" value="main"/><springProperty scope="context" name="application.name" source="spring.application.name"/><springProperty scope="context" name="plumelog.kafka" source="spring.kafka.bootstrap-servers"/><!--输出到控制台--><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>info</level></filter><encoder><pattern>%green(TIMESTAMP):%-5d{yyyy-MM-dd HH:mm:ss.SSS}; %yellow(LEVEL):%level; %magenta(CLASS):%C{50};%magenta(METHOD):%M; %yellow(CT):%thread; %green(MSG):%msg%n</pattern><charset>UTF-8</charset></encoder></appender><!-- 时间滚动输出 level为 INFO 日志 --><appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><file>${log.path}/${log.name}.log</file><!--日志文件输出格式--><!-- class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder"--><encoder><pattern>%green(TIMESTAMP):%-5d{yyyy-MM-dd HH:mm:ss.SSS}; %yellow(LEVEL):%level; %magenta(CLASS):%C{50};%magenta(METHOD):%M; %yellow(CT):%thread; %green(MSG):%msg%n</pattern><charset>UTF-8</charset></encoder><!-- 日志记录器的滚动策略,按小时 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 每天日志归档路径以及格式 --><fileNamePattern>${log.path}/all/${log.name}-%d{yyyy-MM-dd-HH}.gz</fileNamePattern><!--日志文件保留小时数--><maxHistory>2160</maxHistory></rollingPolicy><!-- 此日志文件全部记录,不加入Filter --></appender><!-- 时间滚动输出 level为 ERROR 日志 --><appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><file>${log.path}/${log.name}-error.log</file><!--日志文件输出格式--><encoder><pattern>%green(TIMESTAMP):%-5d{yyyy-MM-dd HH:mm:ss.SSS}; %yellow(LEVEL):%level; %magenta(CLASS):%C{50};%magenta(METHOD):%M; %yellow(CT):%thread; %green(MSG):%msg%n</pattern><charset>UTF-8</charset> <!-- 此处设置字符集 --></encoder><!-- 日志记录器的滚动策略,按小时 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/error/${log.name}-error-%d{yyyy-MM-dd-HH}.gz</fileNamePattern><!--日志文件保留小时数--><maxHistory>2160</maxHistory></rollingPolicy><!-- 此日志文件只记录ERROR级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 异步输出 --><appender name="ASYNC_CONSOLE" class="ch.qos.logback.classic.AsyncAppender"><!-- 不丢失日志的话,discardingThreshold必须大于0,并且应小于appender的maxQueueSize --><discardingThreshold>0</discardingThreshold><!-- 设置日志事件的最大队列长度 --><queueSize>256</queueSize><!-- 添加真正的日志appender,引用同步,将其包装为异步 --><appender-ref ref="CONSOLE"/></appender><!-- 异步输出 --><appender name="ASYNC_INFO_FILE" class="ch.qos.logback.classic.AsyncAppender"><!-- 不丢失日志的话,discardingThreshold必须大于0,并且应小于appender的maxQueueSize --><discardingThreshold>0</discardingThreshold><!-- 设置日志事件的最大队列长度 --><queueSize>256</queueSize><!-- 添加真正的日志appender,引用同步,将其包装为异步 --><appender-ref ref="INFO_FILE"/></appender><!-- 异步输出 --><appender name="ASYNC_ERROR_FILE" class="ch.qos.logback.classic.AsyncAppender"><!-- 不丢失日志的话,discardingThreshold必须大于0,并且应小于appender的maxQueueSize --><discardingThreshold>0</discardingThreshold><!-- 设置日志事件的最大队列长度 --><queueSize>256</queueSize><!-- 添加真正的日志appender,引用同步,将其包装为异步--><appender-ref ref="ERROR_FILE"/></appender><!-- <!– 使用kafka启用下面配置–>--><appender name="plumelog" class="com.plumelog.logback.appender.KafkaAppender"><appName>${application.name}</appName><kafkaHosts>${plumelog.kafka}</kafkaHosts></appender><root level="info"><appender-ref ref="CONSOLE"/><!--<appender-ref ref="DEBUG_FILE" />--><appender-ref ref="INFO_FILE"/><!--<appender-ref ref="WARN_FILE" />--><appender-ref ref="ERROR_FILE"/><appender-ref ref="plumelog"/></root></configuration>
从nacos中动态获取kafka信息
总结
原本想着将logback-nacos.xml也放到nacos中。这样就维护一份就可以了。但是没有成功,之后有空再试吧
相关文章:
logback动态获取nacos配置
文章目录 前言一、整体思路二、使用bootstrap.yml三、增加环境变量四、pom文件五、logback-spring.xml更改总结 前言 主要是logback动态获取nacos的配置信息,结尾完整代码 项目springcloudnacosplumelog,使用的时候、特别是部署的时候,需要改环境&#…...
KETTLE安装部署V2.0
一、前置准备工作 JDK:下载JDK (1.8),安装并配置 JAVA_HOME 环境变量,并将其下的 bin 目录追加到 PATH 环境变量中。如果你的环境中已存在,可以跳过这步。KETTLE(8.2)压缩包:LHR提供关闭防火墙…...
[RabbitMQ] 保证消息可靠性的三大机制------消息确认,持久化,发送方确认
🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…...
aws服务--机密数据存储AWS Secrets Manager(1)介绍和使用
一、介绍 1、简介 AWS Secrets Manager 是一个完全托管的服务,用于保护应用程序、服务和 IT 资源中的机密信息。它支持安全地存储、管理和访问应用程序所需的机密数据,比如数据库凭证、API 密钥、访问密钥等。通过 Secrets Manager,你可以轻松管理、轮换和访问这些机密信息…...
Java设计模式笔记(一)
Java设计模式笔记(一) (23种设计模式由于篇幅较大分为两篇展示) 一、设计模式介绍 1、设计模式的目的 让程序具有更好的: 代码重用性可读性可扩展性可靠性高内聚,低耦合 2、设计模式的七大原则 单一职…...
Unity3d C# 实现一个基于UGUI的自适应尺寸图片查看器(含源码)
前言 Unity3d实现的数字沙盘系统中,总有一些图片或者图片列表需要点击后弹窗显示大图,这个弹窗在不同尺寸分辨率的图片查看处理起来比较麻烦,所以,需要图片能够根据容器的大小自适应地进行缩放,兼容不太尺寸下的横竖图…...
【es6进阶】vue3中的数据劫持的最新实现方案的proxy的详解
vuejs中实现数据的劫持,v2中使用的是Object.defineProperty()来实现的,在大版本v3中彻底重写了这部分,使用了proxy这个数据代理的方式,来修复了v2中对数组和对象的劫持的遗留问题。 proxy是什么 Proxy 用于修改某些操作的默认行为࿰…...
w~视觉~3D~合集3
我自己的原文哦~ https://blog.51cto.com/whaosoft/12538137 #SIF3D 通过两种创新的注意力机制——三元意图感知注意力(TIA)和场景语义一致性感知注意力(SCA)——来识别场景中的显著点云,并辅助运动轨迹和姿态的预测…...
IT服务团队建设与管理
在 IT 服务团队中,需要明确各种角色。例如系统管理员负责服务器和网络设备的维护与管理;软件工程师专注于软件的开发、测试和维护;运维工程师则保障系统的稳定运行,包括监控、故障排除等。通过清晰地定义每个角色的职责࿰…...
一文学习开源框架OkHttp
OkHttp 是一个开源项目。它由 Square 开发并维护,是一个现代化、功能强大的网络请求库,主要用于与 RESTful API 交互或执行网络通信操作。它是 Android 和 Java 开发中非常流行的 HTTP 客户端,具有高效、可靠、可扩展的特点。 核心特点 高效…...
自研芯片逾十年,亚马逊云科技Graviton系列芯片全面成熟
在云厂商自研芯片的浪潮中,亚马逊云科技无疑是最早践行这一趋势的先驱。自其迈出自研芯片的第一步起,便如同一颗石子投入平静的湖面,激起了层层涟漪,引领着云服务和云上算力向着更高性能、更低成本的方向演进。 早在2012年&#x…...
Stable Diffusion 3 部署笔记
SD3下载地址:https://huggingface.co/stabilityai/stable-diffusion-3-medium/tree/main https://huggingface.co/spaces/stabilityai/stable-diffusion-3-medium comfyui 教程: 深度测评:SD3模型表现如何?实用教程助你玩转Stabl…...
微信小程序WXSS全局样式与局部样式的使用教程
微信小程序WXSS全局样式与局部样式的使用教程 引言 在微信小程序的开发中,样式的设计与实现是提升用户体验的关键部分。WXSS(WeiXin Style Sheets)作为微信小程序的样式表语言,不仅支持丰富的样式功能,还能通过全局样式与局部样式的灵活运用,帮助开发者构建美观且易于维…...
Docker 部署 MongoDB
🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🍃 vue-uniapp-template 🌺 仓库主页: GitCode💫 Gitee …...
Unity图形学之法线贴图原理
1.正常贴图:RGBA 4通道 每个通道取值范围 0-255 贴图里面取值是 0-1 2.法线贴图:法线怎么存入正常贴图的过程 每个通道里面存储的是一个向量(x,y,z,w) 通常我们会对应xyzw为rgba 存储值的范围也是0-1向量的取值范围是 -1到1法线怎么存入正常贴图的过程&…...
爬虫开发(5)如何写一个CSDN热门榜爬虫小程序
笔者 綦枫Maple 的其他作品,欢迎点击查阅哦~: 📚Jmeter性能测试大全:Jmeter性能测试大全系列教程!持续更新中! 📚UI自动化测试系列: SeleniumJava自动化测试系列教程❤ 📚…...
JVM系列之OOM观测准备
OOM, 全称 “Out Of Memory”,即内存用完的意思。JVM 因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时(可分配内存大于需要分配的内存), 就会抛出 java.lang.OutOfMemoryError。在实际的生产应用中,一旦…...
Qt | 开发技能提升档次哈
点击上方"蓝字"关注我们 01、Creator常用快捷键 >>> F1 查看帮助 F2 跳转到函数定义 Shift+F2 声明和定义之间切换 F3 查找下一个 F4 头文件和源文件之间切换 Ctrl+1 欢迎模式 Ctrl+2 编辑模…...
D79【 python 接口自动化学习】- python基础之HTTP
day79 requests模块发送请求 学习日期:20241125 学习目标:http定义及实战 -- requests模块进行get请求带参数&requests模块进行post请求 学习笔记: requests模块进行get请求 import requestsparams{"shouji":"130999…...
C++【日志模块中的writer类】前文中 循环队列用法
用到前文中的循环队列模板 /* ** File name: LogWriter.h ** Author: ** Date: 2024-11-4 ** Brief: 日志写入类 ** Note: 日志写入类,负责将日志写入文件和连接客户端。 ** Copyright (C) 1392019713qq.com All rights reserve…...
Linux:文件管理(一)——文件描述符fd
目录 一、文件基础认识 二、C语言操作文件的接口 1.> 和 >> 2.理解“当前路径” 三、相关系统调用 1.open 2.文件描述符 3.一切皆文件 4.再次理解重定向 一、文件基础认识 文件 内容 属性。换句话说,如果在电脑上新建了一个空白文档࿰…...
【C++初阶】第3课—类和对象(类的默认成员函数)
文章目录 1. 类的默认成员函数2. 构造函数3. 拷贝构造函数3.1 传值传参3.2 传值返回3.3 深拷贝和浅拷贝3.4 总结 4. 析构函数5. 赋值运算符重载5.1 运算符重载5.2 赋值运算符重载5.3 日期类的实现 6. 取地址运算符重载6.1 const 成员函数6.2 取地址运算符重载 1. 类的默认成员函…...
uni-app初学笔记:文件路径与作用
components:可复用的组件pages:页面(可见/不可见)static:静态资源,存放图片视频等 (相当于vue项目的 assets)mainjs:Vue初始化入口文件App.vue:应用配置,用来配置App全局样式以及监听pages.json :配置页面路…...
小程序-使用 iconfont 图标库报错:Failed to load font
官方默认可以忽略此错误,在清除缓存后首次刷新会显示此错误,重新渲染错误消失 解决方法: 在 iconfont 图标库选择项目设置 选中 Base64 保存,重新点击链接 -> 复制代码到项目中 操作步骤:...
【计网】自定义协议与序列化(一) —— Socket封装于服务器端改写
🌎 应用层自定义协议与序列化 文章目录: Tcp协议Socket编程 应用层简介 序列化和反序列化 重新理解read/write/recv/send及tcp的全双工 Socket封装 服务器端改写 🚀应用层简介 我们程序员写的一个个解决…...
速度革命:esbuild如何改变前端构建游戏 (1)
什么是 esbuild? esbuild 是一款基于 Go 语言开发的 JavaScript 构建打包工具,以其卓越的性能著称。相比传统的构建工具(如 Webpack),esbuild 在打包速度上有着显著的优势,能够将打包速度提升 10 到 100 倍…...
大语言模型---什么是注意力机制?LlaMA 中注意力机制的数学定义
摘要 注意力机制(Attention Mechanism)是一种在深度学习和人工智能中广泛使用的技术,旨在使模型在处理信息时能够重点关注重要的部分,从而提升任务的效率和精度。它最初应用于自然语言处理(NLP)࿰…...
LSA详情与特殊区域
LSA是构成LSDB的重要原材料,在OSPF中发挥很大作用。 报文 通用头部 LS age:LSA寿命,0-3600s Options:可选项 LS type:LSA类型,三要素之一 Link State ID:LSAID 三要素之一 Advertising Ro…...
Python爬虫能处理动态加载的内容吗?
Python爬虫确实可以处理动态加载的内容。动态加载的内容通常是通过JavaScript在客户端执行,这意味着当网页首次加载时,服务器返回的HTML可能并不包含最终用户看到的内容。相反,JavaScript代码会在页面加载后从服务器请求额外的数据࿰…...
Spring Boot Web应用开发:数据访问
数据访问是Web应用的关键部分,Spring Boot简化了这一流程,特别是通过集成Java Persistence API (JPA) 来实现数据持久化。以下是如何在Spring Boot中配置数据源、使用JPA进行数据持久化以及创建访问数据的REST接口。 配置数据源 在Spring Boot中&#…...
怎么做网站互换链接/广州百度关键词推广
前几天看了springside4的mini-web代码发现确实有不少新的东东,咱这次单说说Spring Data JPA吧。 引用springside4的 wiki关于对Spring Data JPA的简介 Spring Data JPA在JPA上又做了一层封装,只要编写接口就够了,不用写一行实现代码ÿ…...
合肥网站优化/seo建站技术
1. 任务调度线程池 1.1 ScheduledThreadPoolExecutor 延时执行 示例代码(任务都延时1s执行): package com.tian;import java.util.Date; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; import java.util.con…...
国外的外贸b2b网站有哪些/北京seo教师
Python 操作 Excel 教程(1) | 向单元格写入数据今天,我们开始学习使用 Python 来操作 Excel 表格,我在前面的文章写过,Go语言的Excelize,还有Python语言的OpenpyXl、Pandas和xlwings都可以作为 VBA 的替代,…...
海南省住房和建设厅网站首页/seo行业岗位
羽毛球鞋什么牌子好写回答 共76个回答PINKY5567LV.4 推荐于 2018-02-27YONEX的球鞋产品线最多,推广最好,性能和脚感也是顶尖的,如果买来送人,首选建议是YONEX。(现在最好的鞋是01LTD、F1NLTD、65X、86LTD、SC6i等等&am…...
wordpress怎么汉化插件/河南做网站的公司
In this second part of the series on administration, you will learn how to lock down the site to keep the public from accessing the administration features.在介绍管理部分系列的第二部分,你将学习如何限制访问权限的相关内容。上一节加了三个admin链接&…...
wordpress+刷新/怎么制作一个网页
作者:chris 来自:IBM 很多人用java进行文档操作时经常会遇到一个问题,就是如何获得word,excel,pdf等文档的内容?我研究了一下,在这里总结一下抽取word,pdf的几种方法。 1. 用jaco…...