摘要:目前面對大多數的需要在異構系統間進行消息傳遞技術路線,大多會選擇socket或webservice。這兩種技術的共同特點是耦合緊,調試依賴雙方同步,但是效率高。除此以外,使用消息隊列(MQ)的應用場景也偶爾能遇到。本文就將要從AMQP協議說起,重點介紹利用RabbitMQ實現C++和Java跨系統開 閱讀全文
posted @ 2020-03-28 10:30 冷豪 閱讀 (5) 評論 (0) 編輯
摘要:Java中的泛型與數組平時開發用的很多,除了偶爾遇到"NullPointerException"和"IndexOutOfBoundsException"一般也不會遇到太大問題??墒侨绻钊胙芯?,可能會發現這兩種類型有很多奇怪的特點。我查了一些資料,發現包括《Java編程思想》在內對這些問題的解釋都含 閱讀全文
posted @ 2020-02-15 17:31 冷豪 閱讀 (43) 評論 (0) 編輯
摘要:繼上一篇介紹如何在多種語言之間使用SSL加密通信,今天我們關注Java端的證書創建以及支持SSL的NioSocket服務端開發。完整源碼 一、創建keystore文件 網上大多數是通過jdk命令創建秘鑰文件,但是有時候我們需要將配套的秘鑰以及證書讓多個模塊來使用,他們很可能是由不同語言開發。在這樣的 閱讀全文
posted @ 2020-02-14 11:47 冷豪 閱讀 (127) 評論 (0) 編輯
摘要:本文將詳細介紹如何在Java端、C++端和NodeJs端實現基于SSL/TLS的加密通信,重點分析Java端利用SocketChannel和SSLEngine從握手到數據發送/接收的完整過程。本文也涵蓋了在Ubuntu系統上利用OpenSSL和Libevent如何創建一個支持SSL的服務端。文章中介 閱讀全文
posted @ 2020-02-02 12:34 冷豪 閱讀 (172) 評論 (0) 編輯
摘要:本文的第一部分將介紹protobuf使用基礎以及如何利用protobuf設計通信協議。第二部分會給出smss項目的協議設計規范和源碼講解。 一.Protobuf使用基礎 什么是protobuf protobuf是谷歌研發的一種數據序列化和存儲技術。主要可以用來解決網絡通訊中異構系統的通訊和數據持久化 閱讀全文
posted @ 2020-01-16 11:11 冷豪 閱讀 (270) 評論 (0) 編輯
摘要:libevent是一套輕量級的網絡庫,基于事件驅動開發。能夠實現多線程的多路復用和注冊事件響應。本文將介紹libevent的基本功能以及如何利用libevent開發一個線程池。 一. 使用指南 監聽服務和注冊連接事件 libevent是一個基于事件驅動的網絡庫,通過在一個事件循環上注冊不同的事件以完 閱讀全文
posted @ 2020-01-11 15:13 冷豪 閱讀 (323) 評論 (0) 編輯
摘要:項目介紹 SMSS是一個由我個人發起的開源項目,目的是建立一套輕量化,高可用,高安全和方便擴展的業務支撐框架。SMSS面向TCP/IP層開發,適合擴展上層業務接口。數據結構傳輸序列化通過Protobuf實現。傳輸過程中的數據經過OpenSSL加密再由接收端進行解密,文件傳輸也需要由發送方的秘鑰首先做 閱讀全文
posted @ 2020-01-04 14:56 冷豪 閱讀 (193) 評論 (2) 編輯
摘要:2019年終于還是熬了過來,曾經一度想中途放棄的我依然在路上蹣跚前進。去年跳槽到的新公司,實實在在的感受到什么是孤獨的奮斗者,如果用一個字來形容,那就是——煩。如果對于一個開發來說,應付各種花樣繁多的產品需求是一種崩潰的話。我遇到的則是連產品需求都提不出來卻依然要按照工作量來作為考核的困境,于是我必 閱讀全文
posted @ 2019-12-31 22:36 冷豪 閱讀 (21) 評論 (0) 編輯
摘要:當前與網絡相關的業務主要是基于tcp/ip或http,熟悉j2ee的同學一定會對http場景下的開發比較了解。但是,精通tcp/ip以及如何構建一個直接基于tcp/ip層通訊的知識卻不太多見。恰巧,最近一年來我參與了一些基于tcp/ip應用的開發工作??偹阌兴斋@,今天在博客中做些分享,希望對有興趣 閱讀全文
posted @ 2019-11-03 12:19 冷豪 閱讀 (335) 評論 (1) 編輯
摘要:作為一名產品開發,一套順手的集成開發環境必不可少。大多數時候,開發經理將精力投入在產品需求分析上而忽視了研發質量甚至連基本的集成開發環境都沒有統一。當然,如果你們的項目僅僅需要部署在單一的環境中或沒有跨語言開發需求,通常這樣做還不會造成嚴重問題??墒且坏┠阈枰鎸σ惶紫鄬碗s的系統,異構系統間的通訊 閱讀全文
posted @ 2019-10-20 13:22 冷豪 閱讀 (242) 評論 (0) 編輯
摘要:在數據可視化領域利用webgl來創建三維場景或VR已經越來越普遍,各種開發框架也應運而生。今天我們就通過最基本的threejs來完成第一人稱視角的場景巡檢功能。如果你是一位threejs的初學者或正打算入門,我強烈推薦你仔細閱讀本文并在我的代碼基礎之上繼續深入學習。因為它將是你能夠在網上找到的最好的 閱讀全文
posted @ 2019-09-22 11:35 冷豪 閱讀 (1647) 評論 (4) 編輯
摘要:對大多數程序員來說,遞歸算法都不算陌生。甚至很多時候,使用遞歸算法解決一些簡單問題是基礎教材的起步課程。但是,當遞歸算法遇到稍微復雜的數據結構,如二叉搜索樹的時候。別說讓你直接寫出算法,就是把標準答案擺在你的面前讓你理解,我們恐怕都會抓耳撓腮。如果你也有類似的困擾請不要灰心,因為包括我在內幾乎我遇到 閱讀全文
posted @ 2019-06-07 23:16 冷豪 閱讀 (276) 評論 (1) 編輯
摘要:業務處理上,有時會直接對字節進行操作。例如實現私有協議,對校驗位進行檢測,敏感數據加密等。博主查了 一下網上的資料,發現有不少都是錯誤的。甚至連《Thinking in Java》的解釋都很令人困惑,以下是從書中摘錄的原文: 如果對char、byte或者short類型的數值驚醒移位處理,那么在移位之 閱讀全文
posted @ 2019-05-01 16:53 冷豪 閱讀 (210) 評論 (0) 編輯
摘要:自從996.icu在github上收獲了18萬點贊以來,超時工作,超負荷勞動似乎成了天下所有“無產階級者”的共同點。對于這樣的剝削制度,我想再多的批評和抨擊都不為過。但是今天我想說3個小故事,只為引起一些“多余”的思考。 故事一: 張小跳是一家新成立的互聯網企業的創始人,就在今天晚上剛從投資人那里拿 閱讀全文
posted @ 2019-04-19 22:58 冷豪 閱讀 (226) 評論 (1) 編輯
摘要:在C++中通過動態創建的對象,我們只能獲得一個指針,并通過指針控制它。指針是存放對象的內存地址值,更準確的描述是對象的起始地址值。每一個指針都有一個相關的類型,不同數據類型的指針之間的區別不在指針的描述上,也不在指針所持有的地址上。而在于編譯器如何解釋特定內存地址上的內容。例如,在32位機器上,一個 閱讀全文
posted @ 2019-03-01 15:35 冷豪 閱讀 (216) 評論 (0) 編輯
摘要:先舉一個例子解釋一下生活中的適配器模式:公司老總要求工程部經理來匯報一下公司內部的消防設備使用和維護情況。接到通知后,工程部經理老宋找了專門負責消防設備統計的維護人員小王,請他調出了去年全年的維護記錄。然后老宋前去向總經理匯報工作。 在這個例子中,總經理的任務是:找工程部經理(接口)了解一下消防設備 閱讀全文
posted @ 2019-03-01 15:22 冷豪 閱讀 (84) 評論 (0) 編輯
摘要:內容概要: 攝像頭 => FFmpeg => Nginx服務器 => 瀏覽器 從攝像頭拉取rtsp流 轉碼成rtmp流向推流服務器寫入 利用html5播放 1.開發流程 1.1 通過FFmpeg視頻采集和轉碼 在音視頻處理領域,FFmpeg基本是一種通用的解決方案。雖然作為測試我們也可以借助OBS等 閱讀全文
posted @ 2019-01-12 11:51 冷豪 閱讀 (2986) 評論 (0) 編輯
摘要:不知不覺,時光荏苒。我們都從芳華走來,遇見過美麗的天空也路過了荊棘的小徑,有時又會飄蕩在廣闊的海面,無邊無際卻也無所依歸?;叵肫饋?,我的人生似乎總綿延著低沉的音符,雖偶有幸福閃過,卻都顯得那么短暫?;蛟S有這樣感覺的不僅僅是我一人吧,而唯一一直支撐著我的唯有對一些信念的堅持與追求。我不幻想變得優秀,更 閱讀全文
posted @ 2018-12-30 14:07 冷豪 閱讀 (90) 評論 (0) 編輯
摘要:Kafka是當下對海量數據提供了最佳支持的MQ中間件,無論是高并發的處理,還是依托zookeeper的水平拓展都有不俗的特性。由于公司最近也在嘗試如何將它應用到開發中以對業務更好的支撐,因此特地分享一些安裝和使用的心得。 一、安裝與啟動 服務器環境采用CentOS 7 x64位系統。實際使用中Kaf 閱讀全文
posted @ 2018-12-22 17:29 冷豪 閱讀 (1660) 評論 (0) 編輯
摘要:寫在前面的話: 我之前寫過兩篇與shiro安全框架有關的博文,居然能夠廣受歡迎實在令人意外。說明大家在互聯網時代大伙對于安全和登錄都非常重視,無論是大型項目還是中小型業務,普遍都至少需要登錄與認證的邏輯封裝。相較于SpringSecurity而言,Shrio更輕量無過多依賴和便于獨立部署的特點更收到 閱讀全文
posted @ 2018-12-09 12:20 冷豪 閱讀 (2863) 評論 (0) 編輯
摘要:前言:前后端分離,業務分離,網關路由等已經成為當下web application開發的流行趨勢。前端以單頁面路由為核心的框架為主體,可以單獨部署在nodejs或nginx上。后端以springboot為代表的分布式微服務框架為主體,可以獨立運行在任何端口上。相互通過符合restful規范的接口訪問或 閱讀全文
posted @ 2018-11-17 20:42 冷豪 閱讀 (3123) 評論 (0) 編輯
摘要:上一章我大概說明了什么是圖論以及無向圖的基礎概念,本章我們要研究一種更普遍的算法——連通性算法。它屬于圖論的分支,也是一種抽象算法。在深入算法之前,我們先提出一個具體的問題:假設在空間中存在N個點,我們可以通過線段連接任意兩點,相互連接的點屬于同一組連通分量,我們如何計算點p和點q之間是否連通。算法 閱讀全文
posted @ 2018-11-04 19:19 冷豪 閱讀 (142) 評論 (0) 編輯
摘要:在計算機應用中,我們把一系列相連接的節點組成的數據結構,叫做圖。今天我們將要介紹它的一種形式——無向圖,以及針對這種結構的深度優先搜索和路徑查找算法。 一、無向圖數據結構 接口: 實現類: 二、深度搜索優先算法 對于圖的處理我們常常通過系統地檢查每一個頂點和每一條邊來獲取圖的各種性質。對于圖的問題我 閱讀全文
posted @ 2018-10-13 21:01 冷豪 閱讀 (371) 評論 (0) 編輯
摘要:前言:06年7月的某日,不才創作了一篇題為《30分鐘學會如何使用Shiro》的文章。不在意之間居然斬獲了22萬的閱讀量,許多人因此加了我的聯系方式咨詢源碼工程,只可惜當時并沒有專門保留。2年后的今天在機緣巧合之下,我又重拾此話題。希望能帶給小伙伴們在Springboot下如何使用Shiro,當然若各 閱讀全文
posted @ 2018-10-06 13:06 冷豪 閱讀 (37148) 評論 (30) 編輯
摘要:前言:Springboot怎么使用想必也無需我多言,Mybitas作為實用性極強的ORM框架也深受廣大開發人員喜愛,有關如何整合它們的文章在網絡上隨處可見。但是今天我會從實戰的角度出發,談談我對二者結合與使用的最佳實踐。 一、依賴與pom 目前SpringBoot官方的最新版本是2.0.4.RELE 閱讀全文
posted @ 2018-10-02 13:09 冷豪 閱讀 (4922) 評論 (3) 編輯
摘要:算法描述:散列表是一種在時間和空間上做出權衡的查找算法。使用查找算法分為兩步。第一步是通過散列函數將被查找的鍵轉化未數組的一個索引。理想情況下,不同的鍵都能轉為不同的索引值。當然,這只是理想情況,所以我們需要面對兩個或多個鍵都被散列到相同索引值的情況。因此,散列查找的第二部就是處理碰撞沖突的過程。 閱讀全文
posted @ 2018-09-23 19:24 冷豪 閱讀 (74) 評論 (0) 編輯
摘要:算法描述:二叉查找樹時一種能夠將鏈表插入的靈活性和有序數組查找的高效性結合起來的符號表(SymbolTable)實現。具體來說,就是使用每個節點含有兩個鏈接的二叉樹來高效地實現符號表。一顆二叉查找樹時一顆二叉樹,其中每個節點都含有一個Comparable的鍵且每個節點的鍵都大于其左子樹中的任意節點的 閱讀全文
posted @ 2018-09-23 18:33 冷豪 閱讀 (79) 評論 (0) 編輯
摘要:從標準二叉樹的極端情況我們推導出2-3樹這樣的數據結構具備自平衡的特性,但是要實現這個特性在算法上相當復雜??紤]在大部分情況下,對于檢索的指數級時間消費O(lgN)要求并不嚴格。因此,我們會看到如何將一顆標準的2-3樹轉變成紅黑樹的過程。 一、局部變換 考慮如果在2-節點上掛新的鍵并不會破壞2-3樹 閱讀全文
posted @ 2018-09-09 15:39 冷豪 閱讀 (89) 評論 (0) 編輯
摘要:序言:紅黑樹是數據結構與算法中最重要的知識點之一,也是最難掌握的。網上有關它的討論很多,我曾經試圖閱讀那些“一篇文章讓你熟悉紅黑樹”之類,可能是智力的緣故,效果平平。最終,我發現要想理解紅黑樹的特性和相關算法其實并無捷徑可走。所以,我打算通過多篇博客來解釋這個眾所周知卻又少有人精通的數據結構——Re 閱讀全文
posted @ 2018-09-09 13:31 冷豪 閱讀 (80) 評論 (0) 編輯
摘要:算法描述:許多應用程序都需要按照順序處理任務,但是不一定要求他們全部有序,或是不一定要一次就將他們排序。很多情況下我們只需要處理當前最緊急或擁有最高優先級的任務就可以了。面對這樣的需求,優先隊列算法是一個不錯的選擇。 算法圖示: 算法解釋:上圖所展示的是最大優先隊列(大頂堆)的算法邏輯,在這個標準的 閱讀全文
posted @ 2018-08-25 22:15 冷豪 閱讀 (293) 評論 (0) 編輯
摘要:算法描述:快速排序是一種分治的排序算法。它將數組分為兩個子數組,并將兩部分獨立的排列??焖倥判蚝蜌w并排序是互補的:歸并排序將數組分成兩個子數組分別排序,并將子數組歸并以將整個數組排序;而快速排序將數組排序的方式則是當兩個子數組都有序時整個數組也就自然有序了。 算法圖示: 算法解釋:選擇標的元素(5) 閱讀全文
posted @ 2018-08-18 13:26 冷豪 閱讀 (90) 評論 (0) 編輯
摘要:算法描述:將兩個較小的有序數組合并成為一個較大的有序數組是比較容易的事情。我們只需要按照相同的順序依次比較最左側的元素,然后交替的放進新數組即可。這就是自頂向下的歸并排序的實現思路。與之前的算法不同的是,歸并排序需要使用額外的存儲空間,用空間換時間的做法也是在排序算法中經常需要做的選擇。 算法圖示: 閱讀全文
posted @ 2018-08-18 11:35 冷豪 閱讀 (1956) 評論 (0) 編輯
摘要:算法描述:希爾排序是一種基于插入排序的快速排序算法,相比于傳統的相鄰插入,希爾排序更加適合大規模亂序數組的排序。和插入算法一樣,我們也可以優化插入和移動的過程從而進一步提升算法效率。 算法圖示: 希爾排序算法的實質是首先將一個大的亂序數組變成幾個小的有序數組,再逐步調整數組長度。最后一步依然是做一次 閱讀全文
posted @ 2018-08-18 11:10 冷豪 閱讀 (185) 評論 (0) 編輯
摘要:算法描述:通常人們在整理撲克的方法是一張一張的來,將每一張牌插入到其他已經有序的牌中的適當位置。在算法的實現中,為了給要插入的元素騰出1個空間,我們需要將其余所有元素在插入之前都向右移動1位。這種算法叫插入算法。 算法圖示: 算法解釋:在基礎版本中通常的做法是,當新元素需要被插入有序數組的時候,從右 閱讀全文
posted @ 2018-08-12 00:08 冷豪 閱讀 (86) 評論 (0) 編輯
摘要:算法描述:一種最簡單的排序算法是這樣的:首先,找到數組中最小的那個元素,其次,將它和數組的第一個元素交換位置。再次,再剩下的元素中找到最小的元素,將它與數組的第二個元素交換位置。如此往復,知道將整個數組排序。這種方法叫做選擇排序,因為它在不斷地選擇剩余元素之中的最小者。 算法圖示: Java代碼示例 閱讀全文
posted @ 2018-08-11 23:25 冷豪 閱讀 (94) 評論 (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 冷豪 閱讀 (166) 評論 (0) 編輯
摘要:最近一直在忙項目,不知不覺2個多月沒有更新博客了。正好自學了幾天docker就干脆總結一下,也順帶增加一篇《30分鐘入門系列》。網上能夠查到的對于docker的定義我就不再重復了,說說我自己對它的理解:Docker一個方便多次部署的虛擬化Linux容器,與當下流行的SpringBoot和微服務框架搭 閱讀全文
posted @ 2018-08-04 23:55 冷豪 閱讀 (1159) 評論 (2) 編輯
摘要:上一章我用一個demo函數演示了基于Qt的音視頻采集到編碼的完整流程,最后經過測試我們也發現了代碼中存在的問題。本章我們就先處理幾個遺留問題,再對代碼進行完善,最后把編碼功能做基礎封裝。 一、遺留問題和解決方法 (1)如何讓音視頻的錄制保持同步? 在我們的演示代碼中之所以發現音視頻錄制不同步的主要原 閱讀全文
posted @ 2018-05-20 01:31 冷豪 閱讀 (1174) 評論 (1) 編輯
摘要:前兩講演示了基本的解碼流程和簡單功能封裝,今天我們開始學習編碼。編碼就是封裝音視頻流的過程,在整個編碼教程中,我會首先在一個函數中演示完成的編碼流程,再解釋其中存在的問題。下一講我們會將編碼功能進行封裝并解釋針對不同的輸出環境代碼上需要注意的地方。最后我們還會把之前做好的解碼器添加進開發環境,實現P 閱讀全文
posted @ 2018-05-06 00:26 冷豪 閱讀 (2996) 評論 (3) 編輯
摘要:與解碼相關的主要代碼在上一篇博客中已經做了介紹,本篇我們會先討論一下如何控制解碼速度再提供一個我個人的封裝思路。最后回歸到界面設計環節重點看一下如何保證播放器界面在縮放和拖動的過程中保證視頻畫面的寬高比例。 一、解碼速度 播放器播放媒體文件的時候播放進度需要我們自己控制?;镜目刂品椒ㄓ袃煞N: 媒體 閱讀全文
posted @ 2018-04-29 13:34 冷豪 閱讀 (1688) 評論 (2) 編輯
ag二分彩