Part01 ☀️
Part01 ☀️
课程内容
- 编程环境安装
- JDK安装Java运行环境
- Idea工具安装和配置编码工具
- 安装Maven以及创建Maven入门工程(0-1工程)构建工具
- Idea编程插件提高编码速度!
- 微信小程序开发工具安装
- Web前端知识
- html、css、js 🍐
- 导入微信小程序源代码 🍐
- Http协议和端口 🍐
- Tomcat服务器 🍐
- SpringBoot入门案例和Mybatis入门案例 ✏️ ❤️
- SpringBoot入门案例
1. 实训编码的环境1
实训编码的环境

链接:https://pan.baidu.com/s/1jPhvvaLTWATOxJKfqt-PSw?pwd=8848 提取码:8848 --来自百度网盘超级会员V9的分享
代码操作
🎯1. JDK

JDK是 java 运行环境配置的工具包,能够是 java 程序运行更加方便顺畅,帮助用户进行编程开发时代码数据库调用,
安装 JDK 是学习 java 程序语言的第一步
JDK 是整个 java 程序的核心,包含 java 运行环境、java 工具和 java 基础类库等,是 java 语言开发工作者必备的工具,让编程更加高效和简单。
安装和教程如下:

jdk-11.0.20_windows-x64_bin是JDK11的版本
jdk-8u162-windows-x64.exe是JDK8的版本
- 说明:
安装 JDK 后,配置环境变量 JAVA_HOME,并且在
cmd
窗口中,输入java -version
提示如下图验证是否安装JDK,并且配置好环境变量

- Java 现在发布的版本很快,有很多版本,但是真正会被大规模使用的是 3 年一个的 LTS 版本。每 3 年发布一个 LTS(Long-Term Support),长期维护版本。意味着只有Java 8 ,Java 11, Java 17,Java 21 才可能被大规模使用。
- 企业开发中主流都是使用 jdk8或者JDK11,JDK8的版本是 2014 年发布的,JDK11的版本是 2018 年发布的,JDK17的版本是 2021 年发布的
- 本项目会使用AI大模型,因此需要安装JDK17以上的版本

🎯 2. Idea

- IDEA 全称 IntelliJ IDEA,是 java 编程语言的集成开发环境。
- IntelliJ 在业界被公认为最好的 Java 开发工具,尤其在AI代码助手、代码自动提示、重构、JavaEE 支持、各类版本工具(git、svn 等)、JUnit(单元测试)、代码分析、 创新UI设计等方面的功能非常好用。
- IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版还支持 HTML,CSS,PHP,MySQL,Python


- 安装和教程如下:

😃 安装任何一个版本都可以,编码都是一样的哦,无非就是新版本的支持的插件稍微多一些,皮肤跟好看一点
- 安装注意事项:
- 安装 idea 后,会提示是否试用,可以选择试用(30 天)
- 也可以使用免费版(社区版),但是免费版的功能有限

🎯 3. Maven

Maven 是专门用于管理和构建 Java 项目的工具Java开发几乎必用
安装教程:看焱哥在U盘或者网盘中对应的截图(只有三步哦)

🎯 4. MySQL
Monty,是MySQL的CTO和联合创始人,撰写了MySQL95%的服务器端代码。在MySQL以10亿美元的价格被卖给SUN,SUN又被Oracle收购后,MySQL的所有权也落入Oracle的手中。为了保持MySQL的开源使用不受影响,Monty又在2009年创立了MariaDB。
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。
MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
项目使用 MySQL5.7或Mysql8.0版本已经安装了,不需要重装
4.1 Mysql安装包
跳转到 顶部的
环境、软件安装
中下载资料中下载


🎯 6. 截图贴图软件
Snipaste 是一个简单但强大的贴图工具,同时也可以执行截屏、贴图、标注等功能。
你可以将代码的主要思路和语法,截图贴在屏幕的右上角上,方便你随时查看,提高编码效率
- 安装方式:压缩包解压缩后,点击启动程序即可使用(右下角会出现图标),不需要安装。

- 快捷键:
- 截屏 :默认为 F1
- 贴图 :默认为 F3
总结
课堂作业
- 参考上述讲义,完成软件和插件的安装!🎤
如果不清楚自己是否装了,可以举手问焱哥
2. 常用插件
常用插件
安装插件前,关闭电脑所有的防火墙

🎯 MavenHelper
Maven Helper 可以帮助我们在 IDEA 中更好地开发 maven 项目,主要功能包括:
- 更方便地执行 maven 命令;
- 分析和排除 Maven 冲突;
- 自定义 Maven goals;
- 在当前 Module 所在的路径中打开 Terminal;

很方便的调用maven的命令,而不需要点击右侧的栏目
🎯 MybatisX

MybatisX 插件可以让我们更方便地使用 Mybatis, 主要功能包括:
- 关联 Mapper 文件和 xml 文件,并且支持快速跳转;
- 代码提示;
🎯 Lombok
合理地使用 Lombok 可以极大程度地简化代码,让代码的可读性更强。 Lombok 插件让 IDEA 拥有兼容 Lombok 的能力。
@Slf4j酸辣粉日志注解
:方便输出日志@Data注解
: 可以免除set和get方法 需要导入依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
🎯 TongYi
通义灵码,你的智能编码助手。你可以问我关于编码相关的问题,我们一起更高效率、更高质量地完成编码工作



用过的,都说好!👍
🎯 自动导包的设置

可以这样设置👇

3. 网络协议、服务器 🍐
web网络知识
web网站的流程1: 👇


网络编程三要素:协议、ip、端口
1. 协议
HTTP:Hyper Text Transfer Protocol(超文本传输协议),规定了浏览器与服务器之间数据传输的规则。
- 1️⃣ http是互联网上应用最为广泛的一种网络协议
- 2️⃣ http协议要求:
- 浏览器在向服务器发送请求数据时,或是服务器在向浏览器发送响应数据时,都必须按照固定的格式进行数据传输
HTTP协议又分为:请求协议和响应协议
- 请求协议:浏览器将数据以请求格式发送到服务器 包括:请求行、请求头 、请求体
- 响应协议:服务器将数据以响应格式返回给浏览器 包括:响应行 、响应头 、响应体
2.IP 地址
要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接收数据的计算机和识别发送的计算机,而 IP 地址就是这个标识号。也就是设备的标识

3.端口
网络的通信,本质上是两个应用程序的通信。每台计算机都有很多的应用程序,那么在网络通信时,如何区分这些应用程序呢?如果说 IP 地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的应用程序了。也就是应用程序的标识.
用两个字节表示的整数,它的取值范围是
0-65535
。其中,0-1023
之间的端口号用于一些知名的网络服务和应用,普通的应用程序需要使用1024
以上的端口号。如果端口号被另外一个服务或应用所占用,会导致当前程序启动失败
实操1:通过分析浏览器发送的请求,熟悉网络编程三要素 👇 👇
点击查看步骤
- 浏览器打开百度
- 按住F12或者在设置中,进入开发者工具模式
- 选择网络或者network tab栏目,然后刷新网站,观察

如果你找出对应的数据,说明你掌握了http中请求和响应的数据 🎉 🎉🎉🎉
总结
课堂作业
- 打开浏览器,访问boss直聘网站,点击F12 将网络编程三要素:协议、ip、端口 标出来,发群里,发的+1分,🎤
完成后,将练习代码截图提交到任务平台,直接作为实训分数!
3. 编程知识回顾
3.1 网页三剑客 🍐
网页三剑客
在学习网页开发之前,需要了解以下概念:
- 什么是网页

- 什么是HTML

- 网页的形成
网页是由网页元素组成的,这些元素是利用html标签描述出来的,然后通过浏览器显示给用户的
打开 https://www.bilibili.com/ 观察哔哩哔哩首页的是由哪些元素组成的?依次找出下列标签
- a标签,超链接标签;
- img标签,图片标签
- div标签,布局标签
- h1-h3标签,标题标签
- CSS样式
HTML仅仅只是做数据的显示,CSS是对页面的修饰,如颜色和位置,背景图片等
- JavaScript
HTML仅仅只是做数据的显示,CSS是对页面的修饰,JavaScript控制页面的行为,如点击事件,加载数据,轮播图等
操作:👇
步骤
接下来,使用Idea写一个简单的网页!
- 在目录中创建demo.html文件,并使用idea软件打开
- 标签:输入常用标签 h1 和 img
- 样式:给h1标签的文字,设置为blue 蓝色
- 行为:3秒钟后,弹出对话框!内容为:黑马程序员
- 在目录中创建demo.html文件,并使用idea软件打开


- 标签:输入常用标签 h1 和 img 标签一般成对哦
注意:修改一处,就用刷新浏览器看看效果
图片地址:http://tuku.yangeit.cn:21012/i/2024/06/30/5619266419079257103.png
- 样式:给h1标签的文字,设置为blue 蓝色
- 行为:3秒钟后,弹出对话框!内容为:黑马程序员


总结
课堂作业
- 参考上述代码,编写一个简单的网页,
完成后,将练习代码截图提交到任务平台,直接作为实训分数!
3.2 面向对象语法回顾
面向对象语法回顾
在util包下创建JavaBasicsDemo类,来回顾面向对象的语法和Java编写常用的语法,具体如下: 0. 输出语句和main方法
- 字符串(长度,判断是否为空,包含某个字段,等于某个字符串)
- 逻辑判断(if,else)
- 集合(ArrayList,for循环)
- 面向对象(类,构造函数,方法,get和set方法)
- 集合装对象(ArrayList装对象,for循环遍历对象,get和set方法)
- 继承和实现
参考代码:👇
public class JavaBasicsDemo {
public static void main(String[] args) {
// 0. 输出语句
System.out.println("Hello, Java Basics!");
// 字符串操作
String str = "Hello World";
System.out.println("字符串长度: " + str.length());
System.out.println("字符串是否为空: " + str.isEmpty());
System.out.println("字符串是否包含 'World': " + str.contains("World"));
System.out.println("字符串是否等于 'Hello World': " + str.equals("Hello World"));
// 逻辑判断
int num = 10;
if (num > 0) {
System.out.println(num + " 是正数");
} else if (num < 0) {
System.out.println(num + " 是负数");
} else {
System.out.println(num + " 是零");
}
// 集合(ArrayList)操作(存储简单数据类型示例,这里用字符串)
ArrayList<String> stringList = new ArrayList<>();
stringList.add("Apple");
stringList.add("Banana");
stringList.add("pear");
System.out.println("遍历字符串集合:");
for (int i = 0; i < stringList.size(); i++) {
System.out.println(stringList.get(i));
}
// 面向对象 - 集合装对象(ArrayList装Person对象)
ArrayList<Person> personList = new ArrayList<>();
personList.add(new Person("Alice", 25));
personList.add(new Person("Bob", 30));
System.out.println("遍历Person对象集合:");
for (int i = 0; i < personList.size(); i++) {
Person person = personList.get(i);
System.out.println("姓名: " + person.getName() + ", 年龄: " + person.getAge());
// 可以尝试修改对象属性(通过set方法)
person.setName("Tom" + i);
person.setAge(person.getAge() + 1);
System.out.println("修改后 - 姓名: " + person.getName() + ", 年龄: " + person.getAge());
}
}
}
// 定义一个简单的Java类,包含了属性、构造函数、get和set方法
class Person {
private String name;
private int age;
// 构造函数
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// get方法
public String getName() {
return name;
}
// set方法
public void setName(String name) {
this.name = name;
}
// get方法
public int getAge() {
return age;
}
// set方法
public void setAge(int age) {
this.age = age;
}
}

接着在util包下创建JavaBasicsDemo2类,来回顾继承和实现 等语法,具体如下:
public class JavaBasicsDemo2 {
public static void main(String[] args) {
Animal dog = new Dog();
Animal cat = new Cat();
dog.makeSound(); // 输出: Dog barks.
cat.makeSound(); // 输出: Cat meows.
// 调用从父类继承的方法
((Dog) dog).breathe(); // 输出: Mammal is breathing.
((Cat) cat).breathe(); // 输出: Mammal is breathing.
}
}
//接口是一种规范,它定义了一组行为但不提供具体的实现。类可以实现接口,并根据需要来具体实现这些行为。
interface Animal {
void makeSound(); // 动物发出声音的方法
}
class Mammal {
public void breathe() {
System.out.println("Mammal is breathing.");
}
}
//继承允许一个类(子类)基于另一个类(父类)来构建,子类可以复用父类的属性和方法,并可以重写或扩展功能。
// 子类 Dog 实现接口并继承父类 Mammal
class Dog extends Mammal implements Animal {
@Override
public void makeSound() {
System.out.println("Dog barks.");
}
}
// 子类 Cat 实现接口并继承父类 Mammal
class Cat extends Mammal implements Animal {
@Override
public void makeSound() {
System.out.println("Cat meows.");
}
}

接下来完成Stream流操作练习,下面我将演示Java 8 Stream API的各种操作,包括过滤、映射、跳过、限制等常见操作。
- 准备工作:创建测试数据 首先创建一个包含学生对象的集合:
class Student {
private String name;
private int age;
private double score;
private String department;
public Student(String name, int age, double score, String department) {
this.name = name;
this.age = age;
this.score = score;
this.department = department;
}
// Getters and toString
public String getName() { return name; }
public int getAge() { return age; }
public double getScore() { return score; }
public String getDepartment() { return department; }
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", score=" + score +
", department='" + department + '\'' +
'}';
}
}
public class StreamPractice {
public static void main(String[] args) {
List<Student> students = Arrays.asList(
new Student("张三", 20, 85.5, "计算机"),
new Student("李四", 22, 90.0, "数学"),
new Student("王五", 21, 78.5, "计算机"),
new Student("赵六", 23, 92.5, "物理"),
new Student("钱七", 19, 88.0, "数学"),
new Student("孙八", 20, 76.0, "物理"),
new Student("周九", 22, 95.0, "计算机"),
new Student("吴十", 21, 89.5, "数学")
);
// 下面开始各种Stream操作练习
}
}
- 过滤操作(filter)
filter操作用于筛选集合中的元素,根据指定的条件进行过滤。
// 1. 过滤出计算机系的学生
List<Student> csStudents = students.stream()
.filter(s -> "计算机".equals(s.getDepartment()))
.collect(Collectors.toList());
System.out.println("计算机系学生: " + csStudents);
// 2. 过滤出成绩大于85分的学生
List<Student> goodStudents = students.stream()
.filter(s -> s.getScore() > 85)
.collect(Collectors.toList());
System.out.println("成绩>85的学生: " + goodStudents);
// 3. 过滤出年龄大于20且成绩大于80的学生
List<Student> age20Score80 = students.stream()
.filter(s -> s.getAge() > 20 && s.getScore() > 80)
.collect(Collectors.toList());
System.out.println("年龄>20且成绩>80的学生: " + age20Score80);
- 映射操作(map)
map操作用于将一种类型的值转换成另一种类型。
// 1. 提取所有学生姓名
List<String> names = students.stream()
.map(Student::getName)
.collect(Collectors.toList());
System.out.println("所有学生姓名: " + names);
// 2. 提取计算机系学生姓名
List<String> csNames = students.stream()
.filter(s -> "计算机".equals(s.getDepartment()))
.map(Student::getName)
.collect(Collectors.toList());
System.out.println("计算机系学生姓名: " + csNames);
// 3. 将学生转换为姓名-成绩字符串
List<String> nameScorePairs = students.stream()
.map(s -> s.getName() + ": " + s.getScore())
.collect(Collectors.toList());
System.out.println("姓名-成绩对: " + nameScorePairs);
总结
课堂作业
- 参考上述讲义,完成面向对象语法回顾练习,熟悉对象和集合 和Stream流操作!🎤
完成后,将练习代码截图提交到任务平台,直接作为实训分数!