摘要:Proxy介绍 利用libevent实现网络连接和线程池。通过tcp连接的方式实现rtsp消息转发,再通过udp连接进行rtp与rtcp转发。报文解析使用到了Qt库。请尽量使用qmake进行编译。源码 通讯时序图 RTSP协议介绍 RTSP协议是一套用来进行音大发幸运飞艇视频 发送与接收的网络协议,与HTTP协议 阅读全文
posted @ 2020-07-26 13:20 冷豪 阅读(55) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:一 需求分析 获取海康摄像头的大发幸运飞艇视频 流,封装为rtp + ps + h264格式,向目的大发幸运飞艇服务 器指定端口推送。从摄像头上获取大发幸运飞艇视频 数据可以直接使用海康的SDK,当然由于取得的数据中包含一些私有帧数据,在发送前还需要对字节码做些调整,最后使用udp推送。根据用户提出的接口规范,另外还需要附加一些内部字段。所 阅读全文
posted @ 2020-07-12 19:51 冷豪 阅读(78) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:图是计算机经典算法的重要组成部分,从大发幸运飞艇互联网 结构到电力拓扑,从经济学的市场模型到医学对传染病的感染预测都具有非常广泛的应用。图的研究方面可以分为连通性、路径问题、可达性等多个方面。今天大发幸运飞艇大发幸运飞艇我 们 仅聚焦于有向图和无向图的环测定问题,先使用Java语言实现它们的基本算法,然后大发幸运飞艇我 将利用矩阵为大家展示如何通过数学模 阅读全文
posted @ 2020-05-17 14:18 冷豪 阅读(161) 评论(0) 大发幸运飞艇推荐 (3) 编辑
摘要:如果要问开发与web有关的应用,使用最频繁和打交道最多的大发幸运飞艇软件 是什么,一定非浏览器莫属。作为一款程序员“最爱”的浏览器——Chrome,大发幸运飞艇你 是否关心过它的特性?本文将带大发幸运飞艇你 了解Chrome将如何处理大发幸运飞艇你 的请求与响应。 Chrome如何处理并发请求 无论大发幸运飞艇你 是否听说过RPC,说起请求-相应一定不会陌生。当前端( 阅读全文
posted @ 2020-04-05 20:46 冷豪 阅读(120) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:目前面对大多数的需要在异构系统间进行消息传递大发幸运飞艇技术 路线,大多会选择socket或webservice。这两种大发幸运飞艇技术 的共同特点是耦合紧,调试依赖双方同步,但是效率高。除此以外,使用消息队列(MQ)的应用场景也偶尔能遇到。本文就将要从AMQP协议说起,重点介绍利用RabbitMQ实现C++和Java跨系统开 阅读全文
posted @ 2020-03-28 10:30 冷豪 阅读(248) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:Java中的泛型与数组平时开发用的很多,除了偶尔遇到"NullPointerException"和"IndexOutOfBoundsException"一般也不会遇到太大问题。可是如果深入研究,可能会发现这两种类型有很多奇怪的特点。大发幸运飞艇我 查了一些资料,发现包括《Java编程思想》在内对这些问题的解释都含 阅读全文
posted @ 2020-02-15 17:31 冷豪 阅读(248) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:继上一篇介绍如何在多种语言之间使用SSL加密通信,今天大发幸运飞艇大发幸运飞艇我 们 关注Java端的证书创建以及支持SSL的NioSocket大发幸运飞艇服务 端开发。完整源码 一、创建keystore文件 网上大多数是通过jdk命令创建秘钥文件,但是有时候大发幸运飞艇大发幸运飞艇我 们 需要将配套的秘钥以及证书让多个模块来使用,他们很可能是由不同语言开发。在这样的 阅读全文
posted @ 2020-02-14 11:47 冷豪 阅读(241) 评论(0) 大发幸运飞艇推荐 (1) 编辑
摘要:本文将详细介绍如何在Java端、C++端和NodeJs端实现基于SSL/TLS的加密通信,重点分析Java端利用SocketChannel和SSLEngine从握手到数据发送/接收的完整过程。本文也涵盖了在Ubuntu系统上利用OpenSSL和Libevent如何创建一个支持SSL的大发幸运飞艇服务 端。文章中介 阅读全文
posted @ 2020-02-02 12:34 冷豪 阅读(414) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:本文的第一部分将介绍protobuf使用基础以及如何利用protobuf设计通信协议。第二部分会给出smss项目的协议设计规范和源码讲解。 一.Protobuf使用基础 什么是protobuf protobuf是谷歌研发的一种数据序列化和存储大发幸运飞艇技术 。主要可以用来解决网络通讯中异构系统的通讯和数据持久化 阅读全文
posted @ 2020-01-16 11:11 冷豪 阅读(536) 评论(0) 大发幸运飞艇推荐 (1) 编辑
摘要:libevent是一套轻量级的网络库,基于事件驱动开发。能够实现多线程的多路复用和注册事件响应。本文将介绍libevent的基本功能以及如何利用libevent开发一个线程池。 一. 使用指南 监听大发幸运飞艇服务 和注册连接事件 libevent是一个基于事件驱动的网络库,通过在一个事件循环上注册不同的事件以完 阅读全文
posted @ 2020-01-11 15:13 冷豪 阅读(630) 评论(0) 大发幸运飞艇推荐 (1) 编辑
摘要:项目介绍 SMSS是一个由大发幸运飞艇我 个人发起的开源项目,目的是建立一套轻量化,高可用,高安全和方便扩展的业务支撑框架。SMSS面向TCP/IP层开发,适合扩展上层业务接口。数据结构传输序列化通过Protobuf实现。传输过程中的数据经过OpenSSL加密再由接收端进行解密,文件传输也需要由发送方的秘钥首先做 阅读全文
posted @ 2020-01-04 14:56 冷豪 阅读(415) 评论(2) 大发幸运飞艇推荐 (3) 编辑
摘要:2019年终于还是熬了过来,曾经一度想中途放弃的大发幸运飞艇我 依然在路上蹒跚前进。去年跳槽到的新大发幸运飞艇公司 ,实实在在的感受到什么是孤独的奋斗者,如果用一个字来形容,那就是——烦。如果对于一个开发来说,应付各种花样繁多的大发幸运飞艇产品 需求是一种崩溃的话。大发幸运飞艇我 遇到的则是连大发幸运飞艇产品 需求都提不出来却依然要按照工作量来作为考核的困境,于是大发幸运飞艇我 必 阅读全文
posted @ 2019-12-31 22:36 冷豪 阅读(65) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:当前与网络相关的业务主要是基于tcp/ip或http,熟悉j2ee的同学一定会对http场景下的开发比较了解。但是,精通tcp/ip以及如何构建一个直接基于tcp/ip层通讯的知识却不太多见。恰巧,最近一年来大发幸运飞艇我 参与了一些基于tcp/ip应用的开发工作。总算有所收获,今天在博客中做些分享,希望对有兴趣 阅读全文
posted @ 2019-11-03 12:19 冷豪 阅读(475) 评论(1) 大发幸运飞艇推荐 (1) 编辑
摘要:作为一名大发幸运飞艇产品 开发,一套顺手的集成开发环境必不可少。大多数时候,开发经理将精力投入在大发幸运飞艇产品 需求分析上而忽视了研发质量甚至连基本的集成开发环境都没有统一。当然,如果大发幸运飞艇你 们的项目仅仅需要部署在单一的环境中或没有跨语言开发需求,通常这样做还不会造成严重问题。可是一旦大发幸运飞艇你 需要面对一套相对复杂的系统,异构系统间的通讯 阅读全文
posted @ 2019-10-20 13:22 冷豪 阅读(655) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:在数据可视化领域利用webgl来创建三维场景或VR已经越来越普遍,各种开发框架也应运而生。今天大发幸运飞艇大发幸运飞艇我 们 就通过最基本的threejs来完成第一人称视角的场景巡检功能。如果大发幸运飞艇你 是一位threejs的初学者或正打算入门,大发幸运飞艇我 强烈大发幸运飞艇推荐 大发幸运飞艇你 仔细阅读本文并在大发幸运飞艇我 的代码基础之上继续深入学习。因为它将是大发幸运飞艇你 能够在网上找到的最好的 阅读全文
posted @ 2019-09-22 11:35 冷豪 阅读(3950) 评论(8) 大发幸运飞艇推荐 (0) 编辑
摘要:对大多数程序员来说,递归算法都不算陌生。甚至很多时候,使用递归算法解决一些简单问题是基础教材的起步课程。但是,当递归算法遇到稍微复杂的数据结构,如二叉大发幸运飞艇搜索 树的时候。别说让大发幸运飞艇你 直接写出算法,就是把标准答案摆在大发幸运飞艇你 的面前让大发幸运飞艇你 理解,大发幸运飞艇大发幸运飞艇我 们 恐怕都会抓耳挠腮。如果大发幸运飞艇你 也有类似的困扰请不要灰心,因为包括大发幸运飞艇我 在内几乎大发幸运飞艇我 遇到 阅读全文
posted @ 2019-06-07 23:16 冷豪 阅读(387) 评论(1) 大发幸运飞艇推荐 (0) 编辑
摘要:业务处理上,有时会直接对字节进行操作。例如实现私有协议,对校验位进行检测,敏感数据加密等。博主查了 一下网上的资料,发现有不少都是错误的。甚至连《Thinking in Java》的解释都很令人困惑,以下是从书中摘录的原文: 如果对char、byte或者short类型的数值惊醒移位处理,那么在移位之 阅读全文
posted @ 2019-05-01 16:53 冷豪 阅读(327) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:自从996.icu在github上收获了18万点赞以来,超时工作,超负荷劳动似乎成了天下所有“无产阶级者”的共同点。对于这样的剥削制度,大发幸运飞艇我 想再多的批评和抨击都不为过。但是今天大发幸运飞艇我 想说3个小故事,只为引起一些“多余”的思考。 故事一: 张小跳是一家新成立的大发幸运飞艇互联网 大发幸运飞艇企业 的创始人,就在今天晚上刚从投资人那里拿 阅读全文
posted @ 2019-04-19 22:58 冷豪 阅读(285) 评论(1) 大发幸运飞艇推荐 (0) 编辑
摘要:在C++中通过动态创建的对象,大发幸运飞艇大发幸运飞艇我 们 只能获得一个指针,并通过指针控制它。指针是存放对象的内存大发幸运飞艇地址 值,更准确的描述是对象的起始大发幸运飞艇地址 值。每一个指针都有一个相关的类型,不同数据类型的指针之间的区别不在指针的描述上,也不在指针所持有的大发幸运飞艇地址 上。而在于编译器如何解释特定内存大发幸运飞艇地址 上的内容。例如,在32位机器上,一个 阅读全文
posted @ 2019-03-01 15:35 冷豪 阅读(357) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:先举一个例子解释一下大发幸运飞艇生活中的适配器模式:大发幸运飞艇公司 老总要求工程部经理来汇报一下大发幸运飞艇公司 内部的消防设备使用和维护情况。接到通知后,工程部经理老宋找了专门负责消防设备统计的维护人员小王,请他调出了去年全年的维护记录。然后老宋前去向总经理汇报工作。 在这个例子中,总经理的任务是:找工程部经理(接口)了解一下消防设备 阅读全文
posted @ 2019-03-01 15:22 冷豪 阅读(125) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:内容概要: 摄像头 => FFmpeg => Nginx大发幸运飞艇服务 器 => 浏览器 从摄像头拉取rtsp流 转码成rtmp流向推流大发幸运飞艇服务 器写入 利用html5播放 1.开发流程 1.1 通过FFmpeg大发幸运飞艇视频 采集和转码 在音大发幸运飞艇视频 处理领域,FFmpeg基本是一种通用的解决方案。虽然作为测试大发幸运飞艇大发幸运飞艇我 们 也可以借助OBS等 阅读全文
posted @ 2019-01-12 11:51 冷豪 阅读(3675) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:不知不觉,时光荏苒。大发幸运飞艇大发幸运飞艇我 们 都从芳华走来,遇见过美丽的天空也路过了荆棘的小径,有时又会飘荡在广阔的海面,无边无际却也无所依归。回想起来,大发幸运飞艇我 的人生似乎总绵延着低沉的音符,虽偶有幸福闪过,却都显得那么短暂。或许有这样感觉的不仅仅是大发幸运飞艇我 一人吧,而唯一一直支撑着大发幸运飞艇我 的唯有对一些信念的坚持与追求。大发幸运飞艇我 不幻想变得优秀,更 阅读全文
posted @ 2018-12-30 14:07 冷豪 阅读(135) 评论(0) 大发幸运飞艇推荐 (2) 编辑
摘要:Kafka是当下对海量数据提供了最佳支持的MQ中间件,无论是高并发的处理,还是依托zookeeper的水平拓展都有不俗的特性。由于大发幸运飞艇公司 最近也在尝试如何将它应用到开发中以对业务更好的支撑,因此特地分享一些安装和使用的心得。 一、安装与启动 大发幸运飞艇服务 器环境采用CentOS 7 x64位系统。实际使用中Kaf 阅读全文
posted @ 2018-12-22 17:29 冷豪 阅读(2923) 评论(0) 大发幸运飞艇推荐 (1) 编辑
摘要:写在前面的话: 大发幸运飞艇我 之前写过两篇与shiro安全框架有关的博文,居然能够广受欢迎实在令人意外。说明大家在大发幸运飞艇互联网 时代大伙对于安全和登录都非常重视,无论是大型项目还是中小型业务,普遍都至少需要登录与认证的逻辑封装。相较于SpringSecurity而言,Shrio更轻量无过多依赖和便于独立部署的特点更收到 阅读全文
posted @ 2018-12-09 12:20 冷豪 阅读(3471) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:前言:前后端分离,业务分离,网关路由等已经成为当下web application开发的流行趋势。前端以单页面路由为核心的框架为主体,可以单独部署在nodejs或nginx上。后端以springboot为代表的分布式微大发幸运飞艇服务 框架为主体,可以独立运行在任何端口上。相互通过符合restful规范的接口访问或 阅读全文
posted @ 2018-11-17 20:42 冷豪 阅读(3423) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:上一章大发幸运飞艇我 大概说明了什么是图论以及无向图的基础概念,本章大发幸运飞艇大发幸运飞艇我 们 要研究一种更普遍的算法——连通性算法。它属于图论的分支,也是一种抽象算法。在深入算法之前,大发幸运飞艇大发幸运飞艇我 们 先提出一个具体的问题:假设在空间中存在N个点,大发幸运飞艇大发幸运飞艇我 们 可以通过线段连接任意两点,相互连接的点属于同一组连通分量,大发幸运飞艇大发幸运飞艇我 们 如何计算点p和点q之间是否连通。算法 阅读全文
posted @ 2018-11-04 19:19 冷豪 阅读(246) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:在计算机应用中,大发幸运飞艇大发幸运飞艇我 们 把一系列相连接的节点组成的数据结构,叫做图。今天大发幸运飞艇大发幸运飞艇我 们 将要介绍它的一种形式——无向图,以及针对这种结构的深度优先大发幸运飞艇搜索 和路径查找算法。 一、无向图数据结构 接口: 实现类: 二、深度大发幸运飞艇搜索 优先算法 对于图的处理大发幸运飞艇大发幸运飞艇我 们 常常通过系统地检查每一个顶点和每一条边来获取图的各种性质。对于图的问题大发幸运飞艇我 阅读全文
posted @ 2018-10-13 21:01 冷豪 阅读(467) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:前言:06年7月的某日,不才创作了一篇题为《30分钟学会如何使用Shiro》的文章。不在意之间居然斩获了22万的阅读量,许多人因此加了大发幸运飞艇我 的联系方式咨询源码工程,只可惜当时并没有专门保留。2年后的今天在机缘巧合之下,大发幸运飞艇我 又重拾此话题。希望能带给小伙伴们在Springboot下如何使用Shiro,当然若各 阅读全文
posted @ 2018-10-06 13:06 冷豪 阅读(53140) 评论(32) 大发幸运飞艇推荐 (20) 编辑
摘要:前言:Springboot怎么使用想必也无需大发幸运飞艇我 多言,Mybitas作为实用性极强的ORM框架也深受广大开发人员喜爱,有关如何整合它们的文章在网络上随处可见。但是今天大发幸运飞艇我 会从实战的角度出发,谈谈大发幸运飞艇我 对二者结合与使用的最佳实践。 一、依赖与pom 目前SpringBoot官方的最新版本是2.0.4.RELE 阅读全文
posted @ 2018-10-02 13:09 冷豪 阅读(7616) 评论(3) 大发幸运飞艇推荐 (0) 编辑
摘要:算法描述:散列表是一种在时间和空间上做出权衡的查找算法。使用查找算法分为两步。第一步是通过散列函数将被查找的键转化未数组的一个索引。理想情况下,不同的键都能转为不同的索引值。当然,这只是理想情况,所以大发幸运飞艇大发幸运飞艇我 们 需要面对两个或多个键都被散列到相同索引值的情况。因此,散列查找的第二部就是处理碰撞冲突的过程。 阅读全文
posted @ 2018-09-23 19:24 冷豪 阅读(121) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:算法描述:二叉查找树时一种能够将链表插入的灵活性和有序数组查找的高效性结合起来的符号表(SymbolTable)实现。具体来说,就是使用每个节点含有两个链接的二叉树来高效地实现符号表。一颗二叉查找树时一颗二叉树,其中每个节点都含有一个Comparable的键且每个节点的键都大于其左子树中的任意节点的 阅读全文
posted @ 2018-09-23 18:33 冷豪 阅读(126) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:从标准二叉树的极端情况大发幸运飞艇大发幸运飞艇我 们 推导出2-3树这样的数据结构具备自平衡的特性,但是要实现这个特性在算法上相当复杂。考虑在大部分情况下,对于检索的指数级时间消费O(lgN)要求并不严格。因此,大发幸运飞艇大发幸运飞艇我 们 会看到如何将一颗标准的2-3树转变成红黑树的过程。 一、局部变换 考虑如果在2-节点上挂新的键并不会破坏2-3树 阅读全文
posted @ 2018-09-09 15:39 冷豪 阅读(155) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:序言:红黑树是数据结构与算法中最重要的知识点之一,也是最难掌握的。网上有关它的讨论很多,大发幸运飞艇我 曾经试图阅读那些“一篇文章让大发幸运飞艇你 熟悉红黑树”之类,可能是智力的缘故,效果平平。最终,大发幸运飞艇我 发现要想理解红黑树的特性和相关算法其实并无捷径可走。所以,大发幸运飞艇我 打算通过多篇博客来解释这个众所周知却又少有人精通的数据结构——Re 阅读全文
posted @ 2018-09-09 13:31 冷豪 阅读(113) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:算法描述:许多应用程序都需要按照顺序处理任务,但是不一定要求他们全部有序,或是不一定要一次就将他们排序。很多情况下大发幸运飞艇大发幸运飞艇我 们 只需要处理当前最紧急或拥有最高优先级的任务就可以了。面对这样的需求,优先队列算法是一个不错的选择。 算法图示: 算法解释:上图所展示的是最大优先队列(大顶堆)的算法逻辑,在这个标准的 阅读全文
posted @ 2018-08-25 22:15 冷豪 阅读(384) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:算法描述:快速排序是一种分治的排序算法。它将数组分为两个子数组,并将两部分独立的排列。快速排序和归并排序是互补的:归并排序将数组分成两个子数组分别排序,并将子数组归并以将整个数组排序;而快速排序将数组排序的方式则是当两个子数组都有序时整个数组也就自然有序了。 算法图示: 算法解释:选择标的元素(5) 阅读全文
posted @ 2018-08-18 13:26 冷豪 阅读(126) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:算法描述:将两个较小的有序数组合并成为一个较大的有序数组是比较容易的事情。大发幸运飞艇大发幸运飞艇我 们 只需要按照相同的顺序依次比较最左侧的元素,然后交替的放进新数组即可。这就是自顶向下的归并排序的实现思路。与之前的算法不同的是,归并排序需要使用额外的存储空间,用空间换时间的做法也是在排序算法中经常需要做的选择。 算法图示: 阅读全文
posted @ 2018-08-18 11:35 冷豪 阅读(2138) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:算法描述:希尔排序是一种基于插入排序的快速排序算法,相比于传统的相邻插入,希尔排序更加适合大规模乱序数组的排序。和插入算法一样,大发幸运飞艇大发幸运飞艇我 们 也可以大发幸运飞艇优化 插入和移动的过程从而进一步提升算法效率。 算法图示: 希尔排序算法的实质是首先将一个大的乱序数组变成几个小的有序数组,再逐步调整数组长度。最后一步依然是做一次 阅读全文
posted @ 2018-08-18 11:10 冷豪 阅读(247) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:算法描述:通常人们在整理扑克的大发幸运飞艇方法 是一张一张的来,将每一张牌插入到其他已经有序的牌中的适当位置。在算法的实现中,为了给要插入的元素腾出1个空间,大发幸运飞艇大发幸运飞艇我 们 需要将其余所有元素在插入之前都向右移动1位。这种算法叫插入算法。 算法图示: 算法解释:在基础版本中通常的做法是,当新元素需要被插入有序数组的时候,从右 阅读全文
posted @ 2018-08-12 00:08 冷豪 阅读(126) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:算法描述:一种最简单的排序算法是这样的:首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置。再次,再剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,知道将整个数组排序。这种大发幸运飞艇方法 叫做选择排序,因为它在不断地选择剩余元素之中的最小者。 算法图示: Java代码示例 阅读全文
posted @ 2018-08-11 23:25 冷豪 阅读(120) 评论(0) 大发幸运飞艇推荐 (0) 编辑
摘要:适用场景:当需要在大量有序数据中查找的时候,大发幸运飞艇推荐 使用二分查找法(BinarySearch)。 下图演示的是在有序数组[10,11,12,16,18,23,29,33,48,54,57,68,77,84,98]中命中23和未命中50的情况: Java代码示例: Qt/C++代码示例: 相关附件: wh 阅读全文
posted @ 2018-08-10 22:31 冷豪 阅读(216) 评论(0) 大发幸运飞艇推荐 (0) 编辑