Promise简单用法

作者: 分类: php 时间: 2019-04-12 评论: 暂无评论
//当异步代码执行成功时,我们才会调用resolve(...), 当异步代码失败时就会调用reject(...)
//在本例中,我们使用setTimeout(...)来模拟异步代码,
let myFirstPromise = new Promise(function (resolve, reject) {
    setTimeout(function () {
        Math.random() > 0.5 ? resolve("成功!") : reject("失败!");
    }, 500);

});

//success的值是上面调用resolve(...)方法传入的值.
myFirstPromise.then(function (success) {
    console.log("success! " + success);
}, function (error) {
    console.log("error! " + error);
});

移动开发问题总结

作者: 分类: js 时间: 2018-12-27 评论: 暂无评论

1.情景:两个滚动层叠在一起,底层随着顶层滚动(滚动穿透)
方案:在底层可以滚动的层上加fixed

$("body").css({"position": "fixed",width:'100%'});

2.情景:fixed层input光标定位不准 或 input没有在可视区域。
方案:禁止底层的滚动,遮罩层禁止

$('.bg-opacity').on('touchmove',function(e){
        e.stopPropagation();
        e.preventDefault();
});

// 苹果uc浏览器 position: fixed;处理
var ua = navigator.userAgent.toLowerCase();
if (/iphone|ipad|ipod/.test(ua)) {
     $('#login-box input').bind('focus', function () {
        var h = $(window).height()-100;
        $("底部滚动层").css({"overflow": "hidden", "height": h + "px"});
     });
     $('#login-box input').bind('blur', function () {
        $("底部滚动层").css({"overflow": "auto", "height": "auto"});
     });
}

3.情景:fiexd里含有input,当输入法弹起,head定位不准,往下偏移。(UC浏览器下导航栏收起)
方案:修改浮动层,body层定位为absolute,键盘收起后还原

$('#login-box input').bind('focus', function () {
    $('header,#login-box').css({
        'position': 'absolute'
    });
    $('#section-footer').css({
        'position': 'absolute'
    });

    $('html').css({
        'position': 'relative'
    });
});
$('#login-box input').bind('blur', function () {
    $('header,#login-box').css({
        'position': 'fixed'
    });
    $('#section-footer').css({//由于有些设备直接fixed定位会从键盘的位置掉到底部的动作,所以先隐藏再显示;
        'position': 'fixed',
        'bottom':'0',
        'display':'none'
    });

    setTimeout(function(){
        $('#section-footer').fadeIn();
    },500);
    $('html').css({
        'position': 'static'
    });
});

附:https://segmentfault.com/a/1190000000515816?_ea=1271747

phpstrom 10 永久激活

作者: 分类: php 时间: 2018-12-10 评论: 暂无评论

1.将JetbrainsCrack.jar放到phpstorm安装目录下的lib文件夹
2.找到phpstorm 的安装路径, 在bin目录下有两个文件 PhpStorm.exe.vmoptions ,PhpStorm64.exe.vmoptions 打开文件

3.最后面加入 一行
-javaagent:C:Program Files (x86)JetBrainsPhpStorm 2016.3.2libJetbrainsCrack.jar
后面的路径,根据自己放的位置修改
保存文件
关闭并重新打开phpstorm 

4.打开http://idea.lanyus.com/getkey?userName=Allen
userName可以改
生成一个激活码
菜单 help >>>>Register
选择Activation Code
将验证码粘贴进去
激活...

转至:https://blog.csdn.net/alen_xiaoxin/article/details/54906510
文件下载:https://pan.baidu.com/s/1_U-cfVfKr5dfyHFR1oP3zA 提取码: q4re

Python学习笔记 #2 变量类型

作者: 分类: python 时间: 2018-11-22 评论: 暂无评论

1.数字(不可变数据)
int(有符号整型)
long(长整型[也可以代表八进制和十六进制])
float(浮点型)
complex(复数)

a=100
del a #删除变量

运算方式跟PHP差不多,除了下面几个
2 / 4 # 除法,得到一个浮点数
2 // 4 # 除法,得到一个整数
2 ** 5 # 乘方

2.字符串(不可变数据)
A B C D E F
0 1 2 3 4 5
-6-5-4-3-2-1
可以用 [头下标:尾下标] 截取字符串

str = 'Runoob'
print (str)          # 输出字符串
print (str[0:-1])    # 输出第一个到倒数第二个的所有字符
print (str[0])       # 输出字符串第一个字符
print (str[2:5])     # 输出从第三个开始到第五个的字符
print (str[2:])      # 输出从第三个开始的后的所有字符
print (str * 2)      # *输出字符串两次*
print (str + "TEST") # *连接字符串*

3.元组(不可变数据)
元组写在小括号 () 里,元素之间用逗号隔开

tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2  )
tinytuple = (123, 'runoob')
 
print (tuple)             # 输出完整元组
print (tuple[0])          # 输出元组的第一个元素
print (tuple[1:3])        # 输出从第二个元素开始到第三个元素
print (tuple[2:])         # 输出从第三个元素开始的所有元素
print (tinytuple * 2)     # 输出两次元组
print (tuple + tinytuple) # 连接元组

4.列表(可变)
列表是写在方括号 [] 之间、用逗号分隔开的元素列表。
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
变量[头下标:尾下标]
加号 + 是列表连接运算符,星号 * 是重复操作

5.集合
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:parame = {value01,value02,...} 或者 set(value)

a = set('abcdefg')
b = set('abcde')
print(a)  # {'b', 'd', 'c', 'a', 'g', 'e', 'f'}
print(a - b)  # a 和 b 的差集  {'g', 'f'}
print(a | b)  # a 和 b 的并集 {'c', 'b', 'e', 'g', 'a', 'd', 'f'}
print(a & b)  # a 和 b 的交集  {'c', 'b', 'e', 'a', 'd'}
print(a ^ b)  # a 和 b 中不同时存在的元 {'g', 'f'}

6.字典 (类似js对象,也有keys(),values()方法)
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合。
键(key)必须使用不可变类型。
在同一个字典中,键(key)必须是唯一的。

dict = {}
dict['one'] = "1 - 菜鸟教程"
dict[2] = "2 - 菜鸟工具"

tinydict = {'name': 'runoob', 'code': 1, 'site': 'www.runoob.com'}
print(dict['one'])  # 输出键为 'one' 的值
print(dict[2])  # 输出键为 2 的值
print(tinydict)  # 输出完整的字典
print(tinydict.keys())  # 输出所有键 dict_keys(['name', 'code', 'site'])
print(tinydict.values())  # 输出所有值  dict_values(['runoob', 1, 'www.runoob.com'])

构造函数 dict() 可以直接从键值对序列中构建字典如下:

dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])  # {'Taobao': 3, 'Runoob': 1, 'Google': 2}

{x: x ** 2 for x in (2, 4, 6)}  # {2: 4, 4: 16, 6: 36}

dict(Runoob=1, Google=2, Taobao=3)  # {'Runoob': 1, 'Google': 2, 'Taobao': 3}

6.判断变量类型 isinstance 和type
isinstance 和 type 的区别在于:

type()不会认为子类是一种父类类型。
isinstance()会认为子类是一种父类类型。

7.类型转换

int(x [,base])

将x转换为一个整数

float(x)

将x转换到一个浮点数

complex(real [,imag])

创建一个复数

str(x)

将对象 x 转换为字符串

repr(x)

将对象 x 转换为表达式字符串

eval(str)

用来计算在字符串中的有效Python表达式,并返回一个对象

tuple(s)

将序列 s 转换为一个元组

list(s)

将序列 s 转换为一个列表

set(s)

转换为可变集合

dict(d)

创建一个字典。d 必须是一个 (key, value)元组序列。

frozenset(s)

转换为不可变集合

chr(x)

将一个整数转换为一个字符

ord(x)

将一个字符转换为它的整数值

hex(x)

将一个整数转换为一个十六进制字符串

oct(x)

将一个整数转换为一个八进制字符串

Python学习笔记 #1 基础语法

作者: 分类: python 时间: 2018-11-22 评论: 暂无评论

前言:

本片学习笔记来自https://www.runoob.com。只会记录一些与php不一样的编程方式,建议去看原文或w3cschool

1.注释:可以用多个 # 号,还有 ''' 和 ""
2.缩进:用缩进代替{},注意if后面的 :。Python可以在同一行中使用多条语句,语句之间使用分号(;)分割

# 缩进不一致,会导致运行错误
a = 1;b = 2
if a < b:
    print("Answer")
else:
    print("Answer")

3.字符串的表示
变量[头下标:尾下标:步长]

print(str[0:-1])           # 输出第一个到倒数第二个的所有字符
print(str[0])              # 输出字符串第一个字符
print(str[2:5])            # 输出从第三个开始到第五个的字符
print(str[2:])             # 输出从第三个开始的后的所有字符
print(str * 2)             # 输出字符串两次

4.模块导入用 import 与 from...import

import sys #sys 是系统模块
from sys import argv,path  #  导入特定的成员

DB.py

DB_HOST='127.0.0.1'
DB_PWD='123456'

main.py

from DB import DB_HOST
print(DB_HOST)
  1. print('dd',end='') # end='' 不换行
Top ↑