Skip to content

Commit 46d7088

Browse files
authored
Merge pull request #46 from sunjunnan79/master
fix:修复分布式锁部分的删除线缺失问题
2 parents d2c8f08 + 9e1e02c commit 46d7088

File tree

2 files changed

+142
-11
lines changed

2 files changed

+142
-11
lines changed

docs/be/freshmen_fall/freshmen_fall.md

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -554,8 +554,11 @@ Cookie、Session、Token、JWT的作用和区别。
554554
学习要求:
555555

556556
- 熟悉[Gin](https://gin-gonic.com/zh-cn/)语法,学会使用gin进行路由的注册和端口的监听
557+
- 学会使用gin编写中间件
557558
- 了解gin与原生net/http的区别
558559

560+
561+
559562
### Gorm
560563

561564
学习要求:
@@ -567,6 +570,42 @@ Cookie、Session、Token、JWT的作用和区别。
567570

568571
1. 将week8任务使用mvc架构重写
569572

573+
2. 找到以下中间件的错误之处
574+
575+
```
576+
// AdminAuth 中间件
577+
func AdminAuth() gin.HandlerFunc {
578+
return func(c *gin.Context) {
579+
// 放行设置——不需要登录的 URL
580+
loginExceptURL := map[string]interface{}{
581+
"/captcha": 0,
582+
"/login": 1,
583+
}
584+
585+
svc := service.New(c.Request.Context())
586+
587+
// 如果当前请求路径既不在白名单里,又不是静态文件
588+
if !utils.InStringArray(c.Request.URL.Path, loginExceptURL) &&
589+
!strings.Contains(c.Request.URL.Path, "/static/") {
590+
591+
// 检查管理员登录状态
592+
if !svc.CheckAdminLogin(c) {
593+
// 跳转登录页,方式:301(永久移动),308(永久重定向), 307(临时重定向)
594+
c.Redirect(http.StatusTemporaryRedirect, "/login")
595+
return
596+
}
597+
}
598+
599+
// 将管理员 UID 保存到请求上下文,方便后续处理
600+
c.Set("adminLoginUid", svc.GetAdminLoginUid(c))
601+
602+
// 前置中间件执行完毕,继续后续处理
603+
c.Next()
604+
}
605+
}
606+
607+
```
608+
570609

571610

572611
## week10 流式响应与GRPC
@@ -667,9 +706,9 @@ go语言有一套经常被人嘲笑的错误处理机制,太过重复以至于
667706

668707
1. 使用本周学习知识构建一个基于gin的日志middleware,要求能够同时实现:捕获错误,记录日志,数据埋点(当然你也可以构建多个中间件分别实现不同的功能
669708

670-
# 大一上年终项目
709+
# 大一上期末任务
671710

672-
综合运用各种**人际关系**以及**AI工具**组件一个完整的产品开发队伍,完成一个miniProject
711+
综合运用各种**人际关系**以及**AI工具**组建一个完整的产品开发队伍,完成一个miniProject
673712

674713
参考AI生产力工具:
675714

docs/be/freshmen_spring/freshmen_spring.md

Lines changed: 101 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -333,9 +333,9 @@
333333

334334
### 任务
335335

336-
1. 木犀外卖秒杀系统
336+
1. 木犀外卖秒杀系统1.0
337337

338-
现在黑马程序员找到了你,让你去实现一个go版本的苍穹外卖,你为了证明自己是IT黑马英勇无畏的接下了这个任务
338+
现在~~黑马程序员~~找到了你,让你去实现一个go版本的~~苍穹外卖~~,你为了证明自己是~~IT黑马~~,英勇无畏的接下了这个任务
339339

340340
要求:
341341

@@ -352,19 +352,111 @@ post /register //用于注册账号
352352

353353
## week11 分布式事务
354354

355-
// TODO
355+
### 事务
356356

357-
## week12 搜索引擎
357+
1. 什么是事务?
358+
2. ACID四大特性
358359

359-
// TODO
360+
### DTM
360361

361-
## week13 负载均衡与限流
362+
1. 什么是分布式事务,有什么使用场景?
363+
2. 核心概念包括但不限于幂等性,事务模型(重点关注TCC,Saga)
364+
3. 了解[dtm](https://github.com/dtm-labs/dtm)库的使用
362365

363-
// TODO
366+
### 拓展学习:
364367

365-
## week14 微服务架构
368+
1. mysql中InnoDB引擎是[如何实现事务的](https://mp.weixin.qq.com/s/dEgTmNioqjx5IyDTX4KE4g)
369+
2. [seat-go](https://github.com/apache/incubator-seata-go)了解seat是什么?和dtm有什么区别?
370+
3. 如何实现一个[分布式事务框架](https://mp.weixin.qq.com/s/aTQ6mgVUbUqn69NLmXh_7A)
371+
372+
### 任务
373+
374+
1. 木犀秒杀系统2.0
375+
376+
由于你做出来的秒杀系统好评如潮,被~~京东外卖,美团,饿了么~~等广大电商平台积极采用,在巨大的流量冲击下你的服务崩塌了,~~黑马程序员~~希望你能够出一个微服务的版本,让他们能够更好投入云原生的怀抱。
377+
378+
要求:
379+
380+
- 将商品服务和支付服务分离,包含至少三个服务gateway,pay,item
381+
- 在gateway中使用分布式锁+事务来完成商品秒杀的控制
382+
383+
## week12 搜索引擎
384+
385+
### ElasticSearch
386+
387+
1. [elasticsearch](https://www.elastic.co/docs/solutions/search/run-elasticsearch-locally)核心概念,使用场景,基础语法
388+
2. 搜索业务实现逻辑
389+
390+
### 拓展学习:
391+
392+
1. 利用canal实现mysql,es读写分离
393+
394+
### 任务
395+
396+
1. 木犀秒杀系统3.0
397+
398+
你的系统写的太过完美,导致各大商家都打算迁移到你的系统上去,现在需要接入各大商家原本的数据库并实现商品的搜索功能
399+
400+
要求:
401+
402+
- 爬取任意商家的一定数量商品信息(不少于3000个)
403+
404+
- 将爬取的数据写入es
405+
406+
- 能够根据商品名称和描述进行全文搜索
407+
408+
409+
410+
## week13 限流策略与流量兜底
411+
412+
### 限流策略:
413+
414+
1. 令牌桶限流
415+
2. 滑动窗口限流
416+
417+
### 流量兜底:
418+
419+
1. 流量降级(降级的策略有哪些?)
420+
2. [singleFight](https://github.com/golang/sync/tree/master/singleflight)
421+
422+
### 拓展任务
423+
424+
1. 使用go语言编写一个简单的网关,具备基本的限流能力,可以参考nginx,caddy,Envoy等常见网关
425+
426+
### 参考资料
427+
428+
| redis令牌桶限流库 | [redis_rate](https://github.com/go-redis/redis_rate) |
429+
| ----------------- | ---------------------------------------------------- |
430+
| sync仓库 | [sync](https://github.com/golang/sync) |
431+
| 开源网关参考 | https://github.com/alibaba/higress |
432+
433+
### 任务:
434+
435+
1. 木犀秒杀系统4.0
436+
437+
恭喜你,你的秒杀系统已经被几乎所有电商企业采用。为了迎接即将到来的618,黑马程序员再次请你出山为秒杀系统增加限流措施
438+
439+
要求:
440+
441+
1. 增加限流中间件LimitMiddleware实现对流量的限流(限流对象可以自己选择,合理即可)
442+
2. 增加获取商品列表的接口同时为这个接口增加singlefight
443+
3. 为商品秒杀中因为分布式锁长时间等待的用户进行流量降级
444+
445+
## 大一下期末任务
446+
447+
### 任务
366448

367449
基于本学期所学提交一个微服务的基本模板
368450

369-
## 待续...
451+
要求如下:
452+
453+
1. 符合DDD设计理念
454+
2. 符合微服务设计理念
455+
3. 至少包括注册中心,配置中心,数据库等
456+
4. 上传到github仓库
457+
458+
## 参考资料
370459

460+
- [Go-micro](https://github.com/micro/go-micro)
461+
- [Go-zero](https://go-zero.dev/)
462+
- [Kratos](https://go-kratos.dev/docs/)

0 commit comments

Comments
 (0)