- 浏览: 1602774 次
- 来自: 上海
-
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
表单重复提交现象
导致表单重复提交的现象可以分为一下两种情况:
同步令牌的基本原理
Struts2 的实现方式
----使用 token 拦截器---
struts.xml
login.jsp
index.jsp
----使用 tokenSession 拦截器---
---使用 ExecAndWait拦截器
action.java login.jsp index.jsp 和上面的一样
wait.jsp
导致表单重复提交的现象可以分为一下两种情况:
1.多次单击提交按钮 对响应来不及。用户没有看到提交后的结果,导致用户频繁多次的点击提交按钮。 2.执行刷新操作 对响应及时,也有可能出现表单重复提交现象。服务器段的程序在处理哟过户提交哦啊的信息后,调用RewuestDispatcher.forward()方法,将哟过户请求导向成功的页面,用户看到成功信息后,对成功页面执行花心操作,这是浏览器将再次提交用户先前输入的信息。
同步令牌的基本原理
在服务器端避免表单重复提交,通常采用同步令牌的方式来实现。同步令牌的基表原理如下: 1:服务器端在处理客户端请求时,创建一个Session对象和一个令牌(例如 token1)。然后 将token1作为影藏域随处理结果一起发送到客户端,同事将token1保存到session中 2.服务器端在处理到达的请求之前,将请求中的token1与保存在当前用户session中的值进行比较,肩擦这两个值是否匹配。 3.如果相等。表示用户是第一次提交表单,则清楚session中的token1,然后执行数据处理操作,同时产生一个新的令牌值(例如 token2) 然后保存到session中,当用户重新访问提交数据页面时,将新产生的token2做为表单影藏域的值。 4.如果用户重复提交,客户端传递过来的令牌值是token1,而服务器端的令牌为token2,这两个令牌的值不等,于是不在对用户的请求进行提交,从而有效防止表单重复提交发生。
Struts2 的实现方式
Struts2框架提了token标签,使用该标签,需要指定一个令牌的名字,例如:<s:token name="user.token"/> token标签将创建一个新的令牌值,并根据指定的令牌名称将令牌值保存到session中。 token标签最终将会在表单中生成两个影藏字段。请求包含token标签的表单文件后,在运行页面的源文件中可以看到如下形式的代码: <input type="hidden" name="struts.token.name" value="user.token"/> <input type="hidden" name="user.token" value="5J6RS8NCMZSQBH7NZDX8XRG435O2XAP"/> 第一个隐藏字段的名字是struts.token.name 是固定的,第二个影藏字段的名称是user.token 它的value的值是令牌值。 服务器首先根据stuts.token.name 找到保存令牌的请求参数名,user.token 然后获取user.token请求参数得到令牌值。 token标签必须与token,tokenSession或者 execAndWait等拦截器配合使用,这3个拦截器都能对token标签进行处理 上述3个拦截器的实现类分别为了TokenInterceprot,TokenSessionStoreInterceptor 和ExecuteAndWaitInterceptor,他们已经在Struts-default.xml文件中定义,但是没有包含在defaultStack拦截器栈中。
----使用 token 拦截器---
import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport{ private String userName; private String userPassword; @Override public String execute() throws Exception { // TODO Auto-generated method stub return SUCCESS; } // get set }
struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 如果 注解的action配置改变时候不需要重新启动tomcate --> <constant name="struts.devMode" value="true"/> <constant name="struts.convention.classes.reload" value="true" /> <package name="default" extends="struts-default"> <action name="login" class="com.sh.action.LoginAction"> <interceptor-ref name="defaultStack"/> <interceptor-ref name="token"/> <result name="invalid.token">/login.jsp</result> <result name="input">/login.jsp</result> <result name="success">/index.jsp</result> </action> </package> </struts>
login.jsp
<body> <STRONG>用户登录</STRONG> <s:form action="login"> <s:token/> <s:actionerror/> <s:textfield name="userName" label="姓名"/> <s:textfield name="userPassword" label="密码"/> <s:submit value="登录"/> </s:form> </body>
index.jsp
<body> <h4>用户登录成功</h4> 登录名称:${userName} </body>
----使用 tokenSession 拦截器---
tokenSession拦截器扩展了token拦截器,但是tokenSession拦截器不会返回一个特殊的结果,也不会添加一个动作错误,只是阻断后面的提交,这样做的结果就是用户将看到你同样的响应,就好像只有一次提交。 如果使用浏览器的后退功能,退回到登录页面,即使使用其他名称登录,提交表单后仍然显示原来扽牢固的名称。也就是说tokenSession拦截器只承认第一次提交。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 如果 注解的action配置改变时候不需要重新启动tomcate --> <constant name="struts.devMode" value="true"/> <constant name="struts.convention.classes.reload" value="true" /> <package name="default" extends="struts-default"> <action name="login" class="com.sh.action.LoginAction"> <interceptor-ref name="defaultStack"/> <interceptor-ref name="tokenSession"/> <!-- 如果使用 token 下面的就有这样的一个返回值 <result name="invalid.token">/login.jsp</result> --> <result name="input">/login.jsp</result> <result name="success">/index.jsp</result> </action> </package> </struts>
---使用 ExecAndWait拦截器
在 web应用中,往往会遇到需要执行很长时间的页面,例如上传一个很大的文件,服务器接受请求后,需要处理批量的数据。这种情况下,如果没有任何设置,那么在服务器处理的这个过程中。浏览器将呈现一片空白,这时用户不知道程序 有没有执行,很可能刷新该页面,甚至执行关闭页面的操作,因此,在等待处理的过程中,设置一个友好的信息提示页面是很有必要的。 使用execAndWait拦截器实现自动显示等待页面的具体过程如下: (1) 当表单提交请求到来时。execAndWait拦截器将创建一个新的线程来执行Action,然后返回一个等待页面给用户,然用户只懂啊请求正在处理中。 (2) 等待页面将包含自动刷新功能,每隔几秒就通知浏览器,向初始请求的URL再次发送请求 (3) execAndWait拦截器再次截获请求,判断Action是否执行完毕,如果仍未执行完毕,则继续向用户返回等待页面;如果已经执行完毕,则向用户返回相应的执行成功页面。 execAndWait拦截器包含一下3个参数: threadPriority:可选参数,用来指定线程的优先级。默认值为Thread.NORM_PRIORITY. delay:可选参数,用来显示等待页面前初始的等待延迟时间,以毫秒为单位,默认情况下,没有等待延迟。 delaySleepInterval:可选参数,只能和delay参数一起使用,用来指定检查后进程是否执行完毕的时间间隔,以毫秒为单位,默认值为100毫秒。 初始等待延迟:就是可以让服务器在显示等待页面之前延迟一段时间,单位是毫秒。 在初始等待延迟时间里,execAndWait拦截器每隔100毫秒检查后台Action的执行情况,如果 Action对请求的处理,并不需要很长的时间,则等待页面不会被显示,如果Action需要较长的执行时间,则将等待页面返回给用户。
action.java login.jsp index.jsp 和上面的一样
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 如果 注解的action配置改变时候不需要重新启动tomcate --> <constant name="struts.devMode" value="true"/> <constant name="struts.convention.classes.reload" value="true" /> <package name="default" extends="struts-default"> <action name="login" class="com.sh.action.LoginAction"> <interceptor-ref name="defaultStack"/> <interceptor-ref name="execAndWait"> <!-- 设置服务器处理请求的时间 ,如果超过这个时间 将显示等待页面 wait.jsp --> <param name="delay">1000</param> </interceptor-ref> <result name="wait">/wait.jsp</result> <!-- 使用 tokenSession 拦截器 <interceptor-ref name="tokenSession"/> --> <!-- 如果使用 token 下面的就有这样的一个返回值 <interceptor-ref name="token"/> <result name="invalid.token">/login.jsp</result> --> <result name="input">/login.jsp</result> <result name="success">/index.jsp</result> </action> </package> </struts>
wait.jsp
<head> <base href="<%=basePath%>"> <title>避免表单重复提交</title> <!--设置每5s刷新 这个页面--> <meta http-equiv="refresh" content="5,url=<s:url includeParams='all'/>"> </head> <body> <h4>正在登录系统<br/><br/> 请您稍候...</h4> </body>
发表评论
-
解决getOutputStream() has already been called for this response
2014-07-30 19:16 3356java.lang.IllegalStateException ... -
Struts2 + ajaxFileUpload 异步上传文件
2013-12-04 19:33 1913ajaxFileUpload下载地址http://www.ph ... -
Struts2 Action 解析提交的XML
2013-10-16 12:30 1669package com.bjdata.bjsearch.p ... -
MyBatis+Spring+Struts2
2012-11-28 00:32 10663MyBatis3.1.1+Spring3.1.2+Struts ... -
Ibatis 整合spring + Struts2 加入OSCACHE
2012-11-14 00:10 4591说明: 使用 spring2.5 +ibatis2.3 ... -
Struts2中使用JfreeChart
2012-11-06 09:02 16631.jar commons-fileupload-1.2.2. ... -
Struts2整合SiteMesh
2012-11-05 10:33 77151.导入Struts2的jar 和 sitemesh.jar ... -
Struts2 编写安全策略(四十五)
2012-09-23 23:53 2326编写安全策略 包含(1 ... -
SSH2整合完整案例(四十三)
2012-09-14 09:34 20730注解配置:Struts2+Spring2.5+Hibernat ... -
Struts2 文件上传,下载,删除(四十一)
2012-09-10 23:37 12372本文介绍了: 1.基于表单的文件上传 2.Struts 2 的 ... -
Struts2 文件上传,下载的类型(四十二)
2012-09-06 23:18 2032声明: 以下复制他人的!!! Struts2 文件上传 之 ... -
Struts2 常用标签使用(三十九)
2012-09-03 09:28 64671.append标签 使用append标签可以把多个集合对 ... -
Struts2 timer拦截器(三十二)
2012-08-31 02:17 21011.Strus2系统拦截器中,timer拦截器可以实现输出Ac ... -
Struts2 常用标签使用(三十九)
2012-09-03 00:50 51.append标签 使用append标签可以把多个集合对 ... -
Struts2 主题和模版设置(四十)
2012-09-03 20:24 4165----------------Struts2 主题----- ... -
Struts2 如何使用OGNL表达式(三十八)
2012-08-30 20:55 51321.OGNL是Object Graph Navitagtion ... -
Struts2 使用Validation框架验证数据(三十七)
2012-08-30 11:25 18504A:在Struts2的框架汇中,开发者可以通过继承Action ... -
Struts2 使用Validation框架验证数据(三十七)
2012-08-29 14:08 9A:在Struts2的框架汇中,开发者可以通过继承Action ... -
Struts2 iterator 标签遍历 Map,List,数组(三十六)
2012-08-26 18:30 205731.使用iterator 标签 遍历 数组,Map,List ... -
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
2012-08-26 02:52 19239---------------List------------ ...
相关推荐
8. **Execute and Wait Interceptor**:执行并等待拦截器,后台执行Action,用户会被导向一个等待页面。 9. **ExceptionInterceptor**:异常拦截器,将捕获的异常定向到特定页面显示。 10. **File Upload...
内容概要:本文详细介绍了低成本单发单收激光测距传感器的一站式解决方案,涵盖硬件设计、软件实现及其应用。硬件部分基于STM32F030F4P6芯片,搭配激光发射管和APD接收模块,通过精心设计的信号调理电路确保高精度测量。软件部分展示了关键代码片段,如初始化、测距算法和ADC配置,采用改进型飞行时间法(ToF)并通过DMA优化数据处理效率。此外,文章还讨论了调试过程中遇到的问题及解决方案,如环境光干扰和PCB布局优化。最终,该方案实现了0.05-50米范围内±1.5mm的测距精度,适用于多种应用场景。 适合人群:电子爱好者、硬件工程师、嵌入式系统开发者。 使用场景及目标:① DIY爱好者可以通过本方案进行个人项目的开发;② 企业可以基于此方案进行商业产品的开发,降低成本;③ 教育机构可以用作教学案例,帮助学生理解激光测距原理和技术实现。 其他说明:文章不仅提供详细的硬件和软件设计方案,还包括BOM清单、供应商信息和调试指南,有助于快速实现和优化项目。
内容概要:本文详细介绍了将麻雀算法(SSA)应用于LSTM参数优化的方法及其MATLAB实现。首先,通过生成带噪声的正弦波数据模拟真实场景的数据扰动,然后定义适应度函数用于评估LSTM模型的表现。接着,利用麻雀算法的发现者和跟随者角色进行参数优化,最终实现了比随机调参更好的预测效果。文中不仅提供了完整的代码实现,还讨论了参数设置的经验值以及一些实用技巧,如数据归一化、早停机制和并行加速等。 适合人群:对机器学习尤其是深度学习有一定了解的研究人员和技术爱好者,熟悉MATLAB编程环境。 使用场景及目标:适用于需要提高时间序列预测精度的任务,如金融数据分析、天气预报等领域。主要目标是通过引入生物启发式的优化算法来提升LSTM模型的性能。 其他说明:文中提到的麻雀算法能够显著减少人工调参的工作量,并且相比传统的网格搜索法更加高效。此外,作者还分享了一些实践经验,帮助读者更好地理解和应用这一方法。
内容概要:本文详细介绍了使用西门子Smart200 PLC实现高效的星三角降压启动子程序的方法。作者分享了具体的编程技巧,包括参数化的外部配置、定时器的巧妙运用以及故障处理机制。文中展示了完整的主程序调用示例和子程序内部逻辑,强调了模块化编程的优势,使得不同电机可以轻松复用相同的子程序,极大提高了调试和维护效率。此外,作者还提到了一些常见的调试陷阱和优化建议,如避免星三角同时导通、合理设置切换时间和加入硬件互锁等。 适合人群:从事PLC编程、自动化控制领域的工程师和技术人员,尤其是那些希望提高编程效率和代码复用性的从业者。 使用场景及目标:适用于需要频繁进行电机星三角降压启动的工业应用场景,如纺织厂、水泥厂等。主要目标是通过模块化编程减少重复劳动,提升系统稳定性和响应速度。 其他说明:文章不仅提供了详细的代码示例,还分享了许多实践经验,帮助读者更好地理解和应用这些技术。
2025中国数字营销趋势报告.pdf
内容概要:本文详细介绍了如何利用两台威纶通MT6071iP触摸屏控制一台信捷PLC的具体步骤和技术要点。主要内容涵盖硬件连接、触摸屏设置、PLC编程、调试与优化等方面。文中不仅提供了具体的配置方法,如通讯参数设置、画面设计、宏指令处理等,还分享了许多实际操作中的经验和注意事项,如地址分配、数据同步、通讯稳定性提升等。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是那些需要实现多屏协同控制PLC系统的工作者。 使用场景及目标:适用于需要提高生产线上设备操作便捷性和监控灵活性的场合。通过一机多屏设置,可以在不同位置对同一PLC进行控制,方便现场操作和远程管理。 其他说明:文章强调了硬件连接细节、通讯参数一致性、PLC编程逻辑的重要性,并提供了一些实用技巧,如宏指令处理、心跳检测、防呆设计等,帮助读者更好地理解和实施该项目。
2024中国上市公司数字化转型报告.pdf
内容概要:《2024年中国物联网产业创新白皮书》由深圳市物联网产业协会与AIoT星图研究院联合编制,汇集了全国30多个省市物联网组织的智慧。白皮书系统梳理了中国物联网产业的发展历程、现状及未来趋势,涵盖了物联网的概念、产业结构、市场规模、投融资情况、面临的问题与机遇。书中详细分析了感知层、传输层、平台层及应用层的关键技术,探讨了智慧城市、智能工业、车联网、智慧医疗等九大产业物联网应用领域,以及消费物联网的发展特征与热门单品。此外,白皮书还关注了物联网数据安全、法规遵从、人才短缺等挑战,并提出了相应的解决方案。 适用人群:物联网从业者、企业决策者、政策制定者及相关研究机构。 使用场景及目标:①帮助从业者深入了解物联网产业的现状和发展趋势;②为企业决策者提供战略规划依据;③为政策制定者提供政策支持和法规制定参考;④为研究机构提供详尽的数据和案例支持。 其他说明:白皮书不仅限于技术科普,更从宏观角度结合市场情况,多维度讨论了物联网产业生态,旨在为物联网企业、从业者找到最适合的技术应用场景,促进产业健康发展。报告还特别鸣谢了参与市场调研的企业,感谢他们提供的宝贵行业信息。由于时间和资源的限制,报告可能存在信息不充分之处,欢迎各界人士提出宝贵意见。
内容概要:本文详细介绍了汇川H5U PLC中采用结构体编程的优势及其具体应用场景。作者通过多个实际项目案例展示了结构体编程如何显著提高代码的整洁度、可维护性和扩展性。文中特别强调了结构体在处理大量相似设备(如气缸、阀门、伺服轴)时的作用,以及如何利用结构体简化变量管理、增强在线调试体验并减少内存消耗。此外,还讨论了一些常见的注意事项和技术细节,如结构体初始化、功能块集成、在线修改功能的应用等。 适用人群:从事工业自动化系统开发的技术人员,尤其是对PLC编程有一定经验的工程师。 使用场景及目标:适用于需要高效管理和维护复杂工业控制系统的场合,旨在帮助工程师更好地理解和掌握结构体编程技巧,从而提高工作效率和代码质量。 其他说明:文章提供了丰富的代码片段作为示例,便于读者直观地理解结构体编程的具体实现方法。同时提醒读者注意结构体初始化等问题,确保项目顺利进行。
内容概要:本文介绍了如何利用数学建模替代传统的电气元件仿真,实现三相逆变器的模型预测控制(MPC)。主要内容包括三相桥的数学模型建立、代价函数设计、状态方程离散化以及仿真优化技巧。通过将三相桥的输出电压转换为矩阵运算,减少了计算复杂度,提高了仿真速度。代价函数不仅考虑了电流跟踪误差,还加入了开关频率惩罚项,以减少不必要的开关动作。此外,文中提供了详细的代码示例,展示了如何通过数学建模实现高效的MPC控制。 适合人群:从事电力电子控制系统设计的研究人员和技术人员,尤其是对三相逆变器及其控制算法感兴趣的读者。 使用场景及目标:适用于需要快速迭代和验证控制算法的场合,如光伏并网、电机驱动等领域。目标是提高仿真效率,优化控制性能,减少开发时间和成本。 其他说明:文中提到的技术手段能够显著提升仿真速度,但在应用时需要注意数值稳定性和参数辨识的准确性。
内容概要:本文详细介绍了如何使用MATLAB/Simulink构建并仿真一个60W的Flyback变换器模型,输入为390V直流,输出为19V/3A。主要内容涵盖主电路搭建(包括变压器参数设置、MOSFET选择)、吸收电路设计(RCD参数调整)、闭环控制系统(PID参数调节)以及动态性能测试。文中还提供了多个实用技巧,如防止变压器饱和、优化吸收电路参数、提高动态响应速度等,并指出了常见的错误及其解决方案。同时,推荐了几本相关领域的经典书籍供进一步学习。 适合人群:初学者和有一定基础的电源设计师,特别是希望深入了解Flyback变换器工作原理和技术细节的人群。 使用场景及目标:适用于需要进行中小功率电源设计的研究人员和工程师,旨在帮助他们掌握Flyback变换器的设计方法,提升仿真的准确性和可靠性。 其他说明:提供的仿真文件可以在MATLAB 2017b及以上版本运行,建议读者按照文中步骤逐步实践,以便更好地理解和应用所学知识。
内容概要:《2024年中国城市低空经济发展指数报告》由36氪研究院发布,指出低空经济作为新质生产力的代表,已成为中国经济新的增长点。报告从发展环境、资金投入、创新能力、基础支撑和发展成效五个维度构建了综合指数评价体系,评估了全国重点城市的低空经济发展状况。北京和深圳在总指数中名列前茅,分别以91.26和84.53的得分领先,展现出强大的资金投入、创新能力和基础支撑。低空经济主要涉及无人机、eVTOL(电动垂直起降飞行器)和直升机等产品,广泛应用于农业、物流、交通、应急救援等领域。政策支持、市场需求和技术进步共同推动了低空经济的快速发展,预计到2026年市场规模将突破万亿元。 适用人群:对低空经济发展感兴趣的政策制定者、投资者、企业和研究人员。 使用场景及目标:①了解低空经济的定义、分类和发展驱动力;②掌握低空经济的主要应用场景和市场规模预测;③评估各城市在低空经济发展中的表现和潜力;④为政策制定、投资决策和企业发展提供参考依据。 其他说明:报告强调了政策监管、产业生态建设和区域融合错位的重要性,提出了加强法律法规建设、人才储备和基础设施建设等建议。低空经济正加速向网络化、智能化、规模化和集聚化方向发展,各地应找准自身比较优势,实现差异化发展。
内容概要:本文深入探讨了汇川H5U PLC程序框架,尤其是其在ETHERCAT总线控制方面的应用。该框架提供了完整的气缸控制、轴控制等功能模块,涵盖从初始化到故障处理的全过程。文中详细介绍了气缸控制的梯形图逻辑、轴控制的具体指令及其状态机设计,并展示了触摸屏与PLC变量的绑定方法。此外,还提到了三套针对不同应用场景的程序样例,包括单机设备、流水线联动和柔性生产版本。整体而言,该框架以其条理分明的代码结构和丰富的功能模块,成为自动化控制领域的有力工具。 适合人群:从事工业自动化控制系统的工程师和技术人员,特别是初学者和希望深入了解汇川H5U PLC及ETHERCAT总线控制的专业人士。 使用场景及目标:适用于需要高效、稳定的多轴运动控制和人机交互的自动化项目。主要目标是帮助用户快速掌握汇川H5U PLC的编程技巧,提高项目的开发效率和可靠性。 其他说明:文章强调了框架的实用性、易用性和详细的文档支持,使得即使是新手也能轻松上手并应用于实际项目中。
https://blog.csdn.net/qianqianaao/article/details/147515496?fromshare=blogdetail&sharetype=blogdetail&sharerId=147515496&sharerefer=PC&sharesource=qianqianaao&sharefrom=from_link python小项目
内容概要:本文详细介绍了如何利用Cruise和Simulink平台进行增程式混合动力汽车的整车仿真模型构建。主要内容涵盖增程器、电池、驱动电机等关键部件的物理参数设置,尤其是发电机和驱动电机效率MAP图的精确调整。文中强调了控制策略的重要性,将其分为驾驶模式选择、扭矩分配、SOC平衡三个子系统,并讨论了模式切换逻辑、再生制动策略以及DLL联合仿真的难点和技术细节。此外,作者分享了许多实用的经验和技巧,如使用二维插值提高增程器工作效率、设置合理的滞回区避免模式震荡、通过环形缓冲区解决时钟同步问题等。 适合人群:从事新能源汽车研究的技术人员、高校相关专业师生、对混合动力汽车仿真感兴趣的工程师。 使用场景及目标:帮助读者掌握增程式混合动力汽车仿真模型的搭建方法,提高仿真的准确性,优化控制策略,减少开发周期和成本。 其他说明:文章提供了大量实战经验和调试技巧,有助于解决实际工作中常见的问题,如模式切换不稳定、DLL编译错误、制动能量回收不合理等。同时,还分享了一些提高仿真效率的小窍门,如使用Fast Restart功能、避免内存泄漏等。
内容概要:本文详细介绍了威纶通触摸屏上利用EBpro软件和宏指令实现的经典贪吃蛇游戏。文中不仅剖析了游戏的核心逻辑,如蛇的移动、碰撞检测、方向控制以及食物生成算法,还探讨了宏指令在触摸屏编程中的具体应用。通过这个模板,读者可以深入了解宏指令的工作机制及其在工业触摸屏编程中的优势。 适合人群:对嵌入式系统、人机界面(HMI)编程感兴趣的开发者和技术爱好者。 使用场景及目标:① 学习如何在威纶通触摸屏上使用宏指令进行编程;② 掌握贪吃蛇游戏的基本逻辑和实现方法;③ 提升对工业触摸屏编程的理解,尤其是宏指令的应用技巧。 其他说明:文章提供了详细的代码片段和注释,帮助读者更好地理解和修改代码。同时,文中提到的一些优化建议(如防止180度急转弯、改进随机数生成等)有助于提高游戏性能和用户体验。
内容概要:本文详细介绍了如何利用黏菌优化算法(SMA)优化广义回归神经网络(GRNN)来进行时间序列的拟合预测建模。首先解释了SMA和GRNN的基本原理,接着提供了完整的MATLAB代码实现,包括数据加载与划分、SMA参数设置、SMA主循环、模型构建与预测、绘图与指标计算等步骤。文中不仅给出了详细的代码注释,还分享了一些实用的经验技巧,如数据处理方法、参数选择建议等。此外,通过具体的案例展示了该方法的有效性和优越性。 适合人群:对时间序列预测感兴趣的科研人员、学生以及有一定编程基础的数据分析师。 使用场景及目标:适用于需要高精度时间序列预测的应用场景,如金融、能源等领域。主要目标是提高预测精度,减少预测误差,提供可靠的预测结果。 其他说明:本文提供的代码可以直接应用于实际项目中,只需替换相应数据即可。同时,文中提到的一些经验和技巧可以帮助使用者更好地理解和应用该方法。
本书是《Data Structures and Algorithm Analysis in C++》第三版的解答手册,包含了该教科书中许多练习题的答案。这些答案反映了第三版第一次印刷时书籍的状态。特别排除了一般编程问题和任何解决方案在章节末尾有参考文献的问题。解决方案在完整性程度上有所不同;通常,细节留给读者。存在的少量代码段落应该是伪-C++代码,而不是完全完美的代码。本书适合已经学习过《Data Structures and Algorithm Analysis in C++》的学生或读者使用,作为理解和掌握数据结构与算法分析的辅助材料。
网络安全_masscan_报告转换_xls格式分析用途_1745569541.zip
少儿编程scratch项目源代码文件案例素材-JOJO奇妙冒险.zip