灰姑娘(GO版)

故事背景(简化版)

  • 辛德瑞拉有个继母和2个姐姐,每天被她们欺负
  • 有一天,城里举行一场舞会。参加舞会需要礼服和鞋子。姐姐们都有,而辛德瑞拉没有。
  • 仙女用魔法给辛德瑞拉变出了礼服和鞋子(水晶鞋),并告诉辛德瑞拉魔法会在午夜12点后失效
  • 辛德瑞拉在城里见到王子
  • 午夜12点,辛德瑞拉不得已要马上离开,在仓皇间留下了一只水晶鞋。
  • 王子拿着水晶鞋寻找辛德瑞拉
  • 只有辛德瑞拉才能穿上水晶鞋,姐姐们穿上都掉下来
  • 灰姑娘和王子在一起,幸福地生活

Continue reading

php按指定概率获得key

简介

php按指定概率获得key

<?php
function getkey()
{
    $pro = [
        'key1' =>80, //80%出现概率
        'key2' =>20, //20%出现概率
    ];

    $ret = '';
    $sum = array_sum($pro);
    foreach($pro as $k=>$v)
    {
        $r = mt_rand(1, $sum);
        if($r <= $v)
        {
            $ret = $k;
            break;
        }else{
            $sum = max(0, $sum - $v);
        }
    }
    return $ret;
}

echo getkey();

php生成总值固定随机数字数组

简介

php代码生成数字数组,所有数字总和固定

    private function _getRandomNumberArray($total, $times, $min, $max)
    {
        $data = array();
        if ($min * $times > $total) {
            return array();
        }
        if ($max * $times < $total) {
            return array();
        }
        while ($times >= 1) {
            $times--;
            $kmix = max($min, $total - $times * $max);
            $kmax = min($max, $total - $times * $min);
            $kAvg = $total / ($times + 1);
            //获取最大值和最小值的距离之间的最小值
            $kDis = min($kAvg - $kmix, $kmax - $kAvg);
            //获取0到1之间的随机数与距离最小值相乘得出浮动区间,这使得浮动区间不会超出范围
            $r = ((float)(rand(1, 10000) / 10000) - 0.5) * $kDis * 2;
            $k = round($kAvg + $r);
            $total -= $k;
            $data[] = $k;
        }
        return $data;
    }

php隐藏图片下载地址

简介

有时根据图片url却不能下载图片。用php是如何实现的?

方法1

    public function test()
    {

        $img = "<img src='https://helpee.club/hoges/hoge2?f=minna.png'>";

        echo $img;

        $this->autoRender = false;

    }

方法2

    public function hoge2()
    {
        $file = $_GET['f'];

        $path = WWW_ROOT."img/".$file;
        header('Content-Disposition: inline; filename="' . $path . '"');

        //必要に応じ、png , jpg , gif などに変更
        header('Content-type: image/png');
        readfile($path);




        $this->autoRender = false;
    }

mysql测试数据批量插入

简介

  • 场景1:测试sql服务器性能时需要单表100万以上数据时
  • 场景2:业务测试数据1000个账号每个账号有5个商品
    当我们遇到以上场景时,如何快速造数据?

原理

  • 利用select的交叉连接(cross join)。如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积;
  • 需要预先准备好表和样本数据
    Continue reading