Java培训Day02——制作疫情地图(一)
一、前言
此次培训,是为期三天的网上培训。最终的目的是制作出疫情地图。首先我们来看看主要的讲课内容大纲。
|-Java语法学习(个人感觉讲得还可以,主要围绕本次培训作出的讲解,没有像网上的基础课程那样,长篇大论,有基础的童鞋可以看看复习一下的)
|-游戏化内存分析(印象中是拿了植物大战僵尸这个单机游戏来讲解的,通过抓包的形式,给我们介绍了太阳【这个游戏的游戏金币】在程序开发中就是一个变量)
|-制作自动关机程序
Day2
|-IDEA的使用(竟然在培训班中奖了,今天就来个IDEA写程序)
|-网络资源定位详解
|-疫情数据分析读取
|-对话图灵机器人
|-手机短信发送
Day3
|-疫情地图展示
|-阿里云服务器搭建
|-微信公众号入口
二、IDEA的使用
1、首先,我们到IDEA官网注册账号,然后下载我们的IDEA。这步我们跳过吧,官网虽然英文居多,但是我们可以用谷歌浏览器的自带翻译功能辅助,也相信各位童鞋能下载下来。
2、我们的安装包下载后,也是傻瓜式安装,基本就是先选路径,然后选运行的JDK位数(我们1.7以后好像都是64位了,所以选择64位),然后选安装的插件,完成后,差不多就是登陆激活的账号密码(账号密码谁都可以注册,重要的是我们要有激活码激活的账号)
3、安装好后,我们就先来写个HelloWorld(这里说一下IDEA和VScode的一个特点:前一次关闭软件的界面,这一次打开会显示那个界面)
|-我们选择:File→New→Project
|-新建空项目
|-下一步,然后点finish(完成)
|-这个新版本,会在点击完成项目后,提示你是在当前项目同一窗口展示,还是新窗口展示,我们这里试试点New Window
|-点击New Window后会新建一个新窗口和一个新的弹窗Modules,我们点击Modules选项上的“+”,然后点击New Module,会有一个新弹窗
|-IDEA真的越来越完善,这一步以前的要手动选JDK的安装路径,我们这里新版本,只要打开后,点击JAVA,点击Module SDK的下拉框,会提示你之前在环境变量配好的Java1.8的
|-选择好JDK后,我们点下面Next,到这一步,我们修改一下Module Name,然后点Finish就完成配置了
|-然后上一个弹窗,就出现了配置好的一些数据,我们直接点下面的OK就可以了
|-到上面为止,我们只创建了项目的工程文件,class还没创建的
|-接着我们要去新建一个类,在我们eclipse新建类的时候,我们有新建包这个操作,而在我们IDEA中,这一操作我们分开来,先新建包,然后新建类
|-这里,我们新建好类后,我们写个HelloWorld来学习一下
|-好的,没有问题,接下来,我们看看我们的class文件现在保存到哪里了,我们可以看一下Hello头顶上的E盘路径
|-又是新版本更新的功能,我们直接点开上面链接,会有一个弹窗,我们直接点到我们包创建的最后
|-好了,我们目前为止,基本的IDEA的基本操作就完成了,下面我们回顾一下上述操作
①创建一个空项目(sendmessage)
②创建一个新模块(sendmessage)
③在sendmessage模块下的Src下创建一个包(com.baidu.CionDa.SendMessage)
④在com.baidu.CionDa.SendMessage包下新建一个类(SendMessage)
⑤在SendMessage类中写代码
⑥在idea中执行程序
|-然后我们看看IDEA中项目结构:
项目project ->模块 ->包 ->java文件
|-接着我们了解一下基本的IDEA操作
|-眼神不好,修改字体:File -> Setting ->Font ->Size(修改16-20基本OK)
|-IDEA中的快捷键
|-psvm回车产生public static void main(String[] args){}方法
|-sout回车产生System.out.println();
|-Ctrl+Alt+Space(空格键)我们可以通过这个快捷键实现:内容提示,代码补全等
|-注释:
单行:选中代码,Ctrl+/,再来一次就是取消单行注释
多行:选中代码,Ctrl+Shift+/,再来一次就是取消多行注释
|-格式化:Ctrl+Alt+L
|-IDEA中模块操作
新建模块(首先,我们的新建模块在前面内容已经涉及到,我们这里跳过)
删除模块(模块只在IDEA删除,在原先的保存路径并没有删除,若要彻底删除,需要自行前往保存路径删除)
导入模块
删除模块:
导入模块
三、网络资源定位详解
网络资源又叫URL(统一资源定位符Uniform Resource Locator),通俗地讲就是我们的网址
在万维网上(world wide web) 每一个信息和资源都有统一且唯一的地址
|-网址的组成部分:
通信协议://域名:端口号/虚拟路径?参数列表#锚点
|-通信协议:
传输速率控制(通讯过程中,端与端的传输速度);
传输编码控制(通讯过程中,端与端的交流要读得懂,若我讲日语,你听不懂,那就没办法交流下去了);
出错控制(通讯过程中,端与端之间要是因为网络,人为等原因会中断通讯)等
|-域名:ip地址的别名
ip地址:是计算机在互联网中的唯一表示 (公网ip)
|-端口号:
范围:0-65535之间
http协议访问时,可以忽略端口号,自动寻找80
https协议访问时,可以忽略端口号,自动寻找443
|-参数列表(重要):
访问网络时,给服务器发送的参数内容.
参数列表由多个参数组成, 参数与参数之间使用&连接
每一个参数又由参数名称和参数内容组成, 名称与内容之间使用=号连接
对下面URL(网址进行解释)
https://www.cnblogs.com/raoqinglong/p/13056439.html
该网址传输协议是https协议,访问时会自动寻址443,域名为www.cnblogs.com,虚拟路径raoqinglong/p/13056439
很多人就问:为什么上面的没有参数内容?因为我们要向服务器发送参数才需要的。像上面的URL一样,我们只是去读取,去调用而言,没有要上传的意思
https://account.cnblogs.com/signup?returnUrl=https%3A%2F%2Fwww.cnblogs.com%2F
而这个网址是同一个网址的,我们博客园的注册地址,这个?后面的就是我们的参数,参数名是returnUrl,参数内容就是https%3A%2F%2Fwww.cnblogs.com%2F
我们可能看不懂这个参数内容,没关系,我们去解析一下,百度搜索UTF-8在线转换,你就会得到解析上面https%3A%2F%2Fwww.cnblogs.com%2F这个网址就是https://www.cnblogs.com/
|-锚点:
一般在一些购物网站,篇幅比较长,还有模块化的页面用到,用于快速跳转到同一页面的不同标题/模块下。例如我的博文在电脑上看
但是很可惜,不太完善,不会跳标题,有点小尴尬。然后,对于URL的解释分析,就到这里了
四、疫情数据分析读取
在读取疫情数据前,我们先去学习一下JAVA是怎样读取URL的
下面有要标准的使用流程
标准使用流程:
//1. 创建一个URL类的对象url
URL url = new URL("网址");
//2. 通过URL类的对象url打开网络连接 , 并得到连接对象conn
URLConnection conn = url.openConnection();
//3. 通过连接对象 , 得到用于读取网页内容的输入流 is
InputStream is = conn.getInputStream();
//4. 将上述的字节流is 装饰为字符流 , 将字符流再装饰为一次能读取一行的字符流br
BufferedReader br = new BufferedReader(new InputStreamReader(is));
//若我们的读取字符乱码,我们可以把4换成下面这一句
BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
//5. 通过字符流br,读取一行内容,并将内容存储到变量text中
String text = br.readLine();
//6. 可以将读取到的内容text 输出显示到控制台
System.out.println(text);
编写完上面代码,通常数据类型的位置会出现红线 (需要导包) 解决方案:鼠标悬停在红线位置,点击要导入的包即可。
本节任务需要导入的包:
1. java.io.xxx
2. java.net.xxx
3. java.util.xxx
导完包后,还会出现红线,我们需要抛出异常
我们来一个读取百度首页的代码:
package com.baidu.cionda.readbaidu; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection; public class ReadBaidu {
public static void main(String[] args) throws IOException {
//1. 创建一个URL类的对象url
URL url = new URL("https://www.baidu.com");
//2. 通过URL类的对象url打开网络连接 , 并得到连接对象conn
URLConnection conn = url.openConnection();
//3. 通过连接对象 , 得到用于读取网页内容的输入流 is
InputStream is = conn.getInputStream();
//4. 将上述的字节流is 装饰为字符流 , 将字符流再装饰为一次能读取一行的字符流br
BufferedReader br = new BufferedReader(new InputStreamReader(is));
//若我们的读取字符乱码,我们可以把4换成下面这一句
//BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
//5. 通过字符流br,读取一行内容,并将内容存储到变量text中
//我们这里来读取四行看看
String text1 = br.readLine();
String text2 = br.readLine();
String text3 = br.readLine();
String text4 = br.readLine();
//6. 可以将读取到的内容text 输出显示到控制台
System.out.println(text1);
System.out.println(text2);
System.out.println(text3);
System.out.println(text4);
}
} /* |-注释: 单行:选中代码,Ctrl+/,再来一次就是取消单行注释 多行:选中代码,Ctrl+Shift+/,再来一次就是取消多行注释 |-格式化:Ctrl+Alt+L
|-抛出异常:Alt+Shift+Enter
|-IDEA中模块操作 新建模块(首先,我们的新建模块在前面内容已经涉及到,我们这里跳过) 删除模块(模块只在IDEA删除,在原先的保存路径并没有删除,若要彻底删除,需要自行前往保存路径删除) 导入模块*/
在IDEA我们居然没乱码,要是我们移植到Eclipse就不一样了,上才艺:
为什么会这样呢,就是我们上面提到的UTF-8,我们不同公司的开发项目和使用编码不同,但是UTF-8是我们通用的国际编码,里面包含了中文和英文等国际语言,我们也可以通过上面UTF-8转换网站,转换“更多产品”的乱码看看
我们把上面的百度地址换成我们的https://zaixianke.com/yq/all,在这个网址我们可以获取疫情的实时数据
五、对话图灵机器人
原理跟我们获取疫情数据很相似
首先我们要拿到智能机器人API
服务器地址: https://api.jisuapi.com/iqa/query
参数列表 appkey:秘钥,值为:62958a3a6ef3c56d
question:与智能机器人的聊天内容 ,例如:北京天气
使用方式:
那在我们的代码怎么玩呢?上才艺
package com.CionDa.readbaidu; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder; public class ReadBaidu { public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//定义appkey变量
String appkey = "62958a3a6ef3c56d";
//我们的编译器是Eclipse的话,不能直接发中文,所以要转UTF-8
String para = URLEncoder.encode("讲个笑话","UTF-8");
//1. 创建一个URL类的对象url
URL url = new URL("https://api.jisuapi.com/iqa/query?appkey="+appkey+"&question="+para);
//2. 通过URL类的对象url打开网络连接 , 并得到连接对象conn
URLConnection conn = url.openConnection();
//3. 通过连接对象 , 得到用于读取网页内容的输入流 is
InputStream is = conn.getInputStream();
//4. 将上述的字节流is 装饰为字符流 , 将字符流再装饰为一次能读取一行的字符流br
//BufferedReader br = new BufferedReader(new InputStreamReader(is));
//若我们的读取字符乱码,我们可以把4换成下面这一句
BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
//5. 通过字符流br,读取一行内容,并将内容存储到变量text中
//我们这里来读取四行看看
String text1 = br.readLine(); //6. 可以将读取到的内容text 输出显示到控制台
System.out.println(text1); } }
|-乱码处理 :读取服务器数据乱码处理
计算机存储的都是数字
编码表:ASCII
65:A
66:B
67:C
97:a
简体中文国标系列编码:
GBK GB2312 GB18030
UTF-8 unicode
处理的代码如下:
//在is装饰为字符流时,指定字符集UTF-8
BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
参数乱码的处理
将发送给服务器的中文进行URL编码即可
URL编码: 将中文转换为%+英文字母+阿拉伯数字
String para = URLEncoder.encode("中文文字","UTF-8");
六、手机短信发送
短信API 短信API服务器地址: https://api.jisuapi.com/sms/send
参数列表
appkey:秘钥,值为:62958a3a6ef3c56d
mobile:接收验证码的手机号
content:短信内容,必须使用提供的模板,模板中能修改的只有六位验证码,模板如下:
恭喜你,作业已完成!验证码是:666666。如非本人操作,请忽略本短信!【开课吧新职课】
具体使用与上面控制图灵机器人类似,我们来直接上代码
package com.CionDa.sendmessage; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.Scanner; public class SendMessage { public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub int identifyingcode = (int) ((Math.random()*9+1)*100000);
String para = URLEncoder.encode("恭喜你,作业已完成!验证码是:"+identifyingcode+"。如非本人操作,请忽略本短信!【开课吧新职课】","UTF-8");
String appkey ="62958a3a6ef3c56d";
System.out.println("请输入手机号:");
Scanner input = new Scanner(System.in);
String moblie = input.nextLine();
//1. 创建一个URL类的对象url
URL url = new URL("https://api.jisuapi.com/sms/send?appkey="+appkey+"&mobile="+moblie+"&content="+para);
//2. 通过URL类的对象url打开网络连接 , 并得到连接对象conn
URLConnection conn = url.openConnection();
//3. 通过连接对象 , 得到用于读取网页内容的输入流 is
InputStream is = conn.getInputStream();
//4. 将上述的字节流is 装饰为字符流 , 将字符流再装饰为一次能读取一行的字符流br
BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
//5. 通过字符流br,读取一行内容,并将内容存储到变量text中
String text = br.readLine();
//6. 可以将读取到的内容text 输出显示到控制台
System.out.println(text); } }
Java培训Day02——制作疫情地图(一)的更多相关文章
- Java培训Day01——制作疫情地图(一)
一.前言 此次培训,是为期三天的网上培训.最终的目的是制作出疫情地图.首先我们来看看主要的讲课内容大纲. Day1 |-Java语法学习(个人感觉讲得还可以,主要围绕本次培训作出的讲解,没有像网上的基 ...
- 数据可视化之 图表篇(二)如何用Power BI制作疫情地图?
丁香园制作的这个地图可视化,相信大家每天都会看好几遍,这里不讨论具体数据,仅来探讨一下PowerBI地图技术. 这个地图很简洁,主要有三个特征: 1,使用着色地图,根据数据自动配色 2,只显示中国地图 ...
- 如何利用excel中的数据源制作数据地图
关于这个问题,制作数据地图的方法已不新奇,总体来说有这么几类方案: 一类方案:直接在excel里制作 优势:个人小数据量应用较为方便简单 缺点:需要熟悉VBA,且更强大的功能对VBA水平要求较高 1. ...
- 动力节点Java培训告诉你Java线程的多功能用法
现在的java开发可谓是八仙过海各显神通啊!遥想当下各种编程语言萎靡不振,而我Java开发异军突起,以狂风扫落叶之态,作为Java培训行业的黄埔军校,为了守护Java之未来,特意总结了一些不被人所熟知 ...
- 北京Java培训机构哪个好
又是一年暑期生活的来临,对于即将走出校园的实习生而言,培训潮与就业潮不约而至,培训行业的就业课程开班也如火如荼地进行着. 一直以来,计算机专业的毕业生都会作为一股庞大的生力军涌入社会各个岗位.就目前的 ...
- Java 征途:行者的地图 (转)
http://www.cnblogs.com/mindwind/p/5251430.html Java 征途:行者的地图 前段时间应因缘梳理了下自己的 Java 知识体系, 成文一篇望能帮到即将走 ...
- 如何使用highmaps制作中国地图
如何使用highmaps制作中国地图 文章目录 Highmaps 所需文件 地图初始化代码 highmaps 渲染讲解 highmaps 中国各城市坐标的json文件 highmaps 线上DEMO ...
- DEDE5.7如何制作网站地图?
DEDE用的人很多,可能大家在使用的过程中会碰到一些问 题,这很正常的,今天我们来讲讲DEDE5.7如何制作网站地图,其实网站地图分两种,一种做给网友看的,方便网友可以方便地找到自己想浏览的内容,另外 ...
- 用SCMD2.0.8.0汉化版制作OB地图简易教程
[综合] [复制链接] Fenix_king 153 主题 0 好友 1万 积分 金星 该用户从未签到 星币 6392 水晶 0 星望 22 精华 0 发消息 电梯直达 楼主 ...
随机推荐
- 手把手教你用Python网络爬虫获取网易云音乐歌曲
前天给大家分享了用Python网络爬虫爬取了网易云歌词,在文尾说要爬取网易云歌曲,今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地. 跟着小编运行过代码的筒子们将 ...
- webpack指南(三)缓存
缓存 把 /dist 目录中的内容部署到服务器上,客户端(通常是浏览器)就能够访问网站此服务器的网站及其资源.而通过网络获取资源是比较耗时的,这就是为什么浏览器要使用缓存这种技术.可以通过命中缓存,以 ...
- css概述四
八.文本格式化 2.文本属性 ①文本颜色 color:合法的颜色值 ②文本对齐方式 text-align: 取值 left/center/right/justify 注意 1.一个元素写了text- ...
- JS的函数和对象三
复习 判断是否含有某个属性 对象.属性名 === undefined 对象.hasOwnProperty('属性名') '属性名' in 对象 方法 { say:function(){ this ...
- uwsgi模块以参数形式运行项目
1.虚拟环境中下载uwsgi模块-------pip install uwsgi 2.脚本运行案例 新建一个test.py脚本文件,写入如下内容: def application(env, start ...
- Django ORM性能优化之count和len方法的选择(非常详细推荐干货)
接下来我将从源码层面分情况和应用分析我们在计算queryset数据集时是用orm的count函数计算长度还是用len函数计算数据集长度. 首先,我们知道ORM查询queryset数据集是惰性查询的,只 ...
- 15-2 insert语句介绍
create table TblClass ( tClassId ,) primary key, tClassName ) ) --向班级表中插入一条记录 --insert into 表名(列1,列2 ...
- Linux——vim操作
查看文件:vim 文件名 进入vim命令后: Shift+g:到达文件底部 /搜索内容:搜索文件中字符串:点击“N”键,查看下一个搜索内容位置
- web项目——启动时tomcat报错:Server Tomcat v7.0 Server at localhost failed to start.
报错信息:Server Tomcat v7.0 Server at localhost failed to start. 报错截图: 原因分析:在使用SSM框架时,生成的mapping与系统配置文件不 ...
- Oracle 操作权限
alter user scott account unlock; 解锁 -- 新建用户create user yym identified by 123456; -- 放开用户权限grant conn ...