Linux shell编程学习笔记51: cat /proc/cpuinfo:查看CPU详细信息

0 前言
2024年的网络安全检查又开始了,对于使用基于Linux的国产电脑,我们可以编写一个脚本来收集系统的有关信息。对于中央处理器CPU比如,我们可以使用cat /proc/cpuinfo命令来收集中央处理器CPU的信息。
1. /proc/cpuinfo 保存了系统的cpu信息
在linux系统中,/proc目录下的文件保存了系统的软硬件信息。
[purpleendurer @ bash /] ls -l /proc
total 0
dr-xr-xr-x 9 csdn csdn 0 5月 28 22:19 1
dr-xr-xr-x 9 csdn csdn 0 5月 28 22:22 102
dr-xr-xr-x 9 csdn csdn 0 5月 28 22:22 127
dr-xr-xr-x 9 csdn csdn 0 5月 28 22:23 155
dr-xr-xr-x 9 csdn csdn 0 5月 28 22:24 170
dr-xr-xr-x 9 csdn csdn 0 5月 28 22:19 47
dr-xr-xr-x 9 csdn csdn 0 5月 28 22:19 72
drwxrwxrwt 2 root root 40 5月 28 22:19 acpi
-rw------- 1 root root 0 5月 28 22:23 async_load_calc
-r--r--r-- 1 root root 0 5月 28 22:23 buddyinfo
dr-xr-xr-x 4 root root 0 5月 28 22:19 bus
-r--r--r-- 1 root root 0 5月 28 22:23 cgroups
-r--r--r-- 1 root root 0 5月 28 22:23 cmdline
-r--r--r-- 1 root root 0 5月 28 22:23 consoles
-r--r--r-- 1 root root 0 5月 28 22:23 cpuinfo
dr-xr-xr-x 3 root root 0 5月 28 22:23 cpusli
-r--r--r-- 1 root root 0 5月 28 22:23 crypto
-r--r--r-- 1 root root 0 5月 28 22:23 devices
-r--r--r-- 1 root root 0 5月 28 22:23 diskstats
-r--r--r-- 1 root root 0 5月 28 22:23 dma
dr-xr-xr-x 4 root root 0 5月 28 22:23 driver
dr-xr-xr-x 3 root root 0 5月 28 22:23 dynamic_debug
--w------- 1 root root 0 5月 28 22:23 dyn_isolcpus
-r--r--r-- 1 root root 0 5月 28 22:23 execdomains
-rw-r--r-- 1 root root 0 5月 28 22:23 fault_events
-r--r--r-- 1 root root 0 5月 28 22:23 fb
-r--r--r-- 1 root root 0 5月 28 22:19 filesystems
dr-xr-xr-x 9 root root 0 5月 28 22:19 fs
-r--r--r-- 1 root root 0 5月 28 22:23 interrupts
-r--r--r-- 1 root root 0 5月 28 22:23 iomem
-r--r--r-- 1 root root 0 5月 28 22:23 ioports
dr-xr-xr-x 28 root root 0 5月 28 22:19 irq
-r--r--r-- 1 root root 0 5月 28 22:23 kallsyms
crw-rw-rw- 1 root root 1, 3 5月 28 22:19 kcore
crw-rw-rw- 1 root root 1, 3 5月 28 22:19 keys
-r--r--r-- 1 root root 0 5月 28 22:23 key-users
-r-------- 1 root root 0 5月 28 22:23 kmsg
-r-------- 1 root root 0 5月 28 22:23 kpagecgroup
-r-------- 1 root root 0 5月 28 22:23 kpagecount
-r-------- 1 root root 0 5月 28 22:23 kpageflags
-r--r--r-- 1 root root 0 5月 28 22:23 loadavg
-r--r--r-- 1 root root 0 5月 28 22:23 locks
-r--r--r-- 1 root root 0 5月 28 22:23 mdstat
-r--r--r-- 1 root root 0 5月 28 22:19 meminfo
dr-xr-xr-x 3 root root 0 5月 28 22:23 memsli
-r--r--r-- 1 root root 0 5月 28 22:23 misc
-r--r--r-- 1 root root 0 5月 28 22:23 modules
lrwxrwxrwx 1 root root 11 5月 28 22:23 mounts -> self/mounts
-rw-r--r-- 1 root root 0 5月 28 22:23 mtrr
lrwxrwxrwx 1 root root 8 5月 28 22:23 net -> self/net
-r-------- 1 root root 0 5月 28 22:23 pagetypeinfo
-r--r--r-- 1 root root 0 5月 28 22:23 partitions
crw-rw-rw- 1 root root 1, 3 5月 28 22:19 sched_debug
-r--r--r-- 1 root root 0 5月 28 22:23 schedstat
drwxrwxrwt 2 root root 40 5月 28 22:19 scsi
lrwxrwxrwx 1 root root 0 5月 28 22:19 self -> 170
-r-------- 1 root root 0 5月 28 22:23 slabinfo
-r--r--r-- 1 root root 0 5月 28 22:23 softirqs
-r--r--r-- 1 root root 0 5月 28 22:23 stat
-r--r--r-- 1 root root 0 5月 28 22:23 swaps
dr-xr-xr-x 1 root root 0 5月 28 22:19 sys
--w------- 1 root root 0 5月 28 22:19 sysrq-trigger
dr-xr-xr-x 5 root root 0 5月 28 22:23 sysvipc
lrwxrwxrwx 1 root root 0 5月 28 22:19 thread-self -> 170/task/170
crw-rw-rw- 1 root root 1, 3 5月 28 22:19 timer_list
dr-xr-xr-x 6 root root 0 5月 28 22:23 tty
dr-xr-xr-x 4 root root 0 5月 28 22:23 unevictable
-r--r--r-- 1 root root 0 5月 28 22:23 uptime
-r--r--r-- 1 root root 0 5月 28 22:23 version
-r-------- 1 root root 0 5月 28 22:23 vmallocinfo
-r--r--r-- 1 root root 0 5月 28 22:23 vmstat
-r--r--r-- 1 root root 0 5月 28 22:23 zerobuddyinfo
-r--r--r-- 1 root root 0 5月 28 22:23 zoneinfo
[purpleendurer @ bash /]

如果想了解和获取系统中CPU的提供商和相关配置信息,则可以查看/proc/cpuinfo。
2.cat /proc/cpuinfo:查看CPU详细信息
2.1 实例
2.1.1 实例1
[purpleendurer @ bash /] cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 85
model name : Intel(R) Xeon(R) Platinum
stepping : 4
microcode : 0x1
cpu MHz : 2499.442
cache size : 33792 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves arat
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit mmio_stale_data retbleed
bogomips : 4998.88
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 85
model name : Intel(R) Xeon(R) Platinum
stepping : 4
microcode : 0x1
cpu MHz : 2499.442
cache size : 33792 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves arat
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit mmio_stale_data retbleed
bogomips : 4998.88
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:[purpleendurer @ bash /]

2.1.2 实例2
[purpleendurer @ bash ~] cat /proc/cpuinfo
processor : 0
model name : Phytium,FT-2000/4
bogomips : 3456.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
flags : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x70
CPU architecture: 8
CPU variant : 0x1
CPU part : 0x663
CPU revision : 3processor : 1
model name : Phytium,FT-2000/4
bogomips : 3456.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
flags : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x70
CPU architecture: 8
CPU variant : 0x1
CPU part : 0x663
CPU revision : 3processor : 2
model name : Phytium,FT-2000/4
bogomips : 3456.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
flags : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x70
CPU architecture: 8
CPU variant : 0x1
CPU part : 0x663
CPU revision : 3processor : 3
model name : Phytium,FT-2000/4
bogomips : 3456.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
flags : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x70
CPU architecture: 8
CPU variant : 0x1
CPU part : 0x663
CPU revision : 3

2.2 返回信息说明
不同的系统返回的信息内容也不尽相同,以下是一些常见的信息项。
| 输出项 | 含义 | 备注 |
|---|---|---|
| address sizes | 可访问地址空间位数 | |
| apicid | 用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续 | |
| bogomips | 在系统内核启动时粗略测算的CPU速度 | Million Instructions Per Second |
| cache_alignment | 缓存地址对齐单位 | |
| cache size | CPU二级缓存大小 | |
| clflush size | 每次刷新缓存的大小单位 | |
| core id | 当前物理核在其所处CPU中的编号 | 这个编号不一定连续 |
| cpu cores | 该逻辑核所处CPU的物理核数 | 比如此处cpu cores 是4个,那么对应core id 可能是 1、3、4、5。 |
| cpu family | CPU产品系列代号 | |
| cpuid level | 执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容 | |
| cpu MHz | CPU的实际使用主频 | |
| flags | 当前CPU支持的功能 | |
| fpu | 是否具有浮点运算单元(Floating Point Unit) | |
| fpu_exception | 是否支持浮点计算异常 | |
| initial apicid | ||
| microcode | ||
| model | CPU属于其系列中的哪一代的代号 | |
| model name | CPU全名,包括处理器品牌。 | 一旦您知道您拥有的 CPU 的确切类型,您就可以查看有关处理器规格的产品文档。CPU属于的名字及其编号、标称主频 |
| processor | 系统中逻辑处理核心的编号,从0开始排序。 | 对于单核处理器,则认为是其CPU编号 对于多核处理器则可以是物理核、或者使用超线程技术虚拟的逻辑核 |
| physical id | 单个CPU的标号 | |
| power management | 对能源管理的支持 | |
| siblings | 单个CPU逻辑物理核数 | |
| stepping | CPU属于制作更新版本 | |
| vendor_id | CPU制造商 | |
| wp | 表明当前CPU是否在内核态支持对用户空间的写保护 | Write Protection |
2.3 关于物理CPU、核数、逻辑cpu数的概念
2.3.1 物理CPU数(physical id)
主板上实际插入的cpu数量,可以数不重复的 physical id 有几个
2.3.2 CPU核心数(cpu cores)
单块CPU上面能处理数据的芯片组的数量,如双核、四核等
2.3.3逻辑CPU数
一般情况下:
在不支持超线程技术或没有开启次技术的情况下:
逻辑CPU=物理CPU个数×每颗核数
在服务器的CPU支持超线程技术的情况下:
逻辑CPU=物理CPU个数×每颗核数 *2
简单来说,在这种情况下,处理器中的1 颗内核会像2 颗内核那样在操作系统中发挥作用。
这样一来,操作系统可使用的执行资源扩大了一倍,大幅提高了系统的整体性能。
3 应用实例
3.1 grep -m 1 'model name' /proc/cpuinfo :显示CPU名称
[purpleendurer @ bash ~] grep -m 1 'model name' /proc/cpuinfo
model name : Intel(R) Xeon(R) Platinum
[purpleendurer @ bash ~]

3.2 grep -c 'model name' /proc/cpuinfo:显示CPU数量
[purpleendurer @ bash ~] grep -c 'model name' /proc/cpuinfo
2
[purpleendurer @ bash ~]

3.3 grep -c "cpu cores" /proc/cpuinfo : 获取CPU核数
[purpleendurer @ bash ~] grep -c "cpu cores" /proc/cpuinfo
2
[purpleendurer @ bash ~]
3.4 grep -c "processor" /proc/cpuinfo:获取系统中的逻辑CPU数量
[purpleendurer @ bash ~] grep -c "processor" /proc/cpuinfo
2
[purpleendurer @ bash ~]

3.5 grep -c "siblings" /proc/cpuinfo:获取每个物理CPU中逻辑CPU的个数
[purpleendurer @ bash ~] grep -c "siblings" /proc/cpuinfo
2
[purpleendurer @ bash ~]

3.6 检测cpu是否使用了超级程Hyper-Threading
我们可以通过比较cpu cores数量和siblings数量来判断:
如果cpu cores数量和siblings数量一致,说明没有启用超线程,否则就是启用了超线程。
我们把cpu cores数量保存到变量a,把siblings数量保存到变量b,然后用if语句比变量a和b的值,并输出相应的结果
[purpleendurer @ bash ~] grep -c "cpu cores" /proc/cpuinfo
2
[purpleendurer @ bash ~] grep -c "siblings" /proc/cpuinfo
2
[purpleendurer @ bash ~] a=$(grep -c "cpu cores" /proc/cpuinfo);b=$(grep -c "siblings" /proc/cpuinfo);if [ $a = $b ]; then echo 'No Hyper-Threading'; else echo 'Hyper-Threading'; fi
No Hyper-Threading
[purpleendurer @ bash ~]

cpu cores数量和siblings数量一致,都是2,说明没有启用超线程。
4.其它相关命令
除了利用/proc/cpuinfo文件,我们还可以使用其它命令,比如 lscpu、nproc,留待下回讲解。
相关文章:
Linux shell编程学习笔记51: cat /proc/cpuinfo:查看CPU详细信息
0 前言 2024年的网络安全检查又开始了,对于使用基于Linux的国产电脑,我们可以编写一个脚本来收集系统的有关信息。对于中央处理器CPU比如,我们可以使用cat /proc/cpuinfo命令来收集中央处理器CPU的信息。 1. /proc/cpuinfo 保存了系统的cpu…...
Ps:调整画笔工具
调整画笔工具 Adjustment Brush Tool可以将选区、创建蒙版和应用调整的传统工作流程合并为一个步骤,简化了对图像进行非破坏性局部调整的操作。 快捷键:B 调整画笔工具是 Photoshop 2024 年 5 月版(25.9 版)新增的工具。 ◆ ◆ …...
香橙派 AIpro上手体验并验证车道线识别算法
香橙派 AIpro上手体验并验证车道线识别算法 1.前言 最近入手了一块香橙派AIpro,体验了一下,感觉还不错,在这里分享给大家,大家可以做个参考。 2.开箱 整套产品包含一块主板、一个电源插头和一条双端Type-C的数据线,…...
为啥装了erlang,还报错erl: command not found?
转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 问题背景: 在一台不通外网的服务器上装rabbitmq,然后在启动的时候,遇到了报错 “/usr/lib/…...
容器技术基础理论与常用命令:必知必会,效率翻倍!
如何利用容器技术提升你的工作效率?掌握基础理论和常用命令是必不可少的,本文将为你全面介绍容器技术,并教你必知必会的技能,让你工作、学习效率翻倍,对于网络安全工作者也是必不可少的技能! 0. 引言 学习…...
ChatGPT Edu版本来啦:支持GPT-4o、自定义GPT、数据分析等
5月31日,OpenAI在官网宣布,推出ChatGPT Edu版本。 据悉,这是一个专门为大学校园提供的ChatGTP,支持GPT-4o、网络搜索、自定义GPT、数据分析、代码生成等功能,可以极大提升学生、老师的学习质量和教学效率。 目前&…...
Spark RDD案例
Apache Spark中的RDD(Resilient Distributed Dataset)是一个不可变、分布式对象集合,它允许用户在大型集群上执行并行操作。虽然RDD在Spark的早期版本中非常核心,但随着DataFrame和Dataset的引入,RDD的使用在某些场景下…...
【线性表 - 数组和矩阵】
数组是一种连续存储线性结构,元素类型相同,大小相等,数组是多维的,通过使用整型索引值来访问他们的元素,数组尺寸不能改变。 知识点数组与矩阵相关题目 # 知识点 数组的优点: 存取速度快 数组的缺点: 事先必须知道…...
Springboot 开发 -- 跨域问题技术详解
一、跨域的概念 跨域访问问题指的是在客户端浏览器中,由于安全策略的限制,不允许从一个源(域名、协议、端口)直接访问另一个源的资源。当浏览器发起一个跨域请求时,会被浏览器拦截,并阻止数据的传输。 这…...
【Qt】之【项目】整理可参考学习的git项目链接(持续更新)
Tcp 通信相关 IM即时通讯设计 高并发聊天服务:服务器 qt客户端(附源码) - DeRoy - 博客园 未使用protobuf通讯协议格式 github:GitHub - ADeRoy/chat_room: IM即时通讯设计 高并发聊天服务:服务器 qt客户端 QT编…...
2024年5月个人工作生活总结
本文为 2024年5月工作生活总结。 研发编码 golang 多个defer函数执行顺序 golang 函数中如有多个defer,倒序执行。示例代码: func foo() {defer func() {fmt.Println("111")}()defer func() {fmt.Println("2222")}()defer func()…...
Kafka Java API
1、增加依赖 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>1.0.0</version> </dependency>2、三个案例 案例1:生产数据 import org.apache.kafka.clients.p…...
pushd: not found
解决方法: pushd 比 cd 命令更高效的切换命令,非默认,可在脚本开头添加: #! /bin/bash ubuntu 编译时出现/bin/sh: 1: pushd: not found的问题-CSDN博客...
【第十三节】C++控制台版本坦克大战小游戏
目录 一、游戏简介 1.1 游戏概述 1.2 知识点应用 1.3 实现功能 1.4 开发环境 二、项目设计 2.1 类的设计 2.2 各类功能 三、程序运行截图 3.1 游戏主菜单 3.2 游戏进行中 3.3 双人作战 3.4 编辑地图 一、游戏简介 1.1 游戏概述 本项目是一款基于C语言开发的控制台…...
酷得单片机方案 2.4G儿童遥控漂移车
电子方案开发定制,我们是专业的 东莞酷得智能单片机方案之2.4G遥控玩具童车具有以下比较有特色的特点: 1、内置充电电池:这款小车配备了可充电的电池,无需频繁更换电池,既环保又方便。充电方式可能为USB充电或者专用…...
【为什么 Google Chrome 打开网页有时极慢?尤其是国内网站,如知网等】
要通过知网搜一点资料,发现怎么都打不开。而且B站,知乎这些速度也变慢了!已经检查过确定不是网络的问题。 清空了记录,清空了已接受Cookie,清空了缓存内容……没用!!! 不断搜索&am…...
FastAPI - 数据库操作5
先安装mysql驱动程序 pipenv install pymysql安装数据库ORM库SQLAlchemy pipenv install SQLAlchemy修改文件main.py文件内容 设置数据库连接 # -*- coding:utf-8 –*- from fastapi import FastAPIfrom sqlalchemy import create_engineHOST 192.168.123.228 PORT 3306 …...
HTML静态网页成品作业(HTML+CSS)—— 冶金工程专业展望与介绍介绍网页(2个页面)
🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有2个页面。 二、作品演示 三、代…...
Flutter基础 -- Dart 语言 -- 注释函数表达式
目录 1. 注释 1.1 单行注释 1.2 多行注释 1.3 文档注释 2. 函数 2.1 定义 2.2 可选参数 2.3 可选参数 默认值 2.4 命名参数 默认值 2.5 函数内定义 2.6 Funcation 返回函数对象 2.7 匿名函数 2.8 作用域 3. 操作符 3.1 操作符表 3.2 算术操作符 3.3 相等相关的…...
“仿RabbitMQ实现消息队列”---整体架构与模块说明
顾得泉:个人主页 个人专栏:《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂,年薪百万! 一、概念性框架理解 我们主要实现的内容: 1.Broker服务器:消息队列服务器(服务端&…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
