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

17.时间处理

17.时间处理

    日期和时间是日常编程常用的功能之一。如果没有日期和时间,会导致很多功能无法实现,例如日志记录、定时任务、时间延迟等。Go标准库提供了操作日期和时间的方法。

在提到时间,还需要注意不同地区的时间会不一样,所以这里还需要考虑到不同时区不同历法等带来的影响。目前使用较多的两种时间GMT(格林威治时间:Greenwich Mean Time)和UTC(世界协调时间:Universal Time Coodinated)。一般默认时间为当前时区所对应的时间,如果对精度没有太大要求,时间精度到秒即可。

    在Go语言中,日期与时间可以分为三种表示方式时间戳结构体时间字符串时间,这三者之间的数据类型可以相互转换。

时间戳是以GMT时间1970年1月1日00时00分00秒为基准时间(北京时间1970年1月1日80时00分00秒)到当前时间为止,已经经过的秒数。

17.1 时间戳

    Go标准库提供了UnixUnixMicroUnixMilliUnixNano生成的秒级、微秒级、毫秒级和纳秒级时间戳。示例代码如下所示:

package mainimport ("fmt""time"
)func main() {// 获取当前时间now := time.Now()// 获取秒级时间戳t1 := now.Unix()// 获取微秒级时间戳t2 := now.UnixMicro()// 获取毫秒级时间戳t3 := now.UnixMilli()// 获取纳秒级时间戳t4 := now.UnixNano()fmt.Printf("时间戳秒级: %v 微秒级:%+v 毫秒级:%+v 纳秒级:%+v\n", t1, t2, t3, t4)
}

    代码运行结果如下所示:

时间戳秒级: 1735398611 微秒级:1735398611946770 毫秒级:1735398611946 纳秒级:1735398611946770100

17.2 结构体时间

    结构体Time是Go语言对时间的具体表现,它将时间以结构体Time表示,并由结构体实例化对象调用结构体方法或结构体成员获取时间信息。示例如下所示:

package mainimport ("fmt""time"
)func main() {// 获取当前时间now := time.Now()fmt.Printf("当前时间-年:%+v\n", now.Year())fmt.Printf("当前时间-月:%+v\n", now.Month())fmt.Printf("当前时间-天:%+v\n", now.Day())fmt.Printf("当前时间-时:%+v\n", now.Hour())fmt.Printf("当前时间-分:%+v\n", now.Minute())fmt.Printf("当前时间-秒:%+v\n", now.Second())fmt.Printf("当前时间-星期:%+v\n", now.Weekday())
}

    代码运行结果如下所示:

当前时间-年:2024
当前时间-月:December
当前时间-天:28
当前时间-时:23
当前时间-分:22
当前时间-秒:32
当前时间-星期:Saturday

17.3 字符串时间

    在Go语言中并没有采用%Y%m%d %H:%M:%S这样的格式化字符串。而是采用了这种时间2006-01-02 03:04:05 -0700 pm1月2日下午3点4分5秒06年西7区,转换为北京时间为2006-01-02 15:04:05 +0800

上面的时间字符串比较难记,可以尝试记住这个字符串010203040506pm-07,也可以使用从1数到7来方便记住。

    也可以查看官方文档(https://golang.google.cn/pkg/time/),如下所示:

Year: "2006" "06"
Month: "Jan" "January" "01" "1"
Day of the week: "Mon" "Monday"
Day of the month: "2" "_2" "02"
Day of the year: "__2" "002"
Hour: "15" "3" "03" (PM or AM)
Minute: "4" "04"
Second: "5" "05"
AM/PM mark: "PM""-0700"     ±hhmm
"-07:00"    ±hh:mm
"-07"       ±hh
"-070000"   ±hhmmss
"-07:00:00" ±hh:mm:ss"Z0700"      Z or ±hhmm
"Z07:00"     Z or ±hh:mm
"Z07"        Z or ±hh
"Z070000"    Z or ±hhmmss
"Z07:00:00"  Z or ±hh:mm:ss

    示例代码如下所示:

package mainimport ("fmt""time"
)func main() {// 获取当前时间now := time.Now()// 带时区t1 := now.Format("2006-01-02 15:04:05 +0800")fmt.Printf("带时区时间(24小时制): %v\n", t1)// 不带时区t2 := now.Format("2006-01-02 15:04:05 ")fmt.Printf("不 带 时  区  时 间: %v\n", t2)// 12小时制t3 := now.Format("2006-01-02 03:04:05 pm +0800 ")fmt.Printf("带时区时间(12小时制): %v\n", t3)//显示格式 为2006/1/2t4 := now.Format("2006/01/02 15:04 +0800")fmt.Printf("带时区时间(24小时制): %v\n", t4)// 显示时/分/秒t5 := now.Format("15/04/05 +0800")fmt.Printf("带时区时间(24小时制): %v\n", t5)// 显示毫秒t6 := now.Format("2006-01-02 15:04:05.000 +0800")fmt.Printf("带时区时间(24小时制): %v\n", t6)
}

    代码运行结果如下所示:

带时区时间(24小时制): 2024-12-28 23:47:46 +0800
不 带 时  区  时 间: 2024-12-28 23:47:46 
带时区时间(12小时制): 2024-12-28 11:47:46 pm +0800 
带时区时间(24小时制): 2024/12/28 23:47 +0800
带时区时间(24小时制): 23/47/46 +0800
带时区时间(24小时制): 2024-12-28 23:47:46.816 +0800

17.4 时间解析

    这里的时间解析是指将字符串的时间按指定格式解析为对应的时间格式,示例代码如下所示:

package mainimport ("fmt""time"
)func main() {// 定义字符串格式时间timeStr := "2024-12-28 23:55:58 +0800"// 时间格式字符串formatStr := "2006-01-02 15:04:05 -0700"if t, err := time.Parse(formatStr, timeStr); err != nil {fmt.Printf("带时区解析时间字符串:%+v出错 %v\n", timeStr, err)} else {fmt.Printf("带时区解析时间字符串:%+v成功,返回时间: %v\n", timeStr, t)}// 不带时区// 如果没有时区,则表示UTC零时区时间// 在没有时区时,这样转换可能会导致时间出现较大误差timeStrNoZone := "2024-12-28 23:55:58"formatStrNoZone := "2006-01-02 15:04:05"if t, err := time.Parse(formatStrNoZone, timeStrNoZone); err != nil {fmt.Printf("不带时区解析时间字符串:%+v出错 %v\n", timeStrNoZone, err)} else {fmt.Printf("不带时区解析时间字符串:%+v成功,返回时间: %v\n", timeStrNoZone, t)}// 针对以上可能出现的时间误差,我们采取另一种办法if tz, err := time.LoadLocation("Asia/Shanghai"); err != nil {fmt.Printf("设置时区出错: %v\n", err)} else {if t, err := time.ParseInLocation(formatStrNoZone, timeStrNoZone, tz); err != nil {fmt.Printf("不带时区,使用指定时区解析时间字符串:%+v出错 %v\n", timeStrNoZone, err)} else {fmt.Printf("不带时区,使用指定时区解析时间字符串:%+v成功,返回时间: %v\n", timeStrNoZone, t)}}
}

    代码运行结果如下所示:

带时区解析时间字符串:2024-12-28 23:55:58 +0800成功,返回时间: 2024-12-28 23:55:58 +0800 CST
不带时区解析时间字符串:2024-12-28 23:55:58成功,返回时间: 2024-12-28 23:55:58 +0000 UTC
不带时区,使用指定时区解析时间字符串:2024-12-28 23:55:58成功,返回时间: 2024-12-28 23:55:58 +0800 CST

17.5 时间类型相互转换

    在Go语言中,类型可以分为时间戳结构体时间字符串时间等,这三者之间可以通过特定方法实现相互转换,示例代码如下所示:

package mainimport ("fmt""time"
)func main() {// 定义字符串格式timeFormat := "2006-01-02 15:04:05 -0700"// 定义时间戳var timestamp int64 = 1735561940// 将时间戳转换为结构体Timetm := time.Unix(timestamp, 0)fmt.Printf("时间戳转换为结构体时间:%+v,数据类型为:%[1]T\n", tm)// 将时间戳转换为时间字符串格式化tmStr := time.Unix(timestamp, 0).Format(timeFormat)fmt.Printf("时间戳转换为字符串格式化时间:%+v,数据类型为:%[1]T\n", tmStr)// 结构体时间curTime := time.Now()// 转换为时间戳fmt.Printf("结构体时间转换为时间戳:%+v,数据类型为:%[1]T\n", curTime.Unix())// 时间戳转换为字符串fmt.Printf("结构体时间转换为字符串时间:%+v,数据类型为:%[1]T\n", curTime.Format(timeFormat))// 字符串时间strTime := "2024-12-30 12:44:12 +0800"// 将字符串时间转换为结构体时间if timeStruct, err := time.Parse(timeFormat, strTime); err != nil {fmt.Printf("字符串时间:%+v转换为结构体时间出错: %v\n", strTime, err)} else {fmt.Printf("字符串时间:%+v转换为结构体时间成功:%+v,数据类型为%[2]T\n", strTime, timeStruct)}timeFormat2 := "2006-01-02 15:04:05"strTime2 := "2024-12-30 20:54:08"if timeStruct2, err := time.ParseInLocation(timeFormat2, strTime2, time.Local); err != nil {fmt.Printf("字符串时间:%+v转换为结构体时间出错: %v\n", strTime2, err)} else {fmt.Printf("字符串时间:%+v转换为结构体时间成功:%+v,数据类型为%[2]T\n", strTime2, timeStruct2)// 将字符串时间转换为时间戳fmt.Printf("字符串时间%+v转换为时间戳%+v,数据格式为%[2]T", strTime2, timeStruct2.Unix())}
}

    代码运行结果如下所示:

时间戳转换为结构体时间:2024-12-30 20:32:20 +0800 CST,数据类型为:time.Time
时间戳转换为字符串格式化时间:2024-12-30 20:32:20 +0800,数据类型为:string
结构体时间转换为时间戳:1735563632,数据类型为:int64
结构体时间转换为字符串时间:2024-12-30 21:00:32 +0800,数据类型为:string
字符串时间:2024-12-30 12:44:12 +0800转换为结构体时间成功:2024-12-30 12:44:12 +0800 CST,数据类型为time.Time
字符串时间:2024-12-30 20:54:08转换为结构体时间成功:2024-12-30 20:54:08 +0800 CST,数据类型为time.Time
字符串时间2024-12-30 20:54:08转换为时间戳1735563248,数据格式为int64

    根据运行结果,可以得出结论时间戳、结构体时间、字符串时间三者相互转换进,需要以结构体时间做为中转,通过结构体时间,可以获取更多的时间属性。

17.6 时间运算

    时间运算是对两个时间或时间增量进行加减运算和对比等操作。如下所示:

  • 计算时间差是两个结构体时间实例对象进行加减计算,可以计算出两个时间相差的时、分、秒等等
  • 时间增量计算是将某个时间增加或减少一段时间,例如增加或减少多少年、月、日、时、分、秒等等
  • 时间信息对比,主要是判断两个时间是否相同或判断两个时间的先后顺序等

    根据以下说明可以总结如下:

时间差/时间增量 = 时间1 - 时间2
时间= 时间 +/- 时间增量

注意事项:两个时间直接相加是错误,没有这个概念

    示例代码如下所示:

package mainimport ("fmt""time"
)func main() {tz := time.LocaltimeFormat := "2006-01-02 15:04:05"st1 := "2024-12-30 20:55:12"st2 := "2024-12-30 21:25:42"t1, _ := time.ParseInLocation(timeFormat, st1, tz)t2, _ := time.ParseInLocation(timeFormat, st2, tz)fmt.Printf("解析后的时间分别为:t1 -  t2: %+v - %+v\n", t1, t2)// 计算时间差diff := t2.Sub(t1)fmt.Printf("%+v 和 %+v的时间差为: %v,数据类型为:%[3]T,相差分钟数为%+v,秒为:%+v\n", t2, t2, diff, diff.Minutes(), diff.Seconds())// 计算时间增量// 默认为 3 纳秒// time.Duration(3) 相当于强制类型转换,即将 3 强制转换为 Duration,而Duration 为int64/*type Duration int64const (Nanosecond  Duration = 1Microsecond          = 1000 * NanosecondMillisecond          = 1000 * MicrosecondSecond               = 1000 * MillisecondMinute               = 60 * SecondHour                 = 60 * Minute)*/ns3 := time.Duration(3)s3 := time.Duration(3 * time.Second)h3 := time.Duration(3 * time.Hour)fmt.Printf("ns3: %v s3: %+v h3: %+v\n", ns3, s3, h3)// 按时间增量t3 := t1.Add(s3)t4 := t1.Add(-s3)fmt.Printf("t1: %+v t3: %+v t4: %+v\n", t1, t3, t4)// 按日期增量t5 := t1.AddDate(1, 1, 1)fmt.Printf("t1: %v按日期增量之后的结果t5: %v\n", t1, t5)// 对比时间fmt.Printf("t2 %v 在时间 %v 之后吗?%v\n", t2, t1, t2.After(t1))fmt.Printf("t2 %v 在时间 %v 之前吗?%v\n", t2, t1, t2.Before(t1))fmt.Printf("t2 %v 和 %v 相等吗?%v\n", t2, t1, t2.Equal(t1))
}

    代码运行结果如下所示:

解析后的时间分别为:t1 -  t2: 2024-12-30 20:55:12 +0800 CST - 2024-12-30 21:25:42 +0800 CST
2024-12-30 21:25:42 +0800 CST 和 2024-12-30 21:25:42 +0800 CST的时间差为: 30m30s,数据类型为:time.Duration,相差分钟数为30.5,秒为:1830
ns3: 3ns s3: 3s h3: 3h0m0s
t1: 2024-12-30 20:55:12 +0800 CST t3: 2024-12-30 20:55:15 +0800 CST t4: 2024-12-30 20:55:09 +0800 CST
t1: 2024-12-30 20:55:12 +0800 CST按日期增量之后的结果t5: 2026-01-31 20:55:12 +0800 CST
t2 2024-12-30 21:25:42 +0800 CST 在时间 2024-12-30 20:55:12 +0800 CST 之后吗?true
t2 2024-12-30 21:25:42 +0800 CST 在时间 2024-12-30 20:55:12 +0800 CST 之前吗?false
t2 2024-12-30 21:25:42 +0800 CST 和 2024-12-30 20:55:12 +0800 CST 相等吗?false

17.7 时间延迟

    时间延迟是程序在执行过程中进入睡眠状态暂停执行,在睡眠状态结束之后,再继续执行。在Go使用time.Sleep方法实现,可以实现级别的延时功能。示例代码如下所示:

package mainimport ("fmt""time"
)func main() {timeFormat := "2006-01-02 15:04:05 -0700"fmt.Printf("当前时间: %v\n", time.Now().Format(timeFormat))// 延迟时间sleepTime := time.Duration(1 * time.Second)time.Sleep(sleepTime)fmt.Printf("当前时间: %v\n", time.Now().Format(timeFormat))sleepTime = time.Duration(1 * time.Minute)time.Sleep(sleepTime)fmt.Printf("当前时间: %v\n", time.Now().Format(timeFormat))
}

    代码运行结果如下所示:

当前时间: 2024-12-30 22:41:14 +0800
当前时间: 2024-12-30 22:41:15 +0800
当前时间: 2024-12-30 22:42:15 +0800

本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注:

相关文章:

17.时间处理

17.时间处理日期和时间是日常编程常用的功能之一。如果没有日期和时间,会导致很多功能无法实现,例如日志记录、定时任务、时间延迟等。Go标准库提供了操作日期和时间的方法。在提到时间,还需要注意不同地区的时间会不一样,所以这里还需要考虑到不同时区、不同历法等带来的影…...

[MCP][02]快速入门MCP开发

快速入门MCP Server和MCP Client 开发,以及Client集成LLM前言 很多文档和博客都只介绍如何开发MCP Server,然后集成到VS Code或者Cursor等程序,很少涉及如何开发MCP Host和MCP Client。如果你想要在自己的服务中集成完整的MCP功能,光看这些是远远不够的。所以本文及后续的M…...

numpy入门

numpy 基本属性 import numpy as np arr = np.arange(15).reshape((3,5)) print(arr) # [[ 0 1 2 3 4],[ 5 6 7 8 9],[10 11 12 13 14]] print(type(arr)) # 类型 <class numpy.ndarray> print(arr.shape) # 形状元组 (3, 5) print(arr.ndim) # 维度 2 print(arr…...

【simpleFOC】一个电机如何模拟不同旋钮的手感反馈?

原文链接:https://mp.weixin.qq.com/s?__biz=MzU1NjEwMTY0Mw==&mid=2247597033&idx=2&sn=e92f8f1dec8b363aa209788354f8fa64&chksm=fad1130bfafd0b9af53b0f110e354d8772f6c5a0d98735690d1c0c75d0c3c75785ea1041ea1a&scene=27概述simpleFOC可以实现对各种…...

第一周作业2

我叫陈俊杰,今年19岁,目前是一名计算机相关专业的学生。很高兴能在博客园与大家分享我的学习与生活经历。 兴趣爱好 我热爱运动,尤其是羽毛球、篮球、游泳和攀岩。这些运动不仅让我保持了健康的体魄,也培养了我的团队协作能力和坚持不懈的精神。此外,我也喜欢探索新技术,…...

第一次课堂作业

大家好!我是一名数据科学与大数据技术专业的大三学生。如果用一句话形容现在的自己,那就是 “正处在专业技能积累的爬坡期,一边为过去的基础不扎实查漏补缺,一边对未来的技术方向满怀期待”。这篇博客想和大家聊聊我的故事、我的技能现状,以及我为接下来的学习和未来发展制…...

[高可用/负载均衡] Ribbon LoadBalancer: 开源的客户端式负载均衡框架

0 序言某项目上,原先为自建的数据库集群提供了负载均衡IP服务器(简称: ELB IP Server),客户端的数据库请求URL都统一走ELB IP。但随着业务量的增长,识别到一个严峻的现实:其一,考虑到未来的业务增长情况,云厂商提供的 ELB IP Server 云服务的入网带宽必将完全无法满足本项…...

梦话周记

忘记是哪天了。 傍晚,暗蓝色的天空,水雾,朦胧的光晕。 此时的天空与以往理解的深邃可谓是一点关系都没有,它的深邃不再来自于天空,而是来自于大海。什么地方是深蓝色的,湿润的,广阔的?海洋。 其实气体与液体有很多相似之处,它们都有浮力,都是流体。我们是不是也生活在…...

【电机控制】无刷电机结构阐述---磁极数、槽数

一、磁极数P与槽数N 1.磁极数P 定义:转子上磁极的数量,既转子上磁钢的数量,磁钢均匀的排列在转子上磁铁必定是NS极成对使用,所以极数必然是偶数。 2.槽数N 定义:定子铁芯的槽数量,既定子上的电磁铁极数量,每一个槽上都饶有一组线圈,如上图有12个槽,所以是12N电机由于无…...

金刚怒目是我哭

金刚怒目是我哭是你们太不善良,还是我太不正常马喽马基米退圈了。我下载的its my cry没了,my mujuca也只有前三集 这个可以说是我的入坑作 确实有点刻意 反正不是日常向 即使现在看来也是无可厚非的 但还是爆了 我应该说戾气很重吗 杂食党,,,理中客,和稀泥 说不出话 雨...

nginx使用默认端口80作为服务端口

背景:http默认端口是80,配置nignx.conf,希望服务url直接输入ip不用输入端口 给server配置80以及加default_server ,老是报错,后面发现是因为 include /etc/nginx/sites-enabled/*; 这个配置的server段占用了80 解决办法:把默认配置/etc/nginx/sites-available/default 里…...

机器学习和推荐算法顶级会议和期刊

在机器学习(ML)与推荐系统(Recommender Systems)领域,CIKM 和 TKDE 是信息检索、数据挖掘及数据库领域的重要学术载体,二者分别以会议(CCF A 类)和期刊(CCF A 类)形式存在,覆盖 “推荐算法”“用户行为分析”“知识图谱与推荐融合” 等核心方向,是该领域研究者发表…...

java使用mysql

用jdbc操作mysqlhttps://www.runoob.com/java/java-mysql-connect.htmlmysql8之前和之后的连接配置有差异。实际使用时,一般还需要个功能,就是连接池。这个springboot自带了,是hikari。hikari初始化的时候,也需要配置mysql的连接参数,所以一般都是在这里设置的。https://w…...

2025年医疗行业API安全最佳实践与深度案例分析:从理论到全面落地

2025年医疗行业API安全最佳实践与深度案例分析:从理论到全面落地医疗API安全是保障患者隐私和医疗数据安全的关键环节。医疗机构、信息化服务商和安全厂商需遵循GB/T《数据接口安全风险监测方法》要求,建立覆盖"发现-监测-处置"的全生命周期防护体系。以金华市中心…...

2026 NOI 做题记录(二)

推荐阅读:D、N、W、Y、Z、AB、AC、AD、AE、AFContest Link \(\text{By DaiRuiChen007}\)A. [ARC194E] Swap 0^X and 1^Y (3) Problem Link 删掉所有的串 \(0^x\) 以及 \(1^y\),每次操作不会跨过里面的连续段,因此剩下的串必定相同。 取出每个连续段,任意两个 \(0\) 连续段在…...

lc1027-最长等差数列

难度:中等(后期)题目描述给定一个数组,计算最长等差数列的长度示例 输入:nums = [3,6,9,12] 输出:4 解释:3 6 9 12输入:nums = [9,4,7,2,10] 输出:3 解释:4 7 10输入:nums = [20,1,15,3,10,5,8] 输出:4 解释:20 15 10 5题解思路:DPf(i,j): 以 i 结尾,公差为 j 结…...

13

#include <math.h>int main() { int n; scanf("%d", &n); while (n--) {int l, r;scanf("%d %d", &l, &r); int y_max = (int)sqrt(r);//算l的平方根,然后向上取整并强制转换为整数, y >= lint y_min = (int)ceil(sqrt(l));int c…...

np.zeros函数

np.zeros 是 NumPy 库中的一个非常常用的函数,它的作用是创建一个指定形状和数据类型的新数组,并用 0 来填充所有元素。 np.zeros 的基本用法 函数的完整签名是 numpy.zeros(shape, dtype=float, order=C)。shape:你想要创建的数组的形状。可以是一个整数(用于一维数组)或…...

Langchain之让LLM拥有记忆

langchain的Memory 如果AI有记忆,我们就不需要手动维护一个储存消息历史的列表 让LLM拥有记忆的方法有很多,我更喜欢使用的方法是以下方案,其优点是灵活度比较高 from langchain.memory import ConversationBufferMemory from langchain_core.prompts import ChatPromptTemp…...

25.9.14

(今天的)...

.net PublishSingleFile 打包程序提取

.net PublishSingleFile 打包程序提取 目录.net PublishSingleFile 打包程序提取提取 Bundle 的常用方法分界线工具SingleFileExtractor (低版本)SelfContainedExtractor (.NET 5+)定位offset <PublishSingleFile>true</PublishSingleFile>该部分内容为AI…...

实用指南:Java类加载机制

实用指南:Java类加载机制pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size…...

C 语言注释

C 语言有两种注释, 即 // 和 /* ... */. /* */ 被称为 C 风格的注释, 是 ANSI C 的注释. // 被称为 C++ 风格的注释, 是 C99 新增的注释, 只有支持 C99 和 C11 的编译器才能识别这种注释. 该风格的注释被广泛应用于 C++ 和 Java. 注释在预编译阶段会被替换为一个空格. 代码示例…...

扫描线

前题引入 扫描线是用来求给你n个矩阵求他们围起来的总面积。 问题分析 可能有一些弱智的小朋友说直接把所有的矩阵的面积加起来再减掉重复的不就可以啦。 如果,你这么想请问(1<=n<=1e5)请问你该如何应对,所以我们就引入了个新算法:扫描线(废话) 先在我们先画一张图:…...

C语言中的查找与排序算法整理

查找与排序算法整理 1 查找算法 1.1 顺序查找 1.1.1 算法原理 顺序查找又称线性查找,是一种基本的查找算法,其原理是:从头开始遍历:从数据集的起始位置开始,逐个检查每个元素。 比较目标:对于每个遍历到的元素,将其与目标元素进行比较。 查找成功:如果当前元素等于目标…...

k8s练习

k8s练习 1. 简述Kubernetes是什么? Kubernetes是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。 2. Kubernetes的组成有哪些? Kubernetes主要由以下几个组件组成:kube-apiserver:提供REST API服务,作为系统的控制入口。 kube-controller-manager:执…...

css-2

css正常布局流浮动弹性盒子a {//行内盒子,比如a如果给了flex布局,则可以直接设置宽高display: flex }淘宝京东多行伸缩布局 瀑布流百度图片综合案例...

AtCoder Beginner Contest 423 ABCDEF 题目解析

A - Scary Fee 题意 你的存折中有 \(X\) 元,从存折中取钱需要花手续费。 取钱必须以 \(1000\) 元为单位,并且每取 \(1000\) 元就需要额外支付 \(C\) 元的手续费。 问你最多可以取出多少钱? 思路 我们可以把 \(C\) 元手续费当作单次取钱的一部分,也就是每当我们想取 \(1000\…...

numpy中的shape属性

.shape 不是一个函数,而是numpy的一个属性(attribute),用于获取数组维度信息。它返回一个元组(tuple),元组中的每个元素代表对应维度的大小。 import numpy as np# 1D 数组 (向量) arr1d = np.array([1, 2, 3, 4, 5]) print(f"数组内容: {arr1d}") print(f&qu…...

mac 查看fat32磁盘

1.首先安装社区维护的ntfs工具。 brew tap gromgit/homebrew-fuse #### brew install ntfs-3g2.然后就是mount啦 这里的/dev/diskXsY 就是自己看啦,看到下面是没有externatl(外部拓展这一项的,或者使用磁盘工具,如果插上了u盘也是可以看到的)然后使用命令 mkdir /Volumes/…...

使用Smart-Doc为Java项目生成gRPC API文档

本文详细介绍了如何在Java微服务项目中利用Smart-Doc工具自动生成gRPC API文档,包括配置步骤、优势分析以及实际操作指南,帮助开发者高效管理API文档。Smart-Doc:在Java项目中生成gRPC API文档 在现代Java微服务中,gRPC通过其高效的二进制协议和多语言支持简化了服务间通信…...

数字时钟用的什么字体

下载字体 字体 DS-Digital放置字体 引入字体:<style scoped> /* 定义字体 */ @font-face {font-family: DS-Digital; /* 自定义字体名称 *//* 引入不同格式的字体文件,确保兼容性 */src: url(@/assets/fonts/DS-DIGI.TTF) format(truetype),url(@/assets/fonts/DS-DIG…...

Python数据分析零基础完整课程大纲(详细版)【202509第1版】 - 指南

Python数据分析零基础完整课程大纲(详细版)【202509第1版】 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier Ne…...

详细介绍:uni-app 根据用户不同身份显示不同的tabBar

详细介绍:uni-app 根据用户不同身份显示不同的tabBarpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monos…...

VSTO QQ群 61840693 解散通知【新群193203228 】

由于各种原因,成立16年的VSTO交流群于近日停用,损失粉丝两千人。 感谢这么多年热爱我的粉丝,如果还要跟我学习VBA,请加新群193203228...

kettle从入门到精通 第107课 ETL之kettle json_input 一个点号引发的血案

场景:在一个kettle交流群内,有一个小伙伴求助:大致意思是json input的输入参数的key中存在点号,凡是带点号的key都无法正确获取。 今天一起来分析下使用多种方式来解决这个问题,希望后续有人遇到此类问题时可以秒杀它,而不是花费N根头发!!! 1、json数据构造{"id&…...

【2024-2025第二学期】助教工作学期总结

一、助教工作的具体职责和任务: 作为《人工智能导论》课程助教,我的主要职责包括协助课程老师完成教学支持工作,确保课程顺利运行。具体任务包括:前期负责对接课程老师对比赛进行组织,比如数字中国创新大赛的各赛道报名、统计第十六届视觉艺术设计赛省赛的报名、上课后课程…...

Clion 实现多个 main 函数执行互不影响

安装插件 C/C++ single File Execution。如果 Clion 中安装不上,可以在官网安装:安装成功后,源文件右键,会提示:点击后,Clion 的右下角会提示:reload 这个文件夹:选择刚刚 add 的源文件,即想要执行的源文件:在 main.c 和 Hello.c 两个源文件都包含 main() 函数时也可…...

腾讯终于对Claude code下手了?我拿它跑完一个真实项目,结果有点意外…

前几天看腾讯也发布和开源了他们的Claude code,名字是Codebuddy code。 就下载下来试了试效果(说实话,一开始是冲着它能免费用GPT-4o、Claude 3.5这些顶级模型去的)。 整体来看效果还不错,对于刚开始发布来说,我认为已经可以初步当做生产力工具了。 目前国内版本可以使用的…...

快速利用AI读论文

使用Gemini 2.5 Pro,每天可以有五次请求 提示词如下 **Role:** You are a seasoned researcher in the field of artificial intelligence and computer vision. You excel at interpreting cutting-edge academic papers in a clear and structured manner and can disting…...

第一周预习作业(AI)

你好,很高兴认识你。...

HTTP协议核心概念全解析 - 实践

HTTP协议核心概念全解析 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font…...

Django过时了吗?从ASGI到AI时代的思考

前言 本文本来只是 DjangoStarter v3.2.1 新版本发布博客里的一段思考,不过越写越长,干脆拆分成一篇独立的文章得了。😄“Django 过时了吗?” 这是一个几乎每天都能在论坛、Reddit 或知乎上看到的问题。 但仔细想想,这个问题的背后并不是“Django 变烂了”,而是技术趋势…...

日常练习一部分

这一次练习不使用后端,只进行对使用vue3的前端练习,包括两种不同的跳转方式: 我的部分代码大致如下: DashboardView.vue: <template><div><h1>仪表盘视图</h1><p>这是您的个人仪表盘,显示各种统计信息。</p><div class="sta…...

世界史

约200000万年前,天在地的下方,但是地与天无法展示与观测,山与河都一并随着天去了遥远的歌声,日月的光辉敲响了【命运】的洪钟,于此,在钟声中,产生了最初的生命,在日月的抚慰下,生命活了,死了,分裂了,一二三四五,哦,原来【数据删除】在这里,这真是太美妙了。 最初…...

罗技M275鼠标滚轮断轴维修:建模+3D打印修复全过程

本文记录了一次鼠标滚轮损坏的维修过程。经拆解发现,滚轮与编码器连接的中心轴从根部断裂。由于原装配件价格接近鼠标本体价值,作者决定采用 3D 打印方式自制替换件。初步尝试使用开源模型失败后,使用游标卡尺对原件进行尺寸测量,并重新建模。在打印过程中,分别测试了纵向…...

Unity:网络编程

Socket 服务端至少要两个socket:一个负责接收客户端连接请求,但不负责与客户端通信;为每个连接成功的客户端,在服务端创建一个对应的socket负责与客户端通信。 客户端的socket一个就行:要指定连接的服务端的IP和端口。 通讯过程:申请一个socket 绑定IP和端口 监听 服务端…...

【比赛记录】2025CSP-S模拟赛45

A B C D Sum Rank10 - 75 20 105 16/24A. 染色(color) 考虑奇偶性染色,于是就满足了所有奇质数的限制。但是由于有 \(2\) 的存在,所以需要每四个染一个色。考虑 \(1,3,6,8\) 每两个数之差都是质数,因此 \(n\ge8\) 时答案不可能小于 \(4\)。\(n<8\) 时打表打出来即可。Cod…...

PWN手的成长之路-01

首先启动题目环境,并下载题目的附件。远程nc连接一下,发现程序就是把用户输入再次输出,并加了几句话。之后从附件下手,用file查看文件的详细信息。发现是一个linux的可执行程序。使用checksec查看文件的安全属性。P.S.详细解释查看后的信息含义: Arch: 程序架构信息。判断…...

SpringCloud全解:核心组件与实战案例 - 教程

SpringCloud全解:核心组件与实战案例 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !im…...