var x = [1,2,3,4,5,6,7,8,9,10];
// var x = (Array(101).join(0).split('')).map((a,i)=>{return i+1;});
var findIndex = (target, x, lowIndex, highIndex) => {
var low = lowIndex || 0;
var high = highIndex === undefined ? (x.length - 1) : highIndex;
var mid = Math.ceil((low + high) / 2);
// var mid = Math.floor((low + high) / 2);
// console.log('Mid : ', mid);
if(target === x[mid]){
return mid;
} else {
if(target < x[mid]){
// console.log('Low : ', x.slice(low, mid));
return findIndex(target, x, low, mid - 1);
} else {
// console.log('High : ', x.slice(mid, high));
return findIndex(target, x, mid + 1, high);
}
}
};
x.forEach((z)=>{
console.log(findIndex(z, x));
});
在VPS上面安装Wordpress可能没有虚拟空间那么简单,但是复杂也给了你更大的优化和自定义空间。安装 WordPress 很多人都会发现安装插件或者升级的时候提示要FTP账号,这就是因为文件权限没有设置正确。
WordPress官网介绍了详细的各文件需要的权限,下面我们看看应该怎么做。
先设定用户所有者为 www (有些php默认运行用户和组是http这些,按照php和nginx的配置来设置),比如我的网站根目录是在/home/wwwroot 那么
chown -R www:www /home/wwwroot
下面将所有文件夹设置为755权限,所有文件设置为644权限,注意!任何时候都不要设置为777权限(本方法来自Virson’s Blog,原贴为Linux 批量单独修改文件夹、文件的权限和所有者)
进入网站根目录
cd /home/wwwroot
设置此目录下所有文件夹的权限为755
find -type d -exec chmod 0755 {} \;
设置此目录下所有文件的权限为644
find -not -type d -exec chmod 644 {} \;
问题解决!
函数是一等公民
Dart 是一门完备的面向对象的编程语言,所以函数也是对象并且其类型是 Function。所以这就表示函数也可以赋值给变量,也就是说可以将函数作为参数进行传递。
一个函数的示例
bool isBiggerThan10(int number) {
return number > 10;
}
虽然加上函数的返回值是个好习惯,但是 Dart 并不一定非要返回值,因为 Dart 会尝试推断函数的返回值。如果没有明确返回值,则会返回 null(因为 Dart 中所有未定义的变量都是 null)。
例如:
isBiggerThan10(int number) {
return number > 10;
}
可以通过
print(isBiggerThan10.runtimeType);
来获取此函数的类型。
箭头函数
当然了,为了简化函数的写法,Dart 也支持箭头函数,上面的例子可以写作为:
bool isBiggerThan10(int number) => number > 10;
但不可写作下面这样子(number > 10 后面没有分号)。
isBiggerThan10(int number) => {
number > 10
};
这段代码相当于:
isBiggerThan10(int number) {
return {number > 10};
};
即:函数只包含一个表达式(重点),可以简写成胖箭头形式,=> 后面的表达式将作为函数的返回结果(或者返回 null)。
参数
和其他语言一样,函数定义的时候都可以指定参数列表
bool isBiggerThanX(int number, int x) {
return number > x;
}
但是如果参数很多的话,就很有可能分不清楚要传入的参数对应的是那个了。Dart 有了具名参数。
具名参数
bool isBiggerThanX({int number, int x}) {
return number > x;
}
调用
isBiggerThanX(number:5, x:9);
还可以有默认(可选)参数
bool isBiggerThanX({int number, int x = 10}) {
if(number == null ){
return false;
}
return number > x;
}
调用
isBiggerThanX(number:5)
此时 x 的值默认就是 10.
再调用
isBiggerThanX(number:5, x:9)
此时 x 的值就是 9.
再调用
isBiggerThanX()
此时 x 的值就是 10, 所以说具名参数都是可选的。但是可以通过增加 @required 来表明是必填项, 但是好像编译时并没有出错(?)。
bool isBiggerThanX({@required int number, int x = 10}) {
return number > x;
}
可选参数
那有时候我想要的可选参数是可传可不传的,而参数比较少,不想使用具名的默认参数,怎么办呢?那就是用可选参数。
bool isBiggerThanX(int number, [int x]) {
if(x != null) {
return number > x;
}
return true;
}
当然也可以这样
bool isBiggerThanX(int number, [int x = 9]) {
return true;
}
这个时候,x 不传的话就是 9 了。
但是可选参数必须放在最后一个。对于具名的默认参数,可以不放到最后一个,任意都可以设置默认参数。
匿名函数
上面的函数都起了名字,Dart 当然支持不起名字的函数
List list = [1, 2, 3];
list.forEach((item) {
print('item is : $item');
}
垃圾分类规则
根据规定,单位或个人违反规定随意投放生活垃圾的,个人罚款¥100以上¥200以下,单位罚款¥5000以上¥20000以下,并将不良信息纳入个人征信系统。
垃圾分类的时代已经到来,不知道大家的理论知识有没有储备好呢?
首先,西安的四色垃圾桶了解一下~
红、绿、蓝、灰,分别对应可回收物、餐厨垃圾、有害垃圾、其他垃圾。
为了帮大家轻松实现“分类自由”,我们为大家找到了一份生活常见垃圾分类表供大家参考学习~
有害垃圾:
- 废旧灯管、笔芯、硒鼓、墨盒
- 废旧电池(充电电池、纽扣电池、蓄电池)
- 油漆桶、杀虫剂类物品(有残留需提前密封再投放)
- 过期或废弃的药物
投放要求:
- 投放时请注意轻放;
- 易破损的请连带包装或包裹后轻投放
- 如易挥发,请密封后投放
可回收垃圾:
- 各种瓶子(包括易拉罐),牛奶盒,但请记得不要有剩余液体,要干干净净
- 书籍、报纸、宣传册、打印的纸张、纸箱纸板等纸质类物品
- 用完的洗发水、沐浴液、洗衣液等瓶瓶罐罐
- 旧衣物以及床单被套等
投放要求:
- 轻投轻放
- 尽量保持清洁干燥,避免污染
- 立体包装需清空内容物,清洁压扁后投放;
- 易破损或有尖锐边角的应包裹后投放
厨余垃圾:
- 所有剩在碗里不吃的食物
- 啃过的鸭脖鸡爪等系列小型骨头
- 吃完的葡萄皮等任何瓜皮果核
- 花卉绿植
投放要求:
- 厨余垃圾应当沥干后投放;
- 有包装的垃圾应将包装物去除后分类投放,包装物请投放到对应的垃圾容器
其他垃圾 :
- 所有你吃剩下的油滋滋的外卖盒、食物袋等(里面不能有食物残留)
- 不易腐烂的大骨头、海鲜壳之类的
- 遭到污染的纸巾湿巾等
- 吸完烟,扔到这里
- 陶瓷及花盆类物品
- 一次性餐具、纸杯(包括奶茶杯等饮料杯)、口香糖
- 一次性干电池
投放要求:
- 尽量沥干水分
- 难以辨识类别的生活垃圾投入其他垃圾容器内
===============================================================
最后做一道测试题考考大家:
请问曾经一度登上头条的未喝完的珍珠奶茶属于什么垃圾?(多选题)
A:厨余垃圾 B:可回收垃圾
C:有害垃圾 D:其他垃圾
答案:ABD~
第1步:首先把剩余奶茶液体倒进下水口;
第2步:将奶茶里的珍珠、椰果、布丁等加料丢进绿色的“厨余垃圾”桶里;
第3步:把杯子和吸管等塑料制品丢进灰色的“其他垃圾”桶里;
附加条:如果你的饮料上面是有盖子,那么盖子需要扔进蓝色的“可回收物”垃圾桶里,因为奶茶的盖子是可回收的!
从垃圾分类开始,让低碳生活真正地融入到我们的生活中,
大家的每一次正确投放,都在为美丽的西安、美丽的葡萄城贡献自己的一份力量~
以 Dart 为例:
Dart 中的 DateTime 周一为一周起始日,索引是 1,周日为结束日索引是 7.月索引从 1 到 12.
当前:2019-08-06
当月:2019-08-01
下月:2019-09-01
startWeekday : 当月第一天的周几 – 月开始日期索引(开始日期的周几)
endWeekday : 下月第一天的周几 – 月开始日期索引(开始日期的周几)
当月最后一天 + startWeekday + (7 – endWeekday) = 当月日历显示日期数量
以下图为例:
当月:2019-10-01 Dart 的周所以开始是 7,结束是 6.
startWeekday : 则周几为 2,(29, 30, 1)则索引为([7, 1, 2]),
endWeekday : 则周几为 5,(27, 28, 29, 30, 31, 1)则索引为([7, 1, 2, 3, 4, 5]),
最后一天:31,
则:31 + 2 + (7 – 5) = 35天。
所以日历最终显示为:上月的 29 30 两天+当月的 31 天+下月的1 2两天,共 35 天
升级到 xcode 10 以后,xcode 已经不包含这个 libstdc++.6.0.9 文件了 但是有些项目没有升级,还需要依赖此文件,所以会导致编译不过。
下载地址:
http://img.yimity.com/libstdc++.6.0.9.tbd.zip
使用方法:解压后放到
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib
或者报错的信息显示的目录中。即可。