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 发消息 电梯直达 楼主 ...
随机推荐
- 2018-06-19 Javascript 基础2
js变量类型测试:typeof()->五种 (number,string,boolean,object,undefined): instanceof->检查某个对象是否是某个构造器产生的 ...
- Codeforces 1272E (Nearest Opposite Parity,反向建边)
题意:给你n个数,每个数的值为a[i],每个点可以从i这号点跳转至(i - a[i]) 或 (i + a[i])点,点的范围为[1,n],然后问的是从偶数点跳至奇数点,从奇数点跳至偶数点的最少次数是多 ...
- STM32学习笔记——USART
STM32的USART组件支持异步.同步.单线半双工.多处理器.IrDA.LIN.SmartCard等模式,本文介绍的是异步即UART模式. 总线通信有三种模型:轮询.中断和DMA.DMA对我来说是陌 ...
- PAT 1006 Sign In and Sign Out (25分) 字符串比较
题目 At the beginning of every day, the first person who signs in the computer room will unlock the do ...
- 学会阅读源码后,我觉得自己better了
我有一个大学同学,名叫石磊,我在之前的文章里提到过几次,我们俩合作过很多项目.只要有他在,我就特别放心,因为几乎所有难搞的问题,到他这,都能够巧妙地化解.他给我印象最深刻的一句话就是,"有啥 ...
- 【雕爷学编程】MicroPython动手做(01)——春节后入手了K210开发板
Python的开放.简洁.黏合正符合了现发展阶段对人工智能.大数据分析.可视化.各种平台程序协作产生了快速的促进作用.自Python3的发布到现在已有五六年的时间,从刚发布的反对声音到慢慢被接受与喜欢 ...
- 总结hashMap和hashtable
在这里帮大家总结一下hashMap和hashtable方面的知识点吧: 1. 关于HashMap的一些说法: a) HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体.Ha ...
- 浅谈JQuery
一.什么是JQuery? JQuery是第三方开发的执行DOM操作的极简化的函数库. 执行DOM操作:JQuery还是在执行DOM操作 1.学习JQuery还是在学习DOM 2.五件事:增删改查 事件 ...
- Python 图像处理 OpenCV (4):图像算数运算以及修改颜色空间
前文传送门: 「Python 图像处理 OpenCV (1):入门」 「Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像」 「Python ...
- 【python爬虫】scrapy入门1--环境搭建
Scrapy Day01 (1) 进入主目录,右键打开终端,创建项目 scrapy startproject xicidailiSpyder 进入项目目录 cd xicidailiSpyder/ 创建 ...