页面刷新特征(转)

来分析这样一种实际情况,即,在HTTP处理程序处理请求之前对请求进行筛选,这有助于实现一个原本不可能的特征。回发机制有一个严重的缺陷——如果用户刷新当前显示页面,则服务器上所采取的最后一个动作将盲目地重复。例如,如果作为前一次发送的结果添加了一个新记录,则应用程序会在另一次回发时试图插入一个完全相同的记录。当然,这会导致插入完全相同的记录,因而应当产生一个异常。这一缺陷自Web编程最先出现时就已经存在了,ASP.NET无疑不会引入它。要实现非重复的动作,必须采取一些对策,本质上将任何关键的服务器端操作转换为一个幂等性。在代数中,如果一个操作不管对它执行多少次结果都不变,我们就说该操作是幂等的。例如,看一看如下SQL命令:

DELETE FROM employees WHERE employeeid=9

我们可以对该命令连续执行1000次,但是最多只会删掉1个记录,即满足WHERE子句中设定的标准的记录。另请考虑如下命令:

INSERT INTO employees VALUES (...)

每次执行该命令,都有可能把一个新记录添加到employees表中。如果存在自动编码的键列或者非惟一的列,尤其会出现这种情况。如果表设计要求键是惟一的并且明确加以规定,则第2次运行该命令时会抛出一个SQL异常。

虽然刚才考虑的特殊情况通常在数据访问层(data access layer,简称DAL)解决,但是它的基本模式代表了大多数Web应用程序的一个常见方案。因此,待研究的问题是:怎样查明页面是因为一个显式的用户操作被回传,还是因为用户按下了F5键或页面刷新工具栏按钮呢?

[b]1. 页面刷新操作的基本原理[/b]

页面刷新操作是一种内部浏览器操作,对此浏览器不会根据事件或回调提供任何外部通知。从技术上讲,页面刷新是由最新请求的“简单的”重复组成的。浏览器缓存它所服务的最新请求,并在用户按下页面刷新键或按钮时重新显示。我所知道的浏览器不会为页面刷新事件提供任何类型通知——即使有,无疑也不是一种公认标准。

据此可知,服务器端代码(例如,ASP.NET、经典ASP或ISAPI DLL)无法将刷新请求与一般的提交或回发请求相区分。为了帮助ASP.NET检测和处理页面刷新,我们需要创建外围机制,使两个在其他方面相同的请求看起来不同。所有已知的浏览器都是通过重新发送最后发送的HTTP请求来实现刷新;为了使该副本不同于原始请求,一个额外的服务必须添加其他参数,而 ASP.NET页面必须能够捕获它们。

我考虑了一些附加需求。解决方案不应依赖会话状态,而且不应使服务器内存负荷太重。它应该是相对容易部署的,而且应尽量不引人注目。

[b]2. 解决方案的概要描述[/b]

本解决方案基于如下思想:每个请求被分配一个标签号,而HTTP模块将跟踪它处理的每个不同页面里最后服务的标签。如果该页面持有的标签号小于该页面的最后服务的标签,则只能表明服务了相同的请求——即,页面刷新。该解决方案由两个构造块组成:一个HTTP模块和一个自定义的页面类,前者对标签号作初步检查,后者自动地将一个渐进的标签号码添加到每个服务过的页面。使该特征起作用涉及两个步骤:首先,注册该HTTP模块;其次,在相关的应用程序中改变每个页面的基本的代码隐藏类以检测浏览器刷新。

HTTP模块位于HTTP运行库环境的中间,登记应用程序中的一个资源的每个请求。页面第一次被请求时(不是回发时),不分配任何标签。HTTP模块将生成一个新的标签号,并把它存储在HttpContext对象的Items集合中。此外,该模块将最后服务的标签的内部计数器初始化为0。随后该页面每次被请求时,该模块都将最后服务的标签与页面标签进行比较。如果页面标签更新一些,则该请求被认为是一次普通的回发;否则,它将被标记为一次页面刷新。表2.6总结了这两种场景及其相关的操作。

[img]http://www.iteye.com/upload/attachment/30126/5e008406-8cca-3e4e-b2c5-45e4ba90cd87.png[/img]


为了确保每个请求(除了第一次以外)都有一个合适的标签号,需要得到页面类的一些帮助。这就是为什么需要将每个打算支持该特征的页面的代码隐藏类设置为一个特定类——这是我们稍候将讨论的一个过程。该页面类将从HTTP模块接收两种不同的信息:要存储在随页面一起传送的一个隐藏字段中的下一个标签,以及该请求是否为页面刷新的信息。作为对开发人员的一项增值服务,代码隐藏类将提供一个额外的布尔属性:IsRefreshed,以允许开发人员了解请求是页面刷新还是常规回发。

*重要提示 HttpContext类上的Items集合是一个载体集合,是为了让HTTP模块将信息向下传递给实际负责服务请求的页面和HTTP处理程序而特意建立的。我们这里采用的HTTP模块在Items集合中设置两个数据项。一个数据项让页面知道请求是否为页面刷新;另一个数据项让页面知道下一个标签号是什么。让HTTP模块将下一个标签号传递给页面,满足使页面类的行为尽可能地简单和线性的目的,从而将大部分实现和执行负担转移给HTTP模块。

[b]3. 解决方案的实现[/b]

我刚刚概述的解决方案有几个问题有待研究。首先,状态是必需的,我们把它保存在哪里?其次,对每个输入请求都将调用一个HTTP模块。如何区分对相同页面的请求呢?如何把信息传递给页面呢?你希望页面有多大的智能呢?

显然,这里所列的每个问题,都可以用不同于此处所介绍的方法进行设计和实现。为了得到一个可行的解决方案,这里作出的所有设计选择应当被认为是任意的,如果需要对该代码进行重新加工以更好地满足自己的目的,可以用等效的策略替换它。下一个实例中给出的代码版本,融入了我一直以来所收集的最宝贵的建议。这些建议之一如前一个重要提示所述,尽量将代码移到HTTP模块中。

如下代码展示了该HTTP模块的实现:

public class RefreshModule : IHttpModule

{

public void Init(HttpApplication app) {

app.BeginRequest += new EventHandler(OnAcquireRequestState);

}

public void Dispose() {

}

void OnAcquireRequestState(object sender, EventArgs e) {

HttpApplication app = (HttpApplication) sender;

HttpContext ctx = app.Context;

RefreshAction.Check(ctx);

return;

}

}


该模块监听BeginRequest事件,结束调用RefreshAction辅助类上的Check方法。

public class RefreshAction

{

static Hashtable requestHistory = null;
// Other string constants defined here
public static void Check(HttpContext ctx) {

// Initialize the ticket slot
EnsureRefreshTicket(ctx);

// Read the last ticket served in the session (from Session)
int lastTicket = GetLastRefreshTicket(ctx);

// Read the ticket of the current request (from a hidden field)
int thisTicket = GetCurrentRefreshTicket(ctx, lastTicket);

// Compare tickets
if (thisTicket > lastTicket ||(thisTicket==lastTicket && thisTicket==0)) {

UpdateLastRefreshTicket(ctx, thisTicket);

ctx.Items[PageRefreshEntry] = false;

}

else

ctx.Items[PageRefreshEntry] = true;

}

// Initialize the internal data store

static void EnsureRefreshTicket(HttpContext ctx)

{

if (requestHistory == null)

requestHistory = new Hashtable();

}

// Return the last-served ticket for the URL

static int GetLastRefreshTicket(HttpContext ctx)

{

// Extract and return the last ticket

if (!requestHistory.ContainsKey(ctx.Request.Path))

return 0;

else

return (int) requestHistory[ctx.Request.Path];

}

// Return the ticket associated with the page

static int GetCurrentRefreshTicket(HttpContext ctx, int lastTicket)

{

int ticket;

object o = ctx.Request[CurrentRefreshTicketEntry];

if (o == null)

ticket = lastTicket;

else

ticket = Convert.ToInt32(o);

ctx.Items[RefreshAction.NextPageTicketEntry] = ticket + 1;

return ticket;

}

// Store the last-served ticket for the URL

static void UpdateLastRefreshTicket(HttpContext ctx, int ticket)

{

requestHistory[ctx.Request.Path] = ticket;

}

}


Check方法操作如下:它将最后服务的标签(如果有)与页面提供的标签进行比较。该页面将标签号存储在一个通过Request对象接口读入的隐藏字段中。HTTP模块维护一个散列表,服务的每个不同的URL都有一个表项。该散列表中的值存储该URL的最后服务的标签。

注意 Item索引器属性,来设置最后服务的标签,因为Item重写已有的项。如果数据项已经存在,则Add方法只是返回。

除了创建HTTP模块,我们还需要安排一个页面类,以用作需要检测浏览器刷新的页面的基类。下面给出了这个页面类的代码:

// Assume to be in a custom namespace
public class Page : System.Web.UI.Page

{

public bool IsRefreshed {

get {

HttpContext ctx = HttpContext.Current;

object o = ctx.Items[RefreshAction.PageRefreshEntry];

if (o == null)

return false;

return (bool) o;

}

}

// Handle the PreRenderComplete event

protected override void OnPreRenderComplete(EventArgs e) {

base.OnPreRenderComplete(e);

SaveRefreshState();

}

// Create the hidden field to store the current request ticket

private void SaveRefreshState() {

HttpContext ctx = HttpContext.Current;

int ticket = (int) ctx.Items[RefreshAction.NextPageTicketEntry];

ClientScript.RegisterHiddenField(

RefreshAction.CurrentRefreshTicketEntry,

ticket.ToString());

}

}


该示例页面定义了一个新的公共布尔属性IsRefreshed。我们可以在代码中以使用IsPostBack或IsCallback那样的方法使用该属性。该实例页面重写了OnPreRenderComplete方法,用页面标签添加隐藏字段。如前所述,该页面标签是通过Items集合中的一个特别的(并且是任意命名的)项从HTTP模块中得到的。

[img]http://www.iteye.com/upload/attachment/30124/aa1cf0c1-8bca-3f0f-89b6-5b7545e74861.png[/img]

public partial class TestRefresh : ProAspNet20.CS.Components.Page

{

protected void AddContactButton_Click(object sender, EventArgs e)

{

Msg.InnerText = "Added";

if (!this.IsRefreshed)

AddRecord(FName.Text, LName.Text);

else

Msg.InnerText = "Page refreshed";

BindData();

}

}

IsRefreshed属性允许我们决定在一个回发动作被请求时要做什么。在上述代码中,如果页面正在刷新,则不调用AddRecord方法。不用说,IsRefreshed仅适用于这里介绍的自定义页面类。自定义页面类并非只是添加该属性,它还要添加隐藏字段,这是该机制起作用所必不可少的。

转自:http://space.itpub.net/100788/viewspace-271432
ASP.NET页面自动刷新实现方法(C#) 可以使用ASP.NET提供的服务器端定时器来实现页面自动刷新。在页面加载时,启动一个定时器,达到在指定时间后刷新页面的效果。通过以上方法,你可以在ASP.NET页面中实现自动刷新的效果。你可以根据自己的需求选择其中一种方式进行实现。可以在HTML的Head部分添加一个Meta标签,设置刷新间隔时间,使得页面在指定的时间间隔后自动刷新。可以使用JavaScript的定时器来实现页面自动刷新。在ASP.NET中,实现页面自动刷新可以通过以下方式来完成。方法设置一个定时器,达到在指定时间后刷新页面的效果。 阅读详情

相关推荐

ASPNET刷新页面的六种方法

ASPNET刷新页面的六种方法

ASP.NET刷新页面的六种方法

第一: private void Button1_Click( object sender, System.EventArgs e )   {     Response.Redirect( Request.Url.ToString( ) ); } 第二: private void Button2_Click( object sender, System.EventArgs e )   {     

ls212的专栏 2063

医疗AI Agent实战:从零搭建一个能看病的智能助手(附完整代码)

本文详细介绍了如何从零搭建一个医疗AI Agent智能助手,涵盖核心架构设计、症状推理引擎开发、安全与合规实现以及系统集成等关键环节。通过完整的代码示例和实战案例,帮助开发者快速构建具备医疗咨询能力的智能Agent,提升医疗服务的效率和质量。

ss78901的博客 466

asp.net刷新页面的6种方法

changhu的专栏 688

01-SA8155 QNX 虚拟机Hypervisor

Hypervisor运行在Host OS操作系统上,其他操作系统均在Hypervisor上运行。:Hypervisor直接运行在硬件上,操作系统在Hypervisor之上运行。终止(关闭):echo control 0 dev/vmm。路径:qnx_ap/AMSS/platform/vm/resources/关闭/终止 qvm(GVM):slay -s SIGQUIT qvm。", //host PVM --- 主机。不直接操作/dev/vmm 实现关闭,启动vm。

静虚待令,有物混成 1万+

Linux内核支持串口屏,linux串口触摸屏设计总结

Linux serial touch 设计总结概述:最近在做嵌入式linux下串口触摸屏设计,遇到一些问题,经过查找资料和请教同事,总算把问题解决了,事后有把linux相关的内核代码仔细看了一遍,为了有点成果,特别写了个总结。如有任何问题请联系yxj_5421@http://www.doczj.com/doc/87b94b1e227916888486d76d.html,转载请标明出处。系统资源:L...

weixin_39935903的博客 1296

ASP.NET 关于判断是否是客户端“刷新”页面的方法 [转]

ASP.NET 关于判断是否是客户端“刷新”页面的方法 [转] 在优快云发现一个好贴,收藏一下! 原贴地址:http://topic.csdn.net/u/20080921/21/9bb09e95-896e-49fd-a389-8e36d320acd3.html?seed=1021501664 在你的项目中放入这样一个ascx用户控件: <%@ Contro...

didie4846的博客 292

【技术分享】语音多模态LLM越狱

语音多模态LLM越狱攻击作为一种新兴安全威胁,揭示了多模态模型在语音输入场景下的脆弱性。尽管已有多种攻击方法被提出,但其具体实现步骤、防御措施的有效性及行业影响等问题仍需进一步探索[9]。未来研究应聚焦于改进模型架构、开发针对性防御策略,并评估语音输入越狱攻击的实际危害。只有通过全面理解这些挑战,才能为多模态智能系统的安全性提供更可靠的保障。说到语音多模态LLM越狱的具体实现步骤,这其实是一个复杂且多层次的过程🧐。首先,攻击者需要深入分析目标模型的响应模式和安全机制,找出可能的漏洞点。

qq_29883477的博客 1261

vue刷新页面时 保存store对象内的值

如题: 需求:在页面刷新时,仍然想保留此次页面中store内存储的特征值 在App.vue的created中,添加监听,代码如下: //在页面加载时读取sessionStorage里的状态信息 if (sessionStorage.getItem("store")) { this.$store.replaceState( Object.assign( {},

qiansuike的博客 1593

智能车竞赛新手必看:用AD21从零画一块英飞凌TC264核心板(附开源PCB文件)

本文详细介绍了使用Altium Designer 21(AD21)从零开始设计英飞凌TC264核心板的完整流程,涵盖原理图绘制、PCB布线到最终DRC检查的全过程。针对智能车竞赛新手,提供了实用的硬件设计技巧和开源PCB文件,帮助快速掌握TC264核心板开发。

weixin_27017211的博客 246

OCC入门指南:从零开始掌握Open CASCADE Technology

本文是Open CASCADE Technology(OCC)的入门指南,详细介绍了这款开源C++三维几何建模内核的核心概念与价值。内容涵盖从零开始搭建开发环境、编写第一个显示立方体的程序,到深入理解其几何与拓扑核心、掌握Draw测试工具及Handle内存管理等关键编程范式,旨在帮助开发者快速掌握这一工业级CAD/CAE/CAM应用开发利器。

java5的博客 1275

Servlet自动刷新页面

以下内容引用自http://wiki.jikexueyuan.com/project/servlet/auto-refresh.html: 假设一个Web页面,显示了现场比赛得分或股票市场状况或货币兑换率。对于所有这些类型的页面,都需要使用浏览器中的Refresh或Reload按钮来定期刷新Web页面。 Java Servlet提供一个机制使这项工作变得简单,可以使得Web页面在给定...

angou6476的博客 268

PostgreSQL的学习心得和知识总结(八十二)|深入理解PostgreSQL数据库SQL语句的词法解析和语法解析流程

postgresql 词法解析语法解析流程

孤傲小二~阿沐的博客 5448

asp.net 检测页面是否刷新

public partial class TestRefresh : ProAspNet20.CS.Components.Page { protected void AddContactButton_Click(object sender, EventArgs e) { Msg.InnerText = "Added"; if (!this.IsRefreshed) AddRecord(FName.Text, LName.Text); else Msg.InnerText = "Page re

u012576247的专栏 1930

AI游戏制作07——波次计时器,敌人按波次生成

AI游戏制作07——波次计时器,敌人按波次生成

qq_40572023的博客 47

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

彻底禁用移动端H5页面默认下拉刷新功能

摘要:移动端H5页面常遇到浏览器默认下拉刷新与自定义逻辑冲突的问题。本文提出三重解决方案:1)JavaScript事件拦截,通过计算触摸距离阻止默认行为;2)Meta标签优化,限制缩放和声明WebApp特性;3)CSS增强防御,禁用惯性滚动。还针对iOS和Android浏览器提供特殊处理技巧,并强调真机测试和多浏览器验证的重要性。最后给出完整代码示例,实现在保持正常滚动体验的同时彻底禁用下拉刷新功能。

小小•愿望的博客 1637

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

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

ios uiview 如何刷新_iOS开发之更新数据UIViewController如何"刷新"页面

e...其实这个是扫盲贴,也是基础,又有人会发现本帖是个脑残贴...问题1.是当我们UIViewController的self.view上有很多乱起八糟的View啊 自定义控件的时候,由于数据是异步回来或者哪个事件响应后才请求网络数据问题2.有人想有没有tableview的类似的方法比如reloadData之后就刷新了tableview问题3.又有人想,能不能调用[self.view setNee...

weixin_39969448的博客 1960

深度学习工具包 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")

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

如何区分一个页面是不是h5页面

H5页面 是指基于 HTML5 技术标准开发的网页或移动端页面。这一概念最初来源于 HTML5(超文本标记语言第5版),它是现代网页开发的核心技术标准之一。但在实际应用中,尤其是在中国互联网行业,“H5页面”这一术语常被泛化,通常指代以下两类内容:1. 技术定义:基于HTML5标准的网页HTML5 是W3C语义化标签:如<header><nav><section><article>等,提升代码可读性和SEO优化。多媒体支持:原生支持<video><audio>

m0_68250740的博客 4759

关于页面刷新时丢失localstorage中的数据问题

描述:每次刷新或重新进入uniapp编写的app,某个数据总是undefine,其他数据都正常显示 这个数据原先的命名是availableAmount,在页面运行时查看localstorage,已经正常被存入,但一刷新就丢失了。 观察了一下找到“病例”特征,该键值名称过长,该键值名称过长,该键值名称过长 不知道是不是浏览器有这个命名规则,后改为avAmount后问题消失 ...

Tarzan_Dong的博客 5510

html刷新页面_10分钟彻底搞懂单页面应用路由

茫茫人海中与你相遇相信未来的你不会很差作者:百度小程序技术来源:https://segmentfault.com/a/1190000023509417单页面应用特征假设: 在一个 web 页面中,有1个按钮,点击可跳转到站内其他页面。多页面应用: 点击按钮,会从新加载一个html资源,刷新整个页面;单页面应用: 点击按钮,没有新的html请求,只发生局部刷新,能营造出一种接近原生的体验,...

weixin_39535527的博客 230

避免回车键导致的页面无意义刷新的解决方法

在文本框中输入完要搜索的关键字段,按回车结果整个页面刷新了,局部刷新肯定失败。仔细分析这样的页面一般都满足以下条件:1、包含FORM表单2、只有一个文本框 这样问题就可以解决了,破坏其中任何一个条件即可,一般的做法是加一个隐藏的文本框 当然你也可以在表单 form 后面加上一个 onsubmit 事件,返回 false,来阻止 form 提交 转载于:https://www.cnblogs.com...

weixin_30488313的博客 63

刷新页面即重置,小白也能轻松上手

本文介绍了如何在星图GPU平台上自动化部署cv_unet_image-matting图像抠图 webui二次开发构建by科哥镜像,实现一键式AI图像抠图。用户无需配置环境或调试代码,刷新页面即可重置,适用于电商产品图制作、证件照处理、社交媒体头像生成等典型场景,大幅提升视觉内容生产效率。

weixin_32306683的博客 99
上一篇: Javascript 刷新框架及页面的方法总集(转)
下一篇: javaScript 屏蔽技术
rush2012
博客等级 码龄14年 2粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值