时间戳

常用模块

≯℡__Kan透↙ 提交于 2020-03-25 05:48:39
collections模块 在内置数据类型(dict、list、set、tuple)的基础上, collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。 1.namedtuple: 生成可以使用名字来访问元素内容的tuple 2.deque: 双端队列,可以快速的从另外一侧追加和推出对象 3.Counter: 计数器,主要用来计数 4.OrderedDict: 有序字典 5.defaultdict: 带有默认值的字典 OrderedDict 使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。 如果要保持Key的顺序,可以用 OrderedDict : from collections import OrderedDict d = dict([('a', 1), ('b', 2), ('c', 3)]) d # dict的Key是无序的 {'a': 1, 'c': 3, 'b': 2} od = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) od # OrderedDict的Key是有序的 OrderedDict([('a', 1), ('b', 2), ('c', 3)]) defaultdict from

day19模块1

狂风中的少年 提交于 2020-03-25 05:24:46
http://www.cnblogs.com/Eva-J/articles/7228075.html#_label10 collections模块: 在内置数据类型(dict、list、set、tuple)的基础上, collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。 1.namedtuple:生成可以使用名字来访问元素内容的tuple。 #namedtuple('名称', [属性list]): from collections import namedtuple Point=namedtuple('point',['x','y']) p=Point(1,2) print(p.x,p.y) namedtuple 2.deque: 双端队列,可以快速的从另外一侧追加和推出对象。 d eque 除了实现list的 append() 和 pop() 外,还支持 appendleft() 和 popleft() ,这样就可以非常高效地往头部添加或删除元素。 from collections import deque d1=deque([1,2,'c',5]) d1.append('afg') d1.appendleft(9) print(d1) #结果deque([9, 1, 2, 'c

欲善事先利器——系统篇

被刻印的时光 ゝ 提交于 2020-03-24 11:59:47
工欲善其事,必先利其器,好鞋踢好球是非常合乎逻辑的事情。 ——《长江七号》 我们的目标是提高编程技术能力。或是面向兴趣编程(FOM, favorite oriented programming),或是面向钱途编程(MOM, money oritented programming),抑或真的是面向”对象“编程(SOM, spouse oriented programming),所有这些,都需要你提高自己的技术能力,才能如火纯青,游刃有余。 那么今天,我却不讲如何提高技术能力。 我讲什么?讲效率。工欲善其事必先利其器。今天不藏私,将我珍藏多年的百宝箱一一推荐给大家。这里面都是一些小工具,可以提高我们平时编码和工作的效率。有其则事半功倍矣。 使孤成大业者,必此人也。 —— 曹操 Chocolatey 链接: https://chocolatey.org/ 如何像 Linux 一样在 windows 下安装软件? 试想一下,每次重装系统,都要安装一堆常用的小软件,不胜其烦。这个 win 下的包管理工具 ,可以帮助到你。你可能听过 Mac 的 Homebrew,deb 的 apt-get,centos 的 yum。Chocolatey 就是 win 上的 Homebrew。你可以通过一条命令来安装大部分软件。也有人调侃,win 上我们也应该像程序员一样安装软件! 下面是我用的一些软件

欲善事先利器——系统篇

和自甴很熟 提交于 2020-03-24 11:59:40
工欲善其事,必先利其器,好鞋踢好球是非常合乎逻辑的事情。 ——《长江七号》 我们的目标是提高编程技术能力。或是面向兴趣编程(FOM, favorite oriented programming),或是面向钱途编程(MOM, money oritented programming),抑或真的是面向”对象“编程(SOM, spouse oriented programming),所有这些,都需要你提高自己的技术能力,才能如火纯青,游刃有余。 那么今天,我却不讲如何提高技术能力。 我讲什么?讲效率。工欲善其事必先利其器。今天不藏私,将我珍藏多年的百宝箱一一推荐给大家。这里面都是一些小工具,可以提高我们平时编码和工作的效率。有其则事半功倍矣。 使孤成大业者,必此人也。 —— 曹操 Chocolatey 链接: https://chocolatey.org/ 如何像 Linux 一样在 windows 下安装软件? 试想一下,每次重装系统,都要安装一堆常用的小软件,不胜其烦。这个 win 下的包管理工具 ,可以帮助到你。你可能听过 Mac 的 Homebrew,deb 的 apt-get,centos 的 yum。Chocolatey 就是 win 上的 Homebrew。你可以通过一条命令来安装大部分软件。也有人调侃,win 上我们也应该像程序员一样安装软件! 下面是我用的一些软件

java接口签名(Signature)实现方案

感情迁移 提交于 2020-03-24 11:00:01
预祝大家国庆节快乐,赶快迎接美丽而快乐的假期吧!!! 前言   在为第三方系统提供接口的时候,肯定要考虑接口数据的安全问题,比如数据是否被篡改,数据是否已经过时,数据是否可以重复提交等问题。其中我认为最终要的还是数据是否被篡改。在此分享一下我的关于接口签名的实践方案。 如果这种方案不是很好理解,请参考 另一篇 更简单暴力的方案 java接口签名(Signature)实现方案续 。 签名流程 签名规则   1、线下分配 appid 和appsecret,针对不同的调用方分配不同的appid和appsecret   2、加入 timestamp (时间戳),10分钟内数据有效   3、加入流水号 nonce (防止重复提交), 至少为 10 位。 针对查询接口,流水号只用于日志落地,便于后期日志核查。 针对办理类接口需校验流水号在有效期内的唯一性,以避免重复请求。    4、加入 signature ,所有数据的签名信息。   以上红色字段放在请求头中。 签名的生成    signature 字段生成规则如下。   数据部分    Path: 按照path中的顺序将所有value进行拼接    Query :按照key字典序排序,将所有key=value进行拼接    Form :按照key字典序排序,将所有key=value进行拼接    Body :     Json:

golang sqlx与db.v3性能对比

不打扰是莪最后的温柔 提交于 2020-03-24 10:58:43
3 月,跳不动了?>>> 最近跟一个大佬交流的时候提到 SQL 查询的问题。 他表达的思路是不用 ORM ,用最原始的数据库驱动去查询数据。这样做的收益有两个方面 清晰表达 SQL 语义,方便后期优化。特别在报表、数据分析等复杂 SQL 撒上。 减少无用封装,提升程序性能。 我起初没有什么感触,毕竟 ORM 对程序员友好的,用了我会更轻松,但我并不了解具体差异。于是自己做了一个简单的测试,分别使用 sqlx 和 db.v3 (可能很多人没有听说过这个 DB 包,完全是个人喜好)做了性能测试。 准备地区表 jz_places ,只有3600条数据 CREATE TABLE `jz_places` ( `placeid` mediumint(8) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `sx` mediumint(8) unsigned NOT NULL DEFAULT '0', `order` mediumint(8) unsigned NOT NULL DEFAULT '0', `updatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `createtime` timestamp NOT NULL

通过RTMP play分析FLV格式详解

五迷三道 提交于 2020-03-23 12:17:07
最近做了一个rtmp中转服务程序,通过实践,熟悉rtmp play和push中各类格式,这里总结一下。 程序github地址: https://github.com/runner365/rtmp_relay rtmp play接收报文分析 第一帧收到的报文: 1) 0x46 4c 56: 可参考文后:参考一 字符FLV头 2) 0x01 05 Version TypeFlagsReserved TypeFlagsAudio TypeFlagsReserved TypeFlagsVideo 这个解析的时候,一般不用管 3)0x00 00 00 09 FLV header offset: 也就是从开头9字节后,才是FLV真正的报文头。 4)0x00 00 00 00 这个是第1帧的PreviousTagSize0(前帧长度),因为是第一帧,所以肯定是0; 5)0x08 可参考文后:参考二,参考三 帧开头第一字节:0x08表示音频,0x09表示视频 6)0x00 00 04 帧payload长度:因为音频第一帧是ASC,所以只有4字节。 7) 0x 00 00 00 00 timestamp,时间戳 8) 0x 00 00 00 streamid,流ID 9) 0x AF 00 13 90 音频payload: 0xaf00开头的后面是asc flag,

HBase架构原理

坚强是说给别人听的谎言 提交于 2020-03-23 07:12:09
一、什么是HBase HBase是一个高可靠、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价的PC Server上搭建大规模结构化存储集群。 HBase是Google BigTable的开源实现,与Google BigTable利用GFS作为其文件存储系统类似,HBase利用Hadoop HDFS作为其文件存储系统;    Google运行MapReduce来处理BigTable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据; Google BigTable利用Chubby作为协同服务,HBase利用Zookeeper作为协同服务。 二、HBase设计模型 HBase中的每一张表就是所谓的BigTable。BigTable会存储一系列的行记录,行记录有三个基本类型的定义: RowKey 是行在BigTable中的唯一标识。 TimeStamp: 是每一次数据操作对应关联的时间戳,可以看作SVN的版本。 Column: 定义为<family>:<label>,通过这两部分可以指定唯一的数据的存储列,family的定义和修改需要对HBase进行类似于DB的DDL操作, 而label,不需要定义直接可以使用,这也为动态定制列提供了一种手段。family另一个作用体现在物理存储优化读写操作上,同family

MySQL 数据类型说明解释

徘徊边缘 提交于 2020-03-23 07:11:17
在 MySQL 中,有三种主要的类型:Text(文本)、Number(数字)和 Date/Time(日期/时间)类型。 Text 类型: 数据类型 描述 CHAR(size) 保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。 VARCHAR(size) 保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。 注释: 如果值的长度大于 255,则被转换为 TEXT 类型。 TINYTEXT 存放最大长度为 255 个字符的字符串。 TEXT 存放最大长度为 65,535 个字符的字符串。 BLOB 用于 BLOBs(Binary Large OBjects)。存放最多 65,535 字节的数据。 MEDIUMTEXT 存放最大长度为 16,777,215 个字符的字符串。 MEDIUMBLOB 用于 BLOBs(Binary Large OBjects)。存放最多 16,777,215 字节的数据。 LONGTEXT 存放最大长度为 4,294,967,295 个字符的字符串。 LONGBLOB 用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。 ENUM(x,y,z,etc.) 允许您输入可能值的列表。可以在

到固定时间才可以点击按钮

喜夏-厌秋 提交于 2020-03-22 17:29:41
懒得解释了 直接贴代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>index</title> <script src="__PUBLIC__/jquery-2.1.1.min.js"></script></head><body><input type="button" id="btn" value="秒杀" disabled="true"/></body><script type="text/javascript">$(function(){ var stringTime = "2017-04-27 19:44:00"; var timestamp2 = Date.parse(new Date(stringTime)); timestamp2 = timestamp2 / 1000; //获取到的 格式日期 的时间戳 var myDate = new Date(); var timestamp = myDate.getTime()/1000; //当前时间戳 获取的时间戳为毫秒 需除1000 timestamp = timestamp.toFixed(); //过了某时间 直接不可点var stringTime3 = "2017-04-27 21:00:00";var timestamp4