《疫情数据抓取和分析》训练营day05_项目代码优化&总结

项目代码优化&总结

 

一、项目代码优化

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();
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
原料油的采购与精炼安排是否合理,直接影响着食品公司所获得的总利润。本文针对食品加工问题,建立了线性规划模型,并依据所给条件,制定了一套最优采购方案和精炼方案,使得公司获得最大利润,并就原料油市场价格的波动对利润的影响作了全面计划。 模型Ⅰ 对问题1建立了线性规划模型。本文用LINDO和LINGO对问题1进行了编程求解,结果一致,得到公司获得的最大利润为 元。 模型Ⅱ 对问题2建立模型。考虑如下的价格变化方式:2月份植物油价上升 ,非植物油上升 ;3月份植物油价上升 ,非植物油上升 ;其余月份保持这种线性的上升势头。对不同的值 (直到20),采用MATLAB编程法计算出变动后的价格矩阵,再将计算出的价格矩阵代入到模型1中求出相应的最大利润。最大利润如表2。 表3 价格波动 与最大利润 的对应关系 1 948222.2 10 -1759.259 2 818018.5 11 -26425.93 3 687814.8 12 -51092.59 4 557611.1 13 -70574.07 5 429907.4 14 -87074.07 6 316796.3 15 -91574.07 7 204485.2 16 -96074.07 8 115848.1 17 -100574.1 9 51411.85 18 -105074.1 19 -109574.1 20 -114074.1 本文针对模型Ⅱ所求的结果进行了拟合,并且拟合函数具有很高的可决系数,因此所拟合的函数能够较好的反应公司所获得的总利润与原料油价格上涨之间的关系。针对原料油价格上涨这一问题,拟合得到的函数为公司提供了很好的生产调整方案,具有很高的实用价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值