- 浏览: 100156 次
- 性别:
- 来自: 长沙
-
最近访客 更多访客>>
最新评论
-
lonelyocean:
我遇到的是同样的问题,谢谢啦~!!
WORD程序失去焦点再获得焦点后无法使用鼠标功能的解决办法(已解决) -
zola509:
我发现自己就有这种症状,觉得活着没有意思,觉得这个世界充满了欺 ...
轻度忧郁症 应及时预防 -
flyinweb:
谢了。
我也是因为装了powerdesigner,没办法改成2 ...
WORD程序失去焦点再获得焦点后无法使用鼠标功能的解决办法(已解决) -
chatlv:
tk-filters-1.0.1.zip能否给我一个 我下不下 ...
关于Ext的Js太大的问题研究解决 -
ddppfamily:
哦原来是这样的啊终于懂了
SDK、JDK、JRE和JVM的关系
引用
原创作品,CAnca Software Office.如要转载,请保留版权信息!
http://cancait.blog.163.com
E-mail:cancait@msn.com
1. 使用JS中的encodeURIComponent或encodeURI方法。
说明:
encodeURIComponent(String)
对传递参数进行设置。不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z。
例:
var url = “<a href=’http://cancait.blog.163.com/name=” + encodeURIComponent(“中国”) + “’>中国</a>”;
encodeURI(String)
对URL整体转换。不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z。
例:
var url = “<a href=’” + encodeURI(“http://cancait.blog.163.com/name=中国”) + “’>中国</a>”;
乱码处理实例:
/////////////////////////////////////////////////////////////////////////////////////
初始页面内容如下(hello.jsp):
/////////////////////////////////////////////////////////////////////////////////////
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%String path = request.getContextPath();%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>AJAX提交页面</title>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<script type="text/javascript">
function justdo(){
var post="name=王力猛&email=wallimn@sohu.com&bokee=http://wallimn.bokee.com";
post = encodeURI(post);
post = encodeURI(post);//两次,很关键
var xmlObj = new ActiveXObject('Msxml2.XMLHTTP');
var URL = '<%= path%>/page/act.jsp';//文件名需要调整成测试时的相应位置?
xmlObj.open ('post',URL,true);
xmlObj.setrequestheader("cache-control","no-cache");
xmlObj.setrequestheader("Content-Type","application/x-www-form-urlencoded");
xmlObj.send (post);//注意:POST方式,使用这个来发送内容?
}
</script>
</head>
<body>
<input type="button" value="提交" onclick="justdo()"/>
</body>
</html>
/////////////////////////////////////////////////////////////////////////////////////
ajax请求处理页面(act.jsp)的内容如下:
/////////////////////////////////////////////////////////////////////////////////////
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%String path = request.getContextPath();%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@page import="java.net.URLDecoder"%>
<html>
<head>
<title>ajax deal</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
<%
//遍历输出参数内容。
for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) {
String h = (String) e.nextElement();
String v = request.getParameter(h);
String mm = java.net.URLDecoder.decode(v, "UTF-8");
System.out.println("请求参数: " + h + " = " + mm);
}
%>
</body>
</html>
/////////////////////////////////////////////////////////////////////////////////////
说明:
java.net.URLencode 和 java.net.URLDecode 分别对应于 JavaScript中的encodeURI 和 decodeURI、encodeURIComponent 和 decodeURIComponent.
为什么要连续两次调用encodeURI(String)方法呢?是因为Java中的request.getParameter(String)方法会进行一次URI的解码过程,调用时内置的解码过程会导致乱码出现。而URI编码两次后,request.getParameter(String)函数得到的是原信息URI编码一次的内容。接着用java.net.URLDecoder.decode(String str,String codename)方法,将已经编码的URI 转换成原文。
2. 使用JS中的escape 方法。
说明:
escape(String)
对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。
例:
var url = “<a href=’http://cancait.blog.163.com/name=” + escape (“中国”) + “’>中国</a>”;
乱码处理实例:
/////////////////////////////////////////////////////////////////////////////////////
例子跟上面一样。只有这里不同。
(hello.jsp)
post = escape(post);
post = escape (post);//两次,很关键
(act.jsp)
String h = (String) e.nextElement();
String v = request.getParameter(h);
String mm = EscapeUnescape.unescape(v, "UTF-8");
System.out.println("请求参数: " + h + " = " + mm);
/////////////////////////////////////////////////////////////////////////////////////
(EscapeUnescape.java)Java中的escape和unescape.内容如下:
/////////////////////////////////////////////////////////////////////////////////////
package cn.kgnews.util;
public class EscapeUnescape {
public static String escape(String src) {
int i;
char j;
StringBuffer tmp = new StringBuffer();
tmp.ensureCapacity(src.length() * 6);
for (i = 0; i < src.length(); i++) {
j = src.charAt(i);
if (Character.isDigit(j) || Character.isLowerCase(j)
|| Character.isUpperCase(j))
tmp.append(j);
else if (j < 256) {
tmp.append("%");
if (j < 16)
tmp.append("0");
tmp.append(Integer.toString(j, 16));
} else {
tmp.append("%u");
tmp.append(Integer.toString(j, 16));
}
}
return tmp.toString();
}
public static String unescape(String src) {
StringBuffer tmp = new StringBuffer();
tmp.ensureCapacity(src.length());
int lastPos = 0, pos = 0;
char ch;
while (lastPos < src.length()) {
pos = src.indexOf("%", lastPos);
if (pos == lastPos) {
if (src.charAt(pos + 1) == 'u') {
ch = (char) Integer.parseInt(src
.substring(pos + 2, pos + 6), 16);
tmp.append(ch);
lastPos = pos + 6;
} else {
ch = (char) Integer.parseInt(src
.substring(pos + 1, pos + 3), 16);
tmp.append(ch);
lastPos = pos + 3;
}
} else {
if (pos == -1) {
tmp.append(src.substring(lastPos));
lastPos = src.length();
} else {
tmp.append(src.substring(lastPos, pos));
lastPos = pos;
}
}
}
return tmp.toString();
}
}
/////////////////////////////////////////////////////////////////////////////////////
说明:
EscapeUnescape.java类是Java中的escape和unescape。
原理跟上例一样。
3. 用JavaScript实现java中的URLencode跟URLdecode.
说明:
这种方法服务器端代码不必修改。直接request.getParameter()来获取就可以了。
JavaScript中的URLencode跟URLdecode实现如下:
/////////////////////////////////////////////////////////////////////////////////////
(UrlEncodeUrlDecode_gecko.js)非IE实现方法如下:
完整代码可到这里下载:
http://www.blueidea.com/user/qswh/qswhU2GB.js
/////////////////////////////////////////////////////////////////////////////////////
var qswhU2GB = […..]; //此数组为GB Unicode对照表
function UrlEncode(str){
var i,c,ret="",strSpecial="!\"#$%&'()*+,/:;<=>?@[\]^`{|}~%";
for(i=0;i<str.length;i++){
if(str.charCodeAt(i)>=0x4e00){
c=qswhU2GB[str.charCodeAt(i)-0x4e00];
ret+="%"+c.slice(0,2)+"%"+c.slice(-2);
}
else{
c=str.charAt(i);
if(c==" ")
ret+="+";
else if(strSpecial.indexOf(c)!=-1)
ret+="%"+str.charCodeAt(i).toString(16);
else
ret+=c;
}
}
return ret;
}
function UrlDecode(str){
var i,c,d,t,p,ret = "";
function findPos(str){
for(var j = 0; j < qswhU2GB.length; j++){
if(qswhU2GB[j] == str){
return j;
}
}
return -1;
}
for(i = 0;i < str.length;){
c = str.charAt(i);i++;
if(c != "%"){
if(c == "+"){
ret += " ";
}else{
ret += c;
}
}else{
t = str.substring(i,i+2);i += 2;
if(("0x" + t) > 0xA0){
d = str.substring(i+1,i+3);i += 3;
p = findPos(t + d);
if(p != -1){
ret += String.fromCharCode(p + 0x4e00);
}
}else{
ret += String.fromCharCode("0x" + t);
}
}
}
return ret;
}
function getSpell(str,sp){
var i,c,t,ret="";
if(sp==null)sp="";
for(i=0;i<str.length;i++){
if(str.charCodeAt(i)>=0x4e00){
c=parseInt(qswhU2GB[str.charCodeAt(i)-0x4e00],16);
if(c<55290){
for(t=qswhSpell.length-1;t>0;t=t-2)if(qswhSpell[t]<=c)break;
if(t>0)ret+=qswhSpell[t-1]+sp;
}
}
}
return ret.substr(0,ret.length-sp.length);
}
/////////////////////////////////////////////////////////////////////////////////////
(UrlEncodeUrlDecode_ie.js)IE实现方法如下:
/////////////////////////////////////////////////////////////////////////////////////
function UrlEncode(str) {
var ret = "";
var strSpecial = " ~!\"#$%&'()*+-,/:;<=>?[]^`{|}~%";
for (var i = 0; i < str.length; i++) {
var chr = str.charAt(i);
strstr = chr;
execScript("c = hex(asc(strstr))", "VBScript");
if (parseInt("0x" + c) > 127) {
ret += "%" + c.slice(0, 2) + "%" + c.slice(-2);
} else {
if (strSpecial.indexOf(chr) != -1) {
ret += "%" + c.toString(16);
} else {
ret += chr;
}
}
}
return ret;
}
function UrlDecode(str) {
var ret = "";
for (var i = 0; i < str.length; i++) {
var chr = str.charAt(i);
if (chr == "+") {
ret += " ";
} else {
if (chr == "%") {
var asc = str.substring(i + 1, i + 3);
if (parseInt("0x" + asc) > 127) {
temp = parseInt("0x" + asc + str.substring(i + 4, i + 6));
execScript("rt = chr(temp)", "VBScript");
ret += rt;
i += 5;
} else {
temp = parseInt("0x" + asc);
execScript("ret = ret + chr(temp)", "VBScript");
i += 2;
}
} else {
ret += chr;
}
}
}
return ret;
}
/////////////////////////////////////////////////////////////////////////////////////
(loadcssorjs.js)自动识别浏览器动态导入JS/CSS
实现方法如下:
/////////////////////////////////////////////////////////////////////////////////////
/*
CopyRight(C)CAnca Software Office.
Created by CAnca.2007.9.4
*/
function LoadScript(url) {
document.write("<scr" + "ipt type=\"text/javascript\" src=\"" + url + "\" onerror=\"alert('Error loading ' + this.src);\"></scr" + "ipt>");
}
function LoadCss(url) {
document.write("<link href=\"" + url + "\" type=\"text/css\" rel=\"stylesheet\" onerror=\"alert('Error loading ' + this.src);\" />");
}
var sSuffix = /msie/.test(navigator.userAgent.toLowerCase()) ? "ie" : "gecko";
LoadScript("js/UrlEncodeUrlDecode_" + sSuffix + ".js");
使用方法:
将三个JS文件放在同目录。在页面导入loadcssorjs.js。在要进行编码的地方使用UrlEncode方法即可。
例:
//index.html
<html>
<head>
<script language=”javascript” src=”js/loadcssorjs.js”></script>
<script language=”javascript”>
var url = “http://cancait.blog.163.com/name=” + UrlEncode(“中国人”);
window.open(url);
</script>
</head>
<body>
…..
</body>
</html>
三种解决方案的比较:
第一种,在服务器端需要一次java.net.URLdecode(String)转码。使用起来,不太方便。
第二种,要建立Java版的escape跟uncape。在服务器端还是需要一次uncape转码。使用起来,不太方便。
第三种,是最方便的一种方法。只需要客户端进行编码。服务器端可以不做任何修改。唯一缺点的是:firefox浏览网页时,要加载一个150K的UrlEncodeUrlDecode_gecko.js文件。影响了浏览速度。(但本人还是推荐使用这方案。)
总结:
当然,Ajax实现不乱码,可以不用这三种方案,用这三种方案,只是迫不得已的做法。通常造成乱码的原因有以下几点:
1.xmlhttp 返回的数据默认的字符编码是utf-8,如果前台页面是gb2312或者其它编码数据就会产生乱码。
2.post方法提交数据默认的字符编码是utf-8,如果后台是gb2312或其他编码数据就会产生乱码。
解决方法:
推荐方法:由于Javascript沿用java的字符处理方式,内部是使用unicode来处理所有字符的。前台后台都用utf-8编码,这样可以省不少麻烦,从根本上解决了乱码问题.优点是效率高,而且符合目前的形式,utf-8编码本身就是一种比较优秀的编码,没有语言限制.缺点只能调用自己的后台编码或者其他的utf-8的编码。
前台更改为
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
后台asp中第一行加入如下代码
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
<% Response.Charset="utf-8"; %>
<% Session.CodePage=65001; %>
后台如果有html代码也需保证
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
这里是服务端的asp编码,由于脚本语言是Javascript,所以直接复制到客户端也可以使用!
AJAX在GET中文的时候解决乱码的方法
加上设置字符编码的方法:
response.setHeader("charset","gb2312");
说明:
用AJAX来GET回一个页面时,RESPONSETEXT里面的中文多半会出现乱码,这是因为xmlhttp在处理返回的responseText的时候,是把resposeBody按UTF-8编码进解码来形成的,如果服务器送出的确实是UTF-8的数据流的时候汉字会正确显示,而送出了GBK编码流的时候就乱了。解决的办法就是在送出的流里面加一个HEADER,指明送出的是什么编码流,这样XMLHTTP就不会乱搞了。
PHP:header('Content-Type:text/html;charset=GB2312');
ASP:Response.Charset("GB2312")
JSP:response.setHeader("Charset","GB2312");
发表评论
-
js函数(比较全) 转自平平
2009-03-13 13:50 1046js函数(比较全) 转自平平2008-12-23 13:23j ... -
关于Ext的Js太大的问题研究解决
2008-05-09 21:14 2559久别大家一年了,其实这一年我从简单实现了一个Yui-Ext0. ... -
Ext结合DWR的关键代码(运行成功的DWRProxy) (转)
2008-05-09 21:12 2571引用http://www.blogjava.net/ITdav ... -
Ext.Ajax类
2008-05-09 21:05 2173Ext.Ajax类是一个简单而清晰的XHR封装器,允许你快速而 ... -
我看页面原型
2008-01-10 09:29 1175最近在看《Joel说软件》 ... -
javascript对象基础之对象创建
2008-01-05 22:11 917摘自http://libinwalan.iteye.com/b ... -
Visual Tags for Struts
2008-01-03 16:25 1518许多Struts开发人员一直梦寐以求,希望能得到一个Dream ... -
对“网页-Action-JSP”建模
2007-12-24 17:32 1270摘自——http://myreview.spa ... -
Aptana相关
2007-12-14 14:13 748http://hi.baidu.com/guodong828/ ... -
JS文章集锦
2007-11-19 16:49 813AJAX入门之深入理解JavaScript中的函数 ... -
DWR参考资料集锦
2007-11-15 14:12 806整理的DWR学习笔记 源文档 < http:/ ... -
Js事件大全
2007-11-01 14:04 995一般事件 事件 浏览器支持 描述 onClick IE3|N ...
相关推荐
本篇文章将针对"乱码问题终极解决方案"这个主题,深入探讨在Java、JSP和Ajax中如何有效地预防和解决乱码问题。 首先,我们要理解乱码产生的原因。乱码通常是因为字符编码不一致导致的,比如文件编码、程序内部编码...
总的来说,解决JSP乱码问题和正确使用AJAX传递中文参数,关键在于理解编码和解码的过程,以及在不同环境下的适应性调整。通过适当的过滤器配置、参数转换和统一的编码标准,可以有效地防止和解决这些问题。在实际...
Java中文乱码问题一直是开发者们面临的一大挑战,无论是早期的JSP、STRUTS,还是现在的AJAX,乱码问题始终困扰着程序员。不过,实际上,很多问题的根源并不在于编程语言或框架本身,而是对编码和文件处理的误解。...
现在,针对GBK编码环境下使用jQuery AJAX提交表单的问题,文章提出了一个终极解决方案,也就是非二次编码方法。这种方法避免了复杂的编码解码过程,可以有效解决问题。 核心思想是这样的:由于GBK和UTF-8编码是不同...
# 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
scratch少儿编程逻辑思维游戏源码-光线投射引擎 v0.9.zip
内容概要:本文详细介绍了基于S7-1200 PLC的一拖三恒压供水系统,涵盖PLC程序、PID控制、触摸屏界面及项目图纸等方面。PLC程序方面,重点讲解了PID控制功能块的应用及其参数配置,确保系统能够根据设定值和实际测量值调整输出,保持供水压力恒定。触摸屏程序提供了直观的操作界面,允许操作人员实时监控和调整系统参数。项目图纸展示了详细的硬件连接和布线方式,有助于理解和实施系统安装与调试。此外,文中还分享了许多调试经验和注意事项,如PID参数整定、泵组切换逻辑、报警处理机制等。 适合人群:从事自动化控制系统设计、调试的技术人员,尤其是对PLC编程和PID控制感兴趣的工程师。 使用场景及目标:适用于工业现场的恒压供水系统设计与实现,旨在提高系统的稳定性和效率,减少维护成本。通过学习本文,读者可以掌握S7-1200 PLC编程技巧、PID控制原理及触摸屏应用方法。 其他说明:本文不仅提供了理论知识,还包括大量的实战经验和调试技巧,帮助读者更好地理解和应用相关技术。
# 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
网络仿真与自动化_华为ENSP模拟器_MobaXterm会话管理_Python脚本自动化生成Telnet会话文件_用于批量创建连接ENSP设备的MobaXterm会话_自动解析拓扑
内容概要:本文详细介绍了使用KGDB(Kernel GNU Debugger)调试Linux内核的方法及其重要性。文章首先强调了Linux内核作为系统核心的重要性及其调试的必要性,随后介绍了KGDB的基本原理和优势,包括其基于调试stub和GDB串行协议的工作机制。接着,文章详细描述了使用KGDB调试内核的具体步骤,包括准备工作、内核配置、设置启动参数、建立调试连接和进行调试操作。文中还通过一个实战案例展示了KGDB在解决实际问题中的应用,并总结了使用KGDB时的注意事项和常见问题的解决方法。最后,文章展望了KGDB未来的发展方向和应用场景,如优化调试性能、支持新型硬件架构以及在嵌入式系统、云计算和大数据领域的应用。 适合人群:具备一定Linux系统开发经验的研发人员,尤其是那些需要调试和优化Linux内核的工程师。 使用场景及目标:①帮助开发者深入了解Linux内核的运行状态,精准定位并修复内核问题;②优化内核性能,提高系统的稳定性和可靠性;③适用于嵌入式系统开发、远程服务器维护等场景,特别是在硬件资源有限或无法直接接触设备的情况下。 其他说明:在使用KGDB进行调试时,需特别注意串口设置的一致性、内核版本的兼容性以及调试信息的完整性。同时,要解决常见的连接失败、断点无效等问题,确保调试过程顺利进行。未来,KGDB有望在技术上不断优化,并拓展到更多应用场景中,为Linux系统的持续发展提供支持。
内容概要:本文深入剖析了一款基于STM32F407的CNC雕刻机控制系统,涵盖硬件原理图和源码实现。首先介绍了步进电机驱动部分,详细解释了XYZ三轴的方向引脚配置及时序控制,确保电机平稳运行。接着讨论了PWM脉冲生成的核心配置,通过定时器精确控制雕刻精度,并解决了高速雕刻时的脉冲丢失问题。串口通信部分采用DMA+空闲中断,显著提升了数据处理效率。运动插补算法利用定时器触发DMA传输脉冲,实现高效的三轴联动。此外,文中还涉及了G代码解析、运动前瞻算法以及硬件设计中的防呆措施,如IO口的TVS二极管和RC滤波。最后,分享了一些调试经验和隐藏的开发彩蛋,如通过LED灯效显示工作状态和电流检测实现堵转保护。 适合人群:具备嵌入式开发基础,尤其是对STM32和CNC雕刻机感兴趣的开发者和技术爱好者。 使用场景及目标:①帮助开发者理解和实现CNC雕刻机的控制系统;②提供详细的硬件和软件设计方案,便于动手制作;③分享调试技巧和实战经验,提高系统的稳定性和可靠性。 阅读建议:本文不仅提供了详细的代码实现和硬件设计,还包括了许多实战经验和调试技巧,因此在阅读过程中应重点关注这些细节,并尝试复现相关功能。
# 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
内容概要:本文详细介绍了如何使用MATLAB实现ELMAN神经网络进行时间序列预测。首先讲解了如何读取本地Excel数据,并进行了必要的数据预处理,如转置和归一化。接着,构建了ELMAN网络,设置了训练参数,并进行了模型训练。随后,展示了如何进行预测并将结果反归一化,以及如何通过可视化手段评估预测效果。文中还提供了多个调试技巧,帮助解决常见的新手问题。 适合人群:具备基本MATLAB编程能力,希望学习时间序列预测的新手。 使用场景及目标:适用于需要进行时间序列数据分析和预测的研究人员或工程师,目标是掌握ELMAN神经网络的基本原理及其在MATLAB中的具体实现方法。 其他说明:本文不仅提供完整的代码示例,还包括了许多实用的小贴士,如数据读取、归一化、网络结构调整等,帮助读者更快地上手并解决问题。
winmm简谱播放器3音轨程序代码ZXQZQ-2025-5-4
scratch少儿编程逻辑思维游戏源码-鼓手猴子.zip
# 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
内容概要:本文详细介绍了如何使用MATLAB实现改进二进制粒子群算法来解决含需求响应的机组组合问题。文章首先构建了机组组合问题的基本模型,定义了机组的数量及其最小和最大发电功率等参数。接着,在此基础上加入了需求响应机制,通过设置需求响应的最大可削减负荷量和补偿系数,实现了对负荷侧的管理。为了提高求解效率,采用了一种改进的二进制粒子群算法,该算法通过独特的更新策略使粒子更快更准地找到最优解。此外,还讨论了微电网调度中如何降低发电成本并确保供电稳定性,强调了需求响应在优化调度中的重要性。 适合人群:对电力系统优化、机组组合问题、需求响应机制以及改进粒子群算法感兴趣的科研人员和技术开发者。 使用场景及目标:适用于需要优化电力系统调度的研究项目或实际工程应用,旨在通过引入需求响应机制和改进的粒子群算法,降低发电成本,提高系统的灵活性和经济效益。 其他说明:文中提供的MATLAB代码示例有助于理解和复现算法的具体实现,同时提醒了一些常见的陷阱和注意事项,如负荷预测误差的影响和合理的参数选择。
内容概要:本文详细介绍了威纶触摸屏与台达变频器通过RS485通讯实现控制与监视的方法。首先,文章解释了MODBUS RTU协议的基础,包括读写指令的数据帧格式。接着,描述了威纶触摸屏和台达变频器的通讯参数设置步骤,确保双方参数一致。随后,提供了具体的Lua脚本代码示例,展示了如何通过写入特定寄存器来控制变频器的启动、正反转、点动、停止等功能,以及如何读取变频器的频率、电流、电压等运行参数。此外,还提到了一些常见的调试技巧和注意事项,如数据类型的正确转换、线序连接、通讯超时处理等。 适合人群:从事自动化控制系统开发的技术人员,尤其是熟悉威纶触摸屏和台达变频器的工程师。 使用场景及目标:适用于需要通过RS485通讯接口实现威纶触摸屏对台达变频器进行远程控制和实时监测的应用场景。主要目标是提高系统的自动化程度和可靠性,减少人工干预。 其他说明:文中提供的代码和配置方法可以直接应用于实际项目中,但在具体应用时需要注意不同型号设备的具体参数差异。调试过程中可以借助串口助手等工具进行辅助验证。
内容概要:本文详细介绍了基于UWB(超宽带)技术的多设备测距系统的设计与实现。主要内容涵盖设备ID管理、双向测距(TWR)算法、温度补偿、功耗优化、串口通信协议设计等方面。文中提供了具体的C语言代码片段,展示了如何通过宏定义控制设备类型,利用位操作高效管理设备ID,采用双向测距算法提高测距精度,通过加速度计动态调整测距频率以优化功耗,以及设计轻量级串口通信协议确保数据传输可靠性。此外,还讨论了一些常见的烧录和调试问题及其解决方案。 适合人群:具有一定嵌入式开发经验的研发人员,特别是从事无线通信、室内定位系统开发的技术人员。 使用场景及目标:适用于需要实现高精度室内定位系统的开发者,帮助他们理解和掌握UWB模块的工作原理及其实现细节,从而能够构建稳定的多设备测距系统。 其他说明:文中提到的具体实现方法和技术细节对于理解和优化UWB模块的应用非常有价值,尤其是关于设备管理和测距算法的部分。同时,文中提供的代码片段可以直接用于实际项目中,加快开发进度并提高系统的稳定性。
即时通讯_分布式系统_WebSocket_Golang_Redis_MySQL_RabbitMQ_Gin_Logrus_Docker_微服务架构_高并发_消息队列_实时聊天_多节点