- 浏览: 381482 次
- 性别:
- 来自: 大连
-
文章分类
最新评论
-
Kitty19872010:
在书《Principles of Concurrent and ...
Java中的volatile关键字 -
奇林醉:
受用了!
JAVA Clone机制 -
guji528:
对result type做了详细描述,好。
struts2 strus.xml中result类型及含义 -
water84222:
dc444 写道为了回帖还做了个测验,真麻烦。
楼主对vol ...
Java中的volatile关键字 -
dc444:
为了回帖还做了个测验,真麻烦。
楼主对volatile是有一 ...
Java中的volatile关键字
第一次使用htmlparser到现在已经有4个月了。现在想整理一下,备忘。
package epson; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; import org.htmlparser.Tag; import org.htmlparser.filters.AndFilter; import org.htmlparser.filters.HasAttributeFilter; import org.htmlparser.filters.NodeClassFilter; import org.htmlparser.filters.OrFilter; import org.htmlparser.filters.TagNameFilter; import org.htmlparser.tags.BodyTag; import org.htmlparser.tags.HeadTag; import org.htmlparser.tags.ImageTag; import org.htmlparser.tags.MetaTag; import org.htmlparser.tags.TableColumn; import org.htmlparser.tags.TableRow; import org.htmlparser.tags.TableTag; import org.htmlparser.tags.TitleTag; import org.htmlparser.util.NodeList; import org.htmlparser.util.ParserException; import org.htmlparser.util.SimpleNodeIterator; import org.htmlparser.visitors.TextExtractingVisitor; public class HtmlAnalysis { /** * @param args */ private String metaDataString; private String title; private String charset; private String contentType; private String content; private String link; private String localPath ; private Parser parser = null; private String htmlsource=null; public static final String META_KEYWORDS="keywords"; public static final String META_AUTHOR="author"; public static final String META_DESCRIPTION="description"; public static final String META_HTTP_EQUIV="http-equiv"; public HtmlAnalysis(String htmlsource){ this.htmlsource = htmlsource; } public HtmlAnalysis(File htmlsource){ try{ String resource = this.getContentByLocalFile(htmlsource); this.htmlsource = resource; }catch(Exception e){ } } public void init() throws Exception{ try{ parser = new Parser(this.htmlsource); }catch(Exception e){ throw e; } } public String getMetaKeywords(){ String metaKeywords = ""; try { NodeFilter nt = new NodeClassFilter(MetaTag.class) ; NodeList nodeList = parser.parse(nt); for (int i = 0 ; i< nodeList.size(); i++) { MetaTag mt =(MetaTag) nodeList.elementAt(i) ; String cont = mt.getAttribute("name") ; if (cont!=null && cont.equalsIgnoreCase("Keywords")) { metaKeywords = mt.getAttribute("content"); break; } } } catch (ParserException e) { e.printStackTrace(); } return metaKeywords; } public String getTitle() { String title=""; try { NodeFilter nt = new NodeClassFilter(TitleTag.class) ; NodeList nodeList = parser.parse(nt); for (int i = 0 ; i< nodeList.size(); i++) { TitleTag titlenode = (TitleTag) nodeList.elementAt(i) ; title = titlenode.getTitle(); break; } } catch (ParserException e) { e.printStackTrace(); } return title; } public String getBody() { String body=""; try { NodeFilter nt = new NodeClassFilter(BodyTag.class) ; NodeList nodeList = parser.parse(nt); for (int i = 0 ; i< nodeList.size(); i++) { BodyTag bodynode = (BodyTag) nodeList.elementAt(i) ; body = bodynode.getChildrenHTML(); break; } } catch (ParserException e) { e.printStackTrace(); } return body; } public String getBodyOnload() { String bodyonload=""; try { NodeFilter nt = new NodeClassFilter(BodyTag.class) ; NodeList nodeList = parser.parse(nt); for (int i = 0 ; i< nodeList.size(); i++) { BodyTag bodynode = (BodyTag) nodeList.elementAt(i) ; bodyonload = bodynode.getAttribute("onload"); break; } } catch (ParserException e) { e.printStackTrace(); } return bodyonload; } public String getHeadInfo() { String head=""; try { NodeFilter nt = new NodeClassFilter(HeadTag.class) ; NodeList nodeList = parser.parse(nt); HeadTag headnode = null; for (int i = 0 ; i< nodeList.size(); i++) { headnode = (HeadTag) nodeList.elementAt(i) ; break; } if(headnode !=null){ SimpleNodeIterator tag = headnode.children(); int i=0; while(tag.hasMoreNodes()){ Node node =tag.nextNode(); if((node instanceof MetaTag) || node instanceof TitleTag){ headnode.removeChild(i); } i++; } } head = headnode.getChildrenHTML(); } catch (ParserException e) { e.printStackTrace(); } return head; } public String getMetaInfo(String keytype){ String metaInfo = ""; try { NodeFilter nt = new NodeClassFilter(MetaTag.class) ; NodeList nodeList = parser.parse(nt); if(META_KEYWORDS.equalsIgnoreCase(keytype) || META_AUTHOR.equalsIgnoreCase(keytype) || META_DESCRIPTION.equalsIgnoreCase(keytype)) { for (int i = 0 ; i< nodeList.size(); i++) { MetaTag mt =(MetaTag) nodeList.elementAt(i) ; String cont = mt.getAttribute("name") ; if (cont!=null && cont.equalsIgnoreCase(keytype)) { metaInfo = mt.getAttribute("content"); break; } } }else if(META_HTTP_EQUIV.equals(keytype)){ for (int i = 0 ; i< nodeList.size(); i++) { MetaTag mt =(MetaTag) nodeList.elementAt(i) ; String cont = mt.getAttribute("http-equiv") ; if (cont!=null && cont.equalsIgnoreCase(keytype)) { metaInfo = mt.getAttribute("content"); break; } } }else{ for (int i = 0 ; i< nodeList.size(); i++) { MetaTag mt =(MetaTag) nodeList.elementAt(i) ; String cont = mt.getAttribute("name") ; if (cont!=null) { if(META_KEYWORDS.equalsIgnoreCase(cont) || META_AUTHOR.equalsIgnoreCase(cont) || META_DESCRIPTION.equalsIgnoreCase(cont)){ // }else{ String tempmetaInfo = mt.getAttribute("content"); metaInfo +="<"+cont+">"+tempmetaInfo+"</"+cont+">"; } } } } } catch (ParserException e) { e.printStackTrace(); } return metaInfo; } public String getContentByLocalFile (File path) throws IOException { StringBuffer sbStr = new StringBuffer(); BufferedReader reader = null ; String result = null ; try { reader = new BufferedReader(new FileReader(path)); } catch (FileNotFoundException e) { e.printStackTrace(); } String temp = ""; while((temp=reader.readLine())!=null) { sbStr.append(temp); sbStr.append("\r\n"); } reader.close(); result = sbStr.toString(); return result ; } public String getContentByUrl(String url){ return null ; } public void getmetaDataByVistor() { } public String getURLContent(String Url) { Parser parser = null; try { parser = new Parser(Url); String a=""; parser = new Parser(a); TextExtractingVisitor visitor = new TextExtractingVisitor(); parser.visitAllNodesWith(visitor); content = visitor.getExtractedText(); } catch (ParserException e1) { e1.printStackTrace(); } return content; } public NodeList getDiv(){ NodeList nodelist=null; NodeFilter[] nodeFilter=new NodeFilter[2]; try{ parser.setEncoding("GB2312");//set encode TagNameFilter divFilter=new TagNameFilter("div");//get the table content HasAttributeFilter divAttribute=new HasAttributeFilter("id","Cont_13");//hava the attribute "bgcolor" nodeFilter[0]=divFilter; nodeFilter[1]=divAttribute; AndFilter andFilter=new AndFilter(nodeFilter);//to link the three filter that above together nodelist=parser.extractAllNodesThatMatch(andFilter);//get the result that fit for the filter }catch(Exception e){ e.printStackTrace(); } return nodelist; } public NodeList getTable() throws ParserException{ NodeList nodelist=null; String dd = getDiv().toHtml(); Parser parser2 = new Parser(dd); TagNameFilter tableFilter=new TagNameFilter("table"); nodelist = parser2.extractAllNodesThatMatch(tableFilter); String htmlresult =""; for (int i = 0; i <= nodelist.size(); i++) { if (nodelist.elementAt(i) instanceof TableTag) { TableTag tag = (TableTag) nodelist.elementAt(i); TableRow[] rows = tag.getRows(); for (int j = 0; j < rows.length; j++) { TableRow tr = (TableRow) rows[j]; TableColumn[] td = tr.getColumns(); for (int k = 0; k < td.length; k++) { String result = td[k].toPlainTextString().trim().replace("\t", ""); if(k==0){ htmlresult += "<title>"+result+"</title>"; } else htmlresult += "<id>"+result+"</id>"; } } } } System.out.println(htmlresult); return nodelist; } public void testTable() { // Parser myParser; NodeList nodeList = null; // myParser = Parser.createParser("<body> " + "<table id=’table1′ >" // + "<tr><td>1-11</td><td>1-12</td><td>1-13</td>" // + "<tr><td>1-21</td><td>1-22</td><td>1-23</td>" // + "<tr><td>1-31</td><td>1-32</td><td>1-33</td></table>" // + "<table id=’table2′ >" // + "<tr><td>2-11</td><td>2-12</td><td>2-13</td>" // + "<tr><td>2-21</td><td>2-22</td><td>2-23</td>" // + "<tr><td>2-31</td><td>2-32</td><td>2-33</td></table>" // + "</body>", "GBK"); NodeFilter tableFilter = new NodeClassFilter(TableTag.class); OrFilter lastFilter = new OrFilter(); lastFilter.setPredicates(new NodeFilter[] { tableFilter }); try { nodeList = parser.parse(lastFilter); for (int i = 0; i <= nodeList.size(); i++) { if (nodeList.elementAt(i) instanceof TableTag) { TableTag tag = (TableTag) nodeList.elementAt(i); TableRow[] rows = tag.getRows(); for (int j = 0; j < rows.length; j++) { TableRow tr = (TableRow) rows[j]; TableColumn[] td = tr.getColumns(); for (int k = 0; k < td.length; k++) { System.out.println("<td>" + td[k].toPlainTextString()); } } } } } catch (ParserException e) { e.printStackTrace(); } } public String getImg() { String img=""; ImageTag imgnode=null; File file = new File("e:\\test\\jsp\\jsp\\test1.htm"); String imgRealPath=""; if(file.exists()) { file.delete(); try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } }else{ try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); // TODO Auto-generated catch block } } try { NodeFilter nt = new NodeClassFilter(ImageTag.class) ; //BufferedWriter writer = new BufferedWriter(new OutputStreamWriter (new FileOutputStream (file))); NodeList nodeList = parser.parse(nt); for (int i = 0 ; i< nodeList.size(); i++){ int num=0; imgnode = (ImageTag)nodeList.elementAt(i); img = imgnode.getImageURL(); System.out.println(img); /* String[] filePath = file.getParent().split("\\\\"); String[] imgPath = img.split("/"); System.out.println(img+" "+file.getParent()); for(int j=0;j<imgPath.length;j++) { if(imgPath[j].equals("..")) { num++; } } System.out.println(img.indexOf(":")+"img.indexOf(:)"+img); if(img.indexOf(":")!=-1) { imgRealPath=img; } else if(num>1) { System.out.println("img before replace"+img); img = img.replace("../",""); System.out.println("img num>1"+img+num); imgRealPath = filePath[filePath.length-1-num]+"/"+img; while((filePath.length-1-num)>0) { num++; imgRealPath = filePath[filePath.length-1-num]+imgRealPath; } System.out.println("imgRealPath"+imgRealPath+(filePath.length-1-num)); } else if(imgPath[0].equals(".")) { System.out.println(file.getParent()+"imgPath[0].equals(.)"); img = img.replace("./",""); imgRealPath=file.getParent()+"\\"+img; } else { for(int j=0;j<imgPath.length;j++) { if(imgPath[j].equals("..")) { imgPath[j] = (String)( imgPath[j].replace("..",filePath[j+1])); System.out.println(imgPath[j]); } if(!imgPath[j].equals("")) imgRealPath += "/"+imgPath[j]; } imgRealPath=filePath[0]+imgRealPath; } imgRealPath = imgRealPath.replaceAll("\\\\","/"); imgnode.setImageURL(imgRealPath); imgRealPath=""; writer.write(imgnode.toHtml()); */ } //writer.flush(); // writer.close (); } catch (Exception e) { e.printStackTrace(); } return imgRealPath; } public static void main(String[] args) { HtmlAnalysis htmlAnalysis= new HtmlAnalysis(new File("f:\\test.html")); try{ htmlAnalysis.init(); // System.out.println(htmlAnalysis.getMetaInfo("keywords")); // htmlAnalysis.parser.reset(); // System.out.println(htmlAnalysis.getMetaInfo("author")); // htmlAnalysis.parser.reset(); // System.out.println(htmlAnalysis.getMetaInfo("description")); // htmlAnalysis.parser.reset(); // System.out.println(htmlAnalysis.getMetaInfo("other")); // htmlAnalysis.parser.reset(); //System.out.println(htmlAnalysis.getTitle()); //htmlAnalysis.parser.reset(); //System.out.println(htmlAnalysis.getHeadInfo()); htmlAnalysis.getTable(); // htmlAnalysis.testTable(); }catch(Exception e){ } } public static void visitTag(Tag tag) { if (tag.getAttribute("class") != null) { System.out.println(" " + tag.getTagName() + tag.getAttribute("class")); } } public String getCharset() { return charset; } public void setCharset(String charset) { this.charset = charset; } public String getContentType() { return contentType; } public void setContentType(String contentType) { this.contentType = contentType; } public String getMetaDataString() { return metaDataString; } public void setMetaDataString(String metaDataString) { this.metaDataString = metaDataString; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
评论
1 楼
menglinxi
2009-09-29
org.htmlparser 似乎不能对域名中包含特殊字符的连接进行抓取:如http://www.oj-sz.com,会出现
org.htmlparser.util.ParserException: Exception getting input stream from http://www.oj-sz.com/ (Not in GZIP format).;
java.io.IOException: Not in GZIP format。
org.htmlparser.util.ParserException: Exception getting input stream from http://www.oj-sz.com/ (Not in GZIP format).;
java.io.IOException: Not in GZIP format。
发表评论
-
Hibernate优化
2012-07-13 13:37 0http://chengguo-a.iteye.co ... -
Session IllegalStateException
2010-06-15 14:56 1396request.getSession(); 出现Illega ... -
JSP页面缓存设置及其它
2008-11-24 13:36 1367转自:http://gghhgame51333.blog.51 ... -
java与excell,xml交互
2008-11-24 11:27 1023利用poi处理java与excell交互。poi也可以处 ... -
prototype.js开发笔记
2008-11-19 10:09 1028Table of Contents 1. Programm ... -
jar打包成exe工具
2008-11-12 14:49 2865具体使用,参照压缩包中的readme.txt。很简单没什么 ... -
htc文件的简单介绍
2008-11-03 09:55 1208从5.5版本开始,Internet Explorer(IE)开 ... -
LightBox
2008-10-31 15:08 1378Lightbox的效果类似于WinXP操作系统的注销/关 ... -
google map
2008-08-28 11:00 1408前一段时间项目中使用了google map。在这里记下简单的使 ... -
使用 JFreeChart来创建基于web的图表
2008-08-19 15:32 1144转载于http://www.ibm.com/developer ... -
静态页面的生成
2008-08-15 10:17 1064没有时间了,有时间再写 -
待补充
2008-08-14 17:27 2640java实现rss文件的订阅 -
ajax实现的动态展开
2008-08-14 17:26 1346test.jsp <!DOCTYPE html PU ... -
httpclient应用
2008-08-14 17:12 2181import java.io.BufferedReader ... -
Tree的实现,js开发组件dtree
2008-08-14 16:36 2152jsp <% StringBuffer tree ... -
FileUpload文件上传组件与java.util.zip解压缩类
2008-08-14 15:54 4002使用总结 /** *要完成的功能,从页面上传zip文件及若干 ... -
利用过滤器实现request的编码转换
2008-01-16 15:42 2146关于Filter接口: 创建Filter必须实现javax.s ... -
JSP分页技术实现 使用工具类实现通用分页处理
2008-01-16 15:39 2768目前比较广泛使用的分页方式是将查询结果缓存在HttpSessi ... -
一段生成验证码图片的程序
2008-01-16 15:38 1098package test; import java.awt. ...
相关推荐
下载了几个抓包的jar包,httpClient和htmlParase包,以及连个淘宝包
计算机硬件控制_驱动级键盘鼠标同步_PS2接口UDP协议多机协同_基于rabirdwinio和pynput的跨设备输入共享系统_实现多台Windows电脑的键盘鼠标同步操作_支持
嵌入式八股文面试题库资料知识宝典-TCPIP协议栈.zip
少儿编程scratch项目源代码文件案例素材-开膛手杰克.zip
基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型,个人经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业,代码资料完整,下载可用。 基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现
内容概要:本文详细探讨了电力弹簧技术在主动配电网规划及运行优化调度中的应用。首先介绍了电力弹簧技术作为智能电网调控手段的优势,如自适应性强、响应速度快、节能环保等。接着阐述了主动配电网规划的目标和策略,包括优化电网结构、提高能源利用效率和降低故障风险。随后讨论了运行优化调度的原则和方法,强调了实时监测、智能调度策略以及优化调度模型的重要性。最后通过实际案例分析展示了电力弹簧技术在提升电网稳定性、可靠性和能效方面的显著效果,展望了其广阔的应用前景。 适合人群:从事电力系统规划、运行管理的研究人员和技术人员,以及对智能电网感兴趣的学者和学生。 使用场景及目标:适用于希望深入了解电力弹簧技术及其在主动配电网规划和运行优化调度中具体应用的专业人士。目标是掌握电力弹簧技术的工作原理、优势及其在实际项目中的实施方法。 其他说明:本文不仅提供了理论分析,还有具体的案例支持,有助于读者全面理解电力弹簧技术的实际应用价值。
嵌入式八股文面试题库资料知识宝典-C语言思维导图.zip
电路教学与科研案例的结合—以最大功率传输定理为例.pdf
内容概要:本文深入介绍了HarmonyOS文件系统及其在万物互联时代的重要性。HarmonyOS自2019年发布以来,逐步覆盖多种智能设备,构建了庞大的鸿蒙生态。文件系统作为其中的“数字管家”,不仅管理存储资源,还实现多设备间的数据协同。文章详细介绍了常见的文件系统类型,如FAT、NTFS、UFS、EXT3和ReiserFS,各自特点和适用场景。特别强调了HarmonyOS的分布式文件系统(hmdfs),它通过分布式软总线技术,打破了设备界限,实现了跨设备文件的无缝访问。此外,文章对比了HarmonyOS与Android、iOS文件系统的差异,突出了其在架构、跨设备能力和安全性方面的优势。最后,从开发者视角讲解了开发工具、关键API及注意事项,并展望了未来的技术发展趋势和对鸿蒙生态的影响。 适合人群:对操作系统底层技术感兴趣的开发者和技术爱好者,尤其是关注物联网和多设备协同的用户。 使用场景及目标:①理解HarmonyOS文件系统的工作原理及其在多设备协同中的作用;②掌握不同文件系统的特性和应用场景;③学习如何利用HarmonyOS文件系统进行应用开发,提升跨设备协同和数据安全。 阅读建议:本文内容详实,涵盖了从基础概念到高级开发技巧的多个层次,建议读者结合自身需求,重点关注感兴趣的部分,并通过实践加深理解。特别是开发者可参考提供的API示例和开发技巧,尝试构建基于HarmonyOS的应用。
嵌入式八股文面试题库资料知识宝典-海康嵌入式笔试题.zip
内容概要:本文详细介绍了基于瞬时无功功率理论的三电平有源电力滤波器(APF)仿真研究。主要内容涵盖并联型APF的工作原理、三相三电平NPC结构、谐波检测方法(ipiq)、双闭环控制策略(电压外环+电流内环PI控制)以及SVPWM矢量调制技术。仿真结果显示,在APF投入前后,电网电流THD从21.9%降至3.77%,显著提高了电能质量。 适用人群:从事电力系统研究、电力电子技术开发的专业人士,尤其是对有源电力滤波器及其仿真感兴趣的工程师和技术人员。 使用场景及目标:适用于需要解决电力系统中谐波污染和无功补偿问题的研究项目。目标是通过仿真验证APF的有效性和可行性,优化电力系统的电能质量。 其他说明:文中提到的仿真模型涉及多个关键模块,如三相交流电压模块、非线性负载、信号采集模块、LC滤波器模块等,这些模块的设计和协同工作对于实现良好的谐波抑制和无功补偿至关重要。
基于环比增长的销售统计分析——2019年中青杯全国数学建模竞赛C题.pdf
嵌入式八股文面试题库资料知识宝典-linux面试题.zip
嵌入式八股文面试题库资料知识宝典-linux常见面试题.zip
内容概要:本文探讨了小电流接地系统在配电网络中的应用,特别是在单相故障情况下的仿真分析。文中介绍了小电流接地系统的背景和发展现状,重点讨论了两种常见的接地方式——中性点不接地和中性点经消弧线圈接地。利用Matlab作为仿真工具,作者构建了详细的电路模型,模拟了单相故障的发生过程,并通过多个结果图表展示了故障电流、电压波形及系统运行状态。此外,文章还包括了详细的设计说明书和PPT介绍,帮助读者全面理解仿真过程和技术细节。 适合人群:从事电力系统研究、维护的技术人员,尤其是关注配电网络安全和稳定的工程师。 使用场景及目标:适用于希望深入了解小电流接地系统的工作原理和故障处理机制的专业人士。通过本研究,读者可以掌握如何使用Matlab进行电力系统仿真,评估不同接地方式的效果,优化配电网络的安全性能。 其他说明:随文附带完整的仿真工程文件、结果图、设计说明书及PPT介绍,便于读者进一步探索和实践。
少儿编程scratch项目源代码文件案例素材-激烈的殴斗.zip
嵌入式八股文面试题库资料知识宝典-小米嵌入式软件工程师笔试题目解析.zip
内容概要:本文详细探讨了车辆主动避撞技术中的两种常见策略——纵向紧急制动避撞和横向紧急转向避撞。首先介绍了这两种避撞策略的基本概念,接着深入分析了临界纵向安全距离的概念及其对避撞模式选择的影响。文中特别强调了五次多项式换道轨迹模型在计算横向紧急转向避撞安全距离中的应用。最后,通过一个简化的程序实现了避撞策略的模拟和可视化展示,帮助读者更好地理解不同避撞方式的应用场景和技术细节。 适合人群:汽车工程技术人员、交通安全研究人员、自动驾驶开发者。 使用场景及目标:适用于研究和开发车辆主动避撞系统的专业人士,旨在提高对避撞策略的理解,优化避撞算法的设计,提升行车安全性。 其他说明:文章不仅提供了理论分析,还结合了具体的数学模型和程序实现,使读者能够从多个角度全面掌握车辆避撞技术的关键要素。
基于MPPSK调制的数字对讲机系统.pdf
嵌入式八股文面试题库资料知识宝典-Nec试题回忆二.zip