java的compareTo()函数?
compareTo就是比较两个值,如果前者大于后者,返回1,等于返回0,小于返回-1。
下面给出了例子,由于比较的变量用的是int,int型可以直接比较,所有没有用到compareTo比较,如果声明的是Date、String、Integer或者其他的,可以直接使用compareTo比较,
public int compareTo(TestModel1 o) {return this.str1.compareTo(o.str1);}
compareTo方法内必须做非空判断(规范问题),当然int类型就不用了。
注意事项:
1、模型必须实现Comparable<T>接口
2、Collections.sort(list);会自动调用compareTo,如果没有这句,list是不会排序的,也不会调用compareTo方法。
3、如果是数组则用的是Arrays.sort(a)方法。
前后端同时开发怎么定义接口?
前后端同时开发怎么定义接口?
一般有两种方式,
1、为每个逻辑都定义单独接口(适用于对外接口,专口专用不出错)
2、定义一个通用接口,通过参数中的id区分业务逻辑函数(适用于公司内部项目,一口多用方便灵活)
我的做法是先画一个前端和后端交互的时序图,把前后端之间的通讯逻辑理清楚,然后根据具体每一步的执行顺序逻辑去定义接口,
如下图是用户登录系统的时序图,
图中,app和后台之间有两个箭头,由此我们可以知道,前端app和后端服务器之间两个接口:
1、发送请求
2、返回登录结果
登录系统是最长用的也是最基础的系统,虽然简单却也涵盖了前端和后端交互的基本原理,另外图中还标明了,客户端的页面验证逻辑,和服务端的数据库请求逻辑。
下图是一张支付接口的时序图
支付逻辑相对复杂一些,但有图的帮助,接口会变得很清晰。
前后端数据交互频繁,可以定义一个数据接口,然后通过数据中的id来区分要执行的函数。这样的好处是,接口一个就够,灵活性高。同一个项目适用这种方式。不适合做对外的接口。
在开发之前一定要先定义好接口规范,至于接口应该由前端来定还是后端来定,这个还得看公司的具体情况,但一定要让前后端都确认无误,特别是接口协商要点,以免出现前后端分离之后最容易出现的扯皮现象。
由前端和后端一起协定接口规范的内容,确定每一个接口的地址(URL), 输入参数和返回值,必要的时候详细注释每一个字段的含义和数据类型。
定义接口可以参照以下三方面:
1、资源接口:系统涉及到哪些资源,按照 RESTful 方式定义的细粒度接口。
2、操作接口:页面涉及到哪些操作,例如修改用户信息等等,也可以使用 RESTful 方式来定义。
3、页面接口:页面涉及到太多接口,如果是一个个地调用,会需要很多次请求,有可以影响到前
端的性能和用户体验, 因此可能需要将这些接口的数据合并到一起,作成一个聚合型接口提供
给前端来使用。
接口需要前后端一起确认的信息如下:
1、接口必须返回统一的数据结构。
2、接口查询不到数据时,即空数据的情况下返回给前端怎样的数据。建议返回非 null 的对应数据类型初始值,例如对象类型的返回空对象({}),数组类型的返回空数组([]),其他原始数据类型也使用对应的默认值。这样可以减少前端很多琐碎的非空判断,直接使用接口中的数据。
3、调用接口业务失败的常用错误码,例如未授权时调用需要授权的接口返回 "status": “fail”。
4、接口需要登录时如何处理,特别是同时涉及到 Web 端/微信端/App 端,需要前端针对运行环境判断如何跳转到登录页面。
5、返回数据中图片 URL 是完整的还是部分的。
a. 这就是完整的,前端直接使用这个 URL。
b./image/a/img.png 这就是部分的, 一般省略域名部分, 前端需要自己拼接后才能使用
'https://image.com' + '/image/a/img.png'。
6、返回数据中页面跳转的 URL 是给完整的还是部分的。
a.内部页面返回部分的,或者只给ID,由前端自己拼接,例如只给出商品ID,让前端自己拼接商品
详情页的 URL。
b.外部页面返回完整的,例如广告位要跳转去谷歌。
7、返回数据中日期的格式,是使用时间戳还是格式化好的文字。
a.对于需要前端再次处理的日期值(例如根据日期计算倒计时),可以使用时间戳。
b.对于纯展示用的日期值,推荐返回为格式化好的文字。
8、对于大数字(例如 Java 的 long 类型),返回给前端时需要设置为字符串类型,否则 JavaScript 会发生溢出, 造成得到的数值错误
9、分页参数和分页信息
a.如何限制只返回 N 条数据(limit 参数)
b.如何控制每页的数据条数(pageSize 参数)
c.如何加载某一页的数据(page 参数)
d.如何避免无限滚动加载可能出现的重复数据
e.分页信息包含什么(total、page、pageSize)
当然以上只是列举了部分项,实际操作中应该尽量全面的在接口协议中些清楚。因为一旦开发中有分歧的,都要以接口协议定义的为准。
这个得看你们公司的实际情况,一般是分前端主导还是后台主导。首先不管是前端主导还是后台主导,需要先定义好返回的通用对象格式,比如统一返回格式
{
code:200,
message:"ok",
data:""
}
后台主导:后台首先梳理业务,定义好业务需要返回的实体,然后开始写接口文档,最好写清楚请求方式,url地址,参数类型,参数名称等,然后告知前端。
前端主导:前端根据原型或者ui图,定义界面上需要展示的字段,然后将字段名定义好,写成json格式,告知后端,然后后端根据字段名,定义相关接口。
编写Java代码如何更加规范和简洁?
这个问题包含两点:
- 代码如何更加规范;
- 代码如何更整洁;
下面按照这两点展开说说我的理解。
代码规范
代码规范其实业界大厂或者别的语言已经有很多解决方案了,比如,pylint,clang-format,go-fmt这种,对于JAVA可以试试看Google的google-java-format,我目前是gradle流,喜欢maven的朋友不妨自己去官网上看一下用法。
引入的方法很简单:
直接在plugins里声明一下。
检查的话可以敲命令:gradle verifyGoogleJavaFormat
按照Google模板改写文件:gradle googleJavaFormat
当然最好在Makefile里写好,一劳永逸。
这个格式也支持IDEA和eclipse,以IDEA为例:
- 在插件的Marketplace里搜google-java-format,然后安装。
- IntellJ IDEA -> Other Settings -> google-java-format 勾选Enable
- 默认项目应用的话,在Files -> Other Settings -> Default Settings里启用
应用完成后Ctrl+Alt+L就能格式化代码了。不过这里有个坑,它不会格式化import代码段,这个可以去github上下载个格式导入IDEA解决。
这样几步下来基本就能保证团队内部的代码风格一致。
代码整洁
代码整洁比较考验基本功,最好的办法是去看看Effective Java,按Joshua Bloch大神的要求做。
这个话题三言两语说不清,加油吧。
第一步,简单规范制定;
第二步,代码案例,并生成文档;
第三步,规范+案例 团队集中学习;
第四步,团队自我完善规范——循环;
实践建议:网络上规范一大堆,有一个基本的JAVA规范,没二话大家都可以实现。业务代码功能模块化生成规范。
计算机零基础,应该如何自学软件测试?
很多人想学习软件测试,但因为自己是0基础,就很怕自己学不会,还没开始就放弃了,导致一直碌碌无为,丧失了很多机会,但其实,软件测试并没有你想象的那样高门槛。
软件测试需要掌握的技能
1、学习软件测试,首先应该要掌握基本的编程知识,前端的HTML,JavaScript等,后端的java,c/c++,应该各懂得其中一门及其以上。
2、另一个很重要的基础部分就是数据库的学习,比如SQL Server, Oracle等,至少应该掌握其中一种。
3、除了我们所熟悉的windows系统外,必须对Linux,Unix等系统熟悉,掌握其操作方式。
4、在有以上的基础知识后,要想成为专业的软件测试工程师,还需要学习相关的专业知识,懂得应用QTP,QC,LoadRunner等测试工具。
可以根据软考中高级软件评测师的内容要求去自学,可以的话去考取软考证书,含金量还是很高的,也可以在网络上找视频资源学习,做题很关键。
软件测试的门槛及意义
首先,软件测试,入门门槛低大中专学历即可,是不是计算机专业都可以。如果是其他有业务背景的专业更有优势,例如:会计、金融、办公自动化、酒店管理、网站设计等。对于有行业背景的人来说入门更快,因为对于测试工作来说,有时懂业务比懂技术还重要,你会了技术,去各行各业做测试都是要学习业务知识的,这是很正常的事。
其次初级技术要求低,目前大部分测试技术还属于手工测试,手工测试要求入门门槛很低。你只要会写用例,会提缺陷就可以了。测试人员需要简单了解业务知识,学习所开发系统的使用,也就是会使用系统就可以了。照着用例执行测试,发现缺陷直接提交缺陷就可以了。
再者,有很大的薪酬优势,刚开始工作时月薪最低4000多,但工作半年,对工作流程了解后,再去换工作,五六千没问题。如果做银行业务测试起薪六七千没问题,有一点银行业务知识的再去换工作八千以上没问题,现在银行测试人员缺口很大。尤其是在大的外包公司做好的项目,比如银行项目等待遇和同等工作经历的开发差不多。同时,就业好,国外开发与测试的比例是1:2。目前国内开发与测试的比例是6:1。所以测试行业人才缺口很大,就业前景很好。基本属于供不应求。
最后,工作比较轻松比起软件开发工程师来说,软件测试工程师的工作就相对轻松多了。
IT行业的高薪也意味着要有相应的努力,想要有所成就就要持之以恒的学习付出!快去努力学习吧,迈出第一步,以后就能收获很多!
还没有评论,来说两句吧...