一個基于輪詢的廣告系統

無論PC 客戶端還是手機客戶端,可能會遇到需要發布一些廣告,這些廣告可能是自己開發的,可能是三方的,而且希望是比較通用,能隨時發布,隨時就能看到效果。

本文提供了一種基于輪詢的廣告系統,主要是提供了一個大致的框架和少許的代碼示例。由于需要比較通用,可能需要三方廣告,所以整個廣告是以H5頁面的形式展示。當然,這個系統既可以展示廣告,也可以滿足一些常規的業務需求,甚至是用來修復軟件BUG等。

整體框架如下:

系統有3端共同組成,客戶端,前端,服務端。

客戶端提供兩個功能:1.提供一個QtWebkit,也就是提供JS執行環境,承載前端頁面和JS代碼。? 2.提供本地接口供JS調用,注入JS對象。

本地接口由ruby來提供。這些接口一部分是由ruby自己實現,一部分是由C++來實現。大部分情況改變的都是ruby腳本,C++的代碼改動比較少。

Ruby是通過QtRuby技術來調用Qt,通過SMOKE技術來調用C++。QtRuby技術就是支持使用ruby腳本來開發Qt程序,

和有些公司使用Python開發Qt程序類似。SMOKE是KDE框架下面內置的一個技術,他的作用就是把C++和腳本語言綁定起來。

QtRuby是SMOKE技術在把Qt綁定到ruby環境的一個具體實現。

前端:加載在線html和JS,和服務端交互,通過輪詢的方式拉取廣告資源,和客戶端交互,調用本地接口,展示廣告。

服務端:配置廣告資源,返回廣告資源。支持按照條件過濾。

什么優點

1.盡量腳本化,很少改動C++的代碼,C++僅對新增業務支持,大部分的對本地接口支持ruby本身

可以完成,ruby腳本支持更新(啟動時一次,后面2小時檢查一次),重啟軟件生效。

2.JS SDK使用在線代碼,如果出問題可以在線修改解決問題。

輪詢的使用

廣告展示對實時性要求不高,在這種場景下可以使用。

和長鏈接相比每5-10分鐘請求一次對服務器壓力也有所緩解。

有些客戶端在登錄或者支付時會跳轉到瀏覽器,客戶端也是使用輪詢機制,來確認是否

登錄或者支付成功。(輪詢時間一般指數遞增)。

如何使用

1.軟件的廣告,比如打折促銷,某某節日廣告等,最典型的就是雙十一。

2.第三方廣告,接入他們的前端SDK即可。

3.任何其他可以做的事情。比如對用戶本地的文件讀寫,操作注冊表,網絡操作等等。

這種情況一般是沒有界面的,再后臺執行的,比如下載一個軟件的安裝包,然后

執行靜默安裝的操作。

客戶端職責

2.提供一1.提供本地接口供前端調用,本身不處理業務邏輯,業務部分由前端JS來實現

個QtWebkit來供前端執行JS

3.提供一個常駐進程(①主進程調起一個進程②任務計劃③服務程序)

前端職責

1.輪詢拉取廣告資源,判斷展示廣告條件,展示廣告,調用本地接口實現業務

2.開發廣告頁面,處理業務邏輯

服務端職責

提供查詢廣告接口,如果有廣告就返回給前端。并且支持條件過濾。

更好的做法是使用推薦系統,根據用戶的性別,年齡,人群分類,瀏覽歷史等特征

通過算法進行精準推薦。

以上基本是廣告系統的全部內容了,不過這個系統不一定只是來展示廣告,實際上他能做更多的事情,比如作為一種滿足常規業務需求,甚至是修復軟件BUG,這個在業內有時候也稱為“云指令”,也就是說通過服務器下來的指令來完成一些通用的事情。

這個“云指令”框架如下:

適用場景:

1.一次性任務,比如上報日志文件大小,收集用戶信息供決策等

2.應急性任務,比如功能開關需要關掉,崩潰修復,升級程序損壞等

3.常規性任務,威力強大

實現業務:

1.直接使用lua腳本完成業務邏輯

2.可以通過通知主程序做業務邏輯,或者通過IPC從主程序獲取數據

3.可以通過寫插件,主程序加載后完成業務邏輯

4.可以下載EXE獨立完成業務邏輯

難點:穩定性(多進程模型),擴展性

意義:方便做一些臨時性或者應急性的需求,或者排除問題以及常規需求等。非常靈活強大。

不建議使用 固定的指令,讓客戶端去解析,太麻煩。如果有很多條件判斷,甚至有循環就比較麻煩。 之前有這樣類似的做法后面很難維護。建議直接使用腳本文件,非常靈活。

本文關聯的PPT介紹可以在這里下載:https://download.csdn.net/download/zsc_976529378/88878825?spm=1001.2014.3001.5501

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/713739.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/713739.shtml
英文地址,請注明出處:http://en.pswp.cn/news/713739.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【服務器數據恢復】昆騰存儲中raid5磁盤陣列數據恢復案例

服務器數據恢復環境&故障: 10個磁盤柜,每個磁盤柜配24塊硬盤。9個磁盤柜用于存儲數據,1個磁盤柜用于存儲元數據。 元數據存儲中24塊硬盤,組建了9組RAID1陣列1組RAID10陣列,4個全局熱備硬盤。 數據存儲中&#xff0…

Java基于springboot的個人理財系統

基于springboot的個人理財系統 摘要 隨著信息技術在管理上越來越深入而廣泛的應用,管理信息系統的實施在技術上已逐步成熟。本文介紹了個人理財系統的開發全過程。通過分析個人理財系統管理的不足,創建了一個計算機管理個人理財系統的方案。文章介紹了個…

多人音視頻實時通訊架構

直播中的協議與格式 在直播系統中,協議和格式的選擇對于傳輸效率、畫面質量和用戶體驗都至關重要。以下是直播中常見的協議與格式: 協議 RTSP (Real Time Streaming Protocol) RTSP是一個網絡流媒體協議,常用于視頻監控和IPTV等場景。它本身…

考研機試C++題目精選

更多內容會在godownio.github.io更新 算法練習(C代碼) 考研上機或C語言代碼筆試準備,暨大機試原題letcode牛客中南大等高校機試 快速冪算法 題目:輸入一個整數 n ,求 n^n 的個位數是多少。 快速冪算法:…

面經分享|面了好未來NLP算法崗(實習),經歷坎坷但值了!

節前,我們組織了一場算法崗技術&面試討論會,邀請了一些互聯網大廠同學、參加社招和校招面試的同學,針對大模型技術趨勢、大模型落地項目經驗分享、新手如何入門算法崗、該如何備戰、面試常考點分享等熱門話題進行了深入的討論。 今天我分…

【復試2.293.1】c語言——基礎雜項

1.define定義常量類似全局變量,引用是直接拼到代碼中去。 2.關于e 3.參數傳遞 形參直接接收的是數組的起始地址 4.數組越界亂碼問題 5.scanf讀字符串的時候會自動在末尾放0(結束符 6.scanf是讀取輸入緩沖區的數據,是一種拿走操作。讀取若有…

文本多分類

還在用BERT做文本分類?分享一套基于預訓練模型ERNIR3.0的文本多分類全流程實例【文本分類】_ernir 文本分類-CSDN博客 /usr/bin/python3 -m pip install --upgrade pip python3-c"import platform;print(platform.architecture()[0]);print(platform.machine…

C語言實現航班管理

航班管理系統&#xff0c;用C語言實現&#xff0c;可以作為課程設計&#xff0c;代碼如下&#xff1a; #include<iostream> #include<fstream> #include<vector> #include<string> #include<stdlib.h> using namespace std; //信息基類 clas…

Linux第67步_linux字符設備驅動_注冊和注銷

1、字符設備注冊與注銷的函數原型” /*字符設備注冊的函數原型*/ static inline int register_chrdev(unsigned int major,\ const char *name, \ const struct file_operations *fops) /* major:主設備號&#xff0c;Limnux下每個設備都有一個設備號&#xff0c;設備號分…

【六袆 - React】Next.js:React 開發框架;Next.js開發框架的特點

Next.js&#xff1a;React 開發框架 Next.js的特點 1.直觀的、基于頁面的路由系統&#xff08;并支持動態路由&#xff09; Next.js 提供了基于文件系統的路由&#xff0c;意味著你可以通過創建頁面文件來定義路由。 偽代碼示例&#xff1a; // pages/index.js export defa…

【GStreamer】basic-tutorial-2:創建、鏈接GstElement,修改其屬性、狀態

【目錄】郭老二博文之:圖像視頻匯總 1、示例注釋 #include <gst/gst.h>int main (int argc, char *argv[]) {GstElement *pipeline,

MYSQL--JDBC優化

一.JDBC優化: 優化前提: 有時候我們并不清楚某些表當中一共有多少列,以及這些列的數據類型,這個時候我們就需要提前通過一些方法提前了解到這些數據,從而更好的進行輸出 具體語句: package cn.jdbc;import java.sql.*;public class JDBCDEmo1 {public static void main(String…

C語言中的動態內存管理技巧:實現靈活的內存分配和釋放

概念 在C語言中&#xff0c;動態內存管理是實現靈活內存分配和釋放的關鍵。合理地管理動態內存可以提高程序的效率和擴展性。本文將介紹C語言中常用的動態內存管理方法和技巧&#xff0c;幫助讀者優化內存分配和釋放的過程。 常用的動態內存管理方法 內存分配&#xff1a;C語…

【數學建模獲獎經驗】2023第八屆數維杯數學建模:華中科技大學本科組創新獎獲獎分享

2024年第九屆數維杯大學生數學建模挑戰賽將于&#xff1a;2024年5月10日08:00-5月13日09:00舉行&#xff0c;近期同學們都開始陸續進入了備賽階段&#xff0c;今天我們就一起來看看上一屆優秀的創新獎選手都有什么獲獎感言吧~希望能幫到更多熱愛數學建模的同學。據說點贊的大佬…

elment-ui table表格排序后 清除排序箭頭/恢復默認排序 的高亮樣式

問題描述&#xff1a; 1.默認排序是按照名稱升序排列&#xff08;圖一&#xff09; 2.在選擇了篩選項以及其他排序方式之后&#xff0c;箭頭高亮是這樣的&#xff08;圖二&#xff09; 3.當我點擊清空按鈕后&#xff0c;類型清空了&#xff0c;并且傳給后端的排序方式是名稱/升…

探索色彩搭配的奧秘:如何選擇適合產品的理想配色方案

title: 探索色彩搭配的奧秘&#xff1a;如何選擇適合產品的理想配色方案 date: 2024/3/1 20:47:45 updated: 2024/3/1 20:47:45 tags: 色彩搭配品牌形象用戶體驗情感連接信息傳達視覺層次色調選擇 引言 友善的色彩搭配和色調選擇是現代產品設計中不可忽視的關鍵因素。通過正確…

Linux yum安裝pgsql出現Bad GPG signature錯誤

官方文檔&#xff1a;https://www.postgresql.org/download/linux/redhat/ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo yum install -y postgresql12-server sudo /usr/pgsql-12/bin/…

Rust使用calamine讀取excel文件,Rust使用rust_xlsxwriter寫入excel文件

Rust使用calamine讀取已存在的test.xlsx文件全部數據&#xff0c;還讀取指定單元格數據&#xff1b;Rust使用rust_xlsxwriter創建新的output.xlsx文件&#xff0c;并寫入數據到指定單元格&#xff0c;然后再保存工作簿。 Cargo.toml main.rs /*rust讀取excel文件*/ use cala…

Pytest-parametrize實現測試用例與測試數據分離

Pytest自動化框架&#xff0c;實現自動化測試用例與測試數據分離方法&#xff1a; 1.測試用例數據準備&#xff0c;使用yaml文件編輯&#xff0c;如下述teladress.yaml 2.通過pytest框架裝飾器pytest.mark.parametrize實現測試數據傳參 示例&#xff1a; 測試用例文件&…

Tomcat 架構

一、Http工作原理 HTTP協議是瀏覽器與服務器之間的數據傳送協議。作為應用層協議&#xff0c;HTTP是基于TCP/IP協議來傳遞數據的&#xff08;HTML文件、圖片、查詢結果等&#xff09;&#xff0c;HTTP協議不涉及數據包&#xff08;Packet&#xff09;傳輸&#xff0c;主要規定了…