Coding
未读
1. 身份证校验12const reg =/(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)/;console.log(reg.test(320874199709084732))
2. 根据身份证获取出生年月日123456789101112function getBirthdayFromIdCard(idCard) { var birthday = ""; if(idCard != null && idCard != ""){ if(idCard.length == 15){ ...
ES6入门系列
未读
1. Set1.1 基本用法
Set 类似于数组,但是成员的 值都是唯一的,没用重复的值。Set本身是一个构造函数,用来生成Set数据结构。
const s = new Set();
[2,3,4,5,6,4,2,2,7].forEach(x => s.add(x))
for (let i of s) {
console.log(i)
} // 2 3 4 5 6 7
// Set 不会添加重复的值。
Set 函数可以接受一个数组(或具有 iterable 接口的其他数据结构)作为参数,用来初始化,如下:
// 实例一
const set = new Set([1,2,3,4,5,5])
[...set] // [1,2,3,4,5]
// 实例二
const items = new Set([1,2,3,3,4])
items.size // 4
// 上面代码还展示了数组去重的方法
[...new Set(array)]
// 或者字符串去重
[...new Set('aabbcc')].join('& ...
重学JavaScript
未读
1. 基本类型和引用类型的值
ES变量包含两种不同数据类型的值:基本类型值和引用类型值。
将一个值赋给变量的时候,解析器必须确定这个值是基本类型还是引用类型
1.1 基本类型值
指的是那些保存在栈内存中的简单数据,即这种值完全保存在内存中的一个位置。一下五种为基本类型值,它们在内存中分别占有固定大小的空间,因此它们的值可以保存在栈内存中。这样也可以提高查询变量的速度。对于保存基本类型值的变量,它们是按值访问的,我们操作的是它们实际的值。
Undefined
Null
Boolean
Number
String
1.2 引用类型值
指的那些保存在堆内存中的对象,意思是变量中保存的实际上只是一个指针,这个指针指向内存中的另一个位置,该位置保存对象。
因此如果想要给一个变量赋值一个引用类型的值,那么则必须在堆内存中为这个值分配空间,由于这种值的大小不固定,因此不能把她保存到栈内存中,但是内存地址的大小是固定的,因此可以将内存地址保存在栈内存中。这样,在查询引用类型的变量时,就可以首先从栈中读取内存地址,在找到在堆内存中保存的值。这种访问方式叫做引用访问,因为我们不是操作的实际的值 ...
ES6入门系列
未读
1. 概述
因为ES5的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了他人提供的对象,但又想为这个对象添加新的方法,新方法的名字就有可能与现有的方法产生冲突,所有就有了Symbol,它会保证每个属性名是独一无二的,可以从根本上防止属性名的冲突。
ES6引入了一种新的原始数据类型 Symbol,表示独一无二的值,它是Javascript语言的第七种数据类型。
Symbol值通过 Symbol函数生成,对象的属性名现在可以有两种类型,一种是原有的字符串,另一种就是新增的Symbol类型。 Symbol类型是独一无二的不会和其他属性名产生冲突
let s = Symbol()
typeof s
// 'Symbol'
注意: Symbol 函数前不能用 new命令,否则会报错。因为生成的Symbol是一个原始类型的值,不是对象。Symbol值不是对象,无法为其添加属性。它是一个类似字符串的数据类型
Symbol函数可以接受一个参数,表示对Symbol实例的描述,方便在控制台显示,在转为字符串的时候方便区分,如下:
let s1 = Symbol(& ...
重学JavaScript
未读注意: 本文章为 《重学js之JavaScript高级程序设计》系列第三章第三部分【运算符】。关于《重学js之JavaScript高级程序设计》是重新回顾js基础的学习。
1. 布尔操作符
布尔操作符的重要性堪比相等操作符。布尔操作符一个有3个,非(NOT)、与(AND)、或(OR)
1.1 逻辑非
逻辑非操作符由一个叹号(!)表示,可以应用于ES中的任何值。无论这个值是什么数据类型,这个操作符都会返回一个布尔值。逻辑非操作符首先会将它的操作数转换为一个布尔值,然后在对其求反,它遵循以下规则:
1. 操作数是一个对象,返回false
2. 操作数是一个空字符串,返回true
3. 操作数是一个非空字符串,返回false
4. 操作数是数值0,返回true
5. 操作数是任意非0数值,返回false
6. 操作数是null,返回true
7. 操作数是NaN,返回true
8. 操作数是undefined,返回true
注意:逻辑非也可以用于将一个值转化为与其对应的布尔值。而同时使用两个逻辑非操作符,实际上会模拟Boolean()转型函数的行为。其中,第一个逻辑非操作符会基于无论什 ...
weipython
未读
前提虽然我们每天都会查看天气,但是如果你能够用限制微信每天早上七点定时为TA推送天气预报,生活指数。直接为TA提供过滤好的天气信息,让TA一目了然。而且操作简单上手,任何人都可以零基础搭建,为你的TA带来一丝小惊喜。
效果如图
准备
运行环境 win10 Linux
python 3.4 版本
一个微信小号
和风天气api
一个编辑器,就是文本编辑器也可以
主要代码1. 安装 python 3.7 版本小伙伴如果是 window 电脑可以直接在 Python官网 选择 **download **直接下载
直接点击下载好的exe文件进行安装,记得将环境变量配置选项勾选上。如下图:
安装完成之后,我们可以新建文件夹,从git 上将代码clone 下来。我们直接在文件夹中摁住 shift + 鼠标右键 唤出 powerShell 查看 Python 版本。
如果大家还有不明白的可以参考 Python安装教程
2. 为项目安装相关模块
可通过 pip install 直接安装相关模块,如运行时还有因模块报错,也可以直接pip install 模块名直接安装即可。本项目以及后续相关都 ...
这是原作者 @waylybaye 一开始发布在少数派上的文章搬运过来,文章所有权归 原作者 @waylybaye 所有这篇文章将会介绍如何获取由 Google 提供的一年 $300 美金的试用金,然后使用 HyperApp 搭建一个低延迟超高速的科学上网环境。网络延迟基本在50ms左右,并且可以流畅观看 Youtube 4K 视频。本文不需要读者有较深的技术背景,全部过程都可视化、自动化完成。
下文用 GCP 代表 Google Cloud Platform,指 Google 的整个云平台。GCE 是指 Google Cloud Engine,是 GCP 产品线里的一个主机产品。
本文前提条件1、有一个 Google 账号,没有的话可以注册一个。
2、注册 GCP 免费试用需要用信用卡进行身份验证(只做验证,不会收费),所以你必须有一个 Visa/MasterCard 的信用卡才行。
GCP 注册以及创建服务器
要访问 Google 首先需要你能科学上网,但是这篇文章又是介绍如何科学上网的,好像有点?生蛋蛋生?的矛盾… 其实你可以去App Store搜索 V屁恩,找一个免费的 ...
重学JavaScript
未读注意: 本文章为 《重学js之JavaScript高级程序设计》系列第三章第二部分【操作符】。关于《重学js之JavaScript高级程序设计》是重新回顾js基础的学习。
1. 操作符
用于描述一组可以操作数据值的概念叫做操作符。包括 算术操作符(加号和减号)、位操作符、关系操作符和相等操作符。ES的操作符和其他不同的在于它能够适用于很多值,如:字符串、数字值、布尔值、甚至对象。在应用于对象的时候,需要调用对象的 valueOf() 和 toString()方法。
1.1 一元操作符
只能操作一个值的操作符叫做一元操作符。
1.1.1 递增和递减操作符
分为两种类型:前置和后置型,前置位于要操作的变量之前。后置则在要操作的变量之后。如下:
var age = 29
++age // 30
等于
age = age + 1
--age // 28
等于
age = age - 1
注意:执行前置递增或递减的时候,变量的值都是在语句被求值以前改变的。
var age = 29
var a = --age + 2
age // 28
a // 30
// 由于前置递增 ...
Coding
未读
1. 原型链继承
从父级上继承,但是有个问题,如果有多个子类同时继承一个父类,如果改变其中一个子类,其余子类也会跟着改变,这种情况就和数组对象的浅拷贝一样。
function parents(){
this.name = ['fuqin']
}
parents.prototype.getName = function() {
console.log(this.name)
}
function child(){}
child.prototype = new parents()
let child1 = new child()
child1.getName() // ['fuqin']
let child2 = new child()
child1.name.push('haha')
let child3 = new child()
child1.getName() // => ['fuqin', 'haha ...