public function fn1(){ global $str; $str='liuman'; function fn2(){ echo $GLOBALS['str']; } }
月度归档: 2018 年 12 月
mysql数据库优化
my.ini文件里
数据库地址不能写localhost要用127.0.0.1
[mysqld]
skip-name-resolve #取消dns解析
skip-grant-tables#不需要密码
thread_concurrency=8#CPU合数*2
skip-innodb 改成 #skip-innodb
default-storage-engine 改成 default-storage-engine=INNODB
php写入数据中断解决方案
php.ini中
将
max_execution_time = 30
改为
max_execution_time = 0
Laravel请求和输入
//获取输入数据,不用担心所使用的HTTP方法 $id = Input::get('id'); //可以指定默认值 $id = Input::get('id', 1); //检测提交信息是否存在 if(Input::has('id')) { echo Input::get('id'); } //获取提交的所哟信息 print_r(Input::all()); //获取指定的几个提交信息 print_r(Input::only('id')); //获取排除执行信息外的信息 print_r(Input::except('name')); //用点符号获取数组形式的输入信息 $input = Input::get('users.0.name');
js常用函数
//js 中的算术运算 Math.pow(2,53) // => 9007199254740992: 2 的 53次幂 Math.round(.6) // => 1.0: 四舍五入 Math.ceil(.6) // => 1.0: 向上求整 Math.floor(.6) // => 0.0: 向下求整 Math.abs(-5) // => 5: 求绝对值 Math.max(x,y,z) // 返回最大值 Math.min(x,y,z) // 返回最小值 Math.random() // 生成一个大于等于0小于1.0的伪随机数 Math.PI // π: 圆周率 Math.E // e: 自然对数的底数 Math.sqrt(3) // 3的平方根 Math.pow(3, 1/3) // 3的立方根 Math.sin(0) // 三角函数: 还有Math.cos, Math.atan等 Math.log(10) // 10的自然对数 Math.log(100)/Math.LN10 // 以10为底100的对数 Math.log(512)/Math.LN2 // 以2为底512的对数 Math.exp(3) // e的三次幂 //js 日期和时间 var then = new Date(2011, 0, 1); // 2011年1月1日 var later = new Date(2011, 0, 1, 17, 10, 30);// 同一天, 当地时间5:10:30pm, var now = new Date(); // 当前日期和时间 var elapsed = now - then; // 日期减法:计算时间间隔的毫秒数 later.getFullYear() // => 2011 later.getMonth() // => 0: 从0开始计数的月份 later.getDate() // => 1: 从1开始计数的天数 later.getDay() // => 5: 得到星期几, 0代表星期日,5代表星期一 later.getHours() // => 当地时间17: 5pm later.getUTCHours() // 使用UTC表示小时的时间,基于时区 later.toString() //"Tue Dec 22 2015 15:22:50 GMT+0800 (中国标准时间)" new Date(later.toString()) //Tue Dec 22 2015 15:22:50 GMT+0800 (中国标准时间) //时间加60秒 var time = new Date() time.setTime(time.getTime() + 60000) //js 字符串处理 var s = "hello, world" // 定义一个字符串 s.charAt(0) // => "h": 第一个字符 s.charAt(s.length-1) // => "d": 最后一个字符 s.substring(1,4) // => "ell":第2~4个字符 s.slice(1,4) // => "ell": 同上 s.slice(-3) // => "rld": 最后三个字符 s.indexOf("l") // => 2: 字符l首次出现的位置 s.lastIndexOf("l") // => 10:字符l最后一次出现的位置 s.indexOf("l", 3) // => 3:在位置3及之后首次出现字符l的位置 s.split(", ") // => ["hello", "world"] 分割成子串 s.replace("h", "H") // => "Hello, world": 全文字符替换 s.toUpperCase()
Git远程操作详解
一、git clone
远程操作的第一步,通常是从远程主机克隆一个版本库,这时就要用到git clone命令。
$ git clone <版本库的网址>
比如,克隆jQuery的版本库。
$ git clone https://github.com/jquery/jquery.git
该命令会在本地主机生成一个目录,与远程主机的版本库同名。如果要指定不同的目录名,可以将目录名作为git clone命令的第二个参数。
$ git clone <版本库的网址> <本地目录名>
git clone支持多种协议,除了HTTP(s)以外,还支持SSH、Git、本地文件协议等,下面是一些例子。
$ git clone http[s]://example.com/path/to/repo.git/ $ git clone ssh://example.com/path/to/repo.git/ $ git clone git://example.com/path/to/repo.git/ $ git clone /opt/git/project.git $ git clone file:///opt/git/project.git $ git clone ftp[s]://example.com/path/to/repo.git/ $ git clone rsync://example.com/path/to/repo.git/
SSH协议还有另一种写法。
$ git clone [user@]example.com:path/to/repo.git/
通常来说,Git协议下载速度最快,SSH协议用于需要用户认证的场合。各种协议优劣的详细讨论请参考官方文档。
二、git remote
为了便于管理,Git要求每个远程主机都必须指定一个主机名。git remote命令就用于管理主机名。
不带选项的时候,git remote命令列出所有远程主机。
$ git remote origin
使用-v选项,可以参看远程主机的网址。
$ git remote -v origin git@github.com:jquery/jquery.git (fetch) origin git@github.com:jquery/jquery.git (push)
上面命令表示,当前只有一台远程主机,叫做origin,以及它的网址。
克隆版本库的时候,所使用的远程主机自动被Git命名为origin。如果想用其他的主机名,需要用git clone命令的-o选项指定。
$ git clone -o jQuery https://github.com/jquery/jquery.git $ git remote jQuery
上面命令表示,克隆的时候,指定远程主机叫做jQuery。
git remote show命令加上主机名,可以查看该主机的详细信息。
$ git remote show <主机名>
git remote add命令用于添加远程主机。
$ git remote add <主机名> <网址>
git remote rm命令用于删除远程主机。
$ git remote rm <主机名>
git remote rename命令用于远程主机的改名。
$ git remote rename <原主机名> <新主机名>
三、git fetch
一旦远程主机的版本库有了更新(Git术语叫做commit),需要将这些更新取回本地,这时就要用到git fetch命令。
$ git fetch <远程主机名>
上面命令将某个远程主机的更新,全部取回本地。
默认情况下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名。
$ git fetch <远程主机名> <分支名>
比如,取回origin主机的master分支。
$ git fetch origin master
所取回的更新,在本地主机上要用”远程主机名/分支名”的形式读取。比如origin主机的master,就要用origin/master读取。
git branch命令的-r选项,可以用来查看远程分支,-a选项查看所有分支。
$ git branch -r origin/master $ git branch -a * master remotes/origin/master
上面命令表示,本地主机的当前分支是master,远程分支是origin/master。
取回远程主机的更新以后,可以在它的基础上,使用git checkout命令创建一个新的分支。
$ git checkout -b newBrach origin/master
上面命令表示,在origin/master的基础上,创建一个新分支。
此外,也可以使用git merge命令或者git rebase命令,在本地分支上合并远程分支。
$ git merge origin/master # 或者 $ git rebase origin/master
上面命令表示在当前分支上,合并origin/master。
四、git pull
git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。它的完整格式稍稍有点复杂。
$ git pull <远程主机名> <远程分支名>:<本地分支名>
比如,取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。
$ git pull origin next:master
如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
$ git pull origin next
上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再做git merge。
$ git fetch origin $ git merge origin/next
在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动”追踪”origin/master分支。
Git也允许手动建立追踪关系。
git branch --set-upstream master origin/next
上面命令指定master分支追踪origin/next分支。
如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。
$ git pull origin
上面命令表示,本地的当前分支自动与对应的origin主机”追踪分支”(remote-tracking branch)进行合并。
如果当前分支只有一个追踪分支,连远程主机名都可以省略。
$ git pull
上面命令表示,当前分支自动与唯一一个追踪分支进行合并。
如果合并需要采用rebase模式,可以使用–rebase选项。
$ git pull --rebase <远程主机名> <远程分支名>:<本地分支名>
如果远程主机删除了某个分支,默认情况下,git pull 不会在拉取远程分支的时候,删除对应的本地分支。这是为了防止,由于其他人操作了远程主机,导致git pull不知不觉删除了本地分支。
但是,你可以改变这个行为,加上参数 -p 就会在本地删除远程已经删除的分支。
$ git pull -p # 等同于下面的命令 $ git fetch --prune origin $ git fetch -p
五、git push
git push命令用于将本地分支的更新,推送到远程主机。它的格式与git pull命令相仿。
$ git push <远程主机名> <本地分支名>:<远程分支名>
注意,分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。
如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
$ git push origin master
上面命令表示,将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。
$ git push origin :master # 等同于 $ git push origin --delete master
上面命令表示删除origin主机的master分支。
如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。
$ git push origin
上面命令表示,将当前分支推送到origin主机的对应分支。
如果当前分支只有一个追踪分支,那么主机名都可以省略。
$ git push
如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。
$ git push -u origin master
上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。
不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。如果要修改这个设置,可以采用git config命令。
$ git config --global push.default matching # 或者 $ git config --global push.default simple
还有一种情况,就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用–all选项。
$ git push --all origin
上面命令表示,将所有本地分支都推送到origin主机。
如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用–force选项。
$ git push --force origin
上面命令使用–force选项,结果导致远程主机上更新的版本被覆盖。除非你很确定要这样做,否则应该尽量避免使用–force选项。
最后,git push不会推送标签(tag),除非使用–tags选项。
$ git push origin --tags
原文:Git远程操作详解
php笔记
1、array_merge_recursive 当有重复的键名时,值不会被覆盖,而是将多个相同键名的值递归组成一个数组。
2、cos函数和javascript的cos不同,php的cos参数为弧度,js的cos为角度。
3、php递归使用局部变量传参地址&。
4、stripslashes取消转义。
5、json_encode($data,JSON_UNESCAPED_UNICODE)//中文不编译成Unicode编码。
Github Pages 静态网页建站
创建仓库
略。详见GitHub使用教程。
仓库属性设置
找Github Pages项。点击自动生成,按照提示操作,就会得到该项目的gh-pages 分支。
发布网站成功,地址为 http://chuchus9293.github.io/web2 。
目录下index.html页面作为该网站默认页面。
发布成功
当然也可以自己做HTML网站,通过Github 客户端上传代码很方便。index.html仍为默认页面。
域名绑定到GitHub Page
Github项目设置
在仓库根目录下添加一个CNAME文件,没有后缀名,里面内容为你的域名,不需要添加http://前缀。
若CNAME中为www.example.com 则example.com 将被重定向到 www.example.com,www.example.com仍是自身。
注意CNAME中只能添加一个域名。
创建之后可以在项目settings看到发布地址发生变化,不再有github字样。
DNS解析设置
ccsyi.cn为顶级域名。
www.ccsyi.cn为二级域名。
可以为顶级域名设置A记录,为二级域名设置CNAME,指向username.github.io(Gihub推荐,可以用CDN)。
以下是设置A记录的过程。
拿到GitHub Pages服务器IP。
在花生壳域名解析服务中选中www创建A记录。24小时之内陆续同步到全球各地的dns服务器上。
相关概念
A记录:WEB服务器的IP指向
A (Address) 记录是用来指定主机名(或域名)对应的IP地址记录。
说明:用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置自己域名的二级域名。
就是说:通过A记录,大家可以设置自己的不同域名转到不同的IP上去!如:
www.linuxpig.com 转到IP 1.1.1.1
ftp.linuxpig.com 转到IP 1.1.1.2
mail.linuxpig.com 转到IP 1.1.1.3
CNAME (Canonical Name)记录,(alias from one domain name to another)通常称别名指向
可以将注册的不同域名统统转到一个主域名上去。
与A记录不同的是,CNAME别名记录设置的可以是一个域名的描述而不一定是IP地址。
例如:linuxdog.com 用CNAME指向 linuxpig.com
URL (Uniform Resource Locator )转发:网址转发
功能:如果您没有一台独立的服务器(也就是没有一个独立的IP地址)或者您还有一个域名B,您想访问A域名时访问到B域名的内容,这时您就可以通过URL转发来实现。
url转发可以转发到某一个目录下,甚至某一个文件上。而cname是不可以,这就是url转发和cname的主要区别所在。
例如:
URL转发可以将sina.com.cn 转发到 linuxpig.com/sina/ 上,相应的CNAME只能将 sina.com.cn 转发到 linuxpig.com 上。
TTL值全称是“生存时间(Time To Live)”,简单的说它表示DNS记录在DNS服务器上的缓存时间。
winsows服务器配置apache2.4+php5.6+mysql
mysql开INNODB引擎
skip-innodb 改成 #skip-innodb
default-storage-engine 改成 default-storage-engine=INNODB
Mysql数据库优化
数据库地址不能写localhost要用127.0.0.1
[mysqld]
skip-name-resolve #取消dns解析
skip-grant-tables#不需要密码
thread_concurrency=8#CPU合数*2
php配置
php官网下载:http://windows.php.net/download/ VC11 x64 Thread Safe(apache安全线程)(IIS用非安全线程)
VC11要下载c++2012运行库
解压到D盘。文件夹改名为”php”
跟目录下php.ini-production 改名 php.ini
3、打开php.ini 修改以下内容并删除前面的”;”
Extension_dir = “./” 改 extension_dir = “D:\php\ext”
cgi.force_redirect = 1 改 cgi.force_redirect = 0
以下内容去“;”
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_openssl.dll
extension=php_pdo_mysql.dll
apache配置
apache官网:http://httpd.apache.org/
点击Files for Microsoft Windows
点击ApacheHaus
下载zip和ssl
解压后打开httpd.conf
#LoadModule rewrite_module modules/mod_rewrite.so删除”#”
找Define SRVROOT,定义apache目录路径Define SRVROOT “C:\Program Files\Apache24”
删除Listen 80
所有Require all denied前加#
DirectoryIndex index.html改成DirectoryIndex index.html index.php
最后加入
LoadModule php5_module "d:/php/php5apache2_4.dll" PHPIniDir "D:/php" AddType application/x-httpd-php .php AddType application/x-httpd-php .htm Listen 8080 Listen 8008 Listen 8800 <VirtualHost *:8080> DocumentRoot "D:/weba" <Directory "D:/weba"> Options FollowSymLinks AllowOverride ALL </Directory> </VirtualHost> <VirtualHost *:8008> DocumentRoot "D:/liuman" <Directory "D:/liuman"> Options FollowSymLinks AllowOverride ALL </Directory> </VirtualHost> <VirtualHost *:8800> DocumentRoot "D:/wza" <Directory "D:/wza"> Options FollowSymLinks AllowOverride ALL </Directory></VirtualHost>
管理员权限cmd进入apache/bin目录运行httpd.exe -k install -n apache
laravel子域名和主站同站
Route::group(array('domain' => 'localhost'), function() { Route::get('/',function(){ return 'localhost'; }); }); Route::group(array('domain' => '127.0.0.1'), function() { Route::get('/',function(){ return '127.0.0.1'; }); });