• Java项目:SSM健身房俱乐部管理系统


    作者主页:夜未央5788

     简介:Java领域优质创作者、Java项目、学习资料、技术互助

    文末获取源码

     

    项目介绍

    本项目包含前后台,分为普通用户与管理员两种角色,前台为普通用户登录,后台为管理员登录;

    管理员角色包含以下功能:

    登录,会员管理-增删改查,员工管理-增删改查,课程管理,网站新闻管理,新闻添加编辑,留言管理等功能。

    用户角色包含以下功能:
    查看首页,查看关于我们,查看新闻,课程简介,会员注册,会员登录,查看新闻活动,登录后留言,查看留言等功能。

    环境需要

    1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
    2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
    3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
    4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 

    5.数据库:MySql 5.7版本;

    6.是否Maven项目:是;

    技术栈

    1. 后端:Spring+SpringMVC+Mybatis

    2. 前端:JSP+CSS+JavaScript+Layui+bootstrap+jquery

    使用说明

    1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
    2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
    若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
    3. 将项目中db.properties配置文件中的数据库配置改为自己的配置;

    4. 运行项目,输入localhost:8080/ 登录

    运行截图

    前台界面

     

     

     

     

     

     

     

    后台界面

     

     

     

     

     

     

     

     

    相关代码

    CourseController

    1. package com.stern.controller;
    2. import com.github.pagehelper.PageHelper;
    3. import com.github.pagehelper.PageInfo;
    4. import com.stern.mapper.ClassMapper;
    5. import com.stern.pojo.*;
    6. import com.stern.pojo.Class;
    7. import com.stern.pojo.ClassExample.Criteria;
    8. import com.stern.service.*;
    9. import org.springframework.beans.factory.annotation.Autowired;
    10. import org.springframework.stereotype.Controller;
    11. import org.springframework.ui.Model;
    12. import org.springframework.web.bind.annotation.RequestMapping;
    13. import org.springframework.web.bind.annotation.RequestParam;
    14. import org.springframework.web.bind.annotation.ResponseBody;
    15. import org.springframework.web.multipart.MultipartFile;
    16. import java.io.File;
    17. import java.io.IOException;
    18. import java.util.Date;
    19. import java.util.HashMap;
    20. import java.util.List;
    21. import java.util.Map;
    22. /**
    23. * 课程管理 -控制层
    24. */
    25. @Controller
    26. public class CourseController {
    27. @Autowired
    28. private CourseService courseService;
    29. @Autowired
    30. private EmployeeService employeeService;
    31. @Autowired
    32. private CoursecategoryService coursecategoryService;
    33. @Autowired
    34. private CoursefunctionService coursefunctionService;
    35. @Autowired
    36. private ClassService classService;
    37. @Autowired
    38. private OrderService orderService;
    39. @Autowired
    40. private ClassMapper classMapper;
    41. /**
    42. * 前台页面-跳转到健身课程
    43. * @return
    44. */
    45. @RequestMapping("/course.html")
    46. public String coursePage(Model model,String page,String cate,String func){
    47. System.out.println(cate+"====================================="+func);
    48. //查询所有课程类型
    49. List coursecategories = coursecategoryService.selectByExample(new CoursecategoryExample());
    50. model.addAttribute("coursecategories",coursecategories);
    51. //查询所有课程功能
    52. List coursefunctions = coursefunctionService.selectByExample(new CoursefunctionExample());
    53. model.addAttribute("coursefunctions",coursefunctions);
    54. //查询所有课程 总页数
    55. int _page;
    56. if(page==null){
    57. _page = 1;
    58. }else {
    59. _page = Integer.parseInt(page);
    60. }
    61. //根据课程类型名称查询课程类型ID,根据功能名称查询功能ID
    62. CourseExample courseExample = new CourseExample();
    63. CourseExample.Criteria criteria = courseExample.createCriteria();
    64. CoursecategoryExample coursecategoryExample = new CoursecategoryExample();
    65. CoursecategoryExample.Criteria criteria1 = coursecategoryExample.createCriteria();
    66. CoursefunctionExample coursefunctionExample = new CoursefunctionExample();
    67. CoursefunctionExample.Criteria criteria2 = coursefunctionExample.createCriteria();
    68. if(cate!=null&&!cate.equals("全部")){
    69. criteria1.andCateNameEqualTo(cate);
    70. List coursecategories1 = coursecategoryService.selectByExample(coursecategoryExample);
    71. criteria.andCcateIdEqualTo(coursecategories1.get(0).getCateId());
    72. }
    73. if (func!=null&&!func.equals("全部")){
    74. criteria2.andFnameEqualTo(func);
    75. List coursefunctions1 = coursefunctionService.selectByExample(coursefunctionExample);
    76. criteria.andCfunctionIdEqualTo(coursefunctions1.get(0).getFid());
    77. }
    78. PageHelper.startPage(_page,6);
    79. List courses = courseService.selectByExampleWithBLOBs(courseExample);
    80. PageInfo pageInfo = new PageInfo(courses);
    81. int totalPages = pageInfo.getPages();
    82. model.addAttribute("totalPages",totalPages);
    83. model.addAttribute("currentPage",_page);
    84. model.addAttribute("courses",courses);
    85. model.addAttribute("cate",cate);
    86. model.addAttribute("func",func);
    87. Sheet sheet = courseService.selectSheetByPrimaryKey(1);
    88. if(sheet!=null){
    89. model.addAttribute("sheetsrc",sheet.getSsrc());
    90. }
    91. return "course";
    92. }
    93. /**
    94. * 前台课程详情页面
    95. * @param model
    96. * @param cid
    97. * @return
    98. */
    99. @RequestMapping("/courseinfo.html")
    100. public String coursePage(Model model,String cid){
    101. Course course = courseService.selectByPrimaryKey(Integer.parseInt(cid));
    102. model.addAttribute("course",course);
    103. //如果是cid为8(游泳)或者18(瑜伽)就查询所有开设班级
    104. ClassExample classExample = new ClassExample();
    105. ClassExample.Criteria criteria = classExample.createCriteria();
    106. criteria.andCourseIdEqualTo(Integer.parseInt(cid));
    107. List classes = classService.selectByExample(classExample);
    108. //查询该课程已预订人数
    109. for (Class aClass : classes) {
    110. TblOrderExample tblOrderExample = new TblOrderExample();
    111. TblOrderExample.Criteria criteria1 = tblOrderExample.createCriteria();
    112. criteria1.andClassIdEqualTo(aClass.getClassid());
    113. long haveOrder = orderService.countByExample(tblOrderExample);
    114. aClass.setHaveOrder(new Long(haveOrder).intValue());
    115. }
    116. model.addAttribute("classes",classes);
    117. //查询所有教练
    118. EmployeeExample employeeExample = new EmployeeExample();
    119. EmployeeExample.Criteria criteria2 = employeeExample.createCriteria();
    120. criteria2.andEpostIdEqualTo(1);
    121. List trainers = employeeService.selectByExample(employeeExample);
    122. model.addAttribute("trainers",trainers);
    123. return "courseinfo";
    124. }
    125. /**
    126. * 后台管理跳转到课程管理界面
    127. * @return
    128. */
    129. @RequestMapping("/admin/course.html")
    130. public String admincourse(Model model){
    131. //查询所有员工,进行教练名称显示
    132. List employees = employeeService.selectByExample(new EmployeeExample());
    133. model.addAttribute("employees",employees);
    134. //查询所有课程类型
    135. List coursecategories = coursecategoryService.selectByExample(new CoursecategoryExample());
    136. model.addAttribute("coursecategories",coursecategories);
    137. //查询所有课程功能
    138. List coursefunctions = coursefunctionService.selectByExample(new CoursefunctionExample());
    139. model.addAttribute("coursefunctions",coursefunctions);
    140. return "admin/course/courselist";
    141. }
    142. /**
    143. * 分页+课程名称 查询
    144. * @param page
    145. * @param limit
    146. * @param model
    147. * @param cname
    148. * @return
    149. */
    150. @RequestMapping("/admin/courselist.html")
    151. @ResponseBody
    152. public Map courselistPage(String page, String limit,Model model,String cname){
    153. List employees = employeeService.selectByExample(new EmployeeExample());
    154. model.addAttribute("employees",employees);
    155. CourseExample example = new CourseExample();
    156. if(cname!=null&&!"".equals(cname)){
    157. CourseExample.Criteria criteria = example.createCriteria();
    158. criteria.andCnameLike("%"+cname+"%");
    159. }
    160. PageHelper.startPage(Integer.parseInt(page),Integer.parseInt(limit));
    161. List courses = courseService.selectByExampleWithBLOBs(example);
    162. PageInfo pageInfo = new PageInfo(courses);
    163. Map pageMap = new HashMap();
    164. pageMap.put("code",0);
    165. pageMap.put("msg","");
    166. pageMap.put("count",pageInfo.getTotal());
    167. pageMap.put("data",pageInfo.getList());
    168. return pageMap;
    169. }
    170. /**
    171. * 上传课程图片
    172. * @param file
    173. * @return
    174. */
    175. @RequestMapping("/admin/upload.html")
    176. @ResponseBody
    177. public Map upload(MultipartFile file){
    178. String extName = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
    179. String filename = System.currentTimeMillis()+extName;
    180. File newFile = new File(Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(0,Thread.currentThread().getContextClassLoader().getResource("").getPath().length()-16)+"/sterngymimages/"+filename);
    181. try {
    182. file.transferTo(newFile);
    183. }catch (Exception e){
    184. e.printStackTrace();
    185. }
    186. Map srcMap = new HashMap();
    187. srcMap.put("src",filename);
    188. Map imgMap = new HashMap();
    189. imgMap.put("code",0);
    190. imgMap.put("msg","");
    191. imgMap.put("data",srcMap);
    192. return imgMap;
    193. }
    194. /**
    195. * 查看课程信息
    196. * @param model
    197. * @param cid
    198. * @return
    199. */
    200. @RequestMapping("/admin/courseinfo.html")
    201. public String courseInfo(Model model,String cid){
    202. Course course = courseService.selectByPrimaryKey(Integer.parseInt(cid));
    203. model.addAttribute("course",course);
    204. //查询所有教练
    205. EmployeeExample example = new EmployeeExample();
    206. EmployeeExample.Criteria criteria = example.createCriteria();
    207. criteria.andEpostIdEqualTo(1);
    208. List trainers = employeeService.selectByExample(example);
    209. model.addAttribute("trainers",trainers);
    210. //查询所有课程类型
    211. List coursecategories = coursecategoryService.selectByExample(new CoursecategoryExample());
    212. model.addAttribute("coursecategories",coursecategories);
    213. //查询所有课程功能
    214. List coursefunctions = coursefunctionService.selectByExample(new CoursefunctionExample());
    215. model.addAttribute("coursefunctions",coursefunctions);
    216. return "admin/course/courseinfo";
    217. }
    218. @RequestMapping("/admin/goaddorupdate.html")
    219. public String admingoaddPage(Model model, @RequestParam(required = false)String cid){
    220. //查询所有教练
    221. EmployeeExample example = new EmployeeExample();
    222. EmployeeExample.Criteria criteria = example.createCriteria();
    223. criteria.andEpostIdEqualTo(1);
    224. List trainers = employeeService.selectByExample(example);
    225. model.addAttribute("trainers",trainers);
    226. //查询所有课程类型
    227. List coursecategories = coursecategoryService.selectByExample(new CoursecategoryExample());
    228. model.addAttribute("coursecategories",coursecategories);
    229. //查询所有课程功能
    230. List coursefunctions = coursefunctionService.selectByExample(new CoursefunctionExample());
    231. model.addAttribute("coursefunctions",coursefunctions);
    232. //如果是要更新,根据课程id查询课程
    233. if(cid!=null &&!cid.equals("")){
    234. Course course = courseService.selectByPrimaryKey(Integer.parseInt(cid));
    235. model.addAttribute("course",course);
    236. }
    237. return "admin/course/courseaddorupdate";
    238. }
    239. /**
    240. * 更新或者添加课程
    241. * @param course
    242. * @return
    243. */
    244. @RequestMapping("/admin/addorupdate.html")
    245. public String adminaddorupdatePage(Course course){
    246. if(course.getCid() == null){//添加
    247. if(course.getTrainerId().equals(-1)){
    248. course.setTrainerId(null);
    249. }
    250. course.setCcreatetime(new Date());
    251. int ids = courseService.insertSelective(course);
    252. Class class1 = new Class();
    253. class1.setClasstime("7:00-18:00");
    254. class1.setClassvolume(20);
    255. class1.setCourseId(course.getCid());
    256. class1.setEmplId(course.getTrainerId());
    257. class1.setHaveOrder(1);
    258. class1.setCourseId(course.getCid());
    259. classMapper.insertSelective(class1);
    260. }else{//更新
    261. if(course.getTrainerId().equals(-1)){
    262. course.setTrainerId(null);
    263. }
    264. ClassExample classExample = new ClassExample();
    265. ClassExample.Criteria c = classExample.createCriteria();
    266. c.andCourseIdEqualTo(course.getCid());
    267. List list = classService.selectByExample(classExample);
    268. if(list == null||list.size() == 0) {
    269. Class class1 = new Class();
    270. class1.setClasstime("7:00-18:00");
    271. class1.setClassvolume(20);
    272. class1.setCourseId(course.getCid());
    273. class1.setEmplId(course.getTrainerId());
    274. class1.setHaveOrder(1);
    275. classMapper.insertSelective(class1);
    276. }else {
    277. Class class1 = list.get(0);
    278. class1.setCourseId(course.getCid());
    279. class1.setEmplId(course.getTrainerId());
    280. classMapper.updateByPrimaryKeySelective(class1);
    281. }
    282. courseService.updateByPrimaryKeySelective(course);
    283. }
    284. return "forward:/admin/course.html";
    285. }
    286. @RequestMapping("/admin/course/del.html")
    287. @ResponseBody
    288. public Map courseDel(String cid){
    289. int i = courseService.deleteByPrimaryKey(Integer.parseInt(cid));
    290. Map delMap = new HashMap();
    291. if(i>0){//删除成功
    292. delMap.put("status",1);
    293. }else{
    294. delMap.put("status",0);
    295. }
    296. return delMap;
    297. }
    298. /**
    299. * 上传课表
    300. */
    301. @RequestMapping("/admin/courseupload.html")
    302. public String courseUpload(Model model){
    303. Sheet sheet = courseService.selectSheetByPrimaryKey(1);
    304. if(sheet!=null){
    305. model.addAttribute("sheetsrc",sheet.getSsrc());
    306. }
    307. return "admin/course/courseupload";
    308. }
    309. @RequestMapping("/admin/coursesheet.html")
    310. @ResponseBody
    311. public Map uploatSheet(MultipartFile file){
    312. Map uploadMap = new HashMap();
    313. Map srcMap = new HashMap();
    314. String filename = file.getOriginalFilename();
    315. Sheet sheet = new Sheet();
    316. sheet.setSsrc(filename);
    317. if(courseService.countByExample(new SheetExample())==0){
    318. courseService.insertSelective(sheet);
    319. }else {
    320. sheet.setSid(1);
    321. courseService.updateByPrimaryKey(sheet);
    322. }
    323. File newFile = new File(Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(0,Thread.currentThread().getContextClassLoader().getResource("").getPath().length()-16)+"/sterngymimages/"+filename);
    324. try {
    325. file.transferTo(newFile);
    326. } catch (IOException e) {
    327. e.printStackTrace();
    328. }
    329. srcMap.put("src",filename);
    330. uploadMap.put("data",srcMap);
    331. uploadMap.put("code",0);
    332. uploadMap.put("msg","");
    333. return uploadMap;
    334. }
    335. }

    EmployeeController

    1. package com.stern.controller;
    2. import com.github.pagehelper.PageHelper;
    3. import com.github.pagehelper.PageInfo;
    4. import com.stern.pojo.Employee;
    5. import com.stern.pojo.EmployeeExample;
    6. import com.stern.pojo.Post;
    7. import com.stern.pojo.PostExample;
    8. import com.stern.service.EmployeeService;
    9. import com.stern.service.PostService;
    10. import org.springframework.beans.factory.annotation.Autowired;
    11. import org.springframework.stereotype.Controller;
    12. import org.springframework.ui.Model;
    13. import org.springframework.web.bind.annotation.RequestMapping;
    14. import org.springframework.web.bind.annotation.ResponseBody;
    15. import java.text.ParseException;
    16. import java.text.SimpleDateFormat;
    17. import java.util.Date;
    18. import java.util.HashMap;
    19. import java.util.List;
    20. import java.util.Map;
    21. /**
    22. * 员工 -控制层
    23. */
    24. @Controller
    25. public class EmployeeController {
    26. @Autowired
    27. private PostService postService;
    28. @Autowired
    29. private EmployeeService employeeService;
    30. /**
    31. * 后台员工管理
    32. * @return
    33. */
    34. @RequestMapping("/admin/employee.html")
    35. public String employeePage(Model model){
    36. //查询所有职务
    37. List posts = postService.selectByExample(new PostExample());
    38. model.addAttribute("posts",posts);
    39. return "admin/employee/employeelist";
    40. }
    41. /**
    42. * 员工管理分页
    43. * @param page
    44. * @param limit
    45. * @param model
    46. * @param ename
    47. * @return
    48. */
    49. @RequestMapping("/admin/employeelist.html")
    50. @ResponseBody
    51. public Map employeelistPage(String page, String limit, Model model, String ename){
    52. Map employeeMap = new HashMap();
    53. //查询所有职务
    54. List posts = postService.selectByExample(new PostExample());
    55. model.addAttribute("posts",posts);
    56. //分页查询员工
    57. EmployeeExample employeeExample = new EmployeeExample();
    58. EmployeeExample.Criteria criteria = employeeExample.createCriteria();
    59. if(ename != null&& !ename.equals("")){
    60. criteria.andEnameLike("%"+ename+"%");
    61. }
    62. PageHelper.startPage(Integer.parseInt(page),Integer.parseInt(limit));
    63. List employees = employeeService.selectByExample(employeeExample);
    64. PageInfo employeePageInfo = new PageInfo(employees);
    65. employeeMap.put("code",0);
    66. employeeMap.put("msg","");
    67. employeeMap.put("count",employeePageInfo.getTotal());
    68. employeeMap.put("data",employeePageInfo.getList());
    69. return employeeMap;
    70. }
    71. @RequestMapping("/admin/employee/goaddorupdate.html")
    72. public String goUpdate(Model model,String eid){
    73. //查询所有职务
    74. List posts = postService.selectByExample(new PostExample());
    75. model.addAttribute("posts",posts);
    76. //eid不为null,就进行更新,根据员工id查询员工
    77. if(eid!=null&&!eid.equals(" ")){
    78. Employee employee = employeeService.selectByPrimaryKey(Integer.parseInt(eid));
    79. model.addAttribute("employee",employee);
    80. }
    81. return "admin/employee/employeeedit";
    82. }
    83. @RequestMapping("/admin/employee/doaddorupdate.html")
    84. @ResponseBody
    85. public Map doaddorupdate(Employee employee,String time){
    86. Map updateMap = new HashMap();
    87. int i = 0;
    88. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    89. try {
    90. Date date = sdf.parse(time);
    91. employee.setEhire(date);
    92. } catch (ParseException e) {
    93. e.printStackTrace();
    94. }
    95. if(employee.getEid()==null){//没有eid则是添加员工
    96. i = employeeService.insertSelective(employee);
    97. if(i>0){
    98. updateMap.put("msg","添加成功");
    99. updateMap.put("status",1);
    100. }else{
    101. updateMap.put("msg","添加失败");
    102. updateMap.put("status",0);
    103. }
    104. }else{
    105. i = employeeService.updateByPrimaryKeySelective(employee);
    106. if(i>0){
    107. updateMap.put("msg","更新成功");
    108. updateMap.put("status",1);
    109. }else{
    110. updateMap.put("msg","更新失败");
    111. updateMap.put("status",0);
    112. }
    113. }
    114. return updateMap;
    115. }
    116. @RequestMapping("/admin/employee/del.html")
    117. @ResponseBody
    118. public Map delEmployee(String eid){
    119. Map delMap = new HashMap();
    120. int i = employeeService.deleteByPrimaryKey(Integer.parseInt(eid));
    121. if(i>0){
    122. delMap.put("status","1");
    123. }else {
    124. delMap.put("status","0");
    125. }
    126. return delMap;
    127. }
    128. /**
    129. *
    130. * 教练管理
    131. *
    132. */
    133. @RequestMapping("/admin/trainer.html")
    134. public String adminTrainer(Model model){
    135. return "admin/trainer/trainerlist";
    136. }
    137. /**
    138. * 教练管理分页
    139. */
    140. @RequestMapping("/admin/trainerlist.html")
    141. @ResponseBody
    142. public Map trainerPage(String page,String limit,String ename,Model model){
    143. Map trainerMap = new HashMap();
    144. EmployeeExample employeeExample = new EmployeeExample();
    145. EmployeeExample.Criteria criteria = employeeExample.createCriteria();
    146. criteria.andEpostIdEqualTo(1);
    147. if(ename!=null && !ename.equals(" ")){
    148. criteria.andEnameLike("%"+ename+"%");
    149. }
    150. PageHelper.startPage(Integer.parseInt(page),Integer.parseInt(limit));
    151. List trainers = employeeService.selectByExample(employeeExample);
    152. PageInfo trainerPageInfo = new PageInfo(trainers);
    153. trainerMap.put("code",0);
    154. trainerMap.put("msg","");
    155. trainerMap.put("count",trainerPageInfo.getTotal());
    156. trainerMap.put("data",trainers);
    157. return trainerMap;
    158. }
    159. /**
    160. * 添加或者更新教练
    161. */
    162. @RequestMapping("/admin/trainer/goaddorupdate.html")
    163. public String trainerGoAddOrUpdate(String eid,Model model){
    164. if(eid!=null&&!eid.equals(" ")){//更新
    165. Employee trainer = employeeService.selectByPrimaryKey(Integer.parseInt(eid));
    166. model.addAttribute("trainer",trainer);
    167. }
    168. return "admin/trainer/traineredit";
    169. }
    170. @RequestMapping("/admin/trainer/doaddorupdate.html")
    171. @ResponseBody
    172. public Map trainerDoAddOrUpdate(Employee employee,String time){
    173. Map trainerMap = new HashMap();
    174. int i = 0;
    175. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    176. try {
    177. Date ehire = sdf.parse(time);
    178. employee.setEhire(ehire);
    179. } catch (ParseException e) {
    180. e.printStackTrace();
    181. }
    182. if(employee.getEid()!=null&&!employee.getEid().equals(" ")){//eid不为null则是更新
    183. i = employeeService.updateByPrimaryKeySelective(employee);
    184. if(i>0){
    185. trainerMap.put("msg","更新成功");
    186. trainerMap.put("res",1);
    187. }else {
    188. trainerMap.put("msg","更新失败");
    189. trainerMap.put("res",0);
    190. }
    191. }else{
    192. i = employeeService.insertSelective(employee);
    193. if(i>0){
    194. trainerMap.put("msg","添加成功");
    195. trainerMap.put("res",1);
    196. }else{
    197. trainerMap.put("msg","添加失败");
    198. trainerMap.put("res",0);
    199. }
    200. }
    201. return trainerMap;
    202. }
    203. /**
    204. * 教练删除
    205. */
    206. @RequestMapping("/admin/trainer/del.html")
    207. @ResponseBody
    208. public Map delTrainer(String eid){
    209. Map delMap = new HashMap();
    210. int i = employeeService.deleteByPrimaryKey(Integer.parseInt(eid));
    211. if(i>0){
    212. delMap.put("status",1);
    213. }else {
    214. delMap.put("status",0);
    215. }
    216. return delMap;
    217. }
    218. }

    如果也想学习本系统,下面领取。关注并回复:094ssm 

  • 相关阅读:
    【C++】动态多态与虚函数
    10年测试工程师 —— 手把手教会你做前端性能测试(超详细)
    1.1 基础热图绘制
    MFC Windows 程序设计[259]之扩展Checkbox框(附源码)
    Java学习笔记——34多线程01
    BEAPP:脑电批处理平台
    Mac 重新安装系统
    VBA技术资料MF65:将十六进制值转换为RGB颜色代码
    ssh免密登录的原理RSA非对称加密的理解
    【深度学习 | 核心概念】那些深度学习路上必经的核心概念,确定不来看看? (五)
  • 原文地址:https://blog.csdn.net/hanyunlong1989/article/details/126654525