- 浏览: 180548 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
cmm:
[img][/img][/url][url][/url][ur ...
JSF2.0简介:页面模版化(系列之四) -
parabellum_sky:
飞到大连,
ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES) -
yuanliyin:
更换皮肤很不错!
动态改变RichFaces的皮肤 -
paomo30000:
请问为什么我在输入了http://localhost:8080 ...
在Eclipse 3.5中使用JSF 2.0开发Web应用环境配置及一个简单例子(系列之二) -
marshan:
<dependency> <groupI ...
动态改变RichFaces的皮肤
最近开始学习JSF基础,发现比较重要的一点,就是如何用编程方式访问托管Bean。看了一些JSF的实例,不过大多都是用JSF1.1来实现的。虽然在JSF1.2的环境中也可以很好运行,但是在编译的时候会看到降级的消息。这里找了一些资料总结一下JSF1.1和JSF1.2访问托管Bean的方法。
一、从JSF页面传递参数给托管Bean
虽然利用h:commandLink 和h:commandButton组件,可以通过action和actionListener来触发托管Bean中的方法,但是不能向这些方法中传递参数。对于动态传递参数,不是不可以实现,这点可以通过使用f:attribute来实现。而且f:attribute也可以很好的和actionListener联合使用。
例子:
<h:commandLink actionListener="#{myBean.action}">
<f:attribute name="attrname1" value="attrvalue1" />
<f:attribute name="attrname2" value="attrvalue2" />
...
<h:outputText value="Click here" />
</h:commandLink>
<h:commandButton value="Press here" actionListener="#{myBean.action}">
<f:attribute name="attrname1" value="attrvalue1" />
<f:attribute name="attrname2" value="attrvalue2" />
...
</h:commandButton>
这些属性可以通过父组件的getAttributes()方法取到,父组件可以通过传递给actionListener的ActionEvent实例取到
public void action(ActionEvent event)
...{
String attrvalue1 = (String) event.getComponent().getAttributes().get("attrname1");
String attrvalue2 = (String) event.getComponent().getAttributes().get("attrname2");
...
}
变量attrvalue1和attrvalue2包含从f:attribute set进来的值。
另一个欠文雅的方式就是通过f:param组件来传值,这个只是对h:commandLink起效。
<h:commandLink action="#{myBean.action}">
<f:param name="paramname1" value="paramvalue1" />
<f:param name="paramname2" value="paramvalue2" />
...
<h:outputText value="Click here" />
</h:commandLink>
这些参数可以通过FacesContext的getRequestParameterMap()方法取到。通过下面的方法,可以获取任何写在command块中f:param的值。
public static String getFacesParamValue(String name)
...{
return (String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(name);
}
上面的方法可以用在任何Bean的方法中。举例
public void action()
...{
String paramvalue1 = getFacesParamValue("paramname1");
String paramvalue2 = getFacesParamValue("paramname2");
...
}
变量paramvalue1和paramvalue2包含从f:param set进来的值。
不过要注意,属性的名字要唯一,而且不能用其他组件的属性名,比如:"id", "name", "value","binding", "rendered",等。
二、从JSF页面传递组件属性到托管Bean
f:attribute组件也可以用来访问,任何绑定在托管Bean的UI组件的属性。这些属性值可以通过父组件的getAttributes()来获得。因为不能以方法参数的方式传值给托管Bean绑定的UI组件的getter和setter方法,这时f:attribute就会非常有用。这里有个UI组件绑定到托管Bean的基础例子
<h:outputText binding="#{myBean.myText}" value="#{myBean.myTextValue}">
<f:attribute name="attributename" value="attributevalue" />
</h:outputText>
托管Bean代码:
import javax.faces.component.html.HtmlOutputText;
public class MyBean
...{
private HtmlOutputText myText;
public HtmlOutputText getMyText()
...{
return myText;
}
public String getMyTextValue()
...{
return (String) myText.getAttributes().get("attributename");
}
public void setMyText(HtmlOutputText myText)
...{
this.myText = myText;
}
}
三、在请求之间传递对象(Passing objects from request to request)
如果有一个request范围内的托管Bean,在下一个请求中想要重用这个bean的属性,参数,或者对象,但是不想一遍又一遍的初始化这个Bean。可以用h:inputhidden来解决这个问题。这里有个简单的例子:
<h:form>
...
<h:inputHidden value="#{myBean.value}" />
...
</h:form>
另一种方法就是用SessionMap来保存那些需要保存在session中的值。
public class MyBean
...{
public Object getMyValue()
...{
return FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("MyBeanMyValue");
}
public void setMyValue(Object myValue)
...{
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("MyBeanMyValue", myValue);
}
// This might be useful.
private void resetSessionValue(Object myKey)
...{
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove(myKey);
}
}
四、在托管Bean之间通信
实践时会有多个托管Bean。如果设计需要,可以利用getSessionMap()在托管Bean之间通信。
一个例子,有两个托管Bean:
<managed-bean>
<managed-bean-name>myBean1</managed-bean-name>
<managed-bean-class>mypackage.MyBean1</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>myBean2</managed-bean-name>
<managed-bean-class>mypackage.MyBean2</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
托管Bean myBean1和myBean2是支撑Bean MyBean1.java和MyBean2.java的实例,它们可以通过JSF页面来访问。不管它们的managed-bean-scope是request还是session。如果managed-bean-scope被设置成session,在整个session范围内可以使用同一个Bean的实例;如果managed-bean-scope被设置成request,那么每个request(form action)每次会创建一个Bean的实例。
用下面的方法,可以为每个托管Bean set和get static的参数。可以把它写成protected方法,放在一个超类中,让每个托管Bean继承,这会非常有用,或者写入一个Util类中,自己选择。
public class MySuperBean
...{
protected static Object getSessionValue(Object myKey)
...{
return FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(myKey);
}
protected static void setSessionValue(Object myKey, Object myValue)
...{
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(myKey, myValue);
}
}
public class MyBean1 extends MySuperBean
...{
public void myMethod()
...{
String myValue = "value1";
setSessionValue("MyBean1MyValue", myValue);
...
}
}
public class MyBean2 extends MySuperBean
...{
public void myMethod()
...{
String myValue = (String) getSessionValue("MyBean1MyValue");
...
}
}
五、在托管Bean中访问另一个托管Bean
如果有很多托管Bean,想要从其中一个托管Bean访问其他的托管Bean,这里有六中方法。
可以使用:
1)getVariableResolver
2)createValueBinding
3)getELResolver (since JSF 1.2)
4)createValueExpression (since JSF 1.2)
5)getRequestMap
6)getSessionMap.
举例:假设有两个托管Bean
<managed-bean>
<managed-bean-name>myBean1</managed-bean-name>
<managed-bean-class>mypackage.MyBean1</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>myBean2</managed-bean-name>
<managed-bean-class>mypackage.MyBean2</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
托管Bean myBean1和myBean2是支撑Bean MyBean1.java和MyBean2.java的实例,它们可以通过JSF页面来访问。不管它们的managed-bean-scope是request还是session。
只是要注意的是,getRequestMap在托管Bean被设置成request的时候使用,getSessionMap在托管Bean被设置成session的时候使用。
<h:form>
<h:commandButton action="#{myBean1.action1}" value="action1" />
<h:commandButton action="#{myBean1.action2}" value="action2" />
<h:commandButton action="#{myBean1.action3}" value="action3" />
<h:commandButton action="#{myBean1.action4}" value="action4" />
<h:commandButton action="#{myBean1.action5}" value="action5" />
<h:commandButton action="#{myBean1.action6}" value="action6" />
<h:outputText binding="#{myBean2.text}" />
</h:form>
MyBean1.java:
package mypackage;
import javax.faces.context.FacesContext;
public class MyBean1
...{
// Using VariableResolver. NOTE: this is deprecated since JSF 1.2!
public void action1()
...{
FacesContext context = FacesContext.getCurrentInstance();
MyBean2 myBean2 = (MyBean2) context.getApplication().getVariableResolver().resolveVariable(context, "myBean2");
myBean2.getText().setValue("action1");
}
// Using ValueBinding. NOTE: this is deprecated since JSF 1.2!
public void action2()
...{
FacesContext context = FacesContext.getCurrentInstance();
MyBean2 myBean2 = (MyBean2) context.getApplication().createValueBinding("#{myBean2}").getValue(context);
myBean2.getText().setValue("action2");
}
// Using ELResolver. NOTE: this is implemented since JSF 1.2!
public void action3()
...{
FacesContext context = FacesContext.getCurrentInstance();
MyBean2 myBean2 = (MyBean2) context.getELContext().getELResolver().getValue(context.getELContext(), null, "myBean2");
myBean2.getText().setValue("action3");
}
// Using ValueExpression. NOTE: this is implemented since JSF 1.2!
public void action4()
...{
FacesContext context = FacesContext.getCurrentInstance();
MyBean2 myBean2 = (MyBean2) context.getApplication().getExpressionFactory().createValueExpression(context.getELContext(), "#{myBean2}", MyBean2.class).getValue(context.getELContext());
myBean2.getText().setValue("action4");
}
// Using RequestMap. NOTE: myBean2 should be request scoped!
public void action5()
...{
Object object = FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("myBean2");
// This only works if myBean2 is request scoped.
if (object != null)
...{
MyBean2 myBean2 = (MyBean2) object;
myBean2.getText().setValue("action5");
}
}
// Using SessionMap. NOTE: myBean2 should be session scoped!
public void action6()
...{
Object object = FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("myBean2");
// This only works if myBean2 is session scoped.
if (object != null)
...{
MyBean2 myBean2 = (MyBean2) object;
myBean2.getText().setValue("action6");
}
}
}
MyBean2.java:
package mypackage;
import javax.faces.component.html.HtmlOutputText;
public class MyBean2
...{
private HtmlOutputText text;
public HtmlOutputText getText()
...{
return text;
}
public void setText(HtmlOutputText text)
...{
this.text = text;
}
}
一、从JSF页面传递参数给托管Bean
虽然利用h:commandLink 和h:commandButton组件,可以通过action和actionListener来触发托管Bean中的方法,但是不能向这些方法中传递参数。对于动态传递参数,不是不可以实现,这点可以通过使用f:attribute来实现。而且f:attribute也可以很好的和actionListener联合使用。
例子:
<h:commandLink actionListener="#{myBean.action}">
<f:attribute name="attrname1" value="attrvalue1" />
<f:attribute name="attrname2" value="attrvalue2" />
...
<h:outputText value="Click here" />
</h:commandLink>
<h:commandButton value="Press here" actionListener="#{myBean.action}">
<f:attribute name="attrname1" value="attrvalue1" />
<f:attribute name="attrname2" value="attrvalue2" />
...
</h:commandButton>
这些属性可以通过父组件的getAttributes()方法取到,父组件可以通过传递给actionListener的ActionEvent实例取到
public void action(ActionEvent event)
...{
String attrvalue1 = (String) event.getComponent().getAttributes().get("attrname1");
String attrvalue2 = (String) event.getComponent().getAttributes().get("attrname2");
...
}
变量attrvalue1和attrvalue2包含从f:attribute set进来的值。
另一个欠文雅的方式就是通过f:param组件来传值,这个只是对h:commandLink起效。
<h:commandLink action="#{myBean.action}">
<f:param name="paramname1" value="paramvalue1" />
<f:param name="paramname2" value="paramvalue2" />
...
<h:outputText value="Click here" />
</h:commandLink>
这些参数可以通过FacesContext的getRequestParameterMap()方法取到。通过下面的方法,可以获取任何写在command块中f:param的值。
public static String getFacesParamValue(String name)
...{
return (String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(name);
}
上面的方法可以用在任何Bean的方法中。举例
public void action()
...{
String paramvalue1 = getFacesParamValue("paramname1");
String paramvalue2 = getFacesParamValue("paramname2");
...
}
变量paramvalue1和paramvalue2包含从f:param set进来的值。
不过要注意,属性的名字要唯一,而且不能用其他组件的属性名,比如:"id", "name", "value","binding", "rendered",等。
二、从JSF页面传递组件属性到托管Bean
f:attribute组件也可以用来访问,任何绑定在托管Bean的UI组件的属性。这些属性值可以通过父组件的getAttributes()来获得。因为不能以方法参数的方式传值给托管Bean绑定的UI组件的getter和setter方法,这时f:attribute就会非常有用。这里有个UI组件绑定到托管Bean的基础例子
<h:outputText binding="#{myBean.myText}" value="#{myBean.myTextValue}">
<f:attribute name="attributename" value="attributevalue" />
</h:outputText>
托管Bean代码:
import javax.faces.component.html.HtmlOutputText;
public class MyBean
...{
private HtmlOutputText myText;
public HtmlOutputText getMyText()
...{
return myText;
}
public String getMyTextValue()
...{
return (String) myText.getAttributes().get("attributename");
}
public void setMyText(HtmlOutputText myText)
...{
this.myText = myText;
}
}
三、在请求之间传递对象(Passing objects from request to request)
如果有一个request范围内的托管Bean,在下一个请求中想要重用这个bean的属性,参数,或者对象,但是不想一遍又一遍的初始化这个Bean。可以用h:inputhidden来解决这个问题。这里有个简单的例子:
<h:form>
...
<h:inputHidden value="#{myBean.value}" />
...
</h:form>
另一种方法就是用SessionMap来保存那些需要保存在session中的值。
public class MyBean
...{
public Object getMyValue()
...{
return FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("MyBeanMyValue");
}
public void setMyValue(Object myValue)
...{
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("MyBeanMyValue", myValue);
}
// This might be useful.
private void resetSessionValue(Object myKey)
...{
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove(myKey);
}
}
四、在托管Bean之间通信
实践时会有多个托管Bean。如果设计需要,可以利用getSessionMap()在托管Bean之间通信。
一个例子,有两个托管Bean:
<managed-bean>
<managed-bean-name>myBean1</managed-bean-name>
<managed-bean-class>mypackage.MyBean1</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>myBean2</managed-bean-name>
<managed-bean-class>mypackage.MyBean2</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
托管Bean myBean1和myBean2是支撑Bean MyBean1.java和MyBean2.java的实例,它们可以通过JSF页面来访问。不管它们的managed-bean-scope是request还是session。如果managed-bean-scope被设置成session,在整个session范围内可以使用同一个Bean的实例;如果managed-bean-scope被设置成request,那么每个request(form action)每次会创建一个Bean的实例。
用下面的方法,可以为每个托管Bean set和get static的参数。可以把它写成protected方法,放在一个超类中,让每个托管Bean继承,这会非常有用,或者写入一个Util类中,自己选择。
public class MySuperBean
...{
protected static Object getSessionValue(Object myKey)
...{
return FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(myKey);
}
protected static void setSessionValue(Object myKey, Object myValue)
...{
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(myKey, myValue);
}
}
public class MyBean1 extends MySuperBean
...{
public void myMethod()
...{
String myValue = "value1";
setSessionValue("MyBean1MyValue", myValue);
...
}
}
public class MyBean2 extends MySuperBean
...{
public void myMethod()
...{
String myValue = (String) getSessionValue("MyBean1MyValue");
...
}
}
五、在托管Bean中访问另一个托管Bean
如果有很多托管Bean,想要从其中一个托管Bean访问其他的托管Bean,这里有六中方法。
可以使用:
1)getVariableResolver
2)createValueBinding
3)getELResolver (since JSF 1.2)
4)createValueExpression (since JSF 1.2)
5)getRequestMap
6)getSessionMap.
举例:假设有两个托管Bean
<managed-bean>
<managed-bean-name>myBean1</managed-bean-name>
<managed-bean-class>mypackage.MyBean1</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>myBean2</managed-bean-name>
<managed-bean-class>mypackage.MyBean2</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
托管Bean myBean1和myBean2是支撑Bean MyBean1.java和MyBean2.java的实例,它们可以通过JSF页面来访问。不管它们的managed-bean-scope是request还是session。
只是要注意的是,getRequestMap在托管Bean被设置成request的时候使用,getSessionMap在托管Bean被设置成session的时候使用。
<h:form>
<h:commandButton action="#{myBean1.action1}" value="action1" />
<h:commandButton action="#{myBean1.action2}" value="action2" />
<h:commandButton action="#{myBean1.action3}" value="action3" />
<h:commandButton action="#{myBean1.action4}" value="action4" />
<h:commandButton action="#{myBean1.action5}" value="action5" />
<h:commandButton action="#{myBean1.action6}" value="action6" />
<h:outputText binding="#{myBean2.text}" />
</h:form>
MyBean1.java:
package mypackage;
import javax.faces.context.FacesContext;
public class MyBean1
...{
// Using VariableResolver. NOTE: this is deprecated since JSF 1.2!
public void action1()
...{
FacesContext context = FacesContext.getCurrentInstance();
MyBean2 myBean2 = (MyBean2) context.getApplication().getVariableResolver().resolveVariable(context, "myBean2");
myBean2.getText().setValue("action1");
}
// Using ValueBinding. NOTE: this is deprecated since JSF 1.2!
public void action2()
...{
FacesContext context = FacesContext.getCurrentInstance();
MyBean2 myBean2 = (MyBean2) context.getApplication().createValueBinding("#{myBean2}").getValue(context);
myBean2.getText().setValue("action2");
}
// Using ELResolver. NOTE: this is implemented since JSF 1.2!
public void action3()
...{
FacesContext context = FacesContext.getCurrentInstance();
MyBean2 myBean2 = (MyBean2) context.getELContext().getELResolver().getValue(context.getELContext(), null, "myBean2");
myBean2.getText().setValue("action3");
}
// Using ValueExpression. NOTE: this is implemented since JSF 1.2!
public void action4()
...{
FacesContext context = FacesContext.getCurrentInstance();
MyBean2 myBean2 = (MyBean2) context.getApplication().getExpressionFactory().createValueExpression(context.getELContext(), "#{myBean2}", MyBean2.class).getValue(context.getELContext());
myBean2.getText().setValue("action4");
}
// Using RequestMap. NOTE: myBean2 should be request scoped!
public void action5()
...{
Object object = FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("myBean2");
// This only works if myBean2 is request scoped.
if (object != null)
...{
MyBean2 myBean2 = (MyBean2) object;
myBean2.getText().setValue("action5");
}
}
// Using SessionMap. NOTE: myBean2 should be session scoped!
public void action6()
...{
Object object = FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("myBean2");
// This only works if myBean2 is session scoped.
if (object != null)
...{
MyBean2 myBean2 = (MyBean2) object;
myBean2.getText().setValue("action6");
}
}
}
MyBean2.java:
package mypackage;
import javax.faces.component.html.HtmlOutputText;
public class MyBean2
...{
private HtmlOutputText text;
public HtmlOutputText getText()
...{
return text;
}
public void setText(HtmlOutputText text)
...{
this.text = text;
}
}
发表评论
-
JSF2.0中的实例测试(一)
2009-10-24 13:27 1725<img src="#{resource['i ... -
Java Server Faces 2.0重要新功能以及相关改进简介
2009-10-24 03:19 1169JSF 2.0的最终规范也已经发布了有近一个月了,在近期试 ... -
methodbinding methodexpression valueexpression
2009-10-17 16:20 11021. create MethodBinding Metho ... -
valueexpression的用法
2009-09-16 19:52 1653在1.2之前,可以向下面一样使用ValueBinding:Va ... -
JSF 动态创建组件
2009-09-03 21:26 1950JSF 的组件和组件树的概念非常好,可以完全通过JAVA代码实 ... -
JSF 2.0简介:Ajax对页面的增加与删除操作例子(系列之六)
2009-08-06 03:00 2778上一篇我们初步接触了一下JSF2.0的Ajax模型,为了适应A ... -
JSF 2.0简介:初识Ajax,一个简单的例子(系列之五)
2009-08-06 03:00 4648从本期介绍开始,我们来看看JSF 2.0对Ajax的支持,一 ... -
JSF2.0简介:页面模版化(系列之四)
2009-08-06 02:59 3325JSF已经出了很多年了,自从提出就带来了一些新的思想,但 ... -
JSF2.0中自定义组件模型例子(系列之三)
2009-08-06 02:58 3144在本篇介绍中,我们开始接触JSF2.0纳为标准的最重要的特性之 ... -
在Eclipse 3.5中使用JSF 2.0开发Web应用环境配置及一个简单例子(系列之二)
2009-08-06 02:56 6850这里假设你对eclipse的开发环境已经比较熟悉 ... -
Javaserver Faces 2.0重要新功能以及相关改进简介(系列之一)
2009-08-06 02:55 1776JSF 2.0的最终规范也已经发布了有近一个月了,在近期试用 ... -
JSF Faces API中的FacesContext和ExternalContext
2009-07-29 02:44 1149在Faces API中有两个类是 ... -
Java Server Faces Events And Listeners (JSF中的事件与监听器)
2009-07-26 22:44 1520JSF的一个核心就是事件与监听。JSF事件分为以下几种: 1、 ... -
Response的sendRedirect实现JSF内的URL重定向
2009-07-18 15:41 1962●导入Servlet包 import javax.servle ...
相关推荐
2025职业教育知识竞赛题库(含答案).pptx
基于.NET Core MVC与SQL Server的在线考试管理系统:多角色操作、国际化支持、全套源码与文档附赠,.net core mvc在线考试系统 asp.net在线考试管理系统 主要技术: 基于.net core mvc架构和sql server数据库,数据库访问采用EF core code first,前端采用vue.js和bootstrap。 功能模块: 系统包括前台和后台两个部分,分三种角色登录。 管理员登录后台,拥有科目管理,题库管理,考试管理,成绩管理,用户管理等功能。 教师登录后台,可进行题库管理,考试管理和成绩管理。 用户登录前台,可查看考试列表,参加考试,查看已考试的结果,修改密码等。 系统实现了国际化,支持中英两种语言。 源码打包: 包含全套源码,数据库文件,需求分析和代码说明文档。 运行环境: 运行需vs2019或者以上版本,sql server2012或者以上版本。 ,核心关键词: .net core mvc; asp.net在线考试管理系统; SQL Server数据库; EF core code first; vue.js; boot
C++编写的资产管理系统(带SQLServer数据库文件。)。
递归最小二乘法在线识别轮胎前后侧偏刚度:应用sin工况效果显著,适用多种场景,附simulink模型及代码,1、基于递归最小二乘法在线识别轮胎前后侧偏刚度,图为在正弦曲线工况,估计侧偏刚度的大小,效果较好 2、此模型也可用于其他工况下的刚度估计,有需要的朋友可以自行去尝试 3、包含simulink模型和递归最小二乘侧偏刚度估计代码 ,基于递归最小二乘法; 轮胎侧偏刚度在线识别; 正弦曲线工况估计; Simulink模型; 递归最小二乘侧偏刚度估计代码。,递归最小二乘法在正弦曲线工况下的轮胎刚度在线识别模型
PLL锁相环技术实现:SMIC55工艺下20MHz参考频率三阶二型CPPLL,快速锁定至1GMHz并带环形振荡器与DIV模块功能,pll锁相环 cppll cadence 三阶二型锁相环 工艺smic55 参考频率20MHz 分频比50 锁定频率1GMHz 锁定时间2us 环形振荡器 ring vco PFD模块 DIV模块 45分频,ps counter CP模块 工艺smic55 ,核心关键词:PLL锁相环; CPPLL; 工艺SMIC55; 参考频率20MHz; 分频比50; 锁定频率1GHz; 锁定时间2us; 环形振荡器(Ring VCO); PFD模块; DIV模块(45分频,ps counter); CP模块。,"SMIC55工艺:PLL环及二型锁相环技术解析"
EKF SLAM matlab simulation. EKF SLAM 分析及matlab仿真源码。
CPRI IP License支持Xilinx Vivado全版本,无MAC绑定,永久有效授权,CPRI ip license xilinx vivado 支持Vivado各版本,不绑定mac,永久有效 ,CPRI; IP license; Xilinx; Vivado; 不绑定Mac; 永久有效; 支持各版本。,"Xilinx Vivado支持:永久有效的CPRI IP License,不绑定MAC"
1.内容概要 通过KNN实现鸢尾花分类,即将新的数据点分配给已知类别中的某一类。该算法的核心思想是通过比较距离来确定最近邻的数据点,然后利用这些邻居的类别信息来决定待分类数据点的类别。 2.KNN算法的伪代码 对未知类别属性的数据集中的每个点依次执行以下操作: (1)计算已知类别数据集中的点与当前点之间的距离; (2)按照距离递增次序排序; (3)选取与当前点距离最小的k个点; (4)确定前k个点所在类别的出现频率; (5)返回前k个点出现频率最高的类别作为当前点的预测分类。 3.数据集说明 代码使用`pandas`库加载了一个名为`iris.arff.csv`的数据集 4.学习到的知识 通过鸢尾花分类学习了KNN算法,选择样本数据集中前k个最相似的数据,就是KNN算法中k的出处。k值过大,会出现分类结果模糊的情况;k值较小,那么预测的标签比较容易受到样本的影响。在实验过程中,不同的k值也会导致分类器的错误率不同。KNN算法精度高、无数据输入的假定,可以免去训练过程。但是对于数据量较多的训练样本,KNN必须保存全部数据集,可能会存在计算的时间复杂度、空间复杂度高的情况,存在维数灾难问
COMSOL三维采空区通风条件下的氧气与瓦斯浓度分布研究,comsol三维采空区通风条件下,氧气,瓦斯浓度分布。 ,核心关键词:comsol; 三维采空区; 通风条件; 氧气浓度分布; 瓦斯浓度分布;,"三维采空区通风模拟:氧气与瓦斯浓度分布研究"
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat
DaisyDisk for Mac是一款直观且强大的磁盘清理工具,专为Mac用户设计。它通过交互式图表直观展示磁盘空间使用情况,以彩色区块形式呈现文件和文件夹大小,帮助用户快速定位占用空间的大文件。软件支持快速扫描,可在几秒内完成磁盘分析,并提供文件预览功能,避免误删重要文件。DaisyDisk还支持多磁盘管理、云存储扫描、隐私保护和安全删除功能。其界面简洁易用,适合新手和专业人士,是优化磁盘空间、提升系统性能的必备工具。
三菱FX3U伺服控制框架标准程序详解:定位控制参数设定、回原点操作、JOG手动控制及绝对与相对定位控制,FX3U和三菱伺服控制的框架标准程序,适合新手学习定位用。 用 标签分层,说明了定位控制中的公共参数设定、回原点、JOG手动、绝对定位、相对定位、控制等部分,有伺服驱动器的针脚接线。 ‘包括有: 1、程序一份 2、说明一份 ,核心关键词:FX3U; 三菱伺服控制; 框架标准程序; 新手学习定位; 标签分层; 公共参数设定; 回原点; JOG手动; 绝对定位; 相对定位; 控制; 伺服驱动器针脚接线。,"三菱FX3U伺服控制框架标准程序:新手定位控制指南"
Python自动化办公源码-40 excel处理实例(多工作表合并到单工作表)
2023-04-06-项目笔记-第三百八十六阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.384局变量的作用域_384- 2025-01-22
基于MATLAB的含风光柴储微网多目标优化调度策略与模型实现,含风光柴储微网多目标优化调度 MATLAB代码 关键词:微网调度 风光柴储 粒子群算法 多目标优化 参考文档:《基于多目标粒子群算法的微电网优化调度》 仿真平台:MATLAB 平台采用粒子群实现求解 优势:代码注释详实,适合参考学习,非目前烂大街的版本,程序非常精品,请仔细辨识 主要内容:代码构建了含风机、光伏、柴油发电机以及储能电站在内的微网优化运行模型,并且考虑与上级电网的购电交易,综合考虑了多方经济成本以及风光新能源消纳等多方面的因素,从而实现微网系统的经济运行,求解采用的是MOPSO算法(多目标粒子群算法),求解效果极佳,具体可以看图 ,关键词:微网优化调度; 风光柴储; 粒子群算法; 多目标优化; MATLAB代码; MOPSO算法。,基于MATLAB的微网风光柴储多目标优化调度与MOPSO算法的实践研究
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat
西门子SMART 200电机控制子程序V1.6:智能管理多达7个电机,灵活设置运行参数,故障自动切换备用电机,版本升级持续优化。,西门子SMART 200 电机控制子程序V1.6,可生成库 可控制1-7个电机 可设置同时运行的最大电机数量 可设置每个电机是否使用 可设置电机轮时间,当系统单次运行时间>轮时间,停止运行时间最长的电机,上累计运行时间最短的电机 可设置电机启动间隔 每次启动累计运行时间最短的电机 当有电机故障时,立即停止该电机,如果有备用电机自动切备用电机 7个电机内,可自由设置备用电机个数,使用的电机总数-最大电机数量=备用电机个数 附版本升级记录: V1.1优化:当使能被关闭后自动关闭对应电机 V1.2优化:运行中改变同时使用电机数量有效 V1.3更改:open信号上升沿直接启动1个电机(跳过启动间隔),第二个电机启动间隔才有效 轮时间改为秒,当系统单次运行时间>轮时间,停止运行时间最长的电机,上累计运行时间最短的电机 V1.4优化 V1.5满足可以运行的电机数量>同时使用电机数量 时 轮才有效,不满足时,轮计时清零 V1.6 优化某些情况下,无法正确延时 ,核心关键词
点击查看,完整项目演示视频,更有数百个深度学习项目案例:zzgcz.com 项目A030-DIN的核心是通过深度学习技术实现个性化推荐算法,旨在为用户提供精准、高效的商品或内容推荐。在现代电子商务、社交媒体及内容平台中,推荐系统作为核心功能,极大地提升了用户体验。DIN(Deep Interest Network,深度兴趣网络)是一种专门针对用户行为数据进行建模的深度学习模型,通过捕捉用户历史行为中的兴趣点,动态地生成推荐结果。DIN模型的一个显著特点是,它能够根据用户的当前兴趣动态调整推荐内容,不仅仅是依赖于用户的全局行为历史。
基于PID控制的超车轨迹跟踪技术:高效跟踪期望轨迹的详细指南,基于pid控制的超车轨迹跟踪,能够很好的跟踪期望轨迹。 有详细的说明文档 ,基于pid控制的超车轨迹跟踪; 轨迹跟踪; 精确性; 详细说明文档。,基于PID控制的超车轨迹精确跟踪技术:高效追踪期望轨迹的说明文档