毫秒

Vue中解决移动端点击300毫秒延迟的问题

左心房为你撑大大i 提交于 2019-11-28 21:08:30
1. 安装模块 cnpm install fastclick -S 2. 在main.js中引入,并绑定到body 1 import FastClick from 'fastclick' 2 3 FastClick.attach(document.body); 当better-scroll和 fastclick冲突的不能点击的时候: 1 <slider> 2 <div v-for="item in recommends"> 3 <a :href="item.linkUrl"> 4 <!-- 当better-scroll和 fastclick冲突的不能点击的时候,只需要加上class="needsclick",图片就可以被点击了,解决冲突的问题 --> 6 <img class="needsclick" @load="loadImage" :src="item.picUrl"> 7 </a> 8 </div> 9 </slider> 来源: http://www.cnblogs.com/tian-long/p/8417438.html

GUID做主键真的合适吗

爷,独闯天下 提交于 2019-11-28 16:35:29
  在一个分布式环境中,我们习惯使用GUID做主键,来保证全局唯一,然后,GUID做主键真的合适吗?   其实GUID做主键本身没有问题,微软的很多项目自带DB都是使用GUID做主键的,显然,这样做是没有问题的。然而,SQL Server默认会将主键设置为聚集索引,使用GUID做聚集索引就有问题了。很多时候程序员容易接受SQL Server这一默认设置,但无序GUID做聚集索引显然是低效的。   那么,我们在项目中如何避免这一问题呢?   主要的思路还是两方面——方案一,选择合适的列作为聚集索引;方案二,使用有序的主键。 1 方案一,选择合适的列做聚集索引   选择原则很简单——字段值尽量唯一,字段占用字节尽量小,字段值很少修改,字段多用于查询范围数据或排序的数据。   之所以是根据以上原则选择,主要还是基于B+树数据索引问题,这部分内容都比较基础,这里就不举例验证了,以上原则还是比较公认的,即便读者不太理解其中原理,也请记住这一选择规则。   常见的备选项——自增列(Id)和时间列(CreateTime)。   聚集索引的最大用处就是帮助范围查询快速定位,从而减小数据库IO的消耗来提升查询效率。对于范围查询我们更多的应用在自增列和时间列上,因为这两列本身反应了数据的创建顺序,符合多数范围查询的场景需要。   大部分时候,我们仍然可以使用GUID做主键,只需要重新设置聚集索引就行。

雪花算法生成一个id

人盡茶涼 提交于 2019-11-28 15:04:22
package com.shopping.test; import java.text.SimpleDateFormat; import java.util.Date; /***** * 雪花算法根据时间戳生成有序的 64 bit 的 Long 类型的唯一 ID * * 各 bit 含义: * 1 bit: 符号位,0 是正数 1 是负数, ID 为正数,所以恒取 0 * 41 bit: 时间差,我们可以选择一个参考点,用它来计算与当前时间的时间差 (毫秒数),41 bit 存储时间差,足够使用 69 年 * 10 bit: 机器码,能编码 1024 台机器;可以手动指定含义,比如前5 bit 作为机器编号、后 5 bit 作为进程编号 * 12 bit: 序列号,同一机器同一毫秒内产生不同的序列号,12 bit 可以支持 4096 个序列号 * 优点: * 灵活配置:机器码可以根据需求灵活配置含义 * 无需持久化:如果序号自增往往需要持久化,本算法不需要持久化 * ID 有含义/可逆性:ID 可以反解出来,对 ID 进行统计分析,可以很简单的分析出整个系统的繁忙曲线,还可以定位到每个机器,在某段时间承担了多少工作,分析出负载均衡情况 * 高性能:生成速度很快 * */ public class SnowflakeIdWorker { // ====================

日期时分秒毫秒+3位随机数

我怕爱的太早我们不能终老 提交于 2019-11-28 14:51:58
public String getString() { String pkValue; String str = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()); int rannum = (int) (new Random().nextDouble() * (999 - 100 + 1)) + 100;// 获取3位随机数 // pkValue= UUID.randomUUID().toString().replace("-",""); pkValue= str+rannum; return pkValue; }    来源: https://www.cnblogs.com/woftlcj/p/11410804.html

js 中日期2013-08-30或2019-08-24 12:30:00 转换成时间戳

…衆ロ難τιáo~ 提交于 2019-11-28 09:59:25
js 中日期2019-08-24 或2019-08-24 12:30:00 转换成时间戳 首先将它转成date日期类型,然后获取毫秒形式时间戳 let date=new Date("2019-08-24 12:30:00")//date日期类型 let time= date.getTime(); //毫秒时间戳 获取date的年月日等方法如下 Date() 返回当日的日期和时间。 getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。 getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。 getMonth() 从 Date 对象返回月份 (0 ~ 11)。 getFullYear() 从 Date 对象以四位数字返回年份。 getYear() 请使用 getFullYear() 方法代替。 getHours() 返回 Date 对象的小时 (0 ~ 23)。 getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。 getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。 getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。 getTime() 返回 1970 年 1 月 1 日至今的毫秒数。 getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT)

ZooKeeper实现生产-消费者队列

☆樱花仙子☆ 提交于 2019-11-28 07:47:44
生产-消费者队列,用于多节点的分布式数据结构,生产和消费数据。生产者创建一个数据对象,并放到队列中;消费者从队列中取出一个数据对象并进行处理。在ZooKeeper中,队列可以使用一个容器节点下创建多个子节点来实现;创建子节点时,CreateMode使用 PERSISTENT_SEQUENTIAL,ZooKeeper会自动在节点名称后面添加唯一序列号。EPHEMERAL_SEQUENTIAL也有同样的特点,区别在于会话结束后是否会自动删除。 敲小黑板:*_SEQUENTIAL是ZooKeeper的一个很重要的特性,分布式锁、选举制度都依靠这个特性实现的。 1 对前续代码的重构 之前的文章,我们已经用实现了Watcher和Barrier,创建ZooKeeper连接的代码已经复制了一遍。后续还需要类似的工作,因此先对原有代码做一下重构,让代码味道干净一点。 以下是 process(WatchedEvent)的代码 final public void process(WatchedEvent event) { if (Event.EventType.None.equals(event.getType())) { // 连接状态发生变化 if (Event.KeeperState.SyncConnected.equals(event.getState())) { // 连接建立成功

常用类和异常

时光总嘲笑我的痴心妄想 提交于 2019-11-28 06:23:36
常用类和异常 回顾 1 包装类: byte- Byte short-Short int-Integer long -Long float-Float double-Double char- Character boolean -Boolean Integer 1 如果使用 Integer 创建对象,数据在堆中存放 2 Integer i=100; Integer i2=100;//是同一个对象 ,Integer中有缓冲区 3 装箱 基本类型转成包装类 拆箱 包装类转成基本类型 2 基本类型和字符串之间 2.1基本类型转成字符串 int i=5; String s=i+""; String.valueof(i); 2.2字符串转成基本类型 String s="12"; int i=Integer.parseInt(s); 3 字符串操作 (1)存储常量池中(串池),不允许有重复 (2)不可变性 (3)new String("xxx"); 数据存储在堆中 String s="xxx"; //串池 String s2=new String("xxx");//在堆中 //长度 s.length(); //查找位置 indexOf lastIndexOf //截取 subString(); //追加 concat(); //替换 replace(); //相等比较 equals() //比较

【php】php获取当前毫秒时间戳

戏子无情 提交于 2019-11-27 21:23:06
最近在做一个智能家居项目的后台,需要实时上传用户对智能设备的配置信息到服务器,以便实现同步,因此对于时间的精确度要求比较高,最开始直接是用php的 time() 函数来获取时间戳,获取的时间精确到秒级别,如果客户端同时操作的话还是有可能产生冲突,因此建议将时间戳精度提高到毫秒级别,但是在php没有自带的函数能获取毫秒时间戳,但提供了一个microtime()函数,如果调用时不带可选参数,本函数以 "msec sec" 的格式返回一个字符串,其中 sec 是自 Unix 纪元(0:00:00 January 1, 1970 GMT)起到现在的秒数,msec 是微秒部分。字符串的两部分都是以秒为单位返回的。 microtime()函数的详细说明,可以到w3chool上面看看《 PHP microtime() 函数 》。 <?php echo microtime(); //输出结果是 //0.25139300 1138197510 注意了,它的结果是分两部分的,也就是前半部分是毫秒(但是单位是秒),后半部分是秒。 现在,我们依据这个做下修改,如下: <?php list($msec, $sec) = explode(' ', microtime()); $msectime = (float)sprintf('%.0f', (floatval($msec) + floatval($sec)

ZooKeeper实现生产-消费者队列

女生的网名这么多〃 提交于 2019-11-27 15:38:29
【欢迎关注公众号:程序猿讲故事 (codestory),及时接收最新文章】 生产-消费者队列,用于多节点的分布式数据结构,生产和消费数据。生产者创建一个数据对象,并放到队列中;消费者从队列中取出一个数据对象并进行处理。在ZooKeeper中,队列可以使用一个容器节点下创建多个子节点来实现;创建子节点时,CreateMode使用 PERSISTENT_SEQUENTIAL,ZooKeeper会自动在节点名称后面添加唯一序列号。EPHEMERAL_SEQUENTIAL也有同样的特点,区别在于会话结束后是否会自动删除。 敲小黑板:*_SEQUENTIAL是ZooKeeper的一个很重要的特性,分布式锁、选举制度都依靠这个特性实现的。 1 对前续代码的重构 之前的文章,我们已经用实现了Watcher和Barrier,创建ZooKeeper连接的代码已经复制了一遍。后续还需要类似的工作,因此先对原有代码做一下重构,让代码味道干净一点。 以下是 process(WatchedEvent)的代码 final public void process(WatchedEvent event) { if (Event.EventType.None.equals(event.getType())) { // 连接状态发生变化 if (Event.KeeperState.SyncConnected

雪花算法(05)毫秒内序列

自闭症网瘾萝莉.ら 提交于 2019-11-27 09:37:27
前面的内容把雪花算法的时间部分和机器信息部分都生成了,下面来生成最后一部分,就是毫秒内的序列。什么意思呢?我们在生成时间部分获取时间戳的时候,使用 long now = System.currentTimeMillis(); 获取,是个毫秒级的时间戳,但是即使是这么短的时间,对于电脑来说也足够生成很多个id,所以很多id可能会在同一个毫秒内生成,也就是时间部分的数值一样。这个时候就要让同一个毫秒内生成的id加上数字序列标识,就是第三部分的序列。第三部分占的长度是12位,转成整数值就是4095,所以最后一部分的范围就是4095到0之间的数字。如果毫秒内访问的数量超过了这个限制怎么办?没法解决,只能强制等到下一毫秒再生产id。这就是第三部分的作用。 下面先定义一个序列初始值: 序列由于和时间戳有关系,所以要加载时间戳真正开始使用之前: 上面的逻辑做了判断,同一毫秒内就让序列加1,超过4095,就强制获取下一毫秒的值,等时间戳不是同一毫秒的时候,序列从新开始计算。看下如何强制获取下一毫秒: 简单粗暴,就是while循环等下一毫秒就可以。这样毫秒内的序列数就算获取成功了。 我们三大部分的数字都获取成功了,最后直接位移加合并就行: 这样雪花算法就写完了,下面执行一下测试: 是一个18位的long类型数字,确实是我们要的结果。等等!是不是有问题?如果此时多个线程访问,会产生重复的id