laravel8中间件验证token 小程序手机验证码登录

微信小程序外卖商城全栈开发:从源码解析到部署上线的实践指南 微信小程序开发已成为连接线上服务与用户的重要技术路径,其核心在于利用微信生态提供的开放能力,如登录、支付和消息订阅,构建轻量级、即用即走的应用。其技术原理通常采用前后端分离架构,前端基于原生小程序框架或uni-app、Taro等跨端方案,后端则可采用Node.js、Java Spring Boot或PHP等语言框架,通过RESTful API进行数据交互。这种架构的价值在于能够快速实现业务逻辑,并深度集成微信社交与支付体系,从而高效支撑电商、外卖等高频交易场景。本文聚焦于一个典型的微信小程序外卖商城平台,通 阅读详情

在laravel8框架中除了登录的路由不用使用token验证,然后当我们进入其他控制器的时候都需要进行token验证,为了确保用户是否登录

首先我们需要先生成一个token中间件

php artisan make:middleware MiniLogin

在这里插入图片描述
如果想让多个路由继承这个中间件的话就设置一个分组中间件

  //设置小程序分组中间件
        'MiniLogin'=>[
          MiniLogin::class
        ],

在这里插入图片描述
然后在路由中让想继承的路由进行继承

//小程序分组中间件
Route::group(['middleware'=>['MiniLogin']],function (){
    //列表
    Route::get('liebiao',[\App\Http\Controllers\LiebiaoController::class,'liebiao'])->name('liebiao');
});

小程序调用接口获取手机验证码请参考:

https://blog.youkuaiyun.com/stringQiang/article/details/117406574

当用户登录成功后生成token

composer require firebase/php-jwt
//签发Token
    public function lssue(Request $request)
    {
        $user =$request->session()->get('user') ; //key
        $key = '1314'; //key
        $time = time(); //当前时间
        $token = [
            'iss' => 'http://www.helloweba.net', //签发者 可选
            'aud' => 'http://www.helloweba.net', //接收该JWT的一方,可选
            'iat' => $time, //签发时间
            'nbf' => $time , //(Not Before):某个时间点后才能访问,比如设置time+30,表示当前时间30秒后才能使用
            'exp' => $time+7200, //过期时间,这里设置2个小时
            'data' => [ //自定义信息,不要定义敏感信息
                'id' => $user['id'],
                'phone' => $user['phone']
            ]
        ];
        return JWT::encode($token, $key); //输出Token
    }

这里比如需要在小程序列表进行token验证,则需要在小程序js中的自动加载方法中将登录成功存入缓存的token取出来然后一块传入后台。

小程序跳转到tabar页面的方法
在这里插入图片描述

/**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    //因为后台做了jwt的token验证,索引这里需要将存入缓存的token取出来然后发送到后台做一个安全验证
    var jwt=wx.getStorageSync('jwt');
    if(jwt ==""){
      //这里需要注意的是wxwx.navigateTo只能跳转普通的页面,如果跳转tabar页面是没有反应的,如果非得跳转tabar页面,可以使用wx.switcaTab方法
      wx.switchTab({
        url: '/pages/index/index',
      })
      return false;
    }
    var _thih=this;
      wx.request({
        url: 'http://day531.week2.com/liebiao',
        data:{
          page:_thih.data.page,
          limit:_thih.data.limit,
          token:jwt
        },
      
        success:function(res){
          //console.log(res.data.data.data)
          var add = res.data.data.data;
          var count = res.data.data.total;
          //console.log(count)
          _thih.setData({
            data:add,
            count:count
          });
        }
      })
  },

然后在从小程序中获取过来的token进行解析验证用户id

use \Firebase\JWT\JWT; //导入JWT

 public function handle(Request $request, Closure $next)
    {
        //将用户从小程序js中发送过来的token接收过来,然后进行一个验证
        $jwt=$request->input('token');
        //print_r($jwt);die();.
        $key = '1314'; //key要和签发的时候一样
            JWT::$leeway = 60;//当前时间减去60,把时间留点余地
            $decoded = JWT::decode($jwt, $key, ['HS256']); //HS256方式,这里要和签发的时候对应
            //$uid=$decoded->data->userid;
            $arr = (array)$decoded;
            $id=$arr['data']->id;
           //从session中获取出来登录成功存入的用户id,进行对比,解析出来的id和登录成功存入session中的id一样则整明是同一用户在登录
            $res=$request->session()->get('user');
            $ids=$res['id'];
            if ($ids == $id){
                //因为小程序走的是接口,所以这里因该返回三要素,然后小程序js拿到值之后再惊醒相应的操作
                return ['code'=>200,'data'=>$res];
            }else{
                return ['code'=>502,'data'=>''];
            }
    }
Web登录Session全解析:从原理到Redis分布式实践 在Web开发中,HTTP协议的无状态特性使得服务器无法自动识别连续请求是否来自同一用户。为解决这一问题,Session(会话)技术应运而生,它通过在服务器端创建临时存储空间来维持用户状态。其核心原理是服务器生成唯一的Session ID,通过Cookie传递给客户端,客户端在后续请求中携带此ID,服务器据此识别用户并获取关联数据。这项技术的核心价值在于为Web应用提供了可靠的身份认证和状态管理能力,是构建用户登录、购物车、个性化设置等功能的基石。在实际应用中,Session常与Cookie协同工作,并面临存 阅读详情

相关推荐

微信小程序渗透测试实战:从信息收集到漏洞挖掘的完整指南

渗透测试是评估Web应用、移动应用安全性的核心方法,通过模拟攻击者行为来发现潜在漏洞。其原理在于主动识别系统在身份验证、数据输入、业务逻辑等环节的缺陷,技术价值在于将安全防护从被动防御转向主动预警。在移动互联网时代,随着微信小程序的广泛应用,其独特的技术架构(混合前端、微信通信层、后端API)形成了新的攻击面。应用场景已从传统网站扩展到小程序这类轻量级应用,涉及电商、金融、政务等多个领域。本文聚焦微信小程序渗透测试,深入解析如何通过反编译获取前端源码、配置抓包环境突破HTTPS限制,并系统介绍硬编码敏感信息

weixin_30675247的博客 363

ThinkPHP6实战之后台登录与权限

通过实战案例,掌握ThinkPHP6验证码、前置中间件、后置中间件,用中间件完美实现后台登录的拦截验证。后台分角色权限,实现不同角色的权限控制

从自动化扫描到逻辑狩猎:深度挖掘业务逻辑漏洞的实战指南

在网络安全领域,漏洞挖掘是保障系统安全的核心技术之一。其原理在于深入理解应用系统的业务逻辑与状态流转,识别其中因设计缺陷或校验缺失导致的安全问题。这项技术的价值在于能够发现自动化扫描工具难以触及的深层安全风险,如越权访问、业务流程绕过等,这些漏洞往往直接影响业务核心与数据安全。典型的应用场景包括电商交易、金融支付、用户账户管理以及各类在线业务系统。本文聚焦于逻辑漏洞挖掘,通过剖析越权、业务绕过等核心场景,结合Burp Suite等工具链,系统阐述从信息收集、参数变异到并发测试的实战方法论,旨在帮助安全从业者

weixin_30591551的博客 1336

laravel8 中间件验证token

//接受token $token=$request->input('token'); //测试token 换成上面 $token=Cache::get('token'); if (!isset($token)){ response()->json(['code'=>50002,'message'=>'缺少token','data'=>null]); } /..

qq_34913864的博客 609

SRC漏洞挖掘实战指南:从信息收集到逻辑漏洞的完整攻防演练

在网络安全领域,漏洞挖掘是识别和利用系统安全缺陷的核心技术。其原理在于通过系统性的方法,模拟攻击者视角,发现软件或网络中的潜在弱点。这项技术的价值不仅在于提升系统安全性,更能培养系统性安全思维,广泛应用于企业安全测试、渗透测试和应急响应等场景。SRC(安全应急响应中心)漏洞挖掘作为实战化方向,将理论转化为对真实业务环境的深度检验。通过信息收集、业务逻辑分析等步骤,结合Burp Suite、SQL注入等工具与技术,挖掘者能够发现逻辑漏洞、越权访问等高危问题,有效提升整体安全水位。

weixin_34226182的博客 304

SRC漏洞挖掘实战指南:从信息收集到报告撰写的完整流程

在网络安全领域,漏洞挖掘是识别和利用系统安全弱点的核心技能。其原理在于通过系统性的方法,模拟攻击者视角,发现软件或网络中的设计缺陷与实现错误。掌握这项技术对于构建安全防御体系具有重要价值,能够帮助企业提前发现潜在风险,避免数据泄露与业务中断。在实际应用中,白帽子研究员常通过SRC(安全应急响应中心)平台进行实战演练,遵循授权测试原则,将发现的漏洞提交给厂商修复。典型的应用场景包括对Web应用、移动端App及API接口进行安全测试,涉及SQL注入、XSS、越权访问等常见漏洞类型。本文聚焦于SRC漏洞挖掘的完整

weixin_30394669的博客 383

laravel还是其他框架都适用的判断是否手机端访问

laravel以及其他的框架判断是否手机访问的

YMB_jack的博客 787

SRC漏洞挖掘实战指南:从零入门到提交首个有效漏洞

网络安全的核心在于识别和修复系统潜在风险,其原理是通过模拟攻击者行为,发现应用逻辑、输入验证或权限控制中的缺陷。掌握这一技术对于提升企业安全水位、防范数据泄露和业务欺诈具有重要价值,广泛应用于企业安全测试、渗透评估和众测场景。本文聚焦于安全应急响应中心(SRC)这一实战平台,系统讲解如何通过信息收集、漏洞探测和报告撰写,高效挖掘越权访问、信息泄露等常见漏洞,帮助新手快速建立从理论到实践的桥梁,并融入Burp Suite、子域名枚举等关键工具链的使用方法。

weixin_33910759的博客 406

JWT——token验证(实操)

第一步:comper安装jwt功能组件 # 安装 composer require lcobucci/jwt 3.3 第二步:在框架里创建一个类(命名空间一定要正确) namespace app\adminapi\extend\tools\jwt; use Lcobucci\JWT\Signer\Hmac\Sha256; use Lcobucci\JWT\Builder; use Lcobucci\JWT\Parser; use Lcobucci\JWT\ValidationData; cl

Follow_found的博客 1053

Moveit Servo学习

MoveIt Servo功能与配置指南 摘要:本文介绍了MoveIt Servo的功能特性,包括支持关节速度、末端执行器速度和位置控制,以及安全功能如奇点检查、碰撞检测等。通过示例展示了如何运行伺服控制demo,详细解析了关键节点和话题。最后以睿尔曼rml_63机器人为例,讲解了如何自定义伺服配置文件,包括环境设置、输入输出参数配置、平滑滤波器和规划场景监控等关键配置项。文章提供了从基础使用到自定义机器人配置的完整指导,帮助开发者实现高效的实时运动控制。

Fisher的博客 1173

光学设计进阶:Zemax中的坐标断点与离轴系统优化

本文深入解析了Zemax中坐标断点的核心原理与实战应用,它是实现离轴光学系统设计的关键。文章通过比喻和实例,详细阐述了如何利用坐标断点作为“方向盘”来精确控制光学元件的偏心和倾斜,实现“前断后接”的局部坐标系变换,从而构建并优化无中心遮拦的离轴反射系统,避免光线失控。

3a9bq4r8t2y的博客 525

ThinkPHP 集成 jwt 技术 token 验证

在app/api/route/route.php路由文件中进行使用,进行使用中间件校验token。因为我这个是多应用,然后我就只在index应用(只提供api接口)下设置了token类。在config/middleware.php中注册中间件。

m0_63622279的博客 4722

BERT + BiLSTM-CRF 处理流程

BERT是一个基于 Transformer 的预训练语言模型。与传统的语言模型不同,BERT 是双向的,即它同时利用上下文信息进行词表示学习。BERT 在大规模语料库上进行预训练,可以捕捉到深层次的语言知识和上下文关系,生成非常丰富的词向量表示。在序列标注任务中,BERT 被用作输入文本的编码器,将每个词映射为上下文相关的词嵌入(embeddings)。

AI Agent 首席体验官 2255

Laravel 小程序手机验证码登录

需要先安装JWT composer require firebase/php-jwt 然后进行封装一下token,建立Service层建立Token.php <?php namespace App\Service; use Firebase\JWT\JWT; class Token { protected $key; public function __construct() { $this->key = 'zyk'; }

悄悄顽皮的猴头的博客 497

西门子S7-200 SMART PLC控制伺服电机

以下是使用西门子S7-200 SMART PLC控制伺服电机的详细程序框架和配置说明,涵盖硬件接线、PLC配置和基本运动控制逻辑。具体实现需根据伺服电机型号(如松下、三菱、台达等)调整参数。通过以上步骤,可实现伺服电机的基础位置控制。实际应用需根据设备机械参数和伺服驱动器手册调整细节。建议在调试时逐步测试脉冲输出和方向信号是否正常。

CHUXUEZHE8210的博客 6424

让 ABAP BAPI_COSTACTPLN_POSTPRIMCOST 不再沉默:一套可落地的参数一致性校验与排错打法

SAP BAPI_COSTACTPLN_POSTPRIMCOST 沉默失败分析与解决方案 问题现象 使用 BAPI_COSTACTPLN_POSTPRIMCOST 上传计划数据时,接口执行不报错但数据未写入 COSP 等计划表,呈现"沉默失败"现象。 根本原因 索引关联断裂:INDEXSTRUCTURE 中 OBJECT_INDEX 和 VALUE_INDEX 未正确关联 COOBJECT 和 PERVALUE/TOTVALUE 表的数据 对象定义冲突:COOBJECT 中同一行填写了多

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 107

Laravel8 小程序手机号获取验证码登录

关于小程序的登录,那指定受不了JWT,大家要记得在框架中装好JWT去配置 下面就直接上代码 控制器: <?php namespace App\Http\Controllers\api; use App\Http\Controllers\Controller; use App\Models\Fillable; use App\Models\User; use App\Service\SendCode; use App\Service\Token; use Illuminate\Http\Re

悄悄顽皮的猴头的博客 818

SAC-IA算法点云粗配准

SAC-IA(Sample Consensus Initial Alignment)是PCL库中的一种初始点云配准算法,它使用特征匹配和RANSAC(随机抽样一致性)框架来估计两个点云之间的初始刚性变换。其目标是通过特征描述符找到一组可靠的匹配点对,并使用这些点对估计初始对齐的变换矩阵。

twnkie的博客 1445

微信小程序 授权登录+手机发送验证码+jwt验证接口(laravel8+php)

参考博客小程序授权登录并 laravel7(laravel8) token 应用 - 王越666 - 博客园 .wxml(授权登录页面) <!--前台页面,通过判断决定展示登录还是信息--> <view wx:if="{{isHide}}"> <view wx:if="{{canIUse}}" > <view class='header'> <image src='/images/x.jpg'&gt.

SunNang的博客 2787

【AI Agent系列】【MetaGPT】9. 一句话订阅专属信息 - 订阅智能体进阶,实现一个更通用的订阅智能体(2)

订阅智能体进阶(2)。不用爬虫,直接提取网页信息。从RunSubscription分离出AddSubscriptionTask的action,并且让SubscriptionRunner单独运行。

同学小张的博客 1587

01-系统技术架构师必备——软件架构设计基础与核心概念

摘要 本文系统阐述了软件架构设计的核心概念与方法论,重点涵盖以下内容:1)软件架构的四大要素(构件、连接件、约束、配置)及其边界划分;2)Garlan & Shaw五大架构风格(数据流、调用/返回、独立构件、虚拟机、仓库)的典型应用场景;3)基于电商库存系统的架构选型实战案例,展示如何根据业务需求(高并发、最终一致性)选择事件驱动架构配合Saga模式;4)介绍ABSD、DSSA等主流架构方法论及ISO/IEEE标准体系。文章融合金融与互联网领域的架构实践经验,为技术架构师提供系统性的知识框架和决策参考。

模界 | AI工程化实践者 181

前端验证码验证实战指南:滑块、图片、点选与移动端验证完整实现

本文系统讲解前端验证码验证的常见方式与项目落地方案,涵盖图片数字验证码、数学计算验证码、滑块验证、移动端手势验证、图片点选验证和无感验证等类型。内容从验证码的安全作用、前后端交互流程、接口设计、Token 与 Ticket 校验机制讲起,并结合 JavaScript、Vue、React 前端代码,以及 Java Spring Boot、PHP 后端实现示例,帮助开发者理解验证码如何防刷、防爆破、防恶意提交。同时整理常用组件、第三方验证码服务和实战注意事项,适合前端开发、全栈开发和后台系统安全加固参考。

zzwokstyle的博客 894

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Thinkphp和Laravel框架微信小程序的旧衣回收系统的设计与实现

简单说,一个管安全规则,一个管身份凭证,组合起来为Web应用打造可靠防护。2、同时增加文字触发提醒,设置提醒语,有相同字段的数据,会触发弹框提醒,例如设置状态提醒:特急/加急/一般 增加自定义提醒语(如:库存不足,请补货)对于本系统,我们提供全方位的支持,包括修改时间和标题,以及完整的安装、部署、运行和调试服务,确保系统能在你的电脑上顺利运行。AI续写、AI优化、AI校对、AI翻译:新增AI接口,编辑器接入AI,可以实现AI续写、AI优化、AI校对、AI翻译,可以帮你实现自动化,ai帮你完成文档。

2501_91488339的博客 166

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

宠物服务小程序全栈开发实战:从设计到部署的完整指南

微信小程序开发已成为连接线上线下服务的重要技术载体,其核心在于利用微信生态的低获客成本与原生能力,构建轻量级应用。从技术原理上看,小程序基于Web技术栈,通过封装原生API实现了接近原生应用的体验,其技术价值在于为中小企业和个人开发者提供了快速验证商业模式和上线服务的平台。在应用场景上,它尤其适合宠物服务这类兼具标准化服务与强社交属性的行业。本文以宠物服务小程序为例,深入剖析了其核心模块设计,如宠物档案管理和服务预约系统,并详细解读了使用Redis实现分布式锁以防止预约超卖等高并发场景下的关键技术实践,为开

weixin_34152820的博客 386

计算机毕业设计:基于Spring Boot的电商平台全栈开发实战指南

在软件开发领域,Web应用开发是核心技能之一,其原理涉及客户端与服务器的交互、数据持久化及业务逻辑处理。掌握全栈开发技术,尤其是Spring Boot这样的主流框架,对于构建高可用、可扩展的系统具有重要价值。这类技术广泛应用于电商、社交、管理等各类互联网应用场景。本文聚焦于电商购物平台这一经典业务模型,深入探讨其模块设计与实现路径。通过整合Spring Boot、MyBatis-Plus、JWT认证等关键技术,并结合Redis缓存优化,详细拆解了用户认证、商品管理、订单处理及支付集成等核心功能,为计算机专业

weixin_34037173的博客 294
上一篇: laravel8 Redis 存储
下一篇: tp5邮箱发送
stringQiang
博客等级 码龄5年 36粉丝 36原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值