`
kaowww153
  • 浏览: 75352 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

关于struts2结合spring 创建action的思考

阅读更多

最近突然想到一个问题

以前在用struts2(注解)+spring

struts的action拖给spring管了(spring的bean在Ioc容器范围内默认都是singlen的),但是没有加@scope("prototype")却从来没有出现过线程安全问题。

而一年前还在学校时做ssh2(没用注解)练习时,不在bean后加prototype都会出现线程安全问题,当时所有的action后都加了scope=prototype。

难道注解和不用注解,struts2创建action的方式不一样?

于是做了个测试

public class TestAction extends BaseAction {
	@Autowired
	private UserService userService;
	@Action("test")
	public String test() throws Exception {
		System.out.println("action HashCode:"+this.hashCode());
		userService.getUserName();		
		return "success";
	}
}
@Service
public class UserService {
 public void getUserName(){
  System.out.println("service HashCode:"+hashCode()); }
}

 连续运行3次发现输出:

action HashCode:9928297
service HashCode:32262619
action HashCode:13620718
service HashCode:32262619
action HashCode:19792917
service HashCode:32262619

 输出结果说明 每次的action是不一样的

而每次的service是同一个也就是单例的

(难道action并没有交个spring托管)

又把以前在学校做的老项目(纯xml)拿来 把以前的scope="prototype"去掉

发现action确实是单例的   再加上scope="prototype"后action不是单例了

 

所以struts2(注解) 在和spring集成时action默认是new的,不用注解spring扫描action的话也是用的new。

而非注解时如果把action加入bean的话默认是单例的。

所以如果大家struts2是用注解的话就不需要在action上加@scope("prototype")了;

分享到:
评论
44 楼 fuguitong 2013-06-04  
[size=x-small][/size]
43 楼 A_Jane 2010-08-13  
默认就是prototype的。。你在上边修改也是没用的。。因为你struts里已配置过了class文件,已经加载了class问价,而你添加的注解new出来的action只不过是多余的一个。。修改是不起作用的,只有你把class配置的改为注解名字才行。
42 楼 A_Jane 2010-08-13  
这来理解吧。struts的action在生成时跟配置文件中的bean并不是在同一个容器中的。其实action中你不用添加注解照样OK。因为一切都是自动注入的,可以参考下文档,上面有解释的,autowire,默认是byName的。但是如果想由自己控制注入,也可以实现。那就是给Action添加一个@Component注解,同时struts配置文件中class的配置名字跟注解的名字一致,这样,注入的控制权就又回到了自己手里。
41 楼 kaowww153 2010-08-11  
<div class="quote_title">cyantide 写道</div>
<div class="quote_div">
<div class="quote_title">kaowww153 写道</div>
<div class="quote_div">
<p> </p>
<p><span style="color: #ff0000;">所以struts2(注解) 在和spring集成时action默认是new的,不用注解spring扫描action的话也是用的new。</span></p>
<p><span style="color: #ff0000;">而非注解时如果把action加入bean的话默认是单例的。</span></p>
<p><span style="color: #ff0000;">所以如果大家struts2是用注解的话就不需要在action上加@scope("prototype")了;</span></p>
</div>
<p>struts2+spring 注解集成有 "零配置" 和"注解加xml混合配置"两种,根据业务的不同需求有不同的选择.<br>如果楼主是使用零注解那么我完全认同楼主的观点,但如果是部分使用,例如:如果只在Action类上使用了@componet注解,而action跳转等还是写在xml配置文件里,那这时候就需要特别指定Action的Scope了,如不指定则spring默认action是singleton的,后果会很囧囧囧</p>
</div>
<p><br>都说了是用注解了,不需要在xml里配</p>
40 楼 cyantide 2010-08-10  
<div class="quote_title">kaowww153 写道</div>
<div class="quote_div">
<p> </p>
<p><span style="color: #ff0000;">所以struts2(注解) 在和spring集成时action默认是new的,不用注解spring扫描action的话也是用的new。</span></p>
<p><span style="color: #ff0000;">而非注解时如果把action加入bean的话默认是单例的。</span></p>
<p><span style="color: #ff0000;">所以如果大家struts2是用注解的话就不需要在action上加@scope("prototype")了;</span></p>
</div>
<p>struts2+spring 注解集成有 "零配置" 和"注解加xml混合配置"两种,根据业务的不同需求有不同的选择.<br>如果楼主是使用零注解那么我完全认同楼主的观点,但如果是部分使用,例如:如果只在Action类上使用了@componet注解,而action跳转等还是写在xml配置文件里,那这时候就需要特别指定Action的Scope了,如不指定则spring默认action是singleton的,后果会很囧囧囧</p>
39 楼 p2bl 2010-08-09  
有了struts2-spring-plugin 即使struts.xml里Action的class写的不是bean id,一样受spring托管。
如果你使用struts2而不使用param拦截器好像太浪费了,而使用param显然意味着Action不能是单例的。

楼主明明是来分享自己对代码的分析的又不是来问问题的,怎么有人一上来就好为人师
38 楼 ggbbyy6699 2010-08-06  
action的管理貌似是交给插件管理的,插件初始化Action时会参考Spring中的Bean容器,默认是按名字,所以写不写prototype不会影响Action
37 楼 kaowww153 2010-08-06  
sarin 写道
s1和s2哪个是单例你分清了么?Webwork是命令模式实现,S2就是Webwork,什么是命令模式,LZ应该看看。

貌似没分清的是你吧,难道你敢说s2是单例。s2是webwork在这里的人都知道不要你说。还有s2用的模式多了,你一句Webwork是命令模式实现很雷人。
36 楼 fsroger 2010-08-05  
好象compent,control,autowired这几种配置都可以
其实同问有用过struts2-spring吗?
35 楼 Zahir 2010-08-05  
你把struts2-spring-plugin里的SpringStrutsObjectFactory.java(名字可能记错了)里关于创建action的代码读一读就明白是怎么回事了

记错了, 是在xwork里的SrpingObjectFactory
 /**
     * Looks up beans using Spring's application context before falling back to the method defined in the {@link
     * ObjectFactory}.
     *
     * @param beanName     The name of the bean to look up in the application context
     * @param extraContext
     * @return A bean from Spring or the result of calling the overridden
     *         method.
     * @throws Exception
     */
    @Override
    public Object buildBean(String beanName, Map<String, Object> extraContext, boolean injectInternal) throws Exception {
        Object o = null;
        try {
            //先在WebApplicationContext中查找bean, 这里的beanName没有debug过, 理论上应该是action中配置的     
            //class
            o = appContext.getBean(beanName);
        } catch (NoSuchBeanDefinitionException e) {
            //action不是在spring中创建的话, 则由webwork自身实现的一套IOC进行bean的组装
            Class beanClazz = getClassInstance(beanName);
            o = buildBean(beanClazz, extraContext);
        }
        if (injectInternal) {
            injectInternalBeans(o);
        }
        return o;
    }

上面的代码我没有仔细debug过, webwork的那一套ioc实现我也没有看过, 看样子是可以识别@Resource的注解的
我的理解, 关于为什么使用@Controller不标注@Scope, 也使struts2每次请求都重新创建action的关键在于
你action中class的配置, 如果是配置成为spring中bean的id, 使得ObjectFactory可以从spring中成功获取action,
而这时没有配置scope, 就有可能出现并发问题, 最近没空, 有时间的测试一下
34 楼 sarin 2010-08-05  
s1和s2哪个是单例你分清了么?Webwork是命令模式实现,S2就是Webwork,什么是命令模式,LZ应该看看。
33 楼 kaowww153 2010-08-05  
。。。。。。。。
32 楼 jackerxff 2010-08-05  
是否多使用了一些Struts2的插件,比如那个Struts2 零配置插件convention-plugin就会让Struts自己创建线程安全的Action实例,而不用Spring创建,并且可以接收Spring注入的Service
31 楼 tianlang0101 2010-08-05  
喷子们 用过struts2 spring吗?
30 楼 ao.yuan.young 2010-08-05  
没有记录状态信息的局部变量
29 楼 kaowww153 2010-08-05  
guanliScott 写道
spring中bean的作用域设为prototype,每个请求对应一个实例.请求完成后,实例会被回收,所以,不会有性能问题。

我怎么感觉struts2 action应该是default singleton呢。不确定,一直用webwork.

事实上struts2 确实是每次都new的action,因为他有很多实例变量。单例容易出现线程问题。
struts1单例因为他传参的formbean本身就是局部变量,局部变量不容易出现线程安全问题。
28 楼 weir2009 2010-08-05  
guanliScott 写道
spring中bean的作用域设为prototype,每个请求对应一个实例.请求完成后,实例会被回收,所以,不会有性能问题。

我怎么感觉struts2 action应该是default singleton呢。不确定,一直用webwork.

不知道Struts2 和webwork的关系呀
27 楼 guanliScott 2010-08-05  
spring中bean的作用域设为prototype,每个请求对应一个实例.请求完成后,实例会被回收,所以,不会有性能问题。

我怎么感觉struts2 action应该是default singleton呢。不确定,一直用webwork.
26 楼 my_corner 2010-08-05  
kaowww153 写道
my_corner 写道
kaowww153 写道
my_corner 写道
kaowww153 写道
my_corner 写道
struts2本身设计就是action非单例的,拦截器是单例的,你强行把action做成单例的没有问题??

你这问的我想哭了,我是说struts2给spring托管时默认就是单例吗,不是强行做成单例。

默认托管??struts2-spring-pluginXXX.jar,struts插件,不用在spring中写任何有关action的配置。自己找来看看代码。

你这话写的业余了点吧。<bean id="showGoodsAction"
class="com.test.struts2.action.ShowGoodsAction"
scope="prototype">
<property name="goodsService" ref="goodsService"></property>
</property>
</bean>
你不配不代表别人不配吧。

无语……几百个action,您也一个一个的配。接着讨论您的注解吧,不参与了。

无语,我当然知道可以不配了,我做项目时也没配过,但这是我以前刚入门时做的练习,也是spring最基本的东西,你还别看不起。

没看不起,对不起我错了。
25 楼 kaowww153 2010-08-05  
my_corner 写道
kaowww153 写道
my_corner 写道
kaowww153 写道
my_corner 写道
struts2本身设计就是action非单例的,拦截器是单例的,你强行把action做成单例的没有问题??

你这问的我想哭了,我是说struts2给spring托管时默认就是单例吗,不是强行做成单例。

默认托管??struts2-spring-pluginXXX.jar,struts插件,不用在spring中写任何有关action的配置。自己找来看看代码。

你这话写的业余了点吧。<bean id="showGoodsAction"
class="com.test.struts2.action.ShowGoodsAction"
scope="prototype">
<property name="goodsService" ref="goodsService"></property>
</property>
</bean>
你不配不代表别人不配吧。

无语……几百个action,您也一个一个的配。接着讨论您的注解吧,不参与了。

无语,我当然知道可以不配了,我做项目时也没配过,但这是我以前刚入门时做的练习,也是spring最基本的东西,你还别看不起。

相关推荐

    2023年5月房地产行业舆情监测报告:政策、品牌及重点事件分析

    本报告由艾普思咨询发布,详细分析了2023年5月中国房地产行业的舆情状况。主要内容涵盖行业发展简报、舆情态势(声量/情感分布、来源/媒介分布、典型报道、地域分布)、品牌舆情关注度TOP10以及重点舆情话题和事件。报告指出,5月份房地产行业舆情声量显著上升,达到27,344,454篇次,主要受政策调整、企业动态等因素影响。此外,报告特别关注了万达集团大规模裁员传闻和光明房地产集团原董事长沈宏泽接受审查调查两大重点事件。 房地产从业者、投资者、政策研究者及相关媒体从业人员。

    基于戴维南模型的电池参数与SOC在线联合估计:FFRLS+EKF算法的应用

    内容概要:本文详细介绍了利用戴维南模型结合遗忘因子递推最小二乘(FFRLS)和扩展卡尔曼滤波(EKF)算法,实现电池参数和荷电状态(SOC)的在线联合估计。首先,通过FFRLS算法实时更新电池模型参数(如R0、Rp、Cp),确保模型能够适应电池的老化和环境变化。接着,EKF算法利用最新的参数估计SOC,解决了传统EKF因参数不准确而导致的估计偏差问题。文中还讨论了算法的具体实现细节,包括参数初始化、协方差矩阵设置、遗忘因子的选择以及针对不同工况的优化措施。此外,文章提供了实测数据对比,展示了联合估计方法相比单一EKF算法的优势,特别是在低温和电流突变等复杂工况下的表现。 适合人群:从事电池管理系统(BMS)开发的技术人员,尤其是对电池参数和SOC估计有研究兴趣的工程师。 使用场景及目标:适用于电动汽车、储能系统等领域,旨在提高电池参数和SOC估计的准确性,从而优化电池管理和延长电池寿命。 其他说明:文章强调了实际应用中的调试技巧,如使用示波器监测突变、MATLAB进行离线验证等,并指出在嵌入式设备(如STM32F407)上的性能优化方法。

    COMSOL二维仿真中电磁超声Lamb波在金属板材检测的应用指南

    内容概要:本文详细介绍了如何使用COMSOL进行二维电磁超声Lamb波仿真的具体步骤,特别针对金属板材检测的新手用户。首先,从建立几何模型开始,包括设置板厚、板长等参数。然后,介绍物理场耦合设置,如电磁场和结构力学之间的洛伦兹力耦合。接着,讲解了激励信号的选择和网格剖分的技术要点。此外,文中还提供了求解器配置的方法以及后处理阶段如何分析仿真结果,包括提取位移信号并进行FFT变换。最后,给出了一些实用的操作技巧和常见错误提示。 适合人群:初学者和有一定COMSOL使用经验的研究人员和技术人员。 使用场景及目标:帮助用户掌握电磁超声Lamb波的基本原理及其在COMSOL中的实现方法,能够独立完成简单板材检测任务。 其他说明:文中不仅涵盖了详细的仿真步骤,还包括了许多实践经验分享,有助于提高用户的实际操作能力。

    HAL库BootLoader通过FLASH进行双APP升级

    HAL库BootLoader通过FLASH进行双APP升级

    手撕M3U8加密!用aiohttp异步爬取伪装的TS文件,FFmpeg一键合并4K视频(附完整源码)

    m3u8文件

    杰奇CMS2.4仿铅笔小说网站模板源码,响应自适应界面+支付宝支付功能+关关采集

    1、响应式界面 2、页面布局合理,采用网络神板“笔趣阁”的布局,层次分明,结构清晰 3、页面色彩文艺,网站色彩搭配素雅、干净、不伤眼睛,文艺小清新范 4、版本支持会员中心及支付宝支付 5、2.4版本下vip章节支持 6、模板自适应 运行环境 php5.6+mysql 内附详细安装教程。

    锂电池保护板开发:基于中颖SH367309的硬件设计与代码实现详解

    内容概要:本文详细介绍了基于中颖SH367309芯片的锂电池保护板设计方案,涵盖硬件设计、PCB布局、代码实现等方面。硬件设计部分强调了电压采集电路、均衡电路、温度检测电路以及MOS管驱动电路的关键设计要点;PCB布局则关注模拟和数字地的分割、走线规范等问题;代码实现部分讨论了电压校准、过压保护、通信协议、均衡控制等核心算法的实现。此外,还提供了调试经验和常见问题解决方案,如过流保护算法优化、低温均衡异常处理等。 适合人群:从事锂电池管理系统开发的技术人员,尤其是有一定硬件设计和嵌入式编程经验的工程师。 使用场景及目标:适用于需要开发高性能、高可靠性的锂电池保护板的企业和个人开发者。主要目标是帮助读者掌握SH367309芯片的应用,提高产品的稳定性和性能。 其他说明:文中提供的完整工程文件可在GitHub上获取,方便读者进行实践和参考。建议读者在实际开发过程中结合具体应用场景灵活运用文中提到的各种技术和技巧。

    电动汽车主动前轮转向控制AFS的Matlab/Simulink建模与优化

    内容概要:本文详细介绍了基于Matlab/Simulink平台构建的7自由度电动汽车整车模型及其主动前轮转向控制系统(AFS)的设计与优化方法。首先,文章阐述了7自由度整车模型的建立,包括车辆的动力学特性和轮胎力学模型。接着,深入探讨了滑模控制器的设计,展示了如何通过滑模面和控制量输出公式实现对车辆横摆角速度和质心侧偏角的有效控制。此外,还讨论了联合控制策略的应用,以及如何通过调整参数提高系统的稳定性和响应速度。最后,分享了一些实际调参经验和常见问题的解决方案。 适合人群:从事电动汽车控制系统的研发人员、高校相关专业师生、对车辆动力学和控制理论感兴趣的工程技术人员。 使用场景及目标:适用于希望深入了解电动汽车操稳性控制机制的研究者和技术开发者,旨在帮助他们掌握AFS系统的建模方法、优化技巧及实际应用中的注意事项。 其他说明:文中提供了丰富的实例和详细的代码片段,便于读者理解和实践。同时提醒读者注意仿真过程中可能出现的问题及解决办法。

    Halcon与C#联合开发的工业视觉框架:图像处理、异常处理及内存管理实战解析

    内容概要:本文详细介绍了Halcon与C#联合开发的一个稳定版本的工业视觉框架。首先强调了环境配置的重要性,确保Halcon的runtime版本与开发环境一致,避免常见的dll版本不匹配问题。接着阐述了图像处理流水线的设计,利用Task+async/await提高效率并避免界面卡顿。文中展示了如何通过状态机实现流程引擎,使配置文件定义处理步骤更加灵活。此外,文章深入探讨了内存管理和异常处理的最佳实践,如使用using语句确保HRegion对象正确释放,以及将Halcon的错误码转化为易读信息。最后,作者分享了一些实用技巧,如通过WCF实现算法和服务化通信,以及提供了一个PCB板检测的Demo项目作为实例。 适合人群:具有一定编程基础,尤其是熟悉C#和Halcon的开发人员,以及从事工业视觉项目的工程师。 使用场景及目标:适用于希望深入了解Halcon与C#联合开发的工业视觉框架的技术人员。主要目标是帮助读者掌握图像处理流程、内存管理、异常处理等方面的知识,从而能够构建高效稳定的工业视觉系统。 其他说明:文中提供了大量代码片段和实践经验,有助于读者更好地理解和应用相关技术。同时,提醒读者在实际开发过程中需要注意的一些常见问题及其解决方案。

    利用Python与PSS/E实现插电式电动汽车增强电网暂态稳定性的技术研究

    内容概要:本文探讨了利用插电式电动汽车(PEV)提高电网暂态稳定性的方法和技术。文中详细介绍了通过Python脚本与PSS/E软件的结合,实现对电网中发电机转速偏差的实时监测,并据此调整附近PEV的充放电功率,以快速响应电网扰动,保持系统稳定。具体措施包括设定合理的转速检测阈值、根据扰动强度非线性调整调节系数、动态调整仿真步长以及引入电池健康管理系统,确保PEV在提供辅助服务的同时不会因频繁充放电损害电池寿命。此外,还讨论了未来将更多分布式储能资源整合进电网的可能性。 适合人群:从事电力系统自动化、智能电网研究的专业人士,以及对电动汽车与电网互动感兴趣的科研工作者。 使用场景及目标:适用于希望深入了解如何利用现代信息技术改善传统电力系统性能的研究机构或企业。主要目标是探索一种创新的技术路径,使得电动汽车不仅作为交通工具存在,还能成为电网稳定运行的重要组成部分。 其他说明:文中提到的方法已经在新英格兰39节点系统进行了初步验证,证明了其有效性。同时强调了通信延迟对于此类控制系统的影响,并提出了相应的解决办法。

    嵌入式设备固件安全分析技术综述与展望

    内容概要:本文围绕嵌入式设备固件安全分析展开讨论,涵盖了嵌入式设备面临的攻击层面、固件获取和自动化解析、固件安全分析技术(包括静态分析、符号执行、二进制漏洞关联、动态分析平台和模糊测试)等方面的最新研究成果。文章详细分析了各技术的特点、应用场景及优劣势,并对未来的研究方向进行了展望。嵌入式设备因其复杂性和专用性,给安全分析带来诸多挑战,如底层硬件平台的复杂异构、专用性强、源码/文档不公开、运行环境受限等。尽管近年来在固件安全分析方面取得了一些进展,但仍有许多开放性问题亟待解决。 适合人群:从事嵌入式系统安全研究的专业人士、安全分析师、网络安全研究人员、高校师生及相关领域的科研工作者。 使用场景及目标:①帮助研究人员深入了解嵌入式设备固件安全分析的现状和发展趋势;②为开发人员提供安全防护建议,提高嵌入式设备的安全性;③为企业和机构提供安全评估和风险管理的理论依据。 其他说明:本文强调了嵌入式设备固件安全分析的重要性,并指出了当前研究中的不足和未来的发展方向。

    电动汽车360V高压电机控制器开源方案详解:FOC算法、硬件设计及调试工具

    内容概要:本文详细介绍了某厂商开源的360V电动汽车高压电机控制器的技术细节。涵盖了硬件设计、FOC算法实现、Bootloader设计以及强大的上位机调试工具。硬件方面,采用高质量元器件如英飞凌IGBT驱动芯片和精密电流采样设计,确保系统稳定性和高性能。软件部分展示了完整的FOC算法实现,包括Clarke变换、Park变换、PI调节和SVPWM生成等关键步骤。Bootloader支持USB+CAN双模刷机,增强了系统的灵活性和可靠性。上位机工具提供了实时波形捕获、自动参数整定等功能,极大提高了调试效率。 适合人群:从事电动汽车电机控制系统开发的工程师和技术爱好者。 使用场景及目标:适用于希望深入了解电动汽车高压电机控制器设计和实现的研究人员和开发者。目标是掌握先进的FOC算法实现方法、硬件设计技巧以及高效的调试工具使用方法。 其他说明:文中提到的所有源码和硬件设计文件均可在GitHub上获取,项目名称为'EV_360V_Platform'。建议重点关注motor_controller/algorithm目录下的观测器算法和上位机调试工具的功能特性。

    用matlab实现的mpc模型预测控制,用matlab的quadprog函数实现了线性mpc函数双积分控制,倒立摆控制,车辆云动学模型控制,车辆动力学模型控制

    matlab

    京东方17.3英寸TFT-LCD模块NV173FHM-N4G-V8.0产品规格书(初步)

    内容概要:本文档为京东方科技有限公司发布的关于型号为NV173FHM-N4G V8.0的17.3英寸全高清TFT-LCD模块的产品规格说明书初稿。该模块采用非晶硅薄膜晶体管作为开关器件,支持2车道eDP接口,分辨率为1920×1080像素,显示颜色深度为16.7百万色,色彩覆盖率45%,内置LED驱动电路,适用于笔记本电脑。文档详细介绍了模块的一般描述、电气特性、光学特性、信号时序规范、电源序列、连接器描述、机械特征、可靠性测试以及处理注意事项等内容。此外还提供了详细的EDID表和其他附录信息。 适合人群:电子设备制造商、硬件工程师、采购商以及其他需要了解LCD显示屏技术参数的专业人士。 使用场景及目标:用于指导LCD模块的设计、生产和应用,确保符合客户的技术要求并提供可靠的操作指南。 其他说明:本规格书属于机密文件,未经许可不得复制或传播,且应在请求时归还给京东方公司。

    串口调试工具SerialDebugTool-v1.0 sscom串口助手 替代

    《串口调试工具SerialDebugTool_v1.0详解与应用》 串口通信在嵌入式系统、工业控制以及各种设备间的通信中扮演着至关重要的角色。为了方便开发者进行串口调试,出现了许多专业的串口调试工具,其中SerialDebugTool_v1.0是一款功能强大、易于使用的串口调试助手。本文将深入探讨该工具的功能特性、使用方法及其在实际应用中的价值。 让我们了解SerialDebugTool_v1.0的核心功能。此工具主要提供以下关键特性: 1. **实时数据传输**:SerialDebugTool_v1.0支持实时发送和接收串口数据,这对于测试和调试串口通信协议至关重要。用户可以实时查看接收的数据,同时通过输入框发送自定义数据,实现双向通信。 2. **波特率设置**:工具允许用户根据设备需求调整波特率,常见的波特率如9600、115200等,以适应不同设备的通信速率。 3. **数据位、停止位和校验位配置**:SerialDebugTool_v1.0支持设置数据位(5、6、7、8位)、停止位(1、1.5、2位)以及奇偶校验位,确保与不同设备的兼容性。 4. **数据格式转换

    四自由度受迫性振动 MATLAB 代码和SIMULINK仿真.zip

    matlab

    eNSP第一次作业,华珠电动2407肖国庆

    eNSP第一次作业,华珠电动2407肖国庆

    天文领域高画质流星与红色精灵闪电监控系统的构建及应用

    内容概要:本文详细介绍了如何利用天文相机和其他相关硬件设备搭建一套高画质、高帧率的流星监控系统,以及针对红色精灵闪电这一特殊自然现象的捕捉方法。文中不仅涵盖了硬件的选择标准如CMOS靶面尺寸、量子效率等重要参数,还提供了基于Python和OpenCV实现的基本监控代码示例,包括亮度突变检测、运动检测算法等关键技术点。此外,对于安装位置的选择、供电方式、成本控制等方面也有具体的指导建议。 适用人群:对天文摄影感兴趣的爱好者,尤其是希望捕捉流星和红色精灵闪电等瞬时天文现象的专业人士或业余玩家。 使用场景及目标:适用于希望搭建个人天文观测站,用于科学研究或个人兴趣爱好的场景。目标是能够稳定可靠地捕捉到流星和红色精灵闪电等难以捉摸的天文现象,为研究提供高质量的数据资料。 其他说明:文中提到的一些技术和方法虽然较为复杂,但对于有一定编程基础和技术动手能力的人来说是非常实用的参考资料。同时,文中提供的省钱技巧也为预算有限的用户提供了一些有价值的建议。

    Offer附件_徐习如.pdf

    Offer附件_徐习如.pdf

Global site tag (gtag.js) - Google Analytics