【PostgreSQL数据分析实战:从数据清洗到可视化全流程】4.1 日期时间标准化(时区转换/格式统一)
👉 点击关注不迷路
👉 点击关注不迷路
👉 点击关注不迷路
文章大纲
- PostgreSQL数据分析实战:数据清洗之日期时间标准化(时区转换/格式统一)
- 4.1 日期时间标准化:从混乱到有序
- 4.1.1 数据乱象:非标准化日期时间的典型问题
- 4.1.2 时区转换:让时间在统一坐标系下对话
- 1. 存储时区感知型时间
- 2. 固定时区转换(如统一为UTC或北京时间)
- 3. 处理非时区感知型时间(TIMESTAMP WITHOUT TIME ZONE)
- 4.1.3 格式统一:消除字符表示差异
- 1. 解析不同格式的时间字符串
- 2. 统一输出格式
- 3. 处理特殊格式(如时间戳)
- 4.1.4 实战案例:电商订单时间清洗全流程
- 4.1.5 最佳实践与注意事项
- 总结
PostgreSQL数据分析实战:数据清洗之日期时间标准化(时区转换/格式统一)
在数据清洗与预处理环节,日期时间数据的标准化是至关重要的一步。
- 不规范的日期时间格式(如
2024/01/01 15:30
与2024-01-01 3:30PM
并存)和跨时区数据(如纽约时区与东京时区混合)会导致数据分析结果出现偏差,甚至引发业务逻辑错误。 - 本文将结合具体案例,深入解析PostgreSQL中日期时间标准化的核心技术——时区转换与格式统一,帮助读者掌握高效处理时间数据的实战技巧。
4.1 日期时间标准化:从混乱到有序
4.1.1 数据乱象:非标准化日期时间的典型问题
在实际业务场景中,日期时间数据常因以下原因出现混乱:
-
- 多系统对接:前端采集的时间可能带有时区(如
2024-05-01 09:30:00+08
),而数据库存储为本地时间(2024-05-01 09:30:00
)
- 多系统对接:前端采集的时间可能带有时区(如
-
- 历史数据遗留:旧系统导出的时间格式为
DD/MM/YYYY HH24:MI
(如01/05/2024 09:30
),新系统采用YYYY-MM-DD HH:MI:SS
- 历史数据遗留:旧系统导出的时间格式为
-
- 跨区域业务:用户行为日志中包含不同时区的时间戳(如纽约时区
2024-05-01 00:00:00-04
与东京时区2024-05-01 12:00:00+09
)
- 跨区域业务:用户行为日志中包含不同时区的时间戳(如纽约时区
以电商订单表orders
为例,原始数据存在以下问题:
order_id | create_time(原始) | timezone |
---|---|---|
1001 | 2024-03-15 14:45:23 | UTC+8 |
1002 | 2024/03/15 06:45:23 AM | America/New_York |
1003 | 15/03/2024 14:45 | UTC |
这种混乱的数据状态会导致时间序列分析(如按小时统计订单量)、时间窗口计算(如7天复购率)等操作无法正确执行
。
4.1.2 时区转换:让时间在统一坐标系下对话
PostgreSQL通过TIMESTAMP WITH TIME ZONE
(简称TIMESTAMPTZ
)数据类型和AT TIME ZONE
函数,实现跨时区数据的标准化转换。
1. 存储时区感知型时间
创建带时区的时间字段:
CREATE TABLE orders (order_id INT PRIMARY KEY,create_time TIMESTAMPTZ -- 自动存储为UTC,并记录原始时区偏移
);
插入带时区的时间:
INSERT INTO orders (order_id, create_time)
VALUES
(1001, '2024-03-15 14:45:23+08'), -- 北京时间(1002, '2024-03-15 06:45:23-04'); -- 纽约时间(夏令时)
PostgreSQL会将所有TIMESTAMPTZ
数据转换为UTC存储,查询时根据会话时区自动转换为本地时间(默认使用服务器时区
)。
2. 固定时区转换(如统一为UTC或北京时间)
使用AT TIME ZONE
函数进行时区转换:
-- 将TIMESTAMPTZ转换为北京时间(UTC+8)
SELECT order_id,create_time AS original_time,create_time AT TIME ZONE 'UTC' AS utc_time, -- 转换为UTCcreate_time AT TIME ZONE 'Asia/Shanghai' AS bjt_time -- 转换为北京时间
FROM orders;
转换结果如下表:
order_id | original_time | utc_time | bjt_time |
---|---|---|---|
1001 | 2024-03-15 14:45:23+08 | 2024-03-15 06:45:23 | 2024-03-15 14:45:23 |
1002 | 2024-03-15 06:45:23-04 | 2024-03-15 10:45:23 | 2024-03-15 18:45:23 |
3. 处理非时区感知型时间(TIMESTAMP WITHOUT TIME ZONE)
若原始数据为不带时区的TIMESTAMP
,需显式指定
其所属时区后再转换:
-- 假设'2024-03-15 14:45:23'是纽约时间(UTC-4),转换为北京时间
SELECT '2024-03-15 14:45:23'::TIMESTAMP AT TIME ZONE 'America/New_York' -- 指定原始时区AT TIME ZONE 'Asia/Shanghai' AS bjt_time;
4.1.3 格式统一:消除字符表示差异
PostgreSQL提供TO_CHAR
(格式化输出)和TO_TIMESTAMP
(解析字符串为时间)函数,解决日期时间格式不统一问题。
1. 解析不同格式的时间字符串
使用TO_TIMESTAMP
配合格式掩码解析数据:
CREATE TABLE raw_logs (log_time TEXT -- 包含多种格式的时间字符串
);INSERT INTO raw_logs (log_time) VALUES
('2024-05-01 15:30:00'), -- 格式1:YYYY-MM-DD HH24:MI:SS('05/01/2024 03:30:00 PM'), -- 格式2:MM/DD/YYYY HH:MI:SS AM('20240501153000'); -- 格式3:YYYYMMDDHH24MISS-- 统一解析为TIMESTAMP类型
SELECT log_time,TO_TIMESTAMP(log_time, 'YYYY-MM-DD HH24:MI:SS') AS fmt1,TO_TIMESTAMP(log_time, 'MM/DD/YYYY HH12:MI:SS AM') AS fmt2,TO_TIMESTAMP(log_time, 'YYYYMMDDHH24MISS') AS fmt3
FROM raw_logs;
log_time | fmt1 | fmt2 | fmt3 |
---|---|---|---|
2024-05-01 15:30:00 | 2024-05-01 15:30:00 | null | 2024-05-01 15:30:00 |
05/01/2024 03:30:00 PM | null | 2024-05-01 15:30:00 | null |
20240501153000 | null | null | 2024-05-01 15:30:00 |
注意:解析失败会返回NULL
,需通过CASE WHEN
或TRY_CAST
函数处理异常数据。
2. 统一输出格式
使用TO_CHAR
将时间转换为指定格式的字符串:
-- 将时间统一为'YYYY-MM-DD HH24:MI'格式
SELECT create_time,TO_CHAR(create_time, 'YYYY-MM-DD HH24:MI') AS standardized_time
FROM orders;
create_time | standardized_time |
---|---|
2024-03-15 14:45:23+08 | 2024-03-15 14:45 |
2024-03-15 06:45:23-04 | 2024-03-15 10:45 |
3. 处理特殊格式(如时间戳)
将Unix时间戳(秒级/毫秒级)转换为可读时间:
SELECT epoch_time,TO_TIMESTAMP(epoch_time) AS sec_level, -- 秒级时间戳TO_TIMESTAMP(epoch_time/1000) AS ms_level -- 毫秒级时间戳FROM unix_timestamps;
4.1.4 实战案例:电商订单时间清洗全流程
假设我们需要将orders
表的create_time
字段标准化为:
-
时区:统一为北京时间(UTC+8)
-
格式:
YYYY-MM-DD HH24:MI:SS
-
步骤1:检测数据类型与格式
-- 查看时间字段的数据类型分布
SELECT CASE WHEN create_time ~ '\+\d+' THEN '带时区TIMESTAMP'WHEN create_time ~ '\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}' THEN '标准TIMESTAMP'ELSE '其他格式'END AS time_type,COUNT(*) AS record_count
FROM raw_orders;
-
步骤2:分阶段清洗
-
- 转换时区:将带时区的时间转为北京时间,非时区时间假设为本地时间(需业务确认)
UPDATE orders SET create_time = CASE WHEN create_time::TEXT LIKE '%+%' OR create_time::TEXT LIKE '%-%%' -- 带时区标识THEN create_time AT TIME ZONE 'Asia/Shanghai'ELSE create_time::TIMESTAMP WITHOUT TIME ZONE -- 假设为本地时间,直接转换END;
-
- 统一格式:将清洗后的时间转换为指定字符串格式
ALTER TABLE orders ADD COLUMN standardized_time TEXT;UPDATE orders SET standardized_time = TO_CHAR(create_time, 'YYYY-MM-DD HH24:MI:SS');
- 步骤3:验证清洗结果
SELECT DISTINCT standardized_time FROM orders;
输出结果应全部符合
YYYY-MM-DD HH24:MI:SS
格式,且时区统一为北京时间。 -
4.1.5 最佳实践与注意事项
-
- 时区选择原则:
- 业务分析若涉及
全球数据
,建议统一存储为UTC,查询时按需转换 本地化业务(如中国地区)
可直接使用本地时区(如Asia/Shanghai
)
-
- 格式掩码参考:
格式代码 说明 示例(2024-05-01 15:30:00) YYYY 四位年份 2024 MM 两位月份(01-12) 05 DD 两位日期(01-31) 01 HH24 24小时制(00-23) 15 MI 分钟(00-59) 30
- 格式掩码参考:
-
- 性能优化:
- 对时间字段建立索引(
CREATE INDEX idx_orders_time ON orders(create_time);
) - 避免在
WHERE
条件中对时间字段使用函数转换,改用::TIMESTAMP
强制类型转换
总结
日期时间标准化是数据清洗中技术性与业务性结合的关键环节:
- 时区转换解决了时间的空间一致性问题,确保不同地区的时间在同一坐标系下比较
- 格式统一消除了字符表示的差异,为后续时间序列分析、时间窗口计算奠定基础
通过PostgreSQL的TIMESTAMPTZ
、AT TIME ZONE
、TO_CHAR
、TO_TIMESTAMP
等工具,我们能够高效处理复杂的日期时间数据。
-
在实际操作中,需紧密结合业务需求(如时区选择、格式定义),并通过数据验证(如唯一性检查、格式正则匹配)确保清洗结果的准确性。
-
标准化后的日期时间数据将为后续的数据分析(如用户行为时序分析)、可视化(如按小时流量图)提供可靠的基础,
真正实现"垃圾进,精品出"的数据清洗目标
。 -
如果你在处理日期时间数据时遇到特殊场景(如跨夏令时转换、历史数据时区修正),欢迎分享具体问题,我们可以共同探讨解决方案。
- 以上内容系统梳理了PostgreSQL日期时间标准化的核心方法。
- 在实际项目中是否遇到过复杂的时间数据清洗问题?比如跨夏令时转换或多格式混合场景,欢迎提出具体案例进一步探讨。
相关文章:
【PostgreSQL数据分析实战:从数据清洗到可视化全流程】4.1 日期时间标准化(时区转换/格式统一)
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 PostgreSQL数据分析实战:数据清洗之日期时间标准化(时区转换/格式统一)4.1 日期时间标准化:从混乱到有序4.1.1 数据乱象&…...
基于Hive + Spark离线数仓大数据实战项目(视频+课件+代码+资料+笔记)
精品推荐:基于Hive Spark离线数仓大数据实战项目,共23节课,供学习参考。 项目介绍项目中 docker 使用项目环境搭建项目数仓分层项目业务分析sqoop 数据采集python 数据采集项目 ODS 层创建DWD 层构建DWS 层构建项目回顾(一&…...
【深入浅出MySQL】之数据类型介绍
【深入浅出MySQL】之数据类型介绍 MySQL中常见的数据类型一览为什么需要如此多的数据类型数值类型BIT(M)类型INT类型TINYINT类型BIGINT类型浮点数类型float类型DECIMAL(M,D)类型区别总结 字符串类型CHAR类型VARCHAR(M)类型 日期和时间类型enum和set类型 …...
从入门到登峰-嵌入式Tracker定位算法全景之旅 Part 4 |IMU 死算与校正:惯性导航在资源受限环境的落地
Part 4 |IMU 死算与校正:惯性导航在资源受限环境的落地 本章聚焦 ESP32-S3 平台上如何利用 LSM6DS3 IMU 实现 死算(Dead Reckoning),并结合 零速更新(ZUPT) 或 磁力计辅助 进行 漂移校正,最终通过 EKF/UKF 融合提升定位精度。 一、传感器简介与校准 LSM6DS3 主要参数 加速…...
【iOS】 方法交换
【iOS】 方法交换 method-swizzling 文章目录 【iOS】 方法交换 method-swizzling前言什么是method-swizzling相关API方法交换的风险在load方法中保证只加载一次要在当前类的方法中进行交换如果方法依赖于cmd 方法交换的应用 前言 之前看过有关于消息转发的内容,这里我们可以简…...
PostgreSQL 的 ANALYZE 命令
PostgreSQL 的 ANALYZE 命令 ANALYZE 是 PostgreSQL 中用于收集数据库对象统计信息的关键命令,这些统计信息对于查询优化器生成高效执行计划至关重要。 一 ANALYZE 命令 1.1 基本语法 ANALYZE [ ( option [, ...] ) ] [ table_and_columns [, ...] ] ANALYZE [ …...
初识 iOS 开发中的证书固定
引言 在移动应用安全领域,HTTPS/TLS 是数据传输的第一道防线,但仅依赖系统默认的证书验证仍有被中间人(MITM)攻击的风险。Certificate Pinning(证书固定)通过将客户端信任“钉”在指定的服务器证书或公钥上…...
2025 年如何使用 Pycharm、Vscode 进行树莓派 Respberry Pi Pico 编程开发详细教程(更新中)
micropython 概述 micropython 官方网站:https://www.micropython.org/ 安装 Micropython 支持固件 树莓派 Pico 安装 Micropython 支持固件 下载地址:https://www.raspberrypi.com/documentation/microcontrollers/ 选择 MicroPython 下载 RPI_PIC…...
设计模式每日硬核训练 Day 17:中介者模式(Mediator Pattern)完整讲解与实战应用
🔄 回顾 Day 16:责任链模式小结 在 Day 16 中,我们学习了责任链模式(Chain of Responsibility Pattern): 将请求沿链传递,节点可选择处理或传递下一节点。实现了请求发送者与多个处理者的解耦…...
文章记单词 | 第63篇(六级)
一,单词释义 vegetable [ˈvedʒtəbl] n. 蔬菜;植物人;生活单调乏味的人;adj. 蔬菜的;植物的faint [feɪnt] adj. 模糊的;微弱的;虚弱的;v. 昏倒,昏厥;n. 昏…...
ES类的索引轮换
通过以下请求方法创建一个名为 “tiered-storage-policy” 的 ISM policy: PUT _plugins/_ism/policies/tiered-storage-policy {"policy": {"description": "Changes replica count and deletes.","schema_version": 1,…...
小白机器人假想:分布式关节控制——机器人运动的未来模式?
引言 在机器人技术快速发展的今天,控制架构的创新往往能带来突破性进展。作为一名机器人爱好者,我最近思考了一个大胆的设想:如果机器人的每个关节都配备独立的动作存储器和处理器,并通过高速光纤网络与中央"驱动总脑"…...
LangChain4j +DeepSeek大模型应用开发——9 优化硅谷小鹿
1.预约业务的实现 这部分我们实现硅谷小鹿的查询订单、预约订单、取消订单的功能 创建MySQL数据库表 CREATE DATABASE xiaolu; USE xiaolu; -- 创建预约表 appointment CREATE TABLE appointment (id BIGINT NOT NULL AUTO_INCREMENT COMMENT 主键ID,自增, -- 主…...
Oracle VirtualBox 在 macOS 上的详细安装步骤
Oracle VirtualBox 在 macOS 上的详细安装步骤 一、准备工作1. 系统要求2. 下载安装包二、安装 VirtualBox1. 挂载安装镜像2. 运行安装程序3. 处理安全限制(仅限首次安装)三、安装扩展包(增强功能)四、配置第一个虚拟机1. 创建新虚拟机2. 分配内存3. 创建虚拟硬盘4. 加载系…...
Day110 | 灵神 | 二叉树 | 根到叶路径上的不足节点
Day110 | 灵神 | 二叉树 | 根到叶路径上的不足节点 1080.根到叶路径上的不足节点 1080. 根到叶路径上的不足节点 - 力扣(LeetCode) 思路: 笔者一开始没看懂,只能通过部分的例子,原因是把路径和小于limit的都给删了…...
超详细讲解C语言转义字符\a \b \r \t \? \n等等
转义字符 C语言有一组字符很特殊,叫做转义字符,顾名思义,改变原来的意思的字符。 1 \? ??)是一个三字母词,在以前的编译器它会被编译为] (??会被编译为[ 因此在以前输入(are you ok ??)就会被编译为are you ok ] 解决这个…...
TensorFlow 多卡训练 tf多卡训练
目录 export TF_GPU_ALLOCATORcuda_malloc_async 🔧 具体作用 优势 🧩 依赖条件 ✅ 设置方式(Linux/macOS) export TF_GPU_ALLOCATORcuda_malloc_async 是设置 TensorFlow 使用 CUDA 异步内存分配器 的环境变量。这个设置可…...
数据结构--树状数组
树状数组(Fenwick Tree) 概述 树状数组是一种用于高效处理动态数组中前缀和查询的数据结构。它能够在 O ( l o g n ) O(log n) O(logn) 时间复杂度内完成以下操作: 更新数组中的元素O(logn)查询数组前缀和O(logn) 数组: O(1)…...
如何使用python保存字典
在Python中,可以通过多种方式将字典(dict)保存到文件中,并能够随时读取恢复。以下是几种常见的方法: 1. 使用 json 模块(推荐) 适用场景:需要人类可读的文件格式,且数据不…...
C和指针——预处理
预处理是编译前的过程,主要对define,include以及一些编译器定义的内容进行替换 #define的本质就是替换 1、例子 #define FOREVER for(;;) 2、例子 #define TEMPD "1231231231\ 123123123" \\如果太长了,可以用\换行 3、例子——可…...
windows python ta-lib安装
https://github.com/TA-Lib/ta-lib/releases windows安装ta-lib指令 pip install --no-cache-dir https://github.com/cgohlke/talib-build/releases/download/v0.6.3/ta_lib-0.6.3-cp310-cp310-win_amd64.whl...
机器学习+多目标优化的算法如何设计?
一、核心问题与设计思路 机器学习(ML)与多目标优化(MOO)的结合旨在解决两类核心问题: 利用ML提升MOO算法的性能:通过机器学习模型预测解的质量、优化搜索方向或加速收敛;利用MOO优化ML模型的多…...
爬虫管理平台-最新版本发布
TaskPyro 是什么? TaskPyro 是一个轻量级的 Python 任务调度平台,专注于提供简单易用的任务管理和爬虫调度解决方案。它能够帮助您轻松管理和调度 Python 任务,特别适合需要定时执行的爬虫任务和数据处理任务。 官方文档:https:/…...
SpringCloud教程 — 无废话从0到1逐步学习
目录 什么是微服务? 微服务与单体架构的区别 微服务主要用法概念 远程调用 服务注册/发现&注册中心 配置中心 服务熔断&服务降级 1)服务熔断 2)服务降级 API 网关 环境准备 Nacos OpenFeign Gateway Sentinel Sea…...
Webug4.0通关笔记12- 第17关 文件上传之前端拦截(3种方法)
目录 一、文件上传前端拦截原理 二、第17关 文件上传(前端拦截) 1.打开靶场 2.构造php脚本 3.源码分析 (1)js源码 (2)服务器源码 (3)总结 4.渗透实战 (1)禁用js法 &#…...
使用synchronized关键字同步Java线程
问题 在Java多线程编程中,你需要保护某些数据,防止多个线程同时访问导致数据不一致或程序错误。 解决方案 在需要保护的方法或代码段上使用synchronized关键字。 讨论 synchronized关键字是Java提供的同步机制,用于确保在同一时刻只有一…...
从头训练小模型: 2 监督微调SFT
简介 从头训练小模型是我个人对大语言模型(LLM)学习中的重要部分。 通过对一个小规模模型的最小化复现实践,我不仅能够深入理解模型训练的基本流程,还可以系统地学习其中的核心原理和实际运行机制。这种实践性的学习方法让我能够直观地感受模型训练的每…...
【QT】QT中http协议和json数据的解析-http获取天气预报
QT中http协议和json数据的解析 1.http协议的原理2.QT中http协议的通信流程2.1 方法步骤 3.使用http协议(通过http下载图片和获取天气预报信息)3.1 http下载网络上的图片(下载小文件)3.1.1 示例代码3.1.2 现象 3.2 获取网络上天气预报3.2.1 免费的天气预报…...
PiscTrace针对YOLO深度适配:从v8到v12
一、YOLO简介:目标检测的核心技术 YOLO(You Only Look Once)是近年来最为流行的目标检测模型,凭借其实时性与高精度,广泛应用于自动驾驶、视频监控、安防检测等多个领域。YOLO系列模型自v1问世以来,经过不…...
前端面试每日三题 - Day 24
这是我为准备前端/全栈开发工程师面试整理的第24天每日三题练习,涵盖了: JavaScript 中的 Promise.all()、Promise.race() 和 Promise.allSettled() 的实际应用和性能差异React 中的 Concurrent Rendering 和 useTransition API如何设计一个高并发的在线…...
正态分布习题集 · 题目篇
正态分布习题集 题目篇 全面覆盖单变量正态、多变量正态、参数估计、假设检验、变换以及应用,共 20 题,从基础到进阶。完成后请移步《答案与解析篇》。 1. 基础定义与性质(5题) 1.1 密度函数 写出正态分布 N ( μ , σ 2 ) N(…...
Three.js在vue中的使用(二)-动画、材质
一、Three.js 动画原理与实现 1. 基本原理 Three.js 的动画系统基于 关键帧(Keyframe) 和 时间轴(AnimationClip) 实现: THREE.AnimationMixer:管理多个动画片段的播放器THREE.AnimationClip:…...
【办公类-99-04】20250504闵豆统计表excle转PDF,合并PDF、添加中文字体页眉+边框下划线
需求说明 督导检查,各条线都要收集资料。 今天去加班,遇到家教主任,她让我用保教主任的彩色打印机打印这套活跃度表格。(2023学年上学期下学期-2024学年上学期,就是202309-202504) 每个excle都是内容在A4一…...
ES类迁移方法
快照(s3 file FS)跨集群迁移es-dumpremote-reindexLogstash Elasticsearch 迁移方法 Elasticsearch 迁移是将数据、索引和配置从一个 Elasticsearch 集群转移到另一个集群的过程。以下是几种常见的迁移方法: 1. 快照和恢复 (Snapshot and Restore) 这是最推荐的…...
智能合约部署之全国职业院校技能大赛“区块链技术应用”赛项—“航班延误险案例”
智能合约部署之全国职业院校技能大赛“区块链技术应用”赛项—“航班延误险案例” 1.启动虚拟机上的区块链 (1)打开VMware虚拟机,在桌面中点击右键,选择Open Terminal打开命令行窗口。 (2)使用"cd geth_local/"命令,切换至区块链根目录,输入下面的命令启动…...
STM32外设-GPIO输入(仅数字)
STM32外设-GPIO输入 一,输入的三种类型1. 上拉 (Pull-up)输入2. 下拉 (Pull-down)输入3. 浮空 (Floating / High-Impedance)输入 二,下拉电阻的作用 学完基础的led,接下来学习key即按键,但在连接按键之前,我们必须了解…...
QT开发工具对比:Qt Creator、Qt Designer、Qt Design Studio
前端开发工具—Qt Designer Qt Designer是Qt框架的一部分,是一个图形用户界面设计工具。它允许开发者通过可视化方式设计和布局GUI组件,而无需手动编写UI代码。设计完成后,Qt Designer生成UI文件(通常以.ui为扩展名)&…...
(ADC)数模转换器的不同类型对比
(ADC)数模转换器的不同类型对比 数模转换器(ADC)类型详解1. **并行比较型ADC(Flash ADC)****工作原理****优缺点****应用场景** 2. **逐次逼近型ADC(SAR ADC)****工作原理****优缺点…...
MOS管极间电容参数学习
文章目录 前言1. 输入电容(Ciss)2. 输出电容(Coss)3. 反向转移电容(Crss)4,测试条件解读总结 前言 MOS管在电路设计中非常常用,用途包括DC-DC,电平转换等,所…...
Webug4.0靶场通关笔记14- 第18关 文件上传之Nginx解析缺陷
目录 第18关 渗透实战 1.打开靶场 2.构造php脚本 3.源码分析 (1)客户端源码 (2)服务的源码 4.Nginx解析法渗透 (1)缺陷原因 (2)缺陷条件 (3)构造脚…...
外观模式(Facade Pattern)
非常好!现在我们来讲解结构型设计模式之一:外观模式(Facade Pattern)。 我会通过: ✅ 简洁定义 🎯 为什么需要 🐍 Python 代码(含注释) 🧭 流程图 应用场…...
Javase 基础加强 —— 03 集合
本系列为笔者学习Javase的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员JavaAI智能辅助编程全套视频教程,java零基础入门到大牛一套通关》,章节分布参考视频教程,为同样学习Javase系列课程的同学们提供参考。 集合是一种容…...
【React】 Hooks useTransition 解析与性能优化实践
1.背景 useTransition 是 React 18 引入的一个并发模式下的 Hook,用于区分紧急和非紧急的状态更新,提升应用的响应性和用户体验;它可以管理 UI 中的过渡状态,特别是在处理长时间运行的状态更新时。它允许你将某些更新标记为“过渡”状态&…...
C++23 std::tuple与其他元组式对象的兼容 (P2165R4)
文章目录 引言C23 std::tuple概述std::tuple的定义和基本用法std::tuple的特性std::tuple的应用场景 其他元组式对象的特点Python元组的特点Python元组与C std::tuple的对比 P2165R4提案的具体内容提案背景提案主要内容提案的影响 兼容性示例代码总结 引言 在C编程的世界里&am…...
网络Tips20-003
1.E1载波的控制开销占2/32*100%6.25%,E1载波的基本帧传送时间是125uS。 2.计算机在一个指令周期的过程中,为从内存读取指令操作码,首先要将.程序计数器(PC)的内容送到地址总线上 3.3DES算法:密码学中,3DES是三重数据加密算法通称…...
Rust的安全卫生原则
在Rust编程世界里,unsafe关键字常常让初学者感到困惑。他们经常会问:“在unsafe块里能做什么?”“什么时候需要使用unsafe?” 这些问题虽然很常见,但对于真正理解Rust的安全机制来说还远远不够。因为随着Rust操作语义的…...
TestBench激励与待测
TestBench激励与待测 ✅ 一、TestBench 的作用✅ 二、例化的目的✅ 三、TestBench 中的信号类型选择🟢 输入端口(input) → 在 TestBench 中声明为 reg🟡 输出端口(output)→ 在 TestBench 中声明为 wire ✅…...
VulnHub-OSCP靶机
前言:由于这台机器过于简单,所以我会尽量细化和介绍每个步骤以及涉及到的知识点,让正在打入门机器的你不在迷茫和硬化的操作,理解并熟悉每条命令以及参数的含义,以及把前期带给我们的信息进行快速筛选,有利…...
【前端】【面试】在 Nuxt.js SSR/SSG 应用开发的 SEO 优化方面,你采取了哪些具体措施来提高页面在搜索引擎中的排名?
在 Nuxt.js 的 SSR(服务器端渲染)或 SSG(静态站点生成)应用中,SEO 优化是非常核心的工作内容之一。利用 Nuxt.js 的特性,我们可以通过多个维度系统地提升搜索引擎排名。 下面是我在实际项目中采取的 SEO 优…...
软考 系统架构设计师系列知识点之杂项集萃(53)
接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(52) 第85题 在静态测试中,主要是对程序代码进行静态分析。“数据初始化、赋值或引用过程中的异常”属于静态分析中的()。 A. 控制流分析 B. 数据…...