Nacos-Controller 2.0:使用 Nacos 高效管理你的 K8s 配置

作者:濯光、翼嚴

Kubernetes 配置管理的局限

目前,在 Kubernetes 集群中,配置管理主要通過 ConfigMap 和 Secret 來實現。這兩種資源允許用戶將配置信息通過環境變量或者文件等方式,注入到 Pod 中。盡管 Kubernetes 提供了這些強大的工具,但在實際應用中仍存在一些挑戰:

1. 歷史版本管理缺失:Kubernetes 中的 ConfigMap 和 Secret 本身并不直接支持歷史版本管理,更新后舊版本的配置將被覆蓋,且無法直接恢復到之前的版本。如果配置更新后出現問題,無法快速回滾到之前的版本,可能導致系統不穩定或服務中斷,也不利于故障排查和合規性審計。

2. 缺乏動態性:Kubernetes 原生的配置管理機制不支持實時推送配置變更,這意味著更改后的配置不會立即在應用中生效,除非重啟 Pod,這導致系統的響應速度慢,靈活性差。

3. 沒有灰度能力:Kubernetes 原生的配置管理機制(如 ConfigMap 和 Secret)不直接支持灰度發布。配置變更通常需要手動更新,并且會立即應用到所有相關的 Pod。

4. 安全性問題:雖然 Secret 可以用來存儲敏感信息,但其安全性和訪問控制仍有待加強。

Nacos 配置管理的優勢

Nacos(Dynamic Naming and Configuration Service)是一個動態服務發現、配置管理和服務管理平臺。它旨在幫助開發者更容易地構建云原生應用,提供了一套簡單易用的特性來簡化微服務架構中的服務發現、配置管理和服務管理。Nacos 在配置管理方面提供了許多高階的管理功能,能夠有效解決上述問題:

  • 歷史版本管理: Nacos 支持配置的歷史版本管理,您可以輕松查看和恢復到之前的配置版本。這使得回滾配置變得更加簡單和可靠。
  • 統一配置管理: Nacos 提供了一個集中式的配置管理中心,可以將所有環境下的配置信息統一管理,簡化了配置管理流程。通過一個直觀的 Web 界面,用戶可以輕松查看、編輯和管理配置
  • 動態配置更新: Nacos 支持實時推送配置變更,無需重啟 Pod 即可使新的配置生效,大大提升了系統的靈活性和響應速度。
  • 灰度發布支持: Nacos 支持配置灰度發布功能,可以針對特定的服務實例或環境推送配置變更。通過 Nacos 的灰度發布功能,可以在部分實例上測試新的配置,確保其穩定后再逐步推廣到所有實例。
  • 敏感信息安全存儲: Nacos 提供了多層次的安全機制,包括配置加密、安全傳輸等,確保敏感信息的安全性。
  • 豐富的多語言支持: Nacos 提供了豐富的多語言支持,涵蓋了 Java\Go\Python 無論您的微服務架構基于何種技術棧,只要它們能夠接入 Nacos,就可以享受到一致性的配置管理體驗。

最近,伴隨著 Nacos 3.0-Beta 版本的發布,Nacos 社區發布了 Nacos-Controller 2.0 版本,它可以幫助同步 K8s 的 Service 到 Nacos,同時也支持 K8s 的 Configmap、Secret 與 Nacos 配置的雙向同步。基于 Nacos-Controller 2.0,可以實現 Nacos 一鍵托管 K8s 配置,使用 Nacos 賦能 K8s 配置管理。接下來就讓我們來看看如何使用 Nacos 來管理 K8s 配置吧。

使用 Nacos-Controller 一鍵托管 K8s 配置

Nacos Controller 2.0 支持 Kubernetes 集群配置和 Nacos 配置的雙向同步,支持將 Kubernetes 集群特定命名空間下的 ConfigMap 以及 Secret 同步到 Nacos 指定命名空間下中。用戶可以通過 Nacos 實現對于 Kubernetes 集群配置的動態修改和管理。Nacos 配置和 Kubernetes 配置的映射關系如下表所示:

ConfigMap/SecretNacos Config
Namespace用戶指定的命名空間
NameGroup
KeyDataId
ValueContent

目前主要支持兩種配置同步的策略:

  • 全量同步:Kubernetes 集群特定命名空間下的所有 ConfigMap 以及 Secret 自動同步至 Nacos,Nacos Controller 會自動同步所有新建的 ConfigMap 和 Secret
  • 部分同步:只同步用戶指定的 ConfigMap 和 Secret 至 Nacos

部署 Nacos Controller

  1. 安裝 helm,參考文檔【1】

  2. 安裝 Nacos Controller 到對應的 kubernetes 集群中

git clone https://github.com/nacos-group/nacos-controller.git
cd nacos-controller/charts/nacos-controllerexport KUBECONFIG=/你的K8s集群/訪問憑證/文件路徑
kubectl create ns nacos
helm install -n nacos nacos-controller .

快速開始

通過以下的命令,你可以快速將 kubernetes 集群中當前命名空間的配置全量同步到 Nacos 中。

cd nacos-controller
chmod +x configQuicStart.sh ./configQuicStart.sh <nacos-addr> <nacos-namespace-id>

除此之外,你還可以參照以下說明:根據自己的需要編寫 DynamicConfiguration yaml 文件,并部署到 K8s 集群中。

K8s 集群命名空間配置全量同步 Nacos

  1. 編寫 DynamicConfiguration yaml 文件:
apiVersion: nacos.io/v1
kind: DynamicConfiguration
metadata:name: dc-demo
spec:nacosServer:# endpoint: nacos地址服務器,與serverAddr互斥,優先級高于serverAddr,與serverAddr二選一即可endpoint: <your-nacos-server-endpoint># serverAddr: nacos地址,與endpoint二選一即可serverAddr: <your-nacos-server-addr># namespace: 用戶指定的命名空間namespace: <your-nacos-namespace-id># authRef: 引用存放Nacos 客戶端鑒權信息的Secret,支持用戶名/密碼 和 AK/SK, Nacos服務端未開啟鑒權可忽略authRef:apiVersion: v1kind: Secretname: nacos-authstrategy:# scope: 同步策略,full 表示全量同步,partial 表示部分同步scope: full# 是否同步配置刪除操作syncDeletion: true# conflictPolicy: 同步沖突策略,preferCluster 表示初次同步內容沖突時以Kubernetes集群配置為準,preferServer 表示以Nacos配置為準conflictPolicy: preferCluster
---
apiVersion: v1
kind: Secret
metadata:name: nacos-auth
data:#阿里云Mse Nacos采用AK SK進行鑒權accessKey: <base64 ak>secretKey: <base64 sk>#開源Nacos采用用戶名密碼進行鑒權username: <base64 your-nacos-username>password: <base64 your-nacos-password>
  1. 執行命令部署 DynamicConfiguration 到需要全量同步的 Kubernetes 集群命名空間下, 即可實現配置的全量同步
kubectl apply -f dc-demo.yaml -n <namespace>

K8s 集群命名空間配置部分同步 Nacos

  1. 編寫 DynamicConfiguration yaml 文件,和全量同步的區別主要在于 strategy 部分,并且要指定需要同步的 ConfigMap 和 Secret:
apiVersion: nacos.io/v1
kind: DynamicConfiguration
metadata:name: dc-demo
spec:nacosServer:# endpoint: nacos地址服務器,與serverAddr互斥,優先級高于serverAddr,與serverAddr二選一即可endpoint: <your-nacos-server-endpoint># serverAddr: nacos地址,與endpoint二選一即可serverAddr: <your-nacos-server-addr># namespace: 用戶指定的命名空間namespace: <your-nacos-namespace-id># authRef: 引用存放Nacos 客戶端鑒權信息的Secret,支持用戶名/密碼 和 AK/SK, Nacos服務端未開啟鑒權可忽略authRef:apiVersion: v1kind: Secretname: nacos-authstrategy:# scope: 同步策略,full 表示全量同步,partial 表示部分同步scope: partial# 是否同步配置刪除操作syncDeletion: true# conflictPolicy: 同步沖突策略,preferCluster 表示初次同步內容沖突時以Kubernetes集群配置為準,preferServer 表示以Nacos配置為準conflictPolicy: preferCluster# 需要同步的ConfigMap和SecretobjectRefs:- apiVersion: v1kind: ConfigMapname: nacos-config-cm- apiVersion: v1kind: Secretname: nacos-config-secret
---
apiVersion: v1
kind: Secret
metadata:name: nacos-auth
data:accessKey: <base64 ak>secretKey: <base64 sk>username: <base64 your-nacos-username>password: <base64 your-nacos-password>
  1. 執行命令部署 DynamicConfiguration 到需要同步的 Kubernetes 集群命名空間下,即可實現配置的部分同步
kubectl apply -f dc-demo.yaml -n <namespace>

通過以上的步驟,Nacos Controller 就會根據我們提供的 DynamicConfiguration 配置信息,自動實現 K8s 集群配置和 Nacos 配置之間的全量同步或者部分同步,讓我們來看看具體效果吧!

效果演示

以全量同步為例,在完成 Nacos-controller 的部署后,我們執行以下命令,查看當前 K8s 集群中默認命名空間下的 ConfigMap:

% kubectl get configmap
NAME               DATA   AGE
kube-root-ca.crt   1      63m

可以發現當前只有 kube-root-ca.crt 一個配置。

編寫 DynamicConfiguration yaml 文件,選擇全量同步模式,并執行命令部署:

apiVersion: nacos.io/v1
kind: DynamicConfiguration
metadata:name: dc-demo
spec:nacosServer:endpoint: nacos-serverAddrserverAddr: nacos-serverAddrnamespace: xxxxxxxxxxxxxxxxx #選擇要同步到的nacos命名空間strategy:scope: fullsyncDeletion: trueconflictPolicy: preferCluster
kubectl?apply -f dc-demo.yaml

查看對應的 Nacos 控制臺:

可以發現對應的命名空間下面已經多了一條分組為 configmap.kube-root-ca.crt,dataId 為 ca.crt 的 Nacos 配置,對應的 K8s 配置已經同步到了 Nacos 中。

此時我們通過 kubectl 命令在 K8s 中再創建一個 ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata:name: testconfignamespace: default
data:test.properties: "Hello, World"
kubectl?apply -f test.yaml

查看 Nacos 控制臺,可以發現命名空間下已經也多了一條對應的 Nacos 配置,dataId 為 ConfigMap 中的 Key,分組為 ConfigMap的Name:

在 Nacos 控制臺上編輯對應的配置內容并發布:

通過 kubectl 查看對應的 ConfigMap 內容:

kubectl describe configmap testconfigName:         testconfig
Namespace:    default
Labels:       <none>
Annotations:  <none>Data
====
test.properties:
----
Hi, WorldBinaryData
====Events:  <none>

可以發現對應的配置內容產生了更改,Nacos 上對于配置內容的變更同步到了 K8s 集群中。

同時,通過 Nacos 的歷史版本功能,還可以對歷史變更操作進行溯源定位,比較每個版本之間的內容差異,并在故障發生時及時回滾:

通過 Nacos-Controller 將 K8s 集群配置托管至 Nacos,用戶可以使用 Nacos 控制臺對 K8s 配置進行白屏化管理,避免使用 kubectl 進行的黑屏操作。同時,在 Nacos 上可以對不同環境的配置(開發、線上、測試)進行統一的管理,歷史版本功能也能幫助用戶進行審計、溯源和恢復。目前,Nacos-Controller 2.0 已經和 Nacos 3.0-BETA 版本同步發布,快來體驗下吧。

接入 Nacos 高階配置管理能力

Nacos-Controller 2.0 支持將 K8s 集群配置托管至 Nacos 進行雙向同步,讓 K8s 配置擁有了歷史版本,白屏化操作以及配置集中化管理等能力。

而如果你希望能夠更加高效的對應用配置進行管理,對配置管理還有以下的更高的要求:

  • 動態配置生效: 配置的更改能夠直接在應用中生效,無需重啟。
  • 配置灰度發布: 配置更新上線時,先在小部分節點進行灰度驗證,確認無風險后再全量推送。
  • 敏感配置安全存儲: 我的配置中存儲了密鑰等敏感機密的信息,要保證這些信息不會泄露。
  • 配置監聽查詢: 我希望直觀的了解有哪些節點在使用這份配置。

那我們建議你采用第二種方式:在應用中接入 Nacos sdk,即可輕松享受 Nacos 提供的以上高階配置管理能力:

配置灰度

Nacos 支持基于 IP 的灰度發布:

正式節點監聽到的內容:

receive:Hi, World

IP=192.168.255.254 的灰度節點監聽到的內容:

receive:Hi, World Gray

阿里云企業版 Mse Nacos 還額外提供了更強大的多版本標簽灰度的能力,歡迎了解。

配置監聽查詢

在 Nacos 控制臺上可以輕松查看有哪些客戶端監聽了對應的配置

敏感信息安全傳輸和存儲

如果敏感信息以明文形式存儲或傳輸,容易成為黑客攻擊的目標,導致數據泄露或系統被濫用。這些信息一旦泄露,可能對用戶隱私、企業安全和系統穩定性造成嚴重影響。Nacos 配置中心支持配置加密功能,并支持 TLS 傳輸加密,建設了完善的零信任安全體系,可以對存放在 Nacos 上的敏感信息從存儲到傳輸的全鏈路加密,大大提高安全性:

MSE Nacos 更進一步,和阿里云秘鑰管理服務 KMS 合作,支持對配置進行安全等級更高的非對稱加密。針對數據安全隱患,MSE Nacos 可為敏感配置提供滿足國家三級等保中數據安全要求的解決方案。

應用接入 Nacos SDK

以 Java 為例,當用戶沒有接入 Nacos,直接通過環境變量或者文件方式去 K8s 配置變化時,一般采用輪訓的方式:

String ENV_VARIABLE_NAME = "YOUR_ENV_VARIABLE_NAME"; // 替換為您的環境變量名稱
String lastValue = System.getenv(ENV_VARIABLE_NAME);
ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);// 每5秒檢查一次環境變量的變化
executorService.scheduleAtFixedRate(() -> {String currentValue = System.getenv(ENV_VARIABLE_NAME);if (currentValue != null && !currentValue.equals(lastValue)) {System.out.println("環境變量 " + ENV_VARIABLE_NAME + " 發生變化: 從 " + lastValue + " 變為 " + currentValue);lastValue = currentValue;}
}, 0, 5, TimeUnit.SECONDS);

而只修改幾行代碼,就可以接入 Nacos Java sdk,享受到 Nacos 配置管理的高階功能:

String serverAddr = "{serverAddr}";
String dataId = "{dataId}";
String group = "{group}";
Properties properties = new Properties();
# 指定Nacos的地址
properties.put("serverAddr", serverAddr);
ConfigService configService = NacosFactory.createConfigService(properties);
# 查詢Nacos的配置
String content = configService.getConfig(dataId, group, 5000);
# 監聽Nacos的配置
configService.addListener(dataId, group, new Listener() {@Overridepublic void receiveConfigInfo(String configInfo) {System.out.println("recieve1:" + configInfo);}@Overridepublic Executor getExecutor() {return null;}
});

而除了 Java 之外,Nacos 還提供了豐富的多語言支持,覆蓋了 Go/Python 等熱門編程語言,對應的開源社區也非常活躍,無論您的應用使用的是以上什么類型的編程語言,都可以采用類似的方式輕松接入,享受到 Nacos 高階的配置管理能力。

結語

無論是使用 Nacos-Controller 實現配置的雙向同步,還是直接在應用中接入 Nacos SDK 以獲得更高級的配置管理特性,都能顯著提升配置管理的靈活性、安全性和可維護性。使用 Nacos,您能夠更好地管理和優化您的應用配置,從而提高系統的穩定性和可靠性。此外,Nacos-Controller 2.0 還支持 Nacos 服務和 K8S Service 的同步。近期,Nacos 3.0-BETA 版本也已經重磅發布,在安全性方面顯著提升,同時增加了分布式鎖,模糊訂閱等新特性,歡迎各位體驗使用。

安裝 helm,參考文檔https://helm.sh/docs/intro/install/

相關鏈接

[1] Nacos 官網

https://nacos.io

[2] Nacos Github 主倉庫

https://github.com/alibaba/nacos

[3] 生態組倉庫

https://github.com/nacos-group

[4] MSE 配置灰度發布

https://help.aliyun.com/zh/mse/user-guide/configure-canary-release

Nacos 多語言生態倉庫:

[1] Nacos-GO-SDK

https://github.com/nacos-group/nacos-sdk-go

[2] Nacos-Python-SDK

https://github.com/nacos-group/nacos-sdk-python

[3] Nacos-Rust-SDK

https://github.com/nacos-group/nacos-sdk-rust

[4] Nacos C# SDK

https://github.com/nacos-group/nacos-sdk-csharp

[5] Nacos C++ SDK

https://github.com/nacos-group/nacos-sdk-cpp

[6] Nacos PHP-SDK

https://github.com/nacos-group/nacos-sdk-php

[7] Rust Nacos Server

https://github.com/nacos-group/r-nacos

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

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

相關文章

python自動化瀏覽器標簽頁的切換

#獲取全部標簽頁的句柄返回句柄的列表 handleswebdriver.window_handles#獲取全部標簽頁的句柄返回句柄的列表 print(len(handles)) 切換標簽頁 handleswebdriver.window_handles webdriver.switch_to.window(handles[index])#切換到第幾個標簽頁就寫幾 關閉標簽頁 關閉標…

微信小程序組件傳參

微信小程序組件傳參感覺和vue還是挺像的 父組件向子組件傳參 在小程序中父組件子組件傳參&#xff0c;主要使用properties屬性。演示下&#xff1a; 創建組件文件夾component&#xff0c;創建組件demoComponent&#xff0c;記得創建的時候選擇組件&#xff0c;不是page頁面 …

【嵌入式硬件】LAN9253說明書(中文版)

目錄 1.介紹 1.1總體介紹 1.2模式介紹 1.2.1微控制器模式: 1.2.2 擴展模式 1.2.3 數字IO模式 1.2.4 各模式圖 2.引腳說明 2.1 引腳總覽 2.2 引腳描述 2.2.1 LAN端口A引腳 2.2.2 LAN端口B引腳 2.2.3 LAN端口A和、B電源和公共引腳 2.2.4 SPI/SQI PINS 2.2.5 分布式時…

【C語言基礎】雙指針在qsort函數中的應用

在C語言中使用 qsort 對字符串數組&#xff08;如 char* 數組&#xff09;排序時&#xff0c;必須轉換為雙指針&#xff08;char**&#xff09;&#xff0c;這是由字符串數組的內存結構和 qsort 的工作原理決定的。以下是詳細解釋&#xff1a; 一、底層原理分析 1. 字符串數組…

批處理(Batch Processing)的詳解、流程及框架/工具的詳細對比

以下是批處理&#xff08;Batch Processing&#xff09;的詳解、流程及框架/工具的詳細對比&#xff1a; 一、批處理核心概念 定義&#xff1a; 批處理是離線處理大量數據或任務的自動化流程&#xff0c;特點是無人值守、高吞吐量、資源密集型&#xff0c;常用于數據清洗、報表…

基于FreeRTOS和LVGL的多功能低功耗智能手表(APP篇)

目錄 一、簡介 二、軟件框架 2.1 MDK工程架構 2.2 CubeMX框架 2.3 板載驅動BSP 1、LCD驅動 2、各個I2C傳感器驅動 3、硬件看門狗驅動 4、按鍵驅動 5、KT6328藍牙驅動 2.4 管理函數 2.4.1 StrCalculate.c 計算器管理函數 2.4.2 硬件訪問機制-HWDataAccess 2.4.3 …

【初階數據結構】——算法復雜度

一、前言 1、數據結構是什么&#xff1f; 數據結構(Data Structure)是計算機存儲、組織數據的?式&#xff0c;指相互之間存在?種或多種特定關系的數 據元素的集合。沒有?種單?的數據結構對所有?途都有?&#xff0c;所以我們要學各式各樣的數據結構&#xff0c; 如&…

記錄 | Pycharm中如何調用Anaconda的虛擬環境

目錄 前言一、步驟Step1 查看anaconda 環境名Step2 Python項目編譯器更改 更新時間 前言 參考文章&#xff1a; 參考視頻&#xff1a;如何在pycharm中使用Anaconda創建的python環境 自己的感想 這里使用的Pycharm 2024專業版的。我所使用的Pycharm專業版位置&#xff1a;【僅用…

linux如何用關鍵字搜索日志

在 Linux 系統中搜索日志是日常運維的重要工作&#xff0c;以下是幾種常用的關鍵字搜索日志方法&#xff1a; 1. 基礎 grep 搜索 bash 復制 # 基本搜索&#xff08;區分大小寫&#xff09; grep "keyword" /var/log/syslog# 忽略大小寫搜索 grep -i "error&…

K-均值聚類機器學習算法的優缺點

K-均值聚類是一種常用的無監督學習算法&#xff0c;用于將具有相似特征的數據點聚集到一起。以下是K-均值聚類算法的步驟及其優缺點&#xff1a; K-均值聚類算法步驟&#xff1a; 初始化&#xff1a;隨機選擇K個點作為初始的聚類中心。分配數據點&#xff1a;將每個數據點分配…

AI驅動SEO關鍵詞實戰策略

內容概要 AI驅動的SEO關鍵詞優化體系通過技術融合實現了策略升級。該框架以語義理解模型為基礎&#xff0c;結合實時流量監測與行業數據庫&#xff0c;構建了包含關鍵詞挖掘、競爭評估、內容適配三大核心模塊的閉環系統。通過自然語言處理&#xff08;NLP&#xff09;技術解析…

Golang|在線排查協程泄漏

根據我們的代碼&#xff0c;前5毫秒內&#xff0c;每隔1毫秒就會來一個請求&#xff0c;5毫秒之后由于前面的協程執行完&#xff0c;后面又會來新的協程&#xff0c;所以協程數目會保持穩定但是代碼一運行&#xff0c;協程數量一直增長&#xff0c;發生了協程泄漏 我們可以list…

Java項目之基于ssm的QQ村旅游網站的設計(源碼+文檔)

項目簡介 QQ村旅游網站實現了以下功能&#xff1a; 管理員權限操作的功能包括管理景點路線&#xff0c;板塊信息&#xff0c;留言板信息&#xff0c;旅游景點信息&#xff0c;酒店信息&#xff0c;對景點留言&#xff0c;景點路線留言以及酒店留言信息等進行回復&#xff0c;…

高級語言調用C接口(四)結構體(2)-Python

這個專欄好久沒有更新了&#xff0c;主要是坑開的有點大&#xff0c;也不知道怎么填&#xff0c;涉及到的開發語言比較多&#xff0c;寫起來比較累&#xff0c;需要看的人其實并不多&#xff0c;只能說&#xff0c;慢慢填吧&#xff0c;中間肯定還會插很多別的東西&#xff0c;…

JAVA 主流微服務常用框架及簡介

Java微服務架構的優勢在于其輕量級、高效資源利用&#xff0c;支持快速開發與靈活部署&#xff0c;擁有強大的生態系統與跨平臺兼容性&#xff0c;能夠實現高性能與穩定性&#xff0c;并允許獨立擴展與技術棧多樣性。然而&#xff0c;其劣勢也不容忽視&#xff0c;包括架構復雜…

兒童后期至青少年早期腦網絡隔離增強的發育機制研究

目錄 1 研究背景 2 研究方法 2.1 縱向數據集 2.2 圖像預處理 2.3 個體化區域放射組學相似網絡構建 2.4 分離度&#xff08;模塊化&#xff09;度量 2.5 分離度指數發育變化的建模 2.6 分離指數與認知表現的相關性分析 2.7 成像轉錄組分析 3 研究結果 3.1 三個尺度上…

redis 內存中放哪些數據?

在 Java 開發中,Redis 作為高性能內存數據庫,通常用于存儲高頻訪問、低延遲要求、短期有效或需要原子操作的數據。以下是 Redis 內存中常見的數據類型及對應的使用場景,適合面試回答: 1. 緩存數據(高頻訪問,降低數據庫壓力) 用戶會話(Session):存儲用戶登錄狀態、臨時…

Spring AOP 學習筆記 之 Advice詳解

學習材料&#xff1a;https://docs.spring.io/spring-framework/reference/core/aop/ataspectj/advice.html 1. 什么是 Advice&#xff08;通知&#xff09; 定義&#xff1a;Advice 是 AOP 的核心概念之一&#xff0c;表示在特定的連接點&#xff08;Join Point&#xff09;上…

數智讀書筆記系列029 《代數大腦:揭秘智能背后的邏輯》

《代數大腦:揭秘智能背后的邏輯》書籍簡介 作者簡介 加里F. 馬庫斯(Gary F. Marcus)是紐約大學心理學榮休教授、人工智能企業家,曾創立Geometric Intelligence(后被Uber收購)和Robust.AI公司。他在神經科學、語言學和人工智能領域發表了大量論文,并著有《重啟AI》等多部…

如何看電腦的具體配置?

李升偉 整理 要查看電腦的具體配置&#xff0c;可以通過系統工具、命令行工具或第三方軟件實現&#xff0c;以下是具體方法&#xff1a; 一、系統自帶工具查看&#xff08;無需安裝軟件&#xff09; Windows系統&#xff1a; 系統設置&#xff1a; 右鍵點擊桌面“此電腦”…