Mysql的管理及使用

来源:http://www.cnblogs.com/bananaaa/archive/2017/12/19/8066827.html
-Advertisement-
Play Games

第1章 Mysql的管理 1.1 連接管理mysql mysql[options] #Linux或UNIX shell提示符(終端視窗) mysql --help #查看幫助信息 mysql --version/-V #查看客戶端程式的版本 01.常見的選項語法格式: 長格式(--<option>) ...


第1章 Mysql的管理

1.1 連接管理mysql

mysql[options]   #Linux或UNIX shell提示符(終端視窗)
mysql --help   #查看幫助信息
mysql --version/-V   #查看客戶端程式的版本

01.常見的選項語法格式:

長格式(--<option>)

簡易格式(-<option>)

02.通過指定的主機進行連接:

本地連接到在同一主機上運行的伺服器

遠程連接到在其他主機上運行的伺服器

03.常見特定於客戶機的連接選項

-u<user_name>或--host=<user_name>
-p<password>
-h<host_name>或--host=<host_name>
--protocol=<protocol_name>   #協議
-P<port_number>或--port=<port_number>
-S<socket_name>或--socket=<socket_name>

1.2 資料庫啟動流程介紹

1 [root@db02 ~]# file /application/mysql/bin/mysqld
2 
3 /application/mysql/bin/mysqld: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped

提示:單進程mysqld 其屬性LSB即二進位的可執行文件,mysql.server便於我們通過SYS-V啟動關閉的腳本

說明:support-files/mysql.server及mysqld_safe都是腳本文件,最後都調用mysqld二進位文件啟動

1.3 mysql資料庫的關閉與啟動

01.資料庫關閉命令

1 /etc/init.d/mysqld stop

2 mysqladmin -uroot -poldboy123 shutdown 

註意:生產環境下禁止使用下述方式關閉mysql軟體

kill -9   #利用系統進程管理命令關閉MySQL
kill pid   # pid即資料庫服務對應的進程號
l killall mysqld   #mysqld即資料庫服務對應的進程名
l pkill mysqld   #mysqld即資料庫服務對應的進程名

02.資料庫啟動命令

1 /etc/init.d/mysqld start

2 application/mysql/bin/mysqld_safe [--user=mysql] & 

1.3.1 perror查看錯誤詳細內容

在mysql使用過程中,由於操作系統引起的文件目錄不存在或sql語句錯誤引起的報錯,這些error會有相應的代碼如errorN、ErrcodeN,這裡"N"代表具體的錯誤號

1 [root@db02 ~]# perror 126 127 135
2 OS error code 126:  Required key not available
3 MySQL error code 126: Index file is crashed
4 OS error code 127:  Key has expired
5 MySQL error code 127: Record file is crashed
6 MySQL error code 135: No more room in record file

1.4 Mysql初始化配置文件

即在資料庫啟動之前通過/etc/my.cnf告訴啟動程式一系列預設置的選項

配置文件功能:影響伺服器進程的啟動;影響到客戶端程式

實例01

 1 ./mysqld_safe --basedir=/application/mysql --datadir=/application/mysql/data --socket=/tmp/mysql.sock --user=mysql #指定mysql啟動參數 

註意:由於指定了socket導致無法找到該文件,此時mysql無法進行正常連接,故使用mysql -uroot -poldboy123 -S /tmp/mysql.sock即可

1.4.1 配置my.cnf的方法

使用不同的"標簽/模塊"明確指定影響哪部分功能,代表一類程式

實例02

 1 vim /etc/my.cnf
 2 
 3 [mysqld]
 4 basedir=/application/mysql
 5 datadir=/application/mysql/data
 6 socket=/tmp/mysql.sock
 7 log-error=/var/log/mysql.log
 8 port=3307   #其中,用戶無需指定
 9 
10 [mysql]
11 socket=/tmp/mysql.sock
12 user=root
13 password=oldboy123   #此處通過socket登錄,無需配置埠
14 /etc/init.d/mysqld restart   #重啟生效

說明:此時檢查進程信息,可以看到與我們手動配置的my.cnf一致

1 [root@db02 ~]# ps -ef |grep [my]sql
2 
3 root       3411   1918  0 15:52 pts/1    00:00:00 /bin/sh /application/mysql/bin/mysqld_safe
4 
5 mysql      3548   3411  0 15:52 pts/1    00:00:00 /application/mysql/bin/mysqld --basedir=/application/mysql --datadir=/application/mysql/data --plugin-dir=/application/mysql/lib/plugin --user=mysql --log-error=/var/log/mysql.log --pid-file=/application/mysql/data/db02.pid --socket=/tmp/mysql.sock --port=3307

1.4.2 配置文件讀取順序

/etc/my.cnf
  ↓ ↓ ↓
/etc/mysql/my.cnf
$MYSQL_HOME/my.cnf
defaults-extra-file
~/.my.cnf

說明:假設4個配置文件都存在, 同時使用 --defaults-extra-file指定了參數文件,這時如果有一個"參數變數"在5個配置文件中都出現了,那麼後面的配置文件中的參數變數值會覆蓋前面配置文件中的參數變數值,就是說會使用 ~/. my.cnf中設置的值

註意:若使用 ./bin/mysqld_safe守護進程啟動mysql資料庫時,使用了 --defaults-file=<配置文件的絕對路徑>參數,這時只會使用這個參數指定的配置文件

1.5 Mysql多實例配置

多個mysqld+多套my.cnf+多套數據=>生產環境無用

思路:

01.初始化兩套數據到不同目錄mysql_install_db
/data/3306
/data/3308

02.兩套配置文件
/data/3306/my.cnf
/data/3308/my.cnf

03.兩個socket
socket=/data/3306/mysql.sock
socket=/data/3308/mysql.sock

04.兩套實例
/application/mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf
/application/mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf

05.設計啟動腳本

1.5.1 實例配置文件及程式腳本

註意:需首先關閉當前mysql服務,防止造成埠衝突/etc/init.d/mysqld stop

 1 [root@db02 ~]# vim /data/3306/my.cnf
 2 [client]
 3 port            = 3306
 4 socket          = /data/3306/mysql.sock
 5 
 6 [mysqld]
 7 user    = mysql
 8 port    = 3306
 9 socket  = /data/3306/mysql.sock
10 basedir = /application/mysql
11 datadir = /data/3306/data
12 log-bin = /data/3306/mysql-bin
13 server-id = 6
14 
15 [mysqld_safe]
16 log-error=/data/3306/oldboy_3306.err
17 pid-file=/data/3306/mysqld.pid
my.cnf
[root@db02 ~]# vim /data/3306/mysql
#!/bin/sh
port=3306
mysql_user="root"
CmdPath="/application/mysql/bin"
mysql_sock="/data/${port}/mysql.sock"
mysqld_pid_file_path=/data/3306/3306.pid
start(){
    if [ ! -e "$mysql_sock" ];then
         printf "Starting MySQL...\n"
        /bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf --pid-file=$mysqld_pid_file_path 2>&1 > /dev/null &
        sleep 3
    else
        printf "MySQL is running...\n"
        exit 1
    fi
}
stop(){
    if [ ! -e "$mysql_sock" ];then
        printf "MySQL is stopped...\n"
        exit 1
    else
        printf "Stoping MySQL...\n"
        mysqld_pid=`cat "$mysqld_pid_file_path"`
         if (kill -0 $mysqld_pid 2>/dev/null)
           then
             kill $mysqld_pid
             sleep 2
         fi
    fi
}

restart(){
    printf "Restarting MySQL...\n"
    stop
    sleep 2
    start
}

case "$1" in
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart)
        restart
    ;;
    *)
        printf "Usage: /data/${port}/mysql {start|stop|restart}\n"
esac
mysql

1.5.2 創建3308埠配置文件

1 \cp /data/3306/my.cnf  /data/3308/
2 \cp /data/3306/mysql  /data/3308/
3 sed -i 's/3306/3308/g' /data/3308/my.cnf
4 sed -i 's/server-id = 6/server-id = 8/g' /data/3308/my.cnf
5 sed -i 's/3306/3308/g' /data/3308/mysql

1.5.3 創建數據目錄授權

1 mkdir -p /data/{3306,3308}/data
2 chown -R mysql.mysql /data/
3 chmod 700 /data/{3306,3308}   #增加其安全性

1.5.4 初始化數據並創建錯誤日誌文件

1 cd /application/mysql/scripts 
2 ./mysql_install_db  --defaults-file=/data/3306/my.cnf --basedir=/application/mysql --datadir=/data/3306/data --user=mysql
3 ./mysql_install_db  --defaults-file=/data/3308/my.cnf --basedir=/application/mysql --datadir=/data/3308/data --user=mysql
4 
5 
6 touch /data/3306/oldboy_3306.err
7 touch /data/3308/oldboy_3308.err

說明:5.6.36特殊性即不會自動創建錯誤日誌文件

1.5.5 啟動資料庫併進行測試

1 /data/3306/mysql start

2 /data/3308/mysql start

3

4 sleep 5 

註意:由於mysql服務的預設埠為3306,故在啟動之前需先將mysql服務停止運行並關閉開機自啟動

 1 [root@db02 scripts]# netstat -lntup|grep 330
 2 tcp        0      0 :::3306                :::*                   LISTEN      1793/mysqld        
 3 tcp        0      0 :::3308                :::*                   LISTEN      2001/mysqld
 4 
 5 [root@db02 ~]# ps -ef |grep [m]ysql
 6 root       1217      1  0 22:40 ?        00:00:00 /bin/sh /application/mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf --pid-file=/data/3306/3306.pid
 7 mysql      1403   1217  0 22:40 ?        00:00:01 /application/mysql/bin/mysqld --defaults-file=/data/3306/my.cnf --basedir=/application/mysql --datadir=/data/3306/data --plugin-dir=/application/mysql/lib/plugin --user=mysql --log-error=/data/3306/oldboy_3306.err --pid-file=/data/3306/3306.pid --socket=/data/3306/mysql.sock --port=3306
 8 
 9 root       1426      1  0 22:40 ?        00:00:00 /bin/sh /application/mysql/bin/mysqld_safe --defaults-file=/data/3308/my.cnf --pid-file=/data/3308/3308.pid
10 mysql      1611   1426  0 22:40 ?        00:00:01 /application/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf --basedir=/application/mysql --datadir=/data/3308/data --plugin-dir=/application/mysql/lib/plugin --user=mysql --log-error=/data/3308/oldboy_3308.err --pid-file=/data/3308/3308.pid --socket=/data/3308/mysql.sock --port=3308

1.5.5.1  加入開機自啟

1 vim /etc/rc.local

2

3 /data/3306/mysql start

4 /data/3308/mysql start 

1.5.6 mysql多實例登錄

1 mysql -S /data/3306/mysql.sock

2 mysql -S /data/3308/mysql.sock #或mysql -h 10.0.0.52 -P 3306 

 

第2章 Mysql用戶管理

2.1 用戶的介紹

01.定義:用戶名+主機域(host指定要登陸本機的用戶主機,而非本機)

02.功能作用:連接資料庫、管理資料庫對象及數據

03.連接資料庫:

A.定義用戶:用戶名+主機域、密碼

B.定義許可權:對不同對象進行許可權(角色)定義

grant 許可權 on 許可權範圍(對象) to 用戶 identified by '密碼';

04.許可權(角色):

對資料庫的讀、寫等操作,如create、select、insert、update等

資料庫定義好的一組許可權的定義,如all privileges、replication slave

05.許可權範圍:

全庫級別:*.* (所有資料庫對象)
單庫級別:banana.* (oldboy單庫下所有對象)
單表級別:banana.test (單表級別)

註意:當在多個許可權範圍上設置了同一個用戶的許可權時,以綜合最大許可權為準。故在一般情況下不要在多個許可權範圍內設置許可權,如庫級別oldboy.*、表級別oldboy.test

06.用戶:

repl@localhost
repl@'10.0.0.53'
repl@'10.0.0.%'(%為通配符,匹配所有)或10.0.0.0/255.0.0.0
repl@'10.0.0.5%'

#網段帶匹配符%則必須加' ',用戶可加可不加

2.2 用戶許可權實例

查看當前所有用戶(選擇)

select user,password,host from mysql.user;

創建用戶

語法:CREATE USER '用戶'@'主機' IDENTIFIED BY '密碼';
實例:create user 'banana'@'10.0.0.%' identified by '123';

授權用戶

語法:GRANT ALL ON *.* TO '用戶'@'主機';
實例:grant all on banana.* to banana@'172.16.1.%';

  其他實例

grant all on *.* to banana@'172.16.1.%' identified by '123';   #創建用戶,同時進行授權
grant all on *.* to banana@'localhost' identified by '123' with grant option;   #授權單表root一樣的許可權
grant select,create,insert,update on banana.* to banana@'10.0.0.%' identified by '123';   #只對banana資料庫下的對象進行增insert create、改update、查select

收回用戶許可權

語法:REVOKE INSERT ON *.* FROM '用戶'@'主機';
實例:revoke drop on banana.* from 'banana'@'10.0.0.%';

查看用戶對應許可權

語法:SHOW GRANTS FOR '用戶'@'主機';
實例:show grants for banana@'10.0.0.%';

註意:mysql內自帶的命令可以大寫,而自身定義的用戶管理需區分大小寫;儘量不要修改授權表

說明:使用資料庫自帶的命令無需修改授權表如drop、grant,而使用如delete、update等命令則需修改授權表,如下

刪除用戶

語法:drop user 'user'@'主機域;
實例:drop user banana@'10.0.0.52';
     delete from mysql.user where user='banana' and host='localhost';   #強制刪除用戶(危險)
     flush privileges;

總結說明:可以授權的用戶許可權create, select, insert, update, delete, drop, reload, shutdown, process, file, references, index, alter, show databases, super, create temporary tables, lock tables, execute, replication slave, replication client, create view, show view, create routine, alter routine, create user, event, trigger, create tablespace

2.3 Mysql忘記密碼的解決方法

01.停止mysql服務

 1 /etc/init.d/mysqld stop 

02.添加參數啟動服務

 1 /application/mysql/bin/mysqld_safe --skip-grant-tables --skip-networking --user=mysql &  

說明:在此模式下啟動情況為:無密碼登陸、網路用戶無法登陸(只能本地登錄)、與授權有關的命令均無法執行,如grant,revoke,drop user,create user

03.修改密碼

1 mysql
2 
3 mysql> use mysql
4 mysql> update mysql.user set password=PASSWORD('123') where user='root' and host='localhost';   #只針對5.6
5 mysql> flush privileges;

04.重啟mysql服務

 1 /etc/init.d/mysqld restart 

05.登錄驗證

 1 mysql -uroot -p123 

至此,密碼修改成功

 

第3章 MySQL客戶端

3.1 Mysql客戶端命令

SQL是用戶用來管理及控制資料庫的專用語言

mysql:

用於資料庫連接管理;將用戶SQL語句發送到伺服器

mysqladmin:

命令行管理工具

mysqldump:

備份資料庫和表的內容

3.1.1 ①mysql客戶端介面自帶功能

\h 或 help 或 ?   #獲取幫助信息,如help grant
\G               #格式化輸出(行轉列),如select * from mysql.user\G
\T 或 tee         #記錄操作日誌,如tee /tmp/mysql.log 正誤均記錄
\c 或 CTRL+c    #退出,如CTRL+d,exit,\q,quit等
\s 或 status       #查看資料庫負載、版本及連接等狀態信息
\. 或 source       #調用SQL腳本,如source world.sql;
\u 或use          #進入/切換資料庫,如use world

快捷鍵

上下翻頁
tab 補全表名
ctrl + C 退出
ctrl + L 清屏

3.1.2 ②mysqladmin命令

命令幫助:mysqladmin --help
語法:mysqladmin -u<name> -p<password> commands
實例:
mysqladmin version
mysqladmin processlist
mysqladmin status
mysqladmin ping
mysqladmin shutdown
mysqladmin variables

3.1.3 ③mysqldump命令

命令幫助:mysqldump --help

基本語法:
Usage: mysqldump [OPTIONS] database [tables]
OR   mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR   mysqldump [OPTIONS] --all-databases [OPTIONS]

3.2 SQL語句

3.2.1 DDL 數據定義語言

定義對象:庫(名字、特性)、表(表名字、列信息)

對於庫定義:創建、刪除、修改(本身和庫中的對象->表,視圖,存儲過程,函數,觸發器)

       表定義:創建(定義表結構)、刪除(對於表本身)、修改(只針對錶結構非表內容)

3.2.1.1  庫定義

查看庫

show databases;
show databases like '%ban%';   #模糊匹配

創建庫定義

語法:CREATE DATABASE db_name CHARACTER SET charset_name COLLATE collation_name;
實例:create database banana;
     create database banana_tong character set gbk collate gbk_chinese_ci;  #指定字元集建庫

說明:在一些SQL語句的結尾處要使用";"分號或者使用"\g"或"\G"來結束語句的運行

修改庫字元編碼

語法:ALTER DATABASE [db_name] CHARACTER SET charset_name COLLATE collation_name;
實例:alter database banana charset gbk;

刪除庫

drop database banana;

切庫

use baanana;

3.2.1.2  表定義

表屬性:欄位、數據類型、索引 ==>預設:字元集、引擎

表定義(列->必須定義,至少一列):

表名、列名、列屬性(數據類型、列約束)

列定義的範圍說明:

1)數據類型->字元/數字

2)約束條件->子健、外鍵、唯一

3)列屬性->比較特殊的定義

定義表之前需先進入資料庫

use world;

創建表

語法:CREATE TABLE 表名 (列名 列定義)
實例:create table test(id int);
     create table student(idcard int ,name char(30),sex char(4));   #創建多列

查看表結構

desc student;

查看建表語句

show create table student;

修改表定義(表名)

rename table student to test1;
alter table test1 rename to people;

添加表特性

alter table people add addr char(40) NOT NULL;
alter table people add age int(4) after name;
alter table people add tel varchar(15) first; 

#同時添加多個列定義
alter table people add id int(10) first,add sex char(4) after name;

刪除表結構(列欄位)

alter table people drop sex;

修改表定義/數據類型

alter table people modify name char(20);
alter table people change name people_name char(30);

3.2.2 DCL 資料庫控制語言

用戶授權:grant

語法:GRANT ALL ON *.* TO 'user'@'localhost';
實例:grant select,create,insert,update on banana.* to 'banana'@'10.0.0.%' identified by '123';   #創建用戶的同時進行授權

回收許可權:revoke

語法:REVOKE INSERT ON *.* FROM sys@localhost;
實例:revoke drop,delete on banana.* from sys@localhost; 

3.2.3 DML 數據操作語言

插入數據

語法:insert into <表名> [(<欄位名1>[,..<欄位名n > ])] values (值1 )[,(值n )]
實例:insert into banana values(1,'boy');   #插入一行數據
     insert into banana values(1,'boy'), (2,'girl');   #插入多行數據

#只針對某一列插入數據
insert into test(id,name) values(1,'boy');

更新/修改表(切記要有where條件)

update test2 set name='haha' where name='girl';

刪除表內容(切記要有where條件)

delete from test where id=1; # 邏輯刪除,一行一行刪。
truncate table test; # 物理刪除,pages(block) ,效率高

insert into `test` values(1,'apple'),(2,'pear'),(3,'banana'), (4,'lemon'), (5,'orange')

3.2.3.1  [企業案例]生產環境中d偽刪除

01.為表添加一個state

TINYINT說明:即欄位類型,若設置為UNSIGNED類型,只能存儲從0到255的整數,不能用來儲存負數

 1 mysql> alter table test2 add state tinyint(2) not null default 1;
 2 mysql> desc test2;
 3 
 4 +-------+----------+------+-----+---------+-------+
 5 | Field | Type     | Null | Key | Default | Extra |
 6 +-------+------------+------+-----+---------+-------+
 7 | id    | int(11)    | YES|     | NULL |      |
 8 | name  | varchar(20)| YES|    | NULL |      |
 9 | state | tinyint(2) | NO |     | 1     |      |
10 +-------+-------------+------+-----+------+---+

02.查看當前的state狀態

1 mysql> select * from test2;
2 
3 +----+---------+-------+
4 | id | name    | state |
5 +----+---------+-------+
6 |  1 | boy   |   1 |
7 |  2 | girl  |   1 |
8 |  3 | inca  |   1 |
9 |  4 | zuma  |   1 |

03.更新並修改state數據為0

 1 mysql> update test2 set state=0 where name='boy';
 2 mysql> select * from test2;
 3 
 4 +----+---------+-------+
 5 | id | name    | state |
 6 +----+---------+-------+
 7 |  1 | boy   |   0 |
 8 |  2 | girl  |   1 |
 9 |  3 | inca  |   1 |
10 |  4 | zuma  |   1 |

04.當查詢時使用where條件,此時只會顯示state=1的記錄,其效果與刪除類似

1 mysql> select * from test2 where state=1;
2 
3 +----+---------+-------+
4 | id | name    | state |
5 +----+---------+-------+
6 |  2 | girl  |   1 |
7 |  3 | inca  |   1 |
8 |  4 | zuma  |   1 |

3.2.3.2  mysql安全模式(防止不加條件誤刪)

1 [root@db02 ~]# mysql -uroot -p123 -U
2 
3 mysql> update test2 set name='oldgirl';
4 
5 ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column

說明:mysql命令加上選項-U後,當發出沒有where或limit關鍵字的update或delete時,mysql程式拒絕執行

3.2.4 DQL數據查詢語言

語法:SELECT <欄位1,欄位2,...> FROM <表名> WHERE <表達式>

其中,select、from、where是不能隨便改的,是關鍵字,支持大小寫

查看用戶的連接信息

select user,password,host from mysql.user;

#模糊查詢數據
select user,password,host from mysql.user where user like 'sy%';

查看test2表中的信息

select * from sys.test2;   #查看所有信息
select id,name from sys.test2;

特殊信息查詢

select id,name from test2 where id=2;
select id,name from test2 where id>2 and id<4;   #查看id大於2且小於4的記錄
select id,name from test2 where name='sys';
select id,name from test2 order by id asc;   #提取記錄排序

select id,name from test2 order by limit 1,3;   #顯示跳過第一行後的三行(需要與排序配合使用)

註意:select必須同from搭配使用

 

此筆記是本人學習摘記整理而成,此為初稿(尚有諸多不完善之處),原創作品允許轉載,轉載時請務必以超鏈接形式標明文章原始出處,作者信息和本聲明,否則將追究法律責任。http://www.cnblogs.com/bananaaa/

 


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

-Advertisement-
Play Games
更多相關文章
  • 吐槽一下,博客園久了沒有上,賬號沒了,重新申請一個. cesharp v62版本,內核採用最新的Cef 62,支持最新的Grid佈局. 由於官方的cefsharp 採用.net4.5.2開發.怎麼辦怎麼辦.我只能用.net4.0.沒辦法啊,自己拿源碼修改相容唄. 仔細分析源碼發現: 1.net4.5 ...
  • 效果圖 相關知識 這部分基本就是廢話,網上都能找到,我只不過是整理了以下.建議先不看,用到的時候可以回來看看 先來看兩組圖,有助於理解什麼是貝塞爾曲線(圖片取自維基百科,參考鏈接1) 二次貝塞爾曲線: P0是起點,P2是終點,P1是控制點 三次貝塞爾曲線: P0是起點,P2是終點,P1是控制點1,P ...
  • public interface ICycle:IEnumerable { T Get(); } public class Cycle:ICycle { private class Node { public Node(F f) { Data=f; } p... ...
  • 1.開始。 2.新建一個控制台,我們新建一個SpringNetTest類。 2.首先我們用正常的方式在mian函數入口實例化這個SpringNetTest對象 4.很明顯這個地方是直接New的,進行了強耦合,在實際的項目中這樣寫,未來需求變動是不利於修改的。面向對象思想中,我們要面向介面編程。接下來 ...
  • 複製以下代碼並錄製巨集,運行一次即可。Option ExplicitPublic Sub AllInternalPasswords()' Breaks worksheet and workbook structure passwords. Bob McCormick' probably origina... ...
  • 首先先來看幾個概念,分別是:單用戶、單任務、多用戶、多任務 單用戶: 是指操作系統一般只能由一個人同時進行登錄 單任務: 是指操作系統只能同時處理一個任務 多用戶: 是指操作系統可以允許由多個用戶同時操作 多任務: 是指操作系統可以同時處理多個任務 windows屬於單用戶、多任務的操作系統(遠程登 ...
  • Ubuntu Server在虛擬機中的安裝與基本配置 安裝Ubuntu Server 16 ​ 虛擬機使用VMware workstation。新建虛擬機,一路下一步,安裝ubuntu,出現錯誤。 ​ 更換語言為英文,沒有報錯,成功安裝。 配置網路 ​ 為了方便使用ssh,使用了關閉dhcp的NAT ...
  • 一、ls -l 各段含義 第一個欄位共有10個'-',第一個‘-’代表該文件類型:‘-’是普通文件,b是塊特殊文件,c是字元特殊文件,d是目錄,l是鏈接文件,p是管道文件後面九條杠,三條一組,可以是rwxrwxrwx,這代表按順序所有者、組、其他用戶的訪問許可權均為可讀可寫可執行。 如果其中哪個位置還 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...