百度地图SDK之引擎初始化失败

百度地图引擎初始化失败

百度地图升级了SDK,库文件编程了framework.可以看到Resources文件夹下有mapppi.bundle.

将framework拖入工程,你会发现工程能运行,地图也能出来,可是突然某一天你发现地图就不显示了.
在官方文档中讲述了需要引入mapapi.bundle,那为何将该文件打包至framework中?你能想象,之前能运行,结果后来一直报内存泄露的错误,最终只是因为这个bundle文件没有加入工程吗?

引以为戒

Redis初试

Redis入门

Redis是一款依据BSD开源协议发行的高性能Key-Value存储系统.通常被成为数据结构服务器,因为值可以是字符串(String),哈希(Map),列表(list),集合(sets)和有序集合(sorted sets)等类型.

提供一个英文的在线互动学习地址: http://try.redis.io/

命令不需要管大小写,但是键大小写是敏感的
在redis,和json类似,类似键值对,所以一定要注意理解键key、值value
编程的都知道,以0开始,所以别被忽悠了
先列出常用命令

1
2
3
4
5
6
7
8
DECR, DECRBY, DEL, EXISTS, EXPIRE, GET, GETSET, HDEL, HEXISTS, HGET, 
HGETALL, HINCRBY, HKEYS, HLEN, HMGET, HMSET, HSET, HVALS, INCR, INCRBY,
KEYS, LINDEX, LLEN, LPOP, LPUSH, LRANGE, LREM, LSET, LTRIM, MGET, MSET,
MSETNX, MULTI, PEXPIRE, RENAME, RENAMENX, RPOP, RPOPLPUSH, RPUSH, SADD,
SCARD, SDIFF, SDIFFSTORE, SET, SETEX, SETNX, SINTER, SINTERSTORE,
SISMEMBER, SMEMBERS, SMOVE, SORT, SPOP, SRANDMEMBER, SREM, SUNION,
SUNIONSTORE, TTL, TYPE, ZADD, ZCARD, ZCOUNT, ZINCRBY, ZRANGE,
ZRANGEBYSCORE, ZRANK, ZREM, ZREMRANGEBYSCORE, ZREVRANGE, ZSCORE

增删改查

设置键值,SET key value,有点相当于关系型数据库中的插入

取值,GET key,相当于关系型数据库中的查询

Nodejs第十二课

线上部署Node.js:heroku

目标

这个项目部署上heroku,成为一个线上项目.
参考原作者的App, http://serene-falls-9294.herokuapp.com/

知识点

内容

使用git clone git@github.com:Ricardo-Li/node-practice-2.git命令克隆项目
代码中的Procfile文件:

1
web: node app.js

一个是app.js文件:

1
app.listen(process.env.PORT || 5000);

这两者都是为了部署heroku所做.

C语言const

C语言const用法

const是一个C语言的关键字,它限定一个变量不允许被改变,产生静态作用.
常类型是指使用类型修饰符const说明的类型,常类型的变量的值是不能改变的.(可以采取别的方式修改值)

下面的代码错在哪里?

1
2
const int n = 5;
int a[n];

为什么编译器会报错,”常量”和”只读变量”是有区别的.常量,例如5,”abc”等等,肯定是只读的,常量被编译器放在只读区域,当然也就不能修改.而”只读变量”则是在内存中开辟一个地方来存放它的值,只不过这个值被编译器限定不允许修改.

下面的代码哪一句有错误?

1
2
3
4
5
6
typedef char *pStr;
char string[4] = "bbc";
const char *p1 = "str";
const char p2 = "str";
p1++;
p2++;

答案是p2++错误. const的基本使用形式: const type m; 限定m不可变,只读. 可以对应*p1不可变,p1可变.p2不可变

C语言数组名

C语言数组名

  • a&a的本质
  • 从二维数组角度分析
  • 从指针运算角度分析

a&a的本质

C语言数组名是一个特殊的东西

int a[5] = {1, 2, 3, 4, 5}

a &a &a[0]这三个的相等的

a是数组名,值是数组首元素的地址.数组名是一个指针常量,能用于指针运算
但是有两种情况比较特殊:

  • 使用sizeof操作符,结果为整个数组的长度
  • 使用&取地址操作时,得到一个数组指针

&a这才是一个数组指针,值是数组的地址

注意: &aa值相等,但是*&a*a的值不相等.说明*&a是对这个数组指针进行了取值操作,取得的是数组首元素的地址,还是一个指针,而不是对&a的值所代表的内存地址进行取值.这应该是C语言对数组指针运算的特殊规定.*a就不言而喻是数组首元素的值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
int main(int argc, const char * argv[])
{
int a[5]={1,2,3,4,5};
printf("a = %x\n",a); //数组名 值相等而已
printf("&a = %x\n",&a); //数组地址
printf("sizeof a = %d\n", sizeof(a)); //数组长度
printf("*(int*)&a = %x\n",(*((int *)(&a)))); //取得数组第一个元素的值
printf("*&a = %x\n", *(&a)); // 还是一个指针,值为数组首元素的地址
printf("**&a = %x\n",(*(*(&a)))); //数组第一个元素的值
printf("&a[0] = %x\n",&a[0]); //数组第一个元素的地址
printf("*&a[0] = %x\n",*(&a[0])); //数组第一个元素的值
printf("*a = %x", *a); //数组第一哥元素的值
return 0;
}

结果:

1
2
3
4
5
6
7
8
9
a = 5fbff780
&a = 5fbff780
sizeof a = 20
*(int*)&a = 1
*&a = 5fbff780
**&a = 1
&a[0] = 5fbff780
*&a[0] = 1
*a = 1

Nodejs第十一课

作用域与闭包

讲解 this, var, (function(){})

知识点

  • 理解js中var的作用域
  • 了解闭包的概念
  • 理解this的指向

课程内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var parent = function () {
var name = "parent_name";
var age = 13;

var child = function () {
var name = "child_name";
var childAge = 0.3;

console.log(name, age, childAge);
};

child();

console.log(name, age, childAge);
};
parent();

学过一点别的编程语言肯定都会直觉的认为,内部函数可以访问外部函数的变量,外部不能访问内部函数的变量.因此childAge在parent中会报错.如果声明变量是少了var,就声明就全局变量了.
在Nodejs中,全局变量会被定义在global对象下,在浏览器中,全局变量会被定义在window下.
如果需要定义全局变量,请显示的定义在global或window对象上.

Nodejs第十课

benchmaek怎么写

目标

有一个字符串var number = '100',我们要将它转换成Number类型的100
三个选项: + , parseInt, Number
测试哪种方法更快

知识点

课程内容

首先得有一个benchmark库, https://github.com/bestiejs/benchmark.js
貌似很久没更新的样子,依旧可以使用
按照实例跟着写:

Nodejs第九课

正则表达式

目标

1
var web_development = "python php ruby javascript jsonp perhapsphpisoutdated";

找出其中包含p但不包含ph的所有单词,即
[ 'python', 'javascript', 'jsonp']

知识点

  • 正则表达式的使用
  • js中正则表达式与pcre的区别

课程内容

开始这门课之前,先学习
正则表达式30分钟入门教程
然后继续学习零宽断言
正则表达式之:零宽断言不『消费』

很久以前,处理字符串领域的王者当属perl.
后来出现一个标准叫pcre.
不过前两个都不算标准,后来出现了正则表达式.js里的正则表达式与pcre不兼容.
测试自己写的正则表达式可以访问http://refiddle.com/,所见即所得地调试

讲述js中正则表达式

  • js中,对于四种零宽断言,只支持零宽正预测先行断言和零宽度负预测先行断言
  • js中,正则表达式后面可以跟三个flag.比如/something/igm.
    • i的意义是不区分大小写
    • g的意义是匹配多个
    • m的意义是^和$可以匹配每一行的开头

正则表达式的理解和使用

正则表达式

正则表达式:一个字符处理标准,指令一段正则表达式字符串,用来检索、替换那个符合正则表达式的文本.
http://tool.oschina.net/regex 提供在线测试

元字符

元字符 说明 匹配字符 匹配数量
\b 匹配一个位置,单词的开头或结尾 V
. 匹配除了换行符以外的一个任意字符 V
\d 匹配一个数字 V
\s 匹配任意的空白符,包括空格、制表符、换行符、中文全角空格等 V
\w 字母、数字、下划线或汉字 V
^ 匹配字符串的开始 V
$ 匹配字符串的结束 V
\ 如果需要查找元字符本身,请使用字符转义,例如\..\\.\* V
* 匹配字符可以重复任意次数 V
+ 匹配字符一次或更多次 V
? 匹配字符零次或一次 V
{n} 匹配字符n次 V
{n,} 匹配字符n次货更多次 V
{x,y} 匹配至少x次,最多y次字符 V
[aeiou] 匹配aeiou中的任一字符 V

通过正则表达式字符串的格式为 元字符 匹配数量字符 匹配数量匹配字符 匹配数量
注意:’(‘和’)’都是元字符,单独在正则表达式中使用元字符只会匹配一次

学习完上面的正则表达式,我们可以写出这样复杂的表达式

1
\(?0\d{2}[)-]?\d{8}

可以匹配(010-88886666)这样的电话号码

关于iOS屏幕方向让你找到存在感

关于iOS屏幕方向,让你找到方向感

看了这篇文章,可能是我太笨,有可能是作者太牛逼,反正我是没看懂,都没下他写的demo
写的什么鬼,自己来搞一搞
原文链接:http://lvwenhan.com/ios/458.html

新建一个空项目,在target->General->Deployment Info中勾选

  • Protrait
  • Landscape Left
  • Landscape Right

不然只会支持你所选择的方向(那就没得玩了)
然后再Main.storyboard中拖入一个按钮,放到左上角一些,why?因为不在界面上放个东西,改变方向你会晕的
现在run,手动改变方向command+⬅️,效果给你个截图

可以看到屏幕的方向会随着设备的方向而改变,Landscape Left(顺时针转,home键在左),如果用户锁定了屏幕旋转,那就不用讨论设备转向的情况下屏幕跟随转向的问题了

1
2
3
4
5
6
7
//file ViewController.m
...
- (BOOL)shouldAutorotate
{
return NO;
}
...

显而易见的,这个方法控制我们的页面是否跟随设备转动而改变方向

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×