本文主要写给目前在我技术交流群里的同窗。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,其余待补充。
有的同窗以为,我提个问题,也太麻烦了。固然,问题历来都不简单,尤为是,信息还不够的状况下。若是真心但愿问题获得解决,那确定是要花点时间的。