尚硅谷SVN高级视频---789it.top/13538/
课程体系设计
一、基础语法阶段(1-3周)
1.1 Java核心语法
Java
// 基础语法示例:类与对象
public class HelloWorld {
public static void main(String[] args) {
// 变量与数据类型
int age = 25;
double price = 19.99;
String name = "张三";
// 控制结构
if (age >= 18) {
System.out.println(name + "已成年");
} else {
System.out.println(name + "未成年");
}
// 循环结构
for (int i = 0; i < 5; i++) {
System.out.println("当前价格:" + (price + i));
}
}
}
1.2 面向对象编程
Java
// 封装、继承、多态完整示例
class Animal {
private String name; // 封装
public Animal(String name) {
this.name = name;
}
public void eat() {
System.out.println(name + "正在吃东西");
}
}
class Dog extends Animal { // 继承
public Dog(String name) {
super(name);
}
@Override
public void eat() { // 多态
System.out.println("狗狗用狗盆吃饭");
}
public void bark() {
System.out.println("汪汪叫");
}
}
二、Java进阶阶段(4-6周)
2.1 集合框架
Java
import java.util.*;
public class CollectionDemo {
public static void main(String[] args) {
// List接口
List<String> arrayList = new ArrayList<>();
arrayList.add("Java");
arrayList.add("Python");
Collections.sort(arrayList); // 排序
// Map接口
Map<String, Integer> hashMap = new HashMap<>();
hashMap.put("Apple", 10);
hashMap.put("Banana", 5);
// 遍历Map
for (Map.Entry<String, Integer> entry : hashMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
2.2 IO与多线程
Java
// 文件读写与多线程结合示例
public class FileThreadDemo {
public static void main(String[] args) {
// 创建线程池
ExecutorService executor = Executors.newFixedThreadPool(3);
// 多线程处理文件
for (int i = 1; i <= 5; i++) {
final int fileNum = i;
executor.execute(() -> {
try {
// 读取文件
BufferedReader reader = new BufferedReader(
new FileReader("input" + fileNum + ".txt"));
// 写入文件
BufferedWriter writer = new BufferedWriter(
new FileWriter("output" + fileNum + ".txt"));
String line;
while ((line = reader.readLine()) != null) {
writer.write(line.toUpperCase());
writer.newLine();
}
reader.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
});
}
executor.shutdown();
}
}
三、数据库与JDBC(7-8周)
3.1 MySQL实战
Sql
-- 电商数据库设计示例
CREATE TABLE users (
user_id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE products (
product_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) CHECK (price > 0),
stock INT DEFAULT 0,
category_id INT,
FOREIGN KEY (category_id) REFERENCES categories(category_id)
);
3.2 JDBC编程
Java
// 使用PreparedStatement防止SQL注入
public class JdbcDemo {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/shop";
String user = "root";
String password = "123456";
try (Connection conn = DriverManager.getConnection(url, user, password)) {
// 查询示例
String sql = "SELECT * FROM products WHERE price > ? AND stock > ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setDouble(1, 100.0);
pstmt.setInt(2, 0);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("name") + ": " + rs.getDouble("price"));
}
// 事务处理示例
conn.setAutoCommit(false);
try {
// 执行多个更新操作
updateProduct(conn, 101, 99.99);
updateInventory(conn, 101, -1);
conn.commit();
} catch (SQLException e) {
conn.rollback();
e.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
四、Web开发阶段(9-12周)
4.1 Servlet与JSP
Java
// 用户登录Servlet示例
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
UserService userService = new UserService();
boolean isValid = userService.validateUser(username, password);
if (isValid) {
HttpSession session = request.getSession();
session.setAttribute("user", username);
response.sendRedirect("welcome.jsp");
} else {
request.setAttribute("error", "用户名或密码错误");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
}
4.2 Spring框架
Java
// Spring MVC控制器示例
@Controller
@RequestMapping("/products")
public class ProductController {
@Autowired
private ProductService productService;
@GetMapping
public String listProducts(Model model) {
List<Product> products = productService.getAllProducts();
model.addAttribute("products", products);
return "product/list";
}
@PostMapping
public String addProduct(@Valid Product product, BindingResult result) {
if (result.hasErrors()) {
return "product/add";
}
productService.saveProduct(product);
return "redirect:/products";
}
}
五、项目实战阶段(13-16周)
5.1 电商系统开发
核心模块:
- 用户中心(注册/登录/权限)
- 商品管理(CRUD/搜索/分类)
- 购物车与订单系统
- 支付对接(模拟)
- 后台管理系统
Java
// 订单服务层示例
@Service
public class OrderServiceImpl implements OrderService {
@Autowired
private OrderRepository orderRepo;
@Autowired
private InventoryService inventoryService;
@Transactional
public Order createOrder(Cart cart, User user) {
// 检查库存
for (CartItem item : cart.getItems()) {
if (!inventoryService.hasStock(item.getProduct(), item.getQuantity())) {
throw new InventoryException("商品库存不足");
}
}
// 创建订单
Order order = new Order();
order.setUser(user);
order.setStatus(OrderStatus.PENDING);
// 保存订单
Order savedOrder = orderRepo.save(order);
// 扣减库存
for (CartItem item : cart.getItems()) {
inventoryService.reduceStock(item.getProduct(), item.getQuantity());
}
return savedOrder;
}
}
5.2 秒杀系统设计
技术要点:
Java
// 秒杀接口优化示例
@RestController
public class SeckillController {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
// 使用RateLimiter限流
private RateLimiter rateLimiter = RateLimiter.create(1000); // 每秒1000个请求
@PostMapping("/seckill")
public Result seckill(@RequestParam Long productId) {
// 1. 限流控制
if (!rateLimiter.tryAcquire()) {
return Result.error("秒杀太火爆,请稍后再试");
}
// 2. Redis预减库存
Long stock = redisTemplate.opsForValue().decrement("seckill:stock:" + productId);
if (stock < 0) {
redisTemplate.opsForValue().increment("seckill:stock:" + productId);
return Result.error("商品已售罄");
}
// 3. 消息队列异步处理
SeckillMessage message = new SeckillMessage(productId, getUser());
rabbitTemplate.convertAndSend("seckillExchange", "seckill", message);
return Result.success("秒杀请求已接收");
}
}
就业冲刺阶段
1. 简历优化工作坊
优秀项目描述示例:
PlainText
• 开发电商平台核心订单系统,采用Spring Cloud微服务架构,实现日均10万+订单处理
• 使用Redis缓存热点数据,QPS从500提升至5000,响应时间从200ms降至50ms
• 设计分布式事务解决方案,保证订单创建与库存扣减的一致性,异常场景恢复成功率99.9%
2. 面试模拟训练
高频技术问题:
- HashMap实现原理及扩容机制
- JVM内存模型与GC调优
- MySQL索引优化实战
- Spring循环依赖解决策略
- 分布式ID生成方案对比
3. 企业级开发规范
Java
// 符合阿里开发规范的代码示例
public class OrderServiceImpl implements OrderService {
private static final Logger logger = LoggerFactory.getLogger(OrderServiceImpl.class);
/**
* 创建订单
* @param orderDTO 订单传输对象
* @return 订单ID
* @throws BizException 业务异常
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Long createOrder(OrderDTO orderDTO) throws BizException {
// 参数校验
ValidateUtils.validate(orderDTO);
try {
// 业务逻辑
Order order = convertToEntity(orderDTO);
orderDao.save(order);
return order.getId();
} catch (DaoException e) {
logger.error("创建订单失败, 参数: {}", JSON.toJSONString(orderDTO), e);
throw new BizException("订单创建失败");
}
}
}
课程特色
- 真实项目驱动:4个完整商业项目实战
- 企业级代码规范:严格遵循阿里Java开发手册
- 技术深度覆盖:从基础语法到分布式架构
- 就业直通车:简历指导+模拟面试+内推机会
学习路线图
| 阶段 | 主要内容 | 时长 | 产出物 |
|---|---|---|---|
| 基础语法 | JavaSE核心API | 3周 | 控制台小程序 |
| 高级特性 | 集合/IO/多线程/网络 | 3周 | 文件管理器工具 |
| 数据库 | MySQL/JDBC/事务 | 2周 | 银行账户管理系统 |
| Web开发 | Servlet/Spring/MVC | 4周 | 博客系统 |
| 项目实战 | 电商系统/秒杀系统 | 4周 | 可上线项目 |
| 就业冲刺 | 面试技巧/简历优化 | 2周 | 优质简历 |
通过本课程系统学习,学员将获得:
- 10万+行Java编码经验
- 4个完整项目开发经历
- 解决复杂业务问题的能力
- 符合大厂要求的工程素养