天机学堂—项目总览和基建

总览

天机学堂是一个基于微服务架构的生产级在线教育项目。

项目亮点

技术架构

环境搭建

为了模拟真实开发环境,我们准备了一台虚拟机,在其中安装了各种各样的公共服务和组件。

Jenkins 是一个开源的持续集成(Continuous Integration)工具,用于自动化构建、测试和部署软件项目。工作流程如下:
 

  • 开发人员将代码提交到版本控制系统(如 Git)中。
  • Jenkins 定期轮询版本控制系统,或者通过 Webhook 监听代码变更。
  • 当检测到代码变更时,Jenkins 根据配置的触发条件启动相应的任务。
  • 任务执行构建步骤,例如编译代码、运行测试。
  • 构建完成后,Jenkins 可以生成构建报告、通知相关人员,并将构建产物部署到指定环境。

在虚拟机中基于Jenkins实现了持续集成后, 即可查看控制台:

接下来我导入了vm文件,并且改了VMware的虚拟网卡跟虚拟机静态ip同网段,查看docker发现东西应有尽有:

虚拟机启动后访问Jenkins,微服务面板一目了然:

代码拉取

启动虚拟机后运行了git私服,输入下面的命令得到代码:

git clone http://192.168.150.101:10880/tjxt/tianji.git -b lesson-init
 

打开发现运行时配置如下:

进一步分析项目结构:

实体类规范:

    1. DTO:数据传输对象,在客户端与服务端间传递数据,例如微服务之间的请求参数和返回值、前端提交的表单
    2. PO:持久层对象,与数据库表一一对应,作为查询数据库时的返回值
    3. VO:视图对象,返回给前端用于封装页面展示的数据
    4. QUERY:查询对象,一般是用于封装复杂查询条件

配置文件:

除了基本配置以外,其它的配置都放在了Nacos中共享,包括两大类:

  1. 共享的配置
  2. 微服务中可能会根据业务变化的配置

下面目录只是部分 ├─天机学堂day05 │ 01-回顾及作业.mp4 │ 02-问题及回答相关接口表结构.mp4 │ 03-新增修改互动问题接口实现.mp4 │ 04-用户端分页查询问题列表-1.mp4 │ 05-用户端分页查询问题列表-2及测试.mp4 │ 06-用户端查询问题详情.mp4 │ 07-管理端分页查询问题列表-1.mp4 │ 08-管理端分页查询问题列表-2.mp4 │ ├─天机学堂day06 │ 01-回顾及新增回答或评论步骤.mp4 │ 02-新增回答或评论实现及分页查询回答评论以及测试.mp4 │ 03-点赞业务介绍及库表服务搭建.mp4 │ 04-点赞及取消赞步骤.mp4 │ 04-点赞相关接口实现.mp4 │ 05-点赞相关接口测试.mp4 │ 06-feign降级.mp4 │ 07-点赞接口改进思路.mp4 │ 08-接口改造-点赞业务改造.mp4 │ 09-接口改造-定时任务及批量查询点赞状态.mp4 │ ├─天机学堂day07 │ 01-回顾.mp4 │ 02-需求分析及表结构.mp4 │ 03-签到思路分析及bitmap-setbit命令.mp4 │ 04-bitmap-bitfield命令及对应的java代码练习.mp4 │ 05-bitmap补充.mp4 │ 06-签到-1.mp4 │ 07-签到-2.mp4 │ 08-新增积分.mp4 │ 09-查询我的今日积分情况.mp4 │ ├─天机学堂day08 │ 01-回顾.mp4 │ 02-作业-查询我的签到记录查询赛季列表.mp4 │ 03-实时排行榜-利用redis的zset结构记录实时排行榜.mp4 │ 04-查询积分榜-1.mp4 │ 05-查询积分榜-2及测试.mp4 │ 06-历史排行榜思路.mp4 │ 07-历史排行榜-定时任务建表.mp4 │ 08-分区补充.mp4 │ 09-分布式任务调度介绍.mp4 │ 10-xxl-job入门demo及改造历史排行榜定时建表任务.mp4 │ ├─天机学堂day09 │ 01-回顾.mp4 │ 02-MP动态表名插件及持久化上赛季排行榜数据到db步骤.mp4 │ 03-持久化上赛季数据到db实现.mp4 │ 04-xxl-job分片广播及删除erdis中上赛季榜单数据.mp4 │ 05-xxl-job任务链说明.mp4 │ 06-优惠劵需求及环境搭建.mp4 │ 07-新增优惠劵-管理端.mp4 │ 08-分页条件查询优惠劵-管理端.mp4 │ 09-发放优惠劵.mp4 │ ├─天机学堂day10 │ 01-回顾.mp4 │ 02-兑换码分析.mp4 │ 03-兑换码分析2.mp4 │ 04-发行优惠劵异步生成兑换码步骤.mp4 │ 05-生成兑换码实现及测试.mp4 │ 06-async注解异步生成兑换码及测试.mp4 │ 07-查询发放中的优惠劵-1.mp4 │ 08-查询发放中的优惠劵-2及测试.mp4 │ 09-用户领取优惠劵及测试.mp4 │ 10-兑换码兑换优惠劵及测试.mp4 │ ├─天机学堂day11 │ 01-回顾.mp4 │ 02-回顾2.mp4 │ 03-超卖及锁失效问题.mp4 │ 04-事务边界事务失效问题.mp4 │ 05-简单分布式改造及问题.mp4 │ 06-Redisson使用.mp4 │ 07-aop例子.mp4 │ 08-通用的分布式锁组件.mp4 │ ├─天机学堂day12 │ 01-回顾-1.mp4 │ 02-回顾-2.mp4 │ 03-异步领卷的思路.mp4 │ 04-异步领卷-1.mp4 │ 05-异步领卷-2
### 天机学堂的学习资料与IT课程分析 天机学堂作为一个综合性在线教育平台,提供了丰富的学习资源,尤其是在IT领域有着较为全面的覆盖。以下是关于天机学堂及其IT课程的一些核心信息: #### 1. **课程状态变化** 用户的课程从购买到完成学习通常会经历多个阶段的状态变化。这些状态可能包括但不限于以下几种: - 已购买 (Purchased): 用户成功支付后进入此状态。 - 待开始 (Pending Start): 购买完成后尚未启动学习。 - 进行中 (In Progress): 用户已经开始学习该课程。 - 暂停 (Paused): 用户主动暂停学习进度。 - 完成 (Completed): 用户完成了所有课程内容并通过考核。 上述状态的变化可以有效帮助用户跟踪自己的学习进程[^1]。 #### 2. **学习计划的关键要素** 学习计划对于提升用户体验至关重要,其关键组成部分一般如下: - 计划名称:描述具体目标或主题。 - 时间安排:设定每日/每周的具体学习时间。 - 阶段划分:将整个课程分为若干模块或章节。 - 提醒机制:通过邮件、短信等方式提醒用户按时完成任务。 - 成就记录:显示已完成的任务以及获得的成绩单或其他奖励形式。 #### 3. **数据库表设计建议** 为了存储并管理“我的课程”,可考虑创建一张名为 `my_courses` 的表格,包含以下几个主要字段: | 字段名 | 数据类型 | 描述 | |----------------|-------------|--------------------------| | id | INT PRIMARY KEY AUTO_INCREMENT | 唯一标识符 | | user_id | INT | 关联至用户ID | | course_id | INT | 所属课程ID | | status | VARCHAR(50) | 当前课程状态(Purchased, In_Progress...) | | start_date | DATE | 开始日期 | | end_date | DATE | 结束日期(预计或实际) | | progress | DECIMAL(5,2) | 学习进度百分比 | | last_accessed | TIMESTAMP | 上次访问的时间戳 | 这种结构能够满足基本需求,并支持扩展更多属性以适应未来业务发展需要。 #### 4. **天机学堂的特点与其他对比** 相较于其他知名在线教育机构如华文慕课专注汉语文化教学、运营派聚焦市场营销技能培养等特定方向而言,天机学堂更倾向于提供多元化且深入的技术类培训项目,特别是针对软件开发工程师群体量身定制的各种前沿技术教程。例如Python编程入门与高级应用实践系列视频讲座;云计算架构师认证备考指南等内容均受到广泛好评[^2]。 然而,在某些特殊场景下可能会遇到一些技术难题比如利用MyBatis Plus框架下的QueryWrapper方法执行批量删除操作时可能出现异常情况,则需仔细排查SQL语句构建逻辑是否存在错误之处[^3]。 ```java // 正确实现方式示例 int result = lessonMapper.delete(new QueryWrapper<LearningLesson>() .lambda() .eq(LambdaQueryWrapper::getUserId, userId) .in(LambdaQueryWrapper::getCourseId, courseIds)); if(result > 0){ System.out.println("删除成功!"); } else { System.err.println("未找到符合条件的数据"); } ``` 以上代码片段展示了如何修正原生写法中存在的潜在问题从而顺利完成预期功能调用过程。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值