MySQL資料庫安裝與語句總結

来源:https://www.cnblogs.com/cs-songbai/p/18084992
-Advertisement-
Play Games

mysql語句總結 創建 --create 創建 <create> create database 資料庫名 [charset=utf8]; create table 數據表名 ( (欄位 類型 約束[, 欄位 類型 約束]) | -- 級聯刪除/級聯更新 on delete/update casc ...


mysql語句總結

創建 --create

創建 <create>
create database  資料庫名 [charset=utf8];
create table  數據表名 (
    (欄位 類型 約束[, 欄位 類型 約束]) | 
    -- 級聯刪除/級聯更新 on delete/update cascade
    [[constraint 外鍵名] foreign key(欄位) references 表名(欄位)] [on delete cascade]| 
    --終端執行OK,導入sql文件報錯,原因未知
    [constraint  主鍵約束的名字  primary key(列名1,列名2)] | 
    -- 聯合主鍵
    [primary key(列名1,列名2)] | 
    -- 設置欄位單列唯一與聯合唯一
    [unique(欄位)] | 
    [unique(欄位1, 欄位2)]
);
create view 視圖名 as select語句;
create index 索引名稱 on 表名(欄位名(長度))
* 如果指定欄位是字元串,需要指定長度,建議長度與定義欄位時的長度一致
* 欄位類型如果不是字元串,可以不填寫長度部分 

創建資料庫用戶

create user songbai identified by 'songbai'; 
grant all on songbai_mall.* to 'songbai'@'%'; 
flush privileges;

第一句:創建用戶賬號 songbai, 密碼 songbai (由identified by 指明)
第二句:授權songbai_mall資料庫下的所有表(songbai_mall.*)的所有許可權(all)給用戶songbai在以任何ip訪問資料庫的時候('songbai'@'%')
第三句:刷新生效用戶許可權

MySQL SERVER 8.0以上版本 添加用戶方式
insert into user(user, host, authentication_string, ssl_cipher, x509_issuer, x509_subject) 
values('songbai','%', concat('*',upper(sha1(unhex(sha1('songbai'))))),'','','');

刪除 --drop、delete

drop table 表名;
drop view 視圖名;
drop index 索引名 on 表名;
drop database 資料庫名;
delete from 表名 [where 條件]; # 物理刪除
邏輯刪除實際上是在表中添加一個欄位(類型一般為bit)用於標記是否刪除
-- 清空表數據並將AUTO_INCREMENT置為1
truncate 表名; 

修改 --alter、update

1. 修改表結構<alter table>
alter table 表名 add 欄位名 類型;
alter table 表名 add primary key(設置為主鍵的欄位);
alter table 表名 add primary key(欄位1,欄位2); # 添加聯合主鍵
alter table 表名 add constraint 主鍵約束的名字 primary key(列名1,列名2); # 添加聯合主鍵並命名
alter table 表名 add unique key(添加唯一約束的欄位) # 為指定欄位添加唯一約束
alter table 表名1 add foreign key (設置為外鍵的欄位1) references 表名2(與欄位1關聯的主鍵欄位);
alter table 舊表名 rename 新表名;
alter table 表名 modify 欄位名 類型及約束;
alter table 表名 change 原欄位名 新欄位名 類型及約束;
alter table 表名 drop 列名1 [,drop 列名2];
alter table 表名 drop primary key; 刪除主鍵約束但保留欄位
alter table 表名 drop foreign key 外鍵名稱;
* 外鍵名稱使用show create table 表名;查看外鍵名稱
* mysql中沒有多主鍵,只有聯合主鍵。也就是說不能夠同時存在多個獨立的primary key,但可以有多個unique

2. 修改編碼模式 <(alter database set) | (alter table set)>
alter database 資料庫名 character set utf8;
alter database 資料庫名 charset=utf8
alter table 表名 character set utf8;
alter table 表名 modify 欄位名 character set utf8;   #修改欄位編碼

3.修改表引擎
alter table 表名 ENGINE=MyISAM;
*** 需要註意的是,更改表引擎時可能會出現一些問題,比如由於當前引擎的限制導致無法更改。因此,在更改表引擎之前,應該確保當前引擎能夠支持更改,併進行充分地備份數據。

4. 修改表記錄 <update>
update 表名 set 欄位1=值1,欄位2=值2... [where 條件];

插入 --insert into

insert into 表名 values(...);
insert into 表名 values(...),(...);
insert into 表名(欄位1,...欄位n) values (值1,...,值n);
insert into 表名(欄位1,...欄位n) values (值1,...,值n),(值1,...,值n);
insert into 表名 分組結果;
eg:
    insert into goods_cates (name) select cate_name from goods group by cate_name;
* 將分組的結果select cate_name from goods group by cate_name 插入到表goods_cates的name欄位中

查詢 --select、show、desc、where、having . . .

1. 簡單查詢
select version();
select now();
select database();
select user();
select * from 表名|視圖名 [where 條件];
select * from 資料庫名.表名|資料庫名.視圖名 [where 條件];
select * from 表名1,表名2 ... where 條件; 
說明: 
1. 內連接查詢是 顯式的內連接,多表查詢是 隱式的內連接
2. 多表查詢是在笛卡爾積的基礎之上的
3.相對而言,隱式連接好理解好書寫,語法簡單,擔心的點較少。但是顯式連接可以減少欄位的掃描,有更快的執行速度。這種速度優勢在3張或更多表連接時比較明顯
4.顯示內連接和隱示內連接獲得的查詢結果是一樣的
select 欄位1,欄位2,... from 表名 [where 條件];
select distinct 欄位1,欄位2,... from 表名;  # 根據指定欄位(可以為多個)去重

show databases;
show tables;                # 包含視圖
show index from 表名;       # 查看索引
show create table 表名;
show create database 資料庫名;
show engines; 查看支持的引擎
desc 數據表名;

2. 複雜查詢
Ⅰ. 語法結構
    select 欄位,(聚合函數,表達式)
    from  表名1,表名2,...
    where 條件
    order by  欄位 asc| desc
    group by 欄位名
    limit start,count

   執行順序
    from 表名
    where ....
    group by ...
    select distinct *
    having ...
    order by ...
    limit start,count

Ⅱ. 條件查詢
select * from 表名 where 欄位名 like '黃%' | '黃_' | ; 
# "%"  任意零個或多個字元 "_"  一個任意字元
select * from 表名 where name rlike "正則表達式";
# rlike正則查找
select * from 表名 where 欄位名 in 非連續範圍;
select * from 表名 where 欄位名 between n and m;   # n到m
select * from 表名 where 欄位名 is null;
Ⅲ. 排序查詢
select * from 表名 order by 欄位名1 asc|desc [,欄位名2 asc|desc,...]
 # asc 升序,desc 降序;按欄位1、欄位2、...逐次排序
Ⅳ. 聚合函數查詢
select count(*) from 表名;
select max(欄位名)[,min(欄位名),sum(欄位名),avg(欄位名)] from 表名;
* round(計算結果 , 小數位數)  --四捨五入
* char_length(欄位名) -- 字元長度
Ⅴ. 分組查詢
select 欄位名1,group_concat(欄位名2,[,欄位3])[,group_concat(欄位名4,[,欄位5]),...] from 表名 group by 欄位名1;
*select後面可以跟group_concat(欄位名1,[,欄位名2...])和聚合函數(max、min、avg、sum)、分組的欄位名(只能更分組的欄位名,其他欄位名不行)
eg:
  select name,group_concat(id,cate_id),group_concat(cate_id,price) from goods group by name;

select 欄位名1,count(*) from 表名 group by 欄位名1 having count(*)>2;
select 欄位名1,count(*) from 表名 group by 欄位名1 with rollup;
*with rollup的作用是:在最後新增一行,來記錄當前列里所有記錄的總和
Ⅵ. 連接查詢
select * from 表1 inner|left|right join 表2 on 條件 where 條件

取別名 --as

select 欄位 as 別名,欄位 as 別名,... from 數據表 as 別名 [where 條件];
select b.欄位1 as 欄位1別名, b.欄位2 as 欄位2別名,... from 表名 as b;

數據表導入導出

數據表導入(終端環境->進入資料庫)
激活要導入的資料庫
一. 使用終端命令
  方式1 source 數據表存儲路徑;
  方式2 mysql [-h資料庫ip地址, --port 埠號] -u資料庫用戶名 -p 資料庫名 < areas.sql
  # mysql -h10.211.55.5 -usongbai -p songbai_mall < areas.sql
二. 使用腳本
   1.建立"文件名.sh"文件
   2.文件內容:
     #!/bin/bash
     mysql -h10.211.55.5 -usongbai -p songbai_mall < areas.sql
   3.修改文件的執行許可權
	chmod +x 文件名.sh
   4.執行如下命令導入數據
	文件路徑/文件名.sh

導出所有資料庫
mysqldump --column-statistics=0 -uroot -p --all-databases --lock-all-tables > dump.sql
導出資料庫中所有的數據表(終端環境)
mysqldump -u root -p 資料庫名 > dump.sql
數據表導出(終端環境)
mysqldump -u root -p 資料庫名 數據表名 > dump.sql

*說明:--column-statistics=0 解決客戶端mysqldump的版本大於8,而MySQL資料庫是比較老的版本問題

其他指令

1. mysql客戶端登錄
mysql -uroot -p
mysql -uroot -p密碼

2. 退出mysql客戶端登錄
exit/quit/ctrl+d

3. 使用資料庫
use python04new;

4. 數據比較多時使用\G進行分組顯示(一行一行顯示):  
查詢結果集\G

5. 複製數據表-複製表數據
create table 表名 查詢語句
eg: create table t1 select * from t2

6. 複製數據表-不複製表數據
eg: 
create table t1 like t2
create table t1 select * from t2 where 1=2

修改資料庫名: https://www.if98.com/justtest2020/database/110016.html

其他說明

1. 對於innodb 存儲引擎來說,一張表必須有一個主鍵; 如果建表時沒有指定主鍵,MySQL會檢索約束為 not null unique 的第一個欄位作為主鍵,如果沒有則創建一個影藏的主鍵。

一、伺服器安裝

  1. 安裝伺服器端:在終端中輸入如下命令,回車後,然後按照提示輸入
    • sudo apt-get install mysql-server
  2. 啟動服務
    • sudo service mysql start
  3. 查看進程中是否存在mysql服務
    • ps ajx|grep mysql
  4. 停止服務
    • sudo service mysql stop
  5. 重啟服務
    • sudo service mysql restart

二、配置

  1. 配置文件目錄

    • /etc/mysql/mysql.cnf
    • 主要配置
    bind-address表示伺服器綁定的ip,預設為127.0.0.1
    
    port表示埠,預設為3306
    
    datadir表示資料庫目錄,預設為/var/lib/mysql
    
    general_log_file表示普通日誌,預設為/var/log/mysql/mysql.log
    
    log_error表示錯誤日誌,預設為/var/log/mysql/error.log
    

三、命令行客戶端安裝

  1. 在終端運行如下命令,按提示填寫信息
    • sudo apt-get install mysql-client
  2. 連接資料庫伺服器
    • mysql -u用戶名 -p用戶密碼
  3. 退出
    • 按ctrl+d
    • quit 或者 exit

四、Mysql與Python交互

  1. Python 中操作MysqlSQL步驟

Python API 訪問資料庫流程

  1. 代碼演練

#  *_* coding:utf8 *_*
from pymysql import *

class JDQuery(object):

    def __init__(self):
        self.conn = connect(
            host="localhost", 
            port=3306, user="root", 
            password="", 
            database="jingdong", 
            charset="utf8")
        self.cs = self.conn.cursor()
        # 查詢結果以字典形式輸出
        self.cs = self.conn.cursor(cursors.DictCursor)

    def __del__(self):
        self.cs.close()
        self.conn.close()
        print("welcome use jing-dong query system again !")

    def execute_sql(self, sql):
        self.cs.execute(sql)
        for temp in self.cs.fetchall():
            print(temp)

    @staticmethod
    def print_menu():
        print("----  welcome use jing-dong mini goods query system !  ----")
        print("----1.query all goods infomations !----")
        print("----2.query all goods category !----")
        print("----3.query all goods brands !----")
        print("----4.add all goods brands !----")
        print("----0.exit query system !----")

    def show_all_goods(self):
        sql = "select * from goods"
        self.execute_sql(sql)

    def show_goods_cate(self):
        sql = "select * from goods_cates"
        self.execute_sql(sql)

    def show_goods_brand(self):
        sql = "select * from goods_brands"
        self.execute_sql(sql)

    def add_goods_brand(self):
        brand_name = input("請輸入新增品牌: ")

        sql = "insert into goods_brands(name) values(%s)"
        self.cs.execute(sql, [brand_name])
        self.conn.commit()
        sql = "select * from goods_brands where name=%s"
        self.cs.execute(sql, [brand_name])
        print(self.cs.fetchone())

    def run(self):
        while True:
            self.print_menu()
            command = input("請按提示輸入操作指令: ")
            if command == "1":
                self.show_all_goods()
            elif command == "2":
                self.show_goods_cate()
            elif command == "3":
                self.show_goods_brand()
            elif command == "4":
                self.add_goods_brand()
            elif command == "0":
                exit()
            else:
                print("輸入指令錯誤! ")


def main():
    query = JDQuery()
    query.run()
 

if __name__ == '__main__':
    main()
  1. 事務

  • 定義: 所謂事務,它是一個操作序列,這些操作要麼都執行,要麼都不執行,它是一個不可分割的工作單位。

  • 事務四大特性(ACID)

    • 原子性(atomicity)
    一個事務必須被視為一個不可分割的最小工作單元,整個事務中的所有操作要麼全部提交成功,要麼全部失敗回滾,對於一個事務來說,不可能只執行其中的一部分操作,這就是事務的原子性
    
    • 一致性(Consistency)
    資料庫總是從一個一致性的狀態轉換到另一個一致性的狀態。(在前面的例子中,一致性確保了,即使在執行第三、四條語句之間時系統崩潰,支票賬戶中也不會損失200美元,因為事務最終沒有提交,所以事務中所做的修改也不會保存到資料庫中。)
    
    • 隔離性(Isolation)
    通常來說,一個事務所做的修改在最終提交以前,對其他事務是不可見的。(在前面的例子中,當執行完第三條語句、第四條語句還未開始時,此時有另外的一個賬戶彙總程式開始運行,則其看到支票帳戶的餘額並沒有被減去200美元。)
    
    • 持久性(Durability)
    一旦事務提交,則其所做的修改會永久保存到資料庫。(此時即使系統崩潰,修改的數據也不會丟失。)
    
  • 開啟事務

開啟事務後執行修改命令,變更會維護到本地緩存中,而不維護到物理表中
begin;/start transaction;
  • 提交事務
將緩存中的數據變更維護到物理表中
commit;
  • 回滾事務
放棄緩存中變更的數據
rollback;

五、賬戶管理

  1. 查看所有用戶

    • 所有用戶及許可權信息存儲在mysql資料庫的user表中
    • 主要欄位說明:
      • Host表示允許訪問的主機
      • User表示用戶名
      • authentication_string表示密碼,為加密後的值
  2. 創建賬戶、授權

    • 需要使用實例級賬戶登錄後操作,以root為例
    • 常用許可權主要包括:create、alter、drop、insert、update、delete、select
    • 如果分配所有許可權,可以使用all privileges
    • 創建賬戶&授權
    創建格式:	
    	grant 許可權列表 on 資料庫 to '用戶名'@'訪問主機' identified by '密碼';
    示例1:
    	創建一個laowang的賬號,密碼為123456,只能通過本地訪問, 並且只能對jing_dong資料庫中的所有表進行讀操作
    	1. mysql -uroot -p
    	2. grant select on jing_dong.* to 'laowang'@'localhost' identified by '123456';
    示例2:
    	創建一個laoli的賬號,密碼為12345678,可以任意電腦進行鏈接訪問, 並且對jing_dong資料庫中的所有表擁有所有許可權
    	2. grant all privileges on jing_dong.* to "laoli"@"%" identified by "12345678"
    說明:
    - 可以操作python資料庫的所有表,方式為:jing_dong.*
    - 訪問主機通常使用 百分號% 表示此賬戶可以使用任何ip的主機登錄訪問此資料庫
    - 訪問主機可以設置成 localhost或具體的ip,表示只允許本機或特定主機訪問
    - 查看用戶有哪些許可權
    	show grants for laowang@localhost;
    	
    
  3. 賬戶操作

    • 修改許可權
    修改格式:	
    	grant 許可權名稱 on 資料庫 to 賬戶@主機 with grant option;
    
    示例:
    	1. mysql -uroot -p
    	2. grant select,insert on jingdong.* to 'laowang'@'localhost' with grant option;
    	3. flush privileges
    
    • 修改密碼
    1. 使用root登錄,修改mysql資料庫的user表
    	- 使用password()函數進行密碼加密 
          update user set authentication_string=password('新密碼') where user='用戶名';
          例:
          update user set authentication_string=password('123') where user='laowang';
    ** 註意 ubuntu mysql5.7版本需增加一條指令
    	update user set plugin="mysql_native_password";
    2. 註意修改完成後需要刷新許可權
    	- 刷新許可權:flush privileges
    
    • 遠程登錄 (謹慎使用)
    如果向在一個Ubuntu中使用msyql命令遠程連接另外一臺mysql伺服器的話,通過以下方式即可完成,但是此方法僅僅瞭解就好了,不要在實際生產環境中使用
    
    - 修改 /etc/mysql/mysql.conf.d/mysqld.cnf 文件
    - service mysql restart
    
    連接不上說明
    1. 網路不通
    2. 查看資料庫是否配置了bind_address參數, 如果設置了bind_address=127.0.0.1 那麼只能本地登錄
    3. 查看資料庫是否設置了skip_networking參數, 如果設置了該參數,那麼只能本地登錄mysql資料庫
    4. 埠指定是否正確
    
    • 刪除賬戶
    方式1:
      drop user '用戶名'@'主機';
      例:
      drop user 'laowang'@'%';
    
    方式2:
      delete from user where user='用戶名';
      例:
      delete from user where user='laowang';
    
      -- 操作結束之後需要刷新許可權
      flush privileges
    
    說明: 推薦使用語法1刪除用戶, 如果使用語法1刪除失敗,採用語法2方式
    忘記 root 賬戶密碼: http://blog.csdn.net/lxpbs8851/article/details/10895085
    

六、MySQL主從同步

一、MySQL主從同步配置

MySQL主從同步機制

  • 主從同步定義:

    	主從同步使得數據可以從一個資料庫伺服器複製到其他伺服器上,在複製數據時,一個伺服器充當主伺服器(master),其餘的伺服器充當從伺服器(slave)。因為複製是非同步進行的,所以從伺服器不需要一直連接著主伺服器,從伺服器甚至可以通過撥號斷斷續續地連接主伺服器。通過配置文件,可以指定複製所有的資料庫,某個資料庫,甚至是某個資料庫上的某個表
    
  • 使用主從同步的好處

    • 數據備份
    • 讀寫分離
    • 負載均衡
  • 主從同步機制

    	Mysql伺服器之間的主從同步是基於二進位日誌機制,主伺服器使用二進位日誌來記錄資料庫的變動情況,從伺服器通過讀取和執行該日誌文件來保持和主伺服器的數據一致。
    
    	在使用二進位日誌時,主伺服器的所有操作都會被記錄下來,然後從伺服器會接收到該日誌的一個副本。從伺服器可以指定執行該日誌中的哪一類事件(譬如只插入數據或者只更新數據),預設會執行日誌中的所有語句。
    
    	每一個從伺服器會記錄關於二進位日誌的信息:文件名和已經處理過的語句,這樣意味著不同的從伺服器可以分別執行同一個二進位日誌的不同部分,並且從伺服器可以隨時連接或者中斷和伺服器的連接。
    
    	主伺服器和每一個從伺服器都必須配置一個唯一的ID號(在my.cnf文件的[mysqld]模塊下有一個server-id配置項),另外,每一個從伺服器還需要通過CHANGE MASTER TO語句來配置它要連接的主伺服器的ip地址,日誌文件名稱和該日誌裡面的位置(這些信息存儲在主伺服器的資料庫里)
    
  • 基本步驟

    1. 在主伺服器上,開啟 二進位日誌機制 和 配置一個獨立的ID
    2. 在每一個從伺服器上,配置一個唯一的ID,創建一個用來專門複製主伺服器數據的賬號
    3. 在開始複製進程前,在主伺服器上記錄二進位文件的位置信息
    4. 如果在開始複製之前,資料庫中已經有數據,就必須先創建一個數據快照(可以使用mysqldump導出資料庫,或者直接複製數據文件)
    5. 配置從伺服器要連接的主伺服器的IP地址和登陸授權,二進位日誌文件名和位置
  • 詳細配置步驟

    主和從的身份可以自己指定,我們將虛擬機Ubuntu中MySQL作為主伺服器,將Windows中的MySQL作為從伺服器。 在主從設置前,要保證Ubuntu與Windows間的網路連通。

    • 1 - 在主伺服器Ubuntu上進行備份(將所有資料庫導出),執行命令:

      mysqldump -uroot -pmysql --all-databases --lock-all-tables > ~/master_db.sql
      
    • 2 - 將主伺服器資料庫導入從伺服器 (保持主從資料庫數據一致)

      mysql –uroot –pmysql < master_db.sql
      
    • 3 - 在主從伺服器中設置mysqld的配置文件,主伺服器開啟log_bin和server-id;從伺服器開啟server-id(server-id必須唯一) 為防止主從伺服器server-id重覆 一般設置為ip地址最後一個位元組

      • Linux系統:

      sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

      
      - Windows系統:
      
      ```tex
      1. 找到Windows中MySQL的配置文件(一般為my.ini)
      2. 編輯my.ini文件,修改server-id,並保存退出。 
      -- server-id 建議放在配置第一行,否者可能出現無法啟動資料庫
      
  • 4 - 重啟mysql服務(主從伺服器)

    sudo service mysql restart
    
    • Windows系統重啟方式

      方式一
        - 以管理員身份打開dos
        - net stop mysql
        - net start mysql
        
      方式二
        - 可以在開始菜單中輸入services.msc找到並運行
        - 在打開的服務管理中找到MySQL,並重啟該服務
      
  • 5 - 登入主伺服器 Linux 中的mysql,為從伺服器創建一個賬號同步數據使用

    GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by 'slave';
    
    FLUSH PRIVILEGES;
    
  • 6 - 獲取主伺服器的二進位日誌信息(File與position)

    SHOW MASTER STATUS;
    -- File 為使用的日誌文件名字;  從伺服器連接到master主伺服器時,master_log_file的值
    -- Position 為使用的文件位置;  從伺服器連接到master主伺服器時,master_log_pos的值
    
  • 7 -登入從伺服器windows/linux中的mysql,設置連接到master主伺服器

    change master to master_host='10.211.55.5', master_user='slave', master_password='slave',master_log_file='mysql-bin.000006', master_log_pos=590;
    
    -- master_host:主伺服器Ubuntu的ip地址
    -- master_log_file: 前面查詢到的主伺服器日誌文件名
    -- master_log_pos: 前面查詢到的主伺服器日誌文件位置
    
  • 登入從伺服器windows/linux中的mysql,開啟同步,查看同步狀態

    start slave
    
    show slave status \G
    
    • 出現以下欄位說明同步正常運行

      Slave_IO_Running: Yes
      Slave_SQL_Running: Yes
      
      * 如果同步異常可以嘗試重啟電腦
      
  • 測試主從同步

    - 在Ubuntu的MySQL中(主伺服器)創建一個資料庫
    - 在Windows的MySQL中(從伺服器)查看新建的資料庫是否存在
    

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 軟體介紹: winmail收到新郵件不會提示用戶,這樣用戶就容易錯過消息 下載foxmail可以解決這個問題 一:下載foxmail 1.實體機進入官網https://www.foxmail.com/,點擊下載版本隨意 下載好後拖到虛擬機上 二:配置foxmail 1.開始創建賬號 因為這幾種郵箱都 ...
  • 實驗環境: 一臺安裝好的DNS伺服器,ip為192.168.1.201 一臺郵件伺服器,192.168.1.224 一臺客戶端,192.168.1.249,dnsIP為192.168.1.201 都是wmnet1,使其能互相ping通 一:配置DNS 1.打開DNS伺服器,新建主機 把郵件伺服器的主 ...
  • 本文主要學習 FreeRTOS 事件組的相關知識,包括事件組概述、事件組特征、創建事件組、操作事件組、刪除事件組等知識 ...
  • 放眼全球,數據作為一種新興生產要素,在全球經貿活動中扮演著至關重要的角色,驅動著數字經濟的蓬勃興起。據前瞻預測,至2025年,全球數據流動對整體經濟增長的貢獻預估將達到驚人的11萬億美元。 近幾年國家對數據要素關註度不斷上升。2023年12月31日,國家數據局等17部門聯合印發《“數據要素×”三年行 ...
  • varchar的最大值是多少?如果你去搜索過這個答案,我相信你或多或少都看到過65535這個答案。比如我們嘗試詢問一下當下最火的人工智慧,你可能會得到和我類似答案。 ...
  • 在用Apache SeaTunnel研發SM2加密組件過程中,發現社區關於本地調試SeaTunnel文章過於簡單,很多情況沒有說明,於是根據自己遇到問題總結這篇文檔。SeaTunnel本地調試官方文檔,希望對大家有所幫助! 使用的引擎為Flink(不需要下載,SeaTunnel中有載入依賴),輸入輸 ...
  • 前言 本文記錄 ES 的一些基本操作,就是對官方文檔的一些整理,按自己的習慣重新排版,湊合著看。官方的更詳細,建議看官方的。 下文以 books 為索引名舉例。 新增 添加單個文檔 (沒有索引會自動創建) POST books/_doc {"name": "Snow Crash", "author" ...
  • 前置概念 無併發的解決方案 一些小型項目,或極少有併發的項目,這些策略在無併發情況下,不會有什麼問題。 讀數據策略:有緩存則讀緩存,然後介面返回。沒有緩存,查詢出數據,載入緩存,然後介面返回。 寫數據策略:數據發生了變動,先刪除緩存,再更新數據,等下次讀取的時候載入緩存,或一步到位更新數據後直接更新 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...