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