将光标移动到最后

function moveEnd(obj){
    obj.focus();
    var len = obj.value.length;
    if (document.selection) {//IE
        var sel = obj.createTextRange();
        sel.moveStart('character',len);
        sel.collapse();
        sel.select();
    } 
    else if (typeof obj.selectionStart == 'number' && typeof obj.selectionEnd == 'number') {//非IE
        obj.selectionStart = obj.selectionEnd = len;
    }

}

npm install安装包出错”ERR windows_NT”

淘宝的镜像地址https://npm.taobao.org/

此问题应该是:npm在国内被墙了

其实可以用cnpm解决

 npm install -g cnpm 

之后通过cnpm安装各类包

一些命令

npm -g install npm@2.9.1  //安装npm到某个版本
npm -g install nv0.12.2  //安装node到某个版本
首先,我们的npm包无所谓安全性,所以不要使用性能和效率更慢的https,转而使用http,相关命令如下:
关闭npm的https
npm config set strict-ssl false

npm镜像(包下载地址)

npm config set registry "https://registry.npm.taobao.org"

一般这样运气的好的话,速度就会快许多,可能会安装成功。如果你还脸黑,这样设置还是一直卡住无法下载依赖,那就只能使用proxy代理方式来解决了,命令如下:
设置npm获取的代理服务器地址:

npm config set proxy=https://代理服务器ip:代理服务器端口 
我就比较脸黑,最后在国外vps上加了http代理才将这些依赖全部下载下来。
希望本文能让一直无法正常下载npm而抓狂的同学有所帮助。
清除npm的代理命令如下:
npm config delete http-proxy
npm config delete https-proxy

也可以试试

npm cache clean//清除缓存
npm install

初步使用Node连接Mysql数据库

使用Node做Web页面开发,基本上是连接非关系型数据库mongodb,而这里我还是先尝试连接了一下mysql数据库,因为相对于mysql来说mongodb过于生疏,想着快速出来页面,所以选择相对熟悉一些的mysql。

1. 安装mysql

下载MySQL :MySQL Downloads,并进行安装。安装完,会引导你对数据库进行配置,设置root密码以及创建普通用户以及密码。

2. 安装Node-mysql

通过npm安装mysql的软件包,通过它方便快速调用函数连接mysql数据库。进入项目文件夹,执行npm install mysql –save就行了。

安装完,在项目文件夹的node_modules目录下会生成mysql的目录。

3. 查看readme文档

如果你认真读了README文档,接下来的步骤就不用再看了,避免由于版本不一致而误导你。

4. 连接mysql数据库

进入项目文档,新建TestMysql.js示例,编写如下代码:

var mysql   = require('mysql');
var connection = mysql.createConnection({
 host   : 'localhost',
 user   : 'me',
 password : 'secret',
 database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
 if (err) throw err;

 console.log('The solution is: ', rows[0].solution);
});

connection.end();

连接基本参数

  • host 主机名,localhost代表本地
  • user Mysql用户
  • password 密码
  • database 连接的数据库

client.connect()连接数据库

client.query()执行SQL语句
client.end()关闭连接。
然后通过node TestMysql.js执行程序,确保你在执行之前已经启动了Mysql服务。

5. 增删改查

使用数据库无外乎增删改查,下面示例可能会对你有些帮助。

var mysql   = require('mysql');
var connection = mysql.createConnection({
 host   : 'localhost',
 user   : 'me',
 password : 'secret',
 database : 'my_db'
});
 
connection.connect();
 
// 增加记录
client.query('insert into test (username ,password) values ("lupeng" , "123456")');
 
// 删除记录
client.query('delete from test where username = "lupeng"');
 
// 修改记录
client.query('update test set username = "pengloo53" where username = "lupeng"');
 
// 查询记录
client.query("select * from test" , function selectTable(err, rows, fields){
 if (err){
  throw err;
 }
 if (rows){
  for(var i = 0 ; i < rows.length ; i++){
   console.log("%d\t%s\t%s", rows[i].id,rows[i].username,rows[i].password);
  }
 }
});
 
connection.end();
6.创建连接池
在开发web应用程序时,连接池是一个很重要的概念。建立一个数据库连接所消耗的性能成本是很高的。在服务器应用程序中,如果为每一个接收到的客户端请求都建立一个或多个数据库连接,将严重降低应用程序性能。

因此在服务器应用程序中通常需要为多个数据库连接创建并维护一个连接池,当连接不再需要时,这些连接可以缓存在连接池中,当接收到下一个客户端请求时,从连接池中取出连接并重新利用,而不需要再重新建立连接。

  var mysql = require('mysql');
  var pool = mysql.createPool({
  host : 'localhost',
  port : 3306,
  database : 'node',
  user : 'root',
  password : 'root'
});
pool.getConnection(function(err,connection) {
if(err) {
  console.log("建立连接失败");
}else{
  console.log("建立连接成功");
  console.log(pool._allConnections.length);//1
  connection.query('select * from user',function(err,rows) {
    if(err) {
      console.log("查询失败");
    }else{
      console.log(rows);
    }
    //connection.destroy();
    console.log(pool._allConnections.length);//0
   });
}
pool.end();
})

php历遍json对象

//直接上例子:
$string={"文字1":{"link":"链接","son":{"文字11":"链接","文字12":"链接"}},"文字2":{"link":"链接"}};
$json=json_decode($string,true);
foreach($json as $key=>$arr)
{
    echo "[$key]=".$arr['son']." *****<br />";//前者是key后者是值(值可能还是数组)
    foreach($arr as $keyChild=>$arrChild)
    {
      echo “[$keyChild]=$arrChild —–<br />”;
    }
}

addEventListener之handleEvent

addEventListener() 方法是将指定的事件监听器注册到目标对象上,当该对象触发指定的事件时,指定的回调函数就会被执行。

var obj = {
     name: ‘foo’,
     handleEvent: function() {
           alert(‘click name=’+ this.name);
    }
};
document.body.addEventListener(‘click’, obj, false);// 注意:该接口属于DOM2, 所以IE6~IE8不能直接使用哦~

这样,在 element 触发event事件后,调用的是handleEvent 方法,且其中的 this 是指实现EventListener接口的对象,这里指向obj对象。

webstorm8.0配置less

1、安装NodeJs

安装完之后打开命令提示符(win+r),分别输入node -v以及npm -v如果返回版本号说明你安装成功了

2、安装less

在“命令提示符”下运行命令“npm install less -g”,然后npm就开始下载并安装LESS。
注:如上命令出现 npm ERO nwtwork那么可以通过此"npm --registry=https://registry.npm.taobao.org install less -g"安装;如果“lessc -v”没有版本信息请配置环境变量
npm 默认是从国外的源获取和下载包信息, 不慢才奇怪. 可以通过简单的 ---registry 参数, 使用国内的镜像 https://registry.npm.taobao.org
3、在WebStorm里面配置LESS编译

这个步骤稍微复杂一些,打开WebStorm,找到“File -> Settings”,在“IDE Settings”里面找到“External Tools”。

击“+”,如图填写“Name”和“Group”,在“Tool settings”里面有三个项目需要填写。“Program”选择“node.exe”的实际路径,“Working directory”就是nodejs的安装目录。

http://www.weste.net/uploadfile/2014/0928/20140928124936684.jpg

最重要的就是“Parameters”,格式为:

lessc安装的目录lessc $FilePath$

在初次打开less文件的时候,在编辑界面的右上方会出现一个“Add watcher”链接,这里就是为了为此项目的less文件配置watcher的地方,点击开可以对输出路径进行配置“Output paths to refresh”,其他配置无需变化。

http://www.weste.net/uploadfile/2014/0928/20140928125043789.jpg

如果想再次修改watcher,在“File -> Settings -> External Tools”里面可以再次修改。

java环境配置及apache-maven配置

Java环境配置

第一步,下载JDK 1.7 安装包或其它安装包

第二步,成功安装之后,进行测试是否真的成功安装,点击【开始】—-【运行】—-输入 CMD,在命令提示符里面输入“Java -version”并按回车键,出现对应版本号,即为安装成功。

第三步,下面开始配置环境变量,右击【我的电脑】—【属性】—–【高级】—【环境变量】。

第四步,选择【新建系统变量】–弹出“新建系统变量”对话框,在“变量名”文本框输入“JAVA_HOME”,在“变量值”文本框输入JDK的安装路径(也就是步骤5的文件夹路径),单击“确定”按钮。

第五步:在“系统变量”选项区域中查看PATH变量,如果不存在,则新建变量 PATH,否则选中该变量,单击“编辑”按钮,在“变量值”文本框的起始位置添加“%JAVA_HOME%\bin;%JAVA_HOME%\jre \bin;”或者是直接“%JAVA_HOME%\bin;”,单击确定按钮。

第六步,现在测试环境变量的配置成功与否。在DOS命令行窗口输入“JAVAC”,输出帮助信息即为配置正确。

apache-maven环境配置

第一步,添加新的系统环境变量MAVEN_HOME, 并设置其值为你安装的目录MAVEN_HOME= D:\Softwares\apache-maven-3.2.2

第二步,更新系统PATH 变量, 添加;%MAVEN_HOME%\bin;到尾部

第三步,测试maven配置是否成功打开命令行窗口,输入mvn -v,如果有maven 版本信息输出则证明配置成功,否则请查看自己配置路径等是否正确。

注意:安装maven前请确保已安装JDK并成功配置其环境变量。

sql语句,基本的增删改查语句

insert into 表名(列名1,列名2,列名3......) values(值1,值2,值3......);
insert into depts(name,description) values('安全管理部','杭州电子科技大学负责学生安全');


update 表名 set 要修改的列名1=改后的新值,要修改的列名2=改后的新值,......  where 修改的条件
update depts set name='治安部',description='杭州电子科技大学负责校园治安'  where dept_id=11;

delete   from  表名 where 删除条件
delete   from  depts   where dept_id=11;


select 要显示的列名1,要显示的列名2,要显示的列名3,..... from 表名;
select name,dept_id from depts;

面对对象编程的理解,直接上代码


function People(name){//People是构造函数
          this.name=name;//私有属性,实例指向自己的属性
          People.prototype.talk=function(msg){//共有方法,实例指向同一个内存
               alert(msg);
          }
}
var person1=new People("周星驰");//person1是实例
var person2=new People("周润发");//person2是实例

alert(People.prototype);//原型对象

alert(person1.constructor===People);//true;
alert(person2.constructor===People);//true;