解决mysql不可用limit子查询

当你在mysql子查询中使用了limit,那么恭喜你,你会看到

ERROR 1235 (42000): This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME subquery’

limit在mysql中本来的效率就不高,mysql于是也禁止在子查询中使用limit,可是如果非要用呢

比方说需求是:

  • 一等奖5名
  • 二等奖15名
  • 获了一等奖的不能再获二等奖

直觉告诉我们,下边的sql是可以的。

Read More

大学-公司数据爬取

今天需要搞大学数据库,目标是新浪高考网。
仔细分析其页面的数据获取是使用Jsonp的js方式。于是在控制台能使用js爬取了大学数据源(1378条)

这里要记录的是爬取中数组合并的问题

Read More

搭建你自己的Hexo博客

Hexo基于node.js,可用于生成静态博客,结合github和Mac,可以专注创作了。
深入学习见文末引用。

hexo安装

brew install node
sudo npm install hexo-cli -g  #全局安装

创建博客

Hexo使用命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
hexo init <folder>  #执行init命令初始化hexo到你指定的目录
hexo new [layout] <title> #创建文章
hexo new page <title> #生成新页面
hexo generate #自动根据当前目录下文件,生成静态网页
-d #deploy after
-w #查看文件变化
hexo publish [layout] <filename> #发布草稿
hexo server #运行本地服务
-p #端口
-s #只生成静态文件
-l #生成log
--draft 连草稿也生成预览
hexo deploy
-g #generate before
hexo render <file1> [file2] ...
-o #output destination
hexo migrate <type> #Migrates content from other blog systems.
hexo clean #Cleans the cache file (db.json) and generated files (public).
hexo list <type> #Lists all routes.

Read More

编写可维护javascript

for-in:对象属性遍历

  • 循环不仅遍历对象实例属性,还遍历从原型继承来的属性;若只想遍历该对象属性

var prop,obj={a:1.b:2,c:3};
for (prop in obj) {
    if (obj.hasOwnProperty(prop)) {
        //遍历只属于该对象的属性
    }
}

in:判断属性在对象中是否存在

var obj={
    cnt:0,
    related:null
};
if("cnt" in obj){
    //do some code
}

instanceof:判断一个变量是否某个js 对象( 非dom对象)的实例

typeof:判断运算数的类型
  • 返回number,boolean,string,function,object,undefined

处理错误

  • 自定义错误

function MyError(msg){
    this.msg=msg;
}
MyError.prototype = new Error();
  • try-catch-finally

基于对象继承:不破坏源对象

var person={
  age:11,
  name:'virgil'
};
var myPerson=Object.create(person);
myPerson.age=12;
console.log(myPerson.age,person.age);//12 11

基于类型继承

function Person(name){
    this.name;
}

function Author(name){
    Person.call(this,name); //继承构造器
}

Author.prototype = new Person(); //原型继承

禁止修改

  • preventExtension #防止扩展
  • seal #密封
  • freeze #冻结

引用

  • Array非固定长度,可以动态增删,因此数组是引用类型

    var arr=[1,2,3];
    var arrRef=arr;
    arr.push(4);
    console.log(arrRef);

作用域链

  • 全局作用域中,该链中有且只有一个对象,即全局对象
  • 函数中,有两个对象,先会被访问到的是调用对象,然后是全局对象

《JavaScript核心概念及实践》

如有疑问,请文末留言交流或邮件:newbvirgil@gmail.com 本文链接 : https://newbmiao.github.io/2015/03/28/maintainable-javascript-note.html

php的赋值与引用

针对php的引用,有时总会错误认为指向一块内存,修改也会影响到该内存数据,直到看到php的源码分析,有了更清楚的理解,部分出自< php核心技术和最佳实践 >

写时复制

  • web

    • php变量有is_ref和refcount标志,用来标识是否引用和变量引用次数
  • 当两个变量$a=$b;,虽然不是引用,但是值相同,为了内存复用,$b 的refcount会加1

  • 只有当$b 的值改变,才会新开辟内存写入值,并置refcount为1

    Read More

jquery 和 html5

Jquery

选择器

  • prev>child
  • prev+next
  • prev~siblings
  • [attr^=”val”] : 开头为val的属性
  • [attr*=”val”] : 包含val的属性
  • [attr~=”val”] : 将attr以空格分隔后,含有val片段的属性
  • [attr|=”val”] : 为val或val-开头的属性

Read More

js数据类型

数据类型

  • 字符串对象和字符串

    • 字符串可隐式转化为字符串对象

      var a=new String('a');
      var b=new String('a');
      a==b;    //false,引用不同
      a===b;    //false,引用不同
      a=='a';    //true,内部转换
      a==='a';//false,值相同,类型不同
      String('a')==='a';//true,显式转换为字符串
    • 是不可变的,其方法是非破坏性的,不能改写其内容。

      var a='abc';
      a[0]='A';
      console.log(a);//结果仍是'abc';

Read More