时间戳

FFmpeg从入门到出家(FLV文件结构解析)

我是研究僧i 提交于 2020-02-26 12:29:24
FLV(FLASH VIDEO),是一种常用的文件封装格式,目前国内外大部分视频分享网站都是采用的这种格式。其标准定义为《Adobe Flash Video File Format Specification》。RTMP协议也是基于FLV视频格式的。 FLV的文件格式在该规范中已阐述清楚,本章节不再重复描述,而是结合下面的示例具体阐述如何分析FLV文件。 图3. FLV文件结构示例1 图4. FLV文件结构示例2 FLV文件的分析工具有很多,这里给大家推荐FLV Parser这个小软件,通过它可以很容易的看到文件的组成结构。 3.1 文件结构 从整个文件上看,FLV是由Header和File Body组成,如下图所示: 图5. FLV文件总体结构 1.FLV Header - 长度为9,其结构的标准定义参见标准定义见E.2 The FLV header; FLV File Body - 由一连串的PreviousTagSize + Tag构成。previousTagSize是4个字节的数据,表示前一个tag的size。标准定义参见E.3 The FLV File Body。 以图3. FLV文件结构示例1为例分析整体结构: 1.位置0x00000000 - 0x00000008, 共9个字节,为FLV Header,其中: ◦0x00000000 - 0x00000002 :

如何设计一个安全的对外接口?

南楼画角 提交于 2020-02-26 04:52:46
前言 最近有个项目需要对外提供一个接口,提供公网域名进行访问,而且接口和交易订单有关,所以安全性很重要;这里整理了一下常用的一些安全措施以及具体如何去实现。 安全措施 个人觉得安全措施大体来看主要在两个方面,一方面就是如何保证数据在传输过程中的安全性,另一个方面是数据已经到达服务器端,服务器端如何识别数据,如何不被攻击;下面具体看看都有哪些安全措施。 1.数据加密 我们知道数据在传输过程中是很容易被抓包的,如果直接传输比如通过http协议,那么用户传输的数据可以被任何人获取;所以必须对数据加密,常见的做法对关键字段加密比如用户密码直接通过md5加密;现在主流的做法是使用https协议,在http和tcp之间添加一层加密层(SSL层),这一层负责数据的加密和解密; 2.数据加签 数据加签就是由发送者产生一段无法伪造的一段数字串,来保证数据在传输过程中不被篡改;你可能会问数据如果已经通过https加密了,还有必要进行加签吗?数据在传输过程中经过加密,理论上就算被抓包,也无法对数据进行篡改;但是我们要知道加密的部分其实只是在外网,现在很多服务在内网中都需要经过很多服务跳转,所以这里的加签可以防止内网中数据被篡改; 3.时间戳机制 数据是很容易被抓包的,但是经过如上的加密,加签处理,就算拿到数据也不能看到真实的数据;但是有不法者不关心真实的数据,而是直接拿到抓取的数据包进行恶意请求

NTP服务器

和自甴很熟 提交于 2020-02-26 03:04:35
1、 Device A发送一个NTP报文给Device B,该报文带有它离开Device A时的时间戳,该时间戳为10:00:00am(T1)。 2、 当此NTP报文到达Device B时,Device B加上自己的时间戳,该时间戳为11:00:01am(T2)。 3、 当此NTP报文离开Device B时,Device B再加上自己的时间戳,该时间戳为11:00:02am(T3)。 4、 当Device A接收到该响应报文时,Device A的本地时间为10:00:03am(T4)。 5、 至此,Device A已经拥有足够的信息来计算两个重要的参数: 6、 NTP报文的往返时延Delay=(T4-T1)-(T3-T2)=2秒。 7、 Device A相对Device B的时间差offset=((T2-T1)+(T3-T4))/2=1小时 安装软件: [root@wing_ntp ~]# rpm -qa | grep ntp ntp-4.2.2p1-9.el5_4.1 配置NTP服务器(假定本地服务器地址为:192.168.1.103) NTP server的主配置文件:/etc/ntp.conf ntp.conf文件部分选项说明 a. restrict管理权限控制 格式: restrict [需权限控制的IP] mask [netmask_IP] [parameter] 参数:

linux文件管理03 and 04--2week

风流意气都作罢 提交于 2020-02-26 02:54:42
1.linux系统中一切皆文件: 文件系统及目录结构: /boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录  /bin:所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序  /sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序  /lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)  /lib64:专用于x86_64系统上的辅助共享库文件存放位置  /etc:配置文件目录  /home/USERNAME:普通用户家目录  /root:管理员的家目录  /media:便携式移动设备挂载点 /mnt:临时文件系统挂载点  /dev:设备文件及特殊文件存储位置  /tmp:临时文件存储位置 # 2.lsblk-列出系统的硬盘 du -sh 查看文件大小 pwd-显示当前目录 --echo '- - -' > /sys/class/scsi_host/host0(host2)/scan --虚拟机增加硬盘命令 --/proc /sys -进程目录 目录颜色:蓝色-目录,yellow-硬件目录,粉色-套接字,棕色-管道文件,l绿色-可执行文件,红色-打包或压缩文件 --定义颜色文件路径:/etc/DIR_COLORS --除了斜杠和NUL

分布式系统ID生成方案

久未见 提交于 2020-02-26 02:17:49
自增ID 不错,可以限度抑制ID的大小。但需要有一个中心化的节点作为解决原子性问题。可以选用Redis,MySQL,Zookeeper。成本有点高。 UUID 分布式,而且唯一!缺点是生产的ID太长。 Twitter的SnowFlake算法 该算法可以 生产分布式的自增ID 。切生产的ID只有8字节,64位。其数据结构如下: 1位 ,不用。二进制中最高位为1的都是负数,但是我们生成的id一般都使用整数,所以这个最高位固定是0 41位 ,用来记录时间戳(毫秒)。 41位可以表示 2 41 − 1 个数字, 如果只用来表示正整数(计算机中正数包含0),可以表示的数值范围是:0 至 2 41 − 1 ,减1是因为可表示的数值范围是从0开始算的,而不是1。 也就是说41位可以表示 2 41 − 1 个毫秒的值,转化成单位年则是 ( 2 41 − 1 ) / ( 1000 ∗ 60 ∗ 60 ∗ 24 ∗ 365 ) = 69 年 10位 ,用来记录工作机器id。 可以部署在 2 10 = 1024 个节点,包括 5位datacenterId 和 5位workerId 5位(bit) 可以表示的最大正整数是 2 5 − 1 = 31 ,即可以用0、1、2、3、....31这32个数字,来表示不同的datecenterId或workerId 12位 ,序列号,用来记录同毫秒内产生的不同id。

深入Kafka - 日志存储

感情迁移 提交于 2020-02-26 02:03:59
Kafka中的消息是以主题为基本单位进行归类的,各个主题在逻辑上相互独立。每个主题又可以分为一个或多个分区。 不考虑多副本的情况,每个分区对应一个日志(Log),每个日志包含多个日志分段(LogSegment),对应到物理存储,可以理解为Log对应日志一个目录,每个LogSegment对应一个日志文件和两个索引文件,以及可能的其他可能文件(比如事务索引文件)。 举例说明,假设有名为topic-log的主题,此主题有4个分区,那么在实际物理存储上表现如下图。 1. __consumer_offsets- * 如图中绿色标记部分,用来保存客户端消费消息之后提交的消费位移,以便在机器重启或者宕机恢复之后正确得知客户端消费消息的位置。(不是本章重点,不再赘述) 2. Log目录 图中蓝色标记部分,可以理解为每个分区对应一个目录。本例中topic-log主题包含四个分区,所以有"topic-log-0",“topic-log-1”,“topic-log-2”,"topic-log-3"这4 个文件夹。 3. 检查点文件 与Log目录平级的,存在4个检查点文件,用于日志的compaction。 cleaner-offset-checkpoint文件是 清理检查点文件 ,记录每个主题的每个分区中已经清理的偏移量,如下图(下文介绍日志压缩时会详细阐述) 4. 日志分段

iOS中时间与时间戳的相互转化

眉间皱痕 提交于 2020-02-26 00:48:38
//获取当前系统时间的时间戳 #pragma mark - 获取当前时间的 时间戳 +(NSInteger)getNowTimestamp { NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateStyle:NSDateFormatterMediumStyle]; [formatter setTimeStyle:NSDateFormatterShortStyle];   //设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制 [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"]; //设置时区,这个对于时间的处理有时很重要 NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"]; [formatter setTimeZone:timeZone]; //现在时间 NSDate *datenow = [NSDate date]; NSLog(@"设备当前的时间:%@",[formatter stringFromDate:datenow]); //时间转时间戳的方法: NSInteger timeSp = [[NSNumber

时间戳与时间之间的相互转化

蓝咒 提交于 2020-02-26 00:48:19
//获取当前系统时间的时间戳 #pragma mark - 获取当前时间的 时间戳 +(NSInteger)getNowTimestamp{ NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateStyle:NSDateFormatterMediumStyle]; [formatter setTimeStyle:NSDateFormatterShortStyle]; [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"]; // ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制 //设置时区,这个对于时间的处理有时很重要 NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"]; [formatter setTimeZone:timeZone]; NSDate *datenow = [NSDate date];//现在时间 NSLog(@"设备当前的时间:%@",[formatter stringFromDate:datenow]); //时间转时间戳的方法: NSInteger timeSp = [[NSNumber

时间戳转换

我与影子孤独终老i 提交于 2020-02-26 00:47:38
TimeTool.m + ( void ) convert Time:( double )time success:( void (^)( id date))success { NSDateFormatter * formatter = [[ NSDateFormatter alloc ] init ]; formatter. timeZone = [ NSTimeZone timeZoneWithName : @"beijing" ]; [formatter setDateStyle : NSDateFormatterMediumStyle ]; [formatter setTimeStyle : NSDateFormatterShortStyle ]; [formatter setDateFormat : @"yyyy 年 MM 月 dd 日 HH:mm" ]; NSDate * date = [ NSDate dateWithTimeIntervalSince1970 :time]; NSString * dateString = [formatter stringFromDate :date]; success(dateString); } 来源: https://www.cnblogs.com/TotoroLee/p/5092275.html