博客 / 列表

龔正陽 - rust使用hashmap存儲函數並調用

背景 在rust 1.67.1 (d5a82bbd2 2023-02-07) 版本測試正常 使用rust的hashmap存儲i32為key, 函數作為value, 當查詢某個key如果存在具體的函數則調用 支持異步函數存儲與調用 主要方法 如果類型不同,則需要包一層Box,把存儲的內容放到堆內存上,保證編譯器可以正常計算內存大小,主要是針對存儲在棧上的內存大小 如果是異步方法,由於異步函數沒

hashmap , rust , 異步

龔正陽 - Actor併發系統説明與使用

簡介 Actor模型是一種並行計算模型,提供了一種用於構建併發、分佈式系統的抽象方法 在Actor模型中,計算被表示為獨立的、輕量級的計算單元,稱為Actor,可以發送和接收消息並進行本地計算 作為一種通用的消息傳遞編程模型,被廣泛用於構建大規模可伸縮分佈式系統 核心思想是獨立維護隔離狀態,並基於消息傳遞實現異步通信 Actor模型組成 存儲:每個 Actor 持有一個郵箱(mailbox),

rust , 併發 , 異步

龔正陽 - k8s容器訪問宿主機或者集羣外部服務

需求背景 k8s的集羣容器需要訪問宿主機的某個服務(mysql或者其他類型的服務),或者其他外部遠程設備的服務,但是服務不在集羣當中 訪問外部服務 訪問遠程外部服務,如下任選一個實現 外部域名映射到內部service 外部 IP 映射到內部 Service 訪問當前Pod所在宿主機服務,如下任選一個實現 在pod中掛載環境變量表示宿主機的IP,容器內部通過環境變量映射的IP訪問服務

endpoint , kubernetes , service , Docker , 計算機網絡

龔正陽 - gRPC的理解與使用

協議介紹 gRPC 是谷歌開源的一套 RPC 協議框架,底層使用HTTP/2協議,主要有兩部分,數據編碼以及請求映射 數據編碼是將內存對象編碼為可傳輸的字節流,也包括把字節流轉化為內存對象,常見的包含json, msgpack, xml, protobuf,其中該編碼效率比json高一些,grpc選擇使用protobuf gRPC為什麼基於HTTP2 HTTP1.1遇到的問題 協議繁瑣,包含很

protobuf , grpc , http-2 , rust

龔正陽 - net-snmp靜態編譯鏈接

由於在某些場景需要使用靜態鏈接的snmpwalk或者其他程序,為了方便執行文件的分發,適配多版本系統,所以需要自己編譯net-snmp 實驗操作系統Ubuntu22 amd64 獲取程序 git clone方式 $ git clone https://github.com/net-snmp/net-snmp.git 或者也可以依據tag下載源碼包 生成Makefile net-snmp項目根路徑下

靜態編譯 , gcc , snmp , 鏈接

龔正陽 - powershell配置utf-8編碼

臨時修改為utf-8 PS chcp 65001 通過配置文件永久修改 查看powershell配置文件位置,如果不存在則去創建 PS $PROFILE 在配置文件中寫入 $OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding 重新打開P

windows , utf-8 , PowerShell , command-line

龔正陽 - jwt身份認證概述

JWT全稱JSON Web Token 應用流程 客户端使用用户名和密碼請求登錄,服務端收到請求 驗證用户名和密碼正確後,後端通過JWT機制,將用户數據作為JWT的Payload,同時在前面拼接上一個JWT Header之後進行Base64編碼,並進行簽名,生成一個token,格式為header.payload.signature,返回給客户端 客户端後續的每次請求都需要攜帶token,攜

跨域 , 認證授權 , Jwt

龔正陽 - Freebsd配置服務開機自啓動

freebsd由於沒使用systemd,所以會採用配置/etc/rc.d/文件的方式配置服務啓動 服務模擬腳本 開機自啓動腳本執行的時候不能阻塞,freebsd服務啓動的時候是串行執行的,一條命令卡住,所有後續服務不能執行 新建腳本/root/test-boot.sh,注意最後面要加上以免阻塞 #!/bin/sh sh -c "while true;do date /root/test-boot

freebsd , unix , service