Windows下OpenSSL創建CA證書以及客戶端和服務器端證書

打開命令行工具,轉到安裝目錄bin文件夾,
$ mkdir -p ./demoCA/{private,newcerts}
$ touch ./demoCA/index.txt
$ echo 01 > ./demoCA/serial
產生的目錄結構如下:
`-- demoCA/
??? |-- index.txt
??? |-- newcerts/
??? |-- private/
??? `-- serial
?然后執行下面的命令。
創建根證書?
openssl rand -out private/.rand 1000
openssl rgenrsa -aes256 -out private/sample-key.pem 2048
openssl rreq -new -key private/sample-key.pem -out private/sample.csr -subj "/C=CN/ST=JiangSu/L=NanJing/O=NanJing Sample Technology Group Co.,LTD./OU=Sample"
openssl x509 -req -days 825 -sha1 -extensions v3_ca -signkey private/sample-key.pem -in private/sample.csr -out certs/sample.cer
openssl pkcs12 -export -clcerts -in certs/sample.cer -inkey private/sample-key.pem -out certs/sample.p12
----------------------------------------------------------------------------*/
創建服務端證書
openssl genrsa -aes256 -out private/server.key.pem 2048
openssl req -new -key private/server.key.pem -out private/server.csr -subj "/C=CN/ST=JiangSu/L=NanJing/O=NanJing Sample Technology Group Co.,LTD./OU=Sample/CN=127.0.0.1"
openssl x509 -req -days 3650 -sha1 -extensions v3_req -CA certs/sample.cer -CAkey private/sample-key.pem -CAserial sample.srl -CAcreateserial -in private/server.csr -out certs/server.cer
openssl pkcs12 -export -clcerts -inkey private/server.key.pem -in certs/server.cer -out certs/server.p12?
----------------------------------------------------------------------------*/
創建客戶端證書
openssl genrsa -aes256 -out private/client.key.pem 2048?
openssl req -new -key private/client.key.pem -out private/client.csr -subj "/C=CN/ST=JiangSu/L=NanJing/O=NanJing Sample Technology Group Co.,LTD./OU=Sample/CN=127.0.0.1"
openssl ca -days 3650 -in private/client.csr -out certs/client.cer -cert certs/sample.cer -keyfile private/sample-key.pem /*win7這句會報錯,win10下沒問題,郁悶,cd到bin文件夾下,執行下面語句才通過。*/
openssl ca -days 3650 -in democa/private/client.csr -out democa/certs/client.cer -cert democa/certs/sample.cer -keyfile democa/private/sample-key.pem -config ../openssl.cnf
openssl pkcs12 -export -inkey private/client.key.pem -in certs/client.cer -out certs/client.p12


參考文件:

由于實驗需要,需要手動制作CA證書以及客戶端和服務器端證書,總結如下:

最近兩天,查閱了一些關于創建證書的資料,發現網上很多介紹并不是很完整,不具有完全的可操作性。
創建證書,我目前知道的大概這么幾種:
1.keytool
? ?不能創建CA證書
2.Sybase ASA自帶的createcert.exe
? ?好像不能創建PKCS12型證書
3.OpenSSL
? ?功能最強大。
所以,這里干脆只介紹OpenSSL了。

安裝完OpenSSL-Win32到d:\tools之后,修改配置文件d:\tools\OpenSSL-Win32\bin\openssl.cfg
找到:
[ CA_default ]
dir ?? ?= $ENV::OPENSSL_HOME/CA # Where everything is kept
這里原來值是./demoCA
還是用絕對路徑比較好。就放到d:\tools\OpenSSL-Win32\CA目錄下。
緊接著,做一些準備工作,創建一些子目錄,準備創建證書,
完全的批處理命令如下:

[plain]?
  1. @echo?off??
  2. @rem?set?OPENSSL_HOME=d:\tools\OpenSSL-Win32??
  3. set?PATH=%OPENSSL_HOME%\bin;%PATH%??
  4. mkdir?%OPENSSL_HOME%\CA??
  5. cd?/d?%OPENSSL_HOME%\CA??
  6. echo?"create?subdir?certs"??
  7. mkdir?certs??
  8. mkdir?newcerts??
  9. mkdir?private??
  10. mkdir?crl??
  11. echo?"create?file:?index?and?serial"??
  12. echo?0>index.txt??
  13. echo?01>serial??
  14. echo?"create?rand?file"??
  15. openssl?rand?-out?private/.rand?1000??
  16. @rem?echo?%random%?>>?private/.rand??
  17. @echo?off??
  18. set?PATH=d:\tools\Openssl-Win32\bin;%PATH%??
  19. echo?create?private?key?for?rootca??
  20. @rem?the?password,?set?it?as?123456??
  21. openssl?genrsa?-aes256?-out?private/ca.key.pem?2048??
  22. echo?generate?root?ca?request??
  23. openssl?req?-new?-key?private/ca.key.pem?-out?private/ca.csr?-subj?"/C=CN/ST=BJ/L=BJ/O=zlex/OU=zlex/CN=*.sql9.com"??
  24. echo?create?root?ca?cert??
  25. openssl?x509?-req?-days?10000?-sha1?-extensions?v3_ca?-signkey?private/ca.key.pem?-in?private/ca.csr?-out?certs/ca.cer??
  26. echo?convert?the?cert?from?cer?into?PKCS12??
  27. openssl?pkcs12?-export?-clcerts?-in?certs/ca.cer?-inkey?private/ca.key.pem?-out?certs/ca.p12??
  28. echo?use?keytool?can?query?the?pkcs12?cert?status??
  29. keytool?-list?-keystore?certs/ca.p12?-storetype?pkcs12?-v?-storepass?123456??
  30. echo?create?server?ca??
  31. openssl?genrsa?-aes256?-out?private/server.key.pem?2048??
  32. openssl?req?-new?-key?private/server.key.pem?-out?private/server.csr?-subj?"/C=CN/ST=BJ/L=BJ/O=zlex/OU=zlex/CN=www.sql9.com"??
  33. openssl?x509?-req?-days?3650?-sha1?-extensions?v3_req?-CA?certs/ca.cer?-CAkey?private/ca.key.pem?-CAserial?ca.srl?-CAcreateserial?-in?private/server.csr?-out?certs/server.cer??
  34. openssl?pkcs12?-export?-clcerts?-inkey?private/server.key.pem?-in?certs/server.cer?-out?certs/server.p12??
  35. echo?create?client?ca??
  36. openssl?genrsa?-aes256?-out?private/client.key.pem?2048??
  37. openssl?req?-new?-key?private/client.key.pem?-out?private/client.csr?-subj?"/C=CN/ST=BJ/L=BJ/O=zlex/OU=zlex/CN=sql9"??
  38. openssl?ca?-days?3650?-in?private/client.csr?-out?certs/client.cer?-cert?certs/ca.cer?-keyfile?private/ca.key.pem??
  39. openssl?pkcs12?-export?-clcerts?-inkey?private/client.key.pem?-in?certs/client.cer?-out?certs/client.p12??
  40. cp?-r?certs?certs.new ?
最終certs.new目錄將包含我們想要的所有證書。
原文:http://blog.csdn.net/iihero/article/details/17626845?

這一針在農信銀2代項目中有幸能碰到加密方面的東西,所以就好好學習了一下。不足之處還請前輩們見諒。


OpenSSL功能遠勝于KeyTool,可用于根證書,服務器證書和客戶證書的管理
這里使用的是Win32OpenSSL_Light-1_0_1e.exe
http://www.slproweb.com/products/Win32OpenSSL.html
1,構建根證書
構建根證書前,需要構建隨機數文件(.rand),完整命令如
openssl rand -out private/.rand 1000
rand 隨機數命令。這里將隨機數文件輸出到private目錄下。
-out 輸出文件路徑,
這里的參數1000,指定來產生偽隨機字節數
2,構建根證書私鑰
openssl genrsa -aes256 -out private/ca.key.pem 2048
3,生成根證書簽發申請
完成密鑰構建操作后,我們需要生成根證書簽發申請文件(ca.csr),完整命令如代碼
openssl req -new -key private/ca.key.pem -out private/ca.csr -subj "/C=CN/ST=BJ/L=BJ/O=lesaas/OU=lesaas/CN=*.lesaas.cn"
req 產生證書簽發申請命令
-new 表示新請求
-key 密鑰,這里為private/ca.key.pem文件
-out 輸出路徑,這里為private/ca.csr文件
-subj 指定用戶信息。這里使用泛域名"*.lesaas.cn"
得到根證書簽發申請文件后,我們可以將其發生給CA機構簽發,當然我們也可以自行簽發根證書。
4,簽發根證書(自行簽發根證書)
openssl x509 -req -days 10000 -sha1 -extensions v3_ca -signkey private/ca.key.pem -in private/ca.csr -out certs/ca.cer
x509 簽發X.509格式證書命令。
-req 表示證書輸入請求。
-days 表示有效天數,這里為10000天。
-shal 表示證書摘要算法,這里為SHA1算法。
-extensions 表示按OpenSSL配置文件v3_ca項添加擴展。
-signkey 表示自簽名密鑰,這里為private/ca.key.pem。
-in 表示輸入文件,這里為private/ca.csr。
-out 表示輸出文件,這里為certs/ca.cer。
====================================================================================================
OpenSSL產生的數據證書不能再JAVA語言環境中直接使用,需要將其轉化為PKCS#12編碼格式。
完整命令如代碼
5,根證書轉化
openssl pkcs12 -export -cacerts -inkey private/ca.key.pem -in certs/ca.cer -out certs/ca.p12
pkcs12 PKCS#12編碼格式證書命令。
-export 表示導出證書。
-cacerts 表示僅導出CA證書。
-inkey 表示輸入密鑰,這里為private/ca.key.pem
-in 表示輸入文件,這里為certs/ca.cer
-out 表示輸出文件,這里為certs/ca.p12
個人信息交換文件(PKCS#12) 可以作為密鑰庫或信任庫使用,我們可以通過KeyTool查看密鑰庫的詳細信息。
6,查看密鑰庫信息
keytool -list -keystore d:/CA/certs/ca.p12 -storetype pkcs12 -v -storepass 123456
注意,這里參數-storetype值為“pkcs12”。
我們已經構建了根證書(ca.cer),我們可以使用根證書簽發服務器證書和客戶證書。
7,構建服務器證書
服務器證書的構建與根證書構建相似,首先需要構建私鑰。
(1)構建服務器私鑰
openssl genrsa -aes256 -out private/server.key.pem 2048
genrsa 產生RSA密鑰命令。
-aes256 使用AES算法(256位密鑰)對產生的私鑰加密。可選算法包括DES,DESede,IDEA和AES。
-out 輸出路徑,這里指private/server.key.pem。
這里的參數2048,指RSA密鑰長度位數,默認長度為512位。
(2)生成服務器證書簽發申請
openssl req -new -key private/server.key.pem -out private/server.csr -subj "/C=CN/ST=BJ/L=BJ/O=lesaas/OU=lesaas/CN=www.lesaas.cn"
req 產生證書簽發申請命令
-new 表示新請求。
-key 密鑰,這里為private/ca.key.pem文件
-out 輸出路徑,這里為private/ca.csr文件
-subj 指定用戶信息,這里使用域名“www.lesaas.cn”作為用戶名。
我們已經獲得了根證書,可以使用根證書簽發服務器證書。
(3)簽發服務器證書
openssl x509 -req -days 3650 -sha1 -extensions v3_req -CA certs/ca.cer -CAkey private/ca.key.pem -CAserial ca.srl -CAcreateserial -in private/server.csr -out
certs/server.cer
x509 簽發X.509格式證書命令。
-req 表示證書輸入請求。
-days 表示有效天數,這里為3650天。
-sha1 表示證書摘要算法,這里為SHA1算法。
-extensions 表示按OpenSSL配置文件v3_req項添加擴展。
-CA 表示CA證書,這里為certs/ca.cer
-CAkey 表示CA證書密鑰,這里為private/ca.key.pem
-CAserial 表示CA證書序列號文件,這里為ca.srl
-CAcreateserial表示創建CA證書序列號
-in 表示輸入文件,這里為private/server.csr
-out 表示輸出文件,這里為certs/server.cer
這里我們同樣需要將OpenSSL產生的數子證書轉化為PKCS#12編碼格式。完整命令如下
(4)服務器證書轉換
openssl pkcs12 -export -clcerts -inkey private/server.key.pem -in certs/server.cer -out certs/server.p12
pkcs12 PKCS#12編碼格式證書命令。
-export 表示導出證書。
-clcerts 表示僅導出客戶證書。
-inkey 表示輸入文件,這里為private/server.key.pem
-in 表示輸入文件,這里為certs/ca.cer
-out 表示輸出文件,這里為certs/server.p12
我們已經構建了服務器證書(server.cer),并可使用該證書構建基于單向認證網絡
(5)構建客戶證書
客戶證書的構建與服務器證書構建基本一致,首先需要構建私鑰。
產生客戶私鑰
openssl genrsa -aes256 -out private/client.key.pem 2048
genrsa 產生RSA密鑰命令
-aes256 使用AES算法(256為密鑰)對產生的私鑰加密。可選算法包括DES,DESede,IDEA和AES。
-out 輸出路徑,這里指private/client.key.pem
這里的參數2048,指RSA密鑰長度位數,默認長度為512位
完成客戶證書密鑰構建后,我們需要產生客戶證書簽發申請
(6)生成客戶證書簽發申請
openssl req -new -key private/client.key.pem -out private/client.csr -subj "/C=CN/ST=BJ/L=BJ/O=lesaas/OU=lesaas/CN=lesaas"
req 產生證書簽發申請命令
-new 表示新的請求。
-key 密鑰,這里為private/client.csr文件
-subj 指定用戶信息,這里使用“lesaas”作為用戶名
我們已經獲得了根證書,可以使用根證書簽發客戶證書(client.cer)
(7)簽發客戶證書
openssl ca -days 3650 -in private/client.csr -out certs/client.cer -cert certs/ca.cer -keyfile private/ca.key.pem
ca 簽發證書命令
-days 表示證書有效期,這里為3650天。
-in 表示輸入文件,這里為private/client.csr
-out 表示輸出文件,這里為certs/server.cer
-cert 表示證書文件,這里為certs/ca.cer
-keyfile 表示根證書密鑰文件,這里為private/ca.key.pem
最后,我們需要將獲得客戶證書轉化Java語言可以識別的PKCS#12編碼格式。
(8)客戶證書轉換
openssl pkcs12 -export -inkey private/client.key.pem -in certs/client.cer -out certs/client.p12
pkcs12 PKCS#12編碼格式證書命令、
-export 表示導出證書
-clcerts 表示僅導出客戶證書。
-inkey 表示輸入密鑰,這里為private/client.key.pem
-in 表示輸入文件,這里為certs/client.cer
-out 表示輸出文件,這里為certs/client.p12
至此,我們完成了雙向認證的所需的全部證書。
數字證書是公鑰的載體,而密鑰庫可以包含公鑰、私鑰信息。
JKS和PKCS#12都是比較常用的兩種密鑰庫格式/標準。對于前者,搞Java開發,尤其是接觸過HTTPS平臺的朋友,并不陌生。JKS文件(通常為*.jks或*.keystore,擴展名無關)可以通過Java原生工具——KeyTool生成;而后者PKCS#12文件(通常為*.p12或*.pfx,意味個人信息交換文件),則是通過更為常用的OpenSSL工具產生。
當然,這兩者之間是可以通過導入/導出的方式進行轉換的!當然,這種轉換需要通過KeyTool工具進行!
回歸正題,計費同事遇到一個難題:合作方交給他們一個*.pfx文件,需要他們從中提取密鑰,然后進行加密交互。其實,通過Java直接操作密鑰庫文件(或個人信息交換文件)對于一般Java開發人員來說,這都是個冷門。不接觸數字安全,根本不知所云。況且,Java原生的密鑰庫文件格式為JKS,如何操作*.pfx文件?密鑰庫操作需要獲知密鑰庫別名,*.pfx別名是什么?!接下來就解決這些問題!
(PKCS#12是base64編碼的)
方案:
通過keytool密鑰庫導入命令importkeystore,將密鑰庫格式由PKCS#12轉換為JKS。
檢索新生成的密鑰庫文件,提取別名信息。
由密鑰庫文件導出數字證書(這里將用到別名)。
通過代碼提取公鑰/私鑰、簽名算法等
先看格式轉換:
Cmd代碼 收藏代碼
echo 格式轉換
keytool -importkeystore -v -srckeystore zlex.pfx -srcstoretype pkcs12 -srcstorepass 123456 -destkeystore zlex.keystore -deststoretype jks -deststorepass 123456
-importkeystore導入密鑰庫,通過格式設定,我們可以將PKCS#12文件轉換為JKS格式。
-v顯示詳情
-srckeystore源密鑰庫,這里是zlex.pfx
-srcstoretype源密鑰庫格式,這里為pkcs12
-srcstorepass源密鑰庫密碼,這里為123456
-destkeystore目標密鑰庫,這里為zlex.keystore
-deststoretype目標密鑰庫格式,這里為jks,默認值也如此
-deststorepass目標密鑰庫密碼,這里為123456
通過這個操作,我們能夠獲得所需的密鑰庫文件zlex.keystore。
這時,我們已經獲得了密鑰庫文件,只要確定對應的別名信息,就可以提取公鑰/私鑰,以及數字證書,進行加密交互了!
Cmd代碼 收藏代碼
echo 查看證書
keytool -list -keystore zlex.keystore -storepass 123456 -v
-list列舉密鑰庫
-keystore密鑰庫,這里是zlex.keystore
-storepass密鑰庫密碼,這里是123456
-v顯示詳情
現在,我們把證書導出!
Cmd代碼 收藏代碼
echo 導出證書
keytool -exportcert -alias 1 -keystore zlex.keystore -file zlex.crt -storepass 123456
-exportcert導出證書
-alias別名,這里是1
-keystore密鑰庫,這里是zlex.keystore
-file證書文件,這里是zlex.crt
-storepass密鑰庫密碼,這里是123456

現在證書也導出了,我們可以提取公鑰/私鑰,進行加密/解密,簽名/驗證操作了!當然,即便沒有證書,我們也能夠通過密鑰庫(JKS格式)文件獲得證書,以及公鑰/私鑰、簽名算法等。

原文:http://blog.csdn.net/boss666666/article/details/10284649?

IIS配置SSL時遇到的錯誤:
1)證書鏈中的一個或多個中間證書丟失?

How to configure intermediate certificates

  1. Open the Certificates Microsoft Management Console (MMC) snap-in. To do this, follow these steps:
    1. At a command prompt, type?Mmc.exe.
    2. If you are not running the program as the built-in Administrator, you will be prompted for permission to run the program. In the?Windows Security?dialog box, clickAllow.
    3. On the?File?menu, click?Add/Remove Snap-in.
    4. In the?Add or Remove Snap-ins?dialog box, click the?Certificates?snap-in in the?Available snap-ins?list, click?Add, and then click?OK.
    5. In the?Certificates snap-in?dialog box, click?Computer account, and then click?Next.
    6. In the?Select computer?dialog box, click?Finish.
    7. In the?Add or Remove Snap-ins?dialog box, click?OK.
  2. To add an intermediate certificate, follow these steps:
    1. In the Certificates MMC snap-in, expand?Certificates, right-click?Intermediate Certification Authorities, point to?All Tasks, and then click?Import.
    2. In the?Certificate Import?Wizard, click?Next.
    3. In the?File to Import?page, type the file name of the certificate that you want to import in the?File name?box, and then click?Next.
    4. Click?Next, and then complete the Certificate Import Wizard.
詳見微軟support原文https://support.microsoft.com/zh-cn/kb/954755?

轉載于:https://www.cnblogs.com/Sefrid/p/5358338.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272002.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272002.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272002.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringCloud和SprigBoot之間的依賴關系怎么看

SpringCloud官網地址 https://spring.io/projects/spring-cloud 不推薦使用了,推薦用最新的是Hoxton版本 打開下面提供的網頁 https://start.spring.io/actuator/info 使用解析工具查看 https://tool.lu/json/ 查看json串返回的結果 { "git": { …

微軟最強命令行工具 Windows Terminal,強勢霸榜GitHub

命令提示符也是算 Windows 系統的一大特色了,相信很多人剛看到這白底黑字的界面都有點哭笑不得吧,好在后來微軟陸續推出了Powershell、cmd之類的命令行工具,來提供一些更加高級的功能如今微軟更進一步,放出一大招,正式…

easyui edatagrid 觸發編輯行回掉onEdit

dg.edatagrid(selectRow, i).edatagrid(beginEdit, i);var opts dg.edatagrid("options");opts.onEdit.call(this, i, rows[i]); 轉載于:https://www.cnblogs.com/zt528/p/5359388.html

修改Windows遠程桌面3389端口

3389端口是Windows 2000(2003) Server 遠程桌面的服務端口,可以通過這個端口,用“遠程桌面”等連接工具來連接到遠程的服務器,如果連接上了,輸入系統管理員的用戶名和密碼后,將變得可以像操作本機一樣操作遠程的電腦,因…

mysql 5.7.17源碼包_centos7 mysql5.7.17源碼安裝

centos7 mysql5.7.17源碼安裝**安裝前準備操作系統環境:Centos 7.21、解決依賴包并下載源碼包至/home/soft/目錄下[rootnode03 ~]# yum -y install gcc gcc-c ncurses ncurses-devel cmake bison[rootnode03 ~]# cd /home/soft/[rootnode03 soft]# wget https://sourceforge.ne…

SpringCloud版本名字

SpringCloud版本號字母由來 https://github.com/spring-projects/spring-cloud/wiki SpringCloud最新版Hoxton SpringCloud官網 https://spring.io/projects/spring-cloud#learn

Lua學習教程之 可變參數數據打包與解包

利用table的pack與unpack進行數據打包與解包。測試代碼例如以下: print("Test table.pack()----------------");function printTable ( t )if type(t) "table" thenfor k,v in pairs(t) doprintTable(v);endelseprint(t);end endlocal packData function(…

程序員20句勵志名言

1、作為一個真正的程序員,首先應該尊重編程,熱愛你所寫下的程序,他是你的伙伴,而不是工具。2、程序員可以讓步,卻不可以退縮,可以羞澀,卻不可以軟弱,總之,程序員必須是勇…

批量保存到mysql_關于保存批量數據進入mysql

提出的要求:生成13位純數字的卡號與8位純數字的卡密,要求卡號與卡密都必須全表唯一,然后保存到mysql。思路:1.首先mysql中將這兩個字段設置唯一索引,保證這兩個字段的值在該表中是唯一存在的2.卡號是有序增長的&#x…

SpringCloud主要組件

SpringCloud主要組件 SpringCloud組件停更說明

求數組中的最小子數組,時間復雜度o(n),java

石家莊鐵道大學 信1405-1 班 唐炳輝 題目:給定一個整數數組,找到一個具有最小和的子數組。返回其最小和。 設計思路:兩個變量 ,一個記錄當前并入的數組的值,另外一個記錄所算過得最大的數組的值,當并入的值為小于…

mysql 輸出解釋怎么看_了解MySQL中EXPLAIN解釋命令

1 EXPLAIN概念EXPLAIN會向我們提供一些MySQL是執行sql的信息:EXPLAIN可以解釋說明 SELECT, DELETE, INSERT, REPLACE, and UPDATE 等語句.當EXPLAIN與可解釋的語句一起使用時,mysql會顯示一些來自于優化器的關于sql執行計劃的信息。即mysql解釋它是如何處…

MYSQL數據庫默認latin1字符集轉換為GBK或UTF8

可以采用下面的方法latin1字符集轉換為gbk字符集或utf8字符集。具體的轉換步驟如下:一、latin1轉gbk1、導出數據庫mysqldump --default-character-setlatin1 -h 數據庫連接ip -u root -P 3306 -p數據庫密碼 db_name table_name > /usr/home/test/table_name.sql2…

【Post工具】PostMan 他媳婦 PostWoman

一個免費,快速,美觀的API請求構建器,可以替代 Postman。 測試網址: https://postwoman.io/ 下載地址 https://github.com/liyasthomas/postwoman 主要特性: 支持自定義換膚支持權限支持參數、請求體支持 PWA支持歷…

MYSQL統計和識別重復值

1、查詢和計算表person_tbl中(last_name,first_name)組合有重復的記錄的數量。mysql> SELECT COUNT (*) AS repetitions, last_name, first_nameFROM person_tbl GROUP BY last_name, first_nameHAVING repetitions > 1;2、從結果集中…

main spring啟動_SpringBoot學習(一):為什么main方法啟動類需要放在項目根目錄...

一、概述使用SpringBoot的應用是需要將應用代碼編譯打包成jar包,然后基于main方法的方式來獨立啟動這個應用,使得該應用作為一個獨立進程運行。這是跟傳統的將項目打包成war包,然后部署到tomcat服務器去運行的一個區別。而在應用當中&#xf…

學習筆記~~~~LinkedHashMap

LinkedHashMap實現了Map接口,繼承了HashMap 應用場景 HashMap是無序的,當我們希望有順序地去存儲key-value時,就需要使用LinkedHashMap了。 我們是按照7、2、3、4 的順序插入的,但是輸出結果并不是按照順序的。 同樣的數據&…

[轉]Mysql Join語法解析與性能分析

轉自:http://www.cnblogs.com/BeginMan/p/3754322.html 一.Join語法概述 join 用于多表中字段之間的聯系,語法如下: ... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1:左表;table2:右表。 JOIN 按照…

css radial-gradient 徑向漸變基本語法與使用

在之前的文章《深入理解Css linear-gradient線性漸變》我們了解了CSS中的線性漸變,本文將介紹CSS中的另一種漸變———徑向漸變(Radial Gradient): CSS中的徑向漸變(Radial Gradient)允許你創建從一個顏色…

華為鴻蒙系統技術細節盤點

面對安卓的限制,華為似乎十分淡定從容,絲毫都不慌,華為的底氣,很大原因來自華為自研的操作系統——鴻蒙系統!鴻蒙系統剛提出來的時候就在各界媒體中炸開了花,花粉們對其關注程度也是只增不減,那…