datetime“陷阱”与救赎:扒“时间差值”证道
时间工具陷阱,其实是工具引用的误解。
笔记模板由python脚本于2025-03-23 23:32:58创建,本篇笔记适合时间工具研究的coder翻阅。
博客的核心价值:在于输出思考与经验,而不仅仅是知识的简单复述。
-
Python官网:
这里,才 python 前沿。英文原版,原汁原味,才是寻根溯源的正统。😎
地址:https://www.python.org/ -
Free:
大咖免费“圣级”秘笈《 python 完全自学教程》不仅仅是基础那么简单……
地址:https://lqpybook.readthedocs.io/
自学并不是什么神秘的东西,一个人一辈子自学的时间,总是比在学校学习的时间长;没有老师的时候总是比有老师的时候多。
—— 华罗庚
-
您,可以在评论区书写任何想法 -
(我将在看到的第一时间回应) -
(预置空地)

本文质量分:
本文地址: articleUrl
CSDN质量分查询入口:http://www.csdn.net/qc
目 录
- ◆ datetime“陷阱”
- 一、问题复现:一个看似简单的日期计算陷阱
- 二、陷阱根源:datetime与date的本质差异
- 1. datetime的本质
- 2. date的本质
- 3. 关键对比表
- 三、救赎之路:三种优雅解决方案
- 方案1:使用date对象(推荐)
- 方案2:datetime转date计算
- 方案3:模24小时补偿术(高级技巧)
- 四、最佳实践手册
- 1. 选择工具的黄金准则
- 2. 避坑指南
- 3. 时区安全规范
- 五、实战演练:酒店入住系统
- 六、总结升华
◆ datetime“陷阱”
一、问题复现:一个看似简单的日期计算陷阱
最近在开发倒计时功能时,我遇到了一个诡异的日期计算问题:当两个datetime.datetime对象求差值,计算出的天数差竟然出现了预期之外的结果——“差一天”!😭😭
from datetime import datetime# 模拟跨午夜场景
t1 = datetime(2025, 3, 23, 23, 59) # 2025-03-23 23:59:00
t2 = datetime(2025, 3, 24, 0, 1) # 2025-03-24 00:01:00# 直接计算时间差
delta = t2 - t1
print(f"时间差天数:{delta.days}") # 输出结果:0
这个结果显然不符合人类对"天数差"的直觉认知!经过深入分析,我发现这是Python时间处理中一个典型的认知陷阱。
二、陷阱根源:datetime与date的本质差异
1. datetime的本质
datetime对象是完整的时间戳,包含年月日时分秒和微秒。它的时间差计算基于物理时间轴:
print(delta) # 输出:0:02:00
2. date的本质
date对象是纯日期容器,仅包含年月日信息。它的差值直接反映日历翻页逻辑:
print((t2.date() - t1.date()).days) # 正确输出:1
3. 关键对比表
特性 | datetime.timedelta | date.timedelta |
---|---|---|
计算基准 | 物理时间轴(精确到微秒) | 自然日历日 |
差值表示 | days + seconds + microseconds | 纯天数 |
跨午夜处理 | 可能产生0天差值 | 准确反映日历翻页 |
三、救赎之路:三种优雅解决方案
方案1:使用date对象(推荐)
def get_natural_days(start, end):"""计算自然日差"""return (end.date() - start.date()).daysprint(get_natural_days(t1, t2)) # 输出:1
方案2:datetime转date计算
def safe_day_diff(start, end):"""安全天数计算"""start_date = start.date()end_date = end.date()return (end_date - start_date).days
方案3:模24小时补偿术(高级技巧)
def compensate_days(start, end):"""物理时间差转自然日"""delta = end - starttotal_seconds = delta.total_seconds()return int(total_seconds // 86400) + (1 if total_seconds % 86400 > 0 else 0)print(compensate_days(t1, t2)) # 输出:1
四、最佳实践手册
1. 选择工具的黄金准则
- 需要时分秒级精度 →
datetime
- 处理自然日历逻辑 →
date
- 混合场景 → 先转换为统一类型
2. 避坑指南
# 危险操作:混合类型计算
d = date.today()
dt = datetime.now()
result = dt - d # TypeError: unsupported operand type(s)
3. 时区安全规范
from zoneinfo import ZoneInfo # Python 3.9+# 创建时区感知对象
tz_shanghai = ZoneInfo("Asia/Shanghai")
dt = datetime(2025, 3, 23, tzinfo=tz_shanghai)
五、实战演练:酒店入住系统
class HotelBooking:def __init__(self, check_in, check_out):self.check_in = check_in.date()self.check_out = check_out.date()def calculate_days(self):"""计算入住天数(自然日)"""return (self.check_out - self.check_in).daysdef validate_period(self):"""校验时间有效性"""return self.check_out > self.check_in# 使用示例
check_in = datetime(2025, 3, 23, 18, 0)
check_out = datetime(2025, 3, 24, 10, 0)
booking = HotelBooking(check_in, check_out)print(f"入住天数:{booking.calculate_days()}") # 输出:1
六、总结升华
时间处理看似简单,实则暗藏玄机。通过这次踩坑经历,我深刻领悟到:
- 类型即文档:date和datetime的选用本身就是业务需求的声明
- 物理时间与逻辑时间的哲学:计算机时间和人类时间需要桥梁转换
- 防御性编程:关键时间操作必须考虑时区和边界情况
希望本文能帮助大家避开我踩过的坑,在时间处理的征途上走得更稳更远!您在时间处理方面有哪些难忘的经历?欢迎在评论区分享交流!
相关推荐:
- Python官方datetime文档
- pytz时区处理指南
- 时间处理设计模式
源码地址:GitHub示例仓库(包含所有示例代码)
版权声明:本文采用 CC BY-NC-SA 4.0 协议进行授权,转载请注明出处。
上一篇:
Python功能完美的宝库——内置的强大“武器库”builtins(builtins模块包含了Python大量的内置对象(函数、异常和类型等),她是Python的内置武器库,堪称功能完美的宝库)
我的HOT博:
本次共计收集449篇博文笔记信息,总阅读量70.99w。数据采集于2025年03月17日 00:27:47,用时10分46.1秒。阅读量不小于6.00k的有 10 10 10篇。
- 让QQ群昵称色变的神奇代码
地址:https://blog.csdn.net/m0_57158496/article/details/122566500
浏览阅读:63,055
点赞:25 收藏:90 评论:17
(本篇笔记于2022-01-18 19:15:08首次发布,最后修改于2022-01-20 07:56:47)
- Python列表(list)反序(降序)的7种实现方式
地址:https://blog.csdn.net/m0_57158496/article/details/128271700
浏览阅读:14,196
点赞:9 收藏:40 评论:8
(本篇笔记于2022-12-11 23:54:15首次发布,最后修改于2023-03-20 18:13:55)
- 个人信息提取(字符串)
地址:https://blog.csdn.net/m0_57158496/article/details/124244618
浏览阅读:10,461
点赞:3 收藏:21
(本篇笔记于2022-04-18 11:07:12首次发布,最后修改于2022-04-20 13:17:54)
- pandas 数据类型之 DataFrame
地址:https://blog.csdn.net/m0_57158496/article/details/124525814
浏览阅读:10,358
点赞:7 收藏:40
(本篇笔记于2022-05-01 13:20:17首次发布,最后修改于2022-05-08 08:46:13)
- 统计字符串字符出现的次数
地址:https://blog.csdn.net/m0_57158496/article/details/130517025
浏览阅读:8,535
点赞:5 收藏:27
(本篇笔记于2023-05-06 22:28:18首次发布,最后修改于2023-05-12 06:21:40)
- 罗马数字转换器|罗马数字生成器
地址:https://blog.csdn.net/m0_57158496/article/details/122592047
浏览阅读:8,393
收藏:3
(本篇笔记于2022-01-19 23:26:42首次发布,最后修改于2022-01-21 18:37:46)
- Python字符串居中显示
地址:https://blog.csdn.net/m0_57158496/article/details/122163023
浏览阅读:8,190
点赞:1 收藏:12 评论:1
- 回车符、换行符和回车换行符
地址:https://blog.csdn.net/m0_57158496/article/details/123109488
浏览阅读:6,921
点赞:2 收藏:4
(本篇笔记于2022-02-24 13:10:02首次发布,最后修改于2022-02-25 20:07:40)
- python清屏
地址:https://blog.csdn.net/m0_57158496/article/details/120762101
浏览阅读:6,282
点赞:1 收藏:10
- 我的 Python.color() (Python 色彩打印控制)
地址:https://blog.csdn.net/m0_57158496/article/details/123194259
浏览阅读:6,192
点赞:2 收藏:9
(本篇笔记于2022-02-28 22:46:21首次发布,最后修改于2022-03-03 10:30:03)
截屏图片
(此文涉及ChatPT,曾被csdn多次下架,前几日又因新 发笔记被误杀而落马。躺“未过审”还不如回收站 ,回收站还不如永久不见。😪值此年底清扫,果 断移除。留此截图,以识“曾经”。2023-12-31)

精品文章:
- 好 文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永 久分享,点击跳转 免费🆓下载。)
- OPP三大特性:封装中的property
- 通过内置 对象理解python
- 正则表达式
- python中“*”的作用
- Python 完全自学手册
- 海象运算符
- Python中的 `!=`与`is not`不同
- 学习编程的正确方法
◆ Python 入门指南 【Python 3.6.3】
好文力 荐:
- 全栈领域优质创作者——[寒 佬]博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
- 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
- 靠谱程序员的好习惯
- 大佬帅地的优质好文“函 数功能、结束条件、函数等价式”三大要素让您认清递归
CSDN实用技巧博文:
- 8个好用到爆的Python实用技巧
- python忽略警告
- Python代 码编写规范
- Python的docstring规范(说明文档的规范写法)
相关文章:
datetime“陷阱”与救赎:扒“时间差值”证道
时间工具陷阱,其实是工具引用的误解。 笔记模板由python脚本于2025-03-23 23:32:58创建,本篇笔记适合时间工具研究的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值:在于输出思考与经验,而不仅仅是知识的简单复述。 Pyth…...
3DMAX曲线生成器插件CurveGenerator使用方法
1. 脚本功能简介 3DMAX曲线生成器插件CurveGenerator是一个用于 3ds Max 的样条线生成工具,用户可以通过简单的UI界面输入参数,快速生成多条样条线。每条样条线的高度值随机生成,且可以自定义以下参数: 顶点数量:每条…...
Apache漏洞再现
CVE-2021-41773路径穿越漏洞 1、开环境 sudo docker pull blueteamsteve/cve-2021-41773:no-cgid sudo docker run -dit -p 8082:80 blueteamsteve/cve-2021-41773:no-cgid 2、访问8082端口 3、打开工具 4、输入网址,检测漏洞...
git,openpnp - 根据安装程序打包名称找到对应的源码版本
文章目录 git,openpnp - 根据安装程序打包名称找到对应的源码版本概述笔记备注 - 提交时间不可以作为查找提交记录的依据END git,openpnp - 根据安装程序打包名称找到对应的源码版本 概述 想在openpnp官方最新稳定版上改一改,首先就得知道官方打包的安装程序对应的…...
SQL Server查询计划操作符(7.3)——查询计划相关操作符(11)
7.3. 查询计划相关操作符 98)Table Scan:该操作符从查询计划参数列确定的表中获取所有数据行。如果其参数列中出现WHERE:()谓词,则只返回满足该谓词的数据行。该操作符为逻辑操作符和物理操作符。该操作符具体如图7.3-98节点1所示。 图 7.3-…...
编译原理——词法分析
文章目录 词法分析:从基础到自动构造一、词法分析程序的设计一、词法分析程序的设计二、PL/0编译程序中词法分析程序的设计与实现1. 语法特定考量2. 通过状态转移表运用有限状态自动机3. 示例代码片段(用于说明的伪代码) 三、单词的形式化描述…...
Linux内核,内存分布
x86_64的物理地址范围为64bit,但是因为地址空间太大目前不可能完全用完,当前支持57bit和48bit两种虚拟地址模式。 地址模式单个空间用户地址空间内核地址空间32位2G0x00000000 - 0x7FFFFFFF0x80000000 - 0xFFFFFFFF64位(48bit)128T0x00000000 00000000 …...
AI鸟类识别技术革新生态监测:快瞳科技如何用“智慧之眼”守护自然?
在生态环境保护日益受关注的今天,“鸟类识别”已从专业科研工具演变为推动生态治理数字化的核心技术。无论是湿地保护区的珍稀候鸟监测,还是城市机场的鸟击风险预警,AI技术的精准赋能正在改写人类与自然的互动方式。作为行业领先的智能解决方…...
c++之set
一、set特性及用途? 唯一性:set 中的元素是唯一的,不会存在重复的元素。自动排序:set 中的元素会自动按照默认的升序规则进行排序。底层实现:set 通常基于红黑树实现,具有自平衡功能,因此插入、…...
【AI大模型】DeepSeek + 通义万相高效制作AI视频实战详解
目录 一、前言 二、AI视频概述 2.1 什么是AI视频 2.2 AI视频核心特点 2.3 AI视频应用场景 三、通义万相介绍 3.1 通义万相概述 3.1.1 什么是通义万相 3.2 通义万相核心特点 3.3 通义万相技术特点 3.4 通义万相应用场景 四、DeepSeek 通义万相制作AI视频流程 4.1 D…...
【操作系统】自旋锁和互斥锁
自旋锁和互斥锁是用于多线程同步的两种常见锁机制,主要区别在于等待锁的方式和适用场景。以下是它们的对比分析: 1. 等待机制 自旋锁(Spinlock)互斥锁(Mutex)线程通过 忙等待(Busy-Wait&#x…...
人工智能在医疗影像诊断中的应用与实践
引言 随着人工智能技术的飞速发展,其在医疗领域的应用逐渐成为研究和实践的热点。特别是在医疗影像诊断方面,人工智能技术凭借其强大的数据处理能力和模式识别能力,为提高诊断效率和准确性带来了新的希望。本文将探讨人工智能在医疗影像诊断中…...
Java中synchronized 和 Lock
1. synchronized 关键字 工作原理 对象锁:在Java中,每个对象都有一个与之关联的监视器锁(monitor lock)。当一个线程尝试进入由 synchronized 保护的代码块或方法时,它必须首先获取该对象的监视器锁。如果锁已经被其…...
【C语言系列】数据在内存中存储
数据在内存中存储 一、整数在内存中的存储二、大小端字节序和字节序判断2.1什么是大小端?2.2练习2.2.1练习12.2.2练习22.2.3练习32.2.4练习42.2.5练习52.2.6练习6 三、浮点数在内存中的存储3.1练习3.2浮点数的存储3.2.1 浮点数存的过程3.2.2 浮点数取的过程 3.3题目…...
qt 对QObject::tr()函数进行重定向
在 Qt 中,QObject::tr() 函数用于国际化(i18n),它用于标记需要翻译的字符串。通常情况下,tr() 函数会从翻译文件(如 .qm 文件)中查找对应的翻译字符串。如果你希望重定向 tr() 函数的行为&#…...
C#基础学习(三)值类型和引用类型:编程世界的“现金“ vs “银行卡“,以及string这个“渣男“的叛变行为
开场白 各位程序猿/媛们,今天我们来聊一聊编程世界里的"金钱观"。 你以为只有人类会纠结现金和存款的区别?不不不,C#中的值类型和引用类型每天都在上演这场大戏! 而我们的string同学,表面是…...
自动驾驶背后的数学:多模态传感器融合的简单建模
上一篇博客自动驾驶背后的数学:特征提取中的线性变换与非线性激活 以单个传感器为例,讲解了特征提取中的线性变换与非线性激活。 这一篇将以多模态传感器融合为例,讲解稍复杂的线性变换和非线性激活应用场景。 (一)权重矩阵的张量积分解 y = W x + b = [ w 11 ⋯ w 1 n ⋮…...
如何设置sudo权限
打开终端:按 Ctrl Alt T 打开终端。 编辑 sudoers 文件: 使用 visudo 命令编辑 /etc/sudoers 文件(visudo 会检查语法,避免错误): sudo visudo 添加用户权限: 在文件中找到以下行࿱…...
Codeforces Round 1012 (Div. 2) 3.23
文章目录 2025.3.23 Div2B. Pushing Balls(暴力)代码 C. Dining Hall题意思路代码 2025.3.23 Div2 Dashboard - Codeforces Round 1012 (Div. 2) - Codeforces B. Pushing Balls(暴力) 题意很好懂,每一行每一列从左…...
langfuse追踪Trace
介绍 🧠 Langfuse 是什么? Langfuse 是一个专门为 LLM 应用(如 OpenAI / LangChain / 自定义 Agent) 设计的 观测与追踪平台(Observability Platform)。 简单说,它就像是你为 AI 应用插上的 “…...
Java-模块二-2
整数类型 byte:在 Java 中占用8位(1字节),因此它的取值范围是从 -128 到 127。这是最小的整数类型,适合用于节省空间的情况。 short:这种类型的大小是16位(2字节),允许的…...
使用VS2022编译CEF
前提 选择编译的版本 CEF自动编译,在这里可以看到最新的稳定版和Beta版。 从这里得出,最新的稳定版是134.0.6998.118,对应的cef branch是6998。通过这个信息可以在Build requirements查到相关的软件配置信息。 这里主要看Windows下的编译要…...
大模型RLHF训练-PPO算法详解:Proximal Policy Optimization Algorithms
一、TL;DR 提出了一种新的策略梯度方法家族,用于强化学习,这些方法交替进行与环境交互采样数据提出了一个新的目标函数,使得能够进行多个小批量更新的多轮训练这些新方法为近端策略优化(Proximal Policy Optimization…...
【STM32实物】基于STM32的扫地机器人/小车控制系统设计
基于STM32的扫地机器人/小车控制系统设计 演示视频: 基于STM32的扫地机器人小车控制系统设计 简介:扫地机器人系统采用分层结构设计,主要包括底层硬件控制层、中间数据处理层和上层用户交互层。底层硬件控制层负责对各个硬件模块进行控制和数据采集,中间数据处理层负责对采…...
【C++初阶】从零开始模拟实现vector(含迭代器失效详细讲解)
目录 1、基本结构 1.1成员变量 1.2无参构造函数 1.3有参构造函数 preserve()的实现 代码部分: push_back()的实现 代码部分: 代码部分: 1.4拷贝构造函数 代码部分: 1.5支持{}初始化的构造函数 代码部分: …...
AI比人脑更强,因为被植入思维模型【21】冯诺依曼思维模型
定义 冯诺依曼思维模型是一种基于数理逻辑和系统分析的思维方式,它将复杂的问题或系统分解为若干个基本的组成部分,通过建立数学模型和逻辑规则来描述和分析这些部分之间的关系,进而实现对整个系统的理解和优化。该模型强调从整体到局部、再…...
Keil5调试技巧
一、引言 Keil5作为一款广泛应用于嵌入式系统开发的集成开发环境(IDE),在微控制器编程领域占据着重要地位。它不仅提供了强大的代码编辑和编译功能,还具备丰富的调试工具,帮助开发者快速定位和解决代码中的问题。本文…...
Web PKI现行应用、标准
中国现行 Web PKI 标准 中国在 Web PKI(公钥基础设施)领域制定了多项国家标准,以确保网络安全和数字证书管理的规范性。以下是一些现行的重要标准: 1. GB/T 21053-2023《信息安全技术 公钥基础设施 PKI系统安全技术要求》 该标…...
ROS多机通信(四)——Ubuntu 网卡 Mesh 模式配置指南
引言 使用Ad-hoc加路由协议和直接Mesh模式配置网卡实现的网络结构是一样的,主要是看应用选择, Ad-Hoc模式 B.A.T.M.A.N. / OLSR 优点:灵活性高,适合移动性强或需要优化的复杂网络。 缺点:配置复杂,需手动…...
【实用部署教程】olmOCR智能PDF文本提取系统:从安装到可视化界面实现
文章目录 引言系统要求1. 环境准备:安装Miniconda激活环境 2. 配置pip源加速下载3. 配置学术加速(访问国外资源)4. 安装系统依赖5. 安装OLMOCR6. 运行OLMOCR处理PDF文档7. 理解OLMOCR输出结果9. 可视化UI界面9.1 安装界面依赖9.2 创建界面应用…...
STM32单片机uCOS-Ⅲ系统11 中断管理
目录 一、异常与中断的基本概念 1、中断的介绍 2、和中断相关的名词解释 二、中断的运作机制 三、中断延迟的概念 四、中断的应用场景 五、中断管理讲解 六、中断延迟发布 1、中断延迟发布的概念 2、中断队列控制块 3、中断延迟发布任务初始化 OS_IntQTaskInit() 4…...
CTF【WEB】学习笔记1号刊
Kali的小工具箱 curl www.xxx.com:查看服务器响应返回的信息 curl -I www.xxx.com:查看响应的文件头 一、cmd执行命令 ipconfig:ip地址配置等; 二、 Kali操作 1.sudo su; 2.msfconsole 3.search ms17_010 永恒之蓝ÿ…...
cpp-友元
理解 C 中的友元(Friend) 在 C 语言中,封装(Encapsulation) 是面向对象编程的重要特性之一。它允许类将数据隐藏在私有(private)或受保护(protected)成员中,…...
Spring AOP 核心概念与实践指南
第一章:AOP 核心概念与基础应用 1.1 AOP 核心思想 面向切面编程:通过横向抽取机制解决代码重复问题(如日志、事务、安全等)核心优势:不修改源代码增强功能,提高代码复用性和可维护性 1.2 基础环境搭…...
利用ffmpeg库实现音频Opus编解码
一、编译与环境配置 libopus库集成 需在编译FFmpeg时添加--enable-libopus参数,编译前需先安装libopus源码并配置动态库路径。最新FFmpeg 7.1版本默认支持Opus的浮点运算优化和VBR/CVBR模式。 多平台兼容性 Opus支持Windows/Linux/macOS平台࿰…...
深入理解指针(1)(C语言版)
文章目录 前言一、内存和地址1.1 内存1.2 究竟该如何理解编址 二、指针变量和地址2.1 取地址操作符&2.2 指针变量和解引用操作符*2.2.1 指针变量2.2.2 如何拆解指针类型2.2.3 解引用操作符 2.3 指针变量的大小 三、指针变量类型的意义3.1 指针的解引用3.2 指针-整数3.3 voi…...
计算机网络——通信基础和传输介质
物理层任务:实现相邻节点之间比特(0或1)的传输 到了数据链路层之后,它会以帧为单位,把若干个比特交给物理层,物理层需要把这些比特信息转化成信号,在物理传输媒体上进行传输 通信基础基本概念 信…...
【橘子网络】关于网络分层以及协议的全局讲解
一、网络设备 1、硬件网络设备 1.1、主机(host) 主机的定义比较广泛,所有的接收流量或者发送流量的设备都可以被称之为主机。可以是电脑,手机,服务器。在当今云服务大行其道的局面下,各种云设备也可以被称之为主机。 基于这个…...
macOS 使用 enca 识别 文件编码类型(比 file 命令准确)
文章目录 macOS 上安装 enca基本使用起因 - iconv关于 enca安装 Encaenca & enconv 其它用法 macOS 上安装 enca brew install enca基本使用 enca filepath.txt示例 $ enca 动态规划算法.txt [0] Simplified Chinese National Standard; GB2312CRLF line terminat…...
MySQL 字符集
目录 字符集的基本概念 常见MySQL字符集 ascii(单字节字符集) latin1(单字节字符集) utf8(多字节字符集) utf8mb4(多字节字符集) MySQL默认字符集 MySQL字符集的层次级别 服务器级别 数据库级别 表级别 列级别 连接字符集 字符集是计算机科学中的一个重要概念&…...
Linux shell脚本3-if语句、case语句、for语句、while语句、until语句、break语句、continue语句,格式说明及程序验证
目录 1.if 控制语句 1.1 if 语句格式 1.2 程序验证 2.case语句 2.1case语句格式 2.2程序验证 2.2.1 终端先执行程序,在输入一个数 2.2.2 终端执行程序时同时输入一个预设变量 2.2.3 case带有按位或运算和通配符匹配 3.for语句 3.1for语句格式 3.2程序验…...
基于虚拟知识图谱的语义化决策引擎
在数字化转型浪潮中,企业数据资产的价值释放面临两大挑战:海量异构数据的整合困局与业务-技术语义鸿沟。本文解析飞速创软灵燕智能体平台的创新解决方案——通过构建业务语义驱动的虚拟知识图谱系统,实现企业数据的智能认知与决策赋能。 一、…...
Unity Shader 的编程流程和结构
Unity Shader 的编程流程和结构 Unity Shader 的编程主要由以下三个核心部分组成:Properties(属性)、SubShader(子着色器) 和 Fallback(回退)。下面是它们的具体作用和结构: 1. Pr…...
C++ 继承
目录 一、继承的概念与定义 1.1 继承的概念 1.2 继承的定义 1.2.1 语法 1.2.2 继承关系和访问限定符 1.2.3 继承基类成员访问方式的变化 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 五、C11 final 六、继承与友元 七、继承与静态成…...
XSS Game(DOM型) 靶场 通关
目录 靶场网址 Ma Spaghet! 分析 解题 Jefff 分析 解题 方法一 方法二 Ugandan Knuckles 分析 解题 Ricardo Milos 分析 解题 Ah Thats Hawt 分析 解题 方法一 方法二 Ligma 分析 解题 Mafia 分析 解题 方法一:构造函数 方法二…...
XSS基础靶场练习
目录 1. 准备靶场 2. PASS 1. Level 1:无过滤 源码: 2. level2:转HTML实体 htmlspecialchars简介: 源码 PASS 3. level3:转HTML深入 源码: PASS 4. level4:过滤<> 源码: PASS: 5. level5:过滤on 源码…...
leetcode-200.岛屿数量
首先,想要找岛,肯定是要逐个遍历的,否则肯定会漏岛。 其次,我怎么知道两个点是否属于一个岛?只有一个方法,我踏上一个岛的某个点时,我就分别往四周走,且把当前地块毁掉,就…...
Linux | ubuntu安装 SSH 软件及测试工具
01 windows 要怎么和 ubuntu 互传文件呢,我们可以使用 ssh 软件。 终端输入 sudo apt-get install openssh-server ,输入登录 Ubuntu 用户的密码,这里我们输入 y 确认安装。如下图所示。 接着继续改 ssh 配置文件,因为 ssh 默认…...
组件日志——etcd
目录 一、简介 二、安装【Ubuntu】 安装etcd 安装CAPI 三、写一个示例 3.0写一个示例代码 3.1获取一个etcd服务 3.2获取租约(写端操作) 3.3使用租约(写端操作) 3.4销毁租约(写端操作) 3.5获取etcd服务中的服务列表(读端操作) 3.6监听状态变化(读端操作) 一、简介 Et…...
search_fields与filterset_fields的使用
在Django中,search_fields 和 filterset_fields 可以在视图类中使用,尤其是在 Django REST Framework (DRF) 中。它们分别用于实现搜索和过滤功能。以下是它们在视图类中的具体使用方法。 1. search_fields 在视图类中的使用 search_fields 是 DRF 中 S…...