详解laravel中使用mews/captcha、前后端分离

2023-05-16

文章目录

        • 1.下载mews/captcha
        • 2.找到config\app.php中的providers,添加如下代码
        • 3.找到config\app.php中的aliases,添加如下代码
        • 4.发布配置文件
        • 5.控制器代码
        • 6. 后端验证代码
        • 7.一些问题解析
        • 8.结语
          • 参考文章

废话少说,直接开始。

1.下载mews/captcha

默认下载的是最新版,我这里下载的是3.2版本。

composer require mews/captcha

2.找到config\app.php中的providers,添加如下代码

关于Provider的介绍!

\Mews\Captcha\CaptchaServiceProvider::class,

3.找到config\app.php中的aliases,添加如下代码

关于aliases的介绍!

'Captcha' => Mews\Captcha\Facades\Captcha::class,

4.发布配置文件

php artisan vendor:publish

于是便可以在config\captcha.php下,配置验证码。这里使用的default

return [
    'default'   => [
        'length'    => 5,
        'width'     => 120,
        'height'    => 36,
        'quality'   => 90,
    ],
    // ...
];

5.控制器代码

public function code()
    {
        return [
            'code' => 101,
            'message' => '请求成功',
            'result' => app('captcha')->create('default', true) //create是生成验证码的方法
            //这里可以直接app('captcha')的原因就是因为在config\app.php中的providers中添加了这一句\Mews\Captcha\CaptchaServiceProvider::class,然后在CaptchaServiceProvider中的register绑定了bind的名字是captcha。
        ];
    }

返回结果:

{
    "code": 101,
    "message": "请求成功",
    "result": {
        "sensitive": false,
        "key": "$2y$10$20a0XmywfMWedCV6GfFK2.EF0OaGtAiBTUkorbOAjqUqKoGLBhsBa",
        "img": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAAkCAYAAABCKP5eAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAVkElEQVR4nI1be4xcV3n/nfu+c2f2aXvX60e8fmYd24lJIAEBVROVtqCqSdUWqaAWtWolIH2AkCgqIAqtSiXKozRIBdpIFWpFVUUtaoQKSh9JeAViJ3ZiJ+vHrl/rtb2PmdmZO/d9+sfsd+a7Z+6WHmm1M/eex3e+5+/7zhmxtLQksdmk7H8UQsC2bdRqNdi2DdM0IYQA7yeEUM+klMjzHEVRDL1L0xRhGKLb7SJJEnieh7GxMXieB9M0EUURer0e0jRFlmVI0xRFUcAwDDWPlFL9ZVmGbreLNE1hWRYcx4FpmoqOoigAAKZpwjRNtSd9b7ZtI8sy5Hle2geNp8/0jvZGdNF89ByA4gGNof+macIwDBiGgaIokOe5+k77okZ75nunvvw9rUU88DxP8ZT4lGUZLLBmGAZM04Rt27AsC4vNx9W7I1NfG1qcE8WVgL+nTeR5jjzP1eJpmiLPc/Wf/miMLhS+juu6sCxL0aszhJSMM1AXItHC90Fr0HOuIJzBfBw953vla+lCI2HzebmQqR/NSwql84TvO01T1YcbpGmaEGTBQghYlgXbtuG6LkzTRFEUSqMX1j8Ivc3t/LtK7dcZnuc5er0eut0uhBBwXVdpc5IkStv4ePqsC5ivQ40LlFuUzjgubC483reqD32vmpcsrMqr0TNusXw9LmBOt25ItDc+nuRVFAXSNIVpmvA8D67rYvEP00G/GzduSHJnjuMo90WExXGMJEmQpimSJEEYhvA8D9u3b8eV1u8PCX3/xFeUe+TEcKsBgDiOS655KwZxIejucSsh0jrEfJ2hnGFkAXwM9bMsa0iwAIbcuO41OC26m9Xppf6cB/p+aSwZHgBYlgXP85CmKRb+ICnJYO6rIwMXTRPwzcRxrAhIkgS9Xg9FUSgrIyKPTH2t9D3Pc1xe+8CQ0A/v+KqKfdQ3jmOkaao2TzGlSmj0TI9tpDi8P7cELhQ9tPAYq8dAPlYfozfdxXOh6nvg++P063PxfXF37rourn4o3+ydA+gCAA59pVZyzxwLWHwD5JJpUdu2leVR7LNtWwEbYhIRk2UZpr3PlYCMEALzt39PbeLu6a+rcVmWlWIlt3BilGX1YUJVjP+/GE/aTxslS9GZzNfS3SUPGdR0BdqKDj3287H0jFy3jmn4PBufHlGfm8iVdZJA+bxcWUzT7FswCYaQKwdZZFm0EYrRpmkqiycBZFmGMAzR6XQghIDneWg0GjAMA7uCL8AwDPi+r1x9FEVI07QElOg/Z4SUEo7jwHEcBcSqgBExhjNMB39cs6vAoh5biWk89tE7Po/e9Hk4naTIPLYS3pFSovOZ0dJc9U+0lHGNjY0pF03jycCUS2aZheM4sHTrIX9PjHIcB0DfIm52I5y7dgfX19to9SI4poEDOybxln0zmPRdZcVxHCOKIhRFAd/3FaOp0Vo6AibCCSzxlIMzvIqZutC2cvE6aKlypzzkcIWJYgOOXSh+EH3krdI0VWFHp7FKIePPbkOsKUfw8ab63OfBYH6OJ/I8V3Gb+tKzLMtUpmFxtEzgiLvls8ur+IcXz+H5hSWs93Ry+s0UAo8dP4gPv/mYigFxHCsGjIyMwHVdxTzyBDpI0QVGG+I5Nh9T5bIty1Lhg6de1M+yLEgpsdpycPbiCGwLePsb1odiNTGNnq00HXzr2WnMbOvh+MEWdm6LFI2Ug4ZhWBIwVxbDMBB/dluJb97HVpUHrPII9Jl7OQAqzaR5ydsahoE0TdHr9RRtFtdocoWGYeBmu4uPPv0cfnDlZqVQeculxL+cuYDldgef//kHlVBqtRp831funMd3ro06Q+i5zqQ7sgMPNmrChiEG1kf066GF3Cv1GcRPge/8cBu6PQtCSNx7aB312sDKSEG4h7l8owYpBW7cqeHQ3m4J4RZFgTiOS643+cvtQ3zyPraqpUqi0rqJXjI43/fheZ5ak5Q0SZJSaKXwWhSF4oVFHbiAhRB4zz9+G9eaGz9VuLw9v3gTz169jYf3z6h8mhiupz3cBW8Vr7iFvlos4yJWAAC7xCjeaO4tKQjfpN509y0EcO/hDXz/5XFIKfDyhVG89b511Z+nOtQWlgIAgGUW2DfTU+sYhoEsy7D6cQ+ADaDfz/3jlZIX2py5MtXja/HnruvC9334vg/HcVTOS2GB9k775tU7WteiOMN9fF4UCJMUVW2y5mEy8HG9uYEwzYbef+v8An7h7n2qbMaZRNpOuS/XPo4BqJE7vihXcFGuqOd1uFsyh1wyuWc9DaH552ZDnHptBFFsYv5KgPvn2gj8YTQOALfXbHTCvivdN9ODYxtofape6jP6qU4po5DSUHsj2jgI1BWennGDI6BK3ieKIuR5rgzR9/3S/qSUpVKvisEAFBID+i7qE+94M/7oX/8LANBwHfzOg8fwzqMHcHj7OIqiQBjH+O1vfhcvXFsubfTMrTVluTQvLUogrNfrIQxDJEmiXLgeW2nzV+QazuEWarAhINBFgpq0FK06c/hnnYHk9qSUsMwcJw528MKro8gLgZfn63jziXalgJ0vOXg3NsHPGaD1dB3jnw41QFhG01WVJz2+8rCRL/wE8vZloD4JOXUIYmpWZSt8H1xpefGEBMxTvTiOYVF8pMG0+KPHD6GTpLi8so73P3QCk40AXBlkluHdx/cPCbjZi7GRZpjYdCEEuHiliJRpk4Ah5ErtJjZwRizDEAInsQs/wBUAgFdYyOVwukSbrAJMJAyeqszNtvHSfANJauDcQh0nDrbgucVQqvLvDzbQ7Znw3By/+a5lGIZQoJRjCS5wTg9vtD4PA0VRQC6dB7IYiNooVhZgbX+fEi7V7Mnr0XeuRBxU0iFKnucDAfPUhJj03vuPllAt16JbrQ2shdEQgwHg0moLE7WB+7AsSwlSCIEgCFCr1RCGYaWlEaB6yVgCBHASu+DCQoF+n4bhwRIDza5KlaoYTMpDz2xL4rEXB1abnW6gg378JOtZbQfoPtNX7IN7IpjmIK2sQvPAcAznHoXcNj3L8xxyY6UvXGq2i8bktMpoqL5ANWcOWDlfyTv2ej21viWlVL6dAnZRFHBdV+XAJKjvLy7hP15fxH9euIqbG2GlcAHg0koTD+yeUhugOQjdOY6jNkiHDRyIrRZdnBJLkAI4gWnMiBHclH1BWDDgGfaQZZB1EkNp0/zUqCiKUmUIAOSHVvHUf88iyw3YVoFffXixlHYs3AhU3+OH+/xJ0xSPf/Bp/PWXf3HITXJD0AEV8XGomtZcKtHkbL+rdCBDuS0wOAYl6+ZrkPJQeATQF3C73UYYhgpmJ0mCer2uhP3M/CI+9z+ncHG1taVQebu40lQbIU0nQZLWca0mZgDAetbFj8U15JA4UmzDXmMcUkp0ZAwIIIBTcvXEVJ2Z9L39p40SbeZHlhUAIbd3cHcTr12ZQJoZeP3qBB46ESn6L1ztlwPHR4HDsz4uv/AsPvzni/ibJ96lhKQLjLtrnqblYQt5twlpWBD1SQhzM6VrlVNRf/qA4lGapmo/lmXBdV1VMi6FzE06HMdBEASDGMzhNeXAVHYsigJ/9b0z+Mbp1/9fgqV2aVPApCBZlg1KZyyHo+NDElKIFD+QV5CiwH45gQOYVHN2Rf/EJIBTWos2DgDrn6wN0cIrQ30m2OozFUWOHWhi/toYisLAK5cauO9ICNcRWF510Qn7infv3QKP/vLfAgA+/yf7KvN13TWrkNfbQPr6s5Br1weEmRbMmTkY++5H3r5VpnnXIVXM6Ha7CMNQ1e159Upfk8djhqQt+L6vtC3PcyRJn5n/dPZSpXCn6jU8enQWb9k3g+euLOPrPzpben9pZZBT5nmOKIpUPZXW0NOkSKb4Xr6AGBnuwhjmsAMQA2TYlX1NrsFRDOz+2Vhp3cYn2yWm8/jIiwcUQ8nK6zXg0J4OXr8ygiQ18erlACePdHHxqqfm/sJnnsA3//l96HQ6/VLs9bNwdx0rVaCqDg6KsI301L8BiRbS8gz5tbPI7ywCxQBYWsEYnJGJUp2A5/iklMRbtQ7zlgTCiqLo16LHx8dVgO50OkiSBEme4+un5oeE+9jRWXzikTeiEQQwDAOtNB/qc625gWjzukgUReh0OqWLBFRmo9w7EwW+nywiRIJdGMEJMaOES4IJZV/pdn36AChQ6LlnlpVBDGc2B3I8JhID7zu8gfmrDUgpcGa+jmMHQly63hfw6e98BX//5K+h3W6ralVt770Ir74Ma3pOPeMxkGJ+du6ZYeHyFpWLSf7OA2ouwkGe5yn8wo8EyaqJp0mSKOVNkoSqXn33RgGdDglO32oOFTIajoXH33AQ+aaAhBC42e4O0SwBvHZ7HffNbEej0VCCtG27dD1HSolMFng+vYy2jDAlGniD2APSf4qpSZ4iEn1a0k/ewjYj2BRoXorDVTVk/o4rDC9DAkC9luHgnhAXrgboxSaeeWEMvbhvKR/4yHsRx+3SeADwdh9XllzaPynQnQXI9u3SO2PvfTBn7gZ6bWQLL0Jq7tmfOThUE6A6PjVKO9M0VUUPsvAoikqg2aCNU+5ErRWVbwkAgG0IgAGjq+ttPPH86aF+APDjK0uQUsJ1XYyMjKBWq5XgfVH0k54fZgtYk11MigBvMvZCoBzXhBAIxaCqVheOYmJVjqnnxvp3DsL0PPK+w21gMxVbXPJpBGZnNkphhVfJnJl7EN94ZaialqYp0qtnyrTsOABj9gEUToBidCfE0Uc0rgn4O/crcJUkibpRQzGZvsdxjI2NDTSbTbRaLXXQQTSSglgAFOCJoghxHMMwDNTs4ZruWpTiG+ev4R1H7sL84i188dlTaMfDigAAz126jt+6fw6u65aKG1yRFuQqbssOAGBS+riZtRDARl14sFjaExk5UAAmDPiGU0KpeuPWygVcVbbkAgeAsUaGE4c2cHvNxvJqX8A7t8Xw3cFNlqpTH2t6DtH1s7Cm55SAsyiE01wGVy+563jJiKChZ3dyBo5fV9eZ6NYL7ZVO4YQQiKIIKysrCMMQQRComjVZMtFnURJN96NIO3fVymiV2pOn5/Hk6XJsrtnWkDv/0bVlJIWEI2WJYF5saMtBoWQeK1DckICXW6jDQQ0OYvTn9mEhK3IYKN9spPmqKlhDOSfKJ1T8eZZleGBuDZeu15WAD+7plBSjqnIFAM7MPUiWXoW982i/X9yCALvh4Y1A1MbKbn79Rolnwa5DKneP41iVc+kgiOIvHQnSXTkySp6/q0MH8tlRFJVcwrglMNvw8dOaYxr40i+9DabmCkc8F+1epA7/e72eWoOseLccwT2Ywl0Yx3YE/Xpz/zQPETKsIMRVNHELfSvvIMHT8jy+K+fxCpZLwtSrSVyAPN8moXPUyUFXURS4eK1f3DANibumBxijqjTKaXB3HUN681wf6SZl8CTqk8MDtQKHOzWr+KM8wSaQ4ke5pCBBEGB8fBxBEKgMhZo6WuQ3G8hF06S/cXAKf/HSIorqQxbUHRtffuxn8bb9u/H4W1t46uwFHJ2awCMHduORA7thQqoSGz+bpb8x+BiDX3peyAKhTBEiQShSdJHiBlpIxcCKImRIZQ5o/OZxVb/Uzht3tXqBpNszceNOHz3vm+nAMnMAYsja+cEGX9fbfbyvKKl2OcKrl3PWuIM06gwUwLQhRqbQbreV1VJ4q9VqqnhBshkbG8PExITCNRwXEIgEAKvVapWCN89NT05P4FNvH8UXX3gNa+w2h2dZeOfRWXz04TdhqtFf+P0PHcPvPnC3WixLE8TsOiqvOW9Vv5VSAgUQSAcBHIhNxi6LDaQocKyYwjYE6MgYDkxkMhsSEq8TkzC5YPW6tV7DfvXyGEhz7tm/MXQipKN2Pg8xFwBgaiEu7YcjqhZibQH8QNbdsRdga/FUkgpGdI+t0WigVqups3sqTOmXFgHAWltbKyFbcgd0ifpdsxP49YdO4tytNbTiBGO+h6PTk/BYuTFNU0RRpOqlpE0U06vSF13AW+WsBSQiisHSgidNuLIfOgpZtiIuAL0Rrfy8lbtwwzCw0vRwfrFfq56d6WL7eKqErYMybo1VSgTdJd+5DOw4CGP7XmD9OqILPyy99nceULc3hBDqwICESAiZlIRfpCDe6vm4EAJWFJVPhCzLQq1WQ71eV6c+tmni5O6pIdRKcJ4fB1KjhfRnRCBnFglGR8ZSSnQLniK5EBi+Alt1i4OafuKj+L3uYnnVxZ6pDQgB3Fqt4cfnJyGlQM3N8NCxFXUvjad3RC8Jlipi/FcQACBGpyG9xqCQUeQozn576JIdNX/z/BcAPM/Dtm3bFIKmY8kgCFReTHULfvmO6HAcR7l3K8/z0lVY3/cxMjKioLe65cHuOPHNJUlSOkggweiolgt5KyDEFYP6hCIFJGBIAU9aldavW5D+mY+hua/f9vDS/AR+cr5saYGf4eceXIbnFpCyHGt5q5pbf2cc+RkUZ79dKkX2X5ilZ8K0YY1NKWXU71dRIUNXLDqI2KxYlYo4VMCyyGKpLBYEgao+cUtTtc3NgVQcIajOf/Wgt6rYS00/gyYh0IYcGNgtRyEx/KOuKqbq/2k+8iaUpgV+hsnRGGFkQkqgEWTYMxVibl8bjj2Iy2QlZEV6jVhfvyT8kR2w7v8V5FdOQTZvArKAMbYT3uxJhC88pfrbI5OlGM6tkt/9In4R7/mhv36PncZao6OjSsBSSnU4zy9Y0wJ07MdvZ+gFBBrDCeJnzTyP1NMYbi30uS5snDCm+3OaxtB73UvoOa5+wkP/D+3p4BDLcbnnEMLYci+0HikgB2mViuaPwDr6sHpmGAaEZcEa34ls/aYSMP2clbKYzdsYpd8jkeDJoDjvqU7N6+BCCFiTk5NqY/wnnQBKB8e0ASqhUeOxV2ciNW6ZtLhuYRyM6UzSy4rcuvSmW5KOcvVnVY0rSVVfHUFv9b6KF0C/GDr29vfAc2yYRQLLb0BooQ9giBsoXcPhIJYaKYF+yc9qNBqqJEaIOAxDVfYCBhfyqJ9+v0rfGL/JwXMyzmj6ThvghHPGcCZWCZI/5zRthQeqhLSVxW8VEnixga+vKy63cBpH8xVFARgmTG8UYlPBpZSlggZ5Cf4LTPKEVPblJ0xEA6ff4owkiE5ColyMuwbdYrdCyroVVlkM9eXnmJQK8LtGnCmkbDyhJyXh6ZKuGLr18n0TU3jqVKVU1EcXqm6tPHzoYYQEp7tTskiVv7JbqYRzeKggWfAYLYRAp9PBxsYGarUaRkdH+xffhRDqnq1hGEpj6OcnvErCtZRrJBeaLvgqC6K+ujcgV82tiVu9LmC9EKG7zCrww909f6cr51ZuXM8C+No6kKyai9eLdRq63a46+yUspP90h9w1B45UDGk2m1heXsbExAQ8z8P/AmKT5MLgUdluAAAAAElFTkSuQmCC"
    }
}

sensitive:大小写是否敏感,在config\captcha.php中的default数组里可以添加这一选项,true代表区分大小写,默认false。
key:生成的key。
img:base_64的图片。

6. 后端验证代码

这里注意,一个key对应的验证码只能验证一次!就是说拿着前端传来的key和code去做校验的时候,不论验证成功或者失败,这一组key和code都没用了,要再去刷新验证码。

第一种:

//调用captcha_api_check方法。
$captcha = $request->input('captcha'); //验证码
$key = $request->input('key'); //key
 
if (!captcha_api_check($captcha , $key)){
     echo '验证不通过';
 }

第二种:

$data = $req->all();
 
$validator = Validator::make($data, [
    'key' => 'required',
    'captcha' => 'required|captcha_api:' . $req->input('ckey')
]);
 
if (!$validator->fails()) {
    echo '验证不通过';
}

两种方法的原理都是一样的,都是去调用了captcha_api_check方法。
第二种方法,在CaptchaServiceProvider类中的启动方法(boot)中定义了,

$validator->extend('captcha_api', function ($attribute, $value, $parameters) {
            return captcha_api_check($value, $parameters[0], $parameters[1] ?? 'default');
        });//实质上还是调用了captcha_api_check。

7.一些问题解析

  1. 这里为什么调用的是captcha_api_check,而不是captcha_check?

    因为调用生成图片验证码的方法create的时候,传递了第二个参数为true。
    调用的其实就是在vendor\mews\captcha\src目录下的Captcha类中的create方法。第二个参数为true,代表$api = true;即为存储在Cache中的前后端分离用的验证码!而不是存储在session中的验证码。

  2. 如何使用session中的验证码?

    调用create方法时,第二个参数不传就好了。注意要开启session! 如果使用的是api的话,应该是在Kernel中的$middlewareGroups数组中配置,这个不太确定,没有试。

  3. 验证码验证一次,就失效了,怎么办?
    首先是在vendor\mews\captcha\src目录下的Captcha类中的check_api方法校验验证码。
    这里的第一句代码就是:
    if (!Cache::pull($this->get_cache_key($key))) {
        return false;
    }
    
    关键就是这个pull方法。Cache详解可参考
    pull方法是获取到缓存以后,就把缓存清空了。所以只能验证一次。只需要把这里的pull换成get就OK了。
  4. 如何解决使用session存储验证码的时候,只能验证一次验证码的问题?
    在vendor\mews\captcha\src目录下的Captcha类中的check方法,将以下这段代码注释掉应该就OK了。
    if ($check) {
            $this->session->remove('captcha');
        }
    
  5. 当使用算数验证码的时候,再去调用验证方法,就需要通过以下方式。需要传入第三个config参数
    	if (!captcha_api_check($captcha , $key, 'math')){
         	echo '验证不通过';
     	}
    

8.结语

当然,现在基本都是前后端分离,我更喜欢把key存入redis,从redis中获取key,然后去校验验证码即可。

参考文章

laravel mews/captcha 图形验证码 前后端分离

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

详解laravel中使用mews/captcha、前后端分离 的相关文章

  • 斜线/、反斜线\、双斜线//、双反斜线\\

    看到这些东西就有点小晕 xff0c 整理到一起加以区分 上面符号 xff0c 中为正 xff0c 左为斜线 xff0c 右为反斜 xff1b 八字 xff0c 先撇为斜 xff0c 后捺为反斜 这些符号在不同的系统下意义不同 双斜线 协议和
  • linux中常用的截图录屏软件

    linux中常用的截图录屏软件 1 kazam 推荐 工具小巧而功能全面 可以选择全屏 窗口或者自定义区域 可以设置帧率 编码方式 时延倒计时 音频来源等 kazam默认视频编码方式是H264 保存为MP4文件 还支持截图功能 sudo a
  • openEuler 安装图形桌面环境Gnome或DDE或UKUI

    由于openEuler系统主要针对服务器 xff0c 目前默认安装之后没有图形桌面环境 xff0c 需要的用户可以自己手动安装配置 这里推荐安装深度桌面DDE或优麒麟UKUI环境 安装gnome桌面 sudo dnf makecache s
  • Ubuntu更换国内镜像源

    由于Ubuntu官方镜像速度有限 xff0c 可以使用国内镜像加速更新和下载 xff0c 节约时间 常用的国内镜像有很多 xff0c 本人常用的有如下几个 xff0c 仅供参考 163镜像 mirrors 163 com 清华镜像 mirr
  • ubuntu-2204 gerrit ssh 报错Permission denied (publickey).分析及解决

    ubuntu 2204 gerrit ssh 报错Permission denied publickey 分析及解决 使用repo init sync下载代码时遇到报错 Permission denied publickey 分析排查步骤
  • UCOSII操作系统 第3课—UCOSII启动过程

    1 初始化UCOSII 1 在调用UCOSII在任何的其他的服务之前 xff0c UCOSII要求首先调用初始化函数OSInit 这个函数的目的就是在整个系统启动之前 xff0c 初始化所有的变量和数据结构 2 其中 xff0c 在OSIn
  • vscode安装配置clang-format插件及使用

    vscode安装配置clang format插件及使用 首先安装插件 在vscode扩展里搜索clang format xff0c 安装排名第一的xaver clang format 确认clang format可执行程序路径 window
  • 消息序列化工具-protobuf介绍及安装使用技巧

    简介 protobuf是google团队开发的用于高效存储和读取结构化数据的工具 xml json也可以用来存储此类结构化数据 xff0c 但是使用protobuf表示的数据能更加高效 xff0c 并且将数据压缩得更小 xff0c 大约是j
  • 消息序列化工具-为现代C++设计的jsoncpp介绍与使用技巧

    概述 JSON 的全称为 xff1a JavaScript Object Notation xff0c 顾名思义 xff0c JSON 是用于标记 Javascript 对象的 xff0c JSON 官方的解释为 xff1a JSON 是一
  • cppcheck代码检查工具安装与使用技巧

    cppcheck代码检查工具安装与使用技巧 Cppcheck 是一种 C C 43 43 代码缺陷静态检查工具 不同于 C C 43 43 编译器及很多其它分析工具 xff0c 它不检查代码中的语法错误 Cppcheck 可以检查非标准代码
  • sed流编辑器中使用变量替换以及执行外部命令

    在使用sed对日志或者其它文本进行parse的过程当中 xff0c 有时候我们需要引用外部变量的值 xff0c 或者获取一个shell命令执行的结果 xff0c 以便达到更加可观的输出结果 这里介绍如何做到 sed 流编辑 1 sed命令及
  • mkisofs命令制作iso文件

    mkisofs命令行格式 mkisofs adDfhJlLNrRTvz print size quiet A lt 应用程序ID gt b lt 开机映像文件 gt c lt 开机文件名称 gt hide lt 目录或文件名 gt hide
  • windows下tree命令列出文件目录树

    windows下tree命令列出文件目录树 tree path f tree D AR C Team f 可以将D AR C Team目录下所有目录及子目录下的文件都打印出来 tree D AR C Team f gt HOMEPATH f
  • yum命令安装历史回滚彻底删除安装的依赖包

    yum命令安装一个软件包是会连同依赖包一起安装 xff0c 但是yum remove卸载时却只卸载这个文件包本身 如果需要删除安装时附加的依赖包可以使用yum history的相关操作实现回滚 假如安装了ecliipse pde xff0c
  • latex在ipython jupyter notebook中的使用

    In 2 from IPython display import Latex In 5 数学公式的前后要加上 或 和 Latex r 34 f x 61 3x 43 7 34 Out 5 In 6
  • MATLAB 2018b 帮助页面设置为中文显示

    MATLAB 2018b 帮助页面设置为中文显示 具体步骤如下 xff1a 1 随机点击一个matlab的函数点击 help 2 点击帮助页面的设置按钮 3 按照如下步骤设置即可
  • 图解Java线程死锁的必要条件

    文章目录 What is Deadlock发生死锁要如何解决如何预防死锁参考资料 What is Deadlock In concurrent computing a deadlock is a state in which each me
  • 远程LINUX桌面的好用工具,NoMachine.

    安装及使用都比VNC及XManager要好用 xff0c 网站 https www nomachine com 对应下各自的版本后 xff0c 按照网站的说明进行安装就可以了 xff0c 安装过程不需要其他依赖项 xff01 Linux安装
  • 竞赛经验|2019年电赛B题四旋翼无人机组巡线机器人

    竞赛经验 xff5c 2019年电赛B题四旋翼无人机组巡线机器人 参赛背景和比赛回忆 xff1a 1 院校背景 xff1a 2 规则与现实 xff1a 3 比赛流程 xff1a 备赛建议1 器件选择 xff1a 2 针对学习 xff1a 写
  • C语言实现http post请求和get请求,post请求可以上传图片和文件

    文章目录 1 http协议简介2 http协议分析2 1 http请求2 1 1 请求行2 1 1 1 请求方法2 1 1 2 URL2 1 1 3 协议版本2 1 1 4 请求行总结 2 1 2 请求头部2 1 3 请求数据 2 2 ht

随机推荐

  • 软件改变世界

    随着科技的不断进步 xff0c 软件及其相关技术的发展已经深刻地改变了人类社会的方方面面 从交通运输 医疗卫生到商业服务 教育培训 xff0c 软件技术的应用已经深入到我们的日常生活中 xff0c 对我们的生活方式和生产方式都带来了深刻的影
  • MATLAB 比较好入门书籍有哪些推荐

    https www zhihu com topic 19559252 hot https www zhihu com question 19904418 作者 xff1a 陈村 链接 xff1a https www zhihu com qu
  • pymavlink使用简单教程

    这里写自定义目录标题 pymavlink主要包含的模块连接样例 设置任务样例 更改飞行参数param样例 飞行模式总结 pymavlink Pymavlink是MAVLink协议的python实现 自身包括一个源代码生成器 xff08 ge
  • Python案例003——句子生成器

    目标 xff1a 通过用户提供的内容 xff0c 随机生成唯一的句子 提示 xff1a 以用户输入的名词 代词 形容词等作为输入 xff0c 然后将所有数据添加到句子中 xff0c 并将其组合返回 输出固定的 内容 43 用户输入的内容 c
  • 嵌入式软件工程师面试题

    1 int a 10 61 1 2 3 4 5 6 7 8 9 0 int p 61 amp a 1 则p 6 等于8 2 整数数组清零 xff1a bzero memset 3 siezof 测试变量所占地址的字节数 4 main cha
  • 国内代码仓库-码云

    相信使用github的同学会经常碰到这样的情况 xff0c 当我们从github上面下载稍微大一点的代码的时候就经常下载失败 xff0c 下载网速是非常的感人 国内从github上下载代码非常慢 xff0c 解决办法就是修改host或者vp
  • php对接支付宝Web支付-tp5.1框架

    具体流程 1 获取支付宝相关配置 2 传相关参数请求支付宝网关 订单金额 订单号等 3 支付宝请求回调地址 4 回调地址做相关业务处理 数据库增删改查之类 5 处理完成以后返回success给支付宝服务器 1 首先获取应用id和商户私钥以及
  • TX2+realsense D435i跑VSLAM--001--内核劝退篇

    想要使用tx2连接深度相机realsense D435i xff0c 没想到下载好官方自带SDK后 xff0c 说tx2的版本不满足需求 需要至少L4T28 2 1 xff0c 为什么偏偏就差这么一点版本 xff0c 然后查了查 xff0c
  • PHP对接微信支付--Native tp5框架

    这里实现的功能是 xff1a 网页上点击支付 xff0c 然后调用此方法生成二维码并且返回二维码的图片路径 xff0c 然后扫码支付 xff0c 付款成功进行回调 xff0c 在回调地址进行数据库操作 1 配置微信支付参数 微信支付参数 f
  • 微信支付退款 PHP

    应用场景 当交易发生之后一段时间内 xff0c 由于买家或者卖家的原因需要退款时 xff0c 卖家可以通过退款接口将支付款退还给买家 xff0c 微信支付将在收到退款请求并且验证成功之后 xff0c 按照退款规则将支付款按原路退到买家帐号上
  • windows+本地虚拟机搭建gitlab

    一 安装依赖软件 xff04 yum y install policycoreutils openssh server openssh clients postfix 二 设置postfix开机自启 xff0c 并启动 xff0c post
  • 使用Springboot实现简单的增删改查-超详细

    使用Springboot实现简单的增删改查 超详细 xff08 java小白 仅记录 不喜勿喷 xff09 php想转java 就想写个简单的增删改查 写惯了php 感觉java好复杂 php一般就是定义路由 xff0c 然后去控制器 xf
  • Windows下Virtual box安装centos以及virtual box的增强功能(超详细)

    Windows下Virtual box安装centos以及virtual box的增强功能 xff08 超详细 xff09 1 准备工作1 1 下载Virtual Box1 2 下载centos7镜像 2 安装virtual box3 新建
  • 使用crontab遇到的一点问题,报错/var/spool/cron : Permission denied和bash: /usr/bin/chattr: Permission denied

    问题 xff1a 在Linux服务器上设置crontab定时任务执行laravel任务调度的时候 xff0c crontab e 无法保存 会报错 var spool cron Permission denied 于是百度到是var spo
  • 服务器对接码云webhooks实现自动部署--超详细--PHP

    公司代码是放在码云上的 xff0c 每次提交代码 xff0c 都要去服务器上执行一下git pull xff0c 就很麻烦 xff0c 于是想对接一下码云的webhooks实现自动部署 本文参考链接1 xff0c 参考链接2 这里以lara
  • centos7搭建LNMP环境-编译安装&yum安装-超详细

    文章目录 0 首先建议使用docker搭建环境 链接在这 xff01 https blog csdn net handsomezls article details 116936581 1 首先了解编译安装和yum安装的区别 2 yum安装
  • Linux 下使用Docker 安装 LNMP环境以及项目搭建 超详细

    文章目录 一 安装docker二 docker安装php三 docker安装nginx四 docker安装mysql四 1 因为我项目中用到了redis xff0c 所以还需要安装redis容器 五 docker安装Jenkins六 将本地
  • 递归遍历无限极分类菜单、菜单树。(php版&&java版)

    文章目录 php版java版 php版 span class token operator lt span span class token operator span php span class token comment 定义一个数组
  • 手把手教你实现SVM算法(一)

    什么是机器学习 xff08 Machine Learning xff09 机器学习是研究计算机怎样模拟或实现人类的学习行为 xff0c 以获取新的知识或技能 xff0c 重新组织已有的知识结构使之不断改善自身的性能 它是人工智能的核心 xf
  • 详解laravel中使用mews/captcha、前后端分离

    文章目录 1 下载mews captcha2 找到config app php中的providers xff0c 添加如下代码3 找到config app php中的aliases xff0c 添加如下代码4 发布配置文件5 控制器代码6