时代复分

DWREngine._stateChange = function(batch) {

//状态正确则进入下面的if

if (!batch.completed && batch.req.readyState == 4) {

try {

 

//取回返回的文本

var reply = batch.req.responseText;

//请求的状态

var status = batch.req.status;

//执行返回的文本,返回的文本实际上是一段脚本

eval(reply);

 

//完成之后坐清理

DWREngine._clearUp(batch);

}

response.setStatus(1000); 1000

 

var reply = req.responseText;
        reply = dwr.engine._replyRewriteHandler(reply);
        var status = req.status; // causes Mozilla to except on page moves
    
        if (reply == null || reply == "") {
          dwr.engine._handleWarning(batch, { name:"dwr.engine.missingData", message:"No data       received from server" });
        }
        else if (status != 200) {
          if ( status == 1000) {
           alert("未登录或登录超时,请重新登录");
           return;
          }
          dwr.engine._handleError

 

 

 

 

 

 

joe_walker
1.1
1 // engine.js
joe_walker
1.10
2
joe_walker
1.14
3 /**
4  * Declare a constructor function to which we can add real functions.
joe_walker
1.21
5  * @constructor
joe_walker
1.14
6  */
7 function DWREngine()
8 {
9 }
joe_walker
1.10
10
joe_walker
1.14
11 /**
12  * The constants to pick the remoting method
13  */
14 DWREngine.XMLHttpRequest = 1;
15 DWREngine.IFrame = 2;
16
17 /**
18  * A function to be called before requests are marshalled. Can be null.
joe_walker
1.20
19  * @private
joe_walker
1.14
20  */
joe_walker
1.20
21 DWREngine._preHook = null;
joe_walker
1.14
22
23 /**
24  * A function to be called after replies are received. Can be null.
joe_walker
1.20
25  * @private
joe_walker
1.14
26  */
joe_walker
1.20
27 DWREngine._postHook = null;
joe_walker
1.14
28
29 /**
30  * A map of all the known current calls
joe_walker
1.20
31  * @private
joe_walker
1.14
32  */
joe_walker
1.20
33 DWREngine._calls = new Object();
joe_walker
1.14
34
35 /**
36  * What is the default remoting method
joe_walker
1.20
37  * @private
joe_walker
1.14
38  */
joe_walker
1.20
39 DWREngine._method = DWREngine.XMLHttpRequest;
joe_walker
1.14
40
41 /**
42  * When we are dreaming up variable names, this is a number that we use
43  * as a basis to ensure uniqueness.
44  * WARNING: if it is possible for execute to be called again before
45  * marshalling has finished on the first then this will break, but I
46  * think that is not possible.
joe_walker
1.20
47  * @private
joe_walker
1.14
48  */
joe_walker
1.20
49 DWREngine._paramCount = 0;
joe_walker
1.14
50
51 /**
52  * The error handler function
joe_walker
1.20
53  * @param handler A function to call with single an error parameter on failure
joe_walker
1.14
54  */
55 DWREngine.setErrorHandler = function(handler)
56 {
joe_walker
1.20
57     DWREngine._errorHandler = handler;
joe_walker
1.14
58 }
joe_walker
1.10
59
joe_walker
1.14
60 /**
joe_walker
1.20
61  * The Pre-Hook is called before any DWR remoting is done.
62  * Pre hooks can be useful for displaying "please wait" messages.
63  * @param handler A function to call with no params before remoting
64  * @see DWREngine.setPostHook
joe_walker
1.14
65  */
66 DWREngine.setPreHook = function(handler)
joe_walker
1.1
67 {
joe_walker
1.20
68     DWREngine._preHook = handler;
joe_walker
1.1
69 }
70
joe_walker
1.14
71 /**
joe_walker
1.20
72  * The Post-Hook is called after any DWR remoting is done.
73  * Pre hooks can be useful for removing "please wait" messages.
74  * @param handler A function to call with no params after remoting
75  * @see DWREngine.setPreHook
joe_walker
1.14
76  */
77 DWREngine.setPostHook = function(handler)
joe_walker
1.1
78 {
joe_walker
1.20
79     DWREngine._postHook = handler;
joe_walker
1.1
80 }
81
joe_walker
1.14
82 /**
83  * Set the preferred remoting method.
84  * setMethod does not guarantee that the selected method will be used, just that
85  * we will try that method first.
joe_walker
1.20
86  * @param newmethod One of DWREngine.XMLHttpRequest or DWREngine.IFrame
joe_walker
1.14
87  */
88 DWREngine.setMethod = function(newmethod)
joe_walker
1.1
89 {
joe_walker
1.14
90     if (newmethod != DWREngine.XMLHttpRequest && newmethod != DWREngine.IFrame)
91     {
92         alert("Remoting method must be one of DWREngine.XMLHttpRequest or DWREngine.IFrame");
93         throw newmethod;
94     }
95
joe_walker
1.20
96     DWREngine._method = newmethod;
joe_walker
1.1
97 }
98
joe_walker
1.14
99 /**
joe_walker
1.18
100  * A function to call if something fails.
joe_walker
1.20
101  * @private
joe_walker
1.18
102  */
joe_walker
1.20
103 DWREngine._errorHandler = function(data)
joe_walker
1.18
104 {
joe_walker
1.19
105     if (typeof data == "object" && data.name == "Error" && data.description)
joe_walker
1.18
106     {
107         alert("Error: " + data.description);
108     }
109     else
110     {
111         alert(data);
112     }
113 }
114
115 /**
joe_walker
1.20
116  * Called when the replies are received.
117  * This method is called by Javascript that is emitted by server
118  * @private
joe_walker
1.14
119  */
joe_walker
1.23
120 DWREngine._handleResponse = function(idreply)
joe_walker
1.1
121 {
joe_walker
1.20
122     var call = DWREngine._calls[id];
joe_walker
1.5
123     if (call == null)
joe_walker
1.1
124     {
joe_walker
1.5
125         var known = "";
joe_walker
1.20
126         for (call in DWREngine._calls)
joe_walker
1.5
127         {
128             known += call + "/n";
129         }
130         alert("Internal Error: Call with id='"+id+"' unknown./nI do know about the following:/n"+known);
131         return;
joe_walker
1.1
132     }
joe_walker
1.22
133
134     DWREngine._calls[id] = null;
joe_walker
1.1
135
joe_walker
1.5
136     if (call.iframe != null)
137     {
138         call.iframe.parentNode.removeChild(call.iframe);
139     }
140
joe_walker
1.20
141     if (DWREngine._postHook != null)
joe_walker
1.13
142     {
joe_walker
1.20
143         DWREngine._postHook();
joe_walker
1.13
144     }
145
joe_walker
1.5
146     if (call.callback == null)
147     {
148         if (reply != null)
149         {
150             alert("Missing callback for reply "+reply);
151         }
152     }
153     else
154     {
joe_walker
1.16
155         // Error handlers inside here indicate an error that is nothing to do
156         // with DWR so we handle them differently.
157         try
158         {
159             call.callback(reply);
160         }
161         catch (ex)
162         {
joe_walker
1.20
163             DWREngine._errorHandler(ex);
joe_walker
1.16
164         }
joe_walker
1.5
165     }
joe_walker
1.1
166 }
167
joe_walker
1.14
168 /**
joe_walker
1.20
169  * Called when errors are received.
170  * This method is called by Javascript that is emitted by server
171  * @private
joe_walker
1.14
172  */
joe_walker
1.23
173 DWREngine._handleError = function(idreason)
joe_walker
1.1
174 {
joe_walker
1.20
175     var call = DWREngine._calls[id];
joe_walker
1.16
176     if (call != null)
joe_walker
1.3
177     {
joe_walker
1.22
178         DWREngine._calls[id] = null;
joe_walker
1.16
179
180         if (call.iframe != null)
181         {
182             call.iframe.parentNode.removeChild(call.iframe);
183         }
joe_walker
1.5
184     }
joe_walker
1.16
185     else
joe_walker
1.5
186     {
joe_walker
1.16
187         // Things are going wrong so alerting probably does not make sense
188         // alert("Internal Error: Call with id="+id+" unknown.");
joe_walker
1.3
189     }
joe_walker
1.1
190
joe_walker
1.20
191     if (DWREngine._postHook != null)
joe_walker
1.1
192     {
joe_walker
1.20
193         DWREngine._postHook();
joe_walker
1.1
194     }
195
joe_walker
1.20
196     DWREngine._errorHandler(reason);
joe_walker
1.5
197 }
198
joe_walker
1.14
199 /**
200  * Send a request to the server
joe_walker
1.20
201  * This method is called by Javascript that is emitted by server
202  * @private
joe_walker
1.22
203  * @param func The callback function to which any returned data should be passed
204  *             if this is null, any returned data will be ignored
joe_walker
1.23
205  * @param path The part of the URL after the host and before the exec bit
206  *             without leading or trailing /s
joe_walker
1.22
207  * @param classname The class to execute
208  * @param methodname The method on said class to execute
209  * @param vararg_params The parameters to pass to the above class
joe_walker
1.14
210  */
joe_walker
1.23
211 DWREngine._execute = function(funcpathclassnamemethodnamevararg_params)
joe_walker
1.5
212 {
joe_walker
1.16
213     if (func != null && typeof func != "function" && typeof func != "object")
214     {
215         alert("Supplied callback function is neither null nor a function: "+func);
216         throw func;
217     }
218
joe_walker
1.14
219     var call = new Object();
220     call.callback = func
221
222     // Get a unique ID for this call
joe_walker
1.5
223     var random = Math.floor(Math.random() * 10001);
joe_walker
1.14
224     call.id = (random + "_" + new Date().getTime()).toString();
joe_walker
1.1
225
joe_walker
1.20
226     DWREngine._calls[call.id] = call;
joe_walker
1.5
227
joe_walker
1.20
228     if (DWREngine._preHook != null)
joe_walker
1.1
229     {
joe_walker
1.20
230         DWREngine._preHook();
joe_walker
1.1
231     }
232
joe_walker
1.5
233     call.callback = func;
joe_walker
1.1
234
joe_walker
1.10
235     // Build a map containing all the values to pass to the server.
joe_walker
1.20
236     DWREngine._paramCount = 0;
joe_walker
1.1
237
joe_walker
1.10
238     call.map = new Object();
239     call.map.classname = classname;
240     call.map.methodname = methodname;
241     call.map.id = call.id;
joe_walker
1.22
242
243     // Serialize the parameters into call.map
244     DWREngine._addSerializeFunctions();
245     var context = new Array();
joe_walker
1.23
246     for (var i = 4i < arguments.lengthi++)
joe_walker
1.10
247     {
joe_walker
1.23
248         DWREngine._serializeAll(call.mapcontextarguments[i], "param" + (i - 4));
joe_walker
1.10
249     }
joe_walker
1.22
250     DWREngine._removeSerializeFunctions();
joe_walker
1.10
251
252     // Get setup for XMLHttpRequest if possible
joe_walker
1.20
253     if (DWREngine._method == DWREngine.XMLHttpRequest)
joe_walker
1.1
254     {
joe_walker
1.14
255         if (window.XMLHttpRequest)
256         {
257             call.req = new XMLHttpRequest();
258         }
joe_walker
1.22
259         // IE5 for the mac claims to support window.ActiveXObject, but throws an error when it's used
260         else if (window.ActiveXObject && !(navigator.userAgent.indexOf ('Mac') >= 0 && navigator.userAgent.indexOf ("MSIE") >= 0))
joe_walker
1.9
261         {
joe_walker
1.14
262             call.req = new ActiveXObject("Microsoft.XMLHTTP");
joe_walker
1.9
263         }
joe_walker
1.10
264     }
joe_walker
1.9
265
joe_walker
1.22
266     var query = "";
267     var prop;
joe_walker
1.10
268     if (call.req)
269     {
joe_walker
1.16
270         call.map.xml = true;
271
joe_walker
1.10
272         // Proceed using XMLHttpRequest
joe_walker
1.22
273         for (prop in call.map)
joe_walker
1.9
274         {
joe_walker
1.10
275             query += prop + "=" + call.map[prop] + "/n";
joe_walker
1.9
276         }
277
joe_walker
1.23
278         call.url = path + "/exec";
joe_walker
1.9
279
joe_walker
1.20
280         call.req.onreadystatechange = function() { DWREngine._stateChange(call); };
joe_walker
1.10
281         call.req.open("POST"call.urltrue);
joe_walker
1.9
282         call.req.send(query);
joe_walker
1.1
283     }
284     else
285     {
joe_walker
1.16
286         call.map.xml = false;
287
joe_walker
1.10
288         // Proceed using iframe
joe_walker
1.22
289         for (prop in call.map)
joe_walker
1.9
290         {
joe_walker
1.10
291             var lookup = call.map[prop];
292             query += lookup.name + "=" + lookup.convert + "&";
joe_walker
1.9
293         }
joe_walker
1.10
294         query = query.substring(0query.length - 1);
joe_walker
1.9
295
joe_walker
1.23
296         call.url = path + "/exec?" + query;
joe_walker
1.9
297
joe_walker
1.5
298         call.iframe = document.createElement('iframe');
299         call.iframe.setAttribute('id''dwr-iframe');
300         call.iframe.setAttribute('style''width:0px; height:0px; border:0px;');
301         call.iframe.setAttribute('src'call.url);
302         document.body.appendChild(call.iframe);
joe_walker
1.1
303     }
304 }
305
joe_walker
1.14
306 /**
joe_walker
1.22
307  *
308  */
309 DWREngine._addSerializeFunctions = function()
310 {
311     Object.prototype.dwrSerialize = DWREngine._serializeObject;
312     Array.prototype.dwrSerialize = DWREngine._serializeArray;
313     Boolean.prototype.dwrSerialize = DWREngine._serializeBoolean;
314     Number.prototype.dwrSerialize = DWREngine._serializeNumber;
315     String.prototype.dwrSerialize = DWREngine._serializeString;
316     Date.prototype.dwrSerialize = DWREngine._serializeDate;
317 }
318
319 /**
320  *
321  */
322 DWREngine._removeSerializeFunctions = function()
323 {
324     delete Object.prototype.dwrSerialize;
325     delete Array.prototype.dwrSerialize;
326     delete Boolean.prototype.dwrSerialize;
327     delete Number.prototype.dwrSerialize;
328     delete String.prototype.dwrSerialize;
329     delete Date.prototype.dwrSerialize;
330 }
331
332 /**
joe_walker
1.14
333  * Marshall a data item
joe_walker
1.20
334  * @private
joe_walker
1.22
335  * @param output A map of variables to how they have been marshalled
336  * @param referto An array of already marshalled variables to prevent recurrsion
337  * @param data The data to be marshalled
338  * @param name The name of the data being marshalled
339  */
340 DWREngine._serializeAll = function(outputrefertodataname)
341 {
342     DWREngine._serializeAll(outputrefertodataname)
343 }
344
345 /**
346  * Marshall a data item of unknown type
347  * @private
348  * @see DWREngine._serializeAll()
joe_walker
1.14
349  */
joe_walker
1.22
350 DWREngine._serializeAll = function(outputrefertodataname)
joe_walker
1.6
351 {
352     if (data == null)
353     {
joe_walker
1.10
354         output[name] = "null:null";
355         return;
joe_walker
1.6
356     }
357
358     switch (typeof data)
359     {
360     case "boolean":
joe_walker
1.10
361         output[name] = "boolean:" + data;
362         break;
joe_walker
1.6
363
364     case "number":
joe_walker
1.10
365         output[name] = "number:" + data;
366         break;
joe_walker
1.6
367
368     case "string":
joe_walker
1.12
369         output[name] = "string:" + encodeURIComponent(data);
joe_walker
1.10
370         break;
joe_walker
1.6
371
372     case "object":
joe_walker
1.22
373         if (data.dwrSerialize)
joe_walker
1.6
374         {
joe_walker
1.22
375             output[name] = data.dwrSerialize(outputrefertodataname);
joe_walker
1.6
376         }
joe_walker
1.22
377         else
joe_walker
1.6
378         {
joe_walker
1.22
379             alert("Object without dwrSerialize: " + typeof data + ", attempting default converter.");
380             output[name] = "default:" + data;
joe_walker
1.6
381         }
joe_walker
1.22
382         break;
383
384     case "function":
385         // We just ignore functions.
386         break;
387
388     default:
389         alert("Unexpected type: " + typeof data + ", attempting default converter.");
390         output[name] = "default:" + data;
391         break;
392     }
393 }
394
395 /**
396  * This is for the types that can recurse so we need to check that we've not
397  * marshalled this object before.
398  * We'd like to do:
399  *   var lookup = referto[data];
400  * However hashmaps in Javascript appear to use the hash values of the *string*
401  * versions of the objects used as keys so all objects count as the same thing.
402  * So we need to have referto as an array and go through it sequentially
403  * checking for equality with data
404  * @para
405  */
406 DWREngine._lookup = function(refertodataname)
407 {
408     var lookup;
409     for (var i = 0i < referto.lengthi++)
410     {
411         if (referto[i].data === data)
joe_walker
1.6
412         {
joe_walker
1.22
413             lookup = referto[i];
414             break;
joe_walker
1.6
415         }
joe_walker
1.22
416     }
417
418     if (lookup != null)
419     {
420         return "reference:" + lookup.name;
421     }
422
423     referto.push({ data:dataname:name });
424     return null;
425 }
426
427 /**
428  * Marshall an object
429  * @private
430  * @see DWREngine._serializeAll()
431  */
432 DWREngine._serializeObject = function(outputrefertodataname)
433 {
434     var ref = DWREngine._lookup(refertothisname);
435     if (ref != null)
436     {
437         return ref;
438     }
439
440     // treat objects as an associative arrays
441     var reply = "Object:{"
442     var element;
443     for (element in this)
444     {
445         if (element != "dwrSerialize")
joe_walker
1.6
446         {
joe_walker
1.22
447             DWREngine._paramCount++;
448             var childName = "c" + DWREngine._paramCount;
449             DWREngine._serializeAll(outputrefertothis[element], childName);
450
451             reply += element;
452             reply += ":reference:";
453             reply += childName;
454             reply += ", ";
joe_walker
1.6
455         }
joe_walker
1.22
456     }
457     reply = reply.substring(0reply.length - 2);
458     reply += "}";
459
460     return reply;
461 }
462
463 /**
464  * Marshall an array
465  * @private
466  * @see DWREngine._serializeAll()
467  */
468 DWREngine._serializeArray = function(outputrefertodataname)
469 {
470     var ref = DWREngine._lookup(refertothisname);
471     if (ref != null)
472     {
473         return ref;
474     }
475
476     var reply = "Array:["
477     for (var i = 0i < this.lengthi++)
478     {
479         if (i != 0)
joe_walker
1.6
480         {
joe_walker
1.22
481             reply += ",";
482         }
joe_walker
1.12
483
joe_walker
1.22
484         DWREngine._paramCount++;
485         var childName = "c" + DWREngine._paramCount;
486         DWREngine._serializeAll(outputrefertothis[i], childName);
487         reply += "reference:";
488         reply += childName;
489     }
490     reply += "]";
joe_walker
1.10
491
joe_walker
1.22
492     return reply;
493 }
joe_walker
1.10
494
joe_walker
1.22
495 /**
496  * Marshall a Boolean
497  * @private
498  * @see DWREngine._serializeAll()
499  */
500 DWREngine._serializeBoolean = function(outputrefertodataname)
501 {
502     return "Boolean:" + this;
503 }
joe_walker
1.6
504
joe_walker
1.22
505 /**
506  * Marshall a Number
507  * @private
508  * @see DWREngine._serializeAll()
509  */
510 DWREngine._serializeNumber = function(outputrefertodataname)
511 {
512     return "Number:" + this;
513 }
joe_walker
1.8
514
joe_walker
1.22
515 /**
516  * Marshall a String
517  * @private
518  * @see DWREngine._serializeAll()
519  */
520 DWREngine._serializeString = function(outputrefertodataname)
521 {
522     return "String:" + encodeURIComponent(this);
523 }
joe_walker
1.6
524
joe_walker
1.22
525 /**
526  * Marshall a Date
527  * @private
528  * @see DWREngine._serializeAll()
529  */
530 DWREngine._serializeDate = function(outputrefertodataname)
531 {
532     return "Date:[ " +
533         this.getUTCFullYear() + ", " +
534         this.getUTCMonth() + ", " +
535         this.getUTCDate() + ", " +
536         this.getUTCHours() + ", " +
537         this.getUTCMinutes() + ", " +
538         this.getUTCSeconds() + ", " +
539         this.getUTCMilliseconds() + "]";
joe_walker
1.6
540 }
541
joe_walker
1.14
542 /**
543  * Called by XMLHttpRequest to indicate that something has happened
joe_walker
1.20
544  * @private
joe_walker
1.14
545  */
joe_walker
1.20
546 DWREngine._stateChange = function(call)
joe_walker
1.1
547 {
joe_walker
1.5
548     if (call.req.readyState == 4)
joe_walker
1.1
549     {
joe_walker
1.22
550         try
joe_walker
1.6
551         {
joe_walker
1.22
552             if (call.req.status && call.req.status == 200)
joe_walker
1.10
553             {
joe_walker
1.22
554                 eval(call.req.responseText);
joe_walker
1.10
555             }
joe_walker
1.22
556             else
joe_walker
1.10
557             {
joe_walker
1.23
558                 DWREngine._handleError(call.idcall.req.responseText);
joe_walker
1.10
559             }
joe_walker
1.6
560         }
joe_walker
1.22
561         catch (ex)
joe_walker
1.6
562         {
joe_walker
1.23
563             DWREngine._handleError(call.idex);
joe_walker
1.6
564         }
joe_walker
1.1
565     }
joe_walker
1.14
566 }
567
568 /**
joe_walker
1.20
569  * @deprecated
joe_walker
1.14
570  * The error handler function
571  */
572 function dwrSetErrorHandler(handler)
573 {
574     dwrDeprecated();
575     DWREngine.setErrorHandler(handler);
576 }
577
578 /**
joe_walker
1.20
579  * @deprecated
joe_walker
1.14
580  * A pre execute hook
581  */
582 function dwrSetPreHook(handler)
583 {
584     dwrDeprecated();
585     DWREngine.setPreHook(handler);
586 }
587
588 /**
joe_walker
1.20
589  * @deprecated
joe_walker
1.14
590  * A post execute hook
591  */
592 function dwrSetPostHook(handler)
593 {
594     dwrDeprecated();
595     DWREngine.setPostHook(handler);
596 }
597
598 /**
599  * Inform the users that the function they just called is deprecated.
joe_walker
1.20
600  * @private
joe_walker
1.14
601  */
602 function dwrDeprecated()
603 {
604     alert("dwrXxx() functions are deprecated. Please convert to DWREngine.xxx()");
joe_walker
1.1
605 }

 

下载代码方式:https://pan.quark.cn/s/a4b39357ea24 HTML大屏展示模板是一种用于设计具有视觉冲击力且内容充实的巨型显示屏应用的设计方案,其应用范围广泛,涵盖了数据析、监控以及决策支持等多个领域。这些模板通常整合了HTML、CSS、JavaScript等多种技术,尤其借助ECharts等数据可视化工具以达成杂数据的图形化呈现。以下是对相关技术细节的深入说明: 1. **可视化**:数据可视化是将抽象的数据转化为直观的图像或图表的技术手段。这种技术有助于迅速识别数据中的模式、发展趋势和异常情况,使得非专业背景的人员也能轻松理解杂的数据信息。在大屏展示场景中,可视化通常包含折线图、柱状图、饼图、热力图、地图等多种图表形式。 2. **大数据**:大数据指的是规模庞大、增长迅速、种类多样且数据密度较低的数据集合。在HTML大屏展示中,大数据的应用旨在支持实时或近乎实时的决策制定,例如监控销售业绩、交通流量、能源消耗等关键性能指标。 3. **HTML**:超文本标记语言(HTML)构成了网页内容的基础结构,用于界定页面的布局和元素。在大屏展示模板中,HTML负责构建页面组件,例如标题、段落、图像以及图表容器等。 4. **CSS**:层叠样式表(CSS)用于调控网页的视觉风格和布局结构。在大屏模板设计中,CSS扮演着核心角色,确保设计的响应性、适应性和美观度,包括设定颜色、字体、间距、动画效果等。 5. **ECharts**:ECharts是由百度研发的一款开源JavaScript数据可视化库,能够支持多种图表类型,如折线图、柱状图、散点图等,并提供了丰富的交互特性。在大屏展示中,ECharts能够助力生成动态且交互式的数据...
内容概要:本文提出了一种基于递进事件触发框架的孤岛微电网DoS攻击容错二次协同控制方法,旨在解决通信资源受限与网络安全威胁耦合下的控制难题。该方法通过设计递进式事件触发机制,在保障系统动态性能的同时显著降低通信频率,减轻网络负载,并有效抵御拒绝服务(DoS)攻击对控制链路的干扰。结合二次协同控制策略,实现了在攻击发生时对微电网频率与电压的精准恢,同时确保各布式电源间的功率精确配与电能质量稳定。通过Simulink搭建的仿真模型验证了该方法在不同攻击强度和通信约束条件下的有效性、鲁棒性与容错能力。; 适合人群:从事电力系统自动化、微电网控制、布式能源系统、网络物理系统安全及智能电网弹性控制研究的研究生、科研人员和工程技术人员。; 使用场景及目标:①研究孤岛微电网在面临DoS攻击时的弹性控制与容错机制;②设计具有高通信效率和强安全韧性的能源互联网控制系统;③实现微电网二次控制中通信资源优化、控制性能提升与网络安全防护的多目标协同。; 阅读建议:此资源侧重于控制算法的理论设计与仿真验证,建议读者结合Simulink模型深入理解递进事件触发机制与协同控制策略的实现逻辑,重点关注系统在不同攻击场景下的动态响应特性与稳定性表现,以全面掌握其容错性能与工程应用潜力。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值