- 浏览: 181164 次
- 性别:
- 来自: 武汉
-
文章分类
最新评论
-
beiizl:
用了博主的方法和代码,不同证书居然可以正常通讯?
Java SSLSocket的使用 -
SHANGLIJAVA:
sorry,运行时没看清。博主的代码确实没问题。。。
Java SSLSocket的使用 -
SHANGLIJAVA:
YoungeeOne 写道最后一个为什么初始化一个空的证书,也 ...
Java SSLSocket的使用 -
q979713444:
那这个的心跳怎么弄呢
Java SSLSocket的使用 -
43350860:
busybox不是每台机器有安装的, 有没有比较裸的办法获取p ...
android中查看端口占用
最近采用redbend的dm库进行DM方面的开发工作。库过程在ddms里面打印出类似于以下的log, DM报文难以区分(蓝色部分),不便于分析。于是用正则式从log中提取DM报文内容。
11-22 09:23:41.034: INFO/vDM (vdm)(4438): dm\sess\sess_setup.c.600: Replace command coding result 0x0
11-22 09:23:41.044: INFO/vDM (vdm)(4438): dm\sess\sess_utils.c.857: metaToPcdata format='int'
11-22 09:23:41.044: INFO/vDM (vdm)(4438): dm\sess\sess_utils.c.864: metaToPcdata type='org.openmobilealliance.dm.firmwareupdate.userrequest'
11-22 09:23:41.054: INFO/vDM (vdm)(4438): dm\sess\sess_utils.c.871: metaToPcdata mark='indeterminate'
11-22 09:23:41.054: INFO/vDM (vdm)(4438): rdm\sess\sess_prot.c.86: ---------- Command 3 ALERT(1226)
11-22 09:23:41.054: INFO/vDM (vdm)(4438): dm\sess\sess_setup.c.676: FUMO notification alert command coding result 0x0
11-22 09:23:41.064: INFO/vDM (vdm)(4438): dm\sess\sess_setup.c.1317: SESS_setupSession() <<< send message
11-22 09:23:41.064: INFO/vDM (vdm)(4438): dm\sess\sess_comms.c.549: -------------------- Send message
11-22 09:23:41.074: INFO/vDM (vdm)(4438): dm\sess\sess_comms.c.559: Data to write out...
11-22 09:23:41.074: INFO/vDM (vdm)(4438): 0000 3C 3F 78 6D 6C 20 76 65 72 73 69 6F 6E 3D 22 31 <?xml version="1
11-22 09:23:41.094: INFO/vDM (vdm)(4438): <?xml version="1
11-22 09:23:41.094: INFO/vDM (vdm)(4438): 0010 2E 30 22 20 65 6E 63 6F 64 69 6E 67 3D 22 55 54 .0" encoding="UT
11-22 09:23:41.094: INFO/vDM (vdm)(4438): .0" encoding="UT
11-22 09:23:41.094: INFO/vDM (vdm)(4438): 0020 46 2D 38 22 3F 3E 3C 53 79 6E 63 4D 4C 20 78 6D F-8"?><SyncML xm
11-22 09:23:41.094: INFO/vDM (vdm)(4438): F-8"?><SyncML xm
11-22 09:23:41.094: INFO/vDM (vdm)(4438): 0030 6C 6E 73 3D 27 53 59 4E 43 4D 4C 3A 53 59 4E 43 lns='SYNCML:SYNC
11-22 09:23:41.104: INFO/vDM (vdm)(4438): lns='SYNCML:SYNC
11-22 09:23:41.104: INFO/vDM (vdm)(4438): 0040 4D 4C 31 2E 32 27 3E 3C 53 79 6E 63 48 64 72 3E ML1.2'><SyncHdr>
11-22 09:23:41.104: INFO/vDM (vdm)(4438): ML1.2'><SyncHdr>
11-22 09:23:41.114: INFO/vDM (vdm)(4438): 0050 3C 56 65 72 44 54 44 3E 3C 21 5B 43 44 41 54 41 <VerDTD><![CDATA
11-22 09:23:41.114: INFO/vDM (vdm)(4438): <VerDTD><![CDATA
11-22 09:23:41.124: INFO/vDM (vdm)(4438): 0060 5B 31 2E 32 5D 5D 3E 3C 2F 56 65 72 44 54 44 3E [1.2]]></VerDTD>
11-22 09:23:41.124: INFO/vDM (vdm)(4438): [1.2]]></VerDTD>
11-22 09:23:41.134: INFO/vDM (vdm)(4438): 0070 3C 56 65 72 50 72 6F 74 6F 3E 3C 21 5B 43 44 41 <VerProto><![CDA
11-22 09:23:41.134: INFO/vDM (vdm)(4438): <VerProto><![CDA
11-22 09:23:41.134: INFO/vDM (vdm)(4438): 0080 54 41 5B 44 4D 2F 31 2E 32 5D 5D 3E 3C 2F 56 65 TA[DM/1.2]]></Ve
11-22 09:23:41.144: INFO/vDM (vdm)(4438): TA[DM/1.2]]></Ve
11-22 09:23:41.154: INFO/vDM (vdm)(4438): 0090 72 50 72 6F 74 6F 3E 3C 53 65 73 73 69 6F 6E 49 rProto><SessionI
11-22 09:23:41.154: INFO/vDM (vdm)(4438): rProto><SessionI
11-22 09:23:41.154: INFO/vDM (vdm)(4438): 00A0 44 3E 3C 21 5B 43 44 41 54 41 5B 35 42 5D 5D 3E D><![CDATA[5B]]>
11-22 09:23:41.164: INFO/vDM (vdm)(4438): D><![CDATA[5B]]>
11-22 09:23:41.164: INFO/vDM (vdm)(4438): 00B0 3C 2F 53 65 73 73 69 6F 6E 49 44 3E 3C 4D 73 67 </SessionID><Msg
11-22 09:23:41.164: INFO/vDM (vdm)(4438): </SessionID><Msg
11-22 09:23:41.174: INFO/vDM (vdm)(4438): 00C0 49 44 3E 3C 21 5B 43 44 41 54 41 5B 31 5D 5D 3E ID><![CDATA[1]]>
11-22 09:23:41.174: INFO/vDM (vdm)(4438): ID><![CDATA[1]]>
11-22 09:23:41.194: INFO/vDM (vdm)(4438): 00D0 3C 2F 4D 73 67 49 44 3E 3C 54 61 72 67 65 74 3E </MsgID><Target>
11-22 09:23:41.194: INFO/vDM (vdm)(4438): </MsgID><Target>
11-22 09:23:41.194: INFO/vDM (vdm)(4438): 00E0 3C 4C 6F 63 55 52 49 3E 3C 21 5B 43 44 41 54 41 <LocURI><![CDATA
11-22 09:23:41.194: INFO/vDM (vdm)(4438): <LocURI><![CDATA
11-22 09:23:41.194: INFO/vDM (vdm)(4438): 00F0 5B 68 74 74 70 3A 2F 2F 32 31 30 2E 32 31 2E 32 [http://210.21.2
11-22 09:23:41.204: INFO/vDM (vdm)(4438): [http://210.21.2
11-22 09:23:41.204: INFO/vDM (vdm)(4438): 0100 33 36 2E 31 38 32 2F 7A 78 6D 64 6D 70 2F 64 6D 36.182/zxmdmp/dm
11-22 09:23:41.214: INFO/vDM (vdm)(4438): 36.182/zxmdmp/dm
11-22 09:23:41.214: INFO/vDM (vdm)(4438): 0110 5D 5D 3E 3C 2F 4C 6F 63 55 52 49 3E 3C 2F 54 61 ]]></LocURI></Ta
11-22 09:23:41.214: INFO/vDM (vdm)(4438): ]]></LocURI></Ta
11-22 09:23:41.224: INFO/vDM (vdm)(4438): 0120 72 67 65 74 3E 3C 53 6F 75 72 63 65 3E 3C 4C 6F rget><Source><Lo
11-22 09:23:41.224: INFO/vDM (vdm)(4438): rget><Source><Lo
11-22 09:23:41.234: INFO/vDM (vdm)(4438): 0130 63 55 52 49 3E 3C 21 5B 43 44 41 54 41 5B 49 4D cURI><![CDATA[IM
11-22 09:23:41.234: INFO/vDM (vdm)(4438): cURI><![CDATA[IM
11-22 09:23:41.244: INFO/vDM (vdm)(4438): 0140 45 49 3A 30 30 30 34 33 39 34 38 35 36 34 32 39 EI:0004394856429
11-22 09:23:41.244: INFO/vDM (vdm)(4438): EI:0004394856429
11-22 09:23:41.244: INFO/vDM (vdm)(4438): 0150 39 39 5D 5D 3E 3C 2F 4C 6F 63 55 52 49 3E 3C 2F 99]]></LocURI></
11-22 09:23:41.254: INFO/vDM (vdm)(4438): 99]]></LocURI></
11-22 09:23:41.254: INFO/vDM (vdm)(4438): 0160 53 6F 75 72 63 65 3E 3C 4D 65 74 61 3E 3C 4D 61 Source><Meta><Ma
11-22 09:23:41.254: INFO/vDM (vdm)(4438): Source><Meta><Ma
11-22 09:23:41.264: INFO/vDM (vdm)(4438): 0170 78 4D 73 67 53 69 7A 65 20 78 6D 6C 6E 73 3D 27 xMsgSize xmlns='
11-22 09:23:41.264: INFO/vDM (vdm)(4438): xMsgSize xmlns='
11-22 09:23:41.274: INFO/vDM (vdm)(4438): 0180 73 79 6E 63 6D 6C 3A 6D 65 74 69 6E 66 27 3E 3C syncml:metinf'><
11-22 09:23:41.274: INFO/vDM (vdm)(4438): syncml:metinf'><
11-22 09:23:41.274: INFO/vDM (vdm)(4438): 0190 21 5B 43 44 41 54 41 5B 33 30 30 30 5D 5D 3E 3C ![CDATA[3000]]><
11-22 09:23:41.294: INFO/vDM (vdm)(4438): ![CDATA[3000]]><
11-22 09:23:41.294: INFO/vDM (vdm)(4438): 01A0 2F 4D 61 78 4D 73 67 53 69 7A 65 3E 3C 4D 61 78 /MaxMsgSize><Max
11-22 09:23:41.294: INFO/vDM (vdm)(4438): /MaxMsgSize><Max
11-22 09:23:41.294: INFO/vDM (vdm)(4438): 01B0 4F 62 6A 53 69 7A 65 20 78 6D 6C 6E 73 3D 27 73 ObjSize xmlns='s
11-22 09:23:41.294: INFO/vDM (vdm)(4438): ObjSize xmlns='s
11-22 09:23:41.294: INFO/vDM (vdm)(4438): 01C0 79 6E 63 6D 6C 3A 6D 65 74 69 6E 66 27 3E 3C 21 yncml:metinf'><!
11-22 09:23:41.304: INFO/vDM (vdm)(4438): yncml:metinf'><!
11-22 09:23:41.304: INFO/vDM (vdm)(4438): 01D0 5B 43 44 41 54 41 5B 31 30 30 30 30 30 5D 5D 3E [CDATA[100000]]>
11-22 09:23:41.314: INFO/vDM (vdm)(4438): [CDATA[100000]]>
11-22 09:23:41.314: INFO/vDM (vdm)(4438): 01E0 3C 2F 4D 61 78 4F 62 6A 53 69 7A 65 3E 3C 2F 4D </MaxObjSize></M
11-22 09:23:41.314: INFO/vDM (vdm)(4438): </MaxObjSize></M
11-22 09:23:41.324: VERBOSE/ELWidget(2705): goNext
11-22 09:23:41.324: VERBOSE/ELWidget(2705): setPos index=17
11-22 09:23:41.324: INFO/vDM (vdm)(4438): 01F0 65 74 61 3E 3C 2F 53 79 6E 63 48 64 72 3E 3C 53 eta></SyncHdr><S
11-22 09:23:41.334: INFO/vDM (vdm)(4438): eta></SyncHdr><S
11-22 09:23:41.354: INFO/vDM (vdm)(4438): 0200 79 6E 63 42 6F 64 79 3E 3C 41 6C 65 72 74 3E 3C yncBody><Alert><
11-22 09:23:41.354: INFO/vDM (vdm)(4438): yncBody><Alert><
11-22 09:23:41.364: INFO/vDM (vdm)(4438): 0210 43 6D 64 49 44 3E 3C 21 5B 43 44 41 54 41 5B 31 CmdID><![CDATA[1
11-22 09:23:41.364: INFO/vDM (vdm)(4438): CmdID><![CDATA[1
思路很简单, 出现报文的位置都有一个规律, 先是一串16进制数,然后是这一串16进制数对应的字符串(报文内容)。根据这个规律, 得到以下正则式:
.*[[A-F][0-9]]{4}\\s{2}([[A-F][0-9]]{2}\\s{1}){1,16}(.*)
对比log中的规律, 首先是任意个字符,紧接着出现一个四位的16进制数, 接下来有两个空格, 然后出现两位的16进制数, 空格, 两位的16进制数, 空格, ...(最多16次, 最少1次), 最后是任意字符。 我们希望提取出来的是这最后的任意字符。 代码如下。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ParseVdmLog {
public static final int beginIndex = 46;
public static final int beginIndex2 = 96;
public static final String endString = "/SyncML>.";
/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException {
if (false) {
System.out.println("args.length = " + args.length);
for (String string : args) {
System.out.println(string);
}
}
if (1 != args.length) {
System.err.println("usage: java com.xxx.cm.ParseVdmLog srcfile destfile");
System.exit(-1);
}
String srcFile = "";
String destFile = "";
if (false) {
srcFile = "c:\\1.txt";
destFile = srcFile.replace(".txt", ".xml");
} else {
srcFile = args[0];
//destFile = args[1];
if (srcFile.startsWith("\"")) {
srcFile = srcFile.substring(1, srcFile.length() - 1);
}
destFile = srcFile.replace(".txt", ".xml");
}
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(srcFile)));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(destFile)));
String line = null;
try {
while (null != (line = br.readLine())) {
if (line.contains("Data read in")) {
processStrings(br, bw, true);
//break;
} else if (line.contains("Data to write out")) {
processStrings(br, bw, false);
}
}
} catch (IOException e) {
e.printStackTrace();
}
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void processStrings(BufferedReader in, BufferedWriter out, boolean readIn) throws IOException {
/* String line = null;
String targetStr = "";
// 读取到的第一行为"0000 3C 3F 78 6D 6C 20 76 65 72 73 69 6F 6E 3D 22 31 <?xml version="1"
// 略过该行
while (null != (line = in.readLine()) && null != (line = in.readLine())) {
targetStr = line.substring(beginIndex).trim();
out.append(targetStr);
if (targetStr.equalsIgnoreCase(endString)) {
break ;
}
}
out.append("\r\n");
out.flush();
System.out.println("finish processReadIn()");*/
addComment(out, readIn);
String line2 = null;
String targetStr2 = "";
String patterns = ".*[[A-F][0-9]]{4}\\s{2}([[A-F][0-9]]{2}\\s{1}){1,16}(.*)";
Pattern reg = Pattern.compile(patterns);
while (null != (line2 = in.readLine())) {
Matcher m = reg.matcher(line2);
if (m.matches()) {
//System.out.println(line2);
//break;
//System.out.println(line2.substring(beginIndex2));
//targetStr2 = line2.substring(beginIndex2);
//.*[[A-F][0-9]]{4}\\s{2}([[A-F][0-9]]{2}\\s{1}){1,16}(.*)
// 提取组2中的子串, 即"最后的任意字符串"
targetStr2 = m.group(2);
//System.out.println(m.group(2));
out.append(targetStr2.trim());
if (line2.contains(endString)) {
// 遇到结尾
addComment(out, readIn);
}
}
}
out.newLine();
out.flush();
}
private static void addComment(BufferedWriter out, boolean readIn) throws IOException {
out.newLine();
if (readIn) {
out.append("<!------------------server response----------------------->");
} else {
out.append("<!------------------client request----------------------->");
}
out.newLine();
}
}
代码从保存在txt文件中的ddms log中提取目标内容(DM报文), 最后将内容保存在一个同名的xml文件中。 用eclipse格式化该xml文件, 最终得到整齐、容易阅读的DM报文。
<!------------------client request----------------------->
<?xml version="1.0" encoding="UTF-8"?>
<SyncML xmlns='SYNCML:SYNCML1.2'>
<SyncHdr>
<VerDTD><![CDATA[1.2]]></VerDTD>
<VerProto><![CDATA[DM/1.2]]></VerProto>
<SessionID><![CDATA[5B]]></SessionID>
<MsgID><![CDATA[1]]></MsgID>
<Target>
<LocURI><![CDATA[http://192.168.0.1/zxmdmp/dm]]></LocURI>
</Target>
<Source>
<LocURI><![CDATA[IMEI:000439485642999]]></LocURI>
</Source>
<Meta>
<MaxMsgSize xmlns='syncml:metinf'><![CDATA[3000]]></MaxMsgSize>
<MaxObjSize xmlns='syncml:metinf'><![CDATA[100000]]></MaxObjSize>
</Meta>
</SyncHdr>
<SyncBody>
<Alert>
<CmdID><![CDATA[1]]></CmdID>
<Data><![CDATA[1201]]></Data>
</Alert>
<Replace>
<CmdID><![CDATA[2]]></CmdID>
<Item>
<Source>
<LocURI><![CDATA[./DevInfo/Mod]]></LocURI>
</Source>
<Meta>
<Format xmlns='syncml:metinf'><![CDATA[chr]]></Format>
</Meta>
<Data><![CDATA[X500]]></Data>
</Item>
<Item>
<Source>
<LocURI><![CDATA[./DevInfo/Man]]></LocURI>
</Source>
<Meta>
<Format xmlns='syncml:metinf'><![CDATA[chr]]></Format>
</Meta>
<Data><![CDATA[123]]></Data>
</Item>
<Item>
<Source>
<LocURI><![CDATA[./DevInfo/Lang]]></LocURI>
</Source>
<Meta>
<Format xmlns='syncml:metinf'><![CDATA[chr]]></Format>
</Meta>
<Data><![CDATA[EN]]></Data>
</Item>
<Item>
<Source>
<LocURI><![CDATA[./DevInfo/DmV]]></LocURI>
</Source>
<Meta>
<Format xmlns='syncml:metinf'><![CDATA[chr]]></Format>
</Meta>
<Data><![CDATA[1.2]]></Data>
</Item>
<Item>
<Source>
<LocURI><![CDATA[./DevInfo/DevId]]></LocURI>
</Source>
<Meta>
<Format xmlns='syncml:metinf'><![CDATA[chr]]></Format>
</Meta>
<Data><![CDATA[IMEI:000439485642999]]></Data>
</Item>
</Replace>
<Alert>
<CmdID><![CDATA[3]]></CmdID>
<Data><![CDATA[1226]]></Data>
<Item>
<Meta>
<Format xmlns='syncml:metinf'><![CDATA[int]]></Format>
<Type xmlns='syncml:metinf'><![CDATA[org.openmobilealliance.dm.firmwareupdate.userrequest]]></Type>
<Markxmlns = syncml:metinf '><![CDATA[indeterminate]]></Mark>
</Meta>
<Data><![CDATA[0]]></Data>
</Item>
</Alert>
<Final />
</SyncBody>
</SyncML>
程序不复杂, 不过解决了开发中遇到的问题。 权当一个Java正则表达式的小练习。
- Archive.7z (78.2 KB)
- 下载次数: 4
发表评论
-
在线工具和文档
2013-10-07 16:25 018款在线代码片断测试工具 http://www.i ... -
ant打包
2013-09-04 14:14 0编辑一个-post-build target, 在编译 ... -
javadoc的使用
2013-09-04 14:12 0中文乱码问题 javadoc *.java -enc ... -
HttpURLConnection的用法
2013-03-14 22:43 0http://stackoverflow.com ... -
工作备忘-使用edtFTPj时遇到的一个问题
2013-01-10 16:02 01. 问题 在前面那篇Java SSLSocket的 ... -
tttttt
2012-12-23 21:57 0优秀androi博客 http://blog.csdn ... -
Java SSLSocket的使用二
2012-12-21 16:57 0使用 commons-net连接ftp ... -
Java SSLSocket的使用之二---让edtFTPj支持FTPS
2012-12-21 16:56 5946免费版的edtFTPj不支持FTPS等安全协议, 所以不能访 ... -
Java SSLSocket的使用
2012-12-20 19:06 608881. 什么是SSLSocket JDK文档指出,SSLSoc ... -
Java SSLSocket的使用总结
2012-12-20 13:29 0SSLSocket的使用 SSL的理解 edtFtp ... -
JNI调用机制备忘
2012-12-19 14:18 0《Android内核剖析》笔记 1. 为什么要使用JN ... -
开发工具收集
2012-12-15 10:17 0eclipse插件 http://developer. ... -
(正式)面试总结
2012-12-11 20:31 02012-12-10 自我介绍 项目介绍。 哪个比较 ... -
(正式)Java之JUnit
2012-12-10 19:43 01. InstrumentationTestRunner的使用 ... -
(正式)Java之Ant
2012-12-07 19:38 0示例1 使用ant jar打包部分class文件 cl ... -
GBK与UTF-8字符集
2012-12-05 23:18 0http://www.divcss5.com/html/h53 ... -
(正式)Android学习之开发框架
2012-12-02 19:57 0android之andEngine使用入门 -
(正式)Java学习之性能优化
2012-12-02 16:37 0java程序性能优化 java ee性能问 ... -
Java之任务调度
2012-12-01 00:35 0几种java 任务调度的实现方法与比较 -
(正式)Java之Apache Commons
2012-11-30 23:59 0利用Commons Lang编写更少的代码 利用 ...
相关推荐
内容概要:本文主要探讨了SNS单模无芯光纤的仿真分析及其在通信和传感领域的应用潜力。首先介绍了模间干涉仿真的重要性,利用Rsoft beamprop模块模拟不同模式光在光纤中的传播情况,进而分析光纤的传输性能和模式特性。接着讨论了光纤传输特性的仿真,包括损耗、色散和模式耦合等参数的评估。随后,文章分析了光纤的结构特性,如折射率分布、包层和纤芯直径对性能的影响,并探讨了镀膜技术对光纤性能的提升作用。最后,进行了变形仿真分析,研究外部因素导致的光纤变形对其性能的影响。通过这些分析,为优化光纤设计提供了理论依据。 适合人群:从事光纤通信、光学工程及相关领域的研究人员和技术人员。 使用场景及目标:适用于需要深入了解SNS单模无芯光纤特性和优化设计的研究项目,旨在提高光纤性能并拓展其应用场景。 其他说明:本文不仅提供了详细的仿真方法和技术细节,还对未来的发展方向进行了展望,强调了SNS单模无芯光纤在未来通信和传感领域的重要地位。
发那科USM通讯程序socket-set
嵌入式八股文面试题库资料知识宝典-WIFI.zip
源码与image
内容概要:本文详细探讨了物流行业中路径规划与车辆路径优化(VRP)的问题,特别是针对冷链物流、带时间窗的车辆路径优化(VRPTW)、考虑充电桩的车辆路径优化(EVRP)以及多配送中心情况下的路径优化。文中不仅介绍了遗传算法、蚁群算法、粒子群算法等多种优化算法的理论背景,还提供了完整的MATLAB代码及注释,帮助读者理解这些算法的具体实现。此外,文章还讨论了如何通过MATLAB处理大量数据和复杂计算,以得出最优的路径方案。 适合人群:从事物流行业的研究人员和技术人员,尤其是对路径优化感兴趣的开发者和工程师。 使用场景及目标:适用于需要优化车辆路径的企业和个人,旨在提高配送效率、降低成本、确保按时交付货物。通过学习本文提供的算法和代码,读者可以在实际工作中应用这些优化方法,提升物流系统的性能。 其他说明:为了更好地理解和应用这些算法,建议读者参考相关文献和教程进行深入学习。同时,实际应用中还需根据具体情况进行参数调整和优化。
嵌入式八股文面试题库资料知识宝典-C and C++ normal interview_8.doc.zip
内容概要:本文介绍了基于灰狼优化算法(GWO)的城市路径规划优化问题(TSP),并通过Matlab实现了该算法。文章详细解释了GWO算法的工作原理,包括寻找猎物、围捕猎物和攻击猎物三个阶段,并提供了具体的代码示例。通过不断迭代优化路径,最终得到最优的城市路径规划方案。与传统TSP求解方法相比,GWO算法具有更好的全局搜索能力和较快的收敛速度,适用于复杂的城市环境。尽管如此,算法在面对大量城市节点时仍面临运算时间和参数设置的挑战。 适合人群:对路径规划、优化算法感兴趣的科研人员、学生以及从事交通规划的专业人士。 使用场景及目标:①研究和开发高效的路径规划算法;②优化城市交通系统,提升出行效率;③探索人工智能在交通领域的应用。 其他说明:文中提到的代码可以作为学习和研究的基础,但实际应用中需要根据具体情况调整算法参数和优化策略。
嵌入式八股文面试题库资料知识宝典-Intel3.zip
嵌入式八股文面试题库资料知识宝典-2019京东C++.zip
嵌入式八股文面试题库资料知识宝典-北京光桥科技有限公司面试题.zip
内容概要:本文详细探讨了十字形声子晶体的能带结构和传输特性。首先介绍了声子晶体作为新型周期性结构在物理学和工程学中的重要地位,特别是十字形声子晶体的独特结构特点。接着从散射体的形状、大小、排列周期等方面分析了其对能带结构的影响,并通过理论计算和仿真获得了能带图。随后讨论了十字形声子晶体的传输特性,即它对声波的调控能力,包括传播速度、模式和能量分布的变化。最后通过大量实验和仿真验证了理论分析的正确性,并得出结论指出散射体的材料、形状和排列方式对其性能有重大影响。 适合人群:从事物理学、材料科学、声学等相关领域的研究人员和技术人员。 使用场景及目标:适用于希望深入了解声子晶体尤其是十字形声子晶体能带与传输特性的科研工作者,旨在为相关领域的创新和发展提供理论支持和技术指导。 其他说明:文中还对未来的研究方向进行了展望,强调了声子晶体在未来多个领域的潜在应用价值。
嵌入式系统开发_USB主机控制器_Arduino兼容开源硬件_基于Mega32U4和MAX3421E芯片的USB设备扩展开发板_支持多种USB外设接入与控制的通用型嵌入式开发平台_
e2b8a-main.zip
少儿编程scratch项目源代码文件案例素材-火柴人跑酷(2).zip
内容概要:本文详细介绍了HarmonyOS分布式远程启动子系统,该系统作为HarmonyOS的重要组成部分,旨在打破设备间的界限,实现跨设备无缝启动、智能设备选择和数据同步与连续性等功能。通过分布式软总线和分布式数据管理技术,它能够快速、稳定地实现设备间的通信和数据同步,为用户提供便捷的操作体验。文章还探讨了该系统在智能家居、智能办公和教育等领域的应用场景,展示了其在提升效率和用户体验方面的巨大潜力。最后,文章展望了该系统的未来发展,强调其在技术优化和应用场景拓展上的无限可能性。 适合人群:对HarmonyOS及其分布式技术感兴趣的用户、开发者和行业从业者。 使用场景及目标:①理解HarmonyOS分布式远程启动子系统的工作原理和技术细节;②探索该系统在智能家居、智能办公和教育等领域的具体应用场景;③了解该系统为开发者提供的开发优势和实践要点。 其他说明:本文不仅介绍了HarmonyOS分布式远程启动子系统的核心技术和应用场景,还展望了其未来的发展方向。通过阅读本文,用户可以全面了解该系统如何通过技术创新提升设备间的协同能力和用户体验,为智能生活带来新的变革。
嵌入式八股文面试题库资料知识宝典-C and C++ normal interview_1.zip
少儿编程scratch项目源代码文件案例素材-激光反弹.zip
内容概要:本文详细介绍了COMSOL相控阵检测技术在有机玻璃斜楔上放置16阵元进行工件内部缺陷检测的方法。首先阐述了相控阵检测技术的基本原理,特别是通过控制各阵元的激发时间和相位来实现声波的聚焦和扫描。接着,重点解析了横孔缺陷的反射接收波,解释了波的折射现象及其背后的物理原因。最后,通过实例展示了COMSOL模拟声波传播过程的成功应用,验证了该技术的有效性和准确性。 适合人群:从事固体力学、无损检测领域的研究人员和技术人员,尤其是对相控阵检测技术和COMSOL仿真感兴趣的读者。 使用场景及目标:适用于需要精确检测工件内部缺陷的研究和工业应用场景,旨在提高检测精度和效率,确保产品质量和安全。 其他说明:文中提到的声速匹配现象有助于理解波在不同介质间的传播特性,这对优化检测参数设置有重要意义。
少儿编程scratch项目源代码文件案例素材-极速奔跑者.zip
嵌入式八股文面试题库资料知识宝典-微软_interview.zip