【完结14章】鸿蒙系统实战短视频App 从0到1掌握HarmonyOS
给大家分享一套视频课程——鸿蒙系统实战短视频App 从0到1掌握HarmonyOS,已完结14章,附源码。大家下载学习。
华为鸿蒙系统是一款全新的面向全场景的分布式操作系统,创造一个超级虚拟终端互联的世界,将人、设备、场景有机地联系在一起,将消费者在全场景生活中接触的多种智能终端,实现极速发现、极速连接、硬件互助、资源共享,用合适的设备提供场景体验。
鸿蒙的英文名是HarmonyOS,意为和谐。这个新的操作系统将打通手机、电脑、平板、电视、 工业自动化控制、无人驾驶、车机设备 、智能穿戴统一成一个操作系统,并且该系统是面向下一代技术而设计的,能兼容全部安卓应用的所有Web应用。若安卓应用重新编译,在鸿蒙OS上,运行性能提升超过60%。 鸿蒙OS架构中的内核会把之前的Linux内核、鸿蒙OS微内核与LiteOS合并为一个鸿蒙OS微内核。 创造一个超级虚拟终端互联的世界,将人、设备、场景有机联系在一起。同时由于鸿蒙系统微内核的代码量只有Linux宏内核的千分之一,其受攻击几率也大幅降低。
分布式架构首次用于终端OS,实现跨终端无缝协同体验;确定时延引擎和高性能IPC技术实现系统天生流畅; 基于微内核架构重塑终端设备可信安全;对于消费者而言,HarmonyOS通过分布式技术,让8+N设备具备智慧交互的能力。在不同场景下,8+N配合华为手机提供满足人们不同需求的解决方案。对于智能硬件开发者,HarmonyOS可以实现硬件创新,并融入华为全场景的大生态。对于应用开发者,HarmonyOS让他们不用面对硬件复杂性,通过使用封装好的分布式技术APIs,以较小投入专注开发出各种全场景新体验。
对于一些小系统来讲,出现异常直接抛就行,甚至不规范的使用,但是我们这里规范一些,引入自定义异常,这么一来可以更加规范我们的项目。与此同时可以使得代码解耦。提高可用性。
package com.imooc.exception;
import com.imooc.grace.result.ResponseStatusEnum;
/**
* 优雅处理异常,统一封装
*/
public class GraceException {
public static void display(ResponseStatusEnum responseStatus) {
throw new MyCustomException(responseStatus);
}
}
package com.imooc.exception;
import com.imooc.grace.result.ResponseStatusEnum;
import com.imooc.utils.MD5Utils;
/**
* 自定义异常
* 目的:1. 统一异常处理和管理
* 2. service与controller错误解耦,不会被service返回的类型而限制
*
* RuntimeException: 没有侵入性,如果继承Exception,则代码中需要使用try/catch
*/
public class MyCustomException extends RuntimeException {
private ResponseStatusEnum responseStatus;
public MyCustomException(ResponseStatusEnum responseStatus) {
super("异常状态码: " + responseStatus.status() + "; 异常信息: " + responseStatus.msg());
this.responseStatus = responseStatus;
}
public ResponseStatusEnum getResponseStatus() {
return responseStatus;
}
public void setResponseStatus(ResponseStatusEnum responseStatus) {
this.responseStatus = responseStatus;
}
}
package com.imooc.exception;
/**
* 统一异常拦截处理
* 可以针对异常类型进行补货处理,然后返回信息到页面
*/
@ControllerAdvice
public class GraceExceptionHandler {
final static Logger logger = LoggerFactory.getLogger(GraceExceptionHandler.class);
/**
* 只要抛出MyCustomException,就会被此方法拦截到,随后可以自定义处理
* @param e
* <a href="/user/return" title="@return">@return</a>
*/
@ExceptionHandler(MyCustomException.class)
@ResponseBody
public GraceJSONResult returnMyException(MyCustomException e) {
logger.error(e.getMessage());
e.printStackTrace();
return GraceJSONResult.exception(e.getResponseStatus());
}
}
一键登录注册的原理就是整合了注册和登录,查询数据库,该用户是否注册过。
如果用户不为空并且状态已经冻结,则直接抛出异常,无法登录。
如果没有注册过,注册用户信息入库,用户状态未激活。
接口 com.imooc.user.service.UserService.java
/**
* 判断用户是否存在
*/
public AppUser queryMobileIsExist(String mobile);
/**
* 创建用户
*/
public AppUser createUser(String mobile);
文件上传,前端构建file文件对象,那么后端客户获得MultipartFile对象,从中就能拿到file流,随后进行输出保存。当然我们需要验证后缀名,如果不验证,那么非法用户会上传恶意脚本文件来攻击你的服务器。
com.imooc.api.controller.files.FileUploaderControllerApi
@Api(value = "文件上传controller", tags = {"文件上传controller"})
@RequestMapping("fs")
public interface FileUploaderControllerApi {
@ApiOperation(value = "上传用户头像", notes = "上传用户头像", httpMethod = "POST")
@PostMapping("uploadFace")
public GraceJSONResult uploadFace(
@RequestParam String userId,
MultipartFile file) throws Exception;
}
![QQ截图20231204142338.png](https://static.golangjob.cn/231204/afb98204fb058ebaeb8fcc3a2e02af72.png)
有疑问加站长微信联系(非本文作者)