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

linux 下常用变更-8

1、删除普通用户

查询用户初始UID和GIDls -l /home/     ###家目录中查看UID
cat /etc/group       ###此文件查看GID
删除用户1.编辑文件 /etc/passwd
找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash
2.将标红的位置修改为用户对应初始UID和GID: YW343:x:1202:1202::/home/YW343:/bin/bash
3.修改完成保存退出
4.userdel -r YW343     命令删除用户

2、 目录碎文件清理

1进入清理目录cd /var/spool/postfix/maildrop(假设目录)
2执行清理1.ls |xargs -n 50            ##查看文件属主,确认为smartmon用户产生的垃圾文件
2.ls |xargs -n 50 rm         ##清理此目录零碎垃圾文件
xargs -n 50 命令
xargs:将标准输入(stdin)转换为命令行参数。
-n 50:指定每次处理 50 个参数,并将它们作为一行输出。
执行效果
假设当前目录有 100 个文件(file1 到 file100),执行该命令后:
前 50 个文件会被显示在第一行,以空格分隔。
后 50 个文件会被显示在第二行,以空格分隔。
file1 file2 file3 ... file50
file51 file52 file53 ... file100
ls | xargs -n 50 rm  # 分批次删除,每次处理 50 个文件
3修改smartmon用户任务计划配置1. cd /var/spool/cron           进入系统任务计划目录
2. vi smartmon  编辑smartmon用户任务计划配置文件,在文件首行添加下列内容
   MAILTO = ""
3. 保存并退出编辑
禁止定时任务发送邮件
如果文件已经存在内容,确保 MAILTO = "" 位于第一行,否则可能无法生效。
MAILTO = "" 会完全禁用邮件通知。如果需要接收特定任务的邮件,请将空字符串改为有效的邮箱地址。
MAILTO = ""
# 原有的 cron 任务配置...
0 0 * * * root /usr/sbin/smartctl --all /dev/sda

 3、服务器磁盘扩容目录调整

1等待应拷贝数据文件等待拷贝数据至新的目录中
2查看当前挂载情况,LVM详情df -h
vgs
lvs
3删除逻辑卷lv_backuplvremove  /dev/vg01/lv_backup          删除backup逻辑卷
vgs          查看VG可用空间
4分配释放的空间至u02和u03逻辑卷lvextend -L +100G /dev/vg01/u02        扩容u02逻辑卷100G
lvextend -l +100%FREE /dev/vg01/lvu03   扩容u03逻辑卷
resize2fs /dev/vg01/u02
resize2fs /dev/vg01/u03           使扩容操作生效

 4、linux 挂载nas

1确认服务器登录正确(ip及主机名)hostname
ip a
2查询并创建挂载目录ll /
mkdir /oldbackup
3
1查看nfs server端可用挂载df -h
showmount -e NFSserverIP (showmount命令如未安装,使用‘yum install nfs-utils’命令安装
2卸载原文件系统,新建挂载点umount /backup
mkdir /oldbackup
3修改fstab文件,配置为开机自动挂载NASvi /etc/fstab,修改如下内容:
/dev/mapper/vg01-lv_backup  /oldbackup  ext4    defaults   1 2
增加如下内容:
NFSserverIP:NFS共享目录 /backup nfs vers=3,_netdev,cio,rw,bg,hard,nointr,rsize=32768,wsize=32768,proto=tcp,noac,vers=3,timeo=600 0 0
挂载点
/backup:NFS 共享将被挂载到本地的 /backup 目录。
文件系统类型
nfs:表示使用 NFS(网络文件系统)协议挂载。
挂载选项
vers=3:使用 NFSv3 协议(重复出现,需移除一个)。
_netdev:表明这是一个网络设备,系统会在网络就绪后再挂载。
cio:启用并发 I/O(需内核支持,适用于高吞吐量场景)。
rw:挂载为读写模式。
bg:挂载失败时在后台重试(避免系统启动卡住)。
hard:硬挂载(挂载失败时会持续重试,可能导致应用程序挂起)。
nointr:不允许中断硬挂载的 I/O 操作。
rsize=32768 和 wsize=32768:读写缓冲区大小为 32KB(提高大文件传输性能)。
proto=tcp:使用 TCP 协议传输(更可靠,适合大文件)。
noac:禁用客户端缓存(确保数据实时同步,但可能降低性能)。
timeo=600:超时设置为 60 秒(默认单位为 0.1 秒)。
转储和 fsck 选项
0 0:不备份(0),不检查文件系统(0)。
4测试是否可以开机自动挂载mount -a 测试/etc/fstab中新增nfs文件系统是否自动挂载
df -h     查看系统当前挂载情况
5修改目录权限chown -R mysql:mysql /backup
chmod 755 /backup

回退

1卸载nfs文件系统umount /backup              
2去掉开机自动挂载vi /etc/fstab,修改如下内容:
/dev/mapper/vg01-lv_backup  /backup  ext4    defaults   1 2
注释掉如下内容:
#NFSserverIP:NFS共享目录 //backup nfs vers=3,_netdev,cio,rw,bg,hard,nointr,rsize=32768,wsize=32768,proto=tcp,noac,vers=3,timeo=600 0 0

 5、创建swap 空间并挂载

操作阶段1查看当前swap分区状况lvs       查看是否LV
cat /etc/fstab       查看swap分区挂载
parted /dev/sda print      查看本地磁盘分区情况
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  538MB   537MB   fat32              boot, esp
 2      538MB   107GB   106GB   ext4

parted:Linux 下的分区管理工具,支持 GPT 和 MBR 分区表,可操作大于 2TB 的磁盘。
/dev/sda:目标磁盘设备(通常为系统的第一块硬盘)。
print:显示磁盘的分区表信息。
磁盘基本信息
Model:磁盘型号(如 VMware 虚拟磁盘、物理硬盘型号)。
Disk /dev/sda:磁盘设备路径及总容量。
Sector size:逻辑 / 物理扇区大小(常见 512B 或 4K)。
Partition Table:分区表类型(gpt 或 msdos [MBR])。
分区详细信息
Number:分区编号。
Start/End:分区起始 / 结束位置(物理地址)。
Size:分区大小。
File system:文件系统类型(如 ext4, fat32)。
Flags:特殊标记(如 boot 表示引导分区,esp 表示 EFI 系统分区)。
2划分逻辑卷,格式化为swaplvcreate -L 48G -n lvswap vg_00      使用VG00中的空闲空间创建一块48GLV
mkswap /dev/vg_00/lvswap           格式化lvswap卷为swap分区格式
3挂载swap分区swapon /dev/vg_00/lvswap       用swapon命令挂载swap卷
free -g            free命令验证当前swap大小
4写入fstab永久生效编辑/etc/fstab文件,添加内容: /dev/vg_00/lvswap  swap   swap   defaults  0 0
回退阶段1关闭新加swap分区swapoff /dev/vg_00/lvswap
2删除fstab新加内容编辑/etc/fstab文件,注释内容:#/dev/vg_00/lvswap  swap   swap   defaults  0 0

 6、asm存储扩容

实施
阶段
1linux系统扫盘等待存储划分后,执行以下操作
echo "- - -" > /sys/class/scsi_host/host*/scan
2SAN存储扫描完成后,由VCS继续完成1、vxassist -g [dg] make volume size
2、vxedit -g [dg] set user=[user] group=[group] mode=660 volume
Veritas Volume Manager (VxVM) 中用于创建卷的命令
关键参数说明

vxassist
Veritas Volume Manager 的辅助工具,用于管理卷(如创建、扩展、删除)。

-g [dg]
-g:指定卷组(Disk Group)名称。
[dg]:卷组的实际名称,例如 datadg、oradg 等。

make volume
make:创建卷的操作关键字。
volume:卷的名称,需自定义(如 vol01、data_vol)。

size
卷的大小,需指定单位:
m:兆字节(MB)
g:吉字节(GB)
t:太字节(TB)
例如:10g(10GB)、500m(500MB)。
关键参数说明
vxedit
Veritas Volume Manager 的编辑工具,用于修改卷、卷组等对象的属性。
-g [dg]
-g:指定卷组(Disk Group)名称。
[dg]:卷组的实际名称,例如 datadg、oradg 等。
set user=[user] group=[group] mode=660
user=[user]:设置卷的所有者用户(如 oracle、root)。
group=[group]:设置卷的所属组(如 dba、oinstall)。
mode=660:设置卷的权限模式(八进制表示):
6(二进制 110):所有者有读写权限。
6(二进制 110):所属组有读写权限。
0(二进制 000):其他用户无权限。
volume
目标卷的名称,例如 data_vol、ora_vol 等。
回退阶段1VCS删除ASM绑定VCS提供方案删除绑定
2存储删除新加存储存储删除新加存储
3
4

 7、每天清理logwatch

日志路径Logwatch 是 Linux/Unix 系统中常用的日志分析工具,它通过扫描系统日志(如 /var/log/ 下的安全日志、服务日志等),自动生成人类可读的分析报告,帮助管理员快速识别系统异常、安全事件或性能问题。

Logwatch 日志的核心组成与存储位置
报告文件(主要日志)
存储路径:通常位于 /var/log/logwatch/,文件名格式为 YYYYMMDD-HHMMSS.log 或按服务分类(如 syslog.log、auth.log)。

运行日志(工具自身日志)
存储路径:/var/log/logwatch/logwatch.log
内容:记录 Logwatch 的运行状态(如执行时间、扫描的日志文件、是否报错)。
内容Logwatch 日志的关键内容解析
Logwatch 报告按功能模块分类,常见模块包括:
模块 核心内容
Kernel Messages 内核错误、硬件异常(如驱动加载失败、内存溢出)。
Failed Logins 失败的登录尝试(含暴力破解尝试、账号锁定记录)。
System Processes 异常进程(如僵尸进程、高 CPU / 内存占用进程)。
Service Logs 服务状态(如 Apache/Nginx 访问日志、MySQL 错误日志)。
Security Events 安全相关事件(SELinux 告警、防火墙规则触发记录)。


为什么需要关注 Logwatch 日志?
故障排查的 “指南针”
当系统出现卡顿、服务崩溃时,Logwatch 会直接标记关键错误(如磁盘空间不足、服务启动失败),减少排查时间。
示例:若 Web 服务无法访问,Logwatch 可能提示 Apache: child process 1234 exited with status 255,直指进程异常。
安全威胁的 “预警器”
持续记录暴力破解尝试(如 sshd: Failed password for root from 192.168.1.1),帮助管理员及时封禁恶意 IP。
性能优化的 “数据来源”
分析日志中的资源占用趋势(如 MySQL 慢查询、CPU 过载记录),为系统调优提供依据。
1定时执行脚本执行脚本,内容:
#!/bin/bash

/usr/sbin/tmpwatch -umc 48 /var/cache/logwatch  ##通过命令清理48小时以上的logwatch命令
sed -i '/\/usr\/sbin\/tmpwatch\ -umc*/d' /etc/cron.daily/tmpwatch  ##删除现有cron中包含的删除指令
echo /usr/sbin/tmpwatch -umc 48 /var/cache/logwatch >> /etc/cron.daily/tmpwatch  ##新增清理48小时以上日志指令到计划任务中
df -Ph |grep var
tmpwatch
Linux 系统自带的工具,用于删除指定目录中指定时间未被访问 / 修改的文件或目录。
-u
根据 ** 访问时间(atime)** 删除文件。即:若文件在指定时间内未被读取,则删除。
-m
根据 ** 修改时间(mtime)** 删除文件。即:若文件内容在指定时间内未被修改,则删除。
-c
根据 ** 创建时间(ctime)** 删除文件。即:若文件状态(如权限、所有者)在指定时间内未被更改,则删除。
48
指定时间阈值(单位:小时)。示例中表示:删除超过 48 小时未被访问 / 修改 / 状态未变更的文件。
/var/cache/logwatch
目标目录,即 Logwatch 工具的缓存目录,通常存储临时生成的日志报告。
sed
Linux 系统的文本处理工具,用于对文件内容进行替换、删除、插入等操作。
-i
直接修改源文件(in-place edit),无需生成临时文件。
/.../d
正则表达式匹配模式,d 表示删除匹配到的行。


\/:转义后的斜杠 /,匹配路径中的 /。
tmpwatch\ -umc*:匹配 tmpwatch -umc 字符串,其中 c* 表示 c 可以出现 0 次或多次(例如 -um、-umc、-umcc 都会被匹配)。
etc/cron.daily/
作用:存放 Linux 系统每日自动执行的脚本文件,属于 cron 定时任务系统 的重要组成部分。
执行机制:
系统通过 cron 服务,每天凌晨会自动运行该目录下的所有可执行脚本(通常在 02:00 左右,具体时间由 /etc/crontab 或 anacron 配置决定)。

文件组成
该目录包含多个系统维护脚本,常见文件如下:
文件名 功能描述
apt 清理 APT 软件包缓存,释放磁盘空间
logrotate 轮转、压缩和清理系统日志文件,防止日志过大
man-db 更新 man 手册数据库,确保命令帮助文档可正常查询
tmpwatch 清理临时文件(如 /tmp、/var/tmp),防止垃圾文件堆积
dpkg 处理 Debian 包管理器的残留文件和日志
sysstat 收集系统性能统计数据(如 CPU、内存使用情况)
与其他 cron 目录的区别
目录路径 执行频率 用途场景
/etc/cron.daily/ 每天执行一次 系统日常维护(日志清理、缓存清理)
/etc/cron.hourly/ 每小时执行一次 实时监控(如系统负载统计)
/etc/cron.weekly/ 每周执行一次 周度维护(磁盘检查、数据备份)
/etc/cron.monthly/ 每月执行一次 月度统计(资源使用报告生成)
/etc/cron.d/ 自定义频率 用户自定义定时任务(需写入 crontab 格式)

相关文章:

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...