刘念的个人博客

0%

10 元成本抢到周杰伦演唱会门票

周杰伦忽然就又翻红,抢个票实在是太难了,前有粉丝黄牛抢、后有大麦不放票。年龄大了手速根本跟不上,所以只能靠脑子解决了。

抢票无非就三点

网速、手速和运气

现在就来解决这些问题。

阅读全文 »

使用SnowFlake的理由

按照时间自增,可排序。

并且整个分布式系统内不会产生ID碰撞(由数据中心ID和机器ID作区分)。

经测试 MacBook Pro (15-inch, 2018) 每秒可产生136万左右的ID。

Twitter_Snowflake

twitter开源的地址:twitter-archive/snowflake

SnowFlake的结构如下(共64bits,每部分用-分开):

0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000

| ———————-|———————- –|– –|– —–|——

1bit不用 41bit 时间戳 数据标识id 机器id 序列号id

  • 1位标识,二进制中最高位为1的都是负数,但是我们生成的id一般都使用整数,所以这个最高位固定是0
  • 41位时间戳,41位时间截不是存储当前时间的时间截,而是存储时间截的差值(当前时间截 - 开始时间截得到的值),这里的的开始时间截,一般是我们的id生成器开始使用的时间,由我们程序来指定的(如下下面程序IdWorker类的startTime属性)。41位的时间截,可以使用69年,年T = (1L << 41) / (1000L * 60 * 60 * 24 * 365) = 69
  • 10位的数据机器位,可以部署在1024个节点,包括5位dataCenterId和5位workerId
  • 12位序列,毫秒内的计数,12位的计数顺序号支持每个节点每毫秒(同一机器,同一时间截)产生4096个ID序号
  • 加起来刚好64位,为一个Long型。
阅读全文 »

20181107更新

买了一台mbp,用到命令的时候也多了,也好长时间没更新博客了,趁着过节(立冬)更新一波。

​ 用了20多年的windows 导致不太习惯使用终端有的时候使用什么linux 命令的时候还得现查 ,所以干脆就总结一下,分享出来,也算是写一个备忘录了(岁数大了记性都不好了,送礼的多送几盒脑白金吧).

阅读全文 »

React 使用TypeScript时customize-cra配置别名无效的解决办法

想用TypeScript做一个个人的项目,结果在启动的时候就遇到了问题,customize-cra配置路径别名的时候总是报错,网上搜的都是旧版的,官网也只有JS的配置。后来在这个issues下找到了答案,再这记录一下。

首先在根目录下新建config-overrides.js

1
2
3
4
5
//引入需要的组件
const {
override,
addWebpackAlias,
} = require('customize-cra');
阅读全文 »

macOS Sierra 及以上版本 打开任何来源

我的系统版本:

系统版本

macOS Sierra及以上版本所有第三方应用都无法打开了,提示无法打开或者扔进废纸篓。这对于我这种用学习版的人来讲简直就是要了老命,本着学习的精神找到了开启方法,记录一下。

macOS Sierra之前的系统也是需要手动去打开应用程序-系统偏好设置-安全性和隐私-通用里勾选任何来源,这样操作之后才能打开第三方应用。而到了macOS Sierra同样如此,但是默认是不显示的。

阅读全文 »

利用人工智能预测双色球

google开发的tensorflow机器学习框架目前应该是人工智能开发的第一框架,不论从框架的设计,开源环境,还是商业化应用方面都是有着很好的体现.虽然前端暂时和人工智能没啥太大关系,不过科技发展这么快也没准.俗话说得好,梦想是要有的,万一实现了呢?

总的来说双色球的预测无非就是已经有了一堆数字(每一期的开奖结果)要找出一种规律然后计算出下一次的一组数字.这个规律由计算机去找,我们需要做的就是告诉电脑找规律的方向.

DEMO戳这里=>人工智能(AI)预测双色球DEMO

阅读全文 »

​ 关于什么是跨域就不再多说了,在我了另一篇博客2018前端面试题总结,附带答案(持续更新)里有答案.

CORS请求原理

​ 基本上目前所有的浏览器(IE10及其以下不可以,解决方案就是给用户下载一个chrome并把图标变成IE的๑乛◡乛๑)都实现了CORS标准,其实目前几乎所有的浏览器ajax请求都是基于CORS机制的,只不过可能平时前端开发人员并不关心而已(所以说其实现在CORS解决方案主要是考虑后台该如何实现的问题)。

什么是CORS?
原文:跨域资源共享 CORS 详解(阮一峰)

阅读全文 »

假装有个需求

我们现在需要写一个 foo 函数,这个函数返回首次调用时的 Date 对象,注意是首次

普通方法

1
2
3
4
5
6
var t;
function foo() {
if (t) return t;
t = new Date()
return t;
}

问题有两个,一是污染了全局变量,二是每次调用 foo 的时候都需要进行一次判断。

阅读全文 »

GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。

最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。

你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。

当你在面试中被问到这个问题,你的内心充满了自信和喜悦。

你轻轻松松的给出了一个“标准答案”:

阅读全文 »