主頁 > 區塊鏈 > MySQL服務器主從復制同步——主從復制的方式同步資料,企業必備操作!我會主從復制了,你呢?

MySQL服務器主從復制同步——主從復制的方式同步資料,企業必備操作!我會主從復制了,你呢?

2020-09-16 09:52:05 區塊鏈

MySQL主從復制

  • 一、MySQL主從復制原理
    • 1.1、MySQL 支持的復制型別
    • 1.2、復制的作業程序
  • 二、需要主從復制原因與改造方法
    • 2.1、原因
    • 2.2、改造辦法
    • 2.3、更高級解決辦法
  • 三、實驗程序
    • 3.1、實驗環境
    • 3.2、建立時間同步環境
    • 3.3、主服務器、從服務器1、從服務器2均安裝MySQL服務
    • 3.4、主服務器配置
    • 3.5、從服務器 1 配置
    • 3.6、從服務器 2 配置
    • 3.7、驗證:MySQL主從服務器
      • 主服務器
      • 從服務器 1
      • 從服務器 2
    • 3.8、實驗小問題

一、MySQL主從復制原理

1.1、MySQL 支持的復制型別

  • 基于陳述句的復制(默認)
    在主服務器上執行的陳述句,從服務器執行同樣的陳述句
  • 基于行的復制
    把改變的內容復制到從服務器
  • 混合型別的復制
    一旦發現基于陳述句無法精確復制時,就會采用基于行的復制

1.2、復制的作業程序

① 在每個事務更新資料完成之前,Master在二進制日志記錄這些改變,寫入二進制日志完成后,Master通知存盤引擎提交事務
②Slave將Master的Binary log復制到其中繼日志,首先,Slave開始一個作業執行緒——I/O執行緒,I/O執行緒在Master上打開一個普通的連接,然后開始Binlog dump process,Binlog dump process從Master的二進制日志中讀取事件,如果已經跟上Master,他會睡眠并等待Master產生新的事件,I/O執行緒將這些事件寫入中繼日志,
③SQL slave thread(SQL從執行緒)處理該程序的最后一步,SQL執行緒從中繼日志讀取事件,并重放其中的事件而更新Slave的資料,使其與Master中的資料一致,只要該執行緒與I/O執行緒保持一致,中繼日志通常會位于OS的快取中,所以中繼日志的開銷很小,
復制程序有一個很重要的限制,即復制在Slave上是串行化的,也就是說Master上的并行更新操作不能再Slave上并行操作,

在這里插入圖片描述

二、需要主從復制原因與改造方法

2.1、原因

■在企業網站中,后端MySQL資料庫只有一臺時,會有以下問題

  • 單點故障,服務不可用
  • 無法處理大量的并發資料請求
  • 資料丟失——大災難
    在這里插入圖片描述

2.2、改造辦法

■改造辦法

  • 增加MySQL資料庫服務器,對資料進行備份,形成主備
  • 確保主備MySQL資料庫服務器資料是一樣的
  • 主服務器宕機了,備份服務器繼續作業,資料有保障

在這里插入圖片描述

2.3、更高級解決辦法

■更高級解決辦法

  • 通過主從復制的方式來同步資料,再通過讀寫分離來提升資料庫的并發負載能力

在這里插入圖片描述

三、實驗程序

3.1、實驗環境

  • 服務器配置

IP地址 主機 作業系統
20.0.0.25 master centos-7.6-x86_64
20.0.0.24 Slave1 centos-7.6-x86_64
20.0.0.23 Slave2 centos-7.6-x86_64

  • 三臺MySQL服務器關閉防火墻,關閉核心防護

3.2、建立時間同步環境

  • 在主服務器上安裝配置NTP時間同步服務器(20.0.0.25)
[root@localhost~]# yum -y install ntp    ###如果不是最小化安裝,就不用yum安裝ntp

[root@localhost~]# vi /etc/ntp.conf  
###洗掉下面四行###
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
###添加這兩行###
server 127.127.1.0
fudge 127.127.1.0 stratum 8
[root@localhost~]# systemctl restart ntpd
[root@localhost~]# systemctl enable ntpd
[root@localhost ~]# service ntpd restart
[root@localhost ~]# systemctl restart ntpd
[root@localhost ~]# systemctl enable ntpd
  • 在從服務器1上配置NTP同步(20.0.0.24)
[root@localhost ~]# yum -y install ntpdate
[root@localhost ~]# ntpdate 20.0.0.25
[root@localhost ~]# crontab -e
*/2 * * * * /usr/sbin/ntpdate 20.0.0.24 >> /var/log/ntpdate.log
[root@localhost ~]# touch /var/log/ntpdate.log 
[root@localhost ~]# systemctl restart crond
[root@localhost ~]# systemctl enable crond
[root@localhost ~]# tail -f /var/log/ntpdate.log  ###動態查看更新日志檔案
  • 在從服務器2上配置NTP同步(20.0.0.23)
[root@localhost ~]# yum -y install ntpdate
[root@localhost ~]# ntpdate 20.0.0.25
[root@localhost ~]# crontab -e
*/2 * * * * /usr/sbin/ntpdate 20.0.0.23 >> /var/log/ntpdate.log
[root@localhost ~]# touch /var/log/ntpdate.log 
[root@localhost ~]# systemctl restart crond
[root@localhost ~]# systemctl enable crond
[root@localhost ~]# tail -f /var/log/ntpdate.log  ###動態查看更新日志檔案

3.3、主服務器、從服務器1、從服務器2均安裝MySQL服務

[root@localhost~]# yum -y install \
ncurses \
ncurses-devel \
bison \
cmake \
gcc \
gcc-c++
[root@localhost~]# useradd -s /sbin/nologin  mysql
[root@localhost~]# cd /opt
[root@localhost opt]# tar xf mysql-boost-5.7.20.tar.gz
[root@localhost opt]# cd /opt/mysql-5.7.20/
[root@localhost mysql-5.7.20]# 
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
[root@localhost mysql-5.7.20]# make -j4
[root@localhost mysql-5.7.20]# make install

[root@localhost mysql-5.7.20]# chown -R mysql:mysql /usr/local/mysql/  
 '//資料庫目錄進行權限調整'

[root@localhost mysql-5.7.20]# vi /etc/my.cnf     
 '//建立調整組態檔'
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

[root@localhost mysql-5.7.20]# chown mysql:mysql /etc/my.cnf
[root@localhost mysql-5.7.20]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@localhost mysql-5.7.20]# echo 'export PATH' >> /etc/profile  
     '//設定環境變數'
[root@localhost mysql-5.7.20]# source /etc/profile    
'//生效'

[root@localhost mysql-5.7.20]# cd /usr/local/mysql/

[root@localhost mysql]# bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

[root@localhost mysql]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
[root@localhost mysql]# systemctl enable mysqld
[root@localhost mysql]# systemctl start mysqld
[root@localhost mysql]# systemctl status mysqld
[root@localhost mysql]# netstat -anpt | grep 3306
[root@localhost mysql]# mysqladmin -u root -p password
'//設定密碼'
[root@localhost ~]# mysql -u root -p   ## 驗證是否可以登錄資料庫
Enter password: 
mysql>

3.4、主服務器配置

[root@localhost ~]# vi /etc/my.cnf ###在原來server-id=1的地方修改成11后面新增log_bin=master-bin log-slave-updates=true###
server-id = 11         ## 修改為 11,下面的從服務器也會改,3個server-id 不可相同
log_bin = master-bin   ##設定二進制日志名
log-slave-updates = true   ## 從服務器更新二進制日志

[root@localhost ~]# systemctl restart mysqld ###重啟資料庫

登錄Master資料庫給從服務器授權
[root@localhost ~]# mysql -uroot -p
## 讓20.0.0.0端的從服務器擁有復制權限,可以使用myslave身份12345密碼復制所有的庫和表
mysql> grant replication slave on *.* to 'myslave'@'20.0.0.%' identified by '12345';
mysql> flush privileges;   ## 重繪
mysql> show master status;  
+-------------------+----------+--------------+------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 |      599 |              |                  |                   |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

3.5、從服務器 1 配置

[root@localhost ~]# vi /etc/my.cnf  ###在原來server-id=1的地方修改成22 后面新增relay-log=relay-log-bin relay-log-index=slave-relay-bin.index###
server-id = 22     ## 修改為22,另一臺從服務器的id設為33,三個id不可相同
relay-log = relay-log-bin          ## 設定二進制日志名
relay-log-index = slave-relay-bin.index      ## 服務器更新二進制日志
[root@localhost ~]# systemctl restart mysqld  ###重啟資料庫
登錄slave資料庫配置同步 ###注意下這邊的master_log_file='master-bin.000001',master_log_pos=601;要和Master資料庫資訊不一致,不一致的話要更改先stop slave;然后更改同步資訊
[root@localhost ~]# mysql -uroot -p12345
mysql> change master to master_host='20.0.0.25',master_user='myslave',master_password='12345',master_log_file='master-bin.000001',master_log_pos=599;
mysql> start slave;
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 20.0.0.25
                  Master_User: myslave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-bin.000001
          Read_Master_Log_Pos: 599
               Relay_Log_File: relay-log-bin.000002
                Relay_Log_Pos: 321
        Relay_Master_Log_File: master-bin.000001
             Slave_IO_Running: Yes   ## 查看IO是正常的,這里顯示 Yes 就可以了
            Slave_SQL_Running: Yes   ## 查看SQL是正常的,這里顯示 Yes 就可以了
            ............................................
            1 row in set (0.00 sec)

3.6、從服務器 2 配置

[root@localhost ~]# vi /etc/my.cnf
server-id = 33
relay-log = relay-log-bin
relay-log-index = slave-relay-bin.index
[root@localhost ~]# systemctl restart mysqld
[root@localhost ~]# mysql -uroot -p12345
mysql> change master to master_host='20.0.0.25',master_user='myslave',master_password='12345',master_log_file='master-bin.000001',master_log_pos=599;

mysql> start slave;
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 20.0.0.25
                  Master_User: myslave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-bin.000001
          Read_Master_Log_Pos: 599
               Relay_Log_File: relay-log-bin.000002
                Relay_Log_Pos: 321
        Relay_Master_Log_File: master-bin.000001
             Slave_IO_Running: Yes   ## 這里顯示 Yes 就可以了
            Slave_SQL_Running: Yes   ## 這里顯示 Yes 就可以了
            ............................................
            1 row in set (0.00 sec)

3.7、驗證:MySQL主從服務器

主服務器

mysql> create database School;  ## 創建 School庫
Query OK, 1 row affected (0.00 sec)

mysql> show databases;   ## 查看主服務器有 School庫
+--------------------+
| Database           |
+--------------------+
| information_schema |
| School             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

從服務器 1

mysql> show databases;   ## 查看從服務器 1 有 School庫
+--------------------+
| Database           |
+--------------------+
| information_schema |
| School             |   ## 同步成功!
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

從服務器 2

mysql> show databases;   ## 查看從服務器 2 有 School庫
+--------------------+
| Database           |
+--------------------+
| information_schema |
| School             |   ## 同步成功!
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

3.8、實驗小問題

主從復制沒有成功,顯示的引數是這樣 Slave_IO_Running: Connecting
解決辦法:

## 當我們輸入這句代碼完之后
mysql> change master to master_host='20.0.0.25',master_user='myslave',master_password='12345',master_log_file='master-bin.000001',master_log_pos=599;
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status\G
*************************** 1. row ***************************
            Slave_IO_Running: Connecting  ## 這里并沒有改成 Yes
            Slave_SQL_Running: Yes

1、可能是因為 master_log_pos=599 這個值輸入錯了導致沒有同步,
2、也可能是因為主服務器 IP 輸入錯了,或者是密碼錯了,

  • 這時候我們需要 stop slave
mysql> stop slave;  ## 先關閉
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> change master to master_host='20.0.0.25',master_user='myslave',master_password='12345',master_log_file='master-bin.000001',master_log_pos=599;  ## 然后再給一次復制權限,把里面的引數改成正確的引數
mysql> start slave;  ## 在開啟
mysql> show slave status\G
*************************** 1. row ***************************
            Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
## 再查看就已經設定成功了!
## 排障完成
  • 實驗做到這里就結束了!我們最后驗證了是可以進行主從復制的,
    1、做資料的熱備,作為后備資料庫,主資料庫服務器故障后,可切換到從資料庫繼續作業,避免資料丟失,
    2、架構的擴展,業務量越來越大,I/O訪問頻率過高,單機無法滿足,此時做多庫的存盤,降低磁盤I/O訪問的頻率,提高單個機器的I/O性能,
    3、讀寫分離,使資料庫能支撐更大的并發,在報表中尤其重要,由于部分報表sql陳述句非常的慢,導致鎖表,影響前臺服務,如果前臺使用master,報表使用slave,那么報表sql將不會造成前臺鎖,保證了前臺速度,

下一篇博客我將介紹主從復制的讀寫分離!歡迎收看!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/56061.html

標籤:區塊鏈

上一篇:8月一次阿里云的Java面試涼經(止步三面)

下一篇:Spark 出現的問題及其解決方案

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • JAVA使用 web3j 進行token轉賬

    最近新學習了下區塊鏈這方面的知識,所學不多,給大家分享下。 # 1. 關于web3j web3j是一個高度模塊化,反應性,型別安全的Java和Android庫,用于與智能合約配合并與以太坊網路上的客戶端(節點)集成。 # 2. 準備作業 jdk版本1.8 引入maven <dependency> < ......

    uj5u.com 2020-09-10 03:03:06 more
  • 以太坊智能合約開發框架Truffle

    前言 部署智能合約有多種方式,命令列的瀏覽器的渠道都有,但往往跟我們程式員的風格不太相符,因為我們習慣了在IDE里寫了代碼然后打包運行看效果。 雖然現在IDE中已經存在了Solidity插件,可以撰寫智能合約,但是部署智能合約卻要另走他路,沒辦法進行一個快捷的部署與測驗。 如果團隊管理的區塊節點多、 ......

    uj5u.com 2020-09-10 03:03:12 more
  • 谷歌二次驗證碼成為區塊鏈專用安全碼,你怎么看?

    前言 谷歌身份驗證器,前些年大家都比較陌生,但隨著國內互聯網安全的加強,它越來越多地出現在大家的視野中。 比較廣泛接觸的人群是國際3A游戲愛好者,游戲盜號現象嚴重+國外賬號安全應用廣泛,這類游戲一般都會要求用戶系結名為“兩步驗證”、“雙重驗證”等,平臺一般都推薦用谷歌身份驗證器。 后來區塊鏈業務風靡 ......

    uj5u.com 2020-09-10 03:03:17 more
  • 密碼學DAY1

    目錄 ##1.1 密碼學基本概念 密碼在我們的生活中有著重要的作用,那么密碼究竟來自何方,為何會產生呢? 密碼學是網路安全、資訊安全、區塊鏈等產品的基礎,常見的非對稱加密、對稱加密、散列函式等,都屬于密碼學范疇。 密碼學有數千年的歷史,從最開始的替換法到如今的非對稱加密演算法,經歷了古典密碼學,近代密 ......

    uj5u.com 2020-09-10 03:03:50 more
  • 密碼學DAY1_02

    目錄 ##1.1 ASCII編碼 ASCII(American Standard Code for Information Interchange,美國資訊交換標準代碼)是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言。它是現今最通用的單位元組編碼系統,并等同于國際標準ISO/IE ......

    uj5u.com 2020-09-10 03:04:50 more
  • 密碼學DAY2

    ##1.1 加密模式 加密模式:https://docs.oracle.com/javase/8/docs/api/javax/crypto/Cipher.html ECB ECB : Electronic codebook, 電子密碼本. 需要加密的訊息按照塊密碼的塊大小被分為數個塊,并對每個塊進 ......

    uj5u.com 2020-09-10 03:05:42 more
  • NTP時鐘服務器的特點(京準電子)

    NTP時鐘服務器的特點(京準電子) NTP時鐘服務器的特點(京準電子) 京準電子官V——ahjzsz 首先對時間同步進行了背景介紹,然后討論了不同的時間同步網路技術,最后指出了建立全球或區域時間同步網存在的問題。 一、概 述 在通信領域,“同步”概念是指頻率的同步,即網路各個節點的時鐘頻率和相位同步 ......

    uj5u.com 2020-09-10 03:05:47 more
  • 標準化考場時鐘同步系統推進智能化校園建設

    標準化考場時鐘同步系統推進智能化校園建設 標準化考場時鐘同步系統推進智能化校園建設 安徽京準電子科技官微——ahjzsz 一、背景概述隨著教育事業的快速發展,學校建設如雨后春筍,隨之而來的學校教育、管理、安全方面的問題成了學校管理人員面臨的最大的挑戰,這些問題同時也是學生家長所擔心的。為了讓學生有更 ......

    uj5u.com 2020-09-10 03:05:51 more
  • 位元幣入門

    引言 位元幣基本結構 位元幣基礎知識 1)哈希演算法 2)非對稱加密技術 3)數字簽名 4)MerkleTree 5)哪有位元幣,有的是UTXO 6)位元幣挖礦與共識 7)區塊驗證(共識) 總結 引言 上一篇我們已經知道了什么是區塊鏈,此篇說一下區塊鏈的第一個應用——位元幣。其實先有位元幣,后有的區塊 ......

    uj5u.com 2020-09-10 03:06:15 more
  • 北斗對時服務器(北斗對時設備)電力系統應用

    北斗對時服務器(北斗對時設備)電力系統應用 北斗對時服務器(北斗對時設備)電力系統應用 京準電子科技官微(ahjzsz) 中國北斗衛星導航系統(英文名稱:BeiDou Navigation Satellite System,簡稱BDS),因為是目前世界范圍內唯一可以大面積提供免費定位服務的系統,所以 ......

    uj5u.com 2020-09-10 03:06:20 more
最新发布
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:46:47 more
  • Hyperledger Fabric 使用 CouchDB 和復雜智能合約開發

    在上個實驗中,我們已經實作了簡單智能合約實作及客戶端開發,但該實驗中智能合約只有基礎的增刪改查功能,且其中的資料管理功能與傳統 MySQL 比相差甚遠。本文將在前面實驗的基礎上,將 Hyperledger Fabric 的默認資料庫支持 LevelDB 改為 CouchDB 模式,以實作更復雜的資料... ......

    uj5u.com 2023-04-16 07:28:31 more
  • .NET Core 波場鏈離線簽名、廣播交易(發送 TRX和USDT)筆記

    Get Started NuGet You can run the following command to install the Tron.Wallet.Net in your project. PM> Install-Package Tron.Wallet.Net 配置 public reco ......

    uj5u.com 2023-04-14 08:08:00 more
  • DKP 黑客分析——不正確的代幣對比率計算

    概述: 2023 年 2 月 8 日,針對 DKP 協議的閃電貸攻擊導致該協議的用戶損失了 8 萬美元,因為 execute() 函式取決于 USDT-DKP 對中兩種代幣的余額比率。 智能合約黑客概述: 攻擊者的交易:0x0c850f,0x2d31 攻擊者地址:0xF38 利用合同:0xf34ad ......

    uj5u.com 2023-04-07 07:46:09 more
  • Defi開發簡介

    Defi開發簡介 介紹 Defi是去中心化金融的縮寫, 是一項旨在利用區塊鏈技術和智能合約創建更加開放,可訪問和透明的金融體系的運動. 這與傳統金融形成鮮明對比,傳統金融通常由少數大型銀行和金融機構控制 在Defi的世界里,用戶可以直接從他們的電腦或移動設備上訪問廣泛的金融服務,而不需要像銀行或者信 ......

    uj5u.com 2023-04-05 08:01:34 more
  • solidity簡單的ERC20代幣實作

    // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; import "hardhat/console.sol"; //ERC20 同質化代幣,每個代幣的本質或性質都是相同 //ETH 是原生代幣,它不是ERC20代幣, ......

    uj5u.com 2023-03-21 07:56:29 more
  • solidity 參考型別修飾符memory、calldata與storage 常量修飾符C

    在solidity語言中 參考型別修飾符(參考型別為存盤空間不固定的數值型別) memory、calldata與storage,它們只能修飾參考型別變數,比如字串、陣列、位元組等... memory 適用于方法傳參、返參或在方法體內使用,使用完就會清除掉,釋放記憶體 calldata 僅適用于方法傳參 ......

    uj5u.com 2023-03-08 07:57:54 more
  • solidity注解標簽

    在solidity語言中 注釋符為// 注解符為/* 內容*/ 或者 是 ///內容 注解中含有這幾個標簽給予我們使用 @title 一個應該描述合約/介面的標題 contract, library, interface @author 作者的名字 contract, library, interf ......

    uj5u.com 2023-03-08 07:57:49 more
  • 評價指標:相似度、GAS消耗

    【代碼注釋自動生成方法綜述】 這些評測指標主要來自機器翻譯和文本總結等研究領域,可以評估候選文本(即基于代碼注釋自動方法而生成)和參考文本(即基于手工方式而生成)的相似度. BLEU指標^[^?88^^?^]^:其全稱是bilingual evaluation understudy.該指標是最早用于 ......

    uj5u.com 2023-02-23 07:27:39 more
  • 基于NOSTR協議的“公有制”版本的Twitter,去中心化社交軟體Damus

    最近,一個幽靈,Web3的幽靈,在網路游蕩,它叫Damus,這玩意詮釋了什么叫做病毒式營銷,滑稽的是,一個Web3產品卻在Web2的產品鏈上瘋狂傳銷,各方大佬紛紛為其背書,到底發生了什么?Damus的葫蘆里,賣的是什么藥? 注冊和簡單實用 很少有什么產品在用戶注冊環節會有什么噱頭,但Damus確實出 ......

    uj5u.com 2023-02-05 06:48:39 more