bobneo
bobneo - 认证专家
为自由而编程,因编程而自由。联系QQ:632906391

注册于 1 year ago

回答
62
文章
29
关注者
0

$arr = json_decode(json_encode((array) simplexml_load_string($string)), 1);

$data = (array)simplexml_load_string($apiResponse->getData());

$data = $this->fromXml($xml);
$contents = $data['req_info'];
$decrypt_data = openssl_decrypt(
    base64_decode($contents),
    'AES-256-ECB',
    md5(self::$instance->key),
    OPENSSL_RAW_DATA
);
$data = array_merge($this->fromXml($decrypt_data),$data);

function numToRmb($num){
    $rmbNum = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'];
    $rmbUnit = ['分','角','元','拾','佰','仟','万','拾','佰','仟','亿','拾','佰','仟','万','拾','佰','仟'];
    //数字预处理
    if($num == '' || $num == 0){
        return '数字错误 -1';
    }else {
        $num = number_format($num, 2, '.', '')*100;
    }
    if (strlen(number_format($num, 0, '', '')) > 18) {
        return '输入的金额不得超过千万亿!';
    }
    $rmb = '';
    for ($out1 = 0 ; $out1 < strlen(number_format($num, 0, '', '')); $out1++) {
        $numRmb = $rmbNum[substr(number_format($num, 0, '', ''), $out1, 1)];
        $unit = $rmbUnit[strlen(number_format($num, 0, '', ''))-$out1-1];
        $rmb = $rmb.$numRmb.$unit;
    }
    $rmbStrlen = strlen($rmb);
    for ($out2=0; $out2 < $rmbStrlen; $out2=$out2+3) {
        $tempRmb = substr($rmb, $out2, 6);
        if ($tempRmb=='零元'||$tempRmb=='零万'||$tempRmb=='零亿') {
            $left = substr($rmb, 0, $out2);
            $right = substr($rmb, $out2+3);
            $rmb = $left.$right;
            $out2 = $out2 - 3;
            $rmbStrlen = $rmbStrlen - 3;
        }elseif ($tempRmb=='零拾'||$tempRmb=='零佰'||$tempRmb=='零仟') {
            $left = substr($rmb, 0, $out2+3);
            $right = substr($rmb, $out2+6);
            $rmb = $left.$right;
            $out2 = $out2 - 3;
            $rmbStrlen = $rmbStrlen - 3;
        }elseif ($tempRmb=='零分'||$tempRmb=='零角') {
            $left = substr($rmb, 0, $out2);
            $right = substr($rmb, $out2+6);
            $rmb = $left.$right;
            $out2 = $out2 - 6;
            $rmbStrlen = $rmbStrlen - 6;
        }
        if ($tempRmb=='零零') {
            $left = substr($rmb, 0, $out2);
            $right = substr($rmb, $out2+3);
            $rmb = $left.$right;
            $out2 = $out2 - 3;
            $rmbStrlen = $rmbStrlen - 3;
        }
        if(substr($rmb,strlen($rmb)-3)=='元') {
            $rmb = $rmb.'整';
        }
    }
    return $rmb;
}

function build_order_no()
{
    return date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
}

算法解释:
用uniqid获取一个基于当前的微秒数生成的唯一不重复的字符串(但是他的前7位貌似很久才会发生变动,所以不用考虑可删除),取其第8到13位。但是这个字符串里面有英文字母,咋办?用ord获取他的ASCII码,所以就有了下一步:用str_split把这个字符串分割为数组,用array_map去操作(速度快点)。然后返回的还是一个数组,KO,在用implode弄成字符串,但是字符长度不定,取前固定的几位,然后前面加上当前的年份和日期,这个方法生成的订单号,全世界不会有多少重复的。当然,除非你把服务器时间往前调,但是调也不用怕,哥不相信他会在同一微秒内下两次订单,网络数据传输也要点时间的,即便你是在本地。

JS的AMD和CMD规范
JS模块一开始是同步加载的,这在浏览器端体验是不好的,为了解决浏览器端异步加载模块的问题,出现了AMD规--require.js 和 CMD规范。

commonjs
为了适应服务器端js的开发,而出现的模块化编程技术。

shell代码的第一行的格式,通常如下

#!/usr/bin

//python的话
#!/usr/bin/python3

这是什么意思呢?
这个代码要执行这个可执行文件时要使用哪个命令来执行.

chmod +x demo.sh
.demo.sh
.py_demo.py

如果不写这一行的话,就需要指定使用哪个命令来执行

/usr/bin demo.sh
/usr/bin/python3 py_demo.py

=~的用法说明

~ 其实是对后面的正则表达式表示匹配的意思,如果匹配就输出1, 不匹配就输出0
通常只在 [[ ]] 中使用

例子

GitBranch=master
if [[ $1 =~ .*/$GitBranch$ ]];
then
    echo $GitBranch ref received. Deploying $GitBranch branch to production...
else
    echo Ref $1 successfully received. Doing nothing: only the master branch may be deployed on this server.
fi

应用场景
个人或者公司通过git托管项目,有时候项目很多,但是都不大,单独为每个项目创建一个repository又不值得,这个时候,可以把相似功能的项目抽到一个repository当中,这个时候,可以通过sparse checkout来实现我们所要的功能。

也就是设定sparse checkout后,我可以只同步自己想要的部分代码,不用所有代码都更新。

具体操作

cd .git
git config core.sparseCheckout true
echo "demofile" >> .info/sparse-checkout //demofile就是我想要更新的目录

//然后就可以只拉取部分代码了
git pull origin master

给linux用户设置了这个命令解释器后,则只能用于git拉取和推送,不能ssh登录,保护了系统安全。

git-shell - 仅限 Git-SSH 访问的受限登录 shell

这是 SSH 帐户的登录外壳,用于提供受限制的 Git 访问。它只允许执行实现拉/推功能的服务器端 Git 命令,以及git-shell-commands在用户主目录中命名的子目录中存在的自定义命令。

有关用户方面的命令

useradd git #添加系统用户
userdel git #删除系统用户
userdel -r git #完全删除系统用户信息
cat /etc/passwd #查看系统用户列表

有关/etc/passwd

root:x:0:0:root:/root:/bin/bash
分别对应
登录用于名:密码:用户ID:组ID:全名:工作目录:命令解释程序

/sbin/nologin #通常用于可以执行系统命令但是不能shell登录的系统用户,比如www。

遇到这种问题,通常是因为konwn_hosts文件中对应的ip认证信息有误,删除即可

清除旧的公钥信息

ssh-keygen -R 127.0.0.1

发布
问题