Linux的时间函数
ucos中有systick这个系统时间滴答,那linux中有没有这种系统时间滴答呢?有,jiffies,但是用户空间不可以使用。那么在linux中除了使用timer定时器进行定时,可以通过时间滴答的方式来进行粗略的计时吗?下面介绍一下几个linux中使用的时间函数。
一、clock_gettime()
#include <time.h>int clock_gettime(clockid_t clk_id, struct timespec *tp);
-
clk_id
:指定要获取的时钟类型。 -
tp
:指向timespec
结构体的指针,用于存储当前时间。
第一个参数是一个时钟类型标识符:
时钟类型 | 描述 | 是否受系统时间更改 |
---|---|---|
CLOCK_REALTIME | 实时时钟(系统当前时间) | 会 |
CLOCK_MONOTONIC | 单调时钟(启动后递增) | 不会 |
其中CLOCK_MONOTONIC表示:
从某个固定时间点(通常是系统启动时间)开始递增的时间,不受系统时间修改的影响。
它的主要特性是:
-
单调递增,不会因为用户或NTP调整系统时间而倒退或跳变。
-
非常适合做 计时、超时判断、事件间隔测量。
第二个参数:
struct timespec {time_t tv_sec; // 秒long tv_nsec; // 纳秒(0 ~ 999999999)
};
示例:超时判断,毫秒级
#include <stdio.h>
#include <time.h>
#include <unistd.h>long get_current_time_ms() {struct timespec ts;clock_gettime(CLOCK_MONOTONIC, &ts); // 不受系统时间调整影响return ts.tv_sec * 1000 + ts.tv_nsec / 1000000;
}int main() {long timeout_ms = 3000; // 设置超时时间为3000mslong start_time = get_current_time_ms();printf("开始等待...\n");while (1) {long now = get_current_time_ms();if ((now - start_time) >= timeout_ms) {printf("超时发生:已等待 %ld ms\n", now - start_time);break;}// 模拟处理usleep(100 * 1000); // 睡眠100ms}return 0;
}
二、gettimeofday
#include <sys/time.h>int gettimeofday(struct timeval *tv, struct timezone *tz);
-
tv
: 用于存储当前时间(秒+微秒) -
tz
: 通常设置为NULL
(时区参数已弃用)
struct timeval {time_t tv_sec; // 秒(从1970-01-01 00:00:00 UTC 到现在的秒数)suseconds_t tv_usec; // 微秒(0 ~ 999999)
};
这个函数与clock_gettime函数的CLOCK_REALTIME类似,不过gettimeofday的精度是微秒,clock_gettime的精度是纳秒。
适用于:时间戳记录、事件间隔计算、日志时间打点
三、Time
#include <time.h>time_t time(time_t *t);
-
返回自 1970年1月1日 00:00:00 UTC 起经过的 秒数。
-
参数
t
:-
如果不为
NULL
,会把结果存入*t
中。 -
如果是
NULL
,就只返回当前时间戳。
-
示例:
#include <stdio.h>
#include <time.h>int main() {time_t now = time(NULL);printf("当前时间:%s", ctime(&now)); // ctime 会返回格式化字符串return 0;
}当前时间:Thu Apr 25 10:40:31 2025
四、mktime(UTC0)
mktime()
是一个非常实用的 C 标准库函数,用于将一个 结构化时间(struct tm
)转换为时间戳(time_t
),即自 1970-01-01 00:00:00 UTC 起的秒数。UTC0
#include <time.h>time_t mktime(struct tm *timeptr);
-
参数:
timeptr
是一个指向struct tm
的指针,表示你构造的本地时间。 -
返回值:转换后的时间戳(
time_t
类型)。-
如果无法转换(比如时间不合法),返回
-1
。
-
struct tm {int tm_sec; // 秒 (0-60)int tm_min; // 分 (0-59)int tm_hour; // 时 (0-23)int tm_mday; // 日 (1-31)int tm_mon; // 月 (0-11, 注意 0 是 1 月)int tm_year; // 年份从 1900 开始计算 (即2025年是125)int tm_wday; // 星期几 (0-6, 0是星期日) —— mktime 会帮你填充int tm_yday; // 年内第几天 (0-365) —— mktime 会填充int tm_isdst; // 夏令时标志,0表示不开启,>0表示启用,<0表示自动判断
};
示例:
#include <stdio.h>
#include <time.h>int main() {struct tm t = {0};t.tm_year = 2025 - 1900; // 年份从1900算起t.tm_mon = 3; // 4月(注意:从0算起)t.tm_mday = 25;t.tm_hour = 10;t.tm_min = 30;t.tm_sec = 0;time_t ts = mktime(&t);if (ts == -1) {printf("时间转换失败\n");} else {printf("时间戳:%ld\n", ts);printf("本地时间字符串:%s", ctime(&ts));}return 0;
}
-
构造一个未来/过去的时间戳。
-
与
difftime()
配合使用计算时间差。 -
构建“闹钟时间”、“超时时间”等目标时间点。
四、timegm
time_t timegm(struct tm *tm);
此函数与mktime的区别就是,传给mktime的时间会根据系统所在的地区减去对应的时区值。比如传2025.4.25.14.00返回值实际是2025.4.25.6.00的UTC时间戳。
而timegm的返回值是传入什么就返回什么,是对应的。比如传2025.4.25.14.00返回值实际就是2025.4.25.14.00的UTC时间戳。
-
mktime()
会把它当作本地时间转换为时间戳,会加入系统时区偏移; -
timegm()
会严格按照它就是 UTC 时间,不做时区偏移处理。
五、localtime(受当前系统时区影响或者说本身处理时区)
主要用于将 UTC 时间戳(time_t
)转换成本地时间(struct tm
结构体)。受时区影响
#include <time.h>struct tm *localtime(const time_t *timep);
-
timep
:一个指向time_t
类型的指针(即一个 UTC 时间戳)。 -
返回值:返回一个指向
struct tm
的指针,表示 本地时间结构。
struct tm {int tm_sec; // 秒 [0,60](允许闰秒)int tm_min; // 分钟 [0,59]int tm_hour; // 小时 [0,23]int tm_mday; // 一个月中的日子 [1,31]int tm_mon; // 月份 [0,11],0 表示1月int tm_year; // 自1900年以来的年数(如2025年为125)int tm_wday; // 一周中的星期 [0,6](0 = 周日)int tm_yday; // 一年中的日子 [0,365]int tm_isdst; // 夏令时标志(>0 表示夏令时,0 表示非夏令时,<0 表示未知)
};
函数 | 输出的是… |
---|---|
gmtime() | UTC 时间 |
localtime() | 本地时间(受系统时区影响) |
六、gmtime(UTC0,不受时区影响)
struct tm *gmtime(const time_t *timep);
返回一个 struct tm *
类型的指针,指向的结构体内容表示该时间戳的 UTC 时间(非本地时间)。
七、ctime(受时区影响)
将 时间戳(time_t
)转换为可读字符串
#include <time.h>char *ctime(const time_t *timep);
-
接收一个
time_t
类型的时间戳(通常由time()
得到) -
返回一个静态字符串,表示本地时间的可读格式
ctime()
返回的字符串格式如下(固定 26 字节,包括换行符和终止符):
"Wed Apr 24 15:56:29 2025\n\0"
-
返回的是一个静态字符数组的指针,不需要也不应该
free()
。 -
非线程安全,因为内部使用的是共享的静态缓冲区(使用
ctime_r()
代替可实现线程安全)。 -
总是根据本地时区来显示时间(和
localtime()
一致)。
如果你在上海(或者其他属于东八区的地方),ctime()
会自动使用当前系统设定的本地时区,也就是说:
假设你传入一个 time_t
值对应的是:
UTC 时间:2025-04-24 08:00:00
如果系统的本地时区是 Asia/Shanghai(UTC+8),那么:
printf("%s", ctime(&t));
输出会是:
Thu Apr 24 16:00:00 2025
自动加了 8 小时,因为本地时区就是比 UTC 快 8 小时。
八、asctime(不受时区影响)
将 struct tm
时间结构转成可读字符串的函数。
char *asctime(const struct tm *tm);
"Thu Apr 24 17:23:45 2025\n"
内容固定格式,长度固定为 26 字节(包括结尾的 \0
)。
-
asctime()
返回的字符串是静态分配的(每次调用都会覆盖上一次结果) -
线程不安全(多线程用
asctime_r()
) -
格式无法自定义,适合简单显示,不适合精确格式控制(如 ISO 8601)
相关文章:
Linux的时间函数
ucos中有systick这个系统时间滴答,那linux中有没有这种系统时间滴答呢?有,jiffies,但是用户空间不可以使用。那么在linux中除了使用timer定时器进行定时,可以通过时间滴答的方式来进行粗略的计时吗?下面介绍…...
JCE cannot authenticate the provider BC
本地使用了加密类、并且运行正常、 用hutool做RSA加密时候出现这个问题的! import cn.hutool.core.codec.Base64; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; import cn.hutool.crypto.SmUtil; import…...
4.1 融合架构设计:LLM与Agent的协同工作模型
大型语言模型(Large Language Models, LLMs)与智能代理(Agent)的融合架构已成为人工智能领域推动企业智能化的核心技术。这种协同工作模型利用LLM的语言理解、推理和生成能力,为Agent提供强大的知识支持,而…...
【Spec2MP:项目管理之项目风险管理】
在半导体行业竞争白热化的今天,一颗芯片从设计到量产的旅程犹如跨越重重险峰。据行业数据显示,30%的芯片项目因未及时识别风险导致延期交付,而55%的成本超支源于前期风险评估不足。这背后折射出一个核心命题:如何在复杂的技术攻关…...
【Axure教程】表格嵌套卡片
今天教大家制作表格嵌套卡片的原型模版,可以点击加号或减号展开或收起对应部门下的员工卡片信息。这个表格是用中继器制作的,所以使用也很方便,在中继器表格里维护数据,即可自动生成交互效果,具体效果可以打开下方原型…...
无人机动力核心测评:CKESC STONE 180A-M 电调
一、核心技术优势:全场景适配的智能控制方案 作为南昌长空科技的工业级产品,南昌长空的STONE 180A-M 电调以高可靠启动算法为核心,支持 6-14S 锂电输入,具备逆风启动稳定性与剧变油门抗丢相能力,实测油门响应时间 300…...
【回眸】Aurix TC397 IST 以太网 UDP 相关开发
前言 关于移植IST功能至 Infineon TC397上主要涉及到UDP发送报文及接收。IST是安全诊断相关的工作 Nvidia IST介绍 Orin系列芯片会提供一种机制来检测由系统内测(IST)所产生的永久的故障,IST 应该在 Orin-x 功能安全系统中使用期间被启动。…...
C语言别踩白块附源码
复制即可使用 #define _CRT_SECURE_NO_WARNINGS//一定要放在第一行 #include<stdio.h>//引用输入输出头文件,每一次都需要引用这个文件 #include<math.h> #include<string.h> #include<ctype.h> #include<stdlib.h> #include<io…...
centos7里memcached 的安装使用
memcahced 的概述 Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。 Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应…...
深入理解指针(3)
1.指针的使⽤和传址调⽤ 1.strlen的模拟实现 库函数strlen的功能是求字符串⻓度,统计的是字符串中\0 之前的字符的个数。函数原型如下: 参数str接收⼀个字符串的起始地址,然后开始统计字符串中 \0 之前的字符个数,最终返回⻓度。…...
第十届电气、电子和计算机工程研究国际学术研讨会(ISAEECE 2025)
重要信息 官网:www.isaeece.com(点击了解参会投稿等) 时间:2025年6月20-22日 地点:中国 ▪ 西安 征稿主题 电气、电子和计算机工程(Electrical, Electronics and Computer Engineering, EECE)…...
RabbitMQ 中的队列声明
目录 一、为什么要声明队列?二、声明队列的基本语法参数说明 三、声明队列的示例代码示例 1:声明一个普通的队列示例 2:声明一个持久化队列示例 3:声明一个带 TTL 的队列 四、注意事项五、总结 在 RabbitMQ 中,队列是消…...
unity Animation学习,精准控制模型动画播放
unity 控制模型动画播放,Animation学习。 此脚本挂载在带有动画的模型上。 using System.Collections; using System.Collections.Generic; using UnityEngine;public class AnimationCtrl : MonoBehaviour {void Start(){PlayAnimation();//开始的时候调用播放动…...
大模型面经 | 春招、秋招算法面试常考八股文附答案(六)
大家好,我是皮先生!! 今天给大家分享一些关于大模型面试常见的面试题,希望对大家的面试有所帮助。 往期回顾: 大模型面经 | 春招、秋招算法面试常考八股文附答案(RAG专题一) 大模型面经 | 春招、秋招算法面试常考八股文附答案(RAG专题二) 大模型面经 | 春招、秋招算法…...
【深度学习】#9 现代循环神经网络
主要参考学习资料: 《动手学深度学习》阿斯顿张 等 著 【动手学深度学习 PyTorch版】哔哩哔哩跟李牧学AI 概述 门控循环单元和长短期记忆网络利用门控机制实现对序列输入的选择性记忆。深度循环神经网络堆叠多个循环神经网络层以实现更强的表达能力和特征提取能力。…...
《CBOW 词向量转化实战:让自然语言处理 “读懂” 文字背后的含义》
文章目录 前言一、自然语言模型统计语言模型存在的问题总结:这两个问题的本质,第一个是"容量问题":模型记忆力有限;第二个是"理解力问题":模型缺乏抽象能力。 二、词向量转换1.onehot编码编码过程…...
网络变更:APIC 节点替换
Draft 一、同版本硬件更换 1. 查看 APIC 状态 System > Controllers > (any APIC) > Cluster APIC1> acidiag avread // APIC 参数 2. 下线故障设备 Actions > Decommission 3. 物理移除故障设备,连接目标 APIC 4. 根据第一步中的配置参数配置目…...
Java在excel中导出动态曲线图DEMO
1、环境 JDK8 POI 5.2.3 Springboot2.7 2、DEMO pom <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version></dependency><dependency><groupId>commons…...
Python爬虫爬取图片并存储到MongoDB(注意:仅尝试存储一条空的示例数据到MongoDB,验证MongoDB的联通性)
以下是一个使用Python爬取图片并存储到MongoDB的示例实现,包含详细步骤说明: import requests from bs4 import BeautifulSoup from pymongo import MongoClient from datetime import datetime import os import re# 配置信息 mongoIP mongodb://root…...
Qt —— 在Linux下试用QWebEngingView出现的Js错误问题解决(附上四种解决办法)
错误提示:js: A parser-blocking, cross site (i.e. different eTLD+1) script, https:xxxx, is invoked via document.write. The network request for this script MAY be blocked by the browser in this or a future page load due to poor network connectivity. If bloc…...
240424 leetcode exercises II
240424 leetcode exercises II jarringslee 文章目录 240424 leetcode exercises II[148. 排序链表](https://leetcode.cn/problems/sort-list/)🔁分治 & 归并排序法1. 找中点并断开2. 合并两个有序链表3. 主函数:递归拆分与合并 [24. 两两交换链表…...
STM32实现2小时延时的最佳方法探讨
在嵌入式系统开发中,特别是使用STM32这类微控制器时,实现精确的长时间延时是一项常见但具有挑战性的任务。延时的方法选择不仅影响系统的性能和功耗,还关系到系统的稳定性和可靠性。本文将探讨在STM32上实现2小时延时的几种方法,并…...
G3学习笔记
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 准备工作 import torch import numpy as np import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torc…...
初识Redis · 主从复制(上)
目录 前言: 主从模式 模拟主从模式 连接信息 slaveof命令 nagle算法 Nagle算法的工作原理: 具体实现: 优点: 缺点: 使用场景: 拓扑结构 前言: 主从复制这里算得上是一个大头了&…...
欧拉计划 Project Euler55(利克瑞尔数)题解
欧拉计划 Project Euler 55 题解 题干思路code 题干 思路 直接暴力找即可,若使用其他语言要注意溢出的问题,这里我使用的手写大数加法 code // 249 #include <bits/stdc.h>using namespace std;using ll long long;string add(const string&am…...
关于nginx,负载均衡是什么?它能给我们的业务带来什么?怎么去配置它?
User 关于nginx,我还想知道,负载均衡是什么?它能为我的业务带来什么?怎么去配置它? Assistant 负载均衡是 Nginx 另一个非常强大的功能,也是构建高可用、高性能应用的关键技术之一。我们来详细了解一下。 …...
【项目管理】进度网络图 笔记
项目管理-相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 项目管理知识域 知识点: (项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域) 对应&…...
【C++QT】Buttons 按钮控件详解
文章目录 一、QPushButton 基础按钮控件二、QToolButton 轻量工具按钮控件三、QRadioButton 互斥选择控件四、QCheckBox 状态选择控件五、QCommandLinkButton 引导式按钮控件六、QDialogButtonBox 对话框按钮布局控件七、实践与选型建议八、总结如果这篇文章对你有所帮助&#…...
威雅利电子|业界领先的高隔离度用于5G基站的吸收式SPDT开关“NT1819“
业界领先的高隔离度 用于5G基站的吸收式SPDT开关"NT1819" 为了实现智能社会,已经启动了5G服务。这样,高速、低延迟、大容量的数据通信成为可能,也给我们的生活和工业发展带来了巨大的变化。 在5G基站有很多天线,每个天…...
【DNS】BIND 9的配置
该文档围绕BIND 9的配置与区域文件展开,介绍了BIND 9配置文件及区域文件的相关知识,以及权威名称服务器、解析器的相关内容,还阐述了负载均衡和区域文件的详细知识,具体如下: 基础配置文件: named.conf&am…...
高可靠性厚铜板制造的关键设备与工艺投入
随着科技的不断发展,电子设备越来越普及,对电路板的需求也越来越大。厚铜板电路板作为一种高性能、高可靠性的电路板,受到了广泛的关注和应用。那么,作为一家厚铜板电路板供应商,如何投入线路板生产呢?本文…...
m365是什么,和o365的区别
M365(Microsoft 365)是微软推出的基于云的办公套件,包含多种生产力工具,旨在帮助个人和企业提高工作效率。它包括经典的办公软件,如Word、Excel、PowerPoint、Outlook等,还提供协作和云存储服务,…...
【Pandas】pandas DataFrame dot
Pandas2.2 DataFrame Binary operator functions 方法描述DataFrame.add(other)用于执行 DataFrame 与另一个对象(如 DataFrame、Series 或标量)的逐元素加法操作DataFrame.add(other[, axis, level, fill_value])用于执行 DataFrame 与另一个对象&…...
技术服务业-首套运营商网络路由5G SA测试专网在深光搭建完成并对外提供服务
深光为了更好的服务蜂窝无线技术及运营商测试认证相关业务,搭建了技术服务业少有的5G测试专网,可独立灵活配置、完整端到端5G(含RedCap、LAN)的网络架构。 通过走真正运营商网络路由的方式,使终端设备的测试和运营商网…...
GrassRouter 小草MULE多5G多链路聚合通信路由设备在应急场景的聚合效率测试报告及解决方案
在应急通信场景中,快速、稳定、高效的通信链路是保障救援工作顺利开展的关键。MULE(Multi-Link Unified Link Enhancement)多链路聚合路由通信设备作为一种新型的通信技术解决方案,通过聚合多条通信链路(如4G/5G、卫星…...
解释器模式:自定义语言解析与执行的设计模式
解释器模式:自定义语言解析与执行的设计模式 一、模式核心:定义语言文法并实现解释器处理句子 在软件开发中,当需要处理特定领域的语言(如数学表达式、正则表达式、自定义配置语言)时,可以通过解释器模式…...
第十二章 Python语言-大数据分析PySpark(终)
目录 一. PySpark前言介绍 二.基础准备 三.数据输入 四.数据计算 1.数据计算-map方法 2.数据计算-flatMap算子 3.数据计算-reduceByKey方法 4.数据计算-filter方法 5.数据计算-distinct方法 6.数据计算-sortBy方法 五.数据输出 1.输出Python对象 (1&am…...
Oracle数据库巡检脚本
1.查询实例信息 SELECT INST_ID, INSTANCE_NAME, TO_CHAR(STARTUP_TIME, YYYY-MM-DD HH24:MI:SS) AS STARTUP_TIME FROM GV$INSTANCE ORDER BY INST_ID; 2.查看是否归档 archive log list 3.查看数据库参数 SELECT NAME , TYPE , VALUE FROM V$PARAMETER ORDER BY NAME; 4.…...
示例:Spring JDBC编程式事务
以下是一个完整的 Spring JDBC 编程式事务示例,包含批量插入、事务管理、XML 配置和单元测试: 1. 项目依赖(pom.xml) <dependencies><!-- Spring JDBC --><dependency><groupId>org.springframework<…...
Happens-Before 原则
Happens-Before 规则 Happens-Before是JMM的核心概念之一,是一种可见性模型,保障多线程环境下前一个操作的结果相对于后续操作是可见的。 程序顺序性,同一线程中前面代码的操作happens-before后续的任意操作。volatile变量规则,…...
怎样通过互联网访问内网 SVN (版本管理工具)提交代码更新?
你有没有遇到过这种情况:在公司或者家里搭了个 SVN 服务器(用来存代码的),但出门在外想提交代码时,发现连不上? 这是因为 SVN 通常跑在内网,外网直接访问不了。 这时候就需要 “内网穿透” ——…...
Verilog 语法 (一)
Verilog 是硬件描述语言,在编译下载到 FPGA 之后, FPGA 会生成电路,所以 Verilog 全部是并行处理与运行的;C 语言是软件语言,编译下载到单片机 /CPU 之后,还是软件指令,而不会根据你的代…...
针对 Spring Boot 应用中常见的查询场景 (例如:分页查询、关联查询、聚合查询) 如何进行 SQL 优化?
通用优化原则(适用于所有场景): 索引是基础: 确保 WHERE、JOIN、ORDER BY、GROUP BY 涉及的关键列都有合适的索引(单列或联合索引)。避免 SELECT *: 只查询业务需要的列,减少数据传输量和内存消耗。覆盖索…...
shadcn/radix-ui的tooltip高度定制arrow位置
尝试了半天,后来发现,不支持。。。。。就是不支持 那箭头只能居中 改side和align都没用,下面有在线实例 https://codesandbox.io/p/sandbox/radix-ui-slider-forked-zgn7hj?file%2Fsrc%2FApp.tsx%3A69%2C21 但是呢, 第一如果…...
ROS-真机向虚拟机器人映射
问题描述 ROS里的虚拟机械臂可以实现和真实机械臂的位置同步,真实机械臂如何动,ROS里的虚拟机械臂就如何动 效果 步骤 确保库卡机械臂端安装有EthernetKRL辅助软件和KUKAVARPROXY 6.1.101(它是一个 TCP/IP 服务器 ,可通过网络实…...
ap无法上线问题定位(交换机发包没有剥掉pvid tag)
一中学,新开的40台appoe交换机核心交换机旁挂ac出口路由的组网,反馈ap无法上线,让协助解决。 组网如下: 排查过程: 检查ac的配置,没有发现问题 发现配置没有问题,vlan1000配置子接口ÿ…...
Linux基础
03.Linux基础 了解VMware备份的两种方式 了解Linux系统文件系统 掌握Linux基础命令 备份操作系统 为什么要备份系统? 数据安全:防止因硬件故障、软件错误等原因导致的数据丢失。 系统恢复:快速恢复系统至正常状态,减少停机时…...
python函数与模块
目录 一:函数 1.无参函数 2.带参数函数 2.函数中变量中的作用域 4.内建函数 二:模块与包 1.模块 (1)模块定义 (2)模块导入 2.包 (1)包的使用 (2)_…...
线上助农产品商城小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的线上助农产品商城小程序源码,旨在为农产品销售搭建一个高效、便捷的线上平台,助力乡村振兴。 一、技术架构 该小程序源码采用了ThinkPHP作为后端框架,FastAdmin作为快速开发框架,UniApp作为跨…...
个人博客后台管理开发日志
技术栈:Vue3 Ts node.js mySQL pinia axios 3月14日 一、数据表梳理 用户(user) ID名字邮箱密码 头像 地址 创建 时间 总览有本地文件、博客文章、摄影图库、随笔随记,这些板块也有对应的分类,我们要把这些分类…...