双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

javax.mail 发送exe、doc类型的附件报错,请哪位老鸟帮个忙(100分)

houniao houniao 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
用javax.mail发送附件时,如果附件是exe或者doc类型的文件,就会发送不成功
在网上找了半天,都没发现相关的资料。

报错信息如下:
javax.mail.SendFailedException: Sending failed;
nested exception is:
javax.mail.MessagingException: 554 Message rejected for policy reasons.

at javax.mail.Transport.send0(Transport.java:219)
at javax.mail.Transport.send(Transport.java:81)

如果是其他类型的附件,就不会出现这个问题。
...全文
jsp探针 ver0.1 jsp探针ceshi.jsp JavaxSql = false; boolean supportJAF = false; boolean supportMail = false; boolean supportBeanUtils = false; boolean supportCommonLogging = false; boolean supportCommonCodec = false; boolean supportCommonCollection = false; boolean supportCommonDigester = false; boolean supportCommonLang = false; boolean supportJakartaRegExp = false; boolean supportLucene = false; boolean supportDom4j = false; boolean supportLoonframework = false; boolean supportMmMysqlDriver = false; boolean supportComMysqlDriver = false; boolean supportImageProcessing = false; boolean supportStruts = false; boolean supportSpring = false; String serverName; String serverIP="127.0.0.1"; long startTime = System.currentTimeMillis(); long startMemory = Runtime.getRuntime().freeMemory(); java.util.Properties prop = System.getProperties(); String javaVersion=prop.getProperty("java.version"); String FS=prop.getProperty("file.separator"); int CPUTIME = 30; int PERCENT = 100; public LfSpy() { try { Class.forName("org.springframework.context.ApplicationContext"); supportSpring = true; } catch (ClassNotFoundException ex) { } try { Class.forName("org.loon.framework.Loon"); supportLoonframework = true; } catch (ClassNotFoundException ex) { } try { Class.forName("org.hibernate.Transaction"); supportHibernate = true; } catch (ClassNotFoundException ex) { } try { Class.forName("org.apache.struts.action.ActionServlet"); supportStruts = true; } catch (ClassNotFoundException ex) { } try { Class.forName("javax.naming.Name"); supportJNDI = true; } catch (ClassNotFoundException ex) { } try { Class.forName("javax.sql.DataSource"); supportJavaxSql = true; } catch (ClassNotFoundException ex) { } try { Class.forName("javax.activation.DataSource"); supportJAF = true; } catch (ClassNotFoundException ex) { } try { Class.forName("javax.mail.Message"); supportMail = true; } catch (ClassNotFoundException ex) { } try { Class.forName("org.apache.commons.beanutils.MethodUtils"); supportBeanUtils = true; } catch (ClassNotFoundException ex) { } try { Class.forName("org.apache.commons.logging.LogFactory"); supportCommonLogging = true; } catch (ClassNotFoundException ex) { } try { Class.forName("org.apache.commons.codec.Decoder"); supportCommonCodec = true; } catch (ClassNotFoundException ex) { } try { Class.forName("org.apache.commons.collections.ArrayStack"); supportCommonCollection = true; } catch (ClassNotFoundException ex) { } try { Class.forName("org.apache.commons.digester.Digester"); supportCommonDigester = true; } catch (ClassNotFoundException ex) { } try { Class.forName("org.apache.commons.lang.SystemUtils"); supportCommonLang = true; } catch (ClassNotFoundException ex) { } try { Class.forName("org.apache.regexp.RE"); supportJakartaRegExp = true; } catch (ClassNotFoundException ex) { } try { Class.forName("org.apache.lucene.index.IndexWriter"); supportLucene = true; } catch (ClassNotFoundException ex) { } try { Class.forName("org.dom4j.Document"); supportDom4j = true; } catch (ClassNotFoundException ex) { } try { Class.forName("org.gjt.mm.mysql.Driver"); supportMmMysqlDriver = true; } catch (ClassNotFoundException ex) { } try { Class.forName("com.mysql.jdbc.Driver"); supportComMysqlDriver = true; } catch (ClassNotFoundException ex) { } loadAddress(); try { java.awt.image.BufferedImage bufferedImage = new java.awt.image.BufferedImage( 10, 10, java.awt.image.BufferedImage.TYPE_INT_RGB); java.awt.Graphics2D g = bufferedImage.createGraphics(); g.drawLine(0, 0, 10, 10); g.dispose(); supportImageProcessing = true; } catch (Throwable ex) { } } public String getOSarch(){ return prop.getProperty("os.arch"); } public String getTimeZone(){ return prop.getProperty("user.timezone"); } public String getNowUser(){ return prop.getProperty("user.name"); } public String getNowUserDir(){ return prop.getProperty("user.dir"); } public String getOSName(){ return prop.getProperty("os.name"); } public String getSystemModel(){ return prop.getProperty("sun.arch.data.model"); } final private long getDiskForLinuxInfo(final String dirPath) { try { String dir = dirPath.startsWith("/") ? dirPath : "/"+dirPath; long space = -1; Process process; Runtime run = Runtime.getRuntime(); String osName = System.getProperty("os.name").toLowerCase(); String command = ""; if (osName.startsWith("linux")) { command = "df -k " + dir; } process = run.exec(command); java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader( process.getInputStream())); String freeSpace = "", line; while ((line = in.readLine()) != null) { if (line.length() > 0) { freeSpace = line; } } if (freeSpace == null || freeSpace.length() == 0) { return -1; } process.destroy(); freeSpace = freeSpace.trim().replaceAll("\\\\", "\\/"); String[] results = freeSpace.split(" "); for (int i = results.length - 1; i > 0; i--) { try { space = Long.parseLong(results[i]); return space; } catch (NumberFormatException ex) { continue; } } } catch (java.io.IOException e) { return -1; } return -1; } /** * 获得windows下指定地址硬盘空间大小 * * @param dirPath * @return */ final private long getDiskForWindowsInfo(String dirPath) { try { long space = -1; Process process; Runtime run = Runtime.getRuntime(); String osName = System.getProperty("os.name").toLowerCase(); String command = ""; if (osName.startsWith("windows") && osName.indexOf("98") == -1) { command = "cmd.exe /c dir " + dirPath; } else if (osName.startsWith("windows") && osName.indexOf("98") != -1) { command = "command.com /c dir " + dirPath; } process = run.exec(command); java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader( process.getInputStream())); String freeSpace = "", line; while ((line = in.readLine()) != null) { freeSpace = line; } if (freeSpace == null) { return -1; } process.destroy(); freeSpace = freeSpace.trim(); freeSpace = freeSpace.replaceAll("\\\\\\\\\\\\\\\\.", ""); freeSpace = freeSpace.replaceAll(",", ""); String[] results = freeSpace.split(" "); for (int i = 1; i java.io.IOException e) { return -1; } } public long getObjectDisk() { String path = prop.getProperty("user.dir"); int index = path.indexOf(FS); path = path.substring(0, index); String osName = System.getProperty("os.name").toLowerCase(); if (osName.startsWith("windows")) { return getDiskForWindowsInfo(path); } else if (osName.startsWith("linux")) { return getDiskForLinuxInfo(path); } else { return -1; } } public final String getMacAddress() { String os = System.getProperty("os.name"); try { if(os.startsWith("Windows")) { return windowsParseMacAddress(windowsRunIpConfigCommand()); } else if(os.startsWith("Linux")) { return linuxParseMacAddress(linuxRunIfConfigCommand()); } else { throw new java.io.IOException("unknown operating system: " + os); } } catch(Exception ex) { return "Nothing"; } } private final String linuxParseMacAddress(String ipConfigResponse) throws java.text.ParseException { String localHost = null; try { localHost = java.net.InetAddress.getLocalHost().getHostAddress(); } catch(java.net.UnknownHostException ex) { ex.printStackTrace(); throw new java.text.ParseException(ex.getMessage(), 0); } java.util.StringTokenizer tokenizer = new java.util.StringTokenizer(ipConfigResponse, "\n"); String lastMacAddress = null; while(tokenizer.hasMoreTokens()) { String line = tokenizer.nextToken().trim(); boolean containsLocalHost = line.indexOf(localHost) >= 0; if(containsLocalHost && lastMacAddress != null) { return lastMacAddress; } int macAddressPosition = line.indexOf("HWaddr"); if(macAddressPosition java.text.ParseException ex = new java.text.ParseException ("cannot read MAC address for " + localHost + " from [" + ipConfigResponse + "]", 0); ex.printStackTrace(); throw ex; } private final boolean linuxIsMacAddress(String macAddressCandidate) { if(macAddressCandidate.length() != 17) return false; return true; } private final String linuxRunIfConfigCommand() throws java.io.IOException { Process p = Runtime.getRuntime().exec("ifconfig"); java.io.InputStream stdoutStream = new java.io.BufferedInputStream(p.getInputStream()); StringBuffer buffer= new StringBuffer(); for (;;) { int c = stdoutStream.read(); if (c == -1) break; buffer.append((char)c); } String outputText = buffer.toString(); stdoutStream.close(); return outputText; } private final String windowsParseMacAddress(String ipConfigResponse) throws java.text.ParseException { String localHost = null; try { localHost = java.net.InetAddress.getLocalHost().getHostAddress(); } catch(java.net.UnknownHostException ex) { ex.printStackTrace(); throw new java.text.ParseException(ex.getMessage(), 0); } java.util.StringTokenizer tokenizer = new java.util.StringTokenizer(ipConfigResponse, "\n"); String lastMacAddress = null; while(tokenizer.hasMoreTokens()) { String line = tokenizer.nextToken().trim(); if(line.endsWith(localHost) && lastMacAddress != null) { return lastMacAddress; } int macAddressPosition = line.indexOf(":"); if(macAddressPosition java.text.ParseException ex = new java.text.ParseException("cannot read MAC address from [" + ipConfigResponse + "]", 0); ex.printStackTrace(); throw ex; } private final boolean windowsIsMacAddress(String macAddressCandidate) { if(macAddressCandidate.length() != 17) return false; return true; } private final String windowsRunIpConfigCommand() throws java.io.IOException { Process p = Runtime.getRuntime().exec("ipconfig /all"); java.io.InputStream in = new java.io.BufferedInputStream(p.getInputStream()); StringBuffer buffer= new StringBuffer(); for (;;) { int c = in.read(); if (c == -1) break; buffer.append((char)c); } String outputText = buffer.toString(); in.close(); return outputText; } public double getCpuRatio(){ double cpuRatio = 0; if (getOSName().toLowerCase().startsWith("windows")) { cpuRatio = getCpuRatioForWindows(); } else if (getOSName().toLowerCase().startsWith("linux")) { cpuRatio = getCpuRatioForLinux(); } return cpuRatio; } private double getCpuRatioForWindows() { try { String procCmd = System.getenv("windir") + "\\system32\\wbem\\wmic.exe process get Caption,CommandLine," + "KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount"; long[] c0 = readCpu(Runtime.getRuntime().exec(procCmd)); Thread.sleep(CPUTIME); long[] c1 = readCpu(Runtime.getRuntime().exec(procCmd)); if (c0 != null && c1 != null) { long idletime = c1[0] - c0[0]; long busytime = c1[1] - c0[1]; return Double.valueOf( PERCENT * (busytime) / (busytime + idletime)) .doubleValue(); } else { return 0.0; } } catch (Exception ex) { ex.printStackTrace(); return 0.0; } } final private double getCpuRatioForLinux() { try { java.io.File file = new java.io.File("/proc/stat"); java.io.BufferedReader br = new java.io.BufferedReader(new java.io.InputStreamReader( new java.io.FileInputStream(file))); java.util.StringTokenizer token = new java.util.StringTokenizer(br.readLine()); token.nextToken(); int user = Integer.parseInt(token.nextToken()); int nice = Integer.parseInt(token.nextToken()); int system = Integer.parseInt(token.nextToken()); int idle = Integer.parseInt(token.nextToken()); Thread.sleep(1000); br = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream( file))); token = new java.util.StringTokenizer(br.readLine()); token.nextToken(); int user2 = Integer.parseInt(token.nextToken()); int nice2 = Integer.parseInt(token.nextToken()); int sys2 = Integer.parseInt(token.nextToken()); int idle2 = Integer.parseInt(token.nextToken()); return (double) ((user2 + sys2 + nice2) - (user + system + nice)) / (float) ((user2 + nice2 + sys2 + idle2) - (user + nice + system + idle)); } catch (Exception ex) { return (double) 0.0; } } final String substring(String src, int startidx, int endidx) { byte[] b = src.getBytes(); StringBuffer sbr = new StringBuffer(); for (int i = startidx; i java.io.InputStreamReader ir = new java.io.InputStreamReader(proc.getInputStream()); java.io.LineNumberReader input = new java.io.LineNumberReader(ir); String line = input.readLine(); if (line == null || line.length() exe") >= 0) { continue; } if (caption.equals("System Idle Process") || caption.equals("System")) { idletime += Long.valueOf( substring(line, kmtidx, rocidx - 1).trim()) .longValue(); idletime += Long.valueOf( substring(line, umtidx, wocidx - 1).trim()) .longValue(); continue; } kneltime += Long.valueOf( substring(line, kmtidx, rocidx - 1).trim()).longValue(); usertime += Long.valueOf( substring(line, umtidx, wocidx - 1).trim()).longValue(); } retn[0] = idletime; retn[1] = kneltime + usertime; return retn; } catch (Exception ex) { ex.printStackTrace(); } finally { try { proc.getInputStream().close(); } catch (Exception e) { e.printStackTrace(); } } return null; } public long getStartTime(){ return startTime; } public long getStartMemory(){ return startMemory; } public boolean isSun() { return System.getProperty("java.vm.vendor").indexOf("Sun") != -1; } public String getJavaVersion() { return javaVersion; } public void loadAddress() { try { java.net.InetAddress address = java.net.InetAddress .getLocalHost(); java.net.InetAddress[] all = java.net.InetAddress.getAllByName(address.getHostName()); for (int i = 0; i java.net.UnknownHostException e) { } } /** * 获得所在服务器名称 */ public String getServerName() { return serverName; } public String getServerIP() { return serverIP; } public boolean isSupportSpring(){ return supportSpring; } public boolean isSupportLoonframework(){ return supportLoonframework; } public boolean isSupportStruts() { return supportStruts; } public boolean isSupportJAF() { return supportJAF; } public boolean isSupportJavaxSql() { return supportJavaxSql; } public boolean isSupportHibernate(){ return supportHibernate; } public boolean isSupportJNDI() { return supportJNDI; } public boolean isSupportMail() { return supportMail; } public boolean isSupportBeanUtils() { return supportBeanUtils; } public boolean isSupportCommonLogging() { return supportCommonLogging; } public boolean isSupportCommonCodec() { return supportCommonCodec; } public boolean isSupportCommonCollection() { return supportCommonCollection; } public boolean isSupportCommonDigester() { return supportCommonDigester; } public boolean isSupportCommonLang() { return supportCommonLang; } public boolean isSupportJakartaRegExp() { return supportJakartaRegExp; } public boolean isSupportLucene() { return supportLucene; } public boolean isSupportDom4j() { return supportDom4j; } public boolean isSupportMmMysqlDriver() { return supportMmMysqlDriver; } public boolean isSupportComMysqlDriver() { return supportComMysqlDriver; } public boolean isSupportImageProcessing() { return supportImageProcessing; } public String getDoubleOperation(){ long begin = System.currentTimeMillis(); int flag = 0; double random = (double)new java.util.Random().nextInt( 1000 ); while( flag 100000 ){ random = Math.sqrt( random ); flag++; } long end = System.currentTimeMillis(); long result = end - begin; return String.valueOf(result); } public String getNumberOperation() { long begin = startTime; int flag = 0; while (flag 1000000) { flag++; } long end = System.currentTimeMillis(); long result = end - begin; return String.valueOf(result); } } LfSpy spyLib = new LfSpy(); %> DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> lf-jsp探针 Ver 0.1.0 100%" height="45" border="0" cellpadding="0" class="InnerHead"> LF-Spy Java服务器探针 Ver 0.1.0 服务器连接速度: 100% cellspacing=1 cellpadding=0 class="InnerTable"> 接入设备 连接速度(理论值) 下载速度(理论值) 56k Modem 56 Kbps 7.0 k/s 64k ISDN 64 Kbps 8.0 k/s 512k ADSL 512 Kbps 64.0 k/s 1.5M Cable 1500 Kbps 187.5 k/s 5M FTTP 5000 Kbps 625.0 k/s 当前连接速度 JavaScript'>var tSpeedStart=new Date();" ); sbuffer.append("JavaScript'>var tSpeedEnd=new Date();\n" ); sbuffer.append("JavaScript'>" ); sbuffer.append("var iSpeedTime = 0; iSpeedTime = ( tSpeedEnd - tSpeedStart ) / 1000;" ); sbuffer.append("if( iSpeedTime > 0 ) iKbps = Math.round( Math.round( 100 * 8 / iSpeedTime * 10.5 ) / 10 ); else iKbps = 10000 ;" ); sbuffer.append("var iShowPer = Math.round( iKbps / 100 );" ); sbuffer.append("if( iShowPer 82 ) iShowPer = 82;" ); sbuffer.append("\n" ); sbuffer.append("JavaScript'>" ); sbuffer.append("document.write('' + iKbps + ' Kbps');" ); sbuffer.append("\n" ); sbuffer.append(" " ); sbuffer.append("JavaScript'>" ); sbuffer.append("document.write(Math.round(iKbps/8*10)/10+'k/s');"); sbuffer.append("\n") ; sbuffer.append(""); out.println(sbuffer.toString()); }else{ %>   开始测试 服务器相关数据: 100% cellspacing=1 cellpadding=0 class="InnerTable"> 服务器相关 数值信息 服务器名    服务器软件名    服务器IP    服务器操作系统    服务器系统模式    服务器MAC地址    操作系统类型    操作系统CPU占用率    JRE版本  JavaVersion()%>  JVM是否为Sun提供    服务器当前时间  java.util.Date()%>  服务器时区设置    服务器当前用户    服务器当前用户所在硬盘剩余空间    服务器当前用户目录    服务器当前页面物理路径    当前服务端口    截获的浏览器参数一览: 100% cellspacing=1 cellpadding=0 class="InnerTable"> 属性 数值  http-protocol     http-method     remote-host     remote-ip     remote-user     remote-port     content-type    java.util.Enumeration enums=request.getHeaderNames(); StringBuffer headBuffer=new StringBuffer(); String name=""; Object value=""; while(enums.hasMoreElements()){ name=(String)enums.nextElement(); value=(String)request.getHeader(name); headBuffer.append(""); headBuffer.append(" "+name+""); headBuffer.append(" "+value+""); headBuffer.append(""); } out.println(headBuffer.toString()); %> 部分CGI(Common Gateway Interface)参数: 100% cellspacing=1 cellpadding=0 class="InnerTable"> 属性 数值  SERVER_NAME (服务名)    PATH_TRANSLATED (服务器实际路径信息)    SERVER_SOFTWARE (服务器软件名)    PATH_INFO (附加路径信息)    DOCUMENT_ROOT (站点的物理路径)    CONTEXT_PATH (站点的根路径)   通过请求(Request)获得的参数: 100% cellspacing=1 cellpadding=0 class="InnerTable"> 属性 数值  getAuthType    getCharacterEncoding    getContentLength    getContentType    getContextPath    getLocale    getLocales    getMethod    getPathInfo    getPathTranslated    getProtocol    getReader    getRealPath    getRemoteAddr    getRemoteHost    getRemoteUser    getRequestDispatcher    getRequestURI    getRequestURL    getServerName    getServerPort    getServletPath    getUserPrincipal   通过应答(Response)返回的参数: 100% cellspacing=1 cellpadding=0 class="InnerTable"> 属性 数值  getBufferSize    getCharacterEncoding    getContentType    getLocale   通过会话(Session)获得的参数: 100% cellspacing=1 cellpadding=0 class="InnerTable"> 属性 数值 "); headBuffer.append(" "+name+""); headBuffer.append(" "+session.getAttribute(name)+""); headBuffer.append(""); } out.println(headBuffer.toString()); %> 通过服务器应用(Application)获得的参数: 100%" cellspacing=1 cellpadding=0 class="InnerTable"> 属性 数值 java.util.StringTokenizer token=new java.util.StringTokenizer(temp,";"); StringBuffer buffer=new StringBuffer(token.countTokens()); while(token.hasMoreElements()){ buffer.append(token.nextElement()); buffer.append(";\n"); } value=buffer.toString(); } } headBuffer.append(""); headBuffer.append(" "+name+" "); headBuffer.append(" "+value+" "); headBuffer.append(""); } out.println(headBuffer.toString()); %> 通过小甜饼(Cookies)获得的参数: 100% cellspacing=1 cellpadding=0 class="InnerTable"> 属性 数值     服务器效率测试: 100% cellspacing=1 cellpadding=0 class="InnerTable"> 让服务器执行100万次整数运算和10万次开方,记录所用的时间。 整数运算 浮点运算  javascript:location.reload()" value="测试当前服务器"/>     服务器所有可用参数一览: 100% cellspacing=1 cellpadding=0 class="InnerTable"> 服务器相关 数值信息 java.util.Properties props=System.getProperties(); java.util.Iterator iter=props.keySet().iterator(); while(iter.hasNext()) { name=(String)iter.next(); value=props.get(name); if(value instanceof String){ String temp=(String)value; boolean isA=temp.indexOf(";")!=-1; boolean isB=temp.indexOf(",")!=-1; if(isA||isB){ java.util.StringTokenizer token=new java.util.StringTokenizer(temp.replace(" ",""),isA?";":","); StringBuffer buffer=new StringBuffer(token.countTokens()); while(token.hasMoreElements()){ buffer.append(" "+token.nextElement()); buffer.append(isA?";"+"\n":","+"\n"); } value=buffer.toString(); } }else{ value=" "+value; } headBuffer.append(""); headBuffer.append(""+name+" "); headBuffer.append(""+value+" "); headBuffer.append(""); } out.println(headBuffer.toString()); %> 针对部分类库的服务器加载验证 100% cellspacing=1 cellpadding=0 class="InnerTable"> 属性 数值  是否支持 JNDI    是否支持 Loonframework    是否支持 JavaxSql  JavaxSql()%>  是否支持 JAF    是否支持 Mail  Mail()%>  是否支持 BeanUtils    是否支持 CommonLogging    是否支持 CommonCodec    是否支持 CommonCollection    是否支持 CommonDigester    是否支持 CommonLang    是否支持 JakartaRegExp    是否支持 Struts    是否支持 Lucene    是否支持 Dom4j    是否支持 MysqlDriver(Mm)    是否支持 MysqlDriver(Com)    是否支持 ImageProcessing    是否支持 Hibernate    是否支持 Spring   资源消费一览 100% cellspacing=1 cellpadding=0 class="InnerTable"> 属性 数值 java.util.Date date = new java.util.Date(spyLib.getStartTime()); java.text.SimpleDateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String starttime = df.format(date); date = new java.util.Date(endTime); df = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String endtime = df.format(date); %>  最大内存容量    应用结束时剩余自由内存    应用结束时减少自由内存    应用开始时间    应用结束时间    应用耗时(毫秒)   © 立即下载

相关推荐

2021-2022计算机二级等级考试试题及答案No.11150.docx

2021-2022计算机二级等级考试试题及答案No.11150.docx

爱我丶就要付出代价

Kubernetes集群部署与管理实战项目

Kubernetes集群部署与管理实战项目

miaobinfei

三相PWM整流器双闭环控制仿真模型(Simulink仿真实现)

内容概要:本文详细介绍了三相PWM整流器双闭环控制的Simulink仿真模型,重点围绕电压外环和电流内环的协同控制策略展开。通过建立系统的数学模型与控制框图,实现了对整流器输出直流电压的高精度稳定控制以及输入电流的单位功率因数校正。内容涵盖系统建模、控制器参数设计、PWM调制方式的选择与实现、坐标变换(如abc/dq变换)的应用,以及仿真结果的全面分析。通过动态响应测试、抗干扰能力验证和稳态性能评估,充分展示了双闭环控制在提升系统稳定性、响应速度和电能质量方面的优越性,为电力电子装置中高性能整流技术的研究与工程应用提供了完整的仿真验证方案。; 适合人群:具备电力电子技术、自动控制理论及Simulink仿真基础,从事新能源发电、电力传动、工业自动化等相关领域研究的研发人员及高校研究生。; 使用场景及目标:①掌握三相PWM整流器的工作原理及其双闭环控制结构的设计方法;②深入理解电压外环与电流内环的耦合关系与解耦控制策略;③学习基于Simulink的电力电子系统建模、仿真与性能分析流程;④为实际工程项目中的整流器控制系统开发提供理论支持与实践参考。; 阅读建议:建议读者结合电力电子教材与控制理论知识同步学习,重点关注控制器参数整定过程与仿真结果的物理意义解读,并动手复现仿真模型以加深对控制逻辑的理解。

大龙不吃小鱼干

47-基于STM32的自动衣物晾晒控制系统设计(设计+原理+程序+仿真+全套资料).rar

项目47-基于STM32自动衣物晾晒控制系统设计 资料包括Proteus仿真+Keil程序+Altium Designer原理图+软件安装包+参考设计说明书+答辩PPT+设计流程图,保证资料完整性! 功能: (1)本设计以STM32单片机为控制核心,精准调控自动衣物晾晒控制系统,实现智能化运行与高效管理。 (2)采用DHT11温湿度传感器,实时精准感知环境温湿度,为衣物晾晒提供科学的环境数据参考。 (3)人体红外模拟开关用于检测人体活动,实现有人时系统特定操作,无人时智能调整晾晒模式,便捷实用。 (4)OLED12864显示屏清晰呈现信息,包括温湿度、系统状态等,方便用户直观了解衣物晾晒情况。 (5)步进电机作为执行装置,精准控制衣物晾晒角度,确保衣物均匀受光,提升晾晒效果,资料可借鉴。

创界工坊工作室

MediaPipe跌倒检测看护系统实战

这是一套基于 MediaPipe Pose 的老人跌倒检测看护系统完整实战教程,给普通摄像头装上一双看得懂人体姿态的眼睛,逐帧提取 33 个人体关键点,用躯干倾角和肩膀高度骤降两路几何特征判断人有没有倒下,判定成立就地报警并自动留档。交付物含可运行 Python 源码、演示视频、9 章文档(三件套)、PPT 和 6 张真跑截图。 内容围绕 main.py 的命令:gui 打开 Tkinter 双栏看护面板,左栏实时画面加骨架叠加与状态条,右栏事件列表,跌倒即弹窗,倾角阈值、骤降阈值、连续确认帧数三根滑杆当场可调;video 不开界面跑完整段视频,产出骨架序列帧与事件 CSV;demo 程序化生成演示视频,没有摄像头也能复现整条链路。报警瞬间追加一行 CSV 并保存现场截图,CSV 用 utf-8-sig 编码,Excel 双击打开中文不乱码。 亮点在于无显卡要求:普通 CPU 即可运行,实时 30-40 FPS,无需训练;依赖锁定 Python 3.10 + mediapipe 0.10.9 + opencv-python 4.8.1.78 + numpy 1.26.0 + pillow 12.3.0;第 7 章整理 13 个以上高频报错;第 8 章给出换多人姿态、接入摄像头、对接云平台的二次开发路径。 适合做计算机视觉方向毕业设计的学生、智慧养老课题的学习者,以及需要课程大作业演示项目的开发者。会 Python 基础即可,无需深度学习背景。 使用方式:进入 src 目录建虚拟环境并 pip install -r requirements.txt,py main.py demo 生成演示视频,py main.py 启动看护面板选演示视频点启动即可看到跌倒报警全流程。

小鹿( ﹡ˆoˆ﹡ )
评论 6
收藏 已收藏
分享
返回顶部
houniao
Java EE 67,535 成员 225,843 内容