主頁 > 前端設計 > Mysql資料庫優化

Mysql資料庫優化

2020-10-07 18:08:23 前端設計

1.存盤引擎

什么是存盤引擎

存盤引擎:可以看作是資料表存盤資料的一種格式,不同的格式具有的特性也各不相同,
舉例說明:只有InnoDB存盤引擎支持事務、外鍵、行級鎖等特性,而MyISAM則支持壓碩訓制等特性,
存盤引擎的特點:本身是MySQL資料庫服務器的底層組件之一,最大的特點是采用“可插拔”的存盤引擎架構,
“可插拔”的理解:指的是對正在運行的MySQL服務器依然可根據實際需求使用特定陳述句加載(插入,INSTALL PLUGIN陳述句)或卸載(拔出,UNINSTALL PLUGIN陳述句)所需的存盤引擎檔案

存盤引擎的選擇

查看當前支持的存盤引擎
SHOW ENGINES;

執行以上SQL陳述句,運行的結果中含有6個欄位,.
Engine (存盤引擎)、Support (是否支持)
Comment (注釋說明)、Transactions (是否支持事務)
XA (是否支持分布式事務)和Savepoints ( 是否支持事務的保存點設定)

在這里插入圖片描述
在這里插入圖片描述

1. InnoDB存盤引擎

InnoDB存盤引擎:在MySQL 5.7版本中被指定為默認的存盤引擎,

特性:是MySQL中第一個提供外鍵約束的表引擎,尤其對事務處理的能力,是MySQL其他存盤引擎無法與之比擬的,
優勢:用于完成事務、回滾、崩潰修復和多版本并發控制的事務安全處理
缺點:讀寫效率一般

存盤模式
  • 存盤格式:默認InnoDB資料表都共用一個表空間檔案ibdata1,每張資料表都會在對應的資料庫下創建一個與表同名的結構檔案(資料庫/表名.frm)

ibdata1 的位置:通常位于data目錄下,與資料庫檔案處于同級目錄,
ibdata1 的作用:集中存盤資料和索引,

設定資料表的獨立表空間檔案:全域變數innodb_ file_ _per_ table

#查看默認是否共用同一個表空間檔案.
SHOW VARIABLES LIKE 'innodb_file_per_table';
#開啟每個表獨立的表空間檔案
SET GLOBAL innodb_file_per_table=ON;

例:
在這里插入圖片描述

2. MyISAM存盤引擎

MyISAM存盤引擎:在MySQL5.5以前的版本中是MySQL的默認存盤引擎,

特性:是基于ISAM存盤引擎發展起來的,不僅解決了ISAM的很多不足,還增加了很多有用的擴展,例如,資料的全文索引、壓縮與加密、支持復制與備份的恢復等,
優勢:與InnoDB相比,MyISAM的優點是處理速度快
缺點:InnoDB相比,MyISAM的缺點是不支持事務的完整性和并發性

MyISAM資料表的檔案擴展名分別為frm、myd和myi,檔案名與表名相同,

擴展名功能說明
frm用于存盤表的結構
myd用于存盤資料,是MYData的縮寫
myi用于存盤索引,是MYIndex的縮寫

MyISAM表的資料移植非常方便,只需將資料庫下表中對應的3個檔案復制到另一個資料庫下即可,

3. MRG_MYISAM存盤引擎

MRG_MYISAM存盤引擎:相同MyISAM存盤引擎表的集合,也被稱為MERGE,

特性:所有合并的表必須具有相同順序的欄位與索引的應用
優勢:可快速拆分大型只讀表,執行搜索效率更高等,
缺點:索引讀取速度較慢只針對MyISAM存盤引擎的表進行合并、實際應用較少等,

4. MEMORY存盤引擎

MEMORY存盤引擎:在是MySQL中一種特殊的存盤引擎,

特性:在MEMORY存盤引擎的表中,所有資料都保存在記憶體中,一旦程式出錯或服務器斷電都會導致資料的丟失,
優勢:資料的處理速度快
缺點:不適合持久保存資料,而且也不能存盤太大的資料
對讀寫速度快,資料量小、不需要持久保存的臨時資料是理想的選擇,

5. CSV是存盤引擎

CSV是存盤引擎:是采用文本方式存盤資料的一種存盤引擎,資料在檔案中通過逗號分隔保存,

結構:資料表會分為后綴frm(存盤表結構資訊)、csv(存盤表內容)和csm(存盤表的狀態、資料量等元資料)3個檔案存盤,檔案名與資料表名相同,
一是不支持索引和磁區,二是表中所有欄位必須含有NOT NULL屬性

6. ARCHIVE存盤引擎

ARCHIVE存盤引擎:適合保存數量龐大、長期維護但很少被訪問的資料,

特性:資料存盤時會用zlib壓縮庫進行壓縮,在記錄被請求時會實時進行解壓,
提示: ARCHIVE存盤引擎僅僅支持查詢和插入操作,并且因不支持資料索引,查詢效率較低,

7. BLACKHOLE存盤引擎

BLACKHOLE存盤引擎:被稱為“黑洞”存盤引擎,

特性:寫入的資料都會消失,就像被“黑洞”吞噬了一樣,
作用:利用此特性可以將其作為轉發器或過濾器
舉例:將主服務器中的大量資料經過過濾后搬到從服務器,可將BL ACKHOLE的資料表作為過濾器使用,且不會保存任何資料,但是會在二進制日志中記錄下所有SQL陳述句,然后可復制并執行這些陳述句,將結果保存到從服務器中,

8. PERFORMANCE_SCHEMA存盤引擎

PERFORMANCE_SCHEMA存盤引擎: MySQL .5.7中performance_ schema資料庫中所有資料表的存盤引擎,

特性:用戶不能為資料表創建此型別的存盤引擎,
作用:主要用于收集資料庫服務器性能引數

9. FEDERATED存盤引擎

FEDERATED存盤引擎:默認情況下在MySQL中不可用,

啟動:利用“–federated"選項,
特性:創建從遠程MySQL服務器訪問資料的表,本地的FEDERATED表只保存結構資訊(后綴為frm),遠程服務器同時要保存結構資訊和資料檔案,所有的增刪改查操作都通過訪問遠程服務器后,才將結果回傳給本地的服務器,

2.索引

1. 索引概述

索引:是一種特殊的資料結構,可以看做是利用MySQL提供的語法將資料表中的某個或某些欄位與記錄的位置建立一一個對應的關系,并按照一定的順序排序好,
且的:就是為了快速定位指定資料的位置,

2. 索引分類

普通索引:是MySQL 中的基本索引型別,使用KEYINDEX定義,不需要添加任何限制條件,作用是加快對資料的訪問速度,
唯一性索引:由UNIQUE INDEX定義,創建唯一性索引的欄位需要添加唯一性約束,用于防止用戶添加重復的值,
主鍵索引:由PRIMARY KEY定義的一種特殊的唯一性索引, 用于根據主鍵自身的唯一性標識每條記錄,防止添加主鍵索引的欄位值重復或為NULL,

  • 若在InnoDB表中資料保存的順序與主鍵索引欄位的順序一致時,可將這種主鍵索引稱為“聚簇索引”,一般聚簇索引指的都是表的主鍵
  • 一張資料表中只能有一個聚簇索引,

全文索引:由FULLTEXT INDEX定義,用于根據查詢字符提高資料量較大的欄位查詢速度,此索引在定義時欄位型別必須是CHAR、VARCHAR或TEXT中的一種,在MySQL 5.7版本中,僅MylSAM和InnoDB存盤引擎支持全文索引
空間索引:由SPATIAL INDEX定義在空間資料型別欄位上的索引,提高系統獲取空間資料的效率,僅MyISAM和InnoDB存盤引擎支持空間索引,還要保證創建索引的欄位不能為空,

根據創建索引的欄位個數,還可以將它們分為單列索引復合索引

  • 單列索引:指在表中單個欄位上創建的索引,可以是普通索引、唯一索引、主鍵索引或者全文索引,只要保證該索引對應表中一個欄位即可
  • 復合索引:是在表的多個欄位上創建一個索引,且只有在查詢條件中使用了這些欄位中的第一個欄位時,該索引才會被使用,

3. 索引的操作

創建索引
  • CREATE TABLE方式,與資料表同時創建,
#方式1: CREATE TABLE創建資料表時添加索引
CREATE TABLE資料表名(
欄位名資料型別[約束條件]
...
PRIMARY KEY [索引型別] (欄位串列)[索引選項],
{INDEX|KEY} [索引名稱] [索引型別] (欄位串列)[索引選項],
UNIQUE [INDEXIKEY] [索引名稱] [索引型別] (欄位串列)[索引選項],
{FULLTEXT|SPATIAL} [INDEX|KEY] [索引名稱] (欄位串列)[索引選項]
)[表選項];
  • ALTER TABLE方式,對已創建的資料表進行添加,
#方式2: ALTER TABLE向已創建的資料表添加索引
ALTER TABLE 資料表名
ADD PRIMARY KEY[索引型別] (欄位串列) [索引選項]
|ADD {INDEX|KEY} [索引名稱] [索引型別] (欄位串列) [索引選項]
|ADD UNIQUE [INDEX|KEY] [索引名稱] [索引型別] (欄位串列) [索引選項]
|ADD FULLTEXT [INDEX|KEY] [索引名稱] (欄位串列)[索引選項]
IADD SPATIAL [INDEX|KEY] [索引名稱] (欄位串列)[索引選項], ...;
  • CREATE INDEX方式,對已創建的資料表進行添加,不能添加主鍵索引,
#方式3: CREATE INDEX向已創建的資料表添加索引.
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名稱
[索引型別] ON 資料表名(欄位串列)[索引選項][演算法選項|鎖選項]

索引可設定選項

索引選項語法
索引型別USING {BTREE | HASH}
欄位串列欄位[(長度)[ASC | DESC]]
索引選項KEY_BLOCK_SIZE [=]值|索引型別| WITH PARSER決議器插件名| COMMENT ‘描述資訊’
演算法選項ALGORITHM [=] {DEFAULT|INPLACE|COPY}
鎖選項LOCK [=] {DEFAULT|NONE|SHARED\IEXCLUSIVE}

主鍵索引不能設定索引名稱,其他索引的名稱也可以省略,默認使用建立索引的欄位表示,復合索引則使用第一個欄位的名稱作為索引名,

索引欄位資訊
欄位名稱描述
Non_unique索引是否可以重復,0表示不可以,1表示可以
Key_name索引的名字,如果索引是主鍵索引,則它的名字為PRIMARY
Seq_in_index建立索引的欄位序號值,默認從1開始
Column_name建立索引的欄位
Collation索引欄位是否有排序,A表示排序,NULL表示沒有排序
Cardinality計算MySQL連接時使用索引的可能性(精確度不高),值越大,可能性越高
Sub_part前綴索引的長度,如3,若欄位值都被索引則為NULL
Index_type索引型別,可選值有BTREE、FULLTEXT、 HASH、RTREE
Comment索引欄位的注釋資訊
Index_comment創建索引時添加的注釋資訊
欄位名稱描述
id查詢識別符號,默認從1開始,若使用了聯合查詢,則該值依次遞增,聯合查詢結果對應的該值為NULL
select_ type操作型別,如DELETE、UPDATE等,但是當執行SEL ECT陳述句時,它的值有多種,如SIMPLE表示不需聯合查詢或簡單的子查詢,
table輸出資料的表
partitions匹配的磁區
type連接的型別,如const使用了主鍵索引或唯一性索引,ref表示使用前綴索引或條件中含有運算子“=”或“<=>”等
key_ len索引欄位的長度
ref表示哪些欄位或常量與索引比較了比較,如const表示常量與索引進行了比較
rows預計需要檢索的記錄數
filtered按條件過濾的百分比
Extra附加資訊,如Using index表示使用了索引覆寫

所謂索引覆寫指的是查詢的欄位恰好是索引的一部分或與索引
完全一致,那么查詢只需要在索引區上進行,不需要到資料區
檢索資料的情況,
這種查詢的的特點是速度非常快,但同時也會增加索引檔案的
大小,只有此索引的使用率盡可能高的情況下,索引覆寫才有
意義,否則,在使用時應該避免此情況的發生,

洗掉索引

主鍵索引在洗掉時,需要考慮該主鍵欄位是否含有AUTO_INCREMENT屬性,若有則需在洗掉主鍵索引前洗掉該屬性,否則程式會報以下的錯誤提示資訊,
在這里插入圖片描述

  • 洗掉含有AUTO INCREMENT屬性的主鍵索引
#洗掉主鍵欄位的AUTO_ INCREMENT屬性
ALTER TABLE 資料表 MODIFY 欄位名欄位型別
#洗掉主鍵索引
ALTER TABLE 資料表 DROP PRIMARY KEYDROP INDEX'PRIMARY' ON 資料表

當使用DROP INDEX洗掉主鍵索引時,其后的PRIMARY由于是MySQL中的保留字,因此必須使用反引號(‘) 包裹,

洗掉命令:

#語法1
ALTER TABLE 資料表 DROP INDEX 索引名
#語法2
DROP INDEX 索引名 ON 資料表 [演算法選項][鎖選項]

例:
在這里插入圖片描述

3.鎖機制

簡單的說,鎖機制就是為了保證多用戶并發操作時,能使被操作的資料資源保持一致性的設計規則,

鎖的分類

表級鎖(如MyISAM、MEMORY存盤引擎)

表級鎖:是MySQL中鎖的作用范圍( 鎖的粒度)最大的一種鎖,
鎖定范圍:是用戶操作資源所在的整個資料表,
優勢:有效的避免了死鎖的發生,且具有加鎖速度快、消耗資源小的特點,
缺陷:因其鎖定的粒度大,在并發操作時發生鎖沖突的概率也大,

行級鎖(如InnoDB存盤引擎特殊)

行級鎖:是MySQL 中鎖的作用范圍最小的一種鎖,
鎖定范圍:僅鎖定用戶操作所涉及的記錄資源,
優勢:能減少鎖定資源的競爭,較高并發處理能力,提升系統的整體性能,
缺陷:因其鎖定的粒度過小,每次加鎖和解鎖所消耗的資源也會更多,發生死鎖的可能性更高,

根據鎖在MySQL中的狀態也可將其分為“隱式”與“顯式”:

  • “隱式”鎖指的是MySQL服務器本身對資料資源的爭用進行管理,它完全由服務器自動執行,
  • “顯式”鎖指的是用戶根據實際需求,對操作的資料顯式的添加鎖,同樣在使用完資料資源后也需要用戶對其進行解鎖,

表級鎖

表級鎖:根據操作的不同可以分為讀鎖和寫鎖,
讀鎖:表示用戶讀取(如SELECT查詢)資料資源時添加的鎖,其他用戶不可修改或增加資料資源,但是可以讀取該資料資源,因此讀鎖也可稱為共享鎖
寫鎖:表示用戶對資料資源執行寫(如INSERT、UPDATE、DELETE等)操作時添加的鎖,除了當前添加寫鎖的用戶外,其他用戶都不能對其進行讀/寫操作,因此寫鎖也可以稱為排他鎖獨占鎖

MyISAM存盤引擎表:是MySQL 資料庫中最典型的表級鎖,
“隱式”讀的表級鎖:當用戶對MyISAM存盤引擎表執行SELECT查詢操作前,服務器會“自動”地為其添加-一個表級的讀鎖,
“隱式”寫的表級鎖:執行INSERT、 UPDATE、DELETE等寫操作前,服務器會“自動”地為其添加一個表級的寫鎖,

“隱式”讀的表級鎖與“隱式”寫的表級鎖添加的優先級順序:

  • 默認服務器“自動”添加“隱式”鎖時,表的更新操作優先于表的查詢操作,.
  • 添加寫鎖時,若表中沒有任何鎖則添加,否則將其插入到寫鎖等待的佇列中,
  • 添加讀鎖時,若表中沒有寫鎖則添加,否則將其插入到讀鎖等待的佇列中,

表級鎖語法:

LOCK TABLES 資料表名 READ [LOCAL]| WRITE,...
  • LOCK TABLES可以同時鎖定多張資料表,
  • READ表示表級的讀鎖,添加此鎖的用戶可讀但不能寫,其他用戶可以讀取,執行寫操作會進入等待佇列,
  • WRITE表示表級的寫鎖,添加此鎖的用戶可執行讀/寫操作,在釋放鎖之前,不允許其他用戶訪問與操作,

表級鎖的問題:鎖定的粒度大,多用戶訪問會造成鎖競爭,降低并發處理能力,
從資料庫優化的角度來考慮:盡量減少表級鎖定時間,提高多用戶的并發能力,.
如何釋放“顯式”表級鎖: UNLOCK TABLES陳述句

行級鎖

InnoDB存盤引擎的鎖機制相對于MyISAM存盤引擎的鎖復雜一些,
InnoDB存盤引擎既有表級鎖又有行級鎖
InnoDB表級鎖的應用與MyISAM表級鎖的相同,
“隱式”行級排他鎖:當用戶對InnoDB存盤引擎表執行INSERT、UPDATE、DELETE等寫操作前,服務器會“自動”地為通過索引條件檢索的記錄添加行級排他鎖,
“隱式”行級排他鎖要如何解鎖:直到操作陳述句執行完畢,服務器再“自動”地為其解鎖,
“隱式”行級排他鎖的生命周期:陳述句的執行時間可以看作是“隱式”行級鎖的生命周期,且該生命周期的持續時間–般都比較短暫,
延長“隱式”行級排他鎖的生命周期:通常情況下,若要增加行級鎖的生命周期,最常使用的方式是事務處理,讓其在事務提交或回滾后再釋放行級鎖,使行級鎖的生命周期與事務的相同,

對于InnoDB表來說,若要保證當前事務中查詢出的資料不會被其他事務更新或洗掉,利用普通的SELECT陳述句是無法辦到的,此時需要利用MySQL提供的“鎖定讀取”的方式為查詢操作顯式的添加行級鎖,

SELECT 陳述句 FOR UPDATE|LOCK IN SHARE MODE
# FOR UPDATE:表示在查詢時添加行級排他鎖
# LOCK IN SHARE MODE:表示在查詢時添加行級共享鎖

用戶在向InnoDB表顯式添加行級鎖時,InnoDB存盤引擎首先會“自動”地向此表添加一個意向鎖,然后再添加行級鎖

  • 意向鎖是一個隱式的表級鎖,多個意向鎖之間不會產生沖突且互相兼容
  • 意向鎖是由MySQL服務器根據行級鎖是共享鎖還是排他鎖,自動添加意向共享鎖或意向排他鎖,不能人為干預
  • 意向鎖的作用:就是標識表中的某些記錄正在被鎖定或其他用戶將要鎖定表中的某些記錄,相對行級鎖,意向鎖的鎖定粒度更大,用于在行級鎖中添加表級鎖時判斷它們之間是否能夠互相兼容
  • 好處:就是大大節約了存盤引擎對鎖處理的性能,更加方便的解決了行級鎖與表級鎖之間的沖突,

表級的共享/排他鎖與意共享排他鎖之間的兼容性關系

表級的共享/排他鎖與意共享排他鎖之間的兼容性關系

默認當InnoDB處于REPEATABLE READ (可重復讀)的隔離級別時,行級鎖實際上是一個next-key鎖,它是由間隙鎖(gap lock)和記錄鎖(record lock)組成,

  • 記錄鎖(record lock)就是前面講解的行鎖,
  • 間隙鎖(gap lock)指的是在記錄索引之間的間隙、負無窮到第1個索引記錄之間或最后1個索引記錄到正無窮之間添加的鎖,

4.分表技術

分表技術: 將單張資料表根據不同的需求進行拆分,從而達到分散單表壓力的目的,提升資料庫的訪問性能,

分表分類

水平分表:將一張資料表中的全部記錄分別存盤到多張資料表中,因此水平分表在創建時,必須保證各資料表涉及到的欄位全部相同
水平分表使單張表的資料能夠保持在一定的量級,

  • 優勢:在操作時又因其表結構完全相同,只需增加獲取對應分表名稱的運算,就可以提高系統的穩定性和負載能力,
  • 缺點:水平分表使得資料分散存盤,加大了資料維護難度,

垂直分表:將同一個業務的不同欄位分別存盤到多張資料表中,因此垂直分表在創建時,各資料表僅通過一個欄位進行連接,其他欄位都不相同

  • 垂直分表后業務邏輯更加的清晰,方便資料進行整合與擴展,還可以根據實際需求實作動靜分離,為各分表選擇不同的存盤引擎(如查詢操作多可以使用MyISAM等),
  • 缺點:需要管理冗余欄位、查詢所有資料需要進行連接

5.磁區技術

磁區概述

磁區技術:就是在操作資料表時可以根據給定的演算法,將資料在邏輯上分到多個區域中存盤,在磁區中還可以設定子磁區,將資料存放到更加具體的區域內,

  • 磁區技術可以使一張資料表中的資料存盤在不同的物理磁盤中,相比單個磁盤或檔案系統能夠存盤更多的資料,實作更高的查詢吞吐量
  • 若在WHERE子句中包含磁區條件,系統只需掃描相關的一個或多個磁區而不用全表掃描,從而提高查詢效率,
  • 同一個磁區表的所有磁區必須使用相同存盤引擎,當建表時未指定存盤引擎,在創建磁區時必須設定存盤引擎,

磁區操作

CREATE TABLE 資料表名稱
[(欄位與索引串列)][表選項]
PARTITION BY 磁區演算法(磁區欄位)[PARTITIONS磁區數量]
[SUBPARTITION BY子磁區演算法(子磁區欄位)[SUBPARTITIONS子磁區數量]]
[(
PARTITION磁區名[VALUES][其他選項][(SUBPARTITION 子磁區名 [其他選項])],
...
)];

磁區是在表選項后添加PARTITION BY實作,
一個表最多僅可以創建1024個磁區,
磁區演算法有4種,分別為LIST、RANGE、HASH和KEY,

創建list磁區

在這里插入圖片描述

磁區創建完成后,會在資料檔案data/mydb目錄下看到對應的磁區資料檔案
p_list#p#p1.idb
p_list#p#p2.idb

創建hash磁區

在這里插入圖片描述

使用HASH演算法為p_hash表創建了3個磁區,磁區檔案的序號默認從0開始,當有多個磁區時依次遞增加1,例如,以上創建的磁區序號依次為0、1和2,

#已創建的資料表沒有創建磁區,添加磁區的方式
ALTER TABLE資料表名稱PARTITION BY磁區演算法...;
#已創建的資料表含有磁區,添加磁區的方式
#LIST或RANGE磁區
ALTER TABLE資料表名稱ADD PARTITION (磁區選項,..;, .
#HASH或KEY磁區
ALTER TABLE資料表名稱PARTITIONS 數量;

在這里插入圖片描述

#洗掉HASH、KEY磁區
ALTER TABLE資料表名稱COALESCE PARTITION數量;
#洗掉RANGE、LIST磁區
ALTER TABLE資料表名稱DROP PARTITION磁區名稱; .
  • 洗掉HASH與KEY演算法磁區時,會將該磁區內的資料重新整合到剩余的磁區,
  • 洗掉RANGE與LIST演算法磁區時,會同時洗掉磁區中保存的資料,
  • 當資料表的磁區僅剩一個時,不能通過以上的方式洗掉,只能利用DROP TABLE的方式洗掉表,

若在開發中僅要清空各磁區表中的資料,不洗掉對應的磁區檔案,可以使用以下的陳述句實作,

ALTER TABLE 資料表名稱 TRUNCATE PARTITION{磁區名稱|ALL}

6.資料碎片與維護

在MySQL資料庫中,DELETE洗掉一條記錄時,僅洗掉了資料表中保存的資料,而記錄占用的存盤空間會被保留
長期洗掉資料、添加資料的程序中,索引檔案和資料檔案都將產生“空洞”,形成很多不連續的碎片,造成資料表占用空間變大,但表中記錄數卻很少的情況發生,

修復資料表的資料及索引碎片時,會把所有的資料檔案重新整理一遍,因此,若資料表的記錄數比較大,也會消耗一定的資源,所以不能頻繁的對資料碎片進行維護,可根據實際的情況按周、月或季度等進行操作,.

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

標籤:其他

上一篇:云上應用安全

下一篇:城市排水工程規劃

標籤雲
其他(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)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more