Haproxy安裝與配置

Haproxy安裝與配置

有關高負載均衡的軟件,目前使用比較多的是haproxy、nginx和lvs。下面我們就開始學習haprxoy這款軟件。

1、Haproxy概念

1.1、haproxy原理

haproxy提供高可用性、負載均衡以及基于TCP(第四層)和HTTP(第七層)應用的代理,支持虛擬主機,它是免費、快速并且可靠的一種解決方案。

haproxy特別適用于那些負載特別大的web站點,這些站點通常又需要會話保持或七層處理。haproxy運行在時下的硬件上,完全可以支持數以萬計的并發連接,并且它的運行模式使得它可以很簡單安全的整合進您當前的架構中,同時可以保護你的web服務器不被暴露到網絡上。

haproxy實現了一種事件驅動、單一進程模型,此模型支持非常大的并發連接數。多進程或多線程模型受內存限制、系統調度器限制以及無處不在的鎖限制,很少能處理數千并發連接。

事件驅動模型因為在有更好的資源和時間管理的用戶端(User-Space)實現所有這些任務,所以沒有這些問題。此模型的弊端是,在多核系統上,這些程序通常擴展性較差。這就是為什么他們必須進行優化以使每個CPU時間片(Cycle)做更多的工作。

1.2、haproxy的優點

  • 免費開源,穩定性也是非常好。單haproxy也跑得不錯,穩定性可以與硬件級的F5相媲美。
  • 根據官方文檔,haproxy可以跑滿10Gbps,這個數值作為軟件級負載均衡器是相當驚人的。
  • haproxy支持連接拒絕:因為維護一個連接的打開的開銷是很低的,有時我們很需要限制gongji蠕蟲(attack bots),也就是說限制它們的連接打開從而限制它們的危害。這個已經為一個陷于小型DDoSgongji的網站開發了而且已經拯救了很多站點,這個優點也是其它負載均衡器沒有的。
  • haproxy支持全透明代理(已具備硬件防火墻的典型特點):可以用客戶端IP地址或者任何其他地址來連接后端服務器。這個特性僅在Linux 2.4/2.6內核打了tcp proxy補丁后才可以使用。這個特性也使得為某特殊服務器處理部分流量同時又不修改服務器的地址成為可能。
  • haproxy現多于線上的Mysql集群環境,我們常用于它作為MySQL(讀)負載均衡。
  • 自帶強大的監控服務器狀態的頁面,實際環境中我們結合Nagios進行郵件或短信報警。
  • HAProxy支持虛擬主機,許多朋友說它不支持虛擬主機是錯誤的,通過測試我們知道,HAProxy是支持虛擬主機的。

2、環境

內核版本:3.10.0-862
架構:x86_64
系統版本:CentOS Linux release 7.5.1804 (Core)
HAproxy版本:haproxy-1.8.19.tar.gz
安裝方式:源碼編譯
安裝路徑:/usr/local/haproxy/
官方文檔:https://www.haproxy.org/#docs
下載路徑:https://www.haproxy.org/#down

3、安裝Haproxy

3.1、yum安裝:參考

3.1.1、官方base源安裝

CentOS 6.*CentOS 7安裝的Haproxy版本一樣

[root@node1 ~]# yum install haproxy     # base源
[root@node1 ~]# haproxy -v
HA-Proxy version 1.5.18 2016/05/10
Copyright 2000-2016 Willy Tarreau <willy@haproxy.org>

3.1.2、SCL源安裝haproxy1.8

安裝 Software Collections (SCL) repository 源以獲取最新版本的haproxy

sudo yum install centos-release-scl -y

安裝haproxy:訪問慢

sudo yum install rh-haproxy18-haproxy rh-haproxy18-haproxy-syspaths -y

開啟:systemctl start rh-haproxy18-haproxy
停止:systemctl stop rh-haproxy18-haproxy
開機啟動:systemctl enable rhhaproxy18-haproxy

3.2、編譯安裝Haproxy

3.2.1、創建運行賬戶和組

groupadd --system haproxy                          #添加haproxy的組
useradd --system -M -g haproxy haproxy -s /sbin/nologin  #創建haproxy的系統賬戶到haproxy的組,但是禁止其登陸系統。

3.2.2、編譯安裝Haproxy

[root@node1 opt]# yum install gcc make -y          # 安裝編譯工具
[root@node1 opt]# wget https://www.haproxy.org/download/1.8/src/haproxy-1.8.19.tar.gz
[root@node1 opt]# tar xf haproxy-1.8.19.tar.gz
[root@node1 opt]# cd haproxy-1.8.19
[root@node1 haproxy-1.8.19]# uname -r
3.10.0-862.el7.x86_64
[root@node1 haproxy-1.8.19]# more README            # 查看安裝說明
... ...38   - linux22     for Linux 2.239   - linux24     for Linux 2.4 and above (default)40   - linux24e    for Linux 2.4 with support for a working epoll (> 0.21)41   - linux26     for Linux 2.6 and above42   - linux2628   for Linux 2.6.28, 3.x, and above (enables splice and tproxy)43   - solaris     for Solaris 8 or 10 (others untested)44   - freebsd     for FreeBSD 5 to 10 (others untested)45   - netbsd      for NetBSD46   - osx         for Mac OS/X47   - openbsd     for OpenBSD 5.7 and above48   - aix51       for AIX 5.149   - aix52       for AIX 5.250   - cygwin      for Cygwin51   - haiku       for Haiku52   - generic     for any other OS or version.53   - custom      to manually adjust every setting
... ...要構建haproxy,必須在上面操作系統中選擇目標操作系統
并將其分配給TARGET變量: 我的內核是3.10.0,選擇linux2628
[root@node1 haproxy-1.8.19]# make TARGET=linux2628 ARCH=x86_64 prefix=/usr/local/haproxy  # TARGET指定內核版本,ARCH指定CPU架構,PREFIX指haprxoy的安裝路徑。
[root@node1 haproxy-1.8.19]# make install PREFIX=/usr/local/haproxy
[root@node1 haproxy-1.8.19]# ll /usr/local/haproxy/
總用量 0
drwxr-xr-x 3 root root 21 3月  22 17:50 doc
drwxr-xr-x 2 root root 21 3月  22 17:50 sbin
drwxr-xr-x 3 root root 17 3月  22 17:50 share
[root@node1 haproxy-1.8.19]# cp -a examples /usr/local/haproxy/    # 拷貝一些模板;

3.2.3、創建目錄

mkdir -pv /usr/local/haproxy/conf/ready/{tcp,http}     # 為多配置文件準備,省略;
mkdir -pv /usr/local/haproxy/conf/enabled/{tcp,http}   # 為多配置文件準備,省略;
mkdir -pv /usr/local/haproxy/logsmkdir -pv /etc/haproxy                      #創建配置目錄
mkdir -pv /usr/share/haproxy/               #防止啟動出錯
touch /usr/local/haproxy/conf/haproxy.cfg   #創建配置文件
ln -s /usr/local/haproxy/conf/haproxy.cfg /etc/haproxy/haproxy.cfg #添加配置文件

3.2.4、查看haprxoy的版本

[root@node1 haproxy-1.8.19]# /usr/local/haproxy/sbin/haproxy -v
HA-Proxy version 1.8.19 2019/02/11
Copyright 2000-2019 Willy Tarreau <willy@haproxy.org>

3.2.5、把haproxy添加到系統服務

復制haproxy文件到/usr/sbin下
因為下面的haproxy.init啟動腳本默認會去/usr/sbin下找。

[root@node1 haproxy-1.8.19]# ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin/haproxy

添加到系統服務并開機自啟動

[root@node1 haproxy-1.8.19]# cp ./examples/haproxy.init /etc/init.d/haproxy
[root@node1 haproxy-1.8.19]# chmod 755 /etc/init.d/haproxy
[root@node1 haproxy-1.8.19]# chkconfig --add haproxy
[root@node1 haproxy-1.8.19]# chkconfig haproxy on
[root@node1 haproxy-1.8.19]# chkconfig --list|grep haproxy注:該輸出結果只顯示 SysV 服務,并不包含
原生 systemd 服務。SysV 配置數據
可能被原生 systemd 配置覆蓋。要列出 systemd 服務,請執行 'systemctl list-unit-files'。查看在具體 target 啟用的服務請執行'systemctl list-dependencies [target]'。haproxy         0:關 1:關 2:開 3:開 4:開 5:開 6:關

服務管理:

啟動:service haproxy start
停止:service haproxy stop
重載:service haproxy restart
狀態:service haproxy status
檢查:service haproxy test

處理一個報錯

[root@node1 haproxy-1.8.19]# service haproxy status
/etc/init.d/haproxy: 第 26 行:[: =: 期待一元表達式
● haproxy.service - SYSV: HA-Proxy is a TCP/HTTP reverse proxy which is particularly suited for high availability environments.Loaded: loaded (/etc/rc.d/init.d/haproxy; bad; vendor preset: disabled)Active: inactive (dead)Docs: man:systemd-sysv-generator(8)[root@node1 haproxy-1.8.19]# vim +26 /etc/rc.d/init.d/haproxy26 [ ${NETWORKING} = "no" ] && exit 0改為:26 [ "${NETWORKING}" = "no" ] && exit 0

4、配置Haproxy

官方文檔:
https://cbonte.github.io/haproxy-dconv/1.8/configuration.html

4.1、為多配置文件準備,省略;

熟悉 Nginx 和 Apache 的朋友都知道,這兩個 Webservice 都支持 include 加載多個配置文件的語法,但是 Haproxy 并不支持!如果現網映射規則非常多,那么 haproxy.cfg 這個配置文件就很長!
Hparoxy 實現多配置文件的方案,但是不是 include 語法,而是在啟動的時候多次使用-f 拼接配置文件,比如:

cd /usr/local/haproxy/sbin
./haproxy -f ../conf/haproxy.cfg -f ../conf/ext1.cfg -f ../conf/ext2.cfg

因此,我們可以在配置文件目錄以及啟動腳本上做點改變,讓 Haproxy 支持多配置文件。

路徑約定:

  • 待上線的 tcp 映射規則存放目錄:/usr/local/haproxy/conf/ready/tcp
  • 待上線的 http 映射規則存放目錄:/usr/local/haproxy/conf/ready/http
  • 已上線的 tcp 映射規則存放目錄:/usr/local/haproxy/conf/enabled/tcp
  • 已上線的 http 映射規則存放目錄:/usr/local/haproxy/conf/enabled/http
  • Ps:本文為多配置模式,enabled 里面的配置為軟鏈接形式,軟鏈接至 ready 對應配置文件,方便管理。

4.2、配置模板

Haproxy配置中分成五部分內容,當然這些組件不是必選的,可以根據需要選擇作為配置。
? global:參數是進程級的,通常和操作系統(OS)相關。這些參數一般只設置一次,如果配置無誤,就不需要再次配置進行修改;
? default:配置默認參數的,這些參數可以被利用配置到frontend,backend,listen組件;
? frontend:接收請求的前端虛擬節點,Frontend可以根據規則直接指定具體使用后端的backend(可動態選擇);
? backend:后端服務集群的配置,是真實的服務器,一個Backend對應一個或者多個實體服務器;
? listen:Frontend和Backend的組合體;通過關聯“前端”和“后端”定義了一個完整的代理,通常只對TCP流量有用。

主配置:/usr/local/haproxy/haproxy.cfg文件

[root@node1 ~]# vim /usr/local/haproxy/conf/haproxy.cfg
#configure haproxy.cfg
# 全局配置
globallog 127.0.0.1 local0         # 設置日志log 127.0.0.1 local1 noticemaxconn 4000                 # 最大連接數chroot /usr/local/haproxy    # 安裝目錄user haproxygroup haproxydaemon                       # 守護進程運行#nbproc 1                    # 進程數量,只能用于守護進程模式的haproxy;默認啟動一個進程,一般只在單進程僅能打開少數文件描述符的場景中才使用多進程模式;pidfile /var/run/haproxy.pid# 默認配置
defaultslog     globalmode    http                 # 默認的模式mode { tcp|http|health },tcp是4層,http是7層,health只會返回OKoption  httplog              # http 日志格式option dontlognull           # 不記錄健康檢查日志信息;option  redispatch           # serverId對應的服務器掛掉后,強制定向到其他健康的服務器option http-server-close#option  abortonclose        # 當服務器負載很高的時候,自動結束掉當前隊列處理比較久的鏈接;#option  forwardfor          # 如果后端服務器需要獲得客戶端真實ip需要配置的參數,可以從Http Header中獲得客戶端ip;#option  httpclose           # 主動關閉http通道,每次請求完畢后主動關閉http通道,ha-proxy不支持keep-alive,只能模擬這種模式的實現;  balance roundrobin           # 負載均衡算法,輪詢;retries 3                    # 重試次數;timeout http-request  10s    # 客戶端建立連接但不請求數據時,關閉客戶端連接;timeout queue         1m     # 等待最大時長;timeout connect 10s          # 定義haproxy將客戶端請求轉發至后端服務器所等待的超時時間;timeout client 1m            # 客戶端非活動狀態的超長時間(默認毫秒)timeout server 1m            # 客戶端與服務器建立連接后,等待服務器端的超時時長(默認毫秒)timeout http-keep-alive 10s  # 定義保持連接的超時時長;timeout check 10s            # 心跳檢測超時;maxconn 3000                 # 每個server最大的連接數;# 統計頁面配置
listen admin_stats  bind 0.0.0.0:50000           # 監聽IP和端口,為了安全可以設置本機的局域網IP及端口;mode httpoption httplog               # 采用http日志格式  stats refresh 30s            # 統計頁面自動刷新時間  stats uri /haproxy?stats     # 狀態管理頁面,通過/haproxy?stats來訪問stats realm Haproxy Manager  # 統計頁面密碼框上提示文本  stats auth admin:psadmin     # 統計頁面用戶名和密碼設置  #stats hide-version          # 隱藏統計頁面上HAProxy的版本信息#errorfile 403 /usr/local/haproxy/examples/errorfiles/   #設置haproxy 錯誤頁面#前端配置
frontend http_mainbind 0.0.0.0:80              # http請求的端口,會被轉發到設置的ip及端口# 轉發規則#acl url_yuming   path_beg www.yuming.com#use_backend server_yuming if url_yuming# 默認跳轉項,當上面都沒有匹配上,就轉到backend的http_default上;default_backend http_default# 提升失敗的時候的用戶體驗#errorfile 502 /usr/local/haproxy/examples/errorfiles/502.http#errorfile 503 /usr/local/haproxy/examples/errorfiles/503.http#errorfile 504 /usr/local/haproxy/examples/errorfiles/504.http# 后端配置
backend http_default# 額外的一些設置,按需使用option forwardforoption forwardfor header Client-IPoption http-server-closeoption httpclose# 負載均衡方式#source 根據請求源IP#static-rr 根據權重#leastconn 最少連接先處理;在有著較長時間會話的場景中推薦使用此算法,如LDAP、SQL等,其并不太適用于較短會話的應用層協議,如HTTP;此算法是動態的,#uri 根據請求的uri#url_param 根據請求的url參數#rdp-cookie 據據cookie(name)來鎖定并哈希每一次請求#hdr(name) 根據HTTP請求頭來鎖定每一次HTTP請求#roundrobin 輪詢方式balance roundrobin           # 負載均衡的方式,輪詢方式# 設置健康檢查頁面#option httpchk GET /index.html#傳遞客戶端真實IPoption forwardfor header X-Forwarded-For# 需要轉發的ip及端口# inter 2000 健康檢查時間間隔2秒# rise 3 檢測多少次才認為是正常的# fall 3 失敗多少次才認為是不可用的# weight 30 權重server node1 192.168.1.101:8080 check inter 2000 rise 3 fall 3 weight 30server node2 192.168.1.101:8081 check inter 2000 rise 3 fall 3 weight 30

多配置模式中,多個 frontend 必須綁定不同的 IP 或者端口,否則數據會串,導致映射到不同的后端而報錯。因此,同一個 IP+端口下的映射務必配置到同一個 frontend 模塊內。

4.3、配置說明

轉發規則

前端配置frontend中

acl url_yuming path_beg www.yuming.com
use_backend yuming if url_yuming

www.yuming.com訪問時,會轉發給后端backend的yuming項目;可用于一下幾種配置:

域名跳轉:客戶端通過訪問某個域名跳轉到跳轉指定服務器或者其他域名;
IP地址跳轉:客戶端訪問指定IP地址時,轉發到后端IP;
端口跳轉:客戶端通過域名加端口訪問時,轉發到后端IP和端口;
動靜分離:
默認跳轉:客戶端訪問時,如果其它規則都不匹配,默認轉發到后端IP和端口;
多ACL匹配:當指定客戶端(根據IP匹配)訪問某一個域名或者IP時,默認轉發到后端IP和端口;

5、配置日志rsyslog

vim /etc/rsyslog.conf
# 取消如下2行注釋
$ModLoad imudp
$UDPServerRun 514# 新增配置:local 1~7   –自定義的日志設備
local7.* /var/log/haproxy.log

重啟syslog服務

# centos 6.*
service rsyslog restart# CentOS 7.*
systemctl restart rsyslog

6、驗證

6.1、啟動Haproxy

[root@node1 ~]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
[root@node1 ~]# ps -ef |grep haproxy |grep -v grep
root      6950     1  0 19:35 ?        00:00:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

或者

[root@node1 ~]# service haproxy start
Starting haproxy (via systemctl):                          [  確定  ]
[root@node1 ~]# ps -ef |grep haproxy |grep -v grep
haproxy    4383      1  0 15:53 ?        00:00:00 /usr/sbin/haproxy -D -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid

haproxy參數說明

-v    顯示版本; 
-vv   顯示已知的構建選項。
-f    指定配置文件啟動;
-p    指定pid文件;
-d    進入調試模式; 
-db    僅禁用后臺模式。
-dM [<byte>]   使用<byte>中毒內存(默認為0x50)
-V    進入詳細模式(禁用安靜模式)
-D    去守護進程; 
-C    在加載文件之前更改為<dir>。
-q quiet mode:不顯示消息
-c check mode:只檢查配置文件并退出
-n    設置最大連接數(2000)
-m    限制可用內存量(以MB為單位)
-N    設置默認的每代理最大連接數(2000)
-L    設置本地對等名稱(默認為hostname)
-p    將所有子項的pid寫入此文件
-de    即使在可用時也禁用epoll()用法
-dp    即使在可用時也禁用poll()用法
-dS    禁用拼接使用(在舊內核上斷開)
-dG    禁用getaddrinfo()用法
-dV    在服務器端禁用SSL驗證
-sf/-st [pid]*    完成/終止舊的pid。必須是最后的論點。

6.2、前端登陸頁面

URL:http://$IP:80
建議把上面兩個轉發改為不同的頁面,不停刷新,查看是否有頁面切換;

6.3、后臺監控登陸

URL:http://$IP:50000/haproxy?stats
username:admin
password:psadmin
haproxy監控后臺服務器的情況如圖:
Haproxy安裝與配置

參考

https://www.cnblogs.com/ilanni/p/4750081.html
http://www.ttlsa.com/linux/haproxy-study-tutorial/

轉載于:https://blog.51cto.com/moerjinrong/2370128

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

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

相關文章

刪除word中所有的表格_如何在Word中刪除表格

刪除word中所有的表格If you’ve inserted a table in Word and you now want to delete it, you may have found it’s not all that straightforward to delete the entire table without deleting other content around the table. We’ll show you a couple of ways around…

Java web application——基礎

概述 一個WAR文件包含了構成一個Web應用程序所需要的文件。WAR文件作為一個單元部署在一個或多個WebLogic Server實例上。 WebLogic Server上的Web存檔始終包含以下文件&#xff1a; 一個servlet或Java Server Page&#xff08;JSP&#xff09;&#xff0c;以及任何幫助程序類。…

Jenkins在windows平臺下,讓Powershell和批處理可以拉起進程并保持

&#x1f4e2;歡迎點贊 &#xff1a;&#x1f44d; 收藏 ?留言 &#x1f4dd; 如有錯誤敬請指正&#xff0c;賜人玫瑰&#xff0c;手留余香&#xff01;&#x1f4e2;本文作者&#xff1a;由webmote 原創&#x1f4e2;作者格言&#xff1a;無盡的折騰后&#xff0c;終于又回到…

ASP.NET高并發解決方案

一、頁面靜態化&#xff1b; 二、運用WCF,WEB SERVICE等技術實現分布式業務邏輯處理及數據訪問的能力&#xff1b; 三、頁面緩存&#xff1b; 四、數據緩存&#xff1b; 五、建立圖片文件服務器&#xff1b; 本文轉自 夢在旅途 博客園博客&#xff0c;原文鏈接&#xff1a;http…

MVC身份驗證及權限管理(轉載)

from https://www.cnblogs.com/asks/p/4372783.html MVC自帶的ActionFilter 在Asp.Net WebForm的中要做到身份認證微軟為我們提供了三種方式&#xff0c;其中最常用的就是我們的Form認證&#xff0c;需要配置相應的信息。例如下面的配置信息&#xff1a; <authentication mo…

面試問題總結

面試了兩家公司&#xff0c;第一家沒有筆試直接面試&#xff0c;第二家筆試面試&#xff0c;將記得住的問題記錄下來&#xff0c;答案自己找的&#xff0c;有好的答案歡迎提出。 1、響應式布局 一家公司問了em和rem的區別&#xff0c;另一家公司先問了一下px,em,rem的區別&…

WPF-23 基于Timer任務調度

.NET的FCL中提供了幾個計時器&#xff0c;大多數初學者都不清楚他們有什么不同&#xff0c;那我們這節來剖解一下每個計時器的本質&#xff1a;1.System.Threading.Timer如果在一個線程池上執行一個定時的周期性的后臺線程任務他是最好的選擇&#xff0c;這個類是和線程池相關聯…

在.NET中不安裝Office使用EPPlus生成帶圖表(Chart)的Excel報表

在開發.NET應用中可能會遇到需要生成帶圖表(Chart)的Excel報表的需求&#xff0c;特別是在一些ASP.NET網站中&#xff0c;有時候我們并不能保證Web服務器上一定安裝了Office組件&#xff0c;所以使用微軟的Office來生成Excel并不保證在所有情況下都使用&#xff0c;有時候即使W…

facebook 邀請好友_如何在Facebook上與某人解除好友

facebook 邀請好友It’s very easy for your Facebook News Feed to get cluttered. After a few years adding ukulele playing magicians you meet wandering the street and the bar staff at every bar you go to regularly, it gets overrun with people you’ll never se…

mac下npm/node的安裝和卸載、升級;node、npm升級后最后刪掉node_modules重新安裝

mac還是使用brew install簡單一些&#xff1b;最好使用一種安裝方式&#xff0c;不要多種方式互用&#xff1b; 更新npm到最新版本npm install -g npm更新npm到指定版本 npm -g install npm2.9.1指定安裝目錄npm install --prefix /usr/local -g npm 1、從官網https://nodejs.o…

軟件工程小組第三次正式會議

會議主題&#xff1a;主要確定數據庫具體內容與會時間&#xff1a;3月29日與會地點&#xff1a;圖書館小組研究室雨水612與會成員&#xff1a;尚卓燃、張世豪、王昊鈺、傅宇豪會議記錄&#xff1a; 小組成員一起討論數據庫&#xff0c;確定了數據庫中的實體、屬性、聯系&#…

Edison的2022年終總結

大家好&#xff0c;我是Edison。2022年即將結束&#xff0c;又到了做年終總結的時候&#xff0c;它是我每年的一個習慣&#xff0c;意味著又要開始新的征途&#xff0c;在開始新的征途之前回顧一下很有必要。艱難抉擇&#xff1a;從互聯網到制造業今年最大的變化就是又換了份工…

JNI

配置NDK&#xff0c;調用JNI最終會生成一個so庫&#xff0c;如果so庫生成了。直接在項目中使用so庫即可調用本地方法。注意&#xff1a;api的包名要與so庫定義的包名一致。 1什么是jni jni java native interface java本地開發接口&#xff0c;是JAVA和C互相調用的橋梁。 2jni有…

dvd vlc 復制_如何使用VLC翻錄DVD

dvd vlc 復制There are many ways to rip a DVD to your computer, but if you’re looking for the most straightforward option, VLC is easy and free. Besides, you probably already have VLC on your computer (and if you don’t, you should). Here, we’ll show you …

新年芯事 | 龍芯物聯網主控芯片龍芯1C102和龍芯1C103流片成功

前言近期&#xff0c;龍芯中科面向物聯網領域研制的主控芯片--龍芯1C102和龍芯1C103流片成功&#xff0c;兩款微控制器芯片各項功能測試正常&#xff0c;符合設計預期。 龍芯1C102主要面向智能家居以及其他物聯網設備詳細介紹龍芯1C102采用龍芯LA132處理器核心&#xff0c;是一…

Javascript基礎學習20問(二)

1.函數&#xff08;方法&#xff09;&#xff1a;封裝執行一項專門任務的步驟的代碼序列--》重用2.參數&#xff1a;方法內獨有的變量&#xff0c;接受傳入數據&#xff0c;在方法中處理3.作用域&#xff1a;一個變量的可用范圍 全局作用域&#xff1a;全局變量 局部作用…

Thrift第三課 編寫腳本

警告 盡量使用tutorial下面的模板&#xff0c;注意腳本的格式&#xff0c;否則生成錯誤 使用thrift-0.9.0生成C/csharp代碼 使用的指令如下: thrift-0.9.0.exe --gen cpp thriftcom.thrift thrift-0.9.0.exe --gen csharp thriftcom.thrift 1 注釋 有如下的三種方式 1&#xff…

【加更】搭建基于chatgpt的釘釘聊天機器人

應某些小伙伴的加更請求&#xff0c;出一期基于釘釘上的聊天機器人&#xff0c;我順便加更一期&#xff0c;搭建一個釘釘聊天機器人的小教程。首先進入到釘釘開放平臺的后臺管理系統&#xff1a;https://open.dingtalk.com/進入到 應用開發->企業內部開發->機器人右上角選…

word中 有注釋標簽嗎_如何在Word中注釋圖像

word中 有注釋標簽嗎If you’re writing a document that includes images, you may want to add annotations to those images to clarify what they represent. You can add callouts to your images to point out particular parts of the image and add text to describe t…

Lang.String

StringBuilder 原文&#xff1a; public final class StringBuilder extends Object implements Serializable, CharSequence A mutable sequence of characters. This class provides an API compatible with StringBuffer, but with no guarantee of synchronization. This c…