加密和安全

来源:https://www.cnblogs.com/wang-jin/archive/2018/07/14/9309504.html
-Advertisement-
Play Games

墨菲定律 墨菲定律:一種心理學效應,是由愛德華·墨菲(Edward A. Murphy)提出的, 原話:如果有兩種或兩種以上的方式去做某件事情,而其中一種選擇方式將導 致災難,則必定有人會做出這種選擇 主要內容: 任何事都沒有錶面看起來那麼簡單 所有的事都會比你預計的時間長 會出錯的事總會出錯 如果 ...


墨菲定律 墨菲定律:一種心理學效應,是由愛德華·墨菲(Edward A. Murphy)提出的, 原話:如果有兩種或兩種以上的方式去做某件事情,而其中一種選擇方式將導 致災難,則必定有人會做出這種選擇 主要內容: 任何事都沒有錶面看起來那麼簡單 所有的事都會比你預計的時間長 會出錯的事總會出錯 如果你擔心某種情況發生,那麼它就更有可能發生   安全機制 信息安全防護的目標 保密性 Confidentiality 完整性 Integrity:數據確定完好,不能被篡改 可用性 Usability:read5(高可用性)系統的總體運行時間占全部時間的百分比,百分比越 高,可用性越高,百分比按年計算,%99.9 當機10小時 可控制性Controlability 不可否認性 Non-repudiation 安全防護環節 物理安全:各種設備/主機、機房環境 系統安全:主機或設備的操作系統 應用安全:各種網路服務、應用程式 (文件共用) 網路安全:對網路訪問的控制、防火牆規則(iptables -vnL iptables -F) 數據安全:信息的備份與恢復、加密解密 管理安全:各種保障性的規範、流程、方法 安全攻擊: STRIDE 1 Spoofing 假冒 (釣魚網站,可以通過看功能變數名稱辨別) 2 Tampering 篡改 (發郵件給tom mail -s test tom .或者ctrl+d保存退出郵件,,) 3 Repudiation 否認 4 Information Disclosure 信息泄漏 Denial of Service 拒絕服務DDOS攻擊 ping -f(盡對方cpu所能去ping對方)-s 34428 5 ddos"分散式攻擊",網路黑客發送大量的訪問請求,耗盡資源,網路對方無法進行服務 6 Elevation of Privilege 提升許可權(把普通用戶的許可權設置為管理員許可權) centos5上:1:useradd wang 2:su - wang 安全設計基本原則 1 使用成熟的安全系統 : 2 以小人之心度輸入數據 :用戶輸入的數據有可能是錯誤的數據,繞過密碼的檢查 select *(*表示所有欄位) from user (查詢user表中有沒有用戶賬號) SQL(註入攻擊)where username=‘toot’ and(shall中的&&) password=‘ ’ or ‘1’ = ‘1’ username=root password=magedu (只要一個為真全為真) password= ‘ or(shall中的或) ‘ 1’ = ‘ 1 ’ (構造了一個奇怪的口令繞過密碼檢查) 3 外部系統是不安全的,防火牆:非軍事化區(DMZ) 軍事化區:嚴禁外部訪問 防水牆:防止企業內部安全的攻擊,拒接用戶隨意的訪問企業內部 4 最小授權, 5 減少外部介面 6 預設使用安全模式:考慮使用SElinux 7 安全不是似是而非 8 從STRIDE(攻擊方式)思考 9 在入口處檢查:如地鐵的入口檢查 10 從管理上保護好你的系統 安全演算法 3A(認證,授權,審計 常用安全技術 認證 :驗證身份方法:用戶名,口令等 授權 :用戶賬號不一樣授權不一樣 審計 : 記錄和安全相關的操作 安全通信 不安全的傳統協議 telnet、FTP、POP3等等;不安全密碼 http、smtp、NFS等等;不安全信息 Ldap、NIS、rsh等等;不安全驗證 密碼演算法和協議: 對稱加密 公鑰加密 單向加密 認證協議 對稱加密演算法 對稱加密:加密和解密使用同一個密鑰 key1=key2 eg:A (data) 明文 key1 (data) 密文 --------(傳輸) ------ key2( key1 (data)) B DES:Data Encryption Standard(數據加密標準),56bits(56位) 補充:ascii碼:把所有的數字或字母,符號等編寫為ascii碼,轉化為二進位使得電腦識別 3DES: DES加密3次 AES:Advanced(高級) (128, 192, 256bits)主流的加密 Blowfish,Twofish (商業演算法) IDEA,RC6,CAST5 特性: 1、加密、解密使用同一個密鑰,效率高,適合加密大量的數據 2、將原始數據分割成固定大小的塊,逐個進行加密 缺陷: 1、密鑰過多 2、密鑰分發 3、數據來源無法確認:(可能會收到假冒的加密數據) 非對稱加密演算法 非對稱加密演算法 key1 ! = key2 安全通行,數據來源確認 public key (公鑰,公開,到處發放) A pa sa secret key (私鑰,私有的) B pb sb eg 1A用 {pb加密(data)}------(傳輸) ----- B用sb解密(data) eg 2 Alice 發送 BOb 基於一對公鑰/密鑰對, 用密鑰對中的一個加密,另一個解密 • 接收者BOb 生成公鑰/密鑰對:P和S 公開公鑰P,保密密鑰S • 發送者 Alice 使用接收者的公鑰來加密消息M 將P(M)發送給接收者 • 接收者BOb 使用密鑰S來解密:M=S(P(M)) Alice :Pa公鑰,Sa私鑰 BOb :Pb公鑰,Sb私鑰 加密(Pb)------解密(Sb) Alice 發送 BOb ,,BOb只能解密,其他解不了 加密(Sa)------解密(Pa) Alice 發送 多用戶 ,,判斷出發出數據這是誰 公鑰加密:密鑰是成對出現 拿到公鑰是推算不出私鑰的,公鑰可以通過私鑰推出 公鑰:公開給所有人;public key 私鑰:自己留存,必須保證其私密性;secret key 特點:用公鑰加密數據,只能使用與之配對的私鑰解密;反之亦然 功能: 數字簽名:主要在於讓接收方確認發送方身份 對稱密鑰交換:發送方用對方的公鑰加密一個對稱密鑰後發送給對方 數據加密:適合加密較小數據 缺點: 密鑰長,加密解密效率低下 演算法: RSA(加密,數字簽名) DES 加密1G數據 加密完2G 4m 8m DSA(數字簽名) DES 加密1G數據 加密完1G 1m 64小時 ELGamal eg:,1 確定數據安全的傳輸對方,確定數據傳輸的來源,用非對稱加密演算法實現 Pb {Sa(data}) 用sa簽名,再用pb加密-----用sb解密後,再用pa解密 eg: 2 確定數據安全的傳輸對方,確定數據傳輸的來源,用組合加密演算法實現 key(data+Sa(data))+pb(key) 解釋: 1 A用 key(data)對稱秘鑰加密+pb(key)再用B的公鑰加密key,B用私鑰解密key,得到數據 1 再用A的公鑰解密數據,在和解密Key的數據進行比對,確認數據的來源 實現數字簽名:(只要用私鑰加密就是數字簽名) • 發送者 生成公鑰/密鑰對:P和S 公開公鑰P,保密密鑰S 使用密鑰S來加密消息M 發送給接收者S(M) • 接收者 使用發送者的公鑰來解密M=P(S(M)) 結合簽名和加密 分離簽名 單向散列(hash運算)數據不一樣,hash值不同,實現數據的完整性檢驗 將任意數據縮小成固定大小的“指紋” • 任意長度輸入 • 固定長度輸出 • 若修改數據,指紋也會改變(“不會產生衝突”) • 無法從指紋中重新生成數據(“單向”) 功能: 數據完整性檢驗 常見算式 https://mirrors.aliyun.com md5: 128bits、sha1: 160bits、sha224sum,sha256、sha384、sha512     進行下麵的數據比較得到數據完整性的校驗   eg: md5sum /etc/fstab /etc/passwd > md5.log"將多個文件保存到一個文件中" md5sum --check md5sum -C md5.log :保存文件的hash值確認數據有沒有改變 md5.log 將現有的文件和已經存好的文件進行比對,出現ok數據就沒有被改過 常用工具 • md5sum | sha1sum [ --check ] file • openssl、gpg • rpm -V eg:實現對稱,非對稱,hash,進行加密:如下:1身份驗證,2數據安全 key(data+Sa{hash(data)})+Pb(key) 1 :A用對稱加密演算法,進行簽名並做hash運算,再用B的公鑰加密key 2: B用自己的公鑰解開key得到: (data+Sa{hash(data)}) 3:用A的公鑰解密得到hash(data) 再用原數據data做hash運算兩者進行比較,確定數據 的來源,如果兩者數據一樣。,那就確認數據包的來源是A   密鑰交換 密鑰交換:IKE( Internet Key Exchange ) 公鑰加密: DH (Deffie-Hellman):生成會話密鑰,由惠特菲爾德·迪菲(Bailey Whitfield Diffie)和馬丁·赫爾曼(Martin Edward Hellman)在1976年發表,參 看如下:https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange DH: A: g,p 協商生成公開的整數g, 大素數p B: g,p A:生成隱私數據 :a (a<p ),計算得出 g^a%p,發送給B B:生成隱私數據 :b,計算得出 g^b%p,發送給A A:計算得出 [(g^b%p)^x] %p = g^ab%p,生成為密鑰 B:計算得出 [(g^a%p)^y] %p = g^ab%p,生成為密鑰 應用程式:RPM 文件完整性的兩種實施方式 被安裝的文件 • MD5單向散列 • rpm --verify package_name (or -V) rpm -V檢驗數據包的每個文件,每次用rpm安裝的包,每個數據包的文件的hash值或者初始值存在資料庫中,過段時間,用-V檢查資料庫中得的每個文件的hash值,比對當前文件的hash值,如果不一樣,就會報提示: 發行的軟體包文件 • GPG公鑰簽名 • rpm --import(導入公鑰) /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat* • rpm --checksig pakage_file_name (or -K) rpm -k 檢驗數據包的每個文件 使用gpg實現對稱加密 對稱加密file文件 cp /etc/fstab /app/f1/ gpg -c file ls file.gpg 在另一臺主機上解密file gpg -o file -d file.gpg 實驗: 1:[root@centos7 ~]# cd /data 2:[root@centos7 /data]# cp /etc/fstab . 3:[root@centos7 /data]# gpg -c fstab 加密數據 輸入口令 4:[root@centos7 /data]# ll total 8 -rw-r--r--. 1 root root 541 Jul 9 21:23 fstab -rw-r--r--. 1 root root 311 Jul 9 21:25 fstab.gpg 5:[root@centos7 /data]# scp fstab.gpg 192.168.1.8: 發送加密的數據到另一主機   6:[root@centos6 ~]# file fstab.gpg 產看文件類型,格式 fstab.gpg: data 7:[root@centos6 ~]# gpg -d fstab.gpg 解密 8:[root@centos6 ~]# gpg -o fstab fstab.gpg (-0相當於重定向,生成文件)   使用gpg工具實現公鑰加密 在hostB主機上用公鑰加密,在hostA主機上解密 在hostA主機上生成公鑰/私鑰對 gpg --gen-key 在hostA主機上查看公鑰 cd .gnupg/ 查看生成的公鑰 gpg --list-keys 在hostA主機上導出公鑰到wang.pubkey gpg -a --export -o wang.pubkey 從hostA主機上複製公鑰文件到需加密的B主機上 scp wang.pubkey hostB: 如:scp wang.pubkey 172.18.56.56:/app/f1 在需加密數據的hostB主機上生成公鑰/私鑰對 gpg --list-keys gpg --gen-key 在hostB主機上導入公鑰 gpg --import wang.pubkey gpg --list-keys 用從hostA主機導入的公鑰,加密hostB主機的文件file,生成file.gpg gpg -e -r wangxiaochun file -e表示加密 -r:用誰的公鑰加密 file file.gpg 使用gpg工具實現公鑰加密 複製加密文件到hostA主機 scp fstab.gpg hostA: 在hostA主機解密文件 gpg -d file.gpg gpg -o file(解密的新的文件) -d file.gpg 刪除公鑰和私鑰 gpg --delete-keys wangxiaochun 刪除公鑰 gpg --delete-secret-keys wangxiaochun 刪除私鑰 實驗1 :[root@centos6 ~]# gpg --gen-key 在centos6上生成秘鑰對 Please select what kind of key you want: (那種演算法加密,預設RSA) What keysize do you want? (2048) 1024 (用多少位加密,預設1024) Key is valid for? (0) (有限期,預設十天) Real name: wangjin (起一個用戶的名字) Email address: (郵箱) Comment: (描述) Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o(0確定) 2:輸入秘鑰:(擔心私鑰被竊取,地私鑰用對稱秘鑰加密)空口令 3:[root@centos6 ~]# cd ~/.gnupg 4:[root@centos6 ~/.gnupg]# gpg --list -keys (查看生成的公鑰) 5: [root@centos6 ~/.gnupg]# gpg -a --export -o wang.pubkey (-a用ascii碼的文本方式導出 -o指定文件名 wang.pubkey 是自己起的文件名) 6:[root@centos6 ~/.gnupg]#scp wang.pubkey 192.168.56.56: (傳到centos7) 7:時間同步 centos6 ntpdate 172.18.0.1 vim /etc/ntp.conf server 172.18.0.1 iburst chkconfig ntpd on service ntpd start centos7 vim /etc/chrony.conf systemctl start chronyd systemctl is-enabled chronyd systemctl enable chronyd 8:[root@centos7 /data]#cp /root/wang.pubkey . 9:[root@centos7 /data]# gpg -e -r wangjin fstab -e表示加密 -r:用誰的公鑰加密 10:[root@centos7 /data]#scp fstab.gpg 192.168.1.8: 11:[root@centos6 ~]#gpg -o -d fstab.gpg 解密生成文件   CA和證書 :系統中內置根證書,免費申請證書的網站https://freessl.org   Base64:A-Z a-z 0-9 + / 共64位   PKI(公共的秘鑰體系 公鑰,私鑰,證書 實現): Public Key Infrastructure 簽證機構:CA(Certificate Authority) 證書頒發機構,證明通訊雙方是合法連接的 註冊機構:RA 證書吊銷列表:CRL 證書存取庫: X.509:定義了證書的結構以及認證協議標準 版本號 序列號 簽名演算法 頒發者 有效期限 主體名稱 主體公鑰 CRL分發點 擴展信息 發行者簽名   證書獲取 證書類型: 證書授權機構的證書 (CA) 伺服器 (淘寶或天貓等,給電腦用) 用戶證書 (用戶用) 獲取證書兩種方法: • 使用證書授權機構 生成簽名請求(csr) 將csr發送給CA 從CA處接收簽名 • 自簽名的證書 (根CA) 自已簽發自己的公鑰 安全協議 https 底層是依賴LLS協議 1 SSL(SSL協議: 安全套階層): Secure Socket Layer TLS: Transport Layer Security 1995:SSL 2.0 Netscape 1996: SSL 3.0 1999: TLS 1.0 2006: TLS 1.1 IETF(Internet工程任務組) RFC 4346 2008:TLS 1.2 當前使用 2015: TLS 1.3 功能:機密性,認證,完整性,重放保護 2 兩階段協議,分為握手階段和應用階段 1握手階段(協商階段):客戶端和伺服器端認證對方身份(依賴於PKI體系,利用數字證書 進行身份認證),並協商通信中使用的安全參數、密碼套件以及主密鑰。後續通信使用的所有密鑰都是通過MasterSecret生成。 2 應用階段:在握手階段完成後進入,在應用階段通信雙方使用握手階段協商好的密鑰進行安全通信   SSL/TLS Handshake協議:包括協商安全參數和密碼套件、伺服器身份認證(客戶端身份認證可選)、密鑰交換 ChangeCipherSpec 協議:一條消息表明握手協議已經完成 Alert 協議:對握手協議中一些異常的錯誤提醒,分為fatal和warning兩個級別,fatal類型錯誤會直接中斷SSL鏈接,而warning級別的錯誤SSL鏈接仍可繼續,只是會給出錯誤警告 Record 協議:包括對消息的分段、壓縮、消息認證和完整性保護、加密等 HTTPS 協議:就是“HTTP 協議”和“SSL/TLS 協議”的組合。HTTP overSSL”或“HTTP over TLS”,對http 協議的文本數據進行加密處理後,成為二進位形式傳輸     文字描述:client(客戶端) server(伺服器端) ca 1:https://server (客戶端發請求到伺服器端) 2:server-----client (伺服器端傳自己的證書到客戶端用CA的私鑰簽名伺服器的公鑰,) Sca(Pserver)+CA+server+expir (證書簽名,包括CA的證書,有效期之類的) 3:client (客戶端信任CA,所有提前裝系統的時候拿到CA的公鑰) Pca( Sca(Pserver))(用CA的公鑰進行解密)--------Pserver(得到伺服器的公鑰) 4:client 客戶端生成一個隨機數 random 12345 5:Pserver(12345)用獲取的伺服器的公鑰把12345進行加密-----------server 6:Server(Pserver(12345))(伺服器用自己的私鑰解密獲取12345) 7:client 12345(data)《-----》 伺服器端和客戶端共同獲得12345,以此傳輸數據   OpenSSL OpenSSL:開源項目 三個組件: openssl: 多用途的命令行工具,包openssl libcrypto: 加密演算法庫,包openssl-libs libssl:加密模塊應用庫,實現了ssl及tls,包nss openssl命令: 兩種運行模式:交互模式和批處理模式 openssl version:程式版本號 標準命令、消息摘要命令、加密命令 標準命令: enc, ca, req, ... 1:對稱加密: 工具:openssl enc, gpg 演算法:3des, aes, blowfish, twofish 2:enc命令: 幫助:man enc 加密:openssl enc -e -des3 -a -salt -in testfile-out testfile.cipher (-e加密 -des3=3DES 對稱秘鑰的加密演算法; -a=bese64編碼 -salt加鹽,鹽就是隨機數 解密:openssl enc -d -des3 -a -salt –in testfile.cipher-out testfile eg:[root@centos7 ~/data]# openssl enc -e -des3 -a -salt -in fstab -out fstab.des3 [root@centos7 ~/data]# openssl enc -d -des3 -a -salt -in fstab.des3 -out fstab.des2 openssl ? 3:單向加密: 工具:md5sum, sha1sum, sha224sum,sha256sum… openssl dgst 4:dgst命令: 幫助:man dgst openssl dgst -md5 [-hex預設] /PATH/SOMEFILE openssl dgst -md5 testfile md5sum /PATH/TO/SOMEFILE eg:[root@centos7 ~/data]# openssl dgst sha1 fstab sha1: No such file or directory MD5(fstab)= ea10eb7312d3130f651eef33b184e79f [root@centos7 ~/data]# openssl dgst -sha1 fstab SHA1(fstab)= 69f52e22db64aaec6131513ff9fcb41791d80e80 16進位數 [root@centos7 ~/data]# sha1sum fstab 69f52e22db64aaec6131513ff9fcb41791d80e80 fstab 16進位數   5:MAC: Message Authentication Code,單向加密的一種延伸應用,用於實現 網路通信中保證所傳輸數據的完整性機制 CBC-MAC HMAC:使用md5或sha1演算法   6:生成用戶密碼: passwd命令: 幫助:man sslpasswd openssl passwd -1 -sal
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前提題要:因為我最近負責的Winform項目,好多都用到了這個log4net的日誌功能,開發程式對數據一般都要求做到雁過留痕,所以日誌對於我們程式員是不可或缺。因此我把對log4net的使用做一個記錄總結,以便於以後的使用記憶。l 一、概述 log4net是.Net下一個非常優秀的開源日誌記錄組件。 ...
  • 系統:centos7 在開機啟動選擇時按e 進入編輯頁面。在linux16那行將ro 修改為 rw init=sysroot/bin/sh 然後按Ctrl + x 執行 然後輸入chroot /sysroot 改變ROOt 接著passwd root 修改ROOT密碼 最後touch /.autor ...
  • 1 /*參考/drivers/hid/usbhid/usbmouse.c*/ 2 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 10 static struct urb *mouse_urb; 11 stati... ...
  • 1.複製/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問許可權。 2.編輯/etc/group文件,添加組hadoop。 3.手動編輯/etc/passwd文件新增一行,添加用戶hadoop,其基本組ID為hadoop組的id號; ...
  • ls(list)查看目錄列表和屬性信息‘ 1. -l 查看文件詳細的信息 2. -a 顯示隱藏的文件信息 3. -A 與-a作用相同但不顯示.和.. 4.-h 顯示文件的大小通常與-l結合使用 5. -d 只顯示目錄信息 6.-R 顯示遞歸目錄信息’ ...
  • Linux 安裝Zookeeper<準備>(使用Mac遠程訪問) ...
  • 第16章 附件A 電阻屏觸摸校準 二代示波器的觸摸校準比較簡單,隨時隨地都可以做觸摸校準,按下K1按鍵即可校準。有時候我們做觸摸校準界面,需要在特定的界面才可以進入觸摸校準狀態,非常繁瑣,這裡採用的方法就非常省事了,也推薦大家在項目中使用。 不管當前示波器打開的是哪個界面,都可以按下K1按鍵做觸摸校 ...
  • 以下是列印滑鼠左右鍵及其他輸入的源代碼,詳細說明見https://www.cnblogs.com/zhu-g5may/p/9309381.html ...
一周排行
    -Advertisement-
    Play Games
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...