当前位置: 首页 > news >正文

A公司一面:类加载的过程是怎么样的? 双亲委派的优点和缺点? 产生fullGC的情况有哪些? spring的动态代理有哪些?区别是什么? 如何排查CPU使用率过高?

摘要

A公司的面经

  • JVM的类加载的过程是怎么样的?
  • 双亲委派模型的优点和缺点?
  • 产生fullGC的情况有哪些?
  • spring的动态代理有哪些?区别是什么?
  • 如何排查CPU使用率过高?

JVM的类加载的过程是怎么样的?

这个问题有些抽象,是指要说出具体步骤,还是要深入每一步的细节?再次确认一下范围,给出的回答是,你自己了解多少就说多少。这就有意思,那我就凭自己的语言进行总结发挥了。

简述

类加载,是指JVM将.class文件的数据加载到内存中,并进行校验、解析以及初始化等一系列操作后,最终生成可被JVM直接使用的数据的过程。

解释

我们知道一个类在JVM的生命周期大致可以分为7个阶段:加载、验证、准备、解析、初始化、使用、卸载
类加载的过程,主要就是类生命周期的前5个阶段,所以类加载的主要步骤为:
加载、验证、准备、解析、初始化
因为【验证】、【准备】、【解析】有时候被统一称为链接阶段,因此有时候类加载也会被分三个步骤:加载、链接、初始化
image

加载(Loading)

第一步,加载,主要是通过类的全限定名(如:java.lang.String)获取类的二进制字节流,将字节流转换为JVM运行时的数据结构,在堆中生成一个 java.lang.Class 对象,作为该类的访问入口。
触发方式:

  • ClassLoader.getSystemClassLoader().loadClass("com.jimoer.Test")
  • Class.forName("com.jimoer.Test") // 加载并初始化
  • 创建实例(new Test())、调用静态方法或访问静态字段。

验证(Verification)

主要是校验,.class文件的正确性。
校验类的正确性(文件格式,元数据,字节码,二进制兼容性),保证类的结构符合JVM规范。

准备(Preparation)

为类的 静态变量(static 字段)分配内存并设置 默认值
这里只初始化类变量,即static变量,所以都是在方法区里面进行分配内存的。而实例变量是会在对象实例化的时候进行初始化的,并在Java堆里分配内存。

解析(Resolution)

将常量池中的 符号引用 转换为 直接引用。
把类的符号引用转为直接引用(类或接口、字段、类方法、接口方法、方法类型、方法句柄和访问控制修饰符7类符号引用)。

初始化(Initialization)

执行类的 初始化逻辑(即 <clinit>() 方法),完成静态变量赋值和静态代码块的执行。

public class ClassInit {static int a = 10; // 准备阶段:a = 0;初始化阶段:a = 10static {a = 20; // 最终 a = 20}
}

双亲委派模型的优点和缺点?

Java应用是由 启动类加载器(Bootstrap Class Loader)扩展类加载器(Extension Class Loader)应用程序类加载器(Application Class Loader),这三类加载器互相配合来完成加载的,如果有自定义的类加载器,会先执行自定义的类加载器。
各种的类加载器之间的层次关系被称为类加载器的“双亲委派模型(Parents Delegation Model)”。
image

双亲委派模型要求除了顶层的启动类加载器外,其余的类加载器都应有自己的父类加载器。

双亲委派模型的工作过程

如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到最顶端的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子加载才会尝试自己去完成加载。

双亲委派模型的优点

  1. 避免类的重复加载。确保了不同类加载器加载的相同类是同一个实例,避免类型冲突(如java.lang.Object的唯一性)。
  2. 防止恶意代码篡改核心类,以及避免因类版本不一致导致的兼容性问题。例如,攻击者无法通过自定义类加载器替换java.lang.String为恶意实现,从而保障JVM运行安全。
  3. 提高类加载效率。通过层级委托机制,减少重复搜索类路径(ClassPath)的次数。类加载器只需尝试一次父类加载器的加载,若失败再自行加载,避免了全盘扫描,提升性能。

双亲委派模型的缺点

  1. 限制自定义类的动态更新。一旦类被父类加载器加载(如BootStrapClassLoader),即使类文件被修改,子类加载器也无法重新加载该类。
    场景:
    在热部署(Hot Deployment)或插件化系统中,需要动态更新类时,双亲委派机制会阻碍实现。
    解决方案
    打破双亲委派机制:通过自定义类加载器绕过父类加载器,直接加载新版本类(例如Tomcat的WebAppClassLoader)。
    使用模块化框架:如OSGi,通过隔离类加载器实现模块的独立更新。
  2. 子类加载器加载的类无法被父类加载器访问(单向依赖)。
    场景
    在分布式系统中,可能需要跨类加载器共享数据,但父类加载器无法直接调用子类加载器加载的类。
    解决方案
    通过接口或抽象类设计:将公共方法定义为接口,由父类加载器加载接口,子类加载器实现具体逻辑。
    使用共享类路径:将需要共享的类放在父类加载器的类路径中。
  3. 类的可见性受限
    子类加载器加载的类无法被父类加载器访问(单向依赖)。
    场景:
    在分布式系统中,可能需要跨类加载器共享数据,但父类加载器无法直接调用子类加载器加载的类。
    解决方案:
    通过接口或抽象类设计:将公共方法定义为接口,由父类加载器加载接口,子类加载器实现具体逻辑。
    使用共享类路径:将需要共享的类放在父类加载器的类路径中。

产生FullGC的情况有哪些?

JVM触发FullGC的情况比较复杂也比较多,这里只说一些常见的,不能保证包含了全部产生FullGC的情况。

老年代空间不足

老年代存储空间不足

当老年代不足以容纳新对象或新生代晋升的对象时,会触发 Full GC
大对象直接分配到老年代(通过 -XX:PretenureSizeThreshold 阈值)。
Survivor 区无法容纳所有存活对象(担保机制触发晋升到老年代)。

老年代连续空间不足

即使老年代总空间足够,但碎片化严重(如大量小对象释放后未合并),无法分配大对象时,也会触发 Full GC。

元空间内存不足

当元空间(Metaspace)存储类元数据的空间不足时,JVM 会尝试通过 Full GC 回收无用的类元数据(如卸载不再使用的类)。
若仍不足,则抛出 OutOfMemoryError: Metaspace

System.gc() 被显式调用

显式调用 System.gc() 会请求 JVM 执行 Full GC(可通过 -XX:+DisableExplicitGC 禁用)。

OOM 前的最后尝试

当内存不足错误(OOM)触发。
当 JVM 即将抛出 OutOfMemoryError(如堆内存不足 Java heap space 或元空间不足 Metaspace)时,会尝试通过 Full GC 回收垃圾,若仍失败则抛出 OOM

自适应内存管理策略

若 JVM 的自适应内存管理(如 -XX:+UseAdaptiveSizePolicy)动态调整堆内存时发现内存紧张,可能触发 Full GC 重新平衡内存布局。

分布式缓存框架主动触发

某些分布式缓存框架(如 EhcacheRedis Java 客户端)在检测到堆内存占用过高时,会主动触发 Full GC 回收缓存对象。
然而这种做法需谨慎使用,可能导致性能问题,可能引发性能抖动甚至 STW(Stop-The-World)时间过长。

其他特殊场景

内存泄漏

未被正确释放的对象(如未关闭数据库连接、线程池未关闭、ThreadLocal 未 remove())导致老年代持续增长,最终触发 Full GC。

晋升年龄阈值过低

若新生代对象晋升到老年代的年龄阈值(-XX:MaxTenuringThreshold)设置过小,对象过早进入老年代,可能加速老年代空间耗尽。

Spring使用的动态代理有哪些?区别是什么?

Spring框架中主要使用两种动态代理技术:JDK动态代理CGLIB动态代理

JDK动态代理

基于接口实现:通过Java自带的 java.lang.reflect.Proxy 类动态生成代理类,代理类会实现目标类所实现的所有接口。
通过反射调用目标方法(Method.invoke()),性能相对较低。

适用场景

目标类实现了至少一个接口(如Service层接口)。
适用于需要兼容接口扩展性的场景。

优点

代码简洁:无需引入额外依赖。
兼容性强:适合有接口的设计模式。

缺点

局限性:目标类必须实现接口,否则无法使用。
性能问题:基于反射调用,性能较低(尤其是高频调用时)
无法获取实现类方法上的注解:当目标类实现接口时,代理对象可能无法直接获取实现类方法上的注解

CGLIB动态代理

通过CGLIB库(Code Generation Library)动态生成目标类的子类,重写方法实现代理
直接调用父类方法(非反射),性能较高。
需要引入CGLIB库(如 cglib 或 spring-core)。
spring-boot现在默认是使用CGLIB动态代理。

适用场景

目标类未实现任何接口(如Controller层或第三方类)
需要代理final类或方法以外的普通类

优点

灵活性高:无需目标类实现接口
性能更高:直接调用方法,避免反射开销
支持更复杂的代理需求:如代理无接口类

缺点

依赖第三方库:需要引入CGLIB依赖
限制:无法代理final类或final方法(因为无法继承和重写)
生成代理类较慢:字节码生成过程比JDK动态代理稍慢

如何排查CPU使用率过高?

首先登录到服务器上,看一下具体情况。

定位进程

登录服务器,执行top命令,查看CPU占用情况。

PID    COMMAND      %CPU  TIME     #TH   #WQ  #PORT MEM    PURG   CMPRS  PGRP  PPID  STATE
41846  java        130.4  04:36:58 14/1  5    1695+ 618M-  6356K  99M-   41846 1     running
18122  top          7.5   00:04.68 1/1   0    32    4872K  0B     0B     18122 18106 running

通过Top命令,可以看到,占用CPU最高的是PID为41846的这个java进程。

定位线程

由于 Java 程序是单进程多线程模型,因此需要进一步定位具体是哪个线程的CPU占用最高。
同样是使用top命令:top -Hp 41846

PID    COMMAND   %CPU TIME     #TH  #WQ  #POR MEM   PURG CMPRS PGRP  PPID
19327  java       130  00:12.59 30   1    141  154M  0B   123M- 41846 41846

top -Hp 41846命令可以看到,当前进程下,线程ID为19327的占用CPU最高。

定位代码

首先将线程ID转成16进制

printf '%x\n' 193274b7f

接下来就可以通过jstack来查看栈信息

jstack 41846 |grep -A 200 4b7f
"main" #1 prio=5 os_prio=0 tid=0x00007f8a8c000000 nid=0x3048 runnable [0x00007f8a9c000000]java.lang.Thread.State: RUNNABLEat com.jimoer.app.CPUSpikeDemo.simulation(CPUSpikeDemo.java:12)at com.jimoer.app.CPUSpikeDemo.main(CPUSpikeDemo.java:18)

通过输出的栈信息日志,可以看到,是CPUSpikeDemo这个类的第18行可能有问题。

相关文章:

A公司一面:类加载的过程是怎么样的? 双亲委派的优点和缺点? 产生fullGC的情况有哪些? spring的动态代理有哪些?区别是什么? 如何排查CPU使用率过高?

A公司一面:类加载的过程是怎么样的? 双亲委派的优点和缺点? 产生fullGC的情况有哪些? spring的动态代理有哪些?区别是什么? 如何排查CPU使用率过高?摘要 A公司的面经JVM的类加载的过程是怎么样的? 双亲委派模型的优点和缺点? 产生fullGC的情况有哪些? spring的动态代…...

Alternating Subsequence

CF1343C Alternating Subsequence 题目描述 回忆一下,如果序列 \(b\) 是序列 \(a\) 的一个子序列,那么 \(b\) 可以通过从 \(a\) 中删除零个或多个元素(不改变剩余元素的顺序)得到。例如,如果 \(a=[1, 2, 1, 3, 1, 2, 1]\),那么可能的子序列有:\([1, 1, 1, 1]\),\([3]\)…...

白鲸开源“创客北京2025”再摘殊荣,聚焦Agentic AI时代数据基础设施建设

近日,“创客北京2025”创新创业大赛海淀区级赛圆满落幕,经过最终比拼,北京白鲸开源科技有限公司凭借 「Agentic AI时代下的数据基础设施平台」(白鲸数据集成调度平台/WhaleStudio) 脱颖而出,荣获企业组二等奖。近日,“创客北京2025”创新创业大赛海淀区级赛圆满落幕,经…...

python基础-公共操作

数据类型间公共支持的操作符运算: + ,* ,in , not in‘+’ :支持的容器类型 字符串、列表、元组 ,实现两个容器的合并‘*’ : 支持的容器类型 字符串、列表、元组, 赋值容器内容str1 = q str1* 5 =qqqqqlist1 = [hello] list1*5 = [hello, hello, hello,…...

天翼云第九代弹性云主机:让每一次计算快人一步

随着数字化转型进程不断深入,云计算已成为推动千行百业智能化升级的核心引擎。弹性计算服务凭借其灵活扩展、高可用和高性能等特点,正持续为企业提供关键基础设施支持。面对日益复杂的业务场景与持续增长的计算需求,天翼云始终致力于通过持续创新和技术升级,推动弹性计算服…...

若依(RuoYi)框架漏洞总结

0x01 特征 绿若依 icon_hash=”706913071”蓝若依 icon_hash=” -1231872293”0x02 漏洞 弱口令 用户:admin ruoyi druid 密码:123456 admin druid admin123 admin888若依前台默认shiro key命令执行漏洞 若依默认使用shiro组件,所以可以试试shiro经典的remember…...

第一次个人项目作业_论文查重

第一次项目作业这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience/homework/13477这个作业的目标 实现一个3000字以上论文查重程序github连接:…...

2025年版《中科院期刊分区表》与2023年版对比表,附名单可直接查阅

2025年版《中科院期刊分区表》与2023年版相比,主要有以下几个变化‌: ‌1、发布时间提前‌:2025年版分区表从12月提前至3月发布,与投稿周期同步,学者可以尽早锁定期刊最新分区,避免“投稿后降区”的风险‌。 ‌2、增加ESCI期刊收录‌:2025年版分区表增加了ESCI期刊的收录…...

对马岛之魂

护身符 稻荷神护身符----增加资源的获取 aa...

2019年双因素认证最佳实践指南

本文深入探讨2019年双因素认证的正确实现方式,对比TOTP与WebAuthn技术优劣,分析用户行为模式,并提供实际部署建议,帮助开发者构建更安全的认证系统。2019年正确实现双因素认证 - Trail of Bits博客 自3月起,Trail of Bits一直与Python软件基金会合作,为Warehouse(PyPI的…...

Account Kit(华为账号服务)再进化,开发者接入效率飙升!

Hi 各位开发者朋友~👋 为持续优化开发体验,提升集成效率,Account Kit接入体验再升级,助力构建更流畅、更安全的登录体验,让开发效率火力全开!😎 【体验升级】华为账号相关权益申请入口统一迁移至AGC华为账号一键登录权益实时审批华为账号一键登录支持三方开发框架01 …...

软件工程个人项目

软件工程个人项目3123004548软件工程个人项目这个作业属于哪个课程 <https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024>这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience/homework/13477这个作业的目标 <设计一个…...

学习道路道阻且长 希望自己坚持下去

本人是一名专升本的大三学生 现在专业是软件工程专业 从今天开始学习java 翻了一下资料 发现很多人建议从前端开始学习 在专科学习中 也学过相应的基础知识,不过遗忘程度可能有点严重。对于语言的基本语法掌握需要加强巩固,希望自己好好坚持下去,努力学习。...

2025/9/18 总结

A 用时:2h 预期:100pts 实际:100pts 求出前缀和,\(s_k+s_i \text{xor} s_k\),考虑从高到低贪心,如果 \(s_i\) 的 \(j\) 位为 \(1\),不管如何贡献都有 \(2^j\),如果 \(s_i\) 的第 \(j\) 位为 \(0\),则 \(s_k\) 的第 \(j\) 位为 \(1\) 有 \(2_{j+1}\) 贡献,用高维前缀和…...

P2216 [HAOI2007] 理想的正方形

P2216 [HAOI2007] 理想的正方形#include <bits/stdc++.h> using namespace std;const int maxn = 1e3 + 10; int a,b,n; int c[maxn][maxn]; deque <int> dq1,dq2; int max1[maxn][maxn],min1[maxn][maxn]; int max2[maxn][maxn],min2[maxn][maxn];int ans = 2e9;i…...

PuTTY下载和安装

下载地址: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html更改安装路径创建桌面快捷方式...

数据通路-单总线结构(最头晕的一集)

数据通路就是数据在各个部件之间传输的路径(包括路径上的部件) 控制信号是有控制部件产生的 数据通路的结构 1cpu内部单总线方式 2cpu内部多总线方式 3专用数据通路方式 内部总线 是指同一个部件,如cpu内部链接各寄存器以及运算部件之间的总线; 系统总线 是指同一台计算机系…...

python基础篇-集合

集合 :集合内的数据不重复,但是数据是无序的创建集合 {} 或者set()注: 创建空集合只能用set(), 因为{}已经被字典占用了eg: s1 = {10, 20 ,40,30 }eg: s2 = set(abcdefg) :用set创建,序列会被拆开 = 》 {’a, b, c, d, e, f, g}集合的操作:1.增加s1.add() 增加单个数据…...

#egsg:在同一程序中比较-计算圆的面积

以下是一个同时使用easygui和pysimplegui实现的圆形面积计算程序,通过菜单让用户选择使用哪种GUI库: import math import easygui import PySimpleGUI as sgdef easygui_calculator():"""使用easygui实现的版本"""title = "圆形面积计算器…...

282 项多模态胃肠病学数据集:适配 VLM 与 MLLM 微调,融合医学图像与临床文本的医疗 AI 训练数据

​ 获取更多高质量数据集,请访问典枢数据交易平台:https://dianshudata.com一、引言与背景 在医疗人工智能领域,胃肠病学的智能化诊断与分析始终依赖高质量数据的支撑,而视觉语言模型(VLM)与多模态大型语言模型(MLLM)的崛起,为整合医学图像与文本信息、提升临床决策效…...

2-sat板子

vector<int>e[maxn]; int n,m; int inscc[maxn]; int low[maxn],dfn[maxn]; stack<int>stk; int instk[maxn]; int tot,cnt; vector<int>scc[maxn];void dfs(int u,int fa){low[u]=dfn[u]=++tot;stk.push(u);instk[u]=1;for(int v:e[u]){if(!dfn[v]){//树边d…...

centos 7中安装jenkins

1.安装java11 [root@localhost ~]# yum install -y java-11-openjdk-devel [root@localhost ~]# java --version openjdk 11.0.23 2024-04-16 LTS OpenJDK Runtime Environment (Red_Hat-11.0.23.0.9-2.el7_9) (build 11.0.23+9-LTS) OpenJDK 64-Bit Server VM (Red_Hat-11.0.2…...

pythonjs逆向 破解滑动验证码 - hello-*

现在的滑动验证码防盗等级都比较高,之前的是一张完整的图片带缺口,现在返回的图片是打乱顺序拼接而成的,所以现在破解不仅要识别滑块的缺口,同时还需要复原完整的图片一.伪造请求获取验证码图片可以看到请求中主要的两个参数ctxid和request,所以我们只需要找到这两个参数的…...

解决 pandas.to_csv 乱码、丢失行和自动换行问题 时间转换

解决 pandas.to_csv 乱码、丢失行和自动换行问题-百度开发者中心 https://developer.baidu.com/article/details/2792989 在使用 pandas.to_csv 函数时,可能会遇到一些问题,如乱码、丢失行和自动换行等。这些问题通常是由于编码格式、数据类型或文件写入方式不当引起的。下面…...

JavaDay7

数组 数组的定义数组是相同类型数据的有序集合。 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。数组声明创建首先必须声明数组变量,才能在程序中使用数组。下面是声明数组…...

前端场景题笔记

先说背景再说方案 1. js超过number最大值的数怎么处理? 换数据类型。 2. 如何解决页面请求接口大规模并发问题? 请求队列,Push,shift。防抖节流。 3. 大文件上传? 前端切片,标记唯一值,后端整合。 4. 前端怎么实现截图? Canvas(基于html的绘图工具)(…...

P3934 [Ynoi Easy Round 2016] 炸脖龙 I 做题记录

欧拉函数前置芝士:扩展欧拉定理 题目大意 给一个长为 \(n\) 的序列,\(m\) 次操作,每次操作:区间 \([l,r]\) 加 \(x\); 对于区间 \([l,r]\),查询:\[{a_l}^{{a_{l+1}}^{{a_{l+2}}^{{\dots} ^{a{r}}}}} \mod p \]思路 首先我们有: \[a^k\equiv \left\{\begin{matrix}a^k, …...

【CompletableFuture 核心操作全解】详细注释版

一、任务创建操作 1. runAsync() - 执行无返回值的异步任务 /*** 创建并执行无返回值的异步任务* * @param runnable 要执行的任务逻辑(无返回值)* @return CompletableFuture<Void> 表示任务执行状态的Future对象* * 特点:* - 任务在ForkJoinPool.commonPool()中执行…...

关于学术不端的一些思考

前言 由图书馆性骚扰事件,牵扯出学术不端行为,最后撤销硕士学位。正应了那句“来说是非者,便是是非人”。学术不端 中华人民共和国学术不端问题包括论文抄袭、洗稿、代写、造假、买卖、学历学位认证失信行为、掠夺性开放获取出版、批量引进海外“速成博士”等。 国际上一般指…...

python基础-字典

字典:以键值对的方式存储 { key: value, key2:value2} 初始化空字典: dict2 = {} 或者dict3 = dict() 字典的常见操作:1.增加 dict1[id] = 1101 如果key = id不存在,则新增key和value对应的键值对; 如果key = id的已存在,则修改覆盖key = id对应的value的值2.删除del …...

pod 内nslookup请求时常异常

pod 内nslookup请求时常异常 现象原因 装机模板中在 /etc/resolv.conf 添加了 search tbsite.net 。 kubelet clusterfist 会自动将宿主机的 search 追加到 search default.svc.cluster.local svc.cluster.local 之后。 解决方式 清理 node 上的 search 记录。业务 pod 需要重启…...

单调队列优化DP

董晓一系列都可以做下来 https://www.bilibili.com/video/BV19X4y1m7Sb dp题单 https://www.luogu.com.cn/training/853282...

4.5.11版本闪亮登场~快来看看有哪些新功能

产品更新概览 功能修复: 修复检测更新失败问题; 修复iframe组件存放文件夹无法打开问题; 修复二维地图部分场景加载失败问题; 修复项目发布后无法获取数据问题; 修复访客免验证登录校验问题。 功能优化: 优化数据刷新逻辑; 鲸孪生标记性能优化; 图标组件性能优化; 优化…...

教你数分钟内创建并运行一个 DolphinScheduler Workflow!

本文就主要探讨如何在 ApacheDolphinScheduler 上更好地玩转 Workflow, 以帮助大家更好地管理数据处理任务。Workflow是什么? 对于数仓场景和数据湖场景来说,最显著的特点就是数据处理的长流程和高复杂度任务依赖关系,从源数据采集到最终报表数据的生成,中间可能经历上百个…...

AT_agc065_b [AGC065B] Erase and Insert

倒过来看,每次将 \(p\) 中 \(i\) 随便放到一个位置,那么在放 \(i\) 之前,你需要保证 \(1 \sim i - 1\) 的相对顺序递增,然后就可以 DP 了。 另外一种做法是题解区第一篇。...

《大模型时代——智能体的崛起与应用实践(微课视频版)》

在人类技术演进的长河中,人工智能(Artificial Intelligence,AI)无疑是最具革命性的篇章之一。随着科技的飞速发展,人类迎来了一个全新的纪元—大模型时代。本章旨在深入剖析这一时代的内涵,从大模型的基本概念出发,探索其发展历程,关键技术要素,核心价值,以及支撑其发…...

第三节:GoLangChain提示词(Prompts)处理详解

在使用大语言模型(LLM)时,提示词(Prompt)是与模型交互的关键。良好的提示词设计能够显著提升模型输出的质量。本文将基于langchaingo库,详细介绍Go语言中处理提示词的几种主要方式。 1. 引言在与大语言模型交互时,提示词的设计至关重要。LangChain框架提供了一套完整的提示词…...

rhel8 中vdo 邏輯卷的邏輯擴容

物理盤 = 500G vdo size = 2000G 擴容到5000Gumount /home/repo vdo stop --name=vdo01 vdo growLogical --name=vdo01 --vdoLogicalSize=5000Gdf --human-readable /home/repoxfs_growfs /dev/mapper/vdodf --human-readable /home/repovdostats --human...

Codeforces Round 1051 (Div. 2) 部分题解

D E F 题解Codeforces Round 1051 (Div. 2) 部分题解 D - Inversion Graph Coloring 理解成二分图,图中没有奇环,等价于序列不存在 \(i<j<k\) 使得 \(a_i>a_j>a_k\) 。 设 \(f_{i,x,y}\) 表示前 \(i\) 个数,当前序列最大值为 \(x\) ,下一个不能取小于 \(y\) 的…...

kingbase金仓数据库的密码有效期和密码复杂度

Kingbase金仓数据库提供了密码有效期和复杂度配置功能,可以通过以下方式进行设置: 一. 密码有效期配置 插件identity_pwdexp identity_pwdexp是KingbaseES的一个扩展插件,用于设置口令有效期。 KingbaseES的用户管理中含有口令有效期这一属性,用户密码过期检查就是通过设置…...

HDF5文件

掌握HDF5文件:先理解核心结构(打基础),再学C#读写库(搭环境),最后实战读写操作(练手)。 全程结合代码示例,确保新手能跟上。 阶段1:先搞懂HDF5文件的核心结构(必须先理解!) HDF5(Hierarchical Data Format 5)是一种分层结构的二进制文件格式,专门用于存储和管…...

Error encountered when performing Introspect the Portion of idea Introspect using JDBC metadata在哪设置

Error encountered when performing Introspect the Portion of 最新解决方案&新版本idea Introspect using JDBC metadata在哪设置?前言 使用idea2025专业版(MAC)连接mySQL后无法显示表结构,并且报错 Error encountered when performing Introspect the Portion of 1 …...

核桃 CSP-S 模拟

核桃 CSP-S 模拟 T3 题意: 给定一个 \(01\) 串,选定一个操作序列,每次从原串中删除一个数,保持原串中相对顺序不变,把形成的新字符串加入答案字符串,求出本质不同答案字符串总数。 其中 \(n\le 400\) 思路: 我们不妨把题意转化一下,对于每一个节点赋值 \(t_i\) 表示 \(…...

正确输入连字号、连接号、破折号和负号

转载:Pigman - 博客园: 正确输入连字号、连接号、破折号和负号论文书写和报告编制中,经常出现连字号、连接号、破折号和负号的混淆使用,既不符合规范也影响文档美观。下面对这组符号进行区分,并给出word下正确输入方法。连字号 (Hyphen),[-] 1) 英语中的复合词,…...

9 月记录

P13644 K-LCA 给出树和 \(k\),每次询问给出区间 \([l,r]\),找到选择 \(k\) 个区间内的点使得 LCA 深度最大。 \(n,q\le 10^5,1<k\le n\)。考虑回滚莫队,每次加入一个点,二分最深的子树个数 \(\ge k\) 的祖先,可以做到两个 \(\log\)。 考虑树链剖分,标号是先标号轻儿子…...

python基础-元组

元组: 一个元组可以存储多个数据,切元组内的数据是不可更改 t1 = (10,20,30)t2 = (10,)t3 = 10, 元组操作:元组不支持修改,只支持查找tuple.index()访问:下标访问: tuple[index]统计某项元素出现的次数: tuple.count(item)元组的长度: length = len(tuple)目标元素的位置…...

.net core中获得程序集以及注入框架的方法总结

虚方法public class Animal { // 虚方法 public virtual void MakeSound() { Console.WriteLine("动物发出声音"); } }public class Dog : Animal { // 重写虚方法 public override void MakeSound() { Console.WriteLine("汪汪汪!"); } }var sss = Assem…...

python基础篇-list(列表)

list:列表中可以一次性存储多个数据,且数据项的类型可以不同 常见操作:1.查找下标访问,查找某个位置的数据项: list[index]查找某个数据项首次出现的下标: list.index[item, 开始位置下标, 结束位置下标];如果存在则返回出现位置下标,如果不存在,则报错出现的次数: li…...

vscode使用powershell中文乱码

VSCode使用终端中文乱码 原因: vscode编辑文本默认使用utf-8,但是windows的终端默认使用gbk(简体中文)编码。utf-8采用1-4位记录一个字符,其中中文采用3位。gbk采用两位记录一个中文字符。所以中文显示乱码。 解决方案:先确认终端是中文编码,在终端输入chcp,若输出936表…...

关于如何读懂 P11832 [省选联考 2025] 图排列?

题面太形式化了! 我!根!本!读!不!懂! 这题想要拿分必须转化题面。 初步转化 他只给了我们 \((p_{a_i},p_{b_i})\),然后让我们去找最小的 \(p\)? 没给我 \(a_i,b_i\)?\(a_i,b_i\) 不用刻意构造出来,我们只需要时刻保证 \(a_i,b_i\) 的限制就可以了。 假设我们拿到了最…...