import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Date;
public class Network {
private static boolean flag;
/**
* @param args
*/
public static void main(String[] args) {
download();
}
/**
* 测试网络下载速度(测试网络速度)
* @return 返回真表示网络连接正常 返回假表示网络连接异常或超时
*/
public synchronized static boolean download() {
flag = false;
//定义子线程 监控是否超时
new Thread(new Runnable() {
public void run() {
int times = 0;
while(true){
times++;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
//设置超时 5秒后超时跳出
if(times >= 50){
flag = true;
break;
}
}
}
}).start();
int bytesum = 0;
int byteread = 0;
URL url = null;
try {
/*
* 链接地址可以是任何可以访问的网络链接 用于下载文件 测试下载速度
* 如果下载文件内容大小太小 测试结果可能偏低
*/
url = new URL("https://mat1.gtimg.com/libs/jquery/1.12.0/jquery.min.js");
} catch (MalformedURLException e1) {
e1.printStackTrace();
}
try {
URLConnection conn = url.openConnection();
InputStream inStream = conn.getInputStream();
byte[] buffer = new byte[1024];
System.out.println("开始时间:" + new Date().getTime());
long startTime = System.currentTimeMillis();
while ((byteread = inStream.read(buffer)) != -1) {
bytesum += byteread;
System.out.println(bytesum);
if(flag == true){
break;
}
}
if(flag == true){
System.out.println("下载超时!");
return false;
}
System.out.println("文件大小:" + (float)bytesum / 1024 + "Kb");
System.out.println("结束时间:" + new Date().getTime());
long endTime = System.currentTimeMillis();
System.out.println("耗时:" + String.valueOf((float)(endTime - startTime)/1000) + "秒");
float down_sd = bytesum/(endTime - startTime)*1000/1024;
System.out.println("下载速度:" + down_sd + "Kb");
return true;
} catch (FileNotFoundException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
}
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,以简洁易读的形式呈现数据,被广泛应用于前后端数据交互、API设计等领域。JSON格式由键值对构成,使用大括号表示对象,使用方括号表示数组。
在JSON格式中,键必须为字符串类型,值可以是字符串、数字、布尔值、数组、对象或null。JSON格式具有很好的可读性,也方便机器解析和生成。与XML相比,JSON格式更为紧凑、易读、易解析。
JSON格式也有一些局限性。JSON不支持注释,也不支持原始数据类型。在序列化和反序列化时,如果JSON中存在循环引用,将会导致死循环。
为了更好地理解JSON格式,我们需要深入了解它的结构和语法规则。下面是一个简单的JSON示例:
json Copy code
{
"name": "张三",
"age": 18,
"isMale": true,
"hobbies": ["篮球", "足球", "音乐"],
"address": {
"province": "广东",
"city": "深圳",
"district": "南山区"
}
}
在这个示例中,我们定义了一个名为“张三”的人物对象,包含了姓名、年龄、性别、爱好和住址等信息。其中,“name”、“age”、“isMale”等键名均为字符串类型,对应的值可以是字符串、数字、布尔值、数组或对象。在“hobbies”键中,我们定义了一个包含三个元素的数组。在“address”键中,我们定义了一个包含三个键值对的对象。
总之,JSON格式是一种轻量级、易读、易解析的数据交换格式,具有广泛的应用场景和优势。深入了解JSON格式的结构和语法规则,对于开发者来说是非常有益的。