分类存档: vip - 第3页

吐槽下支付宝的沙箱环境

沙箱账户的查看页面居然只支持ie,实在没有想到大厂前端没有做浏览器兼容,我还在chrome上傻乎乎的等了几天,以为沙箱环境抽风出不来,强烈吐槽~

linux下批量修改文件名

网上找了一堆资料,用来比较方便的rename
rename "s/oldstring/newstring//g" *
这个适合oldstring不是变量的情况,如果想用变量怎么弄,那就用shell了,直接在控制台输入

for((i=1;i<=9;i++))
do 
  mv oldname$i newname$i
done

这样比python,php之类的方便多了,给自己的小机灵赞一个~

php 批量重命名文件

如何用php批量重命名文件

/**
 * php 批量重命名文件
 *
 * @return void
 */
function renamefiles()
{
    $paths = "/path";
    $d = dir($paths);
    while (false !== ($entry = $d->read())) {

        if($entry == '.' || $entry == '..'){

        } else {

        }

        if(strpos($entry, '.mp4')){
            // echo $paths.$entry;
            // echo "原 ".$entry;

            echo "<br>";

            // $newname = strtr($entry, '-t=18121111.htm', '');  
            /*把字符串 "Hello world!" 中的字符 "world" 替换为 "Shanghai":
                echo str_replace("world","Shanghai","Hello world!");
                substr(string,start,length)*/

            $newname = substr($entry, 0, 2).".mp4";

            echo $newname;

            echo "<br>";       

            rename($paths.$entry, $paths.$newname);
        }


    }
    $d->close();
    echo "done";
}

linux移动文件夹中前10个文件

linux移动文件夹中前10个文件

linux复制文件夹中前10个文件
ls |head -n 10 |xargs -i cp -r {} /target
linux移动文件夹中前10个文件
ls |head -n 10 |xargs -i mv {} /target

gitbook一种分布式写作方式

参考:
GitBook文档(中文版)
GitBook 从懵逼到入门

mysql流程控制

流程控制一般三种:顺序,分支,循环

分支

1.if函数

语法:if(exp1,exp2,exp3)
执行顺序:
如果表达式1即exp1成立,则if函数返回表达式2即exp2的值,否则返回表达式3即exp3的值

2.case结构

语法:case [变量|表达式|字段]#区间判断的时候省略
when 要判断的值或要判断的条件1 then 返回值1或语句1;
when 要判断的值 then 返回值2或语句2;
when 要判断的值 then 返回值3或语句3;

else 要返回的值n
END CASE;
与其他语言相比,没有break,但是;默认和break功能一样

#case案例
create procedure test_case(IN score INT)
begin
    case
    when score>=90 and score<=100 then select 'a';
    when score>=80 then select 'b';
    when score>=60 then select 'c';
    else select 'd';
    end case;
end $

3.if结构

语法:
if 条件1 then 语句;
elseif 条件2 then 语句2;
[else 语句n;]
end if
只能在begin end里用

#if结构案例
create function test_if(score INT) returns char
begin
    if score>=90 and score<=100 then return 'a';
    elseif score>=80 then return 'b';
    elseif score>=60 then return 'c';
    else return 'd';
    end if;
end $

4.循环

分类:while,loop,repeat
控制:iterate类似continue:结束本次循环,进入下一次,
leave类似break:结束当前所在循环

1.while语法

[标记:] while 条件 do 循环体;
end while [标记];

2.loop语法

[标记:] loop
循环体;
end loop [标记];
用来模拟简单的死循环

3.repeat语法

[标记:] repeat
循环体;
until 结束循环的条件
end repeat [标记];

#while案例:根据传入次数n,向table1插入n条记录
##没有返回值,所以用procedure而不用function
create procedure pro_while1(IN insertCount INT)
begin
    declare i int default 1;
        while i<=insertCount do
        insert into table1(name)values(concat("a1",i));
        set i=i+1;
    end while;
end $

call pro_while1(3)$
#leave案例:根据传入次数n,向table1插入n条记录,如果次数>=20,则停止
##没有返回值,所以用procedure而不用function
truncate table table1$
drop procedure pro_while1$
create procedure pro_while1(IN insertCount INT)
begin
    declare i int default 1;
        label1:while i<=insertCount do
        insert into table1(name)values(concat("a1",i));
        IF i>=20 then leave label1;
        end IF;
        set i=i+1;
    end while label1;
end $

call pro_while1(3)$
#iterate案例:偶数次插入
create procedure pro_it(IN count INT)
begin
    declare i int default 0;
    a:while i<count do
        set i=i+1;
        if mod(i,2)!=0 then
                iterate a;
        end if;
        insert into table1(name)values(concat("a1",i));
    end while a;    
end$

mysql函数

mysql的函数和存储过程

共同点:

  1. 都是一组sql语句集合
  2. 提高代码复用性
  3. 简化操作
  4. 减少编译次数,并减少了和数据库服务器的连接次数

区别:

存储过程可以有0个返回或者多个返回,适合批量插入和更新
函数:有且仅有一个返回,适合做完数据处理后返回一个结果

函数语法说明

create function funcname(params) returns return_type
begin
    func_detail;
end

ps:
1. params包含两个部分:参数名 参数类型
2. 函数体必须包含return 语句
3. delimiter语句设置结束标记

函数调用说明

select funcname(params)

案例

返回table1的记录数

create function myf1() returns int
begin
    declare c int default 0;
    select count(*) into c
    from table1;
    return c;
end $

select myf1() $

根据name返回age

create function myf2(uname varchar(20)) returns int
begin
    set @age=0;
    select age into @age
    from table1 where name=uname;
    return @age;
end $

select myf2("a2") $

查看函数

show create function myf2;

删除函数

drop function myf2;

git极简教程-温故知新

git极简教程-温故知新

0.配置

全局签名配置

git config --global user.name harrietlq
git config --global user.email nbllq@qq.com

项目签名配置,切换到项目目录下

git config user.name harrietlq
git config user.email nbllq@qq.com

给远程的github仓库配置别名为amy,以后pull&push用amy来代替一长串github仓库地址,方便爽~

git remote add amy https://github.com/amyflash/smart_trading.git
git remote add amy_ssh git@github.com:amyflash/smart_trading.git

查看已经配置好啦

git remote -v

1.查看历史记录的4种方式

git log 全显示
git log –pretty=oneline #一行显示一次提交
git log –oneline #一行显示一次提交,hash截取一部分
git reflog #显示步数

ps: vim 语法里面:set nu为显示行号,空格键下翻,p翻页

2.版本前进后退

git reflog 找到hash index
git reset –hard [hash index]

2.1 reset 3 params:

–hard: 在本地库移动head;重置暂存区;重置工作区
–mixed:在本地库移动head;重置暂存区
–soft:仅仅在本地库移动head

2.2 当前文件add了,没有commit,则用git reset –hard head 可以回退到没有add的状态

如果前文件add并且commit了,就用git reset –hard [hash index]这种方式回退到对应状态;这个功能可以帮助找回在工作区误删的文件,前提是该文件至少从工作区add到暂存区过,或者提交到本地库过

3.比较文件差异

将工作区文件和暂存区进行比较

git diff filename

将工作区的文件和本地库历史记录比较

git diff history-version filename
git diff head~3 filename

不带文件名,多个文件比较

git diff head

4.分支操作

查看所有分支

git branch -v

创建新分支

git branch 分支名

切换分支

git checkout 分支名

合并分支

先切换到要被合并的那个分支,比如把hot_fix分支合并到master分支,那么就执行命令
git checkout master
然后 执行
git merge hot_fix

5.解决冲突

diff以后程序员间大pk即可

6.向远程仓库推送本地master分支(创建者)

git pull amy master
git push amy master

git pull = git fetch+git merge
ps: git pull更新代码的话就比较简单暴力了,所以不要用git pull,用git fetch和git merge更安全

7.clone远程仓库到本地(参与者)

git clone https://github.com/amyflash/smart_trading.git
这个命令执行效果:
完整把远程库下载到本地
创建origin地址别名
初始化本地库

8.如何邀请其他人加入这个项目

[百度经验写得不错,我就不重复造轮子了]

LAMPP禁止目录浏览的方法

尼玛原来我的服务的目录一直是裸奔的,改改,必须改

vim /opt/lampp/etc/httpd.conf
Options Indexes FollowSymLinks ExecCGI Includes
#修改为:
Options FollowSymLinks ExecCGI Includes

linux下用xampp安装php集成环境,并修改各自端口号

解决端口号占用问题

安装完成后启动时可能会遇到端口号占用,1-4根据自己启动时报错决定是否修改,若1-4有修改的,5必须修改

1. Another web server is already running

说明apache端口号被占用

进入/opt/lampp/etc目录下,找到文件httpd.conf,此文件中有两个地方需要修改

a.找到Listen行修改,如:1211

b.找到ServerName行修改,如:10.0.0.251:1211

2. Another web server with SSL is already running

说明SSL端口号被占用

进入/opt/lampp/etc/extra目录下,找到文件httpd-ssl.conf,此文件中有三个地方需要修改

a.找到Listen行修改,如:1212

b.找到ServerName行修改,如:10.0.0.251:1212

c.找到节点VirtualHost行修改,如:default:1212

3. Another MySQL daemon is already running

说明MySQL端口号被占用

进入/opt/lampp/etc目录下,找到文件my.cnf,此文件中有两个地方需要修改

a.分别找到port行修改,如:1213

4. Another FTP daemon is already running

说明FTP端口号被占用

进入/opt/lampp/etc目录下,找到文件proftpd.conf,此文件中有一个地方需要修改

a.找到Port行修改,如:1214

5.修改完上面各自的配置文件端口号后,再修改xampp中的配置端口号

进入/opt/lampp目录下,找到文件xampp,此文件中有四个地方需要修改
找到testport,总共有四个,分别对应apache、SSL、MySql、FTP的端口号根据上面修改的端口号,对应修改此配置文件中的端口号(上面没有修改的端口,则对应的不需要改动)

修改完之后重新启动就ok了

[参考文章]