本文主要寫給目前在我技術交流羣裏的同窗。html
爲何要正確提問?java
對提問者而言,好處在於:web
對被提問者而言,好處在於:sql
怎麼樣纔算是一個正確的提問方式,個人建議是,設身處地,仔細想一想,假設本身是那個被提問的人,本身是那個要解決問題的人,須要提問者,提供什麼樣的東西,才能更好地解決問題?數據庫
這個你們其實工做中,學習中都會碰到,好比,你的同事要請教你一個問題,你問對方什麼問題,對方支支吾吾說不清楚,你聽不明白,這問題還能解決嗎?後端
再想一想,測試的同窗提bug時,是否是好多就是圖一貼就完事了,問題何時發生的,什麼場景發生的,哪一個用戶觸發的,這些信息徹底沒有,你說,你怎麼解決?api
咱們這邊的測試,每次就是貼圖,也不說把出現問題的那個單號,用戶id之類的複製出來,每次咱們開發同窗改bug,都要照着圖去敲單號?你想不想吐槽?微信
扯了這麼些,其實就是說,咱們要儘可能地,在職場,在生活中,去作一個靠譜的人,作一個同事喜歡的,願意和你合做的人,和你合做起來很愉快的人。網絡
之前,我問同事問題,也是qq裏直接貼圖,後來一個同事就和我說,貼文字啊,否則對方還要敲一遍。curl
恩,這就是同理心。
正確的提問,核心就是要有同理心。
下面說具體的,java工程的提問方式。
先加個重點,請去掉target目錄,那個很大,微信或者qq,傳都要傳半天,並且有時候是在手機收的文件,通常看問題確定是電腦上,沒有去掉target目錄的話,一個工程,幾十上百兆很正常,這時候,要把微信上收的文件,轉到電腦,就要花幾分鐘。
java後端,以maven工程居多,因此,通常來講,一個標準的maven工程,長這樣:
就是一個文件夾,而後裏面一個pom,一個src文件夾。具體能夠看下面的圖(來自於網絡:)
這樣的maven工程,不論是什麼ide,都是能夠直接import的,這樣的話,解答問題的人,拿到這個工程,能夠直接導入本身的ide中。
若是是多模塊聚合工程,通常長下面這樣:
不知道怎麼搭建聚合工程的話,能夠看我之前的一篇文章,比較早了,寫得通常,不過仍是能夠看看。你們也能夠自行搜索。
http://www.javashuo.com/article/p-ygorneke-ce.html
第二個要點,是工程涉及的sql腳本,一些問題可能不涉及數據庫,那就算了。有的是,沒有數據庫,根本啓動不了;或者,啓動後,也沒有數據,去進行問題的測試和復現,這時候,就必須提供sql腳本。
通常sql腳本格式以下:
建表sql
CREATE TABLE `user` ( `id` int(10) NOT NULL, `username` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
insert等初始化數據的語句
insert into `user`(`id`,`username`) values (222,'ssss');
建庫sql
CREATE DATABASE /*!32312 IF NOT EXISTS*/`test` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
通常,以上sql,均可以直接經過navicat等工具生成。你們可自行搜索。
通常來講,針對web工程,不少問題,都是經過api請求去觸發,好比平時咱們遇到的各類bug;少部分是定時任務等觸發。
若是是請求觸發,就須要提供:請求的接口,路徑,參數是什麼樣的,由於不一樣的參數,可能一個能復現問題,一個就不能。
能夠像下面這樣提供:
我上面只是舉個例子,你們不要用圖片,儘可能用文字,好比,以下的curl格式,就能完整展現請求的內容:
curl -i -X GET \ 'http://127.0.0.1:8080/gym_war_exploded/user/borrowEquipment.do?eqId=54383a62-0a45-46b6-b1b0-c1be58446a4f&userId=c5d759d9c8f8407992ded888eebaf19b'
這個是加分項,前面第一點我說了,如今主要用maven工程,你們知道,下載依賴仍是須要很多時間的。
不少時候,你給一個完整的工程過去,裏面幾十上百個依賴,對方下載都要下半小時。。。你說這怎麼搞?
因此,你們儘可能提供一份:能復現問題的最小工程。
簡單就是,pom.xml裏,不要大而全,儘可能按須要來,這也是我平時工做中很注意的一個點,包少了,打包都快得多,啓動也快得多,調試也快些(這時候可能須要加載或掃描的類、jar包就少了)。
todo,其餘待補充。
有的同窗以爲,我提個問題,也太麻煩了。固然,問題歷來都不簡單,尤爲是,信息還不夠的狀況下。若是真心但願問題獲得解決,那確定是要花點時間的。