Lomkob引入项目中经常使用bean,entity等类,绝大部分数据类类中都需要get、set、toString、equals和hashCode方法,虽然eclipse和idea开发环境下都有自动生成的快捷方式,但自动生成这些代码后,如果bean中的属性一旦有修改、删除或增加时,需要重新生成或删除get/set等方法,给代码维护增加负担。而使用了lombok则不一样,使用了lombok的注解(@Setter,@Getter,@ToString,@@RequiredArgsConstructor,@EqualsAndHashCode或@Data)之后,就不需要编写或生成get/set等方法,很大程度上减少了代码量,而且减少了代码维护的负担。故强烈建议项目中使用lombok,去掉bean中get、set、toString、equals和hashCode等方法的代码。
<!--[if !supportLists]-->一、 <!--[endif]-->下载lombok
<!--[if !supportLists]-->二、 <!--[endif]-->将Lombok.jar 放在eclipse安装目录下(与eclipse.ini文件平级)
<!--[if !supportLists]-->三、 <!--[endif]-->运行lombok.jar
<!--[if !supportLists]-->a) <!--[endif]-->运行后会弹框如下框,直接点确定
<!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"/> <v:f eqn="sum @0 1 0"/> <v:f eqn="sum 0 0 @1"/> <v:f eqn="prod @2 1 2"/> <v:f eqn="prod @3 21600 pixelWidth"/> <v:f eqn="prod @3 21600 pixelHeight"/> <v:f eqn="sum @0 0 1"/> <v:f eqn="prod @6 1 2"/> <v:f eqn="prod @7 21600 pixelWidth"/> <v:f eqn="sum @8 21600 0"/> <v:f eqn="prod @7 21600 pixelHeight"/> <v:f eqn="sum @10 21600 0"/> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/> <o:lock v:ext="edit" aspectratio="t"/> </v:shapetype><v:shape id="图片_x0020_1" o:spid="_x0000_i1048" type="#_x0000_t75" style='width:415.5pt;height:240pt;visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
<!--[if !supportLists]-->b) <!--[endif]-->点specify location 按钮,选择eclipse的安装目录,选择到eclipse层即可
<!--[if gte vml 1]><v:shape id="图片_x0020_2" o:spid="_x0000_i1047" type="#_x0000_t75" style='width:414.75pt;height:176.25pt; visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image003.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
<!--[if !supportLists]-->c) <!--[endif]-->点击Install/update按钮
<!--[if gte vml 1]><v:shape id="图片_x0020_4" o:spid="_x0000_i1046" type="#_x0000_t75" style='width:415.5pt;height:240pt; visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image005.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
<!--[if !supportLists]-->d) <!--[endif]-->查看eclipse.ini文件,如果在文件末端添加了-javaagent:D:\soft\eclipse\lombok.jar那么恭喜你安装成功了
<!--[if gte vml 1]><v:shape id="图片_x0020_5" o:spid="_x0000_i1045" type="#_x0000_t75" style='width:414.75pt;height:189.75pt;visibility:visible; mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image007.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
D:\soft\eclipse\lombok.jar为lombok所在路径
<!--[if !supportLists]-->四、 <!--[endif]-->重启Eclipse
<!--[if !supportLists]-->五、 <!--[endif]-->编写实体类(以下提供常用实体类比较)
<!--[if gte vml 1]><v:shape id="图片_x0020_6" o:spid="_x0000_i1044" type="#_x0000_t75" style='width:415.5pt;height:181.5pt; visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image009.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
等同于
<!--[if gte vml 1]><v:shape id="图片_x0020_8" o:spid="_x0000_i1043" type="#_x0000_t75" style='width:318.75pt;height:493.5pt; visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image011.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
<!--[if gte vml 1]><v:shape id="图片_x0020_9" o:spid="_x0000_i1042" type="#_x0000_t75" style='width:224.25pt;height:208.5pt; visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image012.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
等同于
<!--[if gte vml 1]><v:shape id="图片_x0020_10" o:spid="_x0000_i1041" type="#_x0000_t75" style='width:415.5pt;height:518.25pt; visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image013.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
<!--[if gte vml 1]><v:shape id="图片_x0020_12" o:spid="_x0000_i1040" type="#_x0000_t75" style='width:268.5pt;height:215.25pt; visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image015.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
等同于
<!--[if gte vml 1]><v:shape id="图片_x0020_11" o:spid="_x0000_i1039" type="#_x0000_t75" style='width:414.75pt;height:491.25pt; visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image016.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
<!--[if !supportLists]-->六、 <!--[endif]-->Lombok常用注解解释
a)、@NonNull
这个注解可以用在成员方法或者构造方法的参数前面,会自动产生一个关于此参数的非空检查,如果参数为空,则抛出一个空指针异常。举个例子看一下
<!--[if gte vml 1]><v:shape id="图片_x0020_14" o:spid="_x0000_i1038" type="#_x0000_t75" style='width:188.25pt; height:129.75pt;visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image018.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
等同于
<!--[if gte vml 1]><v:shape id="图片_x0020_15" o:spid="_x0000_i1037" type="#_x0000_t75" style='width:290.25pt; height:167.25pt;visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image019.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
@Cleanup
用在变量前面,可以保证此变量代表的资源会被自动关闭,默认是调用资源的close()方法,如果该资源有其它关闭方法,可使用@Cleanup(“methodName”)来指定要调用的方法。使用输入输出流举个例子
<!--[if gte vml 1]><v:shape id="图片_x0020_16" o:spid="_x0000_i1036" type="#_x0000_t75" style='width:405pt;height:279pt; visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image020.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
等同于
<!--[if gte vml 1]><v:shape id="图片_x0020_17" o:spid="_x0000_i1035" type="#_x0000_t75" style='width:415.5pt;height:407.25pt; visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image021.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
@Getter
用在变量前面,用于生成get方法,同时对相应方法进行修饰符配置
<!--[if gte vml 1]><v:shape id="图片_x0020_18" o:spid="_x0000_i1034" type="#_x0000_t75" style='width:278.25pt;height:147pt; visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image023.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
等同于
<!--[if gte vml 1]><v:shape id="图片_x0020_19" o:spid="_x0000_i1033" type="#_x0000_t75" style='width:321.75pt;height:173.25pt; visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image024.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
@Setter
用在变量前面,用于生成set方法,同时对相应方法进行修饰符配置
@ToString
用在类前面,用于生成toString方法
<!--[if gte vml 1]><v:shape id="图片_x0020_20" o:spid="_x0000_i1032" type="#_x0000_t75" style='width:245.25pt;height:130.5pt; visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image025.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
等同于
<!--[if gte vml 1]><v:shape id="图片_x0020_21" o:spid="_x0000_i1031" type="#_x0000_t75" style='width:260.25pt;height:137.25pt; visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image026.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
@EqualsAndHashCode
用于类前面,生成类的equals以及hashCode方法
<!--[if gte vml 1]><v:shape id="图片_x0020_23" o:spid="_x0000_i1030" type="#_x0000_t75" style='width:300.75pt;height:136.5pt; visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image027.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
等同于
<!--[if gte vml 1]><v:shape id="图片_x0020_22" o:spid="_x0000_i1029" type="#_x0000_t75" style='width:291.75pt;height:180.75pt; visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image028.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
@NoArgsConstructor
参考五、编写实体类(以下提供常用实体类比较)
@AllArgsConstructor
参考五、编写实体类(以下提供常用实体类比较)
@Data
参考五、编写实体类(以下提供常用实体类比较)
@SneakyThrows
用在方法上,可以将方法中的代码用try-catch语句包裹起来,捕获异常并在catch中用Lombok.sneakyThrow(e)把异常抛出,可以使用@SneakyThrows(Exception.class)的形式指定抛出哪种异常
<!--[if gte vml 1]><v:shape id="图片_x0020_24" o:spid="_x0000_i1028" type="#_x0000_t75" style='width:415.5pt;height:231.75pt; visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image029.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
等同于
<!--[if gte vml 1]><v:shape id="图片_x0020_25" o:spid="_x0000_i1027" type="#_x0000_t75" style='width:348pt;height:283.5pt; visibility:visible;mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image031.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
@Synchronized
用在类方法或者实例方法上,效果和synchronized关键字相同
@Log
用在类上,可以省去从日志工厂生成日志对象这一步,直接进行日志记录,具体注解根据日志工具的不同而不同,同时,可以在注解中使用topic来指定生成log对象时的类名。
<!--[if gte vml 1]><v:shape id="图片_x0020_27" o:spid="_x0000_i1026" type="#_x0000_t75" style='width:408.75pt;height:156.75pt;visibility:visible; mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image032.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
等同于
<!--[if gte vml 1]><v:shape id="图片_x0020_28" o:spid="_x0000_i1025" type="#_x0000_t75" style='width:415.5pt;height:219pt;visibility:visible; mso-wrap-style:square'> <v:imagedata src="file:///C:\Users\db.xie\AppData\Local\Temp\msohtmlclip1\01\clip_image033.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
由于日志工具的不同,所等价的代码也不尽相同,一下列举常用日志工具的对比
@CommonsLog =
privatestaticfinal org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
@JBossLog =
privatestaticfinal org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LogExample.class);
@Log =
privatestaticfinal java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());
@Log4j =
privatestaticfinal org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);
@Log4j2 =
privatestaticfinal org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);
@Slf4j =
privatestaticfinal org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
@XSlf4j =
privatestaticfinal org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);
相关推荐
dnSpy-net-win32-222.zip
和美乡村城乡融合发展数字化解决方案.docx
如何看待“适度宽松”的货币政策.pdf
NCO 3.0.18 64位
法码滋.exe法码滋2.exe法码滋3.exe
* GPS IMU经典15维ESKF松组合 * VRU/AHRS姿态融合算法 * 捷联惯导速度位置姿态解算例子 * UWB IMU紧组合融合 * 每个例子自带数据集
在现代社会生活与生产活动下,不可避免的会产生巨量且多样的垃圾。我国的人口和经济总量均位居世界前列,因此,必然面临着庞大数量的垃圾处理的难题。如何通过人工智能来对垃圾进行有效分类,成为当前备受关注的研究热点。本文为展开基于深度网络的垃圾识别与分类算法研究,先使用PyTorch框架中的transforms方法对数据进行预处理操作,后经过多次调参实验,对比朴素贝叶斯模型、Keras卷积神经网络模型、ResNeXt101模型的垃圾分类效果。确定最佳分类模型是ResNeXt101,该模型在GPU环境下的分类准确率达到了94.7%。最后利用postman软件来测试API接口,完成图片的在线预测。在微信开发者工具的基础上,利用一些天行数据的垃圾分类的API接口再结合最佳模型的API接口,开发出了一个垃圾分类微信小程序。本文的研究内容丰富和完善了垃圾图像分类的相关研究,也为后续的研究提供了一定的参考价值。
一、上位机简介 在单片机项目开发中,上位机也是一个很重要的部分,主要用于数据显示(波形、温度等)、用户控制(LED,继电器等),下位机(单片机)与 上位机之间要进行数据通信的两种方式都是基于串口的: USB转串口 —— 上位机和下位机通过USB转串口连接线直接相连进行数据交互 串口转WIFI(ESP8266)—— 上位机和下位机基于TCP/IP协议通过以太网或者WIFI传输数据 串口转蓝牙(HC-06)—— 不多用,暂不介绍 Windows上位机(EXE可执行程序),最早用VB语言开发,后来由于C++的发展,采用MFC开发,近几年,微软发布了基于.NET框架的面向对象语言C#,更加稳定安全,再配合微软强大的VS进行开发,效率奇高。 本文使用Visual Studio 2022作为开发环境,上位机开发主要有WPF框架与Winform框架,他们都是基于.NET框架 WPF需要C/S基础,使用XAML来构建应用UI,界面比较美观,但是内存开销大 Winform可以使用窗口控件来构建应用,比较简单易学 二、开发环境设置 1. 安装Visual Studio 首先,确保你已经
course_s4_ALINX_ZYNQ_MPSoC开发平台Linux驱动教程V1.04.pdf
基于JavaWeb的毕业季旅游一站式定制服务平台_88z1j4jp_208-wx-(1).zip
Apeaksoft Data Recovery for Mac v1.6.16
cms测试练习项目(linux系统部署),可以用来进行python的测试练手项目
数据集简介:大学录取结果分析 概述 大学录取结果数据集包含了有关大学录取过程的信息,包括关键变量,可用于分析不同学术因素与申请者是否被录取之间的关系。该数据集非常适合进行探索性数据分析、训练预测模型以及研究影响录取决策的因素。 数据集列描述 admit:指示申请者是否被录取(1=被录取,0=未录取)。 paes:申请者在高等教育能力测试(PAES)中获得的分数。 nem:中学教育成绩平均分,评分范围从1.0到7.0。 rank:申请者在其班级中的排名,数值越低表示排名越好。 数据集目的 本数据集旨在让用户探索学术指标(如PAES分数、GPA和排名)与大学录取成功率之间的关系。这可以用于: 开发预测模型:基于学术表现预测录取可能性。 识别趋势:找出影响录取的关键学术因素。 生成可视化图表:理解分数分布及录取结果的关系。 数据集规模 记录数:1813条。 列数:5列。
STM32F427+rtthread下的bootload 网口(webclient)+串口(ymodem)传输,代码无质量,谨慎使用
1. 用户管理功能 用户注册与登录:用户可以通过手机号、邮箱等方式注册账户,并且可以通过账号登录系统进行购票、查看历史订单等操作。 个人信息管理:用户可以查看和修改个人信息(如姓名、手机号、邮箱等),并进行密码重置等操作。 实名认证:部分电影院购票系统要求用户进行实名认证,确保用户身份的真实性。 2. 电影信息展示功能 电影排片查询:用户可以查看当前和未来一段时间内的电影排片表,包括电影名称、上映时间、影片时长、类型、导演、演员等详细信息。 电影详情页:点击具体电影后,用户可以查看电影的详细信息,如剧情介绍、影评、评分、预告片等内容。 电影评分与评论:用户可以查看其他观众的评分和评论,也可以对已观看的电影进行评分和评论。 3. 座位选择与预定功能 影厅座位图:系统展示每场次的影厅座位图,用户可以通过座位图查看当前座位的状态(如可选、已选、已售出、VIP座位等)。 座位选择:用户可以选择自己喜欢的座位,系统会实时更新座位的可用状态,避免重复选择。 座位偏好设置:用户可以设置自己的座位偏好,如选择前排、中排或后排,靠窗或靠过道等。 4. 电影票购买与支付功能 票价展示:系统会展示每个座位的
Bukkit-BETA1.8.1服务端核心
内容概要:本文详细介绍了快速排序算法的原理和在Go语言中的高效实现方法。首先解释了快速排序的基本思想和实现步骤,接着提供了Go语言中实现快速排序的核心代码,并讨论了性能优化策略。最后,通过具体的应用场景实例,展示了快速排序在实际项目中的高效应用。 适合人群:具备一定编程基础,特别是对Go语言感兴趣的开发人员。 使用场景及目标:①理解快速排序算法的基本原理和分治策略;②学习如何在Go语言中高效实现快速排序;③掌握快速排序在实际项目中的应用实例。 阅读建议:本文不仅详细讲解了快速排序的原理,还提供了具体的实现代码和优化策略,建议读者在阅读过程中尝试实现和调试代码,以便更好地理解和掌握相关知识点。
项目包含完整前后端源码和数据库文件,均测试可正常运行 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 部署容器:tomcat7
NSMethodNotImplementedException如何解决