精华内容
下载资源
问答
  • 直流转交流单相
  • 一个的100W逆变器电路(直流转交流
  • 本工程主要是将直流电通过逆变装置,转换为家庭常用的交流电,通过自己手动DIY制作大功率直流变交流。文件内包括原理图和PCB等文件。
  • 设计提供基于 TI MSP430 和 UCD8220 数字管理推挽控制器的低成本小尺寸稳定型 200-VA 直流转交流逆变器。此设计面向汽车逆变器和用于商业用途的小型逆变器。在此设计中,升压级采用 UCD8220 从 12-V 电池获取 250-V ...
  • 本工程主要是将直流电通过逆变装置,转换为家庭常用的交流电。 大功率直流变交流。文件内包括原理图和PCB等文件。
  • 逆变器的原理与,工作原理和工作环境 电压等
  • 需要讨论和交流联系QQ:123011785 1、将PS流转为ES流,输出为一帧ES流 2、简单组合成一帧,一般为私有流(根据mark标志组合) 3、主要针对payloadtype 98,解复用且组成一帧ES流(根据mark标志组合) 4、将不...

    视频监控平台-GB28181-码流转换功能

    需要讨论和交流联系QQ:123011785

    1、将PS流转为ES流,输出为一帧ES流


    2、简单组合成一帧,一般为私有流(根据mark标志组合)

    3、主要针对payloadtype 98,解复用且组成一帧ES流(根据mark标志组合)

    4、将不完整的MPEG4帧组合成一个完整帧

    5、将不完整的MPEG2帧组合成一个完整帧

    6、主要针对无序的ES流组合成一帧ES流

    7、将TS流转为ES流(输出不一定为完整帧)

    8、将ES流转为PS流,输入必须为一帧es流

    9、将音频流转为PS流

    各种码流之间的转换,粘贴一下头文件

    #ifndef __STREAMPARSE_H_
    #define __STREAMPARSE_H_
    
    #ifndef __int64
    #define __int64 long long
    #endif
    
    typedef enum
    {
    	STREAMPARSE_NONE,
    	STREAMPARSE_PSTOES = 96,       //将PS流转为ES流,输出为一帧ES流 
    	STREAMPARSE_MERGEAFRAME = 97,  //简单组合成一帧,一般为私有流(根据mark标志组合)
    	STREAMPARSE_RTPH264TOES = 98,  //主要针对payloadtype 98,解复用且组成一帧ES流(根据mark标志组合)
    	STREAMPARSE_MERGEAMPEG4 = 99,	//将不完整的MPEG4帧组合成一个完整帧
    	STREAMPARSE_MERGEAMPEG2 = 100,	//将不完整的MPEG2帧组合成一个完整帧
    	STREAMPARSE_ESTOES = 110 ,     //主要针对无序的ES流组合成一帧ES流
    	STREAMPARSE_TSTOES = 111,	//将TS流转为ES流(输出不一定为完整帧)
    
    	STREAMPARSE_ESTOPS = 1096,     //将ES流转为PS流,输入必须为一帧es流
    	STREAMPARSE_AUDIOTOPS = 1008,  //将音频流转为PS流
    }StreamParseType_E;
    
    
    typedef struct _StreamParseParamIn
    {
    	unsigned char *pBufIn;          //输入流
    	int nSizeIn;		            //输入流大小
    	StreamParseType_E PayLoadType;	//处理输入流的类型
    	bool bMark;			            //mark标记
    }StreamParseParamIn;
    
    typedef struct _StreamParseParamOut
    {
    	unsigned char* pBufOut;         //输出流
    	int nSizeOut;			        //输出流大小
    	__int64 pts;			        //输出流PTS(显示时间戳)
    	__int64 dts;			        //输出流DTS(解码时间戳)
    	unsigned char streamtype;       //输出流类型 0xE0:视频,0xC0音频 (针对PayLoadType为96的时候用)
    }StreamParseParamOut;
    
    #ifdef __cplusplus
    extern "C"{
    #endif
    
    //初始化    
    int STREAMPARSE_Init();
    
    //打开一个句柄
    int STREAMPARSE_Open();
    
    //关闭句柄
    int STREAMPARSE_Close(int Handle);
    
    //解析或者转换码流
    int STREAMPARSE_Parse(int Handle, StreamParseParamIn* pIn, StreamParseParamOut* pOut);
    
    #ifdef __cplusplus
    }
    #endif
    
    
    #endif
    
    
    
    
    

    用法:

    		long m_StreamParseHandle = STREAMPARSE_Open();
    		StreamParseParamIn In;
    		In.pBufIn = pBuffer;
    		In.nSizeIn = newsize;
    		In.bMark = false;
    		In.PayLoadType = STREAMPARSE_ESTOPS;
    		StreamParseParamOut Out;
    		STREAMPARSE_Parse(pVideoReqSession->m_StreamParseHandle, &In, &Out);
    		if( Out.nSizeOut > 0 )
    		{
    			SendRtpPacket(pVideoReqSession, Out.pBufOut, Out.nSizeOut, 96);
    		}



    展开全文
  • 这是学习笔记的第1953篇文章今天和同事对于高可用方向和数据流转方向的一些事情做了交流,总体来说收获还是蛮多的。其中主要的一点是这两个方向在我们的工作中的重视程度不够...
        

    这是学习笔记的第 1953 篇文章


    今天和同事对于高可用方向和数据流转方向的一些事情做了交流,总体来说收获还是蛮多的。

    其中主要的一点是这两个方向在我们的工作中的重视程度不够,在实际工作的进展,改善空间还是很大的。

    比如对于高可用,基于consul的管理方式,可以对我们已有的MHA管理方式做一种补充,而MHA,consul之间的关系应该是更加的简化,比如我们可以寻求更好的高可用方案,其中一个目标就是对于数据库切换能够达到更高的标准,MHA只是一种方案,如果引入MHA方案,那么对于切换的逻辑我们还需要指定相关的健康检查脚本,更简单清晰的是MGR的方案,健康检查脚本还是需要的,但是逻辑就简化的多了。

    另外我们的高可用有一个通用的问题是对于高可用的监控不足,我们缺少对于高可用组件的监控,导致高可用是相对脆弱的。比如我们使用额consul,但是我们缺少对于consul的监控,缺少对于域名解析的监控。

    对于高可用来说,出彩的就故障转移功能和业务额快速切换,在这一块,我们需要持续补充一种支撑能力,那就是对于高可用的理解,不应该完全局限于数据库层面,我们其实从架构层面开始可以辅助去做一些事情,比如发生了故障,数据库实现了高可用,但是应用的支撑能力很有限,导致业务还是不可用,难以快速恢复,那么对于数据更高要求的情况下,发生了数据库故障,在故障转移的过程中势必会产生数据写入失败的情况,对于一些业务来说,从数据完整性角度来衡量就是不可接受的了。

    对于数据流转来说,改进空间更大,目前为止我们有多个数据库方向的数据流转支持,但是对于异构数据流转,表结构流转,数据生命周期管理,流转任务日志管理这些方面,还是缺少一些完善的功能模块。datax是一个比较轻量级的工具,但是本身还是存在诸多的限制,我们可以在这个基础上,让数据流转的服务更加具有业务价值,那就是可以根据业务特点去定制流转规则,一种相对较好的方式是做到数据落盘的方式来流转,通过队列的方式去管理大批量的流转任务,确切的说,这是一套完整的流转服务,不会局限于单一数据库方向,而是要做到融合。数据的同步策略看起来还是比较简单的,但是实现起来和业务场景结合起来就需要功能的完整性和稳定性,结合任务调度,引入更多更完善的解决方案,不光局限于datax,其实可以打造一个通用流转平台,比如大批量的表结构变更,就可以充分结合逻辑备份恢复工具来做,而对于数据层面的复制,datax是一种轻量的方式,而对于更高要求的数据复制,比如源表有10亿,那么我们就需要更多考虑性能,比如对抽取的数据做分片,基于容量或者数据条数进行拆分,总体来说,具有业务流动性,业务价值自然就会体现出来。

    640?

    展开全文
  • 逆变器直流转交流全桥
  • 淘宝小程序数据流转

    2020-12-13 18:17:40
    目录前言一、淘宝小程序的数据流转二、更新方法1.由父及子(1)官方常见式2.由子及父(反了老子)(1)this.$page.setData3.全局绑定总结 前言 最近做了好几个小程序,感觉自己review之前代码太难受了,数据和目录结构...


    前言

    最近做了好几个小程序,感觉自己review之前代码太难受了,数据和目录结构都比较乱,所以在这篇文章里总结一些用到的方法,方便我自己的同时,也希望能与阅读这段文字的大家共勉。


    一、淘宝小程序的数据流转

    这可以参考一下淘宝的 官方文档。组件生命周期示意图如下:

    组件生命周期

    生命周期函数具体信息见下表:

    生命周期 参数 说明
    onInit 组件创建时触发
    deriveDataFromProps nextProps 组件创建时和更新前触发
    didMount 组件创建完毕时触发
    didUpdate (prevProps,prevData) 组件更新完毕时触发
    didUnmount 组件删除时触发

    淘宝/支付宝小程序的逻辑层的数据更新与vue的处理有些类似,元素渲染时会追踪数据依赖,只有依赖的数据更新时,该组件才会重渲染。这一点还是做得想当不错的,但是对于它的新 props 也只做了浅对比,意思是如果你仅仅简单的用setData更新一个json对象里的value,那别说组件,就当前页面都不会刷新。详细的更新方法我后续再写。

    说回生命周期上,值得注意的是其中的 deriveDataFromProps方法。

    deriveDataFromProps 在组件创建和更新时都会触发。在deriveDataFromProps 中可以:
    访问 this.isthis.$idthis.$page 等属性
    访问 this.datathis.props 等属性
    访问组件 methods 中的自定义属性
    调用 this.setDatathis.$spliceData 修改数据
    可以使用 nextProps 参数获取将要更新的 props 参数

    deriveDataFromProps中的nextProps是最新的props,可以将其传递给初始化或者更新函数处理数据并setData/setState更新页面,而不用在 didUpdate 时setData/setState(这样页面至少会触发两次didUpdate),在一些需要快速处理并刷新页面的地方十分好用(例如画板元素拖动、倒计时等),往往可以节省不少性能,当然也需要在 deriveDataFromProps 做好是否需要更新数据的判断。
    它类似于 react 中的 getDerivedStateFromProps,对于它的介绍可以参阅 这篇文章

    举个栗子!

      // 页面初始化函数
      onInit () {
          this._refreshData();
      },
      
      deriveDataFromProps (nextProps) {
          const {updateTime: lastTime} = this.props;
          const {updateTime: nowTime} = nextProps;
          // 判断是否需要更新 对于一些不容易触发又时常需要更新的组件,我比较喜欢给它们传当前时间戳
          if (lastTime !== nowTime) {
              this._refreshData(nextProps);
          }
      },
    
      // 更新数据函数
      _refreshData (props = this.props) {
          const {id} = props;
          this.setData({id});
      }
    

    二、更新方法

    方法很多,总共分作两大类吧。一个是顺着数据流(最好如此)——由父及子,一个是逆着数据流——由子及父。

    1.由父及子

    (1)官方常见式

    具体可以参考 官方文档,例如:

        // /pages/index/index.js 页面 父级
        Page({
            data: {
                id: 0,
                otherProps: {
                    // ...arga
                }
            }
            plus() {
                this.counter.plus();
            },
            // saveRef 方法的参数 ref 为自定义组件实例,运行时由框架传递给 saveRef
            saveRef(ref) {
                // 存储自定义组件实例,方便以后调用
                this.counter = ref;
            },
            // 一些更新数据的函数
            refreshData () {
                this.setData({
                    id: 2
                })
            }
        });
    
    <!-- /pages/index/index.axml -->
    <my-component ref="saveRef" id="{{id}}" other-props="{{otherProps}}"/>
    <button onTap="plus">+</button>
    
    
        // /components/myComponent/myComponent.js 组件 子级
        didUpdate() {
            console.log(this.props) // 可以看到传入的参数 此处大致是 {'id': 2, otherProps: {}}
        },
        deriveDataFromProps (nextProps) {
          const {id: lastId} = this.props;
          const {id: newId} = nextProps;
          console.log({lastId, newId}) // 此处大致是 {'lastId': 0, 'newId': 2}
          // 一些其他处理
      },
    
    

    2.由子及父(反了老子)

    (1)this.$page.setData

    this.setData类似。受大佬点拨:

    既然this.$page可以拿到page下绑定的函数,那是不是也可以拿到page.data,那是不是可以调用this.$page.setData

    实践证明,确实可以!不需要绑定,页面下的子组件也可以这样使用:

        // ...
        const {counter} = this.$page.data;
        this.$page.setData({
            [`userInfo.${key}`]: value, // 可以更新指定object key下的value
            counter: counter + 1
        });
    

    当然,复杂情况下,这可能会使得数据混乱(毕竟组件们都可以拿到this.$page,都可以更新值)。建议梳理一下数据流向再决定是否使用。

    3.全局绑定

    这个方法比较通用,无论是父组件更新孙组件还是子组件更新父组件都可以使用。
    原理和上文的this.$page.data类似:通过绑定在page上,使得页面内的所有组件都可以调用当前page的函数。

    那首先就需要在page上提供一个绑定的变量。值得注意的是如果未在此处声明,则绑定的时候会报undefined。

    // page/index/index.js
    Page({
        componentHandle: {
            testFunction: null,
             // 如果想在这个函数下其他key绑定函数,则可以这样定义
            keysFunction: {}
        },
        onLoad () {
            // 绑定page下的函数, 这样组件就都可以调用了
            this.componentHandle.testFunction = this.testFunction.bind(this);
        },
        testFunction (newData = {}) {
            this.setData({
                data: newData
            })
        }
    })
    

    然后在对应的地方绑定函数

    // components/something/something.js page下的子组件
    Component({
         // 或者didMount
        onInit() {
         // 绑定组件下的refreshTestComponent,当然,当存在多个同样的组件时要注意用不同key区分
          this.$page.componentHandle.keysFunction[`refreshTestHandle`] = this.refreshTestComponent.bind(this);
        },
        didUnmount() {
            // 组件被卸载的时候别忘了清除它
            const {keysFunction} = this.$page.componentHandle;
            if (keysFunction && keysFunction.refreshTestHandle) {
                delete this.$page.componentHandle.keysFunction.refreshTestHandle;
            }
        },
        methods: {
            refreshTestComponent(newProps = {}) {
                const {data: newData} = newProps;
                this.setData({
                    data: newData
                })
            },
        }
    })
    

    最后就可以在任意地方调用了。

        // 有点长...
        this.$page.componentHandle.keysFunction.refreshTestHandle({...newData});
    

    当然,保险一些可以这样调用:

        const {keysFunction} = this.$page.componentHandle;
        if (keysFunction && keysFunction.refreshTestHandle && typeof refreshTestHandle === 'function') {
            this.$page.componentHandle.keysFunction.refreshTestHandle({...newData});
        }
    

    总结

    方法毕竟有好几种,感谢你们能看到最后的这里。当然,如果可以的话我也想知道大家用的方法、我的不足之处或者我没描述清楚的地方。 我还是很想和大家一起交流的啦!(毕竟我也是在抱大佬大腿学技术…

    展开全文
  • OA,办公自动化软件,使用了Struts2+Spring+Hibernate,因为OA功能比较多,每实现一个大的功能我都将...本次实现了工资管理+审批流转的功能; 我只是学生,这个作为我的学习作品可能不尽完善,欢迎交流,共同学习进步;
  • 线程状态流转

    2020-02-08 10:58:35
    技术交流群: 1. 初始状态 实现Runnable接口和继承Thread可以得到一个线程类,new一个实例出来,线程就进入了初始状态。 2.1. 就绪状态 就绪状态只是说你资格运行,调度程序没有挑选到你,你就永远是就绪状态。 调用...

    技术交流群:

    在这里插入图片描述

    1. 初始状态

    实现Runnable接口和继承Thread可以得到一个线程类,new一个实例出来,线程就进入了初始状态。

    2.1. 就绪状态

    1. 就绪状态只是说你资格运行,调度程序没有挑选到你,你就永远是就绪状态。
    2. 调用线程的start()方法,此线程进入就绪状态。
    3. 当前线程sleep()方法结束,其他线程join()结束,等待用户输入完毕,某个线程拿到对象锁,这些线程也将进入就绪状态。
    4. 当前线程时间片用完了,调用当前线程的yield()方法,当前线程进入就绪状态。
    5. 锁池里的线程拿到对象锁后,进入就绪状态。

    2.2. 运行中状态

    线程调度程序从可运行池中选择一个线程作为当前线程时线程所处的状态。这也是线程进入运行状态的唯一一种方式。

    3. 阻塞状态

    阻塞状态是线程阻塞在进入synchronized关键字修饰的方法或代码块(获取锁)时的状态。

    4. 等待

    处于这种状态的线程不会被分配CPU执行时间,它们要等待被显式地唤醒,否则会处于无限期等待的状态。

    5. 超时等待

    处于这种状态的线程不会被分配CPU执行时间,不过无须无限期等待被其他线程显示地唤醒,在达到一定时间后它们会自动唤醒。

    6. 终止状态

    1. 当线程的run()方法完成时,或者主线程的main()方法完成时,我们就认为它终止了。这个线程对象也许是活的,但是,它已经不是一个单独执行的线程。线程一旦终止了,就不能复生。
    2. 在一个终止的线程上调用start()方法,会抛出java.lang.IllegalThreadStateException异常。

    7.等待队列

    • 调用obj的wait(), notify()方法前,必须获得obj锁,也就是必须写在synchronized(obj) 代码段内。
    • 当调用Object.wait()进入等待队列

    8.状态流转

    线程状态图

    我的博客地址

    展开全文
  • GB28181国标流转成RTSP流

    千次阅读 2019-05-17 17:33:14
    RTP + PS 形式, 但是在很多场景下(比如视频分析), 我们可能需要的是 RTSP 这类格式的流数据, 基于 RTSP 的播放器,分发服务器比较成熟广泛, 这篇文章介绍如何将GB28181国标流转换成 RTSP 流 首先, 下载部署 LiveGBS ...
  • 将GB28181国标流转成RTSP流

    万次阅读 2019-06-17 17:11:17
    GB28181国标协议规定了流的输出格式为 RTP + PS 形式, 但是在很多场景下(比如视频分析), 我们可能需要的是 RTSP这类格式的流数据, 基于 RTSP 的播放器,分发服务器比较成熟广泛, 这篇文章介绍如何将GB28181国标流转换...
  • 通常从界面上传的文件,后台接口都用MultipartFile格式的文件流接收,如果要直接对物理磁盘目录里的文件进行操作,则只能实用File流进行操作,有时由于一些定制化的需求,需要对File流和MultipartFile流转换,笔者...
  • 开博以来一直没什么时间把写博客,这些天设计了工作流的流转模型,这是设计工作流首先需要考虑到的。后续还会继续把一个完整的工作流引擎设计发出来。 自己喜欢研究工作流引擎和智能表单,在这里也可以作为知识的...
  • 本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。 1、esp32接入阿里云物联网平台,实现天猫精灵语音控制; 2、esp8266连...
  • 海康ps流转换h264流

    千次阅读 2018-09-12 20:31:17
    海康7816使用ps流来封装h.264数据,这里使用的解码器无法识别ps流,因此需要将h264数据从ps流里提取出来 对于ps流的规定可以参考13818-1文档   这里从7816里获取到一些数据取样 00 00 01 BA 44 73 26 B8 34 ...
  • 本篇讲述字节流相关话题,包括字节流的读取与写出,字节流转化为字符流 1.明确是否是纯文本:纯文本 ? 字符流: 字节流 2.明确数据来源( 输入流 I )和数据流向( 输出流 O ) 3.I流和O流对接,数据传输 另外:需要字符...
  • goim 文章系列(共5篇): goim 架构与定制 从goim定制, 浅谈 golang 的 interface 解耦合与gRPC goim中的 bilibili/discovery (eureka)基本概念...有个 slack 频道, 不少朋友在交流 goim , 欢迎加入slack #goim [简...
  • 主要集成了公文流转系统、多家手机短信接口的集成、CMS动态路由的实现、以及Hangfire消息队列与任务调度组件的集成等,本章主要对公文流转系统进行总体的介绍,感兴趣的可进一步交流或访问http://pjdemo.yellbu...
  • Arduino蓝牙雷管 用手机引爆您的爆竹 部分: 2000mha 3.7V电池 ...直流转交流继电器模块 hc-05蓝牙模块 arduino pro mini,UNO或arduino nano 您可以使用该图来修复您的硬件组件 GOPR1390_Trim.mp4
  • 本文转自EasyDarwin开源团队成员Kim的博客: ... 前言 ...安防互联网化的需求已经越来越强烈了,传统的安防摄像机都想进行一些互联网化的直播...QQ交流群: 587254841 Copyright © EasyDarwin.org 2012-2017
  • BPELWS标准1.0中文版,为Word文档, 英文版由于阅读较为不便,特上传中文版,方便 各位友人学习交流
  • 本文转自: ... EasyHLS ...EasyHLS是EasyDarwin开源流媒体团队开发的一款HLS打包库,接口非常简单,只需要传入打包的文件名、切片存放的目录、...QQ交流群: 532837588 Copyright © EasyDarwin.org 2012-2016
  • 最近根据工作需要研究jbpm5,现国内jbpm5 资料还较少,为促进交流,整理了一个关于jbpm5 持久化文档,文档中对jbpm5部分源码解析,相关的表操作等 。写的不够完全,先供大虾们参考,提出宝贵意见。欢迎大虾们扔砖、扔...
  • 只要需要调速,人们无法回避使用逆变器驱动一个性能不错的3相电机,控制一个永磁同步电机(PMSM)运转更离不开逆变器,这个复杂的功率电子系统的是一个直流转交流的3相逆变器,其中微控制器起到管理作用,以全数字方式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,902
精华内容 3,960
关键字:

直流转交流