Nacos簡介—3.Nacos的配置簡介

大綱

1.Nacos生產集群Web端口與數據庫配置

2.Nacos生產集群的Distro協議核心參數

3.Nacos打通CMDB實現跨機房的就近訪問

4.Nacos基于SPI動態擴展機制來獲取CMDB的數據

5.基于Nacos SPI機制開發CMDB動態擴展

6.Nacos基于CMDB來實現多機房就近訪問

7.Nacos生產集群Prometheus + Grafana監控

8.Nacos生產集群的其他一些配置參數

1.Nacos生產集群Web端口與數據庫配置

參考的系統參數文檔:

https://nacos.io/zh-cn/docs/v2/guide/admin/system-configurations.html
#*************** Spring Boot Related Configurations ***************#
### Default web context path:
server.servlet.contextPath=/nacos
### Include message field
server.error.include-message=ALWAYS
### Default web server port:
server.port=8848#*************** Network Related Configurations ***************#
### If prefer hostname over ip for Nacos server addresses in cluster.conf:
### cluster.conf里是否應該填hostname
# nacos.inetutils.prefer-hostname-over-ip=false### Specify local server's IP:
### 本機IP,該參數設置后,將會使用這個IP去cluster.conf里進行匹配,請確保這個IP的值在cluster.conf里是存在的
# nacos.inetutils.ip-address=#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
### 數據庫類型
# spring.datasource.platform=mysql### Count of DB:
### 數據庫數目
# db.num=1### Connect URL of DB:
### 第一個數據庫的URL
# db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
## 第一個數據庫連接的用戶名
# db.user.0=nacos
### 第一個數據庫連接的密碼
# db.password.0=nacos### Connection pool configuration: hikariCP
### 數據庫連接池參數,使用的是hikari連接池,參數與hikari連接池相同,如db.pool.config.connectionTimeout或db.pool.config.maximumPoolSize
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2

2.Nacos生產集群的Distro協議核心參數

#*************** Naming Module Related Configurations ***************#
### Data dispatch task execution period in milliseconds: Will removed on v2.1.X, replace with nacos.core.protocol.distro.data.sync.delayMs
### 同步任務生成的周期,單位為毫秒
# nacos.naming.distro.taskDispatchPeriod=200### Data count of batch sync task: Will removed on v2.1.X. Deprecated
### 同步任務每批的key的數目
# nacos.naming.distro.batchSyncKeyCount=1000### Retry delay in milliseconds if sync task failed: Will removed on v2.1.X, replace with nacos.core.protocol.distro.data.sync.retryDelayMs
### 同步任務失敗的重試間隔,單位為毫秒
# nacos.naming.distro.syncRetryDelay=5000### If enable data warmup. If set to false, the server would accept request without local data preparation:
### 是否在Server啟動時進行數據預熱
# nacos.naming.data.warmup=true### If enable the instance auto expiration, kind like of health check of instance:
### 是否自動摘除臨時實例
# nacos.naming.expireInstance=true#*************** Distro Related Configurations ***************#### Distro data sync delay time, when sync task delayed, task will be merged for same data key. Default 1 second.
# nacos.core.protocol.distro.data.sync.delayMs=1000### Distro data sync timeout for one sync data, default 3 seconds.
# nacos.core.protocol.distro.data.sync.timeoutMs=3000### Distro data sync retry delay time when sync data failed or timeout, same behavior with delayMs, default 3 seconds.
# nacos.core.protocol.distro.data.sync.retryDelayMs=3000### Distro data verify interval time, verify synced data whether expired for a interval. Default 5 seconds.
# nacos.core.protocol.distro.data.verify.intervalMs=5000### Distro data verify timeout for one verify, default 3 seconds.
# nacos.core.protocol.distro.data.verify.timeoutMs=3000### Distro data load retry delay when load snapshot data failed, default 30 seconds.
# nacos.core.protocol.distro.data.load.retryDelayMs=30000

3.Nacos打通CMDB實現跨機房的就近訪問

(1)多機房部署時跨機房訪問的延遲問題

(2)Nacos的服務發現組件對接CMDB實現相同地域的就近訪問

(1)多機房部署時跨機房訪問的延遲問題

當服務進行多機房或者多地域部署時,跨地域的服務訪問往往延遲較高。一個城市內的機房間的典型網絡延遲在1ms左右,而跨城市的網絡延遲,例如廣州到北京大概為50ms。

(2)Nacos的服務發現組件對接CMDB實現相同地域的就近訪問

此時的希望就是能否讓服務消費者和服務提供者實現同地域就近訪問。一般在企業的生產實踐中,這樣的需求是通過打通CMDB來實現的。

CMDB一般用于存放與機器設備、應用、服務等相關的元數據,當企業的機器達到一定規模后就需要CMDB來存儲和管理它們的元數據。

有一些廣泛使用的屬性,如機器的IP、主機名、機房、應用、Region等,這些數據一般會在機器部署時錄入到CMDB,運維或者監控平臺會使用這些數據進行展示或者相關的運維操作。

通過讓Nacos的服務發現組件對接CMDB,然后配置好訪問規則,就可以實現服務消費者到服務提供者的就近訪問。

如果Nacos進行了多機房部署,由于CMDB會存儲多機房的元數據,那么就可以基于CMDB實現同機房就近訪問。

4.Nacos基于SPI動態擴展機制來獲取CMDB的數據

(1)Nacos應如何獲取CMDB里的數據

(2)Nacos對CMDB抽象的概念

(3)Nacos對CMDB約定的接口

(1)Nacos應如何獲取CMDB里的數據

基本上每個企業都會購買或自研搭建自己的CMDB。為了能夠解耦各企業的CMDB,一個比較好的策略是使用SPI機制。

Nacos約定CMDB的抽象調用接口,然后由各企業添加自己的CMDB插件,無需任何代碼上的重新構建,即可在運行狀態下對接上企業的CMDB。

Nacos定義了一個SPI接口,里面包含了與第三方CMDB約定的一些方法。依照約定實現相應的SPI接口后,將實現打成jar包放到Nacos安裝目錄,重啟Nacos即可讓Nacos與CMDB的數據打通。

所以如果希望Nacos可以獲取加載CMDB里的數據,那么就需要根據Nacos的SPI接口,編寫CMDB實現類并配置到Nacos中。

這樣Nacos啟動時就會動態掃描和加載編寫的CMDB接口實現類。通過編寫的CMDB實現類,就可以加載CMDB里的數據了。

(2)Nacos對CMDB抽象的概念

一.實體Entity

實體是CMDB里數據的承載方。在一般的CMDB中,一個實體可以指一個IP、應用或者服務。Nacos的這個實體會有很多屬性,比如IP的機房信息,服務的版本信息等。

package com.alibaba.nacos.api.cmdb.pojo;import java.util.Map;//CMDB entity.
public class Entity {private String type;private String name;private Map<String, String> labels;public String getType() { return type; }public void setType(String type) { this.type = type; }public String getName() { return name; }public void setName(String name) { this.name = name; }public Map<String, String> getLabels() { return labels; }public void setLabels(Map<String, String> labels) { this.labels = labels; }
}

二.實體類型Entity Type

Nacos并不限定實體一定是IP、應用或者服務,這取決于實際的業務場景。比如在服務發現場景,實體類型就是IP。

三.標簽Label

Label是Nacos抽象出的Entity屬性,Label定義為一個描述Entity屬性的K-V鍵值對,Label的key和value的取值范圍一般都是預先定義好的。當需要對Label進行變更,需要調用單獨的接口并觸發相應的事件。

一個常見的Label的例子是IP的機房信息。可認為機房(site)是Label的key,機房的集合(site1, site2)是Label的value。那么這個Label的定義就是:site: {site1, site2, site3}。

package com.alibaba.nacos.api.cmdb.pojo;import java.util.Set;//CMDB lable.
public class Label {private String name;private Set<String> values;private String description;public String getName() { return name; }public void setName(String name) { this.name = name; }public Set<String> getValues() { return values; }public void setValues(Set<String> values) { this.values = values; }public String getDescription() { return description; }public void setDescription(String description) { this.description = description; }
}

四.實體事件Entity Event

實體的標簽的變更事件。當CMDB的實體屬性發生變化,需要有一個事件機制來通知所有訂閱方。為了保證實體事件攜帶的變更信息是最新的,該事件只會包含變更實體的標識以及變更事件的類型,不會包含變更標簽的值。

(3)Nacos對CMDB約定的接口

第三方CMDB插件必須實現的接口:

package com.alibaba.nacos.api.cmdb.spi;import com.alibaba.nacos.api.cmdb.pojo.Entity;
import com.alibaba.nacos.api.cmdb.pojo.EntityEvent;
import com.alibaba.nacos.api.cmdb.pojo.Label;
import java.util.List;
import java.util.Map;
import java.util.Set;//Service to visit CMDB store.
public interface CmdbService {//Get all label names stored in CMDB.Set<String> getLabelNames();//Get all possible entity types in CMDB.Set<String> getEntityTypes();//Get label info.Label getLabel(String labelName);//Get label value of label name of ip.String getLabelValue(String entityName, String entityType, String labelName);//Get all label value of ip.Map<String, String> getLabelValues(String entityName, String entityType);//Dump all entities in CMDB.Map<String, Map<String, Entity>> getAllEntities();//get label change events.List<EntityEvent> getEntityEvents(long timestamp);//Get single entity.Entity getEntity(String entityName, String entityType);
}

一.獲取標簽列表的接口

SetgetLabelNames();

這個方法將返回CMDB中需要被Nacos識別的標簽名集合,CMDB插件可以按需決定返回什么標簽給Nacos。

不在這個集合的標簽將會被Nacos忽略,即使該標簽出現在實體的屬性里。允許該集合會在運行時動態變化,Nacos會定時調用該接口刷新標簽集合。

二.獲取實體類型的接口

SetgetEntityTypes();

獲取CMDB里實體的類型集合,不在這個集合的實體類型會被Nacos忽略。服務發現模塊目前需要的實體類型是IP。如果要通過打通CMDB數據來實現服務負載均衡,要在返回集合里包含IP。

三.獲取標簽詳情的接口

Label getLabel(String labelName);

獲取標簽的詳細信息,返回的Label類包含標簽的名字和標簽值的集合。如果某個實體的這個標簽的值不在標簽值集合里,將會被視為無效。

四.查詢實體的標簽值的接口

MapgetLabelValues(String entityName,String entityType);

獲取實體所有標簽的鍵值對,參數里包含實體的值和實體的類型。這個方法并不會每次在Nacos內部觸發查詢時調用,因為Nacos內部有一個CMDB數據緩存。只有當這個緩存失效或者不存在時,才會去訪問CMDB插件查詢數據。為了讓CMDB插件的實現簡單,Nacos內部實現了相應的緩存和刷新邏輯。

五.查詢實體的接口

Map<string, map> getAllEntities();
Entity getEntity(String entityName, String entityType);

查詢實體包含兩個方法:查詢所有實體的方法和查詢單個實體的方法。

查詢單個實體目前其實就是查詢這個實體的所有標簽。不過Nacos將這個方法與獲取所有標簽的方法區分開來,因為查詢單個實體方法后面可能會擴展,比查詢所有標簽獲取的信息要多。

查詢所有實體則是一次性將CMDB的所有數據拉取過來。該方法可能會比較消耗性能,無論對于Nacos還是CMDB都一樣消耗性能。Nacos調用該方法的策略是:通過可配置的定時任務來定時拉取所有數據。

在實現該CMDB插件時,也要關注CMDB服務本身性能,來采取合適策略。

六.查詢實體事件的接口

ListgetEntityEvents(long timestamp);

該方法意在獲取最近一段時間內實體的變更消息,增量去拉取變更的實體。因為Nacos不會實時去訪問CMDB插件查詢實體,需要這個拉取事件的方法來獲取實體的更新。參數里的timestamp為上一次拉取事件的時間,CMDB插件可選擇使用或忽略這個參數。

5.基于Nacos SPI機制開發CMDB動態擴展

具體的參考例子是:

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

nacos-examples里已經給出了一個示例plugin的實現,具體步驟如下:

步驟一:新建一個maven工程,引入依賴nacos-api

<dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-api</artifactId><version>0.7.0</version>
</dependency>

步驟二:引入打包插件

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration>
</plugin>

步驟三:實現com.alibaba.nacos.api.cmdb.CmdbService接口

public class ExampleCmdbServiceImpl implements CmdService {private int index = 1;...
}

步驟四:在"src/main/resource/"目錄下新建目錄"META-INF/services"

步驟五:在"src/main/resources/META-INF/services"目錄下新建文件

文件名是com.alibaba.nacos.api.cmdb.CmdbService,在文件里將第三步中創建的實現類全名寫入該文件:

com.alibaba.nacos.example.cmdb.plugin.ExampleCmdbServiceImpl

步驟六:代碼自測完成后,執行如下命令進行打包:

$ mvn package assembly:single -Dmaven.test.skip=true

步驟七:將target目錄下的包含依賴的jar包上傳到Nacos CMDB插件目錄

{nacos.home}/plugins/cmdb

步驟八:在Nacos的application.properties里打開加載插件開關

nacos.cmdb.loadDataAtStart=true

步驟九:重啟Nacos Server后便能加載到實現的Nacos-CMDB插件

從而讓Nacos獲取到CMDB里的數據。

6.Nacos基于CMDB來實現多機房就近訪問

Nacos在拿到CMDB的數據后,就可以運用CMDB數據的強大威力來實現多種靈活的負載均衡策略了。

下面舉例說明如何使用CMDB數據和Selector來實現就近訪問。假設目前Nacos已經通過CMDB拿到了一些IP的機房信息,且它們對應的標簽信息如下:

11.11.11.11site:x11
22.22.22.22site:x12
33.33.33.33site:x11
44.44.44.44site:x12
55.55.55.55site:x1311.11.11.11、22.22.22.22、33.33.33.33、44.44.44.44和55.55.55.55.55都包含了標簽site,
且它們對應的值分別為x11、x12、x11、x12、x13;

先注冊一個服務,下面掛載IP為11.11.11.11和22.22.22.22兩個服務實例。然后修改服務的"服務路由類型",并配置為基于同site優先的服務路由:

也就是將服務路由類型選擇為標簽,然后輸入如下的標簽表達式,這個表達式的格式和Nacos的Selector機制有關。

CONSUMER.label.site = PROVIDER.label.site

所謂的Selector機制其實就是,任何一個如下格式的表達式,Nacos都能夠實現基于同labelName優先的負載均衡策略。

CONSUMER.label.labelName = PROVIDER.label.labelName

假設服務消費者的IP分別為33.33.33.33、44.44.44.44和55.55.55.55,它們在使用如下接口查詢服務實例列表:

naming.selectInstances("nacos.test.1", true)

那么不同的消費者,將獲取到不同的實例列表。33.33.33.33獲取到IP為11.11.11.11的實例,44.44.44.44獲取到IP為22.22.22.22的實例,而55.55.55.55將同時獲取到IP為11.11.11.11和22.22.22.22兩個實例。

這樣,Nacos便基于Selector機制(標簽路由),實現了就近訪問。

7.Nacos生產集群Prometheus + Grafana監控

(1)Nacos生產集群可視化配置

#*************** Metrics Related Configurations ***************#
### Metrics for prometheus
#management.endpoints.web.exposure.include=*### Metrics for elastic search
management.metrics.export.elastic.enabled=false
#management.metrics.export.elastic.host=http://localhost:9200### Metrics for influx
management.metrics.export.influx.enabled=false
#management.metrics.export.influx.db=springboot
#management.metrics.export.influx.uri=http://localhost:8086
#management.metrics.export.influx.auto-create-db=true
#management.metrics.export.influx.consistency=one
#management.metrics.export.influx.compressed=true

(2)官網介紹的結合prometheus和grafana實現監控Nacos

https://nacos.io/zh-cn/docs/v2/guide/admin/monitor-guide.html

8.Nacos生產集群的其他一些配置參數

(1)Nacos生產集群安全認證核心參數

(2)Nacos生產集群服務器尋址參數

(3)Nacos生產集群Distro和Raft協議核心參數

(1)Nacos生產集群安全認證核心參數

#*************** Access Control Related Configurations ***************#
### If enable spring security, this option is deprecated in 1.2.0:
#spring.security.enabled=false### The ignore urls of auth, is deprecated in 1.2.0:
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**### The auth system to use, currently only 'nacos' and 'ldap' is supported:
nacos.core.auth.system.type=nacos### If turn on auth system:
nacos.core.auth.enabled=false### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=true### Since 1.4.1, Turn on/off white auth for user-agent: nacos-server, only for upgrade from old version.
nacos.core.auth.enable.userAgentAuthWhite=false### Since 1.4.1, worked when nacos.core.auth.enabled=true and nacos.core.auth.enable.userAgentAuthWhite=false.
### The two properties is the white list for auth and used by identity the request from other server.
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security### worked when nacos.core.auth.system.type=nacos
### The token expiration in seconds:
nacos.core.auth.plugin.nacos.token.expire.seconds=18000
### The default token:
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789### worked when nacos.core.auth.system.type=ldap,{0} is Placeholder,replace login username
#nacos.core.auth.ldap.url=ldap://localhost:389
#nacos.core.auth.ldap.basedc=dc=example,dc=org
#nacos.core.auth.ldap.userDn=cn=admin,${nacos.core.auth.ldap.basedc}
#nacos.core.auth.ldap.password=admin
#nacos.core.auth.ldap.userdn=cn={0},dc=example,dc=org
#nacos.core.auth.ldap.filter.prefix=uid

(2)Nacos生產集群服務器尋址參數

### MemberLookup
### Addressing pattern category, If set, the priority is highest
# nacos.core.member.lookup.type=[file,address-server]
## Set the cluster list with a configuration file or command-line argument
# nacos.member.list=192.168.16.101:8847?raft_port=8807,192.168.16.101?raft_port=8808,192.168.16.101:8849?raft_port=8809
## for AddressServerMemberLookup
# Maximum number of retries to query the address server upon initialization
# nacos.core.address-server.retry=5
## Server domain name address of [address-server] mode
# address.server.domain=jmenv.tbsite.net
## Server port of [address-server] mode
# address.server.port=8080
## Request address of [address-server] mode
# address.server.url=/nacos/serverlist

(3)Nacos生產集群Distro和Raft協議核心參數

#*************** JRaft Related Configurations ***************#### Sets the Raft cluster election timeout, default value is 5 second
# nacos.core.protocol.raft.data.election_timeout_ms=5000
### Sets the amount of time the Raft snapshot will execute periodically, default is 30 minute
# nacos.core.protocol.raft.data.snapshot_interval_secs=30
### raft internal worker threads
# nacos.core.protocol.raft.data.core_thread_num=8
### Number of threads required for raft business request processing
# nacos.core.protocol.raft.data.cli_service_thread_num=4
### raft linear read strategy. Safe linear reads are used by default, that is, the Leader tenure is confirmed by heartbeat
# nacos.core.protocol.raft.data.read_index_type=ReadOnlySafe
### rpc request timeout, default 5 seconds
# nacos.core.protocol.raft.data.rpc_request_timeout_ms=5000#*************** Distro Related Configurations ***************#### Distro data sync delay time, when sync task delayed, task will be merged for same data key. Default 1 second.
# nacos.core.protocol.distro.data.sync.delayMs=1000### Distro data sync timeout for one sync data, default 3 seconds.
# nacos.core.protocol.distro.data.sync.timeoutMs=3000
### Distro data sync retry delay time when sync data failed or timeout, same behavior with delayMs, default 3 seconds.
# nacos.core.protocol.distro.data.sync.retryDelayMs=3000
### Distro data verify interval time, verify synced data whether expired for a interval. Default 5 seconds.
# nacos.core.protocol.distro.data.verify.intervalMs=5000
### Distro data verify timeout for one verify, default 3 seconds.
# nacos.core.protocol.distro.data.verify.timeoutMs=3000
### Distro data load retry delay when load snapshot data failed, default 30 seconds.
# nacos.core.protocol.distro.data.load.retryDelayMs=30000

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

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

相關文章

Jest 快照測試

以下是關于 Jest 快照測試的系統化知識總結,從基礎使用到底層原理全面覆蓋: 一、快照測試核心原理 1. 工作機制三階段 #mermaid-svg-GC46t2NBvGv7RF0M {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GC46t2NBvGv…

第十六屆藍橋杯大賽軟件賽省賽 C/C++ 大學B組 [京津冀]

由于官方沒有公布題目的數據, 所以代碼僅供參考 1. 密密擺放 題目鏈接&#xff1a;P12337 [藍橋杯 2025 省 AB/Python B 第二場] 密密擺放 - 洛谷 題目描述 小藍有一個大箱子&#xff0c;內部的長寬高分別是 200、250、240&#xff08;單位&#xff1a;毫米&#xff09;&…

Spring 學習筆記之 @Transactional 異常不回滾匯總

使用springboot時&#xff0c;只要引入spring-jdbc/jpa相關的依賴后&#xff0c;在想要啟用事務的方法上加上Transactional注解就能開啟事務&#xff0c;碰到異常就能自動回滾。大大的提高了編碼的便捷性性&#xff0c;同時也不侵入代碼&#xff0c;保持了代碼的簡潔性。 默認情…

React 與 Vue 虛擬 DOM 實現原理深度對比:從理論到實踐

在現代前端開發中&#xff0c;React 和 Vue 作為最流行的兩大框架&#xff0c;都采用了虛擬 DOM&#xff08;Virtual DOM&#xff09; 技術來優化渲染性能。虛擬 DOM 的核心思想是通過 JavaScript 對象模擬真實 DOM&#xff0c;減少直接操作 DOM 的開銷&#xff0c;從而提高頁面…

WordPress AI 原創文章自動生成插件 24小時全自動生成SEO原創文章 | 多語言支持 | 智能配圖與排版

為什么選擇Linkreate AI內容生成插件&#xff1f; ? 全自動化工作流程 - 從關鍵詞挖掘到文章發布一站式完成 ? 多語言支持 - 輕松覆蓋全球市場&#xff08;中/英等多語種&#xff09; ? 智能SEO優化 - 自動生成搜索引擎友好的內容結構 ? AI智能配圖 - 每篇文章自動匹配高質…

GPU加速-系統CUDA12.5-Windows10

誤區注意 查看當前系統可支持的最高版本cuda&#xff1a;nvidia-smi 說明&#xff1a; 此處顯示的12.7只是驅動對應的最高版本&#xff0c;不一定是 / 也不一定需要是 當前Python使用的版本。但我們所安裝的CUDA版本需要 小于等于它&#xff08;即≤12.7&#xff09;因此即使…

IOT項目——DIY 氣象站

開源項目&#xff1a;ESP32 氣象站 作者&#xff1a;GiovanniAggiustatutto 原文鏈接&#xff1a;原文 開源項目&#xff1a;太陽能 WiFi 氣象站 V4.0 作者&#xff1a;opengreenenergy 原文鏈接&#xff1a;原文 DIY 氣象站 簡介1-制版2-物料 溫度設備塔風向標風速計雨量計框…

5G助力智慧城市的崛起——從概念到落地的技術實踐

5G助力智慧城市的崛起——從概念到落地的技術實踐 引言&#xff1a;智慧城市中的“隱形脈絡” 隨著城市化的快速推進&#xff0c;傳統的城市管理方式已經難以滿足人口增長和資源優化的需求。智慧城市的概念應運而生&#xff0c;通過技術創新實現智能化、可持續發展的城市生態…

【Linux】web服務器的部署和優化

目錄 nginx的安裝與啟用--/usr/share/nginx/html默認發布目錄 nginx的主配置文件--/etc/nginx/nginx_conf nginx的端口 nginx默認發布文件--index.html nginx默認發布目錄 nginx的訪問控制 基于IP地址的訪問控制 基于用戶認證的訪問控制 nginx的虛擬主機--/etc/nginx/…

結合五層網絡結構講一下用戶在瀏覽器輸入一個網址并按下回車后到底發生了什么?

文章目錄 實際應用第一步&#xff1a;用戶在瀏覽器輸入 www.baidu.com 并按下回車1. 瀏覽器觸發域名解析&#xff08;DNS查詢&#xff09; 第二步&#xff1a;DNS請求的逐層封裝與傳輸1. 應用層&#xff08;DNS協議&#xff09;2. 傳輸層&#xff08;UDP協議&#xff09;3. 網絡…

深入理解N皇后問題:從DFS到對角線優化

N皇后問題是一個經典的算法問題&#xff0c;要求在NN的棋盤上放置N個皇后&#xff0c;使得它們互不攻擊。本文將全面解析該問題的解法&#xff0c;特別聚焦于DFS算法和對角線優化的數學原理。 問題描述 在NN的國際象棋棋盤上放置N個皇后&#xff0c;要求&#xff1a; 任意兩個…

Java面試場景篇:分布式鎖的實現與組件詳解

互聯網大廠Java求職者面試&#xff1a;分布式鎖的實現與組件 在一場緊張而又充滿挑戰的面試中&#xff0c;Java架構師馬架構正面對著一位經驗豐富的面試官。以下是他們之間關于分布式鎖實現方式及相關問題的對話。 第一輪提問 面試官&#xff1a;請介紹一下分布式鎖的概念。…

關于使用 讀光-文字檢測-DBNet行檢測模型-中英-通用領域,版本問題

關于使用 讀光-文字檢測-DBNet行檢測模型-中英-通用領域&#xff0c;版本問題 pip install modelscopeSuccessfully installed certifi-2025.4.26 charset-normalizer-3.4.1 colorama-0.4.6 idna-3.10 modelscope-1.25.0 requests-2.32.3 tqdm-4.67.1 urllib3-2.4.0 pip insta…

刷刷刷刷刷RCE

云曦歷年考核 25年春開學考 RCCCE 開啟題目進行代碼審計 GET傳參傳入一個參數cmd&#xff0c;但對參數內容給了黑名單進行過濾 $blacklist /bash|nc|wget|ping|ls|cat|more|less|phpinfo|base64|echo|php|python|mv|cp|la|\-|\*|"|\>|\<|\%|\$/i; ls、cat等都…

2024江西ICPC部分題解

題目列表 A - Maliang Learning PaintingC - LiarG - Multiples of 5H - ConvolutionJ - Magic MahjongK - Magic Tree A - Maliang Learning Painting 題目來源&#xff1a;A - Maliang Learning Painting 思路分析 這是個簽到題&#xff0c;直接輸出abc即可 #include<b…

Pytorch圖像數據轉為Tensor張量

PyTorch的所有模型&#xff08;nn.Module&#xff09;都只接受Tensor格式的輸入&#xff0c;所以我們在使用圖像數據集時&#xff0c;必須將圖像轉換為Tensor格式。PyTorch提供了torchvision.transforms模塊來處理圖像數據集。torchvision.transforms模塊提供了一些常用的圖像預…

為什么vllm能夠加快大模型推理速度?

vLLM加速大模型推理的核心技術原理可分解為以下關鍵創新點&#xff1a; 一、?內存管理革命&#xff1a;PagedAttention? KV Cache分頁機制? 將傳統連續存儲的KV Cache拆分為非連續內存頁&#xff0c;類似操作系統內存分頁管理&#xff0c;消除內存碎片并實現動態分配。13B…

第十一章 多態

多態是面向對象開發過程中一個非常重要的概念。 11.1 多態概述 11.1.1 什么是多態 多態&#xff08;polymorphism&#xff09;&#xff0c;從字面理解是“多種形態&#xff0c;多種形式”&#xff0c;是一種將不同的特殊行為泛化為當個特殊記號的機制。 多態從實現的角度可劃…

RNN——循環神經網絡

一.基本結構 1.目標&#xff1a;處理序列數據&#xff08;時間序列&#xff0c;文本&#xff0c;語音等&#xff09;&#xff0c;捕捉時間維度上的依賴關系 核心機制&#xff1a;通過隱藏狀態&#xff08;hidden State&#xff09;傳遞歷史信息&#xff0c;每個時間步的輸入包…

性能提升手段--池化技術

看到hadoop代碼里有ByteBufferPool,使用池子來避免頻繁創建、銷毀ByteBuffer,減輕GC壓力,提高性能。 順便總結一下池化技術 一、什么是池化技術??? ??池化(Pooling)?? 是一種資源管理策略,通過??預先創建并復用資源??(如數據庫連接、線程、內存對象等)來提…