hadoop 3.X 分布式HA集成Kerbos(保姆級教程)

前提:先安裝Kerbos

1、創建keytab目錄

在每臺機器上上提前創建好對應的kertab目錄

[hadoop@tv3-hadoop-01?~]$ sudo mkdir -p /BigData/run/hadoop/keytab/

[hadoop@tv3-hadoop-01?~]$ sudo mkdir -p /opt/security/

[hadoop@tv3-hadoop-01?~]$ sudo chown hadoop:hadoop /BigData/run/hadoop/keytab/

[hadoop@tv3-hadoop-01 ~]$ ls -lrt /BigData/run/hadoop/

drwxr-xr-x 2 hadoop hadoop? 4096 Jun 26 23:22 keytab

2、創建kerbos證書

進入管理機器,比如tv3-hadoop-01【本例中hadoop服務啟動統一使用hadoop用戶】

# 進入kadmin

[root@tv3-hadoop-01 ~]# kadmin.local

Authenticating as principal hadoop/admin@EXAMPLE.COM with password.

kadmin.local: ?

# 查看用戶

kadmin.local:? listprincs

# 創建用戶

addprinc -randkey hadoop/tv3-hadoop-01@EXAMPLE.COM

3、證書添加

依次增加其他hdfs節點的驗證,并導出到/BigData/run/hadoop/keytab/hadoop.keytab這個文件:

addprinc -randkey hadoop/tv3-hadoop-01@EXAMPLE.COM
addprinc -randkey hadoop/tv3-hadoop-02@EXAMPLE.COM
addprinc -randkey hadoop/tv3-hadoop-03@EXAMPLE.COM
addprinc -randkey hadoop/tv3-hadoop-04@EXAMPLE.COM
addprinc -randkey hadoop/tv3-hadoop-05@EXAMPLE.COM
addprinc -randkey hadoop/tv3-hadoop-06@EXAMPLE.COMaddprinc -randkey HTTP/tv3-hadoop-01@EXAMPLE.COM
addprinc -randkey HTTP/tv3-hadoop-02@EXAMPLE.COM
addprinc -randkey HTTP/tv3-hadoop-03@EXAMPLE.COM
addprinc -randkey HTTP/tv3-hadoop-04@EXAMPLE.COM
addprinc -randkey HTTP/tv3-hadoop-05@EXAMPLE.COM
addprinc -randkey HTTP/tv3-hadoop-06@EXAMPLE.COMktadd -k /BigData/run/hadoop/keytab/hadoop.keytab hadoop/tv3-hadoop-01@EXAMPLE.COM
ktadd -k /BigData/run/hadoop/keytab/hadoop.keytab hadoop/tv3-hadoop-02@EXAMPLE.COM
ktadd -k /BigData/run/hadoop/keytab/hadoop.keytab hadoop/tv3-hadoop-03@EXAMPLE.COM
ktadd -k /BigData/run/hadoop/keytab/hadoop.keytab hadoop/tv3-hadoop-04@EXAMPLE.COM
ktadd -k /BigData/run/hadoop/keytab/hadoop.keytab hadoop/tv3-hadoop-05@EXAMPLE.COM
ktadd -k /BigData/run/hadoop/keytab/hadoop.keytab hadoop/tv3-hadoop-06@EXAMPLE.COMktadd -k /BigData/run/hadoop/keytab/HTTP.keytab HTTP/tv3-hadoop-01@EXAMPLE.COM
ktadd -k /BigData/run/hadoop/keytab/HTTP.keytab HTTP/tv3-hadoop-02@EXAMPLE.COM
ktadd -k /BigData/run/hadoop/keytab/HTTP.keytab HTTP/tv3-hadoop-03@EXAMPLE.COM
ktadd -k /BigData/run/hadoop/keytab/HTTP.keytab HTTP/tv3-hadoop-04@EXAMPLE.COM
ktadd -k /BigData/run/hadoop/keytab/HTTP.keytab HTTP/tv3-hadoop-05@EXAMPLE.COM
ktadd -k /BigData/run/hadoop/keytab/HTTP.keytab HTTP/tv3-hadoop-06@EXAMPLE.COM

4、權限修改&kertab同步

修改權限到hadoop啟動用戶,否則會有權限訪問問題,并同步到其他hdfs所有服務的節點上(JN,DN,NN,RM,NM)

su  - hadoopsudo chown hadoop:hadoop /BigData/run/hadoop/keytab/*.keytabscp /BigData/run/hadoop/keytab/hadoop.keytab  /BigData/run/hadoop/keytab/HTTP.keytab hadoop@tv3-hadoop-06:/BigData/run/hadoop/keytab

5、修改配置文件

5.1 hdfs-site.xml

    <property><name>dfs.block.access.token.enable</name><value>true</value><description>Enable HDFS block access tokens for secure operations</description></property><property><name>dfs.namenode.kerberos.principal</name><value>hadoop/_HOST@EXAMPLE.COM</value><description>namenode對應的kerberos賬戶為 nn/主機名@EXAMPLE.CPOM   _HOST會自動轉換為主機名</description></property><property><name>dfs.namenode.keytab.file</name><value>/BigData/run/hadoop/keytab/hadoop.keytab</value><description>因為使用-randkey 創建的用戶 密碼隨機不知道,所以需要用免密登錄的keytab文件 指定namenode需要用的keytab文件在哪里</description></property><property><name>dfs.namenode.kerberos.internal.spnego.principal</name><value>HTTP/_HOST@EXAMPLE.COM</value><description>https 相關(如開啟namenodeUI)使用的賬戶</description></property><property><name>dfs.namenode.kerberos.internal.spnego.keytab</name><value>/BigData/run/hadoop/keytab/HTTP.keytab</value></property><property><name>dfs.secondary.namenode.kerberos.principal</name><value>hadoop/_HOST@EXAMPLE.COM</value><description>secondarynamenode使用的賬戶</description></property><property><name>dfs.secondary.namenode.keytab.file</name><value>/BigData/run/hadoop/keytab/hadoop.keytab</value><description>sn對應的keytab文件</description></property><property><name>dfs.secondary.namenode.kerberos.internal.spnego.principal</name><value>HTTP/_HOST@EXAMPLE.COM</value><description>sn需要開啟http頁面用到的賬戶</description></property><property><name>dfs.secondary.namenode.kerberos.internal.spnego.keytab</name><value>/BigData/run/hadoop/keytab/HTTP.keytab</value></property><property><name>dfs.journalnode.kerberos.principal</name><value>hadoop/_HOST@EXAMPLE.COM</value></property><property><name>dfs.journalnode.keytab.file</name><value>/BigData/run/hadoop/keytab/hadoop.keytab</value></property><property><name>dfs.journalnode.kerberos.internal.spnego.principal</name><value>HTTP/_HOST@EXAMPLE.COM</value></property><property><name>dfs.journalnode.kerberos.internal.spnego.keytab</name><value>/BigData/run/hadoop/keytab/HTTP.keytab</value></property><property><name>dfs.encrypt.data.transfer</name><value>true</value><description>數據傳輸協議激活數據加密</description></property><property><name>dfs.datanode.kerberos.principal</name><value>hadoop/_HOST@EXAMPLE.COM</value><description>datanode用到的賬戶</description></property><property><name>dfs.datanode.keytab.file</name><value>/BigData/run/hadoop/keytab/hadoop.keytab</value><description>datanode用到的keytab文件路徑</description></property><property><name>dfs.data.transfer.protection</name><value>integrity</value></property><property><name>dfs.https.port</name><value>50470</value></property><!-- required if hdfs support https --><property><name>dfs.http.policy</name><value>HTTPS_ONLY</value></property><!-- WebHDFS security config --><property><name>dfs.web.authentication.kerberos.principal</name><value>HTTP/_HOST@EXAMPLE.COM</value><description>web hdfs 使用的賬戶</description></property><property><name>dfs.web.authentication.kerberos.keytab</name><value>/BigData/run/hadoop/keytab/HTTP.keytab</value><description>對應的keytab文件</description></property>

5.2 core-site.xml

    <property><name>dfs.block.access.token.enable</name><value>true</value><description>Enable HDFS block access tokens for secure operations</description></property><property><name>hadoop.security.authorization</name><value>true</value><description>是否開啟hadoop的安全認證</description></property><property><name>hadoop.security.authentication</name><value>kerberos</value><description>使用kerberos作為hadoop的安全認證方案</description></property><property><name>hadoop.rpc.protection</name><value>authentication</value><description>authentication : authentication only (default); integrity : integrity check in addition to authentication; privacy : data encryption in addition to integrity</description></property><property><name>hadoop.security.auth_to_local</name><value>RULE:[2:$1@$0](hadoop@.*EXAMPLE.COM)s/.*/hadoop/RULE:[2:$1@$0](HTTP@.*EXAMPLE.COM)s/.*/hadoop/DEFAULT</value></property>

5.3?yarn-site.xml

    <property><name>hadoop.http.authentication.type</name><value>kerberos</value></property><property><name>hadoop.http.filter.initializers</name><value>org.apache.hadoop.security.AuthenticationFilterInitializer</value></property><property><name>yarn.resourcemanager.webapp.delegation-token-auth-filter.enabled</name><value>false</value><description>標記以啟用使用RM身份驗證篩選器覆蓋默認kerberos身份驗證篩選器以允許使用委派令牌進行身份驗證(如果缺少令牌,則回退到kerberos)。僅適用于http身份驗證類型為kerberos的情況。</description></property><property><name>hadoop.http.authentication.kerberos.principal</name><value>HTTP/_HOST@EXAMPLE.COM</value></property><property><name>hadoop.http.authentication.kerberos.keytab</name><value>/BigData/run/hadoop/keytab/HTTP.keytab</value></property><property><name>yarn.acl.enable</name><value>true</value></property><property><name>yarn.web-proxy.principal</name><value>HTTP/_HOST@EXAMPLE.COM</value></property><property><name>yarn.web-proxy.keytab</name><value>/BigData/run/hadoop/keytab/HTTP.keytab</value></property><property><name>yarn.resourcemanager.principal</name><value>hadoop/_HOST@EXAMPLE.COM</value></property><property><name>yarn.resourcemanager.keytab</name><value>/BigData/run/hadoop/keytab/hadoop.keytab</value></property><!-- nodemanager --><property><name>yarn.nodemanager.principal</name><value>hadoop/_HOST@EXAMPLE.COM</value></property><property><name>yarn.nodemanager.keytab</name><value>/BigData/run/hadoop/keytab/hadoop.keytab</value></property><property><name>yarn.nodemanager.container-executor.class</name><value>org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor</value>
</property><property><name>yarn.nodemanager.linux-container-executor.group</name><value>hadoop</value></property><property><name>yarn.nodemanager.linux-container-executor.path</name><value>/BigData/run/hadoop/bin/container-executor</value></property><!-- webapp webapp configs --><property><name>yarn.resourcemanager.webapp.spnego-principal</name><value>HTTP/_HOST@EXAMPLE.COM</value></property><property><name>yarn.resourcemanager.webapp.spnego-keytab-file</name><value>/BigData/run/hadoop/keytab/HTTP.keytab</value></property><property><name>yarn.timeline-service.http-authentication.type</name><value>kerberos</value><description>Defines authentication used for the timeline server HTTP endpoint. Supported values are: simple | kerberos | #AUTHENTICATION_HANDLER_CLASSNAME#</description></property><property><name>yarn.timeline-service.principal</name><value>hadoop/_HOST@EXAMPLE.COM</value></property><property><name>yarn.timeline-service.keytab</name><value>/BigData/run/hadoop/keytab/hadoop.keytab</value></property><property><name>yarn.timeline-service.http-authentication.kerberos.principal</name><value>HTTP/_HOST@EXAMPLE.COM</value></property><property> <name>yarn.timeline-service.http-authentication.kerberos.keytab</name><value>/BigData/run/hadoop/keytab/HTTP.keytab</value></property><property><name>yarn.nodemanager.container-localizer.java.opts</name><value>-Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.krb5.realm=EXAMPLE.COM -Djava.security.krb5.kdc=tv3-hadoop-01:88</value></property><property><name>yarn.nodemanager.health-checker.script.opts</name><value>-Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.krb5.realm=EXAMPLE.COM -Djava.security.krb5.kdc=tv3-hadoop-01:88</value></property><property><name>yarn.nodemanager.linux-container-executor.nonsecure-mode.local-user</name><value>hadoop</value></property><property><name>yarn.nodemanager.linux-container-executor.group</name><value>hadoop</value></property>

5.4?mapred-site.xml


<property><name>mapreduce.map.java.opts</name><value>-Xmx1638M -Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.krb5.realm=EXAMPLE.COM -Djava.security.krb5.kdc=tv3-hadoop-01:88</value>
</property><property><name>mapreduce.reduce.java.opts</name><value>-Xmx3276M -Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.krb5.realm=EXAMPLE.COM -Djava.security.krb5.kdc=tv3-hadoop-01:88</value>
</property><property><name>mapreduce.jobhistory.keytab</name><value>/BigData/run/hadoop/keytab/hadoop.keytab</value>
</property><property><name>mapreduce.jobhistory.principal</name><value>hadoop/_HOST@EXAMPLE.COM</value>
</property><property><name>mapreduce.jobhistory.webapp.spnego-keytab-file</name><value>/BigData/run/hadoop/keytab/HTTP.keytab</value>
</property><property><name>mapreduce.jobhistory.webapp.spnego-principal</name><value>HTTP/_HOST@EXAMPLE.COM</value>
</property>

5.5 配置文件同步到各個節點

cd /BigData/run/hadoop/etc/hadoop
scp hdfs-site.xml  yarn-site.xml core-site.xml mapred-site.xml hadoop@tv3-hadoop-06:/BigData/run/hadoop/etc/hadoop/

6、配置SSL(開啟https)

6.1 創建https證書(需要在每臺機器上執行)
?

[hadoop@tv3-hadoop-01?hadoop]# mkdir -p /opt/security/kerberos_https

[hadoop@tv3-hadoop-01 hadoop]# cd /opt/security/kerberos_https

6.2 在任意一個hadoop節點生成CA證書

[root@tv3-hadoop-01 kerberos_https]# openssl req -new -x509 -keyout hdfs_ca_key -out hdfs_ca_cert -days 9999 -subj /C=CN/ST=shanxi/L=xian/O=hlk/OU=hlk/CN=tv3-hadoop01
Generating a 2048 bit RSA private key
...........................................................................................+++
.................................................................................+++
writing new private key to 'hdfs_ca_key'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
[root@tv3-hadoop-01 kerberos_https]# ls -lrt 
total 8
-rw-r--r-- 1 root root 1834 Jun 29 09:45 hdfs_ca_key
-rw-r--r-- 1 root root 1302 Jun 29 09:45 hdfs_ca_cert

6.3 將上面生成的CA 證書發送到每個節點上


scp -r /opt/security/kerberos_https root@tv3-hadoop-06:/opt/security/

?6.4 在每個hadoop節點上制作證書

cd /opt/security/kerberos_https# 所有需要輸入密碼的地方全部輸入123456(方便起見,如果你對密碼有要求請自行修改)# 1  輸入密碼和確認密碼:123456,此命令成功后輸出keystore文件name="CN=$HOSTNAME, OU=hlk, O=hlk, L=xian, ST=shanxi, C=CN"#需要輸入第一步輸入的密碼四次keytool -keystore keystore -alias localhost -validity 9999 -genkey -keyalg RSA -keysize 2048 -dname "$name"# 2 輸入密碼和確認密碼:123456,提示是否信任證書:輸入yes,此命令成功后輸出truststore文件keytool -keystore truststore -alias CARoot -import -file hdfs_ca_cert# 3 輸入密碼和確認密碼:123456,此命令成功后輸出cert文件keytool -certreq -alias localhost -keystore keystore -file cert# 4 此命令成功后輸出cert_signed文件openssl x509 -req -CA hdfs_ca_cert -CAkey hdfs_ca_key -in cert -out cert_signed -days 9999 -CAcreateserial# 5 輸入密碼和確認密碼:123456,是否信任證書,輸入yes,此命令成功后更新keystore文件keytool -keystore keystore -alias CARoot -import -file hdfs_ca_certkeytool -keystore keystore -alias localhost -import -file cert_signed[root@tv3-hadoop-06 kerberos_https]# ls -lrt
total 28
-rw-r--r-- 1 root root 1302 Jun 29 09:57 hdfs_ca_cert
-rw-r--r-- 1 root root 1834 Jun 29 09:57 hdfs_ca_key
-rw-r--r-- 1 root root  984 Jun 29 10:03 truststore
-rw-r--r-- 1 root root 1085 Jun 29 10:03 cert
-rw-r--r-- 1 root root   17 Jun 29 10:04 hdfs_ca_cert.srl
-rw-r--r-- 1 root root 1188 Jun 29 10:04 cert_signed
-rw-r--r-- 1 root root 4074 Jun 29 10:04 keystore

6.5?修改SSL server文件

在${HADOOP_HOME}/etc/hadoop目錄構建ssl-server.xml文件

<configuration><property><name>ssl.server.truststore.location</name><value>/opt/security/kerberos_https/truststore</value><description>Truststore to be used by NN and DN. Must be specified.</description></property><property><name>ssl.server.truststore.password</name><value>123456</value><description>Optional. Default value is "". </description></property><property><name>ssl.server.truststore.type</name><value>jks</value><description>Optional. The keystore file format, default value is "jks".</description></property><property><name>ssl.server.truststore.reload.interval</name><value>10000</value><description>Truststore reload check interval, in milliseconds. Default value is 10000 (10 seconds). </description></property><property><name>ssl.server.keystore.location</name><value>/opt/security/kerberos_https/keystore</value><description>Keystore to be used by NN and DN. Must be specified.</description></property><property><name>ssl.server.keystore.password</name><value>123456</value><description>Must be specified.</description></property><property><name>ssl.server.keystore.keypassword</name><value>123456</value><description>Must be specified.</description></property><property><name>ssl.server.keystore.type</name><value>jks</value><description>Optional. The keystore file format, default value is "jks".</description></property><property><name>ssl.server.exclude.cipher.list</name><value>TLS_ECDHE_RSA_WITH_RC4_128_SHA,SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA,SSL_RSA_WITH_DES_CBC_SHA,SSL_DHE_RSA_WITH_DES_CBC_SHA,SSL_RSA_EXPORT_WITH_RC4_40_MD5,SSL_RSA_EXPORT_WITH_DES40_CBC_SHA,SSL_RSA_WITH_RC4_128_MD5</value><description>Optional. The weak security cipher suites that you want excludedfrom SSL communication.</description></property></configuration>

6.6 修改SSL-client文件

<configuration><property><name>ssl.client.truststore.location</name><value>/opt/security/kerberos_https/truststore</value><description>Truststore to be used by clients like distcp. Must be specified.  </description></property><property><name>ssl.client.truststore.password</name><value>123456</value><description>Optional. Default value is "". </description></property><property><name>ssl.client.truststore.type</name><value>jks</value><description>Optional. The keystore file format, default value is "jks".</description></property><property><name>ssl.client.truststore.reload.interval</name><value>10000</value><description>Truststore reload check interval, in milliseconds. Default value is 10000 (10 seconds). </description></property><property><name>ssl.client.keystore.location</name><value>/opt/security/kerberos_https/keystore</value><description>Keystore to be used by clients like distcp. Must be   specified.   </description></property><property><name>ssl.client.keystore.password</name><value>123456</value><description>Optional. Default value is "". </description></property><property><name>ssl.client.keystore.keypassword</name><value>123456</value><description>Optional. Default value is "". </description></property><property><name>ssl.client.keystore.type</name><value>jks</value><description>Optional. The keystore file format, default value is "jks". </description></property></configuration>

6.7 hdfs配置HTTPS(修改后需要同步到每個節點)

? <property><name>dfs.http.policy</name><value>HTTPS_ONLY</value><description>所有開啟的web頁面均使用https, 細節在ssl server 和client那個配置文件內配置</description></property>

7、啟動hadoop基礎測試

7.1 HA模式啟動順序

建議依次啟動JN、NN、ZKFC、DN、RM、NM服務

7.2?啟動JN(每個服務啟動之前需要init單獨的節點)

kinit -kt /BigData/run/hadoop/keytab/hadoop.keytab hadoop/$HOSTNAME@EXAMPLE.COM
##重啟JournalNodehadoop-daemon.sh stop journalnode && hadoop-daemon.sh start journalnode##啟動JournalNodehadoop-daemon.sh start journalnode##停止JournalNodehadoop-daemon.sh stop journalnode

7.3?啟動NameNode和ZKFC服務

如果是新集群,需要提前format

hadoop namenode -format
kinit -kt /BigData/run/hadoop/keytab/hadoop.keytab hadoop/$HOSTNAME@EXAMPLE.COM
##重啟nnhadoop-daemon.sh stop namenode && hadoop-daemon.sh start namenode##啟動nnhadoop-daemon.sh start namenode##停止nnhadoop-daemon.sh stop namenode##重啟zkfchadoop-daemon.sh stop zkfc && hadoop-daemon.sh start zkfc##啟動zkfchadoop-daemon.sh start zkfc##停止zkfchadoop-daemon.sh stop zkfc

7.4?啟動DatanNode服務

kinit -kt /BigData/run/hadoop/keytab/hadoop.keytab hadoop/$HOSTNAME@EXAMPLE.COM
##重啟dnhadoop-daemon.sh stop datanode && hadoop-daemon.sh start datanode##啟動dnhadoop-daemon.sh start datanode##停止dnhadoop-daemon.sh stop datanode

7.5?驗證HA功能(多NameNode)

[hadoop@tv3-hadoop-01 hadoop]$ hdfs haadmin -failover nn2 nn1

7.6?驗證HDFS文件讀寫

[hadoop@tv3-hadoop-01 ~]$ echo '123' > b
[hadoop@tv3-hadoop-01 ~]$ hdfs dfs -put -f b /tmp/
[hadoop@tv3-hadoop-01 ~]$ hdfs dfs -cat /tmp/b
123
[hadoop@tv3-hadoop-01 ~]$ 

7.7?啟動HTTPS后 webui無法訪問UI狀態

7.8?啟動Resoucemanager服務

kinit -kt /BigData/run/hadoop/keytab/hadoop.keytab hadoop/$HOSTNAME@EXAMPLE.COM
##重啟rmyarn --daemon stop resourcemanager && yarn --daemon start resourcemanager##啟動rmyarn --daemon start resourcemanager##停止rmyarn --daemon stop resourcemanager

7.9. 啟動Nodemanager服務

kinit -kt /BigData/run/hadoop/keytab/hadoop.keytab hadoop/$HOSTNAME@EXAMPLE.COM
##重啟rmyarn --daemon stop nodemanager && yarn --daemon start nodemanager
##啟動rmyarn --daemon start nodemanager##停止rmyarn --daemon stop nodemanager

7.10?驗證Mapreduce job

hadoop jar /BigData/run/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar pi 5 10

看到下面結果代表YARN已經部署ok

Job Finished in 66.573 seconds
Estimated value of Pi is 3.28000000000000000000
[hadoop@tv3-hadoop-01 hadoop]$ 

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

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

相關文章

【Python從入門到進階】59、Pandas庫中Series對象的操作(二)

接上篇《58、Pandas庫中Series對象的操作(一)》 上一篇我們講解了Pandas庫中Series對象的基本概念、對象創建和操作&#xff0c;本篇我們來繼續學習Series對象的運算、函數應用、時間序列操作&#xff0c;以及Series的案例實踐。 一、Series對象的運算 1. 數值型數據的算術運…

1、音視頻解封裝流程---解復用

對于一個視頻文件(mp4格式/flv格式)&#xff0c;audio_pkt或者video_pkt是其最基本的數據單元&#xff0c;即視頻文件是由獨立的視頻編碼包或者音頻編碼包組成的。 解復用就是從視頻文件中把視頻包/音頻包單獨讀取出來保存成獨立文件&#xff0c;那么如何得知packet是視頻包還是…

指針賦值與引用傳遞:C語言的基礎知識與實踐技巧

指針賦值與引用傳遞&#xff1a;C語言的基礎知識與實踐技巧 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; **1. **引言 在C語言中&#xff0c;指針是一種強…

Vue CLI VS Vite

Vue CLI與Vite區別&#xff1a; Vue CLI與Vite之間存在明顯的區別&#xff0c;這些區別主要體現在實現原理、優化策略、開發環境速度、構建速度、依賴關系分析和插件系統等方面。以下是關于Vue CLI和Vite區別的詳細分析&#xff1a; 實現原理&#xff1a; Vue CLI&#xff1a…

【Spring Boot】Spring Boot簡介

1、概述 Spring Boot是一個用于創建獨立、生產級別的基于Spring的應用程序的開發框架。旨在簡化Spring應用的初始搭建和開發過程。它通過自動配置和大量默認配置&#xff0c;使得開發者能夠快速搭建一個獨立的Spring應用&#xff0c;無需進行大量的手動配置。 2、主要特點 快…

【一篇搞懂】操作系統期末大題:進程同步與互斥 PV操作

文章目錄 一、前言&#x1f680;&#x1f680;&#x1f680;二、正文&#xff1a;??????題型一&#xff1a;利用信號量實現前驅關系題型二&#xff1a;利用信號量實現資源同步與互斥 一、前言&#x1f680;&#x1f680;&#x1f680; 本文簡介&#xff1a;這是一篇基于b…

無人機遠程控制:北斗短報文技術詳解

無人機&#xff08;UAV&#xff09;技術的快速發展和應用&#xff0c;使得遠程控制成為了一項關鍵技術。無人機遠程控制涉及無線通信、數據處理等多個方面&#xff0c;其中北斗短報文技術以其獨特的優勢&#xff0c;在無人機遠程控制領域發揮著重要作用。本文將詳細解析無人機遠…

2024-06-26 base SAS programming 學習筆記6(proc report)

proc report可以生成報表&#xff0c;基本格式&#xff1a; proc report data options; (options 可以是windows/WD表示將結果輸出至單獨的報表窗口&#xff0c;或者nowindows/nowd將結果輸出至HTML結果窗口) column variables ;(篩選待輸出的變量&#xff0c;變量名與變量名之…

09_計算機網絡模型

目錄 OSI/RM七層模型 OSI/RM七層模型 各層介紹及硬件設備 傳輸介質 TCP/IP協議簇 網絡層協議 傳輸層協議 應用層協議 完整URL的組成 IP地址表示與計算 分類地址格式 子網劃分和超網聚合 無分類編址 特殊含義的IP地址 IPv6協議 過渡技術 OSI/RM七層模型 OSI/RM七…

區間動態規劃——最長回文子序列長度(C++)

把夜熬成粥&#xff0c;然后喝了它。 ——2024年7月1日 書接上回&#xff1a;區間動態規劃——最長回文子串&#xff08;C&#xff09;-CSDN博客&#xff0c;大家有想到解決辦法嗎&#xff1f; 題目描述 給定一個字符串s&#xff08;s僅由數字和英文大小寫字母組成&#xff0…

微積分-導數3(微分法則)

常見函數的導數 常量函數的導數 d d x ( c ) 0 \frac{d}{dx}(c) 0 dxd?(c)0 常量函數的圖像是一條水平線 y c y c yc&#xff0c;它的斜率為0&#xff0c;所以我們必須有 f ′ ( x ) 0 f(x) 0 f′(x)0。從導數的定義來看&#xff0c;證明也很簡單&#xff1a; f ′ …

在node.js環境中使用web服務器http-server運行html靜態文件

http-server http-server是一個超輕量級web服務器&#xff0c;它可以將任何一個文件夾當作服務器的目錄供自己使用。 當我們想要在服務器運行一些代碼&#xff0c;但是又不會配置服務器的時候&#xff0c;就可以使用http-server就可以搞定了。 使用方法 因為http-server需要…

Linux Vim 進階教程

Linux Vim 進階教程 1. 簡介 Vim&#xff08;Vi IMproved&#xff09;是一款功能強大的文本編輯器&#xff0c;廣泛應用于Linux和Unix系統中。本教程將深入探討Vim的高級功能和技巧&#xff0c;幫助您提升編輯效率和使用體驗。 2. Vim 配置和插件管理 2.1 配置文件 .vimrc …

QT拖放事件之三:自定義拖放操作-利用QDrag來拖動完成數據的傳輸

1、運行效果 1)Qt::MoveAction 2)Qt::CopyAction 2、源碼 #include "Widget.h" #include "ui_Widget.h" #include "common.h"

二級建造師(建筑工程專業)考試題庫,高效備考!!!

16.在施工合同履行期間發生的變更事項中&#xff0c;屬于工程變更的是&#xff08;&#xff09;。 A.質量要求變更 B.分包單位變更 C.合同價款變更 D.相關法規變更 答案&#xff1a;A 解析&#xff1a;工程變更一般是指在工程施工過程中&#xff0c;根據合同約定對施工的…

練習 String翻轉 注冊處理 字符串統計

p493 將字符串中指定部分進行翻轉 package chapter;public class reverse {public static void main(String[] args) {String str "abcdef";str reverseMethod(str,0,3);System.out.println(str);}public static String reverseMethod(String str, int start, in…

恭賀甘露海首屆道教南宗養生論壇暨天臺山第十屆道醫大會圓滿成功

6月13日&#xff0c;首屆中國道教南宗養生論壇暨天臺山第十屆道醫學術交流大會在浙江新昌重陽宮千人會場隆重開幕。 本次大會主辦單位&#xff1a;天臺山桐柏宮 中國民間中醫醫藥研究開發協會道醫學分會&#xff0c; 承辦單位&#xff1a;新昌縣重陽宮 &#xff0c;協辦單位&…

網絡基礎:靜態路由

靜態路由是一種由網絡管理員手動配置的路由方式&#xff0c;用于在網絡設備&#xff08;如路由器或交換機&#xff09;之間傳遞數據包。與動態路由不同&#xff0c;靜態路由不會根據網絡狀態的變化自動調整。 不同廠商的網絡設備在靜態路由的配置上有些許差異&#xff1b;下面…

什么是以太坊合約ABI(Application Binary Interface)

文章目錄 什么是以太坊合約ABI一、背景二、ABI&#xff08;Application Binary Interface&#xff09;三、怎么生成ABIsolc命令 四、abi內容FunctionEvent函數選擇器 五、參考 什么是以太坊合約ABI 一、背景 以太坊的智能合約程序&#xff0c;是在以太坊虛擬機&#xff08;Et…

網絡構建關鍵技術_2.IPv4與IPv6融合組網技術

互聯網數字分配機構&#xff08;IANA&#xff09;在2016年已向國際互聯網工程任務組&#xff08;IETF&#xff09;提出建議&#xff0c;要求新制定的國際互聯網標準只支持IPv6&#xff0c;不再兼容IPv4。目前&#xff0c;IPv6已經成為唯一公認的下一代互聯網商用解決方案&#…