规范化的日志书写、grep 排查容器日志完整指南

Qwen 3.8 27B本地部署实战:开源大模型如何免费对标Claude Opus 大语言模型(LLM)通过海量数据训练,具备了强大的文本生成、代码编写和逻辑推理能力,其核心原理在于Transformer架构对序列数据的并行化处理与注意力机制。这项技术的价值在于将通用人工智能能力工程化,为开发者提供了构建智能应用的基石。在应用场景上,LLM正从云端API服务向本地私有化部署演进,以满足数据安全、成本控制和定制化需求。开源模型的崛起,特别是像Qwen 3.8 27B这样的标杆,正推动这一趋势。它凭借在多项基准测试中超越Claude Opus 4.6的性能表现,结合Apache 2.0开源协议 阅读详情

在 Spring Boot 与 Spring Cloud 应用开发中,规范化的日志书写对系统可观测性、问题排查、运维监控至关重要。虽然 Java 本身没有强制的日志格式标准,但业界(尤其在金融、保险等强监管行业)普遍形成了一套推荐实践和指导性规范。以下是一份面向实际 Java 后端开发(尤其是 Spring Boot/Spring Cloud)的日志指南,涵盖格式、内容、级别、安全、性能等维度。


一、日志框架选型(基础)

Spring Boot 默认使用 SLF4J + Logback,这是推荐组合:

  • SLF4J:日志门面,统一接口。
  • Logback:高性能、功能丰富的实现,支持异步日志、条件配置、JSON 输出等。
  • 避免直接使用 System.out.println() 或 java.util.logging。

✅ 建议:始终通过 org.slf4j.Logger 编写日志,不要引入多个日志实现(如同时引入 Log4j2 和 Logback)。

private static final Logger log = LoggerFactory.getLogger(YourClass.class);

二、日志级别规范(核心)

级别使用场景
ERROR系统错误:业务异常、数据库连接失败、外部服务调用失败等。必须记录异常堆栈(关键!)
WARN潜在问题:配置缺失、降级处理、非预期但可恢复的异常(如空值处理)
INFO关键业务节点:服务启动/关闭、重要请求入口/出口、定时任务执行、状态变更等
DEBUG开发/测试阶段详细信息:方法入参、中间变量、SQL(非生产)
TRACE极细粒度(极少用),如循环内部状态

📌 重要原则:

  • 生产环境通常开启 INFO 级别,禁止在生产记录 DEBUG 日志(除非临时开启)。
  • ERROR 必须带异常堆栈;INFO/WARN 一般不带堆栈(除非有助于分析)。
  • 不要滥用 ERROR:业务校验失败(如用户输入错误)应记录为 WARN 或 INFO,而非 ERROR。

三、日志内容格式规范(结构化日志)

推荐格式(结构化、可解析):

[时间] [traceId] [spanId] [线程名] [日志级别] [类名] [方法名] - [结构化消息]

Spring Cloud Sleuth 默认注入 traceId 和 spanId,便于链路追踪。

示例(使用 MDC 实现):

2025-11-20T10:30:45.123+08:00 [traceId=abcd1234] [spanId=efgh5678] [http-nio-8080-exec-1] INFO  c.e.s.service.PolicyService - Create policy request received, userId=U123456, productId=P789

✅ 关键字段建议包含:

  • traceId / spanId:用于分布式链路追踪(Sleuth/Zipkin)
  • userId / requestId / orderId 等业务关键标识(通过 MDC 注入)
  • 关键入参/出参(脱敏后)
  • 耗时(如 took 120ms)

四、MDC(Mapped Diagnostic Context)最佳实践

MDC 是 SLF4J 提供的线程绑定上下文,用于在日志中注入动态字段(如用户ID、请求ID)。

示例:在 WebFilter 中设置 MDC

@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class MdcFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
        try {
            String requestId = UUID.randomUUID().toString();
            MDC.put("requestId", requestId);

            // 若使用 Spring Cloud Sleuth,traceId/spanId 自动注入
            chain.doFilter(request, response);
        } finally {
            MDC.clear(); // 必须清理,避免线程池污染
        }
    }
}

⚠️ 警告:在异步线程(如 @Async、CompletableFuture)中,MDC 不会自动传递!需手动继承或使用 TransmittableThreadLocal(阿里开源)。


五、日志内容书写准则

✅ 推荐做法:

  • 使用 占位符 {},而非字符串拼接(避免性能浪费):
    log.info("Processing order {}, amount: {}", orderId, amount);
    
  • 记录关键状态变更:如“保单状态从A变更为B”。
  • 入口/出口日志:Controller 入口记录请求参数(脱敏),出口记录结果或耗时。
  • 异常日志必须包含上下文:
    log.error("Failed to create policy for user {}, product {}", userId, productId, exception);
    

❌ 禁止做法:

  • 记录敏感信息:身份证号、手机号、银行卡号(必须脱敏或禁止记录)。
  • 在循环内打日志(性能杀手)。
  • 使用模糊描述:“出错了”、“失败了” → 应明确“数据库连接超时”、“用户余额不足”。
  • 日志中包含大对象(如整个 JSON 请求体),应只记录关键字段。

六、日志配置(Logback 示例)

src/main/resources/logback-spring.xml:

<configuration>
    <!-- 控制台输出(开发) -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp/>
                <logLevel/>
                <loggerName/>
                <message/>
                <mdc/> <!-- 包含 MDC 字段 -->
                <stackTrace/>
            </providers>
        </encoder>
    </appender>

    <!-- 文件输出(生产建议用 JSON 格式,便于 ELK 采集) -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>logs/app.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp/>
                <logLevel/>
                <loggerName/>
                <message/>
                <mdc/>
                <stackTrace/>
            </providers>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

🔧 依赖(JSON 编码器):

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>7.4</version>
</dependency>

七、与 Spring Cloud 集成

  • Sleuth 自动注入 traceId/spanId 到 MDC,无需手动。
  • 配合 Zipkin / SkyWalking 实现全链路追踪。
  • 日志采集建议使用 Filebeat → Kafka → Logstash → ES → Kibana(ELK)或 Loki + Grafana。

八、安全与合规建议(尤其适用于金融/保险)

  • 禁止记录 PII(个人身份信息):如身份证、手机号、银行卡。若必须记录,需加密或脱敏(如 138****1234)。
  • 日志文件权限控制:仅限应用用户读写。
  • 日志保留策略:符合公司或行业合规要求(如保留 180 天)。
  • 审计日志(Audit Log)应单独记录,不可与应用日志混用。

九、总结:日志书写 Checklist

  • 使用 SLF4J + Logback
  • 合理使用日志级别(ERROR 带堆栈,INFO 不滥用)
  • 关键业务标识(userId, orderId)通过 MDC 注入
  • 使用占位符 {},避免字符串拼接
  • 敏感信息脱敏或禁止记录
  • 生产环境关闭 DEBUG
  • 日志结构化(推荐 JSON 格式)
  • 异步线程中正确传递 MDC
  • 配合 Sleuth 实现 traceId 追踪
  • 日志文件轮转 + 保留策略

grep 排查容器日志完整指南

grep 常用参数说明

# 基础参数
-i      # 忽略大小写
-v      # 反向选择,显示不包含模式的行
-n      # 显示行号
-c      # 统计匹配行数
-A NUM  # 显示匹配行及后面NUM行
-B NUM  # 显示匹配行及前面NUM行  
-C NUM  # 显示匹配行及前后各NUM行
-E      # 使用扩展正则表达式
-F      # 固定字符串匹配(不解析正则)
-r      # 递归搜索目录
-w      # 全词匹配

1. 基础日志搜索

1.1 简单错误搜索

# 搜索包含 ERROR 的日志行
grep "ERROR" /path/to/container.log

# 搜索错误日志并显示行号(方便定位)
grep -n "ERROR" /path/to/container.log

# 忽略大小写搜索错误(匹配 error、Error、ERROR 等)
grep -i "error" /path/to/container.log

1.2 实时日志监控

# 实时监控容器日志中的错误(Docker环境)
docker logs -f container_name | grep "ERROR"

# 实时监控并高亮显示错误
docker logs -f container_name | grep --color=auto "ERROR"

# 监控K8s Pod日志中的异常
kubectl logs -f pod-name -n namespace | grep -i "exception"

2. 时间范围排查

2.1 按时间戳搜索

# 搜索特定时间段的日志(假设日志格式包含时间戳)
grep "2024-01-15 14:" /path/to/container.log

# 搜索今天14点到15点的错误
grep "2024-01-15 14:" /path/to/container.log | grep "ERROR"

# 搜索最近1小时的日志(结合日期命令)
grep "$(date -d '1 hour ago' '+%Y-%m-%d %H:')" /path/to/container.log

2.2 时间范围+关键词组合

# 搜索今天10点到11点之间的数据库错误
grep "2024-01-15 10:" /path/to/container.log | grep -i "database.*error"

# 搜索特定日期且包含超时的日志
grep "2024-01-15" /path/to/container.log | grep -i "timeout"

3. 上下文关联排查

3.1 查看错误上下文

# 显示错误行及后面10行(查看错误堆栈)
grep -A 10 "ERROR" /path/to/container.log

# 显示错误行及前面5行(查看错误发生前的操作)
grep -B 5 "ERROR" /path/to/container.log

# 显示错误行及前后各5行(完整上下文)
grep -C 5 "ERROR" /path/to/container.log

# 查看异常堆栈的完整信息
grep -A 20 "Exception" /path/to/container.log

3.2 请求链路追踪

# 通过 traceId 追踪完整请求链路
grep "traceId:abc123" /path/to/container.log

# 追踪特定用户的操作流水
grep "userId:12345" /path/to/container.log | head -20

# 查看订单相关所有日志(包含上下文)
grep -C 3 "orderId:1001" /path/to/container.log

4. 多条件组合搜索

4.1 与条件搜索(多个条件同时满足)

# 搜索同时包含 ERROR 和 Database 的行
grep "ERROR" /path/to/container.log | grep "Database"

# 搜索特定服务的超时错误
grep "UserService" /path/to/container.log | grep -i "timeout"

# 搜索支付失败且金额大于1000的记录
grep "PAYMENT_FAILED" /path/to/container.log | grep "amount:1[0-9]\{3\}"

4.2 或条件搜索(满足任一条件)

# 搜索 ERROR 或 WARN 日志(扩展正则)
grep -E "ERROR|WARN" /path/to/container.log

# 搜索多种异常类型
grep -E "NullPointerException|TimeoutException|SQLException" /path/to/container.log

# 搜索多个微服务的错误
grep -E "user-service|order-service|payment-service" /path/to/container.log | grep "ERROR"

4.3 排除特定内容

# 搜索 ERROR 但不包含已知的业务异常
grep "ERROR" /path/to/container.log | grep -v "BusinessException"

# 搜索异常但不包含超时类异常
grep "Exception" /path/to/container.log | grep -v "Timeout"

# 排除健康检查相关的错误
grep "ERROR" /path/to/container.log | grep -v "healthcheck"

5. 统计分析与模式识别

5.1 错误统计

# 统计错误总数
grep -c "ERROR" /path/to/container.log

# 按错误类型统计
grep "ERROR" /path/to/container.log | cut -d'|' -f3 | sort | uniq -c | sort -nr

# 统计每分钟错误数量(用于识别高峰)
grep "ERROR" /path/to/container.log | cut -d' ' -f1,2 | uniq -c

# 统计不同服务的错误分布
grep "ERROR" /path/to/container.log | grep -oE "service-[a-z]+" | sort | uniq -c

5.2 性能问题识别

# 查找执行时间超过1秒的操作
grep -E "cost:[0-9]{4,}ms" /path/to/container.log

# 搜索超时相关的日志
grep -i "timeout" /path/to/container.log

# 查找数据库慢查询
grep -E "SQL.*[0-9]{4,}ms" /path/to/container.log

# 搜索线程阻塞相关日志
grep -E "blocked|deadlock|thread.*wait" /path/to/container.log

6. 高级正则表达式搜索

6.1 复杂模式匹配

# 搜索包含数字的错误码(如 ERR_500, ERR_404)
grep -E "ERR_[0-9]{3}" /path/to/container.log

# 搜索金额格式(如 ¥1000.00, $500.50)
grep -E "[¥$][0-9]+\.[0-9]{2}" /path/to/container.log

# 搜索IP地址
grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" /path/to/container.log

# 搜索JSON格式的错误信息
grep -E '\{.*"errorCode".*"\}' /path/to/container.log

6.2 业务特定模式

# 搜索订单状态变更流水
grep -E "ORDER_STATUS.*[A-Z_]+->[A-Z_]+" /path/to/container.log

# 搜索支付相关操作(创建、成功、失败)
grep -E "PAYMENT_(CREATE|SUCCESS|FAILED)" /path/to/container.log

# 搜索用户会话相关日志(登录、登出、过期)
grep -E "SESSION_(LOGIN|LOGOUT|EXPIRED)" /path/to/container.log

7. 容器环境实战命令

7.1 Docker 容器日志排查

# 查看容器最近100行日志
docker logs --tail=100 container_name

# 实时监控并过滤错误
docker logs -f container_name | grep --color=auto -E "ERROR|Exception"

# 搜索特定时间段的容器日志
docker logs --since "2024-01-15T10:00:00" --until "2024-01-15T11:00:00" container_name | grep "ERROR"

# 导出容器日志到文件再分析
docker logs container_name > container.log 2>&1
grep -n "ERROR" container.log

7.2 Kubernetes 环境排查

# 查看Pod最新日志并搜索错误
kubectl logs pod-name -n namespace | grep -i "error"

# 实时监控Pod日志(多容器时指定容器)
kubectl logs -f pod-name -c container-name -n namespace | grep "ERROR"

# 查看之前崩溃的Pod日志
kubectl logs -p pod-name -n namespace | grep -A 10 "Exception"

# 查看Deployment所有Pod的日志
kubectl logs -l app=your-app -n namespace --tail=50 | grep -E "ERROR|WARN"

# 搜索特定命名空间中所有Pod的错误
kubectl logs --all-containers=true -n namespace --since=1h | grep -c "ERROR"

7.3 多文件搜索(日志轮转情况)

# 搜索当前目录所有.log文件
grep -r "ERROR" ./*.log

# 搜索压缩的旧日志文件
zgrep "ERROR" /path/to/container.log.1.gz

# 搜索多个日志文件并显示文件名
grep -H "ERROR" /path/to/container.log*

# 跨多个文件统计错误
grep -h "ERROR" /path/to/container.log* | wc -l

8. 问题排查工作流示例

8.1 性能问题排查流程

# 1. 首先确认是否有错误
grep -c "ERROR" /path/to/container.log

# 2. 查看错误类型分布
grep "ERROR" /path/to/container.log | cut -d'|' -f3 | sort | uniq -c

# 3. 搜索超时和慢查询
grep -E "timeout|TIMEOUT|slow|SLOW" /path/to/container.log

# 4. 查看高耗时操作
grep -E "cost:[0-9]{4,}ms" /path/to/container.log | sort -k5 -nr

# 5. 分析特定时间段的性能
grep "2024-01-15 14:" /path/to/container.log | grep -E "cost:[5-9][0-9]{2,}ms"

8.2 业务异常排查流程

# 1. 通过业务ID追踪
grep "orderId:1001" /path/to/container.log

# 2. 查看完整请求链路
grep -C 5 "traceId:abc123" /path/to/container.log

# 3. 搜索异常堆栈
grep -A 15 "NullPointerException" /path/to/container.log

# 4. 查看相关服务调用
grep -E "user-service|inventory-service|payment-service" /path/to/container.log | grep -C 2 "orderId:1001"

8.3 系统问题排查流程

# 1. 检查系统级错误
grep -E "OutOfMemoryError|StackOverflowError|MemoryError" /path/to/container.log

# 2. 查看资源相关错误
grep -E "connection pool|thread pool|database connection" /path/to/container.log

# 3. 搜索死锁和线程问题
grep -i "deadlock|thread.*blocked" /path/to/container.log

# 4. 检查外部依赖状态
grep -E "redis|mysql|rabbitmq|kafka" /path/to/container.log | grep -i "error\|timeout"

9. 实用脚本示例

9.1 错误报告生成脚本

#!/bin/bash
# error_report.sh

LOG_FILE=$1
REPORT_FILE="error_report_$(date +%Y%m%d_%H%M%S).txt"

echo "=== 错误统计报告 ===" > $REPORT_FILE
echo "生成时间: $(date)" >> $REPORT_FILE
echo "日志文件: $LOG_FILE" >> $REPORT_FILE
echo "" >> $REPORT_FILE

# 错误总数
echo "错误总数: $(grep -c "ERROR" $LOG_FILE)" >> $REPORT_FILE

# 错误类型分布
echo "" >> $REPORT_FILE
echo "错误类型分布:" >> $REPORT_FILE
grep "ERROR" $LOG_FILE | cut -d'|' -f3 | sort | uniq -c | sort -nr >> $REPORT_FILE

# 最近10个错误详情
echo "" >> $REPORT_FILE
echo "最近10个错误详情:" >> $REPORT_FILE
grep -A 2 "ERROR" $LOG_FILE | tail -30 >> $REPORT_FILE

echo "报告已生成: $REPORT_FILE"

9.2 实时监控脚本

#!/bin/bash
# monitor_errors.sh

CONTAINER_NAME=$1
LOG_FILE="/tmp/container_monitor_$(date +%Y%m%d_%H%M%S).log"

echo "开始监控容器: $CONTAINER_NAME"
echo "日志输出: $LOG_FILE"

docker logs -f $CONTAINER_NAME 2>&1 | while read line; do
    # 记录所有日志到文件
    echo "$line" >> $LOG_FILE
    
    # 实时显示错误和警告
    if echo "$line" | grep -E "ERROR|WARN" > /dev/null; then
        echo "$(date '+%Y-%m-%d %H:%M:%S') - $line"
    fi
done

这些 grep 命令覆盖了生产环境容器日志排查的绝大多数场景,通过组合使用可以高效定位各种问题。

在MATLAB产生正态(Gauss)分布随机数 在 MATLAB 中内置了有产生标准正态(Gauss)分布的随机数函数,使用方法如下: 其中 为产生矩阵的行数和列数, 为产生矩阵的个数,产生的矩阵中的每个元素均为服从 N(0,1)N(0, 1)N(0,1) 的标准正态分布的元素。使用如下命令产生一个 的服从的随机数矩阵: 绘制图像效果如下: 可以看到这里随机数服从 的标准正态分布。假设 X∼N(0,1)X\sim N(0,1)X∼N(0,1),则 3X+33X+33X+3 服从 N(3,9)N(3,9)N(3,9) 分布,因此我们要产生服从 N( 阅读详情

相关推荐

Docker部署Nextcloud私有云:MariaDB、OnlyOffice与HTTPS全栈实践

Nextcloud作为主流开源私有云平台,其稳定部署依赖Docker容器化、MariaDB数据库优化、OnlyOffice在线协作集成及HTTPS安全加固四大核心技术。理解Docker Compose服务健康检查机制与依赖等待原理,可避免因启动时序导致的500/404错误;掌握MariaDB字符集配置与InnoDB参数调优,是保障Nextcloud全文搜索与大文件上传可靠性的底层基础;而OnlyOffice的JWT兼容性控制与Nginx路径重写规则,则直接决定文档协同功能是否可用。在家庭NAS、边缘服务器或

weixin_30328063的博客 512

3分钟搞定 res-downloader 视频下载

刚刷到一条视频号,想存到电脑里,右键一按只跳出一串看不懂的链接。res-downloader 就是干这个的:它在本机起一个代理抓包服务(流量过一遍、挑出能下的资源),把视频号、抖音、小程序、m3u8 这些平台的视频、音频、图片列成清单,加密的还能一键解密成正常能播的文件。 ## 🧰 能力速览 - **代理抓包,自动筛资源**:本机起一个本地代理(流量必经的检查站),扫描全部请求,只把视频、音

gitblog_00531的博客 122

OneUptime 主机 OpenTelemetry Collector 接入指南:在 Linux / macOS / Windows 上采集主机遥测(OTLP)

本文讲解如何在 Linux、macOS、Windows 主机上以服务方式运行 **OpenTelemetry Collector**(`otelcol-contrib` 发行版),将主机遥测数据通过标准 OTLP 协议送入 OneUptime,覆盖主机指标、文件日志、journald、Apple Unified Log、Windows 事件日志以及 systemd 单元 / Windows 服务状

gitblog_01416的博客 978

电力电子技术(13)——大功率可控整流电路

目录引言2.6.1 带平衡电抗器的双反星形可控整流电路电路结构的特点接平衡电抗器的原因平衡电抗器使得两组三相半波整流电路同时导电的原理分析谐波分析2.6.2 多重化整流电路概述原理目标1)移相多重联结2)多重联结电路的顺序控制3重晶闸管整流桥顺序控制带平衡电抗器的双反星形可控整流电路(是多重化整流电路的重要形式之一)的特点:适用于低电压、大电流的场合。多重化整流电路的特点:绕组的极性相反的目的:消除直流磁通势如图所示,虽然两组相电流的瞬时值不同,但是平均电流相等而绕组的极性相反,所以直流安匝(电流*匝数)互

weixin_45589295的博客 1万+

从零开始搭建企业级安全扫描平台:基于Docker的Greenbone和ClamAV部署指南

本文提供了一份基于Docker容器技术,从零开始搭建企业级安全扫描平台的实战指南。详细介绍了如何部署和集成漏洞扫描工具Greenbone与病毒扫描工具ClamAV,涵盖架构设计、Docker环境优化、容器化部署步骤以及平台集成与监控方案,帮助企业构建自动化、可扩展的安全防御核心组件。

delta的博客 752

云原生技术问题

整体流程涉及DNS、ARP、TCP、IP、HTTP核心协议,完整过程如下:首先进行DNS解析,将域名解析为服务器IP,依次查询浏览器缓存、系统hosts、本地DNS缓存,未命中则向DNS服务器迭代查询。核心区别:TCP是面向连接的可靠传输协议,需三次握手建连,具备重传、校验、流量控制、拥塞控制机制,报文开销大、传输延迟高;traceroute利用ICMP超时报文:通过逐级递增数据包TTL值,每经过一台路由器TTL减1,TTL归零后路由器返回ICMP超时报文,以此获取链路所有路由节点IP,定位故障链路。

2303_81849819的博客 464

基于Python的军事装备数据爬取与分析:从网页抓取到数据可视化实战

本文将详细介绍如何使用Python最新技术栈构建一个完整的军事装备数据爬虫系统。我们将从爬虫基础讲起,逐步深入到异步爬取、反反爬策略、数据存储与分析等高级主题,最终实现一个能够自动抓取、清洗、存储和分析军事装备数据的完整解决方案。文章包含大量实战代码示例,涉及requests-html、aiohttp、Playwright等现代爬虫库,以及MongoDB存储、Pandas分析和Pyecharts可视化等技术。关键词:Python爬虫、军事数据、异步爬取、反反爬、数据可视化。

2201_76125261的博客 1187

systemd服务配置文件.service的配置项说明

service 服务配置文件是 systemd 初始化系统的核心组件,用于定义 Linux 服务的启动、运行和管理行为。.service文件定义‌单个服务的行为与管理规则‌,配置文件包含三个主要区块,以下是各配置项的详细说明:‌‌ 服务的简短描述(如 ),用于日志和管理命令中的标识。‌‌‌ 服务文档链接(如手册页或在线文档),例如 。‌‌ / ‌‌ / ‌‌‌ 定义冲突服务(如 ),冲突服务运行时当前服务无法启动。‌‌启动顺序控制‌: - :指定当前服务在哪些目标/服务‌之后启动‌(如 )

zhaominyong的专栏 805

Test-Time Adaptation Induces Stronger Accuracy and Agreement-on-the-Line

TTA不管是否提高了OOD的泛化性都增强了线性的趋势,TTA的初始目的是为了增强OOD的表现,一个人可能会觉得TTA使得ACL更强的原因是他消除了ID和OOD之间的差距,因此所有模型间ID vs OOD的准确率接近于y=x这条线,但是实际上这个解释不能够反映我们的经验发现,因为虽然TTA将分布之间的偏移简化为一种放缩的分布,但是这个放缩的因子幅值可能很大,也就是α<<1但是r>>1,这就会导致很偏离y=x这条线,而且理论分析也是,虽然ID和OOD的差距很大,但是线性关系还在。

m0_62673638的博客 147

进阶06:C#连接TwinCAT 3使用ADS通讯

本文介绍了使用C#通过ADS协议与倍福TwinCAT3 PLC通讯的实现方法。主要内容包括:1)在两台电脑上安装TwinCAT3开发环境并建立网络连接;2)在TwinCAT中定义变量和结构体;3)使用C# Winform开发界面,通过TwinCAT.Ads.dll实现读写功能;4)实现主动读取和通知两种数据获取方式。详细说明了连接建立、变量定义、读写操作及事件通知的实现代码。该方案实现了对PLC寄存器数据的实时监控和操作,为工业控制系统的开发提供了参考。

weixin_38637405的博客 3688

Spring AI + GPT-5.5 + Ollama 配置教程:Base URL、超时与流式调用

由于不同 Spring AI、Spring Boot 小版本之间仍可能存在差异,创建项目时应检查 Spring Initializr、Spring AI BOM 和官方兼容矩阵,不要直接复制旧教程中的 Starter 名称和版本号。多人项目最好隔离不同客户端,并在脱敏前提下记录最终 URL、状态码、请求耗时、请求 ID 和模型 ID。Spring AI 接入模型 API,至少要同时确认 Starter、Base URL、请求路径、API Key、模型 ID、连接超时、读取超时和流式客户端这 8 项。

2601_95893075的博客 215

vue2/3 - 详细实现内网使用离线高德地图功能,在vue中无需网络离线使用高德地图相关功能,高德地图如何离线加载详细教程(内网部署及使用),提供最新完整的瓦片资源下载及相关工具(示例代码,一键复制

vue,vue2,vue3,高德地图,离线使用高德地图,高德地图瓦片官方下载,vue内网使用高德地图离线无网络,断网情况下使用高德地图,vue离线高德地图教程,如何实现内网部署高德地图,无需联网离线使用,vue+ts实现离线高德地图 内网离线高德地图,如何在高德地图Vue项目中下载离线地图,高德离线地图加载不出来,高德地图离线使用不显示怎么办,怎么解决vue内网使用离线高德地图加载失败问题,vue实现离线地图+高德瓦片,vue引入高德离线地图,vue项目如何使用离线高德地图和自定义地图样式,高德离线地图的下

✅ 精选推荐文章 1万+

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 325

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【JVM】对象内存布局

HotSpot JVM 中,Java 对象内存布局由对象头(12字节,含Mark Word与压缩Klass Pointer)、实例数据及对齐填充构成,总大小为8字节倍数。对象头支持锁状态动态复用,指针压缩使引用仅4字节,但堆超32GB时失效。实例字段按类型优先级重排序以减少间隙,最小对象大小为16字节。通过JOL工具可精准验证布局,理解锁机制、GC、伪共享等底层行为。

2301_79732484的博客 140

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 112

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Spring Boot 数据源与 MyBatis(-Plus) 自定义配置详解

本文详解 Spring Boot 中单数据源环境下 HikariCP 与 MyBatis-Plus 的自定义配置。通过手动声明 SqlSessionFactory,实现下划线转驼峰、日志输出、一级缓存策略等精细化控制。结合 HikariCP 核心参数调优(如最大连接数、连接生命周期),确保高性能与稳定性。适用于仅需访问单一数据库的场景,避免多数据源复杂性,兼顾性能与可维护性。

BADAO_LIUMANG_QIZHI的博客 190

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 352

Decorator

TaskDecorator 是异步场景下"跨线程传递上下文"的标准方案,主要用于传递 MDC、用户信息、数据源路由等上下文数据,核心价值是让异步任务的日志链路不中断、业务上下文不丢失。TaskDecorator 是 Spring 提供的一个钩子接口,用于在异步任务执行前对 Runnable 进行包装,常用于跨线程传递上下文。如果你在项目中遇到具体的异步上下文传递问题,可以把代码贴出来,我帮你给出最合适的 Decorator 方案 👍。✅ 核心能力:在线程切换时,把"父线程的上下文"搬到"子线程"

wlwork66的博客 102

JDK 下载安装:装完 Java 提示「不是内部或外部命令」?环境变量没配

JDK 是写 Java 程序必须装的东西。它包含运行 Java 的虚拟机(JRE)和编译 Java 的编译器(javac)——装了它,能跑、.java文件能编译成可执行程序。免费,学习和小规模生产都不花钱。

科小怪的博客 608

数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南

Oracle 提供了ORA_ROWSCN伪列(System Change Number),记录最后修改行的 SCN,类似 PostgreSQL 的xmin。实践中通常仍使用 version 字段方案,逻辑与 MySQL 完全相同。-- Oracle:通过 ORA_ROWSCN 实现乐观锁-- 更新时比对 SCN// 自定义注解// AOP 切面@Aspect@Component@Slf4jtry {

yjc_1111的专栏 392

C++ 多态详解:作用、原理与实战用法

多态是C++面向对象的核心特性,通过虚函数实现运行期动态绑定,使同一接口在不同对象上表现出不同行为。其核心作用包括统一接口、提升可扩展性、降低耦合、支持运行时分派与批量处理。实现依赖虚函数表(vtable)和虚指针(vptr),需注意虚析构函数、对象切片等陷阱。相比编译期多态(模板),运行期多态灵活性高但有调用开销。合理结合两者,可兼顾代码的灵活性与性能,是构建可扩展、低耦合系统的关键。

2402_85743155的博客 369

java框架大全

java框架大全

qq_39326137的博客 180

SecureRandom做随机源,这个Java随机字符串工具类有3个方法

本文分享一款JDK17环境下的Java随机字符串工具类,内置3个开箱即用的方法,全部采用SecureRandom加密安全随机源,不存在弱随机、可预测、取模偏差等问题。工具类支持默认62字符集随机串、纯数字随机串、自定义字符集随机串三种生成模式,支持Unicode码点级别的字符集处理,兼容Emoji等增补字符,边界处理严格,异常信息明确,适合验证码、邀请码、盐值、随机口令、短链码等场景,源码可直接复制使用。

Java后端 | AI智能体应用实战派 | 电脑技能行家 291

Java实现批量线段相交检测(跨积判定+扫描线优化与踩坑复盘)

【代码】Java实现批量线段相交检测(跨积判定+扫描线优化与踩坑复盘)

m0_64476639的博客 313

Agent 状态栏在上下文中的具体位置

Agent状态栏以user角色消息形式追加至上下文末尾,而非修改system消息,避免破坏KVCache。此举仅为API技术实现,内容由框架自动生成,非真实用户输入,通过<agent_status>标签标识,确保模型获取最新状态且不影响缓存。该设计遵循“动态信息追加、静态信息固定”原则,实现高效、低延迟的状态传递。

lj1109053360的专栏 68
上一篇: Spring Boot/Spring Cloud 应用日志书写详细指南
下一篇: 为什么深度分页性能极差?
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值