如何快速优化云南昆明地区的微网站以提升服务质量?

摘要:服务周到的微网站建设,云南昆明网站建设快速优化,软件开发文档范例,东莞网站建设优化技术思维导图 常见知识点 一、SpringBoot 1.简单介绍一下Spring及其优缺点 1.1 概念 重量级企业开发框架EJB的替代品&#
服务周到的微网站建设,云南昆明网站建设快速优化,软件开发文档范例,东莞网站建设优化技术思维导图 常见知识点 一、SpringBoot 1.简单介绍一下Spring及其优缺点 1.1 概念 重量级企业开发框架EJB的替代品#xff0c;通过依赖注入、面向切面编程#xff0c;使用简单Java对象POJO为企业Java开发提供了相对简单的方法。 1.2 优缺点 1.2.1 优点 组件代码轻量级 …思维导图 常见知识点 一、SpringBoot 1.简单介绍一下Spring及其优缺点 1.1 概念 重量级企业开发框架EJB的替代品通过依赖注入、面向切面编程使用简单Java对象POJO为企业Java开发提供了相对简单的方法。 1.2 优缺点 1.2.1 优点 组件代码轻量级 1.2.1 缺点 配置重量级 基于注解的组件扫描、基于Java配置虽然减少甚至消除了大量XML配置还是需要不少配置。   如下需要XML或Java显式配置 开启Spring特性 ---- 事务管理、SpringMVC 启用第三方库 ---- 如基于Thymeleaf的Web视图 配置Servlet和过滤器 相关库依赖不同库之间版本冲突 2.为什要SpringBoot Spring旨在简化J2EE企业应用程序开发SpringBoot旨在简化Spring开发减少配置文件开箱即用。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/4233724a8b0c4007b3cf223761006c72.png) 3.使用SpringBoot的主要优点 开发基于Spring应用程序很容易。SpringBoot项目所需要的开发或工程时间明显减少。SpringBoot不需要编写大量样板代码、XML配置和注释。SpringBoot引导应用程序可以很容易与Spring生态系统集成 如Spring JDBC、Spring ORM、Spring Data、Spring Security等。SpringBoot遵循“固执己见的默认配置”减少开发工作默认配置可以修改。SpringBoot应用程序提供嵌入式HTTP服务器。 如Tomcat和Jetty可以轻松的开发和测试Web应用程序 ---- 普通运行Java程序的方式就能运行基于SpringBoot Web项目SpringBoot提供命令行接口CLI工具用于开发和测试SpringBoot应用程序。 如Java和Groovy。SpringBoot提供了很多插件。 如可以使用内置工具Maven和Gradle开发和测试SpringBoot应用程序。 4.什么是SpringBoot Starers 是一系列依赖关系的集合简化了项目的依赖关系大大方便了我们开发导入依赖。 如 没有他之前我们开发REST服务或Web应用程序时需要手动一个一个添加SpringMVC、Tomcat、Jackso等库 有了他之后只要添加spring-boot-starter-web一个依赖就行了。 5.SpringBoot支持哪些内嵌的Servlet容器 NameServlet VersionTomcat9.0Jetty9.4Undertow2.0 你还可以将Spring引导应用程序部署到任何Servlet3.1兼容的Web容器中。 6.SpringBootApplication注解 6.1 组成 SpringBootConfiguration 允许上下文中注册额外的bean或导入其他配置类 ComponentScan 扫描被ComponentService、Controller注解的bean注解默认会扫描改类所在包下的所有类 EnableAutoConfiguration 启用SpringBoot的自动配置机制 原理是根据import将符合配置条件的bean加载到Ioc容器中。 7.RESTful Web服务常用注解 7.1 Spring Bean相关 Autowired 自动导入对象到类中,被注入进的类同样要被 Spring 容器管理。 RestController RestController 注解是 Controller和 ResponseBody 的合集, 表示这是个控制器 bean,并且是将函数的返回值直接填入 HTTP 响应体中,是 REST风格的控制器。 Component 通用的注解可标注任意类为 Spring 组件。 如果一个 Bean 不知道属于哪个层可以使用 Component 注解标注。 Repository : 对应持久层即 Dao 层主要用于数据库相关操作。 Service 对应服务层主要涉及一些复杂的逻辑需要用到 Dao 层。 Controller 对应 Spring MVC 控制层主要用于接受用户请求并调用 Service 层返回数据给前端页面。 7.2 HTTP常见请求类型 GetMapping : GET 请求、PostMapping : POST 请求。PutMapping : PUT 请求。DeleteMapping : DELETE 请求。 7.3 前后端传值 RequestParam 以及 Pathvairable PathVariable用于获取路径参数 RequestParam用于获取查询参数。 RequestBody 用于读取 Request 请求可能是 POST,PUT,DELETE,GET 请求的body 部分并且 Content-Type 为 application/json 格式的数据接收到数据之后会自动将数据绑定到 Java 对象上去。 系统会使用 HttpMessageConverter 或者自定义的 HttpMessageConverter 将请求的 body 中的 json 字符串转换为 java 对象。 8.Spring Boot 常用的读取配置文件的方法 8.1 通过 value 读取比较简单的配置信息不被推荐 Value(${wuhan2020}) String wuhan2020;8.2 通过 ConfigurationProperties 读取并与Bean绑定 8.3 通过 ConfigurationProperties 读取配置文件并校验 8.4 PropertySource 读取指定的 properties 文件 import lombok.Getter; import lombok.Setter; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; Component PropertySource(classpath:website.properties) Getter Setter class WebSite {Value(${url})private String url; }使用 Autowired private WebSite webSite; System.out.println(webSite.getUrl());//https://javaguide.cn/9. Spring Boot 加载配置文件的优先级 ![在这里插入图片描述](https://img-blog.csdnimg.cn/bdd6fab793ff45a7805c9e8e6014943c.png) 10. 常用的 Bean 映射工具有哪些 Bean 映射工具有属性拷贝类功能可以帮助我们节省大量的 set 和 get 操作。 常用如下 Spring BeanUtils、MapStruct、Apache BeanUtils、ModelMapper、Dozer、Orika、JMapper 。 推荐用MapStruct、Spring BeanUtils 11.Spring Boot 如何做请求参数校验 只需要引入要 spring-boot-starter-web 依赖就够了它的子依赖包含了我们所需要的东西。 11.1 校验注解 1JSR 提供的校验注解 Null 被注释的元素必须为 nullNotNull 被注释的元素必须不为 nullAssertTrue 被注释的元素必须为 trueAssertFalse 被注释的元素必须为 falseMin(value) 被注释的元素必须是一个数字其值必须大于等于指定的最小值Max(value) 被注释的元素必须是一个数字其值必须小于等于指定的最大值DecimalMin(value) 被注释的元素必须是一个数字其值必须大于等于指定的最小 值DecimalMax(value) 被注释的元素必须是一个数字其值必须小于等于指定的最大 值Size(max, min) 被注释的元素的大小必须在指定的范围内Digits (integer, fraction) 被注释的元素必须是一个数字其值必须在可接受的 范围内Past 被注释的元素必须是一个过去的日期Future 被注释的元素必须是一个将来的日期Pattern(regex,flag) 被注释的元素必须符合指定的正则表达式 2Hibernate Validator 提供的校验注解 NotBlank(message ) 验证字符串非 null且长度必须大于 0Email 被注释的元素必须是电子邮箱地址Length(min,max) 被注释的字符串的大小必须在指定的范围内NotEmpty 被注释的字符串的必须非空Range(min,max,message) 被注释的元素必须在合适的范围内 使用示例 Data AllArgsConstructor NoArgsConstructor public class Person {NotNull(message classId 不能为空)private String classId;Size(max 33)NotNull(message name 不能为空)private String name;Pattern(regexp ((^Man$|^Woman$|^UGM$)), message sex 值不在可选范围NotNull(message sex 不能为空)private String sex;Email(message email 格式不正确)NotNull(message email 不能为空)private String email; }11.2 验证请求体(RequestBody) 我们在需要验证的参数上加上了 Valid 注解如果验证失败它将抛出 MethodArgumentNotValidException 。 默认情况下Spring 会将此异常转换为 HTTP Status 400错误请求。 RestController RequestMapping(/api) public class PersonController {PostMapping(/person)public ResponseEntityPerson getPerson(RequestBody Valid Person person)return ResponseEntity.ok().body(person);} }11.3 验证请求参数(Path Variables 和 Request Parameters) 一定一定不要忘记在类上加上 Validated 注解了这个参数可以告诉 Spring 去校验方法参数。 RestController RequestMapping(/api) Validated public class PersonController {GetMapping(/person/{id})public ResponseEntityInteger getPersonByID(Valid PathVariable(id) Mreturn ResponseEntity.ok().body(id);}PutMapping(/person)public ResponseEntityString getPersonByName(Valid RequestParam(name)return ResponseEntity.ok().body(name);} }12.Spring Boot 中如何实现定时任务 ? 12.1 Scheduled 注解 创建一个定时任务 Component public class ScheduledTasks {private static final Logger log LoggerFactory.getLogger(ScheduledTasks.cprivate static final SimpleDateFormat dateFormat new SimpleDateFormat(H/*** fixedRate固定速率执行。每5秒执行一次。*/Scheduled(fixedRate 5000)public void reportCurrentTimeWithFixedRate() {log.info(Current Thread : {}, Thread.currentThread().getName());log.info(Fixed Rate Task : The time is now {}, dateFormat.format(new} } 112.2 EnableScheduling 注解 需要在启动类上加上 EnableScheduling 注解这样才可以启动定时任务。EnableScheduling 注解的作用是发现注解 Scheduled 的任务并在后台执行该任务。 二、Netty 1.概述 1.1 为什么要选Netty? 使用Netty不必编写复杂的逻辑代码去实现通信再也不需要去考虑性能问题不需要考虑编码问题半包读写等问题。Netty是最流行的NIO框架它的健壮性、功能、性能、可定制性和可扩展性在同类框架都是首屈一指的.已经得到成百上千的商业/商用项目验证如Hadoop的RPC框架Avro、RocketMQ以及主流的分布式通信框架Dubbox 1.2 BIO、NIO、AIO 1.3 Netty简介 Netty 是由 JBOSS 提供的一个 Java 开源框架 现为 Github 上的独立项目。Netty 是一个异步的、 基于事件驱动的网络应用框架 用以快速开发高性能、 高可靠性的网络 IO 程序。Netty 主要针对在 TCP 协议下 面向 Clients 端的高并发应用 或者 Peer-to-Peer 场景下的大量数据持续传输的应用。Netty 本质是一个 NIO 框架 适用于服务器通讯相关的多种应用场景。 1.4 Netty应用场景 1.4.1 互联网行业 分布式系统中各个节点之间需要远程服务调用 高性能的 RPC 框架必不可少 Netty 作为异步高性能的通信框架 往往作为基础通信组件被这些 RPC 框架使用。典型的应用 阿里分布式服务框架 Dubbo 的 RPC 框架使用 Dubbo 协议进行节点间通信 Dubbo 协议默认使用 Netty 作为基础通信组件 用于实现各进程节点之间的内部通信 1.4.2 游戏行业 无论是手游服务端还是大型的网络游戏Java 语言得到了越来越广泛的应用。Netty 作为高性能的基础通信组件 提供了 TCP/UDP 和 HTTP 协议栈 方便定制和开发私有协议栈 账号登录服务器。地图服务器之间可以方便的通过 Netty 进行高性能的通信。 1.4.3 大数据领域 经典的 Hadoop 的高性能通信和序列化组件 Avro 的 RPC 框架 默认采用 Netty 进行跨界点通信。它的 Netty Service 基于 Netty 框架二次封装实现。地图服务器之间可以方便的通过 Netty 进行高性能的通信。 1.5 其他开源项目用到Netty Netty官网 本篇主要参考链接如下 Netty 介绍和应用场景(一) 本篇文章主要参考链接如下 参考链接2-JavaGuide 持续更新中… 随心所往看见未来。Follow your heartsee light 欢迎点赞、关注、留言一起学习、交流