基于SpringBoot+Vue前后端分离的在线教育平台项目
基于SpringBoot+Vue前后端分离的在线教育平台项目
赠给有缘人,希望能帮助到你!也请不要吝惜你的大拇指,你的Star、点赞将是对我最大的鼓励与支持!
开源传送门:
- 后台:Gitee | GitHub
- 管理员前端:Gitee | GitHub
- 讲师前端:Gitee | GitHub
- 学员前端(首页):Gitee | GitHub
演示DEMO传送门:
- 学员端(首页):oeapp
- 管理员端:oeadmin
- 讲师端:oeteacher
前言
本项目是笔者毕设作品,肝了一周多时间赶出来的,后台写得比较垃圾,前端界面自我感觉还行,但笔者前端只是打辅助的。总的参考价值因人而言。
- 随心所欲,只为功能实现,没有规范,没有优化,不谈安全;
- Service层没有接口,实现直接返回Controller结果,因而造成代码大量耦合,拓展性极差;
- MyBatis-Plus直接面向对象Dao操作,没有写SQL语句,业务逻辑全部使用JAVA代码完成;
- 仍存在较多缺陷,但显示到的菜单功能基本都是完整的,除了支付功能。
关于项目演示:出于多种考虑,演示DEMO中关于修改的操作全部禁用。如果需要了解完整的项目演示效果,请本地测试运行项目,自行在配置文件配置阿里云OSS和VoD相关选项。
鸣谢:部分界面设计元素参考腾讯课堂与龙果学院。
项目介绍
基于SpringBoot+Vue前后端分离的在线教育平台项目,单体应用服务架构。
系统共设计三种角色:管理员、讲师和学员,三个角色分别对应一个操作端。也就是本系统1个后台项目,三个前端项目。管理员端没有引入角色和权限管理,只有一个角色。
已实现的功能列表展示:
管理员端:
- 数据统计
- 轮播图管理
- 课程管理
- 课程列表
- 课程审核
- 分类管理
- 讲师管理
- 讲师列表
- 讲师审核
- 学员管理
- 用户管理
- 订单管理
讲师端:
- 发布课程
- 课程管理
- 评论管理
- 消息接收
学员端(网站首页):
登录注册
分类与轮播图展示
课程列表展示
课程搜索(关键词、分类、讲师)
课程详情(播放器、课程介绍、评论、讲师简介、订阅)
订阅订单
讲师入驻
技术选型
开发环境
- 工具:IntelliJ IDEA
- JDK 1.8
- 数据库:MySQL 8.0.15
- 项目构建:后端Maven、前端 webpack
后端
- Web框架:Spring Boot
- 字段校验:Spring Validation
- 持久层:MyBatis-Plus
- 接口文档:Swagger2
- Lombok:请确保您的 IDE 安装了此插件
- 缓存:Redis
- 工具:Hutool
- 资源存储:阿里云对象存储OSS
- 课程视频点播:阿里云视频点播VoD
前端
- Vue.js2 全家桶
- Element-UI
- vue-admin-template 后台模板
- axios
- 图表:v-charts(ECharts)
- 富文本编辑器:wangEditor
- 等等
数据库设计
数据库: online_edu,统一编码:utf8mb4
表格: acl_permission
索引:
名称 | 类型 | 属性 | 备注 |
---|---|---|---|
主索引 | id | unique |
字段:
名称 | 类型 | 空 | 默认值 | 属性 | 备注 |
---|---|---|---|---|---|
id | int(11) unsigned | 否 | <auto_increment> | 菜单权限表 | |
pid | int(11) unsigned | 否 | 父级id | ||
type | tinyint(4) unsigned | 否 | 1 | 菜单类型,0顶部菜单、1聚合菜单、2页面菜单、3接口 | |
name | varchar(255) | 是 | 路由名称或接口名称 | ||
path | varchar(255) | 否 | 菜单路径(以http开头时,视为打开外部链接) 或 请求接口的地址 | ||
component | varchar(255) | 是 | 菜单组件,只有叶子菜单才可配置 | ||
meta | varchar(1023) | 是 | <空> | 菜单的route.meta配置项,json格式 | |
admin | tinyint(1) unsigned | 否 | 0 | 0默认,1只有超级管理员才能使用 | |
enable | tinyint(1) unsigned | 否 | 1 | 是否启用,0否1是 | |
update_time | datetime | 是 | <INSERT-TimeStamp> | 更新时间 | |
create_time | datetime | 是 | <INSERT-TimeStamp> | 创建时间 |
表格: acl_role
备注: 角色
索引:
名称 | 类型 | 属性 | 备注 |
---|---|---|---|
主索引 | id | unique |
字段:
名称 | 类型 | 空 | 默认值 | 属性 | 备注 |
---|---|---|---|---|---|
id | int(11) unsigned | 否 | <auto_increment> | 角色id | |
name | varchar(31) | 否 | 角色名称 | ||
permission_id | varchar(2048) | 是 | 角色具有的权限ID串 | ||
enable | tinyint(1) | 是 | 1 | 是否启用,0否1是 | |
update_time | datetime | 是 | <INSERT-TimeStamp> | 更新时间 | |
create_time | datetime | 是 | <INSERT-TimeStamp> | 创建时间 |
表格: acl_user
备注: 管理员用户表
索引:
名称 | 类型 | 属性 | 备注 |
---|---|---|---|
主索引 | id | unique | |
uk_username | username | unique |
字段:
名称 | 类型 | 空 | 默认值 | 属性 | 备注 |
---|---|---|---|---|---|
id | int(11) unsigned | 否 | <auto_increment> | 用户id | |
username | varchar(31) | 否 | 用户名 | ||
password | varchar(255) | 否 | 密码 | ||
nickname | varchar(31) | 是 | 昵称 | ||
avatar | varchar(1023) | 是 | 用户头像 | ||
mark | varchar(255) | 是 | 备注 | ||
sign | varchar(255) | 是 | 用户签名 | ||
roleId | int(11) unsigned | 否 | 角色id | ||
enable | tinyint(1) unsigned | 否 | 1 | 是否启用,0否1是 | |
update_time | datetime | 是 | <INSERT-TimeStamp> | 更新时间 | |
create_time | datetime | 是 | <INSERT-TimeStamp> | 创建时间 |
表格: edu_chapter
备注: 课程章节表
索引:
名称 | 类型 | 属性 | 备注 |
---|---|---|---|
主索引 | id | unique |
字段:
名称 | 类型 | 空 | 默认值 | 属性 | 备注 |
---|---|---|---|---|---|
id | int(11) unsigned | 否 | <auto_increment> | 章节ID | |
course_id | int(11) unsigned | 否 | 课程ID | ||
title | varchar(63) | 否 | 章节名称 | ||
sort | int(11) | 是 | 0 | 显示排序 | |
update_time | datetime | 是 | <INSERT-TimeStamp> | 更新时间 | |
create_time | datetime | 是 | <INSERT-TimeStamp> | 创建时间 |
表格: edu_chapter_tmp
备注: 课程章节临时表(用于存放二次修改的数据)
索引:
名称 | 类型 | 属性 | 备注 |
---|---|---|---|
主索引 | id | unique | |
idx_id | oid |
字段:
名称 | 类型 | 空 | 默认值 | 属性 | 备注 |
---|---|---|---|---|---|
id | bigint(20) unsigned | 否 | 0 | 主键 | |
oid | int(11) unsigned | 是 | 0 | 原章节ID | |
course_id | int(11) unsigned | 否 | 课程ID | ||
title | varchar(63) | 否 | 章节名称 | ||
sort | int(11) | 是 | 0 | 显示排序 | |
update_time | datetime | 是 | <INSERT-TimeStamp> | 更新时间 | |
create_time | datetime | 是 | <INSERT-TimeStamp> | 创建时间 |
表格: edu_comment
备注: 课程评论表
索引:
名称 | 类型 | 属性 | 备注 |
---|---|---|---|
主索引 | id | unique | |
idx_course_id | course_id | ||
idx_member_id | member_id | ||
idx_member_id_course_id | member_id, course_id | ||
idx_teacher_id | teacher_id |
字段:
名称 | 类型 | 空 | 默认值 | 属性 | 备注 |
---|---|---|---|---|---|
id | int(11) unsigned | 否 | <auto_increment> | 评论ID | |
course_id | int(11) unsigned | 否 | 课程id | ||
teacher_id | int(11) unsigned | 否 | 讲师id | ||
member_id | int(11) unsigned | 否 | 会员id | ||
content | varchar(1023) | 是 | 评论内容 | ||
mark | double unsigned | 是 | 5 | 评分(满分5.00) | |
status | tinyint(1) unsigned | 是 | <空> | 评论状态 0审核中 1通过 | |
update_time | datetime | 是 | <INSERT-TimeStamp> | 更新时间 | |
create_time | datetime | 是 | <INSERT-TimeStamp> | 创建时间 |
表格: edu_course
备注: 课程表
索引:
名称 | 类型 | 属性 | 备注 |
---|---|---|---|
主索引 | id | unique |
字段:
名称 | 类型 | 空 | 默认值 | 属性 | 备注 |
---|---|---|---|---|---|
id | int(11) unsigned | 否 | <auto_increment> | 课程ID | |
teacher_id | int(11) unsigned | 否 | 课程讲师ID | ||
subject_id | int(11) unsigned | 否 | 课程科目分类ID | ||
title | varchar(63) | 否 | 课程标题 | ||
price | double(10,2) unsigned | 是 | 0.00 | 课程销售价格,设置为0则可免费观看 | |
lesson_num | int(11) unsigned | 否 | 0 | 总课时 | |
cover | varchar(1023) | 否 | utf8, utf8_general_ci | 课程封面图片路径 | |
description | text | 是 | 课程描述 | ||
buy_count | int(11) unsigned | 是 | 0 | 销售数量 | |
view_count | int(11) unsigned | 是 | 0 | 浏览数量 | |
sort | int(11) | 是 | 0 | 显示排序 | |
enable | tinyint(1) | 否 | 1 | 上架下架,0下架 1上架 | |
status | tinyint(4) | 是 | 0 | 课程状态,草稿 审核 发表 | |
remarks | varchar(511) | 是 | <空> | 备注 | |
update_time | datetime | 是 | <INSERT-TimeStamp> | 更新时间 | |
create_time | datetime | 是 | <INSERT-TimeStamp> | 创建时间 |
表格: edu_subject
备注: 课程科目分类表
索引:
名称 | 类型 | 属性 | 备注 |
---|---|---|---|
主索引 | id | unique | |
idx_parent_id | parent_id |
字段:
名称 | 类型 | 空 | 默认值 | 属性 | 备注 |
---|---|---|---|---|---|
id | int(11) unsigned | 否 | <auto_increment> | 课程类别ID | |
title | varchar(15) | 否 | 类别名称 | ||
parent_id | int(11) unsigned | 是 | 0 | 父ID | |
sort | int(11) unsigned | 是 | 0 | 排序字段 | |
enable | tinyint(1) unsigned | 否 | 1 | 是否启用,0否1是 | |
update_time | datetime | 是 | <INSERT-TimeStamp> | 更新时间 | |
create_time | datetime | 是 | <INSERT-TimeStamp> | 创建时间 |
表格: edu_teacher
备注: 讲师表
索引:
名称 | 类型 | 属性 | 备注 |
---|---|---|---|
主索引 | id | unique | |
uk_mobile | mobile | unique | |
uk_name | name | unique |
字段:
名称 | 类型 | 空 | 默认值 | 属性 | 备注 |
---|---|---|---|---|---|
id | int(11) unsigned | 否 | <auto_increment> | 讲师ID | |
mobile | char(11) | 否 | 手机号 | ||
varchar(127) | 是 | 邮箱地址 | |||
password | varchar(255) | 否 | 密码 | ||
name | varchar(63) | 否 | 讲师姓名 | ||
intro | varchar(1023) | 否 | 讲师简介 | ||
avatar | varchar(1023) | 是 | 讲师头像 | ||
resume | varchar(1023) | 是 | 讲师简历链接 | ||
division | tinyint(4) | 是 | 80 | 分成比例,0-100 | |
sort | int(11) | 是 | 0 | 排序 | |
enable | tinyint(1) unsigned | 否 | 1 | 是否启用,0否1是 | |
status | tinyint(4) | 是 | 0 | 讲师状态:审核通过;审核不通过;待审核 | |
update_time | datetime | 是 | <INSERT-TimeStamp> | 更新时间 | |
create_time | datetime | 是 | <INSERT-TimeStamp> | 创建时间 |
表格: edu_video
备注: 课程视频
索引:
名称 | 类型 | 属性 | 备注 |
---|---|---|---|
主索引 | id | unique | |
idx_chapter_id | chapter_id | ||
idx_course_id | course_id |
字段:
名称 | 类型 | 空 | 默认值 | 属性 | 备注 |
---|---|---|---|---|---|
id | int(11) unsigned | 否 | <auto_increment> | 视频ID | |
course_id | int(11) unsigned | 否 | 课程ID | ||
chapter_id | int(11) unsigned | 否 | 章节ID | ||
title | varchar(63) | 否 | 视频显示名称 | ||
video_id | varchar(63) | 否 | 云端视频资源 | ||
sort | int(11) | 是 | 0 | 排序字段 | |
play_count | int(11) unsigned | 是 | 0 | 播放次数 | |
free | tinyint(1) unsigned | 是 | 1 | 是否可以试听:0免费 1收费 | |
duration | varchar(15) | 是 | 0 | 视频时长(秒) | |
size | bigint(20) unsigned | 否 | 0 | 视频源文件大小(字节) | |
update_time | datetime | 是 | <INSERT-TimeStamp> | 更新时间 | |
create_time | datetime | 是 | <INSERT-TimeStamp> | 创建时间 |
表格: edu_video_tmp
备注: 课程视频表(用于存放二次修改的数据)
索引:
名称 | 类型 | 属性 | 备注 |
---|---|---|---|
主索引 | id | unique | |
idx_chapter_id | chapter_id | ||
idx_course_id | course_id | ||
idx_id | oid |
字段:
名称 | 类型 | 空 | 默认值 | 属性 | 备注 |
---|---|---|---|---|---|
id | bigint(20) unsigned | 否 | 0 | 主键(视频ID) | |
oid | int(11) unsigned | 是 | 0 | 原视频ID | |
course_id | int(11) unsigned | 否 | 课程ID | ||
chapter_id | bigint(20) unsigned | 否 | 章节ID | ||
title | varchar(63) | 否 | 视频显示名称 | ||
video_id | varchar(63) | 否 | 云端视频资源 | ||
sort | int(11) | 是 | 0 | 排序字段 | |
play_count | int(11) unsigned | 是 | 0 | 播放次数 | |
free | tinyint(1) unsigned | 是 | 1 | 是否可以试听:0免费 1收费 | |
duration | varchar(15) | 是 | 0 | 视频时长(秒) | |
size | bigint(20) unsigned | 否 | 0 | 视频源文件大小(字节) | |
update_time | datetime | 是 | <INSERT-TimeStamp> | 更新时间 | |
create_time | datetime | 是 | <INSERT-TimeStamp> | 创建时间 |
表格: hm_banner
备注: 首页banner表
索引:
名称 | 类型 | 属性 | 备注 |
---|---|---|---|
主索引 | id | unique |
字段:
名称 | 类型 | 空 | 默认值 | 属性 | 备注 |
---|---|---|---|---|---|
id | int(11) unsigned | 否 | <auto_increment> | ID | |
title | varchar(63) | 是 | 标题 | ||
image_url | varchar(1023) | 否 | 图片地址 | ||
link_url | varchar(1023) | 是 | 链接地址 | ||
sort | int(11) unsigned | 否 | 0 | 排序 | |
enable | tinyint(1) unsigned | 否 | 1 | 是否启用,0否1是 | |
update_time | datetime | 是 | <INSERT-TimeStamp> | 更新时间 | |
create_time | datetime | 是 | <INSERT-TimeStamp> | 创建时间 |
表格: rel_course_member
备注: 课程订阅-学员关系表
索引:
名称 | 类型 | 属性 | 备注 |
---|---|---|---|
主索引 | id | unique | |
idx_course_id | course_id | unique | |
idx_member_course | member_id, course_id | 联合索引(member_id, course_id) | |
idx_member_id | member_id | unique |
字段:
名称 | 类型 | 空 | 默认值 | 属性 | 备注 |
---|---|---|---|---|---|
id | int(10) unsigned | 否 | <auto_increment> | 主键 | |
course_id | int(10) unsigned | 否 | 0 | 课程Id | |
member_id | int(10) unsigned | 否 | 0 | 学员Id | |
update_time | datetime | 是 | <INSERT-TimeStamp> | 更新时间 | |
create_time | datetime | 是 | <INSERT-TimeStamp> | 创建时间 |
表格: stat_daily
备注: 网站统计日数据
索引:
名称 | 类型 | 属性 | 备注 |
---|---|---|---|
主索引 | id | unique | |
statistics_day | date |
字段:
名称 | 类型 | 空 | 默认值 | 属性 | 备注 |
---|---|---|---|---|---|
id | int(11) unsigned | 否 | <auto_increment> | 主键 | |
date | datetime | 否 | 统计日期 | ||
visit_count | int(11) unsigned | 是 | 0 | 访客数量 | |
register_count | int(11) unsigned | 是 | 0 | 注册人数 | |
login_count | int(11) unsigned | 是 | 0 | 活跃人数 | |
video_view_count | int(11) unsigned | 是 | 0 | 视频播放数 | |
course_buy_count | int(11) unsigned | 是 | 0 | 购买数量 | |
update_time | datetime | 是 | <INSERT-TimeStamp> | 更新时间 | |
create_time | datetime | 是 | <INSERT-TimeStamp> | 创建时间 |
表格: sys_message
备注: 消息表
索引:
名称 | 类型 | 属性 | 备注 |
---|---|---|---|
主索引 | id | unique | |
idx_to_id | to_id |
字段:
名称 | 类型 | 空 | 默认值 | 属性 | 备注 |
---|---|---|---|---|---|
id | int(11) unsigned | 否 | <auto_increment> | 消息id | |
from_id | int(11) unsigned | 否 | 0 | 发送者Id | |
from_role | tinyint(4) | 否 | 0 | 发送者角色(管理员、讲师…) | |
to_id | int(11) unsigned | 否 | 0 | 接受者id | |
to_role | tinyint(4) unsigned | 否 | 0 | 接受者角色(教师、学员…) | |
title | varchar(127) | 是 | 消息标题 | ||
content | varchar(511) | 否 | 消息内容 | ||
has_read | tinyint(1) unsigned | 是 | 0 | 是否已读(0未读 1已读) | |
update_time | datetime | 是 | <INSERT-TimeStamp> | 更新时间 | |
create_time | datetime | 是 | <INSERT-TimeStamp> | 创建时间 |
表格: t_order
备注: 订单表
索引:
名称 | 类型 | 属性 | 备注 |
---|---|---|---|
主索引 | id | unique | |
idx_course_id | course_id | ||
idx_member_id | member_id | ||
idx_member_id_course_id | member_id, course_id | ||
ux_order_no | order_no | unique |
字段:
名称 | 类型 | 空 | 默认值 | 属性 | 备注 |
---|---|---|---|---|---|
id | int(11) unsigned | 否 | <auto_increment> | ||
order_no | varchar(18) | 否 | 订单号(datetime+unsigned int) | ||
course_id | int(11) unsigned | 否 | 课程id | ||
member_id | int(11) unsigned | 否 | 会员id | ||
total_fee | double(10,2) | 是 | 0.01 | 订单金额(分) | |
pay_type | tinyint(4) unsigned | 是 | 0 | 支付类型(0 未支付 1:微信 2:支付宝) | |
transaction_num | varchar(31) | 是 | 交易流水号 | ||
pay_time | datetime | 是 | <空> | 支付完成时间 | |
update_time | datetime | 是 | <INSERT-TimeStamp> | 更新时间 | |
create_time | datetime | 是 | <INSERT-TimeStamp> | 创建时间 |
表格: uctr_member
备注: 会员表
索引:
名称 | 类型 | 属性 | 备注 |
---|---|---|---|
主索引 | id | unique | |
uk_mobile | mobile | unique | |
uk_nickname | nickname | unique |
字段:
名称 | 类型 | 空 | 默认值 | 属性 | 备注 |
---|---|---|---|---|---|
id | int(11) unsigned | 否 | <auto_increment> | 会员id | |
mobile | char(11) | 否 | 手机号 | ||
varchar(127) | 是 | 邮箱地址 | |||
password | varchar(255) | 否 | 密码 | ||
nickname | varchar(31) | 是 | 昵称 | ||
sex | tinyint(4) unsigned | 是 | 0 | 性别 1 女,2 男 | |
age | tinyint(3) unsigned | 是 | 0 | 年龄 | |
avatar | varchar(1023) | 是 | 用户头像 | ||
sign | varchar(127) | 是 | 用户签名 | ||
enable | tinyint(1) | 是 | 1 | 是否启用,0否1是 | |
update_time | datetime | 是 | <INSERT-TimeStamp> | 更新时间 | |
create_time | datetime | 是 | <INSERT-TimeStamp> | 创建时间 |
实现效果
更多实现效果图请看附件README.assets
管理员端:
讲师端:
学员端:
总结与展望
事实说明,毕设工作量完全超出了答辩的正常范围,这点我是没想到的,因为只演示了系统一小部分功能就拿了答辩优秀。最后也是希望本项目可以给到有需要的人一些帮助。谢谢大家。
展望:
- 代码重构,解决前言中的问题。
- 功能完善,完善支付模块、权限管理等功能。
- 架构升级,微服务拆分,引入前沿技术。
当然,这一切的前提是我心情不错且拥有足够的空闲时间。
基于SpringBoot+Vue前后端分离的在线教育平台项目相关推荐
- 基于springboot+vue前后端分离的学生在线考试管理系统
一.基于springboot+vue前后端分离的学生在线考试管理系统 本系统通过教师用户创建班级编写试卷信息然后发布到班级.学生用户进入班级,在线作答,考试结果数据通过网络回收,系统自动进行判分,生成 ...
- 基于springboot vue前后端分离的图书借阅管理系统源码
请观看视频: 基于springboot vue前后端分离的图书借阅管理系统源码 <project xmlns="http://maven.apache.org/POM/4.0.0&qu ...
- 基于springboot+vue前后端分离的婚礼服装租赁系统
1 简介 今天向大家介绍一个帮助往届学生完成的毕业设计项目,基于springboot+vue前后端分离的婚礼服装租赁系统. 计算机毕业生设计,课程设计需要帮助的可以找我 源码获取------> ...
- Jeecg-Boot 2.0.0 版本发布,基于Springboot+Vue 前后端分离快速开发平台
Jeecg-Boot 2.0.0 版本发布,前后端分离快速开发平台 Jeecg-Boot项目简介 源码下载 升级日志 Issues解决 v1.1升级到v2.0不兼容地方 系统截图 Jeecg-Boot ...
- 基于Springboot+vue前后端分离的项目--后端笔记
效果图: 1.前言 从零开始搭建一个项目最重要的是选择一个自己熟悉的框架,此项目使用Springboot框架来构建后端结构,使用vue来构建前端页面.数据层我们常用的是Mybatis,这里我大部分使 ...
- 酒店管理|基于Springboot+Vue前后端分离实现酒店管理系统
作者主页:编程指南针 作者简介:Java领域优质创作者.CSDN博客专家 .掘金特邀作者.多年架构师设计经验.腾讯课堂常驻讲师 主要内容:Java项目.毕业设计.简历模板.学习资料.面试题库.技术互助 ...
- 基于Springboot vue前后端分离在线培训考试系统源码
# 云帆培训考试系统 管理账号:admin/admin 学员账号:person/person # 介绍 一款多角色在线培训考试系统,系统集成了用户管理.角色管理.部门管理.题库管理.试题管理.试题导入 ...
- 基于SpringBoot+Vue前后端分离管理系统
资源收集自网络,侵权请联系删除 资源获取 点击下面公众号,回复:D103
- 光学元件工艺管理系统源码:基于springboot+Vue前后端分离项目
最新文章
- 2018-3-25论文(Whale Optimizer Algorithm)+(Gery Wolf Optimizer)笔记二---Introduction 对比
- /etc/bashrc和/etc/profile傻傻分不清楚?
- Leaflet中使用Leaflet-echarts3插件实现航班航线动态模拟
- 生活中的英语 —— 动植物篇
- 【日常点滴015】python中学完pandas后的代码练习 附源数据文件
- Windows XP \Windows 2003启动过程的学习及故障分析处理(六D)
- [CF 417D]Cunning Gena:状压DP
- 移动硬盘中安装ubuntu系统——Vmware Workstation安装
- 此nvidia驱动程序与此windows版本不兼容
- 常用的BAPI 函数
- [数据库] DSN是什么/是什么意思--解释
- JS - 笛卡尔积算法
- ViewPager+Fragment刷新更新Fragment
- java concurrency 读书笔记
- GC ------ Garbage Collection
- Linux集群 安全防御-iptables
- C#源码 +sqlserver包含库存管理、销售管理
- jdk的下载/安装/配置
- 啃完这些 Spring 知识点,我竟吊打了阿里面试官(附面经 + 笔记)
- 豆瓣镜像源加快下载速度
热门文章
- 艺术设计用计算机主板,学艺术设计的用什么电脑比较好
- Unity2017 经典游戏开发教程 算法分析与实现 (张帆 著)
- 基于微信小程序的智能停车场管理系统的研究与设计
- html文件设置成mac屏保,如何将视频设置为Mac上的屏幕保护程序 | MOS86
- 【梳理】数字设计基础与应用 第1章 数字逻辑基础 1.3 逻辑代数基础 1.4 逻辑函数的表述方式
- 郑厂长系列故事——排兵布阵 状态压缩DP
- UE4 DataAsset 的使用
- Java代码控制UI界面
- 如何自己编写一个交通仿真软件(一)火种。
- questasim中点击 add wave 后,显示 no data 解决方法