当前位置:  编程技术>软件工程/软件设计
本页文章导读:
    ▪WebRTC 架构及与浏览器,web开发者关系      本文来自 csdn ucser,    http://blog.csdn.net/perfectpdl   转载注明出处,谢谢. 接 sip/ims 视频客户端开发,支持接入sip软交换,ims核心网,支持 语音,视频,即时通信功能,视频੬.........
    ▪组态软件----机房环境监控系统(1)      在写这篇文章之前,首先非常感谢吴剑洪(南京同新软件)创始人的大力支持。本软件同时也参考了北京三维力控的一部分设计思想。 本软件主要分为基础数据配置(设备配置、变量配置),数据.........
    ▪Spring攻略学习笔记(11)------用XML配置自动装配Bean                 当一个Bean需要访问另一个Bean时,可以显示指定引用装配它。但是,如果你的容器能够自动装配Bean,就可以免去手工配置装配的麻烦。   &.........

[1]WebRTC 架构及与浏览器,web开发者关系
    来源: 互联网  发布时间: 2013-11-19

本文来自 csdn ucser,    http://blog.csdn.net/perfectpdl   转载注明出处,谢谢.

接 sip/ims 视频客户端开发,支持接入sip软交换,ims核心网,支持 语音,视频,即时通信功能,视频格式支持 h263,h264,mpeg4 软编软解,提供硬件编解码接口对接,支持 DBA动态码率调整,NACK, PLI,FIR等视频丢包处理能力,提供SIP服务器,有兴趣请联系我。


     WebRTC软件架构由两套应用程序调用接口组成:Web API与Native API;Web API是WebRTC项目提供给Web开发者的一套JavaScript实现的API。为了令WebRTC应用能够“一次开发,随处运行”, W3c已经定制了 WebRTC 1.0 草案,草案定义了重要的API接口如Network Stream API与getUserMedia API,

Native API是一组根据Web API定义的底层C++接口,二次开发者可以利用JavaScript对其进行封装供给浏览器调用,或者直接用其开发本地程序。因为Native API需要直接与底层的硬件及操作系统进行交互,所以在不同的系统环境,如Windows、Linux、Android中不尽相同。不同浏览器会有不同的实现方式;WebRTC最核心的地方在于其向浏览器引擎加入了视频引擎、音频引擎、网络传输及会话控制等新功能模块。其中,音视频引擎模块提供了从音视频采集设备,如麦克风、摄像头,到网络侧音视频处理链的总体框架。为了避免专利纠纷,音视频编码都采用了开源的编码格式,如iLBC、iSAC、VP8等,同时提供相应的抖动缓冲及音视频增强等功能。在网络传输方面,WebRTC使用RTP/SPRT进行媒体流传输,使用ICE(Interactive Connectivity Establishment)技术进行媒体流的私网穿透。WebRTC客户端使用JSEP(Javascript Session Establishment Protocol)协议草案规范WebRTC通信双方应如何交换SDP信息,并进行媒体流协商和控制。JSEP的设计思路将媒体层的控制交由浏览器,而将信令层的控制交由Web应用开发者,从而使得信令状态机可与浏览器彻底分离,保持了协议的灵活性。

作者:perfectpdl 发表于2013-4-21 21:57:45 原文链接
阅读:68 评论:0 查看评论

    
[2]组态软件----机房环境监控系统(1)
    来源: 互联网  发布时间: 2013-11-19

在写这篇文章之前,首先非常感谢吴剑洪(南京同新软件)创始人的大力支持。本软件同时也参考了北京三维力控的一部分设计思想。

本软件主要分为基础数据配置(设备配置、变量配置),数据采集和监控,前台页面部分。

 下面对以上三个部分进行功能的分解。

 基础信息部分:

 这部分的功能主要是设备通信协议,设备类型,变量类型的添加,删除,修改,同时对实例设备,变量的添加,修改,删除操作,同时包括设备和变量的连接,即每个设备中包括那些变量。

所使用的技术包括:各种通信设备接口协议,多线程。


数据采集和监控部分:

这部分的功能主要是根据基础信息的配置信息来采集设备数据和设备变量。同时对设备进行报警和报警后的处理。数据的保存。

所用的技术包括:多线程,内存数据库,共享内存,IOCP等

 

前台页面部分:

这部分的功能主要是用户界面部分。包括基础数据的配置和设备的监控。用户管理等。

所用技术:severlet ,java,jsp 等、

 

本文中也有很多错误之处,请大家指教。

如有需要联系本人:QQ:81704297 手机:15895987857


 

作者:haoxingfeng 发表于2013-4-22 11:04:33 原文链接
阅读:25 评论:0 查看评论

    
[3]Spring攻略学习笔记(11)------用XML配置自动装配Bean
    来源: 互联网  发布时间: 2013-11-19

           当一个Bean需要访问另一个Bean时,可以显示指定引用装配它。但是,如果你的容器能够自动装配Bean,就可以免去手工配置装配的麻烦。

      Spring IoC容器能够帮助你自动装配Bean。只要在<bean>的autowire属性中指定自动装配模式就可以了。以下是Spring 3.X支持的自动装配模式。

         no:不执行自动装配。必须显示装配依赖

         byName:对于每个Bean属性,装配一个同名的Bean。

         byType:对于每个Bean属性,装配类型与之兼容的一个Bean。如果找到超过一个Bean,将抛出UnsatisfiedDependencyException异常

         constructor:对于每个构造函数参数,首先寻找与参数兼容的Bean。然后选择具有最多匹配参数的构造函数。对于存在歧义的情况,将抛出UnsatisfiedDependencyException异常。

        默认模式是no,但可以设置<beans>根元素的default-autowire属性修改。这个默认模式将被Bean自己指定的模式覆盖。

        注:Spring 3.X不支持autodetect自动装配模式,使用@Autowired注解代替。

        尽管自动装配功能非常强大,但代价是降低了Bean配置的可读性。因为自动装配由Spring在运行时执行,你无法从Bean配置文件中得到Bean装配的方式。建议仅将自动装配应用到组件依赖不复杂的应用程序中。

(1)按照类型自动装配

         可以将sequenceGenerator这个Bean的autowire属性设置为byType并且不设置prefixGenerator属性。然后Spring将试图装配类型与PrefixGenerator兼容的Bean。在这个例子中,将自动装配datePrefixGenerator。

<bean id="sequenceGenerator" class="com.jackie.codeproject.springrecipesnote.springioc.SequenceGenerator" autowire="byType">		    
   <property name="initial" value="100000" />
   <property name="suffix" value="A" />
</bean>
		
<bean id="datePrefixGenerator" class="com.jackie.codeproject.springrecipesnote.springioc.DatePrefixGenerator">
   <property name="pattern" value="yyyyMMdd" />
</bean>

        按照类型装配的主要问题是有时候在IoC容器中有超过一个与目标类型兼容的Bean。在这种情况下,Spring将无法确定哪个Bean最适合于该属性,因此会抛出异常.

<bean id="sequenceGenerator" class="com.codeproject.jackie.springrecipesnote.springioc.SequenceGenerator" autowire="byType">
    <property name="initial" value="100000" />
    <property name="suffix" value="A" />
</bean>
    
<bean id="datePrefixGenerator" class="com.codeproject.jackie.springrecipesnote.springioc.DatePrefixGenerator">
    <property name="pattern" value="yyyyMMdd" />
</bean>
    
<bean id="yearPrefixGenerator" class="com.codeproject.jackie.springrecipesnote.springioc.YearPrefixGenerator">
    <property name="pattern" value="yyyy" />
</bean>
         运行程序,抛出UnsatisfiedDependencyException异常:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sequenceGenerator' defined in class path resource [applicationContext.xml]: Unsatisfied dependency expressed through bean property 'prefixGenerator': : No qualifying bean of type [com.codeproject.jackie.springrecipesnote.springioc.PrefixGenerator] is defined: expected single matching bean but found 2: datePrefixGenerator,yearPrefixGenerator; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [com.codeproject.jackie.springrecipesnote.springioc.PrefixGenerator] is defined: expected single matching bean but found 2: datePrefixGenerator,yearPrefixGenerator
  (2)按照名称自动装配

        byName是另一种自动装配模式。Spring将试图装配一个与属性名相同的Bean,而不是兼容的类型,这样能解决按照类型的自动装配的问题。

<bean id="sequenceGenerator" class="com.codeproject.jackie.springrecipesnote.springioc.SequenceGenerator" autowire="byName">
    <property name="initial" value="100000" />
    <property name="suffix" value="A" />
</bean>
    
<bean id="prefixGenerator" class="com.codeproject.jackie.springrecipesnote.springioc.DatePrefixGenerator">
    <property name="pattern" value="yyyyMMdd" />
</bean> 
按照名称的自动装配并不能工作于任何情况。有时候不可能使目标Bean的名称与属性相同。在实践中,往往需要在保持其他依赖自动装配的同时明确指定歧义的依赖。这意味着混合了显示装配和自动装配。

(3)按照构造程序自动装配

        constructor自动装配模式相对byType模式更复杂一些。对于具有单个构造程序的Bean,Spring将试图为每个构造程序参数装配一个类型兼容的Bean。但对于具有多个构造函数的Bean,Spring首先试图为每个构造函数的每个参数找到一个类型兼容的Bean,然后将选择具有最多匹配参数的构造函数。

      假定SequenceGenerator有一个默认的构造函数和一个具有PrefixGenerator参数的构造函数

    public SequenceGenerator() {

    }

    public SequenceGenerator(PrefixGenerator prefixGenerator) {
        this.prefixGenerator = prefixGenerator;
    }
      在这种情况下,第二个构造函数匹配并被选中,因为Spring可以找到一个类型与PrefixGenerator兼容的Bean。

<bean id="sequenceGenerator" class="com.codeproject.jackie.springrecipesnote.springioc.SequenceGenerator" autowire="constructor">
    <property name="initial" value="100000" />
    <property name="suffix" value="A" />
</bean>
    
<bean id="datePrefixGenerator" class="com.codeproject.jackie.springrecipesnote.springioc.DatePrefixGenerator">
    <property name="pattern" value="yyyyMMdd" />
</bean>
      如果使用这种装配模式,需要避免构造函数歧义。

作者:jackiehff 发表于2013-4-22 16:04:09 原文链接
阅读:4 评论:0 查看评论

    
最新技术文章:
▪主-主数据库系统架构    ▪java.lang.UnsupportedClassVersionError: Bad version number i...    ▪eclipse项目出现红色叉叉解决方案
▪Play!framework 项目部署到Tomcat    ▪dedecms如何做中英文网站?    ▪Spring Batch Framework– introduction chapter(上)
▪第三章 AOP 基于@AspectJ的AOP    ▪基于插件的服务集成方式    ▪Online Coding开发模式 (通过在线配置实现一个表...
▪观察者模式(Observer)    ▪工厂模式 - 程序实现(java)    ▪几种web并行化编程实现
▪机器学习理论与实战(二)决策树    ▪Hibernate(四)——全面解析一对多关联映射    ▪我所理解的设计模式(C++实现)——解释器模...
▪利用规则引擎打造轻量级的面向服务编程模式...    ▪google blink的设计计划: Out-of-Progress iframes    ▪FS SIP呼叫的消息线程和状态机线程
▪XML FREESWITCH APPLICATION 实现    ▪Drupal 实战    ▪Blink: Chromium的新渲染引擎
▪(十四)桥接模式详解(都市异能版)    ▪你不知道的Eclipse用法:使用Allocation tracker跟...    ▪Linux内核-进程
▪你不知道的Eclipse用法:使用Metrics 测量复杂度    ▪IT行业为什么没有进度    ▪Exchange Server 2010/2013三种不同的故障转移
▪第二章 IoC Spring自动扫描和管理Bean    ▪CMMI简介    ▪目标检测(Object Detection)原理与实现(六)
▪值班总结(1)——探讨sql语句的执行机制    ▪第二章 IoC Annotation注入    ▪CentOS 6.4下安装Vagrant
▪Java NIO框架Netty1简单发送接受    ▪漫画研发之八:会吃的孩子有奶吃    ▪比较ASP和ASP.NET
▪SPRING中的CONTEXTLOADERLISTENER    ▪在Nginx下对网站进行密码保护    ▪Hibernate从入门到精通(五)一对一单向关联映...
▪.NET领域驱动设计—初尝(三:穿过迷雾走向光...    ▪linux下的块设备驱动(一)    ▪Modem项目工作总结
▪工作流--JBPM简介及开发环境搭建    ▪工作流--JBPM核心服务及表结构    ▪Eclipse:使用JDepend 进行依赖项检查
▪windows下用putty上传文件到远程Linux方法    ▪iBatis和Hibernate的5点区别    ▪基于学习的Indexing算法
▪设计模式11---设计模式之中介者模式(Mediator...    ▪带你走进EJB--JMS编程模型    ▪从抽象谈起(二):观察者模式与回调
▪设计模式09---设计模式之生成器模式(Builder)也...    ▪svn_resin_持续优化中    ▪Bitmap recycle方法与制作Bitmap的内存缓存
▪Hibernate从入门到精通(四)基本映射    ▪设计模式10---设计模式之原型模式(Prototype)    ▪Dreamer 3.0 支持json、xml、文件上传
▪Eclipse:使用PMD预先检测错误    ▪Jspx.net Framework 5.1 发布    ▪从抽象谈起(一):工厂模式与策略模式
▪Eclipse:使用CheckStyle实施编码标准    ▪【论文阅读】《Chain Replication for Supporting High T...    ▪Struts2 Path_路径问题
▪spring 配置文件详解    ▪Struts2第一个工程helloStruts极其基本配置    ▪Python学习入门基础教程(learning Python)--2 Python简...
▪maven springmvc环境配置    ▪基于SCRUM的金融软件开发项目    ▪software quality assurance 常见问题收录
▪Redis集群明细文档    ▪Dreamer 框架 比Struts2 更加灵活    ▪Maven POM入门
▪git 分支篇-----不断更新中    ▪Oracle非主键自增长    ▪php设计模式——UML类图
▪Matlab,Visio等生成的图片的字体嵌入问题解决...    ▪用Darwin和live555实现的直播框架    ▪学习ORM框架—hibernate(二):由hibernate接口谈...
▪(十)装饰器模式详解(与IO不解的情缘)    ▪无锁编程:最简单例子    ▪【虚拟化实战】网络设计之四Teaming
▪OSGi:生命周期层    ▪Javascript/Jquery——简单定时器    ▪java代码 发送GET、POST请求
▪Entity Framework底层操作封装(3)    ▪HttpClient 发送GET、POST请求    ▪使用spring框架,应用启动时,加载数据
▪Linux下Apache网站目录读写权限的设置    ▪单键模式的C++描述    ▪学习ORM框架—hibernate(一):初识hibernate
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3