git 分支的衍合

rebase和merge区别:
衍合是按照每行的修改次序重演一遍修改,而合并是把最终结果合在一起。

git rebase –continue 如果打补丁的时候出现了问题,就会提示你处理冲突。处理好了,可以运行git rebase –continue继续直到完成

git rebase –abort 放弃rebase过程

git rebase –skip 用衍合的分支替换当前分支

Git目录介绍

description 文件仅供 GitWeb 程序使用,所以不用关心这些内容。
config 文件包含了项目特有的配置选项
info 目录保存了一份不希望在 .gitignore 文件中管理的忽略模式 (ignored patterns) 的全局可执行文件。
hooks 目录包住了第六章详细介绍了的客户端或服务端钩子脚本。

另外还有四个重要的文件或目录:
HEAD 及 index 文件,objects 及 refs 目录。这些是 Git 的核心部分。

objects 目录存储所有数据内容
refs 目录存储指向数据 (分支) 的提交对象的指针
HEAD 文件指向当前分支
index 文件保存了暂存区域信息

Ubuntu防Arp攻击

在终端输入arp,如果除了显示网关IP和MAC地址外,还出现别的计算机的IP和地址的话,说明你现正被出现的那台计算机攻击,不爽的话可以直接走过去按下他的Power键,要是懒得去的话,那就继续看吧。

步骤一. 在能上网时,在终端输入命令:arp,查看网关IP对应的正确MAC地址,(因为受攻击后,网关MAC地址会变成发动攻击的那台计算机的MAC地址,最简 单的就是多输命令arp几次,直到显示的MAC地址和其他计算机的MAC地址不同时,就是网关IP对应的正确MAC地址了)将其记录下来。 注:如果已经不能上网,则先运行一次命令arp –d,将arp缓存中的内容删空,计算机可暂时恢复上网(攻击如果不停止的话),一旦能上网就立即将网络断掉(禁用网卡或拔掉网线),再运行arp。

步骤二. 如果已经有网关的正确MAC地址,在不能上网时,手工将网关IP和正确MAC绑定,可确保计算机不再被攻击影响。步骤如下:
sudo arp -s x.x.x.x xx:xx:xx:xx:xx:xx
#(其中x.x.x.x是网关的IP地址,xx:xx:xx:xx:xx:xx是网关的mac地址)
sudo ifconfig eth0 -arp

每一次电脑重启后以上操作会失效,需要再运行一次。

很多人说以上步骤要修改配置文件很麻烦,这是一个图形界面的解决方式:
用鼠标点击“系统”->“首选项”->“会话”,点击“新建”按钮,在名称一栏输入一个名字,如arp-static,命令一栏中输入
程序代码
gksu “/usr/sbin/arp -s x.x.x.x xx:xx:xx:xx:xx:xx”
最后确定,然后在“启用”前打上勾,这样每次启动ubuntu进入桌面的时候,您只要输入密码就可以运行绑定命令了。(其中x.x.x.x是网关的IP地址,xx:xx:xx:xx:xx:xx是网关的mac地址)

Js自定义方法创建与基本使用



//自定义方法声明
var box = function(){
	alert('11');
}
box();

function box(){
	alert('hello world');
}
box();

var box = new Function('num1','num2','return num1+num2');
alert(box(1,2));

//阶乘
function box(num){
	if(num<=1){
		return 1;
	}
	//4 * 3 * 2 * 1
	//arguments.callee表示自身
	return num * arguments.callee(num-1);
}

//window是js里面最大的对象,最外围的对象
//在最外围this就是window,所以可以使用this.color
var color = 'red';
alert(window.color);
alert(this.color)
alert(box(4));

//所以下面的方法也是定义一个color属性
window.color = '红色';
alert(color);

//每个函数都包含两个方法,一个是length,一个是prototype
//prototype包含两个方法一个是apply,call,在特定的作用域中调用函数
function box(name,age){
	return name+age;
}

function sum(arg1,arg2){
	//调用box,this是作用域,后面的数组是要传的参数
	//return box.apply(this,[arg1,arg2]);
	return box.apply(this,arguments);
	//以下为call
	//return box.call(this,arg1,arg2);
}
alert(sum(10,1));


//以下为call,apply实用,其实就是可以冒充作用域
var color = 'red';

var box={
	color:'blue'
}

function SayColor(){
	 alert(this.color);
}

SayColor(); //全局
SayColor.call(window);  //window下面的
SayColor.call(box);		//box对象下

error_reporting 程序报错级别

<?php 
  /*
  error_reporting($level)  设定错误显示级别
  
  E_ALL 30719
  E_COMPILE_ERROR 64
  E_COMPILE_WARNING 128
  E_CORE_ERROR     16
  E_CORE_WARNING 32
  E_ERROR  1
  E_NOTICE 8
  E_PARSE 4
  E_RECOVERABLE_ERROR 4096
  E_STRICT 2048			//程序运行时间报错提示
  E_USER_ERROR  256
  E_USER_NOTICE 1024
  E_USER_WARNING  512
  E_WARNING 2
  
  错误提示级别是以1的二进制往上增长,如果想以数字表示错误级别。只需要将两个错误级别用 “位或” 运算符计算
 此处用到了位运算
 比如7  E_ERROR | E_WARNING | E_PARSE
 也就是  1 | 2| 4
 E_ALL 表示为显示所有错误,所以也刚刚好是所以级别的 “位或”值
  */

/**
 * 将数字错误级别转换成字符串格式返回
 * @param int $value
 * @return string
 * */
function error2string($value)
{
    $level_names = array(
        E_ERROR => 'E_ERROR', E_WARNING => 'E_WARNING',
        E_PARSE => 'E_PARSE', E_NOTICE => 'E_NOTICE',
        E_CORE_ERROR => 'E_CORE_ERROR', E_CORE_WARNING => 'E_CORE_WARNING',
        E_COMPILE_ERROR => 'E_COMPILE_ERROR', E_COMPILE_WARNING => 'E_COMPILE_WARNING',
        E_USER_ERROR => 'E_USER_ERROR', E_USER_WARNING => 'E_USER_WARNING',
        E_USER_NOTICE => 'E_USER_NOTICE' );
    if(defined('E_STRICT')) $level_names[E_STRICT]='E_STRICT';
    $levels=array();
    if(($value&E_ALL)==E_ALL)
    {
        $levels[]='E_ALL';
        $value&=~E_ALL;
    }
    foreach($level_names as $level=>$name)
        if(($value&$level)==$level) $levels[]=$name;
        
    return implode(' | ',$levels);
}

/**
 * 将错误级别转换字符串格式转换成数字返回
 * @param int $string
 * @return int
 * */
function string2error($string)
{
    $level_names = array( 'E_ERROR', 'E_WARNING', 'E_PARSE', 'E_NOTICE',
        'E_CORE_ERROR', 'E_CORE_WARNING', 'E_COMPILE_ERROR', 'E_COMPILE_WARNING',
        'E_USER_ERROR', 'E_USER_WARNING', 'E_USER_NOTICE', 'E_ALL' );
    if(defined('E_STRICT')) $level_names[]='E_STRICT';
    $value=0;
    $levels=explode('|',$string);
    foreach($levels as $level)
    {
        $level=trim($level);
        if(defined($level)) $value|=(int)constant($level);
    }
    return $value;
}

?> 

php正则过滤js脚本

<?php
header('Content-type:text/html;charset=utf-8');
$content = '
<script type="text/javascript">
	window.onload=function(){
		
	}
</script>
<html>
</body>
<script>document.write("hello world")</script>
Hello
</body></html>
';

$pattern = '#<script(\s|.)*?<\/script>#i';

$content = preg_replace($pattern,'', $content);
var_dump($content);

数据单位转换

1KB (Kilobyte 千字节)=1024B,
1MB (Megabyte 兆字节 简称“兆”)=1024KB,
1GB (Gigabyte 吉字节 又称“千兆”)=1024MB,
1TB (Trillionbyte 万亿字节 太字节)=1024GB,
1PB(Petabyte 千万亿字节 拍字节)=1024TB,
1EB(Exabyte 百亿亿字节 艾字节)=1024PB,
1ZB (Zettabyte 十万亿亿字节 泽字节)= 1024EB,
1YB (Yottabyte 一亿亿亿字节 尧字节)= 1024ZB,
1BB (Brontobyte 一千亿亿亿字节)= 1024YB.

Mysql 数据库文件转移

#/etc/init.d/mysql stop        //停止mysql服务

#mv /var/lib/mysql/ /home/mysql
#cd /home
#sudo chown -R mysql:mysql mysql/

#vim /etc/mysql/my.cnf       //找到datadir 改成你现在的目录
datadir     = /home/mysql/

#vim /etc/apparmor.d/usr.sbin.mysqld

// Change

/var/lib/mysql/ r,
/var/lib/mysql/** rwk,

// To

/home/zhouitpro/mysql/ r,
/home/zhouitpro/mysql/** rwk,

#/etc/init.d/mysql restart   //重启mysql服务完成