主頁 > 軟體設計 > 安信可 ESP32-S3 模組上驅動攝像頭 OV2640,實作遠程拍照并 HTTP 傳輸到阿里云物件存盤OSS,并顯示在微信小程式上。(深度好文,全部開源)

安信可 ESP32-S3 模組上驅動攝像頭 OV2640,實作遠程拍照并 HTTP 傳輸到阿里云物件存盤OSS,并顯示在微信小程式上。(深度好文,全部開源)

2021-10-21 07:40:14 軟體設計


  • 本系列博客學習由非官方人員 半顆心臟 潛心所力所寫,僅僅做個人技術交流分享,不做任何商業用途,如有不對之處,請留言,本人及時更改,

系列一:ESP32系列模組基礎學習系列筆記

1、 爬坑學習新旅程,虛擬機搭建esp32開發環境,列印 “Hellow World”,
2、 巧用eclipes編輯器,官方教程在在Windows下搭建esp32開發環境,列印 “Hellow World”,
3、 認識基本esp32的GPIO介面,開始點亮您的第一盞 LED和中斷回呼實作按鍵功能 ,
4、體會esp32的強大的定時器功能, 實作定時2s閃爍一盞LED燈,
5、接觸實踐esp32的pwm寬度脈沖功能, 實作呼吸效果閃爍一盞LED燈,
6、smartConfig和微信airKiss在esp32的實作,一鍵配網輕松快捷連接路由器,
7、利用GPIO中斷做一個按鍵的短按和長按的回呼事件,再也無須擔心觸發源,
8、esp32上實作本地 UDP 客戶端和服務端角色,在局域網內實作通訊,
9、esp32上實作本地 TCP 客戶端和服務端角色,可斷線重連原路回傳資料,
10、樂鑫esp32 SDK編程利用rmt驅動ws2812七彩燈,實作彩虹漸變效果,
11、入門 樂鑫esp-adf 音頻框架開發,esp32造一個藍牙耳機,實作切換歌曲,獲取歌曲資訊等功能,
12、開源一個微信公眾號airkiss配網esp32以及局域網發現功能的工程,分享一個airkiss配網小工具,
13、esp32 內置 dns 服務器,無需外網訪問域名回傳指定網頁,
14、esp32 sdk編程實作門戶強制認證,連接esp32熱點之后,自動強制彈出指定的登錄界面,
15、認識本地離線語音喚醒識別框架 esp-skainet ,實作較低成本的硬體語音本地識別控制,
16、學習本地語音喚醒離線識別框架 esp-skainet ,如何修改喚醒詞? 如何自定義命令詞?如何做意圖動作?
17、全網首發,樂鑫esp32 sdk直連京東微聯·小京魚 · IoT開放平臺,實作叮咚音響語音智能控制,
18、入門京東微聯·小京魚的控制面板H5開發,讀懂vue語法,做自己的控制頁面,
19、重磅開源,如何在微信小程式上ble藍牙配網esp32,blufi的那些事!
20、一篇好文,開發程序中編譯esp32韌體太大,無法正常啟動?教你如何自定義磁區表partitions.csv,
21、 esp32藍牙配網blufi的高度封裝,集成簡單、使用簡單、容易上手,提高開發效率!
22、討論下程式員 “青春飯” 那些事,分享在esp32實作多種加密演算法md5 |AES CBC-ECB| Sha1 | Sha256 等!
23、安信可 esp32-a1s 音頻開發板移植最新 esp-adf 音頻框架,小試牛刀如何實作在線文字轉語音播放,
25、分享在 esp32 SDK實作冷暖光色溫平滑調節的封裝,輕松集成到您的專案去,
26、分享下如何在window下使用CMake編譯,編譯速度提高傳統 make 編譯一個檔次,支持 ESP32 和 ESP32-C3,
27、windows10平臺下自帶的Linux安裝 ESP8266/ESP32 環境,再無需額外安裝虛擬機了,

系列二:ESP32-Camera 攝像頭開發板系列筆記

1、安信可 ESP32-Cam 攝像頭開發板二次開發 C SDK編程,實作MQTT遠程拍照傳輸到私有服務器,
2、安信可 ESP32-Cam 攝像頭開發板二次開發 C SDK編程,實作本地視頻流監控,
3、安信可 ESP32-Cam 攝像頭開發板二次開發 C SDK編程,拍照圖片通過有線串口傳到上位機PC端,

系列三:ESP32-C3 模組系列筆記

1、【藍牙Mesh筆記 ①】ESP32-C3 模組上實作天貓精靈藍牙 BLE Mesh AliGenie 接入,無需WiFi 連接也可以實作天貓精靈語音控制,

系列四:ESP32-S3 模組系列筆記

1、安信可 ESP32-S3 模組上驅動攝像頭 OV2640,實作遠程拍照并 HTTP 傳輸到阿里云物件存盤OSS,并顯示在微信小程式上,,


文章目錄

  • 前言
  • 一、 ESP32-S3 產品特性
    • CPU 和存盤
    • 外設介面和傳感器
    • 功耗特性
  • 二、 準備作業
      • 硬體
      • 軟體
      • 接線
  • 三、通訊協議和原理
    • 3.1 模組拍照上傳服務器
    • 3.2 小程式下發指令給模組拍照給服務器
    • 3.3 模組把上傳服務器結果回呼給小程式
  • 四、服務器準備
    • 3.1 接收圖片處理
    • 3.2 接收圖片處理
    • 3.3 服務器業務邏輯
  • 五、嵌入式開發準備
  • 六、微信小程式開發準備
      • 原始碼下載
    • 另外,不要把我的博客作為學習標準,我的只是筆記,難有疏忽之處,如果有,請指出來,也歡迎留言哈!

在這里插入圖片描述

前言

第一批拿到了安信可 ESP32-S3模組的樣品,今天給大家分享下這個模組的規格,此模組精準聚焦 AIoT 市場,回應市場對 AI 演算法的技術需求,那么此文章介紹的是ESP32-S3模組上驅動攝像頭 OV2640,后續將繼續更新此系列博文,


在這里插入圖片描述

一、 ESP32-S3 產品特性

拿到了安信可的ESP32-S3樣品,當然得查看其規格啦,

CPU 和存盤

? Xtensa? 32 位 LX7 雙核處理器,主頻高達 240 MHz
? 128 位資料總線位寬,支持 SIMD 指令
? 384 KB ROM
? 512 KB SRAM
? 16 KB RTC SRAM
? SPI、Dual SPI、Quad SPI、Octal SPI、QPI、OPI 介面外接多個 flash 和片外 RAM

外設介面和傳感器

? 45 × GPIO 口 ? 數字介面:
? 4 × SPI
? 1 × LCD 介面(8 位 ~16 位并行 RGB, I8080, MOTO6800), 支持 RGB565, YUV422, YUV420, YUV411 之間互相轉換
? 1 × DVP 8 位 ~16 位攝像頭介面
? 3 × UART
? 2 × I2C
? 2 × I2S
? 1 × RMT (TX/RX)
? 1 × 脈沖計數器
? LED PWM 控制器,多達 8 個通道
? 1 × 全速 USB OTG
? 1 × USB Serial/JTAG 控制器
? 2 × MCPWM
? 1 × SDIO 主機介面,具有 2 個卡槽
? DMA 控制器,5 個接收通道和 5 個發送通道
? 1 × TWAI? 控制器(兼容 ISO11898-1)
? 2 × 12 位 SAR ADC,多達 20 個通道
? 1 × 溫度傳感器 – 14 × 電容式傳感 GPIO ? 定時器:
? 4 × 54 位通用定時器
? 1 × 52 位系統定時器
? 3 × 看門狗定時器

功耗特性

ESP32-S3 采用了先進的電源管理技術,可以在不同的功耗模式之間切換,ESP32-S3 支持的功耗模式有:

? Active 模式:CPU 和芯片射頻處于作業狀態,芯片可以接收、發射和偵聽信號,
? Modem-sleep 模式:CPU 可運行,時鐘頻率可配置,Wi-Fi 基帶和射頻關閉,但 Wi-Fi 可保持連接,
? Light-sleep 模式:CPU 暫停運行,RTC 外設以及 ULP 協處理器可被定時器周期性喚醒運行,任何喚醒事 件(MAC、主機、RTC 定時器或外部中斷)都會喚醒芯片,Wi-Fi 可保持連接,
? Deep-sleep 模式:CPU 和大部分外設都會掉電,只有 RTC 存盤器和 RTC 外設處于作業狀態,Wi-Fi 連接 資料存盤在 RTC 中,ULP 協處理器可以作業,
? Hibernation 模式:內置快速 RC 振蕩器時鐘和 ULP 協處理器均被禁用,只有 1 個位于低速時鐘上的 RTC 時鐘定時器和某些 RTC GPIO 在作業,RTC 時鐘定時器或 RTC GPIO 可以將芯片從 Hibernation 模式中喚 醒, 設備在

不同的功耗模式下有不同的電流消耗,詳情請見下面:

功耗模式描述典型值單位
Light-sleepCPU 暫停運行,240μA
Deep-sleepRTC 存盤器和 RTC 外設處于作業狀態8μA
HibernationRTC 存盤器處于作業狀態,RTC 外設處于關閉狀態7μA
Power offCHIP_PU 管腳拉低,芯片處于關閉狀態1μA

二、 準備作業

硬體

  • 安信可 ESP32-S3 模組,

  • TTL-USB 除錯工具(推薦使用 CP2102串口芯片的 ,保證足夠的電壓電流),

軟體

  • 環境搭建: Linux環境搭建 master 分支
  • 工具鏈設定:下載 toolchain,博主使用的版本是:gcc version 5.2.0 (crosstool-NG crosstool-ng-1.22.0-97-gc752ad5)
  • Python版本:Python 3.8

接線

攝像頭引腳模組引腳
pin_pwdnGPIO_NUM_35
pin_resetGPIO_NUM_36
pin_xclkGPIO_NUM_15
pin_sscb_sdaGPIO_NUM_4
pin_sscb_sclGPIO_NUM_5
pin_d7GPIO_NUM_16
pin_d6GPIO_NUM_17
pin_d5GPIO_NUM_18
pin_d4GPIO_NUM_12
pin_d3GPIO_NUM_11
pin_d2GPIO_NUM_10
pin_d1GPIO_NUM_9
pin_d0GPIO_NUM_8
pin_vsyncGPIO_NUM_6
pin_hrefGPIO_NUM_7
pin_pclkGPIO_NUM_13

三、通訊協議和原理

在這里插入圖片描述

3.1 模組拍照上傳服務器

協議: HTTP

POST /index.php HTTP/1.1
Host: www.domain.com
Content-Type: image/jpeg
Name-Pic: name
Content-Length: 12540


"<file contents here>"

3.2 小程式下發指令給模組拍照給服務器

協議:MQTT
Topic:/light/deviceIn
payload:

{
    "action" : "0" ,
    "name" : "pic-name"
}

3.3 模組把上傳服務器結果回呼給小程式

協議:MQTT
Topic:/light/deviceOut
payload:

{
  "url" : "base64(url)" 
}

url 是拍照之后的可外網訪問的圖片地址,使用 base64 加密,


四、服務器準備

3.1 接收圖片處理

本代碼以HTTP 協議POST提交 ,二進制形式把圖片上傳到服務器,其格式如下:

POST /index.php HTTP/1.1
Host: www.domain.com
Content-Type: image/jpeg
Name-Pic: name
Content-Length: 12540

"<file contents here>"

因此,服務器要以資料流接收,以 PHP語言為例:

//接受資料流
$stream = file_get_contents('php://input');
//資料流轉化為png格式,并保存在指定的位置
$len = file_put_contents('/www/wwwroot/static/' . time() . ".png", $stream); 

3.2 接收圖片處理

    public function upload()
    {
        $getPostDataArry = apache_request_headers();

        try {
            $name = $getPostDataArry['Name-Pic'];
        } catch (Exception $e) {
            if (empty($name)) {
                $response_data['code'] = 1;
                $response_data['des'] = ' Name-Pic is not exist';
                return json($response_data);
            }
        }
        //接受資料流
        $stream = file_get_contents('php://input');
        //資料流轉化為png格式,并保存在指定的位置
        $len = file_put_contents('/www/wwwroot/www.xuhongv.com/public/icon/' . $name . ".png", $stream);
        $response_data = [];
        if ($len) {
            $accessKeyId = "LTAI4Fg*********YJBLPoTo5";
            $accessKeySecret = "OT7s9vkQd*******4p8KQ31qoTIL4";
            $endpoint = "we****ong.oss-cn-hongkong.aliyuncs.com";
            $bucket = 'web****hong';
            try {
                $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, true);
                //判斷存盤空間是否存在
                $isExist = $ossClient->doesBucketExist($bucket);
                if (!$isExist) {
                    $response_data['code'] = 1;
                    $response_data['des'] = $endpoint . ' is not exist';
                    return json($response_data);
                }
                $options = array();
                //oss 存盤檔案路徑
                $object = "images/" . $name . ".png";
                $ossClient->uploadFile($bucket, $object, '/www/wwwroot/www.xuhongv.com/public/icon/' . $name . ".png", $options);
            } catch (OssException $e) {
                $response_data['code'] = 1;
                $response_data['des'] = $e->getMessage();
                return json($response_data);
            }
            $response_data['code'] = 0;
            $response_data['des'] = 'uploadup ok';
            $response_data['url'] = base64_encode("https://" . $endpoint . '/' . $object);
            return json($response_data);
        }
        $response_data['code'] = 1;
        $response_data['des'] = "error , the upload file length is" . $len;
        return json($response_data);
    }
}

3.3 服務器業務邏輯

  1. 接受到S3模組發過來的圖片,存盤到本地服務器某個檔案夾里面,
  2. 同時把這個圖片,發送到阿里云物件存盤,回傳一個可遠程訪問圖片的地址給模組,

五、嵌入式開發準備

配置服務器資訊,然后拍照上傳,

    //配置服務器相關資訊
    esp_http_client_config_t config = {
        .url = "http://domain.xuhongv.com/api/upload",
        .method = HTTP_METHOD_POST,
        .event_handler = _http_event_handler,
        .buffer_size = 4096,
        .user_data = local_response_buffer, 
        .buffer_size_tx = 4096 * 5,
        .timeout_ms = 10000
    };

    //開始拍照
    pic = esp_camera_fb_get();

    if (!pic)
    {
        ESP_LOGE(TAG, "Camera capture failed");
        goto end;
    }
    else
    {
        esp_camera_fb_return(pic);

        pic = esp_camera_fb_get();

        if (!pic)
        {
            ESP_LOGE(TAG, "Camera capture failed");
         }
        else
        {
            //拍照成功,獲取其大小、尺寸等資訊
            ESP_LOGI(TAG, "Camera capture OK , Its size was: %zu bytes", pic->len);
            ESP_LOGI(TAG, "Camera capture OK , Its width was: %d", pic->width);
            ESP_LOGI(TAG, "Camera capture OK , Its height was: %d ", pic->height);

            esp_http_client_handle_t esp_client = esp_http_client_init(&config);

            //設定HTTP請求頭為image/jpg表示圖片型別
            esp_http_client_set_header(esp_client, "Content-Type", "image/jpg");

            //設定圖片名字
            esp_http_client_set_header(esp_client, "Name-Pic", &(test_task_param->pic_name_p));

            //把圖片放在body里面
            esp_http_client_set_post_field(esp_client, (const char *)pic->buf, pic->len);

            //開始執行請求服務器
            res = esp_http_client_perform(esp_client);

            //判斷是否請求成功
            if (res == ESP_OK)
            {
                ESP_LOGI(TAG, "HTTPS Status = %d", esp_http_client_get_status_code(esp_client));
            }
            else
            {
                ESP_LOGE(TAG, "perform http request %s", esp_err_to_name(res));
            }
            ESP_ERROR_CHECK(esp_http_client_cleanup(esp_client));
        }
    }

六、微信小程式開發準備

配置服務器資訊,然后拍照上傳,

    data: {
    host: 'a0je61b5.mqtt.iot.gz.baidubce.com',
    subTopic: '/light/deviceOut',
    pubTopic: '/light/deviceIn',
    msg: 'Hello! I am from WeChat miniprogram',
    //默認顯示的圖片
    img_url: 'https://docs.ai-thinker.com/_media/o1cn01faxszt1ls4mym2mkb_2922621297.png',
    mqttOptions: {
      protocolVersion: 4, //MQTT連接協議版本
      clientId: 'DeviceId-jviujtntjy',
      clean: true,
      password: 'sM2hrD6kcRFlmIgR2F',
      username: 'a0je61a/wechat',
      reconnectPeriod: 1000, // 1000毫秒,兩次重新連接之間的間隔
      connectTimeout: 30 * 1000, // 1000毫秒,兩次重新連接之間的間隔
      resubscribe: true // 如果連接斷開并重新連接,則會再次自動訂閱已訂閱的主題(默認true)
     }
    }
    
    let that = this

    client = mqtt.connect(`wxs://${this.data.host}/mqtt`, this.data.mqttOptions)

    client.on('reconnect', (error) => {
      console.log('Reconnecting...')
    })

    client.on('error', (error) => {
      console.log('連接失敗:', error)
    })

    client.on('connect', () => {
      wx.showToast({
        title: '連接成功'
      })

      client.subscribe(this.data.subTopic, (err) => {
      })
      client.on('message', (topic, payload) => {
        let object = JSON.parse(payload)
        //base64解碼url地址
        let url = that.base64_decode(object.url)
        console.log(url)
        that.setData({
          img_url: url
        })
        wx.showModal({
          content: `收到 Topic: ${topic}, Payload:  ${url}`,
          showCancel: false,
        });
      })
    })

原始碼下載

模組代碼:https://github.com/xuhongv/StudyInEsp32/24_esp32s2_s3_camera_wechat_mini

微信小程式代碼:https://github.com/xuhongv/RemoteWeChatForESP

服務器代碼:見本文章服務器代碼介紹章節,

另外,不要把我的博客作為學習標準,我的只是筆記,難有疏忽之處,如果有,請指出來,也歡迎留言哈!

  • 玩轉esp8266帶你飛、加群QQ群,不喜的朋友勿噴勿加:434878850
  • 個人郵箱:xuhongv@yeah.net 24小時在線,有發必回復!
  • esp8266源代碼學習匯總(持續更新,歡迎star):https://github.com/xuhongv/StudyInEsp8266
  • esp32源代碼學習匯總(持續更新,歡迎star):https://github.com/xuhongv/StudyInEsp32
  • 關注下面微信公眾號二維碼,干貨多多,第一時間推送!

在這里插入圖片描述

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/327940.html

標籤:其他

上一篇:Nginx+Tomcat負載均衡集群

下一篇:【計算機網路】 HTTP協議及相關面試題整理 (建議收藏)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more