12_Pandas时序数据(上)
固定时间
时间的表示
固定时间是指一个时间点。固定时间是时序数据的基础,一个固定时间带有丰富的信息,如年份、周几、月份、季度等。
Python的官网库datetime支持创建和处理时间:
datetime.now() # 当前时间
datetime(2025,2,26,12) # 指定时间
datetime(year=2025,month=2,day=26) # 指定时间
详细内容参考:https://blog.csdn.net/qq_27953479/article/details/132039597
创建时间点
pd.Timestamp()是Pandas定义时间的主要函数,代替Python中的datetime.datetime对象。
import datetimepd.Timestamp(datetime.datetime(2020,6,8)) # 指定年月日
pd.Timestamp(datetime.datetime(2020,6,8,16,17,18))# 指定年月日时分秒# 指定字符串
pd.Timestamp('2012-05-01')
pd.Timestamp('2012-05-01T12')
pd.Timestamp('2012-05-01 12:00:00')# 指定时间位置数字,可以依次定义year,month,day,hour,minute,second,microsecond
pd.Timestamp(2012,5,2)
pd.Timestamp('2012-05-01 12:00:00')
pd.Timestamp(year=2012,month=5,day=2,hour=13)# 解析时间戳
pd.Timestamp(1740544652,unit='s') # 单位为秒# tz指定时区
pd.Timestamp(1740544652,unit='s',tz='US/Pacific')
pd.Timestamp(1740544652,unit='s',tz='Asia/Shanghai')# 获取当前时间
pd.Timestamp('today')
pd.Timestamp('now')
pd.Timestamp('now').date() # 只取日期部分# 通过当前时间计算出昨天、明天等信息
pd.Timestamp('now')-pd.Timedelta(days=1) # 昨天
pd.Timestamp('now')+pd.Timedelta(days=1) # 明天
pd.Timestamp('now').replace(day=1) # 月初
pd.to_datetime()也可以实现上述功能,经常用在时间转换上
时间的属性
一个固定的时间包含丰富的属性,包括时间所在的年、月、周、季度等。
time = pd.Timestamp('now')
time.asm8 # 返回Numpy datetime64格式(以纳秒为单位)
time.dayofweek # 周几(周一为 0)
time.dayofyear # 一年的第几天
time.days_in_month # 当月有多少天
time.daysinmonth # 同上
time.freqstr # 周期字符
time.is_leap_year # 是否是闰年
time.is_month_end # 是否是当月最后一天
time.is_month_start# 是否是当月第一天
time.is_quarter_end # 是否是当季度最后一天
time.is_quarter_start# 是否是当季度第一天
time.is_year_end # 是否是当年最后一天
time.is_year_start# 是否是当年第一天
time.quarter # 当前季度数
time.tz # 当前时区别名
time.week # 当年第几周
time.weekofyear # 同上
time.day # 日
time.freq # 调度周期
time.hour # 时
time.month # 月
time.second # 秒
time.year # 年
时间的方法
可以对时间进行时区转换、年份和月份替换等一系列操作
time = pd.Timestamp('now',tz='Ania/Shanghai')# 转换单位,向上舍入
time.ceil('s') # 转为以秒为单位
time.ceil('ns') #转为以纳秒为单位
time.ceil('d') # 保留日
time.ceil('h') # 保留时# 转换单位,向下舍入
time.floor('h') # 保留时
time.round('h') # 保留时,四舍五入time.day_name() # 返回星期名
time.month_name() # 返回月份# 将时间戳规范化为午夜,保留tz信息
time.normalize()# 将时间元素替换datetime.replace ,可以处理纳秒
time.replace(year=2019) # 年份替换为2019
time.replace(month=8) #将月份替换为8月# 转为周期类型,将丢失时区
time.to_period(freq='h')# 转换指定时区
time.astimezone('UTC')
time.to_convert('UTC')
time.tz_localize(None) # 删除时区
时间缺失值
对于时间的缺失值,有专门的NaT来表示
pd.Timestamp(pd.NaT) # NaT
pd.NaT == pd.NaT # false,类似np.nan# NaT可以代表固定时间、时长、时间周期为空的情况,可以参与到时间计算(计算结果都是NaT)
时长数据
创建时间差
pd.Timedelta()对象表示时间差,也就是时长,以差异单位表示,例如天、时、分、秒等。可以时正数,也可以时负数
# 两个固定时间相减得到时差
pd.Timestamp('2021-11-12 12') - pd.Timestamp('2021-11-12 13')
pd.Timestamp('2021-11-12 12') - pd.Timestamp('2021-11-12 11')# 按照格式传入字符串
pd.Timedelta('1 days') # 一天
pd.Timedelta('1 days 00:00:00') # 一天pd.Timedelta('1 days 2 hours') # 一天加2小数(26小数)
pd.Timedelta('1 days 02:00:00') # 一天加2小数(26小数)pd.Timedelta('-1days 2min 3us') # 负的时间差(-86520.000003 秒)# 用关键参数指定时间
pd.Timedelta(days=5,seconds=10)
pd.Timedelta(minutes=3,seconds=10)
pd.Timedelta(minutes=3242) # 可以将分钟转换为天和小时# 使用带周期量的偏移别名
pd.Timedelta('1D') # 一天
pd.Timedelta('2W') # 两周
pd.Timedelta('1D2H3M4S') # 一天零2小时3分钟4秒# 带单位的整形数字
pd.Timedelta(1,unit='d') # 一天
pd.Timedelta(100,unit='s') # 100秒
pd.Timedelta(4,unit='w') # 4周
pd.to_timedelta()可以完成以上操作,经常用作时长类型的数据转换上
时长的加减
时长可以相加,多个时长累计为一个更长的时长
# 一天与5个小时相加
pd.Timedelta(pd.offsets.Days(1)) + pd.Timedelta(pd.offsets.Hour(5))
# 一天与5个小时相减
pd.Timedelta(pd.offsets.Days(1)) - pd.Timedelta(pd.offsets.Hour(5))
固定时间与时长相加或者相减会得到一个新的固定时间
pd.Timestamp('2020-11-11') - pd.Timedelta(pd.offsets.Day(1))
pd.Timestamp('2020-11-11') + pd.Timedelta('3W')
时长的属性
时长数据中可以解析指定的时间计数单位的值,比如小时、秒等
tdt= pd.Timedelta('1 days 2 hours 7 min 3 sec')
tdt.days # 天
tdt.seconds # 秒 (注意:不是总秒数)
时间序列
多个固定时间组织起来就是形成了时间序列(时序)。固定时间在时序数据中可以按照一定频率组织(周期性),也可以无规则的组织(随机性)。数据分析中大多是周期性时序数据。
时序索引
DatetimeIndex 是时间索引对象,一般由to_datetime()或date_range()来创建
import datetime
import numpy as np# 创建一个DatetimeIndex
pd.to_datetime(['11/1/2020',np.datetime64('2020-11-02'),datetime.datetime(2020,11,3)])
date_range()可以给定开始或结束时间,并给定周期数据,周期频率,会自动生成在此范围内的时间索引数据
# 默认频率为天
pd.date_range('2020-01-01',periods=10)
pd.date_range('2020-01-01','2020-01-10') # 同上
pd.date_range(end='2020-01-01',periods=10)# 同上
bdate_range()生成数据可以跳过周六日,实现工作日的时间索引序列
pd.bdate_range('2020-01-01',periods=10)
创建时序数据
tinx = pd.date_range('2020-11-01',periods=10)
s = pd.Series(range(len(tinx)),index=tinx)
df = pd.DataFrame({'A':range(len(tinx)),'B':range(len(tinx))[::-1]},index=tinx)
数据访问
查询访问数据和[]、loc等的用法相同
idx = pd.date_range('1/1/2020','12/1/2020',freq='H')
ts = pd.Series(np.random.randn(len(idx)),index=idx)ts[5:10] # 指定区间
ts[2020] # 只筛选年(默认时间为2020-1-1 00:00:00)# 支持传入时间字符和各种时间对象
ts['11/30/2020']
ts['2020-11-30']
ts['20201130'] # 以上三条是同一时间段
ts[datetime.datetime(2020,11,30)]
ts[pd.Timestamp(2020,11,30)]# 以上两条是同一时间# 也可以使用部分字符查询一定范围内的数据
ts['2020'] # 查询整个2020年 -----注意与ts[2020] 的区别!
ts['2020-6'] # 查询2020年6月份
ts['2020-6':'2020-10'] # 查询20206月份到10月份ts.index.resolution # 时间粒度(频率)
df.truncate() 作为一个专门对索引的截取工具,可以很好的应用在时序索引上
# 给定开始时间和结束时间来截取部分时间
ts.truncate(before='2020-11-10 11:20',after='2020-12')
类型转换
由于时间格式样式比较多,很多情况下pandas并不能自动将时序数据识别为时间类型,所以在数据清洗过程中,需要专门对数据进行时间类型转换。
astype是最简单的时间转换方法,它只能针对相对标准的时间格式
s = pd.Series(['2021-11-01 01:10','2021-11-12 21:10','2021-11-30 10:10'])
s.astype('datetime64[ns]') # 转为时间类型
s.astype('datetime64[ns,Asia/Shanghai]') # 转为时间类型,指定时区
pd.to_datetime()也可以转换时间
pd.to_datetime(s)df = pd.DataFrame({'year':[2020,2021,2022],'month':[10,11,12],'day':[10,1,12]})
pd.to_datetime(df)
pd.to_datetime(df[{'year','month','day'}]) # 同上pd.to_datetime('2020/12/12') # 转换为单个时间 Timestamp
pd.to_datetime(1490195805,unit='s') # 时间戳转换需要指定单位
用pd.DatetimeIndex 直接转换为时间序列索引:
# 转换为时间序列索引,自动推断频率
pd.DatetimeIndex(['20201101','20201102','20201103'],freq='infer')
按格式转换
如果原数据的格式为不规范的时间格式数据们可以通过格式映射来将其转为时间数据
# 不规则格式转换时间
pd.to_datetime('01-10-2022 12:34:22',format='%d-%m-%Y %H:%M:%S')
pd.to_datetime('2020_11_11',format='%Y_%m-%d',errors='ignore') # 转换失败,返回原字符串
pd.to_datetime('2020_11_11',format='%Y_%m-%d',errors='coerce') # 转换失败,返回NaT
时间访问器.dt
时间访问器.dt<method>,访问时间序列数据的属性和调用方法,返回对应的序列。
# 时间序列
s=pd.Series(pd.date_range('2022-11-01',periods=5,freq='d'))
# 调用方法
s.dt.day_name();
s.d.weekday()
#访问属性
s.dt.date
s.dt.time
## 方法和属性可以参见##固定时间##章节# 时长数据
ts = pd.Series(pd.to_timedelta(np.arange(5),unit='hour'))
ts.dt.seconds
## 方法和属性可以参见##时长数据##章节
时序数据移动
shift()方法可以在时序对象上实现向上或向下移动
rng = pd.date_range('2020-11-01','2020-11-04')
ts = pd.Series(range(len(rng)),index=rng)ts.shift(-1) # 向上移动一位# shift()方法接受freq频率参数,接受DateOffset类或其他类似timedelta的对象
ts.shift(-1,freq='B') # 向上移动一个工作日
频率转换
更改频率主要功能是asfreq()方法。
rng = pd.date_range('2020-11-01','2020-12-04')
ts = pd.Series(range(len(rng)),index=rng)ts.asfreq(pd.offsets.Hour(12)) # 频率转为12个小时
ts.asfreq(freq='12h',fill_value=0) # 填充缺失值为0
ts.asfreq(freq='12h',method='pad') # 填充方法指定 pad是前向填充(可以参考Pandas数据清洗[https://blog.csdn.net/qq_27953479/article/details/144883944])
相关文章:
12_Pandas时序数据(上)
固定时间 时间的表示 固定时间是指一个时间点。固定时间是时序数据的基础,一个固定时间带有丰富的信息,如年份、周几、月份、季度等。 Python的官网库datetime支持创建和处理时间: datetime.now() # 当前时间 datetime(2025,2,26,12) # 指…...
当我删除word文件时无法删除,提示:操作无法完成,因为已在Microsoft Word中打开
现象: 查看电脑桌面下方的任务栏,明明已经关闭了WPS和WORD软件,但是打开word文档时还是提示: 解决方法步骤: 1、按一下键盘上的ctrl Shift Esc 键打开任务管理器 2、在进程中找到如下: 快速找到的方法…...
0x03 http协议和分层架构
HTTP协议 简介 Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则 http协议基于TCP协议:面向连接,安全基于请求-响应模型:一次请求对应一次响应HTTP协议是无状态的协议ÿ…...
JavaScript系列03-异步编程全解析
本文介绍了异步相关的内容,包括: 回调函数与回调地狱Promise详解async/await语法Generator函数事件循环机制异步编程最佳实践 1、回调函数与回调地狱 JavaScript最初是为处理网页交互而设计的语言,异步编程是其核心特性之一。最早的异步编…...
深度解读 AMS1117:从电气参数到应用电路的全面剖析
在电子设备的电源管理领域,线性稳压器扮演着至关重要的角色,而 AMS1117 凭借其出色的性能和广泛的适用性,成为众多工程师的热门选择。本文将依据相关资料,对 AMS1117 的特性、应用、电气参数等方面进行详细解读。 一、功能特性概…...
深入理解Tomcat与Web应用部署:C/S与B/S架构下的实践指南
在当今的互联网时代,Web应用的开发与部署是软件开发领域的重要组成部分。无论是传统的C/S架构,还是现代广泛应用的B/S架构,了解它们的优缺点以及如何高效部署Web应用是每个开发者都需要掌握的技能。本文将深入探讨C/S与B/S架构的区别…...
XML 编辑器:全面指南与最佳实践
XML 编辑器:全面指南与最佳实践 引言 XML(可扩展标记语言)编辑器是处理XML文件的关键工具,对于开发人员、系统管理员以及任何需要处理XML数据的人来说至关重要。本文将全面介绍XML编辑器的概念、功能、选择标准以及最佳实践,旨在帮助读者了解如何选择和使用合适的XML编辑…...
Python实现GO鹅优化算法优化BP神经网络回归模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 传统BP神经网络的局限性:BP(Back Propagation)神经网络作为一种…...
如何配置虚拟机的IP上网
要配置虚拟机的IP地址以便上网,你可以按照以下步骤操作: 打开虚拟机软件,确保虚拟机的网络设置为“桥接模式”或“NAT模式”,这样虚拟机可以与物理网络连接。 在虚拟机操作系统中,打开网络设置界面,一般在…...
【洛谷贪心算法题】P1094纪念品分组
该题运用贪心算法,核心思想是在每次分组时,尽可能让价格较小和较大的纪念品组合在一起,以达到最少分组的目的。 【算法思路】 输入处理:首先读取纪念品的数量n和价格上限w,然后依次读取每件纪念品的价格,…...
学习笔记08——ConcurrentHashMap实现原理及源码解析
1. 概述 为什么需要ConcurrentHashMap? 解决HashMap线程不安全问题:多线程put可能导致死循环(JDK7)、数据覆盖(JDK8) 优化HashTable性能:通过细粒度锁替代全局锁,提高并发度 对比…...
redis slaveof 命令 执行后为什么需要清库重新同步
在 Redis 中,执行 SLAVEOF(或 REPLICAOF)命令后,从节点需要清空现有数据并重新同步的主要原因如下: 1. 保证数据一致性 核心目标:确保从节点的数据与主节点 完全一致。问题场景: 如果从节点之前…...
6-1JVM的执行引擎处理
一、执行引擎的组成结构 解释器(Interpreter) 逐条解释执行字节码指令,启动速度快但执行效率较低。适用于短生命周期或对启动时间敏感的场景,如调试环境。 即时编译器(JIT Compiler) 通过动态…...
CMU15445(2023fall) Project #4 - Concurrency Control踩坑历程
把树木磨成月亮最亮时的样子, 就能让它更快地滚下山坡, 有时会比骑马还快。 完整代码见: SnowLegend-star/CMU15445-2023fall: Having Conquered the Loftiest Peak, We Stand But a Step Away from Victory in This Stage. With unwavering…...
腿足机器人之十三-强化学习PPO算法
腿足机器人之十三-强化学习PPO算法 腿足机器人位姿常用强化学习算法PPO算法核心原理PPO算法的创新设计PPO算法典型流程优势函数 对于复杂地形适应性(如楼梯、碎石路),传统的腿足机器人采用基于模型的控制器,该方法依赖精确动力学建…...
ubuntu下r8125网卡重启丢失修复案例一则
刚装的一台服务器,ubuntu24.04,主板网卡是r8125,安装服务后会莫名其妙丢失驱动 按照官网的方法下载最新8125驱动包: Realtek 然后卸载驱动 rmmod r8125 然后在驱动包里安装(幸好我之前装了build-essential&#x…...
设计一个“车速计算”SWC,通过Sender-Receiver端口输出车速信号。
1. 需求分析 功能目标:根据车轮脉冲信号(轮速传感器输入)计算当前车速,并将结果通过Sender端口发送给其他SWC。 输入:轮速脉冲数(如WheelPulse,类型uint32)。 输出:车速(如VehicleSpeed,类型float32,单位km/h)。 触发方式:周期性计算(例如每10ms执行一次)。 2.…...
DeepSeek 使用窍门与提示词写法指南
一、通用提示词技巧 窍门分类技巧说明示例提示词明确需求用“角色任务要求”明确目标作为健身教练,为30岁上班族设计一周减脂计划,需包含饮食和15分钟居家训练结构化提问分步骤、分模块提问第一步:列出Python爬虫必备的5个库;第二…...
MySQL零基础教程12—聚合查询(聚合函数)
背景 有时候我们需要汇总一些数据,比如查询一个班级的平均分数,这个时候我们需要的是把分数汇总,然后计算出一个平均值进行返回,并不需要返回某一列的值,针对这种场景,mysql中提供了一些聚合函数帮助快速完…...
JMeter 引入 JAR 包的几种方法
JMeter 支持加载外部 JAR 文件,用于: 扩展 JMeter 功能使用 Java 代码(BeanShell / JSR223)连接数据库 / 解析 Excel / 读取 CSV 📌 1. JMeter 引入 JAR 包的方式 ✅ 方式 1:将 JAR 放入 lib/ 或 lib/ext…...
一周一个Unity小游戏2D反弹球游戏 - 球板的发球
前言 本文将实现当游戏开始时球在球板上,且不具备物理性,在Windows平台上通过点击屏幕来球发射,安卓平台上当手指触摸到屏幕上时进行发球,并此时开始具备物理性。 发球逻辑 首先在球板上创建一个球的发射点,新建一个空的游戏物体,并命名为BallPoint,并将其作为SpringBoa…...
C++Primer学习(4.8位运算符)
4.8位运算符 位运算符作用于整数类型的运算对象,并把运算对象看成是二进制位的集合。位运算符提供检查和设置二进制位的功能,如17.2节(第640页)将要介绍的,一种名为bitset的标准库类型也可以表示任意大小的二进制位集合,所以位运算符同样能用…...
Linux | Ubuntu 与 Windows 双系统安装 / 高频故障 / UEFI 安全引导禁用
注:本文为 “buntu 与 Windows 双系统及高频故障解决” 相关文章合辑。 英文引文,机翻未校。 How to install Ubuntu 20.04 and dual boot alongside Windows 10 如何将 Ubuntu 20.04 和双启动与 Windows 10 一起安装 Dave’s RoboShack Published in…...
SpringSecurity 实现token 认证
配置类 Configuration EnableWebSecurity EnableGlobalMethodSecurity(prePostEnabledtrue) public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { Bean Override public AuthenticationManager authenticationManagerBean() throws Exception {return s…...
C语言基础要素(007):使用变量
定义变量的同时可以给定一个值,这叫初始化变量;未初始化的变量,其值在程序运行时是不确定的。变量在定义之后可以多次设置值,这称为赋值。定义使得变量从无到有,而赋值则改变已有变量的状态。变量只能被初始化一次&…...
6. Nginx 动静分离配置案例(附有详细说明+配图)
6. Nginx 动静分离配置案例(附有详细说明配图) 文章目录 6. Nginx 动静分离配置案例(附有详细说明配图)1. 动静分离概述说明2. 先使用传统方式实现,不使用 Nginx3. 使用上 Nginx 实现动静分离优化步骤4. 最后: 1. 动静分离概述说明 什么是动静分离&…...
Deepseek对ChatGPT的冲击?
从测试工程师的视角来看,DeepSeek对ChatGPT的冲击主要体现在**测试场景的垂直化需求与通用模型局限性之间的博弈**。以下从技术适配性、效率优化、风险控制及未来趋势四个维度展开分析: --- ### **一、技术适配性:垂直领域能力决定工具选择…...
在已安装二进制movit2的情况下使用自编译moveit2
在已安装二进制movit2的情况下,想使用自编译moveit2,只要引入一下自编译moveit2库的环境变量即可。主要是想搞明白这个过程发生了什么,也就是引入环境后有什么变化,以及如何对编译过程产生影响 一、setup.bash流程 所有资料上都…...
React 常见面试题及答案
记录面试过程 常见问题,如有错误,欢迎批评指正 1. 什么是虚拟DOM?为什么它提高了性能? 虚拟DOM是React创建的一个轻量级JavaScript对象,表示真实DOM的结构。当状态变化时,React会生成新的虚拟DOM…...
2025-03-01 学习记录--C/C++-C语言 整数类型对比
C语言 整数类型对比 类型位数范围(有符号)范围(无符号)格式化符号char8-128 到 1270 到 255%c 或 %hhdshort16-32,768 到 32,7670 到 65,535%hdint32-2,147,483,648 到 2,147,483,6470 到 4,294,967,295%dlong32 或 64-2,147,483…...
金融赋能绍兴纺织 民生银行助力外贸中小微企业“走出去”
在浙江绍兴,纺织业作为一张熠熠生辉的产业名片,承载着深厚的历史底蕴与蓬勃的发展活力。这里依傍长三角经济圈,交通网络纵横交错,将原材料产地与广阔市场紧密相连;产业集群高度成熟,上下游产业链完备&#…...
TCP的三握四挥
TCP协议 TCP( Transmission control protocol )即传输控制协议,是一种面向连接、可靠的数据传输协议,它是为了在不可靠的互联网上提供可靠的端到端字节流而专门设计的一个传输协议。 TCP的基本特点 面向连接:通信双方在进行数据传输之前&…...
Phpstudy中的MySQL无法正常启动或启动后自动暂停,以及sqlilab环境搭建出现的问题解决方法
【解决方法】 无法启动的原因是Phpstudy中的MySQL与本地的mysql重名,导致无法正常启动;所以这时我们就需要将本地的MySQL进行修改名称; 或者修改phpstudy中数据库的端口号,但是我觉得还是不是很好解决这种问题 最后一个方法&#…...
用C语言实现一个链表(四)
用C语言实现一个链表(四) 在上期内容中,我们探讨了实现一个双向循环链表的准备工作以及一些功能——创建新结点,初始化头结点,尾插数据,尾删数据,遍历的代码,上期内容留下了一个判断…...
【我的 PWN 学习手札】House of Kiwi
House of Kiwi 之前我们利用IO_FILE一般是通过劫持vtable来实现的, House of Kiwi虽然不是通过劫持vtable来实现,但实质上是劫持vtable指向的全局的_IO_file_jumps_表来实现的。注意:对于某些版本的glibc,_IO_file_jumps_并不可写…...
象棋笔记-实战记录
文章目录 实战没发现杀招2024-06-16 实战又漏杀了,尴尬,炮震五子,3路炮有下底的机会,本来是绝杀,没算明白,以为窝心马和象都能看住这个点。。。2024-07-06 实战有进炮串打的机会,又错过了&#…...
RabbitMQ系列(六)基本概念之Routing Key
在 RabbitMQ 中,Routing Key(路由键) 是用于将消息从交换机(Exchange)路由到指定队列(Queue)的关键参数。其核心作用是通过特定规则匹配绑定关系,确保消息被正确分发。以下是其核心机…...
企业微信里可以使用的企业内刊制作工具,FLBOOK
如何让员工及时了解公司动态、行业资讯、学习专业知识,并有效沉淀企业文化?一份高质量的企业内刊是不可或缺的。现在让我来教你该怎么制作企业内刊吧 1.登录与上传 访问FLBOOK官网,注册账号后上传排版好的文档 2.选择模板 FLBOOK提供了丰富的…...
JAVA笔记【一】
现实 (抽象) 类 (创建) 对象 特点: 1.面向对象 2.跨平台 3.安全性 4.多线程 java程序基本结构 1. java源代码文件实际是普通的文本文件,源代码文件必须是.java扩展名,且必须小写 2. …...
Mybatis做批量操作
前面我们将动态标签foreach的时候,做过批量操作,但是foreach只能处理记录数不多的批量操作,数据量大了后,先不说效率,能不能成功操作都是问题,所以这里讲一讲Mybatis正确的批量操作方法: 在获取…...
C/C++动静态库的制作与原理 -- 静态库,动态库,目标文件,ELF文件,动态链接,静态链接
目录 1. 什么是库 2. 静态库 2.1 静态库的制作 2.2 静态库的使用 3. 动态库 3.1 动态库的制作 3.2 动态库的使用 4. 目标文件 5. ELF文件 6. ELF从形成到加载轮廓 6.1 ELF形成可执行 7.2 ELF可执行文件加载 7. 理解链接和加载 7.1 静态链接 7.2 ELF加载与进程地…...
Java 并发编程之synchronized
一、前言 在并发编程中,多个线程访问同一个共享资源时,我们必须考虑如何维护数据的原子性。在JDK1.5之前,Java是依靠Synchronized关键字实现锁功能来做到这点的。Synchronized是JVM实现的一种内置锁,锁的获取和释放是由JVM隐式实…...
Windows 11【1001问】查看Windows 11 版本的18种方法
随着技术的飞速发展,操作系统作为连接硬件与软件的核心桥梁,其版本管理和更新变得尤为重要。对于用户而言,了解自己设备上运行的具体Windows 11版本不仅有助于优化系统性能,还能确保安全性和兼容性。然而,不同场景和需…...
python 元组tuple
元组:有序不可变列表 (相当于只读的list) 注意:元组里的普通元素不可以修改,但是元组里的list可以修改 index(元素) 查找某个元素,有的话返回下标,没有的话报错 count(元素) 统计某元素在元组中出现的次数 len(元组) 统计元组内的元素个数 #定义元组,元组支持嵌套 t1("…...
485 多路信号采集,校验干扰问题
在RS-485总线中同时采集多路信号时,若某一路出现CRC校验失败,通常由总线冲突、信号干扰或硬件设计缺陷引起。以下是具体影响分析和解决方案: 一、多路信号同时采集的影响 1. 总线冲突风险 现象:多路信号同时发送时,485总线(半双工)无法区分信号,导致数据叠加损坏。 后…...
【Eureka 缓存机制】
今天简单介绍一下Eureka server 的缓存机制吧✌️✌️✌️ 一、先来个小剧场:服务发现的"拖延症" 想象你是个外卖小哥(客户端),每次接单都要打电话问调度中心(Eureka Server):“现在…...
MySQL并发知识(面试高频)
mysql并发事务解决 不同隔离级别下,mysql解决并发事务的方式不同。主要由锁机制和MVCC(多版本并发控制)机制来解决并发事务问题。 1. mysql中的锁有哪些? 表级锁: 场景:表级锁适用于需要对整个表进行操作的情况,例如…...
Git GitHub基础
git是什么? Git是一个分布式版本控制系统,用于管理源代码的变更。它允许多个开发者在同一个项目上协作,同时跟踪每个修改的历史记录。 关键词: 分布式版本控制软件 软件 安装到我们电脑上的一个工具 版本控制 例如论文&…...
Rabbit MQ 高频面试题【刷题系列】
文章目录 一、公司生产环境用的什么消息中间件?二、Kafka、ActiveMQ、RabbitMQ、RocketMQ有什么优缺点?三、解耦、异步、削峰是什么?四、消息队列有什么缺点?五、RabbitMQ一般用在什么场景?六、简单说RabbitMQ有哪些角…...
Ubantu22.04系统docker部署Open WebUI+Ollama【教程】
Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 AI 平台,旨在完全离线运行。它支持各种 LLM 运行器,如 Ollama 和 OpenAI 兼容的 API,并内置了 RAG 推理引擎,使其成为强大的 AI 部署解决方案。 1.docker拉取镜像 &#x…...