国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

圖文結(jié)合帶你搞懂MySQL日志之Binary log(二進(jìn)制日志)

這篇具有很好參考價(jià)值的文章主要介紹了圖文結(jié)合帶你搞懂MySQL日志之Binary log(二進(jìn)制日志)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

往期回顧

  • 圖文結(jié)合帶你搞定MySQL日志之Undo log(回滾日志)
  • 圖文結(jié)合帶你搞懂InnoDB MVCC
  • 圖文結(jié)合帶你搞懂MySQL日志之Redo Log(重做日志)
  • 圖文結(jié)合帶你搞懂MySQL日志之Error Log(錯(cuò)誤日志)
  • 圖文結(jié)合帶你搞懂MySQL日志之Slow Query Log(慢查詢?nèi)罩荆?/li>
  • 圖文結(jié)合帶你搞懂MySQL日志之relay log(中繼日志)
  • 圖文結(jié)合帶你搞懂MySQL日志之General Query Log(通用查詢?nèi)罩荆?/li>

圖文結(jié)合帶你搞懂MySQL日志之Binary log(二進(jìn)制日志)

此篇為圖文結(jié)合搞懂MySQL日志的最后一篇,MySQL中共有八大日志,其中數(shù)據(jù)定義語(yǔ)句日志不是給用戶查看的,在此篇尾部簡(jiǎn)單介紹,接下來(lái)圖文結(jié)合系列還會(huì)繼續(xù)推出新文章!

二進(jìn)制日志(Binary log)

binlog可以說(shuō)是MySQL中比較重要的日志了,在日常開發(fā)及運(yùn)維過(guò)程中,經(jīng)常會(huì)遇到。

binlog即binary log,二進(jìn)制日志文件,也叫作變更日志(update log)。它記錄了數(shù)據(jù)庫(kù)所有執(zhí)行的DDL和DML等數(shù)據(jù)庫(kù)更新事件的語(yǔ)句,但是不包含沒有修改任何數(shù)據(jù)的語(yǔ)句(如數(shù)據(jù)查詢語(yǔ)句select、show等)。

它以事件形式記錄并保存在二進(jìn)制文件中。通過(guò)這些信息,我們可以再現(xiàn)數(shù)據(jù)更新操作的全過(guò)程。

如果想要記錄所有語(yǔ)句(例如,為了識(shí)別有問題的查詢),需要使用通用查詢?nèi)罩尽?/p>

Binary log主要應(yīng)用場(chǎng)景:

  • 一是用于數(shù)據(jù)恢復(fù),如果MySQL數(shù)據(jù)庫(kù)意外停止,可以通過(guò)二進(jìn)制日志文件來(lái)查看用戶執(zhí)行了哪些操作,對(duì)數(shù)據(jù)庫(kù)服務(wù)器文件做了哪些修改,然后根據(jù)二進(jìn)制日志文件中的記錄來(lái)恢復(fù)數(shù)據(jù)庫(kù)服務(wù)器。
  • 二是用于數(shù)據(jù)復(fù)制,由于日志的延續(xù)性和時(shí)效性,master把它的二進(jìn)制日志傳遞給slaves來(lái)達(dá)到master-slave數(shù)據(jù)一致的目的。

可以說(shuō)MySQL數(shù)據(jù)庫(kù)的數(shù)據(jù)備份、主備、單主、多主、MGR都離不開Binary log,需要依靠Binary log來(lái)同步數(shù)據(jù),保證數(shù)據(jù)一致性。

圖文結(jié)合帶你搞懂MySQL日志之Binary log(二進(jìn)制日志)

查看默認(rèn)情況

查看記錄二進(jìn)制日志是否開啟:在MySQL8中默認(rèn)情況下,二進(jìn)制文件是開啟的。

mysql>  show variables like '%log_bin%';
+---------------------------------+-----------------------------+
| Variable_name                   | Value                       |
+---------------------------------+-----------------------------+
| log_bin                         | ON                          |  //開關(guān)
| log_bin_basename                | /var/lib/mysql/binlog       | // 存放路徑
| log_bin_index                   | /var/lib/mysql/binlog.index |
| log_bin_trust_function_creators | ON                          |//  函數(shù)創(chuàng)建 
| log_bin_use_v1_row_events       | OFF                         |
| sql_log_bin                     | ON                          |//變更sql記錄下來(lái)
+---------------------------------+-----------------------------+
6 rows in set (0.01 sec)
  • log_bin_basename:是binlog日志的基本文件名,后面會(huì)追加標(biāo)識(shí)來(lái)表示每一個(gè)文件
  • log_bin_index:是binlog文件的素引文件,這個(gè)文件管理了所有的binlog文件的目錄
  • log_bin_trust_function_creators:限制存儲(chǔ)過(guò)程,前面我們已經(jīng)講過(guò)了,這是因?yàn)槎M(jìn)制日志的一個(gè)重要功能是用于主從復(fù)制,而存儲(chǔ)函數(shù)有可能導(dǎo)致主從的數(shù)據(jù)不一致。所以當(dāng)開啟二進(jìn)制日志后,需要限制存儲(chǔ)函數(shù)的創(chuàng)建、修改、調(diào)用
  • log_bin_use_v1_row_events此只讀系統(tǒng)變量已棄用。ON表示使用版本1二進(jìn)制日志行,OFF表示使用版本2二進(jìn)制日志行(MySQL5.6的默認(rèn)值為2)。

日志參數(shù)設(shè)置

方式 1 :永久性方式

修改MySQL的my.cnf或my.ini文件可以設(shè)置二進(jìn)制日志的相關(guān)參數(shù):

[mysqld]
#啟用二進(jìn)制日志
log-bin=atguigu-bin
binlog_expire_logs_seconds= 600
max_binlog_size=100M

提示:

  1. log-bin=mysql-bin

打開日志(主機(jī)需要打開),這個(gè)mysql-bin也可以自定義,這里也可以加上路徑,如:/home/www/mysql_bin_log/mysql-bin

  1. binlog_expire_logs_seconds

此參數(shù)控制二進(jìn)制日志文件保留的時(shí)長(zhǎng)單位是秒,默認(rèn)2592000 30天 --14400 4小時(shí);86400 1天; 259200 3天;

  1. max_binlog_size

控制單個(gè)二進(jìn)制日志大小,當(dāng)前日志文件大小超過(guò)此變量時(shí),執(zhí)行切換動(dòng)作。此參數(shù)的最大和默認(rèn)值是1GB,該設(shè)置并不能嚴(yán)格控制Binlog的大小,尤其是Binlog比較靠近最大值而又遇到一個(gè)比較大事務(wù)時(shí),為了保證事務(wù)的完整性,可能不做切換日志的動(dòng)作只能將該事務(wù)的所有SQL都記錄進(jìn)當(dāng)前日志,直到事務(wù)結(jié)束。一般情況下可采取默認(rèn)值。

設(shè)置帶文件夾的bin-log日志存放目錄

如果想改變?nèi)罩疚募哪夸浐兔Q,可以對(duì)my.cnf或my.ini中的log_bin參數(shù)修改如下:

[mysqld]
log-bin="/var/lib/mysql/binlog/atguigu-bin"

注意:新建的文件夾需要使用mysql用戶,使用下面的命令即可。

chown -R -v mysql:mysql binlog

提示 數(shù)據(jù)庫(kù)文件最好不要與日志文件放在同一個(gè)磁盤上!這樣,當(dāng)數(shù)據(jù)庫(kù)文件所在的磁盤發(fā)生故障時(shí),可以使用日志文件恢復(fù)數(shù)據(jù)。

方式 2 :臨時(shí)性方式

如果不希望通過(guò)修改配置文件并重啟的方式設(shè)置二進(jìn)制日志的話,還可以使用如下指令,需要注意的是在mysql 8 中只有會(huì)話級(jí)別的設(shè)置,沒有了global級(jí)別的設(shè)置。

# global 級(jí)別
mysql> set global sql_log_bin= 0 ;
ERROR 1228 (HY000): Variable 'sql_log_bin' is a SESSION variable and can`t be used
with SET GLOBAL

# session級(jí)別
mysql> SET sql_log_bin = 0 ;
Query OK, 0 rows affected (0.01 秒)

查看日志

當(dāng)MySQL創(chuàng)建二進(jìn)制日志文件時(shí),先創(chuàng)建一個(gè)以“filename”為名稱、以“.index”為后綴的文件,再創(chuàng)建一個(gè)以“filename”為名稱、以“.000001”為后綴的文件。

MySQL服務(wù)重新啟動(dòng)一次,以“.000001”為后綴的文件就會(huì)增加一個(gè),并且后綴名按 1 遞增。即日志文件的數(shù)與MySQL服務(wù)啟動(dòng)的次數(shù)相同;如果日志長(zhǎng)度超過(guò)了max_binlog_size的上限(默認(rèn)是1GB),就會(huì)創(chuàng)建一個(gè)新的日志文件。

查看當(dāng)前的二進(jìn)制日志文件列表及大小。指令如下:

mysql> SHOW BINARY LOGS;
+--------------------+-----------+-----------+
| Log_name           | File_size | Encrypted |
+--------------------+-----------+-----------+
| atguigu-bin.000001 | 156       | No        |
+--------------------+-----------+-----------+
1 rows in set (0.00 sec)

所有對(duì)數(shù)據(jù)庫(kù)的修改都會(huì)記錄在binglog中。但binlog是二進(jìn)制文件,無(wú)法直接查看,借助mysqlbinlog命令工具了。指令如下:在查看執(zhí)行,先執(zhí)行一條sQL語(yǔ)句,如下

update student set name='張三_back' where id=1;
[root@localhost ~]$ cd /var/lib/mysql
[root@localhost ~]$ mysqlbinlog  "/var/lib/mysql/lqhdb-binlog.000001"

執(zhí)行結(jié)果可以看到,這是一個(gè)簡(jiǎn)單的日志文件,日志中記錄了用戶的一些操作,這里并沒有出現(xiàn)具體的SQL語(yǔ)句,這是因?yàn)閎inlog關(guān)鍵字后面的內(nèi)容是經(jīng)過(guò)編碼后的二進(jìn)制日志。

這里一個(gè)update語(yǔ)句包含如下事件

  • Query事件負(fù)責(zé)開始一個(gè)事務(wù)(BEGIN)
  • Table_map事件負(fù)責(zé)映射需要的表
  • Update_rows事件負(fù)責(zé)寫入數(shù)據(jù)
  • Xid事件負(fù)責(zé)結(jié)束事務(wù)

下面命令將行事件以偽SQL的形式表現(xiàn)出來(lái)

mysqlbinlog -v "/var/lib/mysql/binlog/test.000002"

前面的命令同時(shí)顯示binlog格式的語(yǔ)句,使用如下命令不顯示它

mysqlbinlog -v --base64-output=DECODE-ROWS "/var/lib/mysql/binlog/test.000002"

關(guān)于mysqlbinlog工具的使用技巧還有很多,例如只解析對(duì)某個(gè)庫(kù)的操作或者某個(gè)時(shí)間段內(nèi)的操作等。簡(jiǎn)單分享幾個(gè)常用的語(yǔ)句,更多操作可以參考官方文檔。

# 可查看參數(shù)幫助
mysqlbinlog --no-defaults --help

# 查看最后 100 行
mysqlbinlog --no-defaults --base64-output=decode-rows -vv atguigu-bin.000002 |tail - 100

# 根據(jù)position查找
mysqlbinlog --no-defaults --base64-output=decode-rows -vv atguigu-bin.000002 |grep -A 
20 '4939002'

上面這種辦法讀取出binlog日志的全文內(nèi)容比較多,不容易分辨查看到pos點(diǎn)信息,下面介紹一種更為方便的查詢命令:

mysql> show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];
  • IN 'log_name':指定要查詢的binlog文件名(不指定就是第一個(gè)binlog文件)
  • FROM pos:指定從哪個(gè)pos起始點(diǎn)開始查起(不指定就是從整個(gè)文件首個(gè)pos點(diǎn)開始算)
  • LIMIT [offset]:偏移量(不指定就是 0 )
  • row_count :查詢總條數(shù)(不指定就是所有行)

上面這條語(yǔ)句可以將指定的binlog日志文件,分成有效事件行的方式返回,并可使用limit指定pos點(diǎn)的起始偏移,查詢條數(shù)。其它舉例:

#a、查詢第一個(gè)最早的binlog日志:
show binlog events\G ;

#b、指定查詢mysql-bin.088802這個(gè)文件
show binlog events in 'atguigu-bin. 008002'\G;

#c、指定查詢mysql-bin. 080802這個(gè)文件,從pos點(diǎn):391開始查起:
show binlog events in 'atguigu-bin.008802' from 391\G;

#d、指定查詢mysql-bin.000802這個(gè)文件,從pos點(diǎn):391開始查起,查詢5條(即5條語(yǔ)句)
show binlog events in 'atguigu-bin.000882' from 391 limit 5\G

#e、指定查詢 mysql-bin.880002這個(gè)文件,從pos點(diǎn):391開始查起,偏移2行〈即中間跳過(guò)2個(gè))查詢5條(即5條語(yǔ)句)。
show binlog events in 'atguigu-bin.088882' from 391 limit 2,5\G;

binlog格式查看

mysql> show variables like 'binlog_format';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   | //行格式
+---------------+-------+
1 rows in set (0.00 sec)

除此之外,binlog還有 2 種格式,分別是StatemenMixed

  • Statement 每一條會(huì)修改數(shù)據(jù)的sql都會(huì)記錄在binlog中。 優(yōu)點(diǎn):不需要記錄每一行的變化,減少了binlog日志量,節(jié)約了IO,提高性能。
  • Row 5.1.5版本的MySQL才開始支持row level 的復(fù)制,它不記錄sql語(yǔ)句上下文相關(guān)信息,僅保存哪條記錄被修改。 優(yōu)點(diǎn):row level 的日志內(nèi)容會(huì)非常清楚的記錄下每一行數(shù)據(jù)修改的細(xì)節(jié)。而且不會(huì)出現(xiàn)某些特定情況下的存儲(chǔ)過(guò)程,或function,以及trigger的調(diào)用和觸發(fā)無(wú)法被正確復(fù)制的問題。
  • Mixed 從5.1.8版本開始,MySQL提供了Mixed格式,實(shí)際上就是Statement與Row的結(jié)合。

使用日志恢復(fù)數(shù)據(jù)

mysqlbinlog恢復(fù)數(shù)據(jù)的語(yǔ)法如下:

mysqlbinlog [option] filename|mysql –uuser -ppass;

這個(gè)命令可以這樣理解:使用mysqlbinlog命令來(lái)讀取filename中的內(nèi)容,然后使用mysql命令將這些內(nèi)容恢復(fù)到數(shù)據(jù)庫(kù)中。

  • filename:是日志文件名。

  • option:可選項(xiàng),比較重要的兩對(duì)option參數(shù)是–start-date、–stop-date 和 --start-position、–stop-position。

    • –start-date 和 - -stop-date:可以指定恢復(fù)數(shù)據(jù)庫(kù)的起始時(shí)間點(diǎn)和結(jié)束時(shí)間點(diǎn)。
    • –start-position和–stop-position:可以指定恢復(fù)數(shù)據(jù)的開始位置和結(jié)束位置。

注意:使用mysqlbinlog命令進(jìn)行恢復(fù)操作時(shí),必須是編號(hào)小的先恢復(fù),例如atguigu-bin.000001必須在atguigu-bin.000002之前恢復(fù)。

flush logs; #可以生成新的binLog 文件,不然這個(gè)文件邊恢復(fù)邊變大是不行的。

show binary logs; # 顯示有哪些binLog 文件

恢復(fù)數(shù)據(jù)

mysqlbinlog [option] filename|mysql –uuser -ppass;

mysqlbinlog --no-defaults  --start-position=236  --stop-position=1071 --database=my_db1 /var/lib/mysql/lqhdb-bin.000002 | /usr/bin/mysql -root -p123456 -v my_db1

刪除二進(jìn)制日志

MySQL的二進(jìn)制文件可以配置自動(dòng)刪除,同時(shí)MySQL也提供了安全的手動(dòng)刪除二進(jìn)制文件的方法。PURGE MASTER LOGS只刪除指定部分的二進(jìn)制日志文件,RESET MASTER刪除所有的二進(jìn)制日志文件。具體如下:

1.PURGE MASTER LOGS:刪除指定日志文件

PURGE MASTER LOGS語(yǔ)法如下:

PURGE {MASTER | BINARY} LOGS TO ‘指定日志文件名’

PURGE {MASTER | BINARY} LOGS BEFORE ‘指定日期’

舉例 :使用PURGE MASTER LOGS語(yǔ)句刪除創(chuàng)建時(shí)間比binlog.000005早的所有日志

(1)多次重新啟動(dòng)MysSQL服務(wù),便于生成多個(gè)日志文件。然后用SHOW語(yǔ)句顯示二進(jìn)制日志文件列表

SHOW BINARY LOGS;

(2)執(zhí)行PURGE MASTER LOGS語(yǔ)句刪除創(chuàng)建時(shí)間比binlog.000005早的所有日志

PURGE MASTER LOGS T0 "binlog. 000005";

(3)顯示二進(jìn)制日志文件列表

SHGW BINARY LOGS;

舉例:使用PURGE MASTER LOGS語(yǔ)句刪除2023年3月17日前創(chuàng)建的所有日志文件。具體步驟如下:

(1) 顯示二進(jìn)制日志文件列表

SHOW BINARY LOGS;

(2)執(zhí)行mysqlbinlog命令查看二進(jìn)制日志文件binlog.000005的內(nèi)容

mysqlbinlog --no-defaults "/var/lib/mysql/binlog/atguigu-bin.000005"

(3)使用PURGE MASTER LOGS語(yǔ)句刪除2023年3月17日前創(chuàng)建的所有日志文件

PURGE MASTER LOGS before "20220317";

(4)顯示二進(jìn)制日志文件列表

SHOW BINARY LOGS;

2022年01月05號(hào)之前的二進(jìn)制日志文件都已經(jīng)被刪除,最后一個(gè)沒有刪除,是因?yàn)楫?dāng)前在用,還未記錄最后的時(shí)間,所以未被刪除。

2.RESET MASTER:刪除所有二進(jìn)制日志文件

reset master;

其它場(chǎng)景

二進(jìn)制日志可以通過(guò)數(shù)據(jù)庫(kù)的全量備份和二進(jìn)制日志中保存的增量信息,完成數(shù)據(jù)庫(kù)的無(wú)損失恢復(fù)。但是,如果遇到數(shù)據(jù)量大、數(shù)據(jù)庫(kù)和數(shù)據(jù)表很多(比如分庫(kù)分表的應(yīng)用)的場(chǎng)景,用二進(jìn)制日志進(jìn)行數(shù)據(jù)恢復(fù),是很有挑戰(zhàn)性的,因?yàn)槠鹬刮恢貌蝗菀坠芾怼?/p>

在這種情況下,一個(gè)有效的解決辦法是配置主從數(shù)據(jù)庫(kù)服務(wù)器,甚至是一主多從的架構(gòu),把二進(jìn)制日志文件的內(nèi)容通過(guò)中繼日志,同步到從數(shù)據(jù)庫(kù)服務(wù)器中,這樣就可以有效避免數(shù)據(jù)庫(kù)故障導(dǎo)致的數(shù)據(jù)異常等問題。

深入理解二進(jìn)制日志

寫入機(jī)制

binlog的寫入時(shí)機(jī)也非常簡(jiǎn)單,事務(wù)執(zhí)行過(guò)程中,先把日志寫到binlog cache,事務(wù)提交的時(shí)候,再把binlog cache寫到binlog文件中。因?yàn)橐粋€(gè)事務(wù)的binlog不能被拆開,無(wú)論這個(gè)事務(wù)多大,也要確保一次性寫入,所以系統(tǒng)會(huì)給每個(gè)線程分配一個(gè)塊內(nèi)存作為binlog cache。

我們可以通過(guò)binlog_cache_size參數(shù)控制單個(gè)線程binlog cache大,如果存儲(chǔ)內(nèi)容超過(guò)了這個(gè)參數(shù),就要暫存到磁盤(Swap)。binlog日志刷盤流程如下:

圖文結(jié)合帶你搞懂MySQL日志之Binary log(二進(jìn)制日志)

上圖的write,是指把日志寫入到文件系統(tǒng)的page cache,并沒有把數(shù)據(jù)持久化到磁盤,所以速度比較快。

上圖的fsync,才是將數(shù)據(jù)持久化到磁盤的操作

write和fsync的時(shí)機(jī),可以由參數(shù)sync_binlog控制,默認(rèn)是 0 。

為 0 的時(shí)候,表示每次提交事務(wù)都只write,由系統(tǒng)自行判斷什么時(shí)候執(zhí)行fsync。雖然性能得到提升,但是機(jī)器宕機(jī),page cache里面的binglog 會(huì)丟失。如下圖:

為了安全起見,可以設(shè)置為 1 ,表示每次提交事務(wù)都會(huì)執(zhí)行fsync,就如同 redo log 刷盤流程 一樣。最后還有一種折中方式,可以設(shè)置為N(N>1),表示每次提交事務(wù)都write,但累積N個(gè)事務(wù)后才fsync。

在出現(xiàn)IO瓶頸的場(chǎng)景里,將sync_binlog設(shè)置成一個(gè)比較大的值,可以提升性能。同樣的,如果機(jī)器宕機(jī),會(huì)丟失最近N個(gè)事務(wù)的binlog日志。

binlog與redolog對(duì)比

  • redo log 它是物理日志,記錄內(nèi)容是“在某個(gè)數(shù)據(jù)頁(yè)上做了什么修改”,屬于 InnoDB 存儲(chǔ)引擎層產(chǎn)生的。

  • 而 binlog 是邏輯日志,記錄內(nèi)容是語(yǔ)句的原始邏輯,類似于“給 ID=2 這一行的 c 字段加 1”,屬于MySQL Server 層

  • 雖然它們都屬于持久化的保證,但是則重點(diǎn)不同。

    • redo log讓InnoDB存儲(chǔ)引擎擁有了崩潰恢復(fù)能力。
    • binlog保證了MySQL集群架構(gòu)的數(shù)據(jù)一致性。

Enjoy GreatSQL ??

關(guān)于 GreatSQL

GreatSQL是由萬(wàn)里數(shù)據(jù)庫(kù)維護(hù)的MySQL分支,專注于提升MGR可靠性及性能,支持InnoDB并行查詢特性,是適用于金融級(jí)應(yīng)用的MySQL分支版本。

相關(guān)鏈接: GreatSQL社區(qū) Gitee GitHub Bilibili

GreatSQL社區(qū):

社區(qū)博客有獎(jiǎng)?wù)鞲逶斍椋篽ttps://greatsql.cn/thread-100-1-1.html

圖文結(jié)合帶你搞懂MySQL日志之Binary log(二進(jìn)制日志)

技術(shù)交流群:

微信:掃碼添加GreatSQL社區(qū)助手微信好友,發(fā)送驗(yàn)證信息加群。

圖文結(jié)合帶你搞懂MySQL日志之Binary log(二進(jìn)制日志)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-471819.html

到了這里,關(guān)于圖文結(jié)合帶你搞懂MySQL日志之Binary log(二進(jìn)制日志)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 一文讓你搞懂javascript如何實(shí)現(xiàn)繼承

    一文讓你搞懂javascript如何實(shí)現(xiàn)繼承

    一、本文想給你聊的東西包含一下幾個(gè)方面:(僅限于es6之前的語(yǔ)法哈,因?yàn)閑s6里面class這用上了。。) 1.原型是啥?原型鏈?zhǔn)巧叮?2.繼承的通用概念。 3.Javascript實(shí)現(xiàn)繼承的方式有哪些? ? 二、原型是啥?原型鏈?zhǔn)巧叮?1.原型是函數(shù)本身的prototype屬性。 首先js和java不

    2024年02月04日
    瀏覽(20)
  • 一篇文章讓你搞懂內(nèi)存函數(shù)

    一篇文章讓你搞懂內(nèi)存函數(shù)

    庫(kù)函數(shù)memcmp介紹 函數(shù)memcpy從source的位置開始向后復(fù)制num個(gè)字節(jié)的數(shù)據(jù)到destination的內(nèi)存位置。 這個(gè)函數(shù)在遇到 ‘\\0’ 的時(shí)候并不會(huì)停下來(lái)。 如果source和destination有任何的重疊,復(fù)制的結(jié)果都是未定義的。 庫(kù)函數(shù)memcmp的代碼形式 看代碼 memcmp將arr1中的內(nèi)容拷貝到arr2中,總共

    2024年02月17日
    瀏覽(29)
  • Nginx配置詳解,一文帶你搞懂Nginx

    1 基本概念 1.1 Nginx簡(jiǎn)介 Nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器,特點(diǎn)是占用內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上Nginx的并發(fā)能力確實(shí)在同類型的網(wǎng)頁(yè)服務(wù)器中表現(xiàn)好。Nginx專為性能優(yōu)化而開發(fā),性能是其最重要的考量,實(shí)現(xiàn)上非常注重效率,能經(jīng)受高負(fù)載的考驗(yàn),有報(bào)告表明能支

    2024年01月16日
    瀏覽(22)
  • 一文帶你搞懂sklearn.metrics混淆矩陣

    一般的二分類任務(wù)需要的評(píng)價(jià)指標(biāo)有4個(gè) accuracy precision recall f1-score 四個(gè)指標(biāo)的計(jì)算公式如下 ? 計(jì)算這些指標(biāo)要涉及到下面這四個(gè)概念,而它們又構(gòu)成了混淆矩陣 TP (True Positive) FP (False Positive) TN (True Negative) FN (False Negative) 混淆矩陣 預(yù)測(cè)值 0 1 實(shí)際值 0 TN FP 1 FN TP 這里我給出的

    2024年02月06日
    瀏覽(23)
  • 手把手帶你搞懂AMS啟動(dòng)原理

    手把手帶你搞懂AMS啟動(dòng)原理

    徹底搞懂AMS即ActivityManagerService,看這一篇就夠了 最近那么多教學(xué)視頻(特別是搞車載的)都在講AMS,可能這也跟要快速啟動(dòng)一個(gè)app(甚至是提高安卓系統(tǒng)啟動(dòng)速度有關(guān)),畢竟作為安卓系統(tǒng)的核心系統(tǒng)服務(wù)之一,AMS以及PMS都是很重要的,而我之前在 應(yīng)用的開端–PackageManag

    2024年02月12日
    瀏覽(505)
  • Linux 有哪些搜索方式?5分鐘帶你搞懂!

    Linux 有哪些搜索方式?5分鐘帶你搞懂!

    5分鐘帶你掌握 Linux 的三種搜索方式 1.find 命令 find 命令是用來(lái)在給定的目錄下查找符合給定條件的文件 語(yǔ)法格式: find [查找起始路徑] [查找條件] [處理動(dòng)作] (1)根據(jù)名稱查找: find [查找起始路徑] -name 文件名 或者 find [查找起始路徑] -iname 文件名 -name \\\"PATERN\\\":完全匹配文

    2024年01月16日
    瀏覽(24)
  • 帶你搞懂人工智能、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)!

    帶你搞懂人工智能、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)!

    不少高校的小伙伴找我聊入門人工智能該怎么起步,如何快速入門,多長(zhǎng)時(shí)間能成長(zhǎng)為中高級(jí)工程師(聊下來(lái)感覺大多數(shù)學(xué)生黨就是焦慮,畢業(yè)即失業(yè),尤其現(xiàn)在就業(yè)環(huán)境這么差),但聊到最后,很多小朋友連人工智能和機(jī)器學(xué)習(xí)、深度學(xué)習(xí)的關(guān)系都搞不清楚。 今天更文給大

    2024年02月02日
    瀏覽(31)
  • 一篇文章帶你搞懂前端Cookie

    一篇文章帶你搞懂前端Cookie

    瀏覽器Cookie相信各位點(diǎn)進(jìn)這篇文章的小伙伴應(yīng)該不陌生了,它是前端領(lǐng)域中一個(gè)非常重要的內(nèi)容,當(dāng)然也是面試的一個(gè)考點(diǎn),不知道各位小伙伴是否真正掌握了Cookie呢?當(dāng)然沒有掌握也是沒有關(guān)系的,可以跟著小編的腳步一起來(lái)學(xué)習(xí)一下前端Cookie,沒有熟練掌握的小伙伴看完這

    2024年02月04日
    瀏覽(30)
  • MySQL 8.0 OCP (1Z0-908) 考點(diǎn)精析-架構(gòu)考點(diǎn)1:二進(jìn)制日志文件(Binary log)

    【免責(zé)聲明】文章僅供學(xué)習(xí)交流,觀點(diǎn)代表個(gè)人,與任何公司無(wú)關(guān)。 編輯|SQL和數(shù)據(jù)庫(kù)技術(shù)(ID:SQLplusDB) MySQL中有多種類型的日志文件,這些日志可用于故障排除、性能調(diào)整和審計(jì)等目的,幫助找出正在發(fā)生的活動(dòng)。 常見的日志文件包括: 日志類型 寫入日志的信息 錯(cuò)誤日志(

    2024年02月16日
    瀏覽(91)
  • 【科普】1分鐘幫你搞懂機(jī)械硬盤和固態(tài)硬盤

    機(jī)械硬盤 ,機(jī)械硬盤的英文簡(jiǎn)稱為 HDD ,即Hard Disk Drive;使用類似唱片機(jī)的 旋轉(zhuǎn)盤 來(lái) 存儲(chǔ) 數(shù)據(jù)。數(shù)據(jù) 被寫 入到一個(gè)或多個(gè) 金屬盤片 上,并 通 過(guò)一個(gè) 機(jī)械臂 來(lái) 讀 取和 寫 入數(shù)據(jù)。機(jī)械硬盤通常有 較大的存儲(chǔ)容量 ,但 讀寫 速度較 慢 ,而且在讀寫過(guò)程中會(huì)有 機(jī)械部件

    2024年02月16日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包