内核崩溃分析

文章目录

    • 分析样例
    • ------------[ cut here ]------------,起始标记
    • 错误信息(有的有,有的没有)
    • WARNING,提醒
    • Modules linked in,列出所有已加载的模块
    • (OE) ,外部模块
    • Tainted、内核版本
    • 硬件、BIOS
    • RIP(x86 架构)
    • Call Trace,调用栈跟踪
    • ---[ end trace faed035a9d8d4039 ]---,结束标记
    • ARM 架构
      • 1. 处理器状态(pstate)
      • 2. 程序计数器和链接寄存器
      • 3. 栈指针和通用寄存器
      • 4. 调用栈信息

分析样例

Feb 11 13:36:23 jv-hg-cpu-019 kernel: ------------[ cut here ]------------
Feb 11 13:36:23 jv-hg-cpu-019 kernel: list_add corruption. next->prev should be prev (ffff9f758ccac940), but was ffff9f763f5e3328. (next=ffff9f763b697d40).
Feb 11 13:36:23 jv-hg-cpu-019 kernel: WARNING: CPU: 55 PID: 65490 at lib/list_debug.c:23 __list_add_valid+0x33/0x70
Feb 11 13:36:23 jv-hg-cpu-019 kernel: Modules linked in: xt_CT xt_nat ipt_rpfilter xt_multiport iptable_raw ip_set_hash_ip ip_set_hash_net vxlan ip6_udp_tunnel udp_tunnel devlink veth nf_conntrack_netlink xt_addrtype xt_set ip_set_hash_ipportip ip_set_hash_ipport ip_set_bitmap_port ip_set_hash_ipportnet ip_set dummy nf_tables nfnetlink mmfs26(OE) mmfslinux(OE) fuse ip6table_mangle ip6t_MASQUERADE ip6table_filter ip6table_nat nf_conntrack_ipv6 nf_defrag_ipv6 nf_nat_ipv6 ip6_tables iptable_mangle ipt_MASQUERADE xt_conntrack xt_comment iptable_filter xt_mark iptable_nat nf_nat_ipv4 nf_nat tracedev(OE) overlay bonding intel_rapl skx_edac nfit libnvdimm x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm vfat fat br_netfilter ipmi_ssif bridge irqbypass crct10dif_pclmul crc32_pclmul stp ghash_clmulni_intel pcbc llc aesni_intel
Feb 11 13:36:23 jv-hg-cpu-019 kernel: nf_conntrack_ipv4 iTCO_wdt iTCO_vendor_support crypto_simd ip_vs_sh mei_me hobot_pcie_ep_dev(OE) cryptd ip_vs_wrr pcspkr sg joydev hobot_pcie_common(OE) glue_helper i2c_i801 mei lpc_ich ioatdma ip_vs_rr wmi ipmi_si ip_vs ipmi_devintf ipmi_msghandler pcc_cpufreq acpi_cpufreq nf_conntrack binfmt_misc ip_tables xfs sd_mod ast nf_defrag_ipv4 drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm ahci igb drm libahci i40e dca libata megaraid_sas i2c_algo_bit dm_mirror dm_region_hash dm_log dm_mod libcrc32c crc32c_intel
Feb 11 13:36:23 jv-hg-cpu-019 kernel: CPU: 55 PID: 65490 Comm: filebeat Kdump: loaded Tainted: G           OE     4.18.0 #2
Feb 11 13:36:23 jv-hg-cpu-019 kernel: Hardware name: Default string Default string/DeepEngine-2000, BIOS 1.26 07/23/2024
Feb 11 13:36:23 jv-hg-cpu-019 kernel: RIP: 0010:__list_add_valid+0x33/0x70
Feb 11 13:36:23 jv-hg-cpu-019 kernel: Code: f2 75 18 4c 8b 0a 4d 39 c1 75 24 48 39 fa 74 39 49 39 f9 74 34 b8 01 00 00 00 c3 4c 89 c1 48 c7 c7 b0 66 6b 97 e8 dc 95 cb ff <0f> 0b 31 c0 c3 48 89 d1 4c 89 c6 4c 89 ca 48 c7 c7 00 67 6b 97 e8 
Feb 11 13:36:23 jv-hg-cpu-019 kernel: RSP: 0018:ffffb6532da07d30 EFLAGS: 00010086
Feb 11 13:36:23 jv-hg-cpu-019 kernel: RAX: 0000000000000000 RBX: ffff9f763f5e29c0 RCX: 0000000000000006
Feb 11 13:36:23 jv-hg-cpu-019 kernel: RDX: 0000000000000007 RSI: 0000000000000086 RDI: ffff9f763f3d6830
Feb 11 13:36:23 jv-hg-cpu-019 kernel: RBP: ffff9f757be09400 R08: 00000000000023e0 R09: 0000000000000005
Feb 11 13:36:23 jv-hg-cpu-019 kernel: R10: 0000000000000000 R11: ffffffff9807d92e R12: ffff9f757be09540
Feb 11 13:36:23 jv-hg-cpu-019 kernel: R13: ffff9f758ccac940 R14: ffff9f763b697d40 R15: ffff9f561be4e55c
Feb 11 13:36:23 jv-hg-cpu-019 kernel: FS:  000000c00810a890(0000) GS:ffff9f763f3c0000(0000) knlGS:0000000000000000
Feb 11 13:36:23 jv-hg-cpu-019 kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
Feb 11 13:36:23 jv-hg-cpu-019 kernel: CR2: 00007f7111ffb718 CR3: 0000003f32894001 CR4: 00000000007606e0
Feb 11 13:36:23 jv-hg-cpu-019 kernel: DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Feb 11 13:36:23 jv-hg-cpu-019 kernel: DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Feb 11 13:36:23 jv-hg-cpu-019 kernel: PKRU: 55555554
Feb 11 13:36:23 jv-hg-cpu-019 kernel: Call Trace:
Feb 11 13:36:23 jv-hg-cpu-019 kernel: enqueue_entity+0x20f/0x620
Feb 11 13:36:23 jv-hg-cpu-019 kernel: enqueue_task_fair+0x6f/0x1e0
Feb 11 13:36:23 jv-hg-cpu-019 kernel: ttwu_do_activate+0x45/0x80
Feb 11 13:36:23 jv-hg-cpu-019 kernel: try_to_wake_up+0x1e5/0x4b0
Feb 11 13:36:23 jv-hg-cpu-019 kernel: wake_up_q+0x3b/0x60
Feb 11 13:36:23 jv-hg-cpu-019 kernel: futex_wake+0x14d/0x170
Feb 11 13:36:23 jv-hg-cpu-019 kernel: do_futex+0x157/0x1d0
Feb 11 13:36:23 jv-hg-cpu-019 kernel: __x64_sys_futex+0x141/0x16f
Feb 11 13:36:23 jv-hg-cpu-019 kernel: do_syscall_64+0x5b/0x180
Feb 11 13:36:23 jv-hg-cpu-019 kernel: entry_SYSCALL_64_after_hwframe+0x44/0xa9
Feb 11 13:36:23 jv-hg-cpu-019 kernel: RIP: 0033:0x46b143
Feb 11 13:36:23 jv-hg-cpu-019 kernel: Code: 24 20 c3 cc cc cc cc 48 8b 7c 24 08 8b 74 24 10 8b 54 24 14 4c 8b 54 24 18 4c 8b 44 24 20 44 8b 4c 24 28 b8 ca 00 00 00 0f 05 <89> 44 24 30 c3 cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc 
Feb 11 13:36:23 jv-hg-cpu-019 kernel: RSP: 002b:000000c004be9e38 EFLAGS: 00000202 ORIG_RAX: 00000000000000ca
Feb 11 13:36:23 jv-hg-cpu-019 kernel: RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 000000000046b143
Feb 11 13:36:23 jv-hg-cpu-019 kernel: RDX: 0000000000000001 RSI: 0000000000000081 RDI: 000000c00790c148
Feb 11 13:36:23 jv-hg-cpu-019 kernel: RBP: 000000c004be9e88 R08: 0000000000000000 R09: 0000000000000000
Feb 11 13:36:23 jv-hg-cpu-019 kernel: R10: 0000000000000000 R11: 0000000000000202 R12: 000000c004be9df0
Feb 11 13:36:23 jv-hg-cpu-019 kernel: R13: 0000000000000031 R14: 000000c005fb6680 R15: 0000000000000000
Feb 11 13:36:23 jv-hg-cpu-019 kernel: ---[ end trace faed035a9d8d4039 ]---

------------[ cut here ]------------,起始标记

在Linux内核崩溃(panic)日志中,------------[ cut here ]------------ 是一个标记,用于指示内核崩溃的起始点。这个标记通常出现在崩溃日志的开头,用于帮助开发者快速定位崩溃的起始位置。

错误信息(有的有,有的没有)

list_add corruption. next->prev should be prev (ffff9f758ccac940), but was ffff9f763f5e3328. (next=ffff9f763b697d40).

首先看错误信息:list_add corruption,这表明在内核的链表操作中发生了数据损坏。链表是内核中常用的数据结构,当添加一个节点时,检查到next和prev指针不一致,导致警告。这通常意味着有内存越界、竞态条件或者并发问题,比如在链表操作时没有正确加锁,导致另一个线程同时修改了链表结构。

WARNING,提醒

表明内核检测到了一个可能会引发问题的情况,但这种情况还不至于让系统立即崩溃。它是一种提醒,提示系统管理员或者开发者需要关注某些异常状况。

WARNING: CPU: 55 PID: 65490 at lib/list_debug.c:23 __list_add_valid+0x33/0x70

CPU: 55
此信息指出异常发生在第 55 个 CPU 核心上。

PID: 65490
PID 即进程 ID,PID: 65490 意味着产生这个警告的是进程 ID 为 65490 的进程。结合日志中的 Comm: filebeat 可知,这个进程是 filebeat,它是 Elastic 公司开发的一款轻量级日志采集器。

lib/list_debug.c:23
这表明警告发生的源代码文件是 lib/list_debug.c,具体位置在该文件的第 23 行。list_debug.c 文件通常包含链表操作的调试代码,主要用于检查链表操作的正确性。

__list_add_valid+0x33/0x70
__list_add_valid 是一个函数名,这个函数的作用是验证链表添加操作的有效性。
+0x33 表示警告发生在 __list_add_valid 函数内部偏移量为 0x33(十六进制)的位置。
/0x70 代表 __list_add_valid 函数的总长度是 0x70 字节。

Modules linked in,列出所有已加载的模块

接下来,日志中列出了许多内核模块(Modules linked in),这些模块是当前加载到内核中的。这些模块是系统当前加载的所有模块,内核在生成错误报告时会列出所有已加载的模块,方便开发者或维护者排查问题。这些模块可能包括网络相关的(如veth、vxlan)、文件系统(如xfs、fuse)、虚拟化(如kvm)、硬件驱动(如i40e、ahci)等,这些都是系统正常运行所需的模块,并不一定直接导致问题。

(OE) ,外部模块

tracedev(OE)

在内核模块名称后面出现的 (OE) 表示该模块是 Out-of-Tree 模块,即这些模块不是内核源码树的一部分,而是作为外部模块加载的。这些模块通常是由第三方提供的,用于扩展内核的功能。

Tainted、内核版本

CPU: 55 PID: 65490 Comm: filebeat Kdump: loaded Tainted: G OE 4.18.0 #2

Tainted: G OE
Tainted 表示内核的 “污染” 状态,它反映了内核是否加载了一些可能影响系统稳定性或不符合内核许可协议的模块或代码。

  • G 通常表示内核加载了非 GPL(GNU General Public License)许可的模块。GPL 是一种开源软件许可协议,要求使用该协议的软件及其衍生作品也必须开源。加载非 GPL 许可的模块可能会导致内核不符合严格的 GPL 许可要求。
  • OE 表示加载了外部模块(Out - of - tree modules)。外部模块是指不在内核源代码树中的模块,这些模块可能是由第三方开发者编写的,其质量和稳定性可能参差不齐,有可能引入系统不稳定因素。

4.18.0 #2
这是内核的版本信息,4.18.0 是内核的主版本号,代表该系统使用的是 Linux 内核 4.18 系列的版本。#2 通常是该内核版本的编译序号,用于区分同一主版本号下不同的编译版本,不同的编译序号可能在配置、补丁等方面存在差异。

硬件、BIOS

Hardware name: Default string Default string/DeepEngine-2000, BIOS 1.26 07/23/2024

硬件型号为 DeepEngine-2000
BIOS 版本号为 1.26,发布日期为:07/23/2024

RIP(x86 架构)

RIP: 0010:__list_add_valid+0x33/0x70

RIP 是 x86_64 架构下的指令指针寄存器,它指向 CPU 即将执行的指令的内存地址。当内核出现异常时,记录 RIP 的值可以帮助开发者定位到具体是哪一条指令引发了问题。

Call Trace,调用栈跟踪

在Linux内核崩溃日志中,Call Trace(调用栈跟踪)是一个非常重要的部分,用于帮助开发人员定位问题的根源。它显示了导致崩溃的函数调用链,从而帮助开发人员快速找到问题所在。
示例:

enqueue_entity+0x20f/0x620

  • enqueue_entity:这是内核中的一个函数,通常与调度器相关。它负责将一个任务(或实体)加入到调度队列中。
  • +0x20f/0x620:这表示崩溃发生在 enqueue_entity 函数的偏移量 0x20f 处,而该函数的总长度为 0x620 字节。

—[ end trace faed035a9d8d4039 ]—,结束标记

—[ end trace faed035a9d8d4039 ]— 是内核追踪信息的结束标记,它与内核异常日志中的其他部分一起,构成了一个完整的异常追踪记录。
faed035a9d8d4039 是本次异常追踪的唯一标识符。这个标识符的作用是在需要的时候可以方便地定位和关联特定的异常追踪记录。例如,在分析大量的内核日志时,如果需要查找与某个特定异常相关的完整信息,就可以通过这个标识符快速定位到对应的追踪记录。

ARM 架构

pstate: 60400089 (nZCv daIf +PAN -UAO -TCO BTYPE=--)
[15728.897719] pc : tegra234_cbb_isr+0x130/0x170
[15728.897720] lr : tegra234_cbb_isr+0x10c/0x170
[15728.897721] sp : ffff800010003e10
[15728.897722] x29: ffff800010003e10 x28: ffff0515c661ba00
[15728.897725] x27: 0000000000000001 x26: 0000000000000080
[15728.897727] x25: ffffaa6b9d1b2f08 x24: ffffaa6b9db1be28
[15728.897729] x23: ffffaa6b9d4a7000 x22: 0000000000000018
[15728.897731] x21: ffffaa6b9d93f8b0 x20: 0000000000000002
[15728.897733] x19: ffffaa6b9d93f8a0 x18: 0000000000000010
[15728.897735] x17: 0000000000000000 x16: ffffaa6b9ba82d90
[15728.897737] x15: ffff0515c661bf70 x14: ffffffffffffffff
[15728.897740] x13: ffff800090003917 x12: ffff80001000391f
[15728.897742] x11: 0101010101010101 x10: 7f7f7f7f7f7f7f7f
[15728.897744] x9 : ffff800010003c30 x8 : 2a2a2a2a2a2a2a2a
[15728.897746] x7 : 2a2a2a2a2a2a2a09 x6 : c000000100017acf
[15728.897748] x5 : ffff0518eec57958 x4 : ffffaa6b9d7c7ee8
[15728.897750] x3 : 0000000000000001 x2 : ffffaa6b9bc17460
[15728.897753] x1 : ffff0515c661ba00 x0 : 0000000100010001
[15728.897755] Call trace:
[15728.897756]  tegra234_cbb_isr+0x130/0x170
[15728.897759]  __handle_irq_event_percpu+0x60/0x2a0
[15728.897761]  handle_irq_event_percpu+0x3c/0xa0
[15728.897763]  handle_irq_event+0x4c/0xf0
[15728.897765]  handle_fasteoi_irq+0xbc/0x170
[15728.897767]  generic_handle_irq+0x3c/0x60
[15728.897769]  __handle_domain_irq+0x6c/0xc0
[15728.897770]  gic_handle_irq+0x64/0x130
[15728.897771]  el1_irq+0xd0/0x180
[15728.897774]  _raw_spin_unlock_irqrestore+0x34/0x70
[15728.897776]  pci_bus_read_config_dword+0x9c/0xe0
[15728.897778]  pci_read_config_dword+0x44/0x70
[15728.897780]  find_device_iter+0xe8/0x150
[15728.897781]  pci_walk_bus+0x68/0xc0
[15728.897783]  find_source_device+0x4c/0x78
[15728.897784]  aer_isr+0x144/0x1d0
[15728.897786]  irq_thread_fn+0x30/0xa0
[15728.897788]  irq_thread+0x150/0x250
[15728.897790]  kthread+0x148/0x170
[15728.897791]  ret_from_fork+0x10/0x18

这段日志详细记录了内核在发生异常时的处理器状态、程序计数器、寄存器值以及函数调用栈信息,下面为你逐一分析各部分内容:

1. 处理器状态(pstate)

pstate: 60400089 (nZCv daIf +PAN -UAO -TCO BTYPE=–)
pstate 是处理器状态寄存器的值,括号内是对各个标志位的解读:

  • nZCv:分别代表负数标志(Negative)、零标志(Zero)、进位标志(Carry)和溢出标志(Overflow),这些标志反映了最近一次算术运算的结果状态。
  • daIf:d 可能与调试相关,a 可能和对齐检查有关,I 表示中断禁止(IRQ disable),f 表示快速中断禁止(FIQ disable)。
  • +PAN:表示特权访问控制(Privileged Access Never)启用,限制用户态代码对特权资源的访问。
  • -UAO:用户访问覆盖(User Access Override)禁用。
  • -TCO:超时计数器(Timer/Counter Overflow)相关功能禁用。
  • BTYPE=–:可能表示当前没有特定类型的异常或者异常类型未被记录。

2. 程序计数器和链接寄存器

[15728.897719] pc : tegra234_cbb_isr+0x130/0x170
[15728.897720] lr : tegra234_cbb_isr+0x10c/0x170

  • pc(Program Counter):程序计数器,指向当前正在执行的指令地址。这里显示异常发生时正在执行 tegra234_cbb_isr 函数,偏移量为 0x130,该函数的总长度为 0x170 字节。
  • lr(Link Register):链接寄存器,通常用于保存函数调用时的返回地址。这里 lr 也指向 tegra234_cbb_isr 函数,偏移量为 0x10c。

3. 栈指针和通用寄存器

[15728.897721] sp : ffff800010003e10
[15728.897722] x29: ffff800010003e10 x28: ffff0515c661ba00

[15728.897753] x1 : ffff0515c661ba00 x0 : 0000000100010001

  • sp(Stack Pointer):栈指针,指向当前栈的顶部地址。
  • x0 - x29:是 ARM64 架构下的通用寄存器,这些寄存器的值记录了异常发生时处理器的上下文信息,可用于分析函数调用时的参数传递和局部变量状态。

4. 调用栈信息

[15728.897755] Call trace:
[15728.897756] tegra234_cbb_isr+0x130/0x170
[15728.897759] __handle_irq_event_percpu+0x60/0x2a0

[15728.897791] ret_from_fork+0x10/0x18
调用栈信息展示了异常发生时函数的调用顺序,从最内层函数开始,逐步向外层展开。这有助于我们了解程序的执行路径,找出可能引发异常的函数调用链。具体分析如下:

  • tegra234_cbb_isr:这是一个中断服务程序,可能与 NVIDIA Tegra234 芯片的时钟和总线相关的中断处理有关。异常发生在该函数内部偏移量 0x130 处。
  • 后续的函数调用主要涉及中断处理、PCI 设备配置读取、设备查找、高级错误报告(AER)中断处理、内核线程执行等操作。这表明异常可能与硬件中断处理、PCI 设备交互或者内核线程调度有关。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/972000.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【AI面板识别】

题目描述 AI识别到面板上有N&#xff08;1 ≤ N ≤ 100&#xff09;个指示灯&#xff0c;灯大小一样&#xff0c;任意两个之间无重叠。 由于AI识别误差&#xff0c;每次别到的指示灯位置可能有差异&#xff0c;以4个坐标值描述AI识别的指示灯的大小和位置(左上角x1,y1&#x…

朴素模式匹配算法与KMP算法(有next[]和nextval[]详细讲解

这篇文章是建立在上篇文章的基础上的,看此篇文章要有串的基本知识 举个例子引进我们今天的知识 假设我们这里有两个字符串,一个主串,一个子串 主串: aaa223aa225 子串: aa22 我们这里需要进行匹配,传统的朴素模式匹配算法,就是主串下标i从1开始,主串j从1开始…

文件操作(PHP)(小迪网络安全笔记~

免责声明&#xff1a;本文章仅用于交流学习&#xff0c;因文章内容而产生的任何违法&未授权行为&#xff0c;与文章作者无关&#xff01;&#xff01;&#xff01; 附&#xff1a;完整笔记目录~ ps&#xff1a;本人小白&#xff0c;笔记均在个人理解基础上整理&#xff0c;…

【分治法】棋盘覆盖问题 C/C++(附代码和测试实例及算法分析)

问题描述 在一个 2 k 2 k 2^k \times 2^k 2k2k大小的棋盘中&#xff0c;有一个与其他方块不同的特殊方块&#xff0c;如下图红色方块。另有4种形态不同的L型骨块&#xff08;见下图&#xff09;&#xff0c;要用图示四种骨块覆盖棋盘上除特殊方格外的其他所有方格&#xff0c…

el-table的hasChildren不生效?子级没数据还显示箭头号?树形数据无法展开和收缩

问题&#xff1a;明明子级只有一条数据&#xff0c;还显示箭头号 原因&#xff1a;最开始row-key写的是id,父级和子级都有该属性&#xff0c;所以展开失效了。 解决方法&#xff1a;row-key&#xff1a;id改成 row-key"name"

2002-2019年各省人口老龄化程度数据

2002-2019年各省人口老龄化程度数据 1、时间&#xff1a;2002-2019年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;地区、年度、六十五岁以上占比 4、范围&#xff1a;31省 5、指标解释&#xff1a;人口老龄化是指人口生育率降低和人均寿命延长导致的总人…

面向机器学习的Java库与平台简介、适用场景、官方网站、社区网址

Java机器学习的库与平台 最近听到有的人说要做机器学习就一定要学Python&#xff0c;我想他们掌握的知道还不够系统全面。本文作者给大家介绍几种常用Java实现的机器学习库&#xff0c;快快收藏加关注吧&#xff5e; Java机器学习库表格 Java机器学习库整理库/平台概念适合场…

MySQL 之服务器配置和状态(MySQL Server Configuration and Status)

MySQL 之服务器配置和状态 1 MySQL 架构和性能优化 1.3 服务器配置和状态 设置 MySQL 服务的特性&#xff0c;可以通过 mysqld 服务选项&#xff0c;服务器系统变量和服务器状态变量这三个方面来进行设置和查看。 官方文档 https://dev.mysql.com/doc/refman/8.0/en/serve…

Linux的基础指令和环境部署,项目部署实战(下)

目录 上一篇&#xff1a;Linxu的基础指令和环境部署&#xff0c;项目部署实战&#xff08;上&#xff09;-CSDN博客 1. 搭建Java部署环境 1.1 apt apt常用命令 列出所有的软件包 更新软件包数据库 安装软件包 移除软件包 1.2 JDK 1.2.1. 更新 1.2.2. 安装openjdk&am…

LabVIEW无刷电机控制器检测系统

开发了一种基于LabVIEW的无刷电机控制器检测系统。由于无刷电机具有高效率、低能耗等优点&#xff0c;在电动领域有取代传统电机的趋势&#xff0c;而无刷电机的核心部件无刷电机控制器产量也在不断增长。然而&#xff0c;无刷电机控制器的出厂检测仍处于半自动化状态&#xff…

《仙台有树》里的馅料(序)

《仙台有树》一起追剧吧&#xff08;二&#xff09;&#xff1a;馅料合集概览 ●德爱武美玩&#xff0c;全面发展 ●猜猜我是谁&真假美清歌 ●失忆的风还是吹到了仙台 ●霸道师徒强制收&你拜我&#xff0c;我拜你&#xff0c;师徒徒师甜蜜蜜 ●霸道总裁强制爱 ●仙台有…

网站搭建基本流程

需求分析&#xff1a; 实现网站搭建的过程&#xff1a;首先进行网站的需求性分析 网站可分为前台系统和后台系统&#xff0c;由不同的功能拆分为不同的模块 如下是一个电商网站可以拆分出的模块&#xff1a; 在编写代码前&#xff0c;我们要先对网站进行架构&#xff0c;通过…

反射机制的简单示例

一个使用反射机制的简单示例&#xff0c;这个示例将展示如何使用反射来实现一个通用的数据导出功能。 首先&#xff0c;让我们创建必要的项目结构和文件&#xff1a; 首先修改 pom.xml 添加依赖&#xff1a; <?xml version"1.0" encoding"UTF-8"?&…

Qt:多元素控件

目录 多元素控件介绍 QListWidget QTableWidget QTreeWidget 多元素控件介绍 多元素控件表示这个控件中包含了很多的元素&#xff0c;元素可能指的是字符串&#xff0c;也可以指的是更加复杂的数据结构、图片等等 Qt 中提供的多元素控件有: QListWidgetQListViewQTableW…

DeepSeek 助力 Vue 开发:打造丝滑的范围选择器(Range Picker)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

STL —— 洛谷字符串(string库)入门题(蓝桥杯题目训练)(一)

目录 一、B2109 统计数字字符个数 - 洛谷 算法代码&#xff1a; 1. 引入库和命名空间 2. 主函数 3. 读取输入 4. 变量初始化 5. 遍历字符串 6. 输出结果 7. 返回值 总结 评测记录&#xff1a; 二、B2110 找第一个只出现一次的字符 - 洛谷 方法一&#xff1a;算法代…

Golang GORM系列:GORM并发与连接池

GORM 是一个流行的 Go 语言 ORM&#xff08;对象关系映射&#xff09;库&#xff0c;用于简化数据库操作。它支持连接池和并发访问功能&#xff0c;这些功能对于高性能、高并发的应用场景非常重要。本文结合示例详细介绍gorm的并发处理能力&#xff0c;以及如何是哟个连接池提升…

C#之上位机开发---------C#通信库及WPF的简单实践

〇、上位机&#xff0c;分层架构 界面层 要实现的功能&#xff1a; 展示数据 获取数据 发送数据 数据层 要实现的功能&#xff1a; 转换数据 打包数据 存取数据 通信层 要实现的功能&#xff1a; 打开连接 关闭连接 读取数据 写入数据 实体类 作用&#xff1a; 封装数据…

Ubuntu24安装MongoDB(解压版)

目录 0.需求说明1.环境检查2.下载软件2.1.下载MongoDB服务端2.2.下载MongoDB连接工具(可略过)2.3.检查上传或下载的安装包 3.安装MongoDB3.1.编辑系统服务3.2.启动服务3.3.客户端连接验证3.3.1.创建管理员用户 4.远程访问4.1.开启远程访问4.2.开放防火墙 0.需求说明 问&#x…

《DeepSeek-V3:人工智能大语言模型》

《DeepSeek-V3:人工智能大语言模型》 1. 引言 我们介绍了 DeepSeek-V3,这是一个强大的专家混合 (MoE) 语言模型,总共有 671B 个参数,每个令牌激活了 37B。 为了实现高效的推理和具有成本效益的训练,DeepSeek-V3 采用了多头潜在注意力 (MLA) 和 DeepSeekMoE 架构,这些…