diff --git a/BankAccount.java b/BankAccount.java
index 2e481fd..e2734c1 100644
--- a/BankAccount.java
+++ b/BankAccount.java
@@ -18,6 +18,7 @@ public class BankAccount {
}
public double getBalance() {
return balance;
+ }
public void deposit(double amount) {
if (amount > 0) {
this.balance += amount;
@@ -37,4 +38,4 @@ public class BankAccount {
}
}
}
-}
\ No newline at end of file
+
\ No newline at end of file
diff --git a/w2/DataCleaner.java b/w2/DataCleaner.java
index fd1da1a..25129ac 100644
--- a/w2/DataCleaner.java
+++ b/w2/DataCleaner.java
@@ -10,15 +10,15 @@ public class DataCleaner{
break;
}
if (data<=0 || data > 100) {
- Syztem.out.println("警告:发现越界数据[" + data + "], 已跳过");
+ System.out.println("警告:发现越界数据[" + data + "], 已跳过");
continue;
}
vaildSum +=data;
validCount++;
}
- if (vaildCount > 0) {
+ if (validCount > 0) {
double average = (double)
-validSum / vaildCount;
+vaildSum / validCount;
System.out.println("有效数据平均值:" + average);
} else {
System.out.println("无有效数据");
diff --git a/w4/ShapeCalculator.java b/w4/ShapeCalculator.java
index 50fdd4b..3480610 100644
--- a/w4/ShapeCalculator.java
+++ b/w4/ShapeCalculator.java
@@ -1,4 +1,4 @@
-package w5;
+package w4;
public class ShapeCalculator {
abstract class Shape {
diff --git a/w5/Shape.java b/w5/Shape.java
index adc8984..242d2f7 100644
--- a/w5/Shape.java
+++ b/w5/Shape.java
@@ -1,3 +1,28 @@
+package w5;
+
public abstract class Shape {
public abstract void draw();
-}
\ No newline at end of file
+}
+ class Circle extends Shape {
+ @Override
+ public void draw() {
+ System.out.println("绘制一个圆形");
+ }
+ }
+ class Rectangle extends Shape {
+ @Override
+ public void draw() {
+ System.out.println("绘制一个矩形");
+ }
+ }
+class ShapeTest {
+ public static void drawShape(Shape s) {
+ s.draw();
+ }
+ public static void main(String[] args) {
+ Shape circle = new Circle();
+ Shape rectangle = new Rectangle();
+ drawShape(circle);
+ drawShape(rectangle);
+ }
+ }
diff --git a/w7/SaveAerage.java b/w7/SaveAerage.java
new file mode 100644
index 0000000..10a2727
--- /dev/null
+++ b/w7/SaveAerage.java
@@ -0,0 +1,33 @@
+package w7;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+
+public class SaveAerage {
+ public static void main([String[] args]){
+ String filePath = "scores.txt";
+ int sum = 0;
+ int count = 0;
+ try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
+ String line;
+ while ((line = br.readLine()) != null) {
+ int score = Integer.parseInt(line.trim());
+ sum += score;
+ count++;
+ } catch (NumberFormatException e) {
+ System.out.printlm("数字格式错误,跳过无效数据: " + line);
+ }
+ }
+ if (count == 0) {
+ System.out.println("文件中没有有效成绩数据");
+ } else {
+ double average = (double) sum / count;
+ System.out.println("平均分: %.2f%n" ,average);
+ }
+ } catch (java.io.FileNotFoundException e) {
+ System.err.println("错误:文件不存在 —— " + filePath);
+ } catch (IOException e) {
+ System.err.println("错误:读取文件时发生异常 —— " + e.getMessage());
+ }
+}
diff --git a/大数据招聘爬虫/PaChong/README.md b/大数据招聘爬虫/PaChong/README.md
new file mode 100644
index 0000000..4c02cb0
--- /dev/null
+++ b/大数据招聘爬虫/PaChong/README.md
@@ -0,0 +1,146 @@
+# 大数据招聘爬虫项目
+
+## 项目简介
+这是一个适合新手学习的大数据招聘信息爬虫项目,使用Java语言开发,实现了爬取、处理和存储招聘信息的完整流程。
+
+## 技术栈
+- **开发语言**: Java 11+
+- **爬虫框架**: Jsoup 1.17.2
+- **构建工具**: Maven 3.6+
+- **数据存储**: CSV文件
+
+## 项目结构
+```
+bigdata-job-crawler/
+├── src/
+│ ├── main/
+│ │ ├── java/
+│ │ │ └── com/
+│ │ │ └── example/
+│ │ │ ├── crawler/
+│ │ │ │ └── JobCrawler.java # 爬虫核心类
+│ │ │ ├── processor/
+│ │ │ │ └── DataProcessor.java # 数据处理类
+│ │ │ ├── storage/
+│ │ │ │ └── DataStorage.java # 数据存储类
+│ │ │ └── Main.java # 主类
+│ │ └── resources/
+├── pom.xml # Maven配置文件
+├── bigdata_jobs.csv # 爬取结果文件
+└── README.md # 项目说明
+```
+
+## 环境要求
+- JDK 11或更高版本
+- Maven 3.6或更高版本
+
+## 安装步骤
+
+### 1. 安装JDK
+从Oracle官网下载并安装JDK 11+,配置JAVA_HOME环境变量。
+
+### 2. 安装Maven
+从Apache官网下载并安装Maven 3.6+,配置MAVEN_HOME环境变量。
+
+### 3. 验证环境
+```bash
+java -version
+mvn -version
+```
+
+## 使用方法
+
+### 1. 编译项目
+```bash
+mvn clean compile
+```
+
+### 2. 运行项目
+```bash
+# 方法1:使用java命令直接运行
+java -cp "target/classes;C:\Users\lenovo\.m2\repository\org\jsoup\jsoup\1.17.2\jsoup-1.17.2.jar" com.example.Main
+
+# 方法2:使用Maven exec插件(需要先在pom.xml中配置)
+mvn exec:java -Dexec.mainClass="com.example.Main"
+```
+
+### 3. 查看结果
+程序运行后,会在项目根目录生成 `bigdata_jobs.csv` 文件,包含爬取的职位信息。
+
+## 项目说明
+
+### 核心类介绍
+
+#### 1. JobCrawler.java
+负责爬取招聘信息,目前使用模拟数据进行演示。在实际项目中,可以替换为真实的爬取逻辑:
+- 使用Jsoup发送HTTP请求
+- 解析HTML页面,提取职位信息
+- 支持多种选择器,适应不同的网站结构
+
+#### 2. DataProcessor.java
+负责处理爬取的数据:
+- 清理空白字符
+- 标准化数据格式
+- 数据验证
+
+#### 3. DataStorage.java
+负责将处理后的数据保存为CSV文件:
+- 生成CSV格式文件
+- 支持自定义文件路径
+- 使用缓冲写入,提高性能
+
+#### 4. Main.java
+程序的主入口,协调整个爬虫流程:
+- 调用爬虫获取数据
+- 调用处理器清洗数据
+- 调用存储器保存数据
+
+## 当前功能
+- ✅ 爬取大数据相关职位信息
+- ✅ 数据清洗和处理
+- ✅ 数据存储为CSV文件
+- ✅ 支持多种职位信息字段(职位名称、薪资、公司、地点、经验、学历)
+
+## 注意事项
+1. **模拟数据**: 当前版本使用模拟数据进行演示,实际项目中需要替换为真实的爬取逻辑
+2. **反爬机制**: 实际爬取时需要注意网站的反爬机制,建议:
+ - 添加合理的请求延迟
+ - 使用代理IP池
+ - 设置合适的User-Agent
+3. **法律合规**: 爬取数据时请遵守相关法律法规和网站的使用条款
+
+## 扩展建议
+1. **支持更多网站**: 添加前程无忧、猎聘网等招聘平台的支持
+2. **数据可视化**: 使用JFreeChart等库生成图表
+3. **定时任务**: 使用Quartz实现定时爬取
+4. **数据库存储**: 使用MySQL等数据库替代CSV文件
+5. **数据分析**: 添加薪资分析、技能需求分析等功能
+
+## 常见问题
+
+### Q: 如何修改爬取的职位数量?
+A: 在JobCrawler.java中修改循环次数或条件。
+
+### Q: 如何添加新的招聘网站?
+A: 在JobCrawler.java中添加新的爬取方法,或修改现有方法以支持新的URL。
+
+### Q: CSV文件在哪里?
+A: 默认在项目根目录下,文件名为 `bigdata_jobs.csv`。
+
+### Q: 如何修改保存路径?
+A: 在Main.java中修改 `filePath` 变量的值。
+
+## 学习资源
+- [Jsoup官方文档](https://jsoup.org/)
+- [Maven官方文档](https://maven.apache.org/)
+- [Java官方文档](https://docs.oracle.com/en/java/)
+
+## 许可证
+本项目仅供学习交流使用。
+
+## 联系方式
+如有问题或建议,欢迎交流讨论。
+
+---
+
+**祝您学习愉快!**
\ No newline at end of file
diff --git a/大数据招聘爬虫/PaChong/bigdata_jobs.csv b/大数据招聘爬虫/PaChong/bigdata_jobs.csv
new file mode 100644
index 0000000..3aaa1a9
--- /dev/null
+++ b/大数据招聘爬虫/PaChong/bigdata_jobs.csv
@@ -0,0 +1,11 @@
+职位名称,薪资,公司名称,地点,经验要求,学历要求
+大数据开发工程师,20-35K,阿里巴巴,北京,3-5年,本科
+数据分析师,15-25K,腾讯,上海,1-3年,本科
+数据挖掘工程师,25-40K,百度,深圳,5-10年,硕士
+大数据架构师,30-50K,字节跳动,杭州,10年以上,硕士
+机器学习工程师,18-30K,京东,广州,3-5年,本科
+数据仓库工程师,20-35K,美团,北京,5-10年,硕士
+实时计算工程师,35-55K,华为,深圳,10年以上,博士
+大数据运维工程师,22-38K,小米,上海,3-5年,本科
+数据产品经理,25-45K,滴滴,杭州,5-10年,硕士
+算法工程师,28-50K,网易,北京,3-5年,硕士
diff --git a/大数据招聘爬虫/PaChong/jsoup-1.17.2.jar b/大数据招聘爬虫/PaChong/jsoup-1.17.2.jar
new file mode 100644
index 0000000..52ae16d
Binary files /dev/null and b/大数据招聘爬虫/PaChong/jsoup-1.17.2.jar differ
diff --git a/大数据招聘爬虫/PaChong/pom.xml b/大数据招聘爬虫/PaChong/pom.xml
new file mode 100644
index 0000000..743a911
--- /dev/null
+++ b/大数据招聘爬虫/PaChong/pom.xml
@@ -0,0 +1,38 @@
+
+
+ 4.0.0
+
+ com.example
+ bigdata-job-crawler
+ 1.0-SNAPSHOT
+
+
+ 11
+ 11
+ UTF-8
+
+
+
+
+ org.jsoup
+ jsoup
+ 1.17.2
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+ 11
+ 11
+
+
+
+
+
\ No newline at end of file
diff --git a/大数据招聘爬虫/PaChong/src/main/java/com/example/Main.java b/大数据招聘爬虫/PaChong/src/main/java/com/example/Main.java
new file mode 100644
index 0000000..b27c14a
--- /dev/null
+++ b/大数据招聘爬虫/PaChong/src/main/java/com/example/Main.java
@@ -0,0 +1,53 @@
+package com.example;
+
+import com.example.crawler.BaseCrawler;
+import com.example.crawler.MockCrawler;
+import com.example.crawler.ZhaopinCrawler;
+import com.example.crawler.Job51Crawler;
+import com.example.processor.DataProcessor;
+import com.example.storage.DataStorage;
+import java.util.List;
+import java.util.Map;
+
+public class Main {
+ public static void main(String[] args) {
+ try {
+ // 创建不同的爬虫实例(多态:使用父类引用指向子类对象)
+ BaseCrawler[] crawlers = {
+ new MockCrawler(5), // 模拟数据爬虫,爬取5个职位
+ new ZhaopinCrawler(3), // 智联招聘爬虫,爬取3个职位
+ new Job51Crawler(4) // 前程无忧爬虫,爬取4个职位
+ };
+
+ // 数据处理器和存储
+ DataProcessor processor = new DataProcessor();
+ DataStorage storage = new DataStorage();
+
+ System.out.println("====== 大数据招聘爬虫系统 ======");
+ System.out.println();
+
+ // 遍历所有爬虫,执行爬取(多态:调用子类的crawlJobs方法)
+ for (BaseCrawler crawler : crawlers) {
+ System.out.println("正在使用 " + crawler.getName() + " 爬取数据...");
+
+ // 1. 爬取数据
+ List