项目代码优化&总结
一、项目代码优化
1、文本信息内容优化
代码中的文本信息在真实项目开发中,应该如何处理?
properties 文件,称为属性文件,我们可以利用这个文本格式,存放一些文本信息,这样的好处是便于修改文本,而不需要改动代码!
json格式:name:value,name:value.....
properties:键值对
名1=值1
名2=值2
名3=值3
。。。
项目可维护性在开发中是非常重要的环节,要不然如何与产品经理相处?
2、网络请求数据优化
问题:网络请求会带来比较大的资源开销,频繁的请求肯定会影响项目的性能
那我们应该如何优化?
思路(避免频繁请求数据):
1、把第一次请求后的数据缓存起来
2、第二次请求数据时,检查时间间隔,如果在间隔内,则使用原数据,如果在间隔外,请求网络数据
3、完工,打个包带走吧
打包后的样子:
打包步骤:
二、项目总结
本项目中我们学到了:
1、Java Swing 窗体的开发
(1)组件:JButton、JLabel、JPanel、ImageIcon
(2)布局:BorderLayout、FlowLayout、GridLayout
(3)单点事件处理:ActionListener
(4)窗体的基本属性设置:窗体大小、定位、关闭事件
2、网络编程
(1)URL 实现网络请求
(2)IO 流操作
3、JSON 数据解析
(1)GSON 包中 JsonReader的使用
4、线程的使用:Thread
5、第三库如何使用
6、Properties属性文件的使用
7、JDK1.8中时间 API 的使用
8、项目打包(jar)
示例代码:
package com.coding.demo;
import java.io.IOException;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import com.codingke.ncov.util.HttpDataHandle;
/**
* 实现缓存
*
* @author ruby
*
*/
public class HttpDataProxy {
//3.窗体对象
private MainFrame mainFrame;
//构造方法
public HttpDataProxy(MainFrame mainFrame){
this.mainFrame = mainFrame;
}
//2.加载数据,判断是否要请求网络
public void loadData(String urlString){
//jdk1.8的新增的时间类
LocalDateTime cachetime= null;
//如果是第一次访问,只能访问网络
//如果不是第一次访问,判断事件间隔
if(mainFrame.currData!=null){
//不是第一次
//定义一个事件转换格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//将String类型的事件,转为LocalDateTime,可以做事件差
cachetime = LocalDateTime.parse(mainFrame.currData.getCachetime(), formatter);
//获取当前的时间
LocalDateTime nowtime = LocalDateTime.now();
//获取两个时间之间的差值
Duration duration = Duration.between(cachetime, nowtime);//秒
System.out.println("最近两次请求的时间间隔是(秒):"+duration.getSeconds());
if(duration.getSeconds() >= 300){//5分钟
//再次请求网络
System.out.println("time out get data from http...");
getData(urlString);
}else{
System.out.println("使用缓存数据。。。");
}
}else{
//是第一次请求,需要访问网络
System.out.println("第一次获取数据,需要访问网络。。。");
getData(urlString);
}
}
// 1.这个是真实的网络请求,我们在它前面加一层控制。
//获取疫情的数据,并解析为Data对象
public void getData(String jsonUrl) {
System.out.println("jsonUrl-->"+jsonUrl);
HttpDataHandle httpDataHandle = new HttpDataHandle();
try {
// 获取网络上的疫情数据:json
String json = httpDataHandle.request(jsonUrl);
// 解析json数据
mainFrame.currData= httpDataHandle.parseJson(json);
// System.out.println(mainFrame.currData);
} catch (IOException e) {
e.printStackTrace();
}
}
}