大学生涯
未读最佳实践1.SpringBoot 应用如何编写 引入场景依赖 官方文档 查看自动配置了哪些(选做) 自己分析,引入场景对应的自动配置一般都生效了 配置文件中 debug=true 开启自动配置报告。 Negative(不生效) Positive(生效) 是否需要修改 参照文档修改配置项 官方文档 自己分析。xxxxProperties 绑定了配置文件的哪些。 自定义加入或者替换组件 @Bean、@Component… 自定义器 XXXXXCustomizer; 2.Lombok 简化开发Lombok 用标签方式代替构造器、getter/setter、toString()等鸡肋代码。 spring boot 已经管理 Lombok。引入依赖: 1234<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId></dependency> IDEA 中 F ...
大学生涯
未读底层注解1. @Configuration详解基本使用 Full模式与Lite模式 示例123456789101112131415161718192021222324252627/** * 1、配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例的 * 2、配置类本身也是组件 * 3、proxyBeanMethods:代理bean的方法 * Full(proxyBeanMethods = true)(保证每个@Bean方法被调用多少次返回的组件都是单实例的)(默认)全配置 * Lite(proxyBeanMethods = false)(每个@Bean方法被调用多少次返回的组件都是新创建的)轻量级配置 */@Configuration(proxyBeanMethods = false) //告诉SpringBoot这是一个配置类 == 配置文件public class MyConfig { /** * Full:外部无论对配置类中的这个组件注册方法调用多少次获取的都是之前注册容器中的单实例对象 * @return ...
大学生涯
未读一. Spring生态圈 覆盖了: web开发 数据访问 安全控制 分布式 消息服务 移动开发 批处理 Spring5重大升级 响应式编程 内部源码设计 基于Java8的一些新特性,如:接口默认实现。重新设计源码架构。 为什么用SpringBoot Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can “just run”.link 能快速创建出生产级别的Spring应用。 SpringBoot优点 Create stand-alone Spring applications 创建独立Spring应用 Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files) 内嵌web服务器 Provide opinionated ‘starter’ dependencies to simplify your build configuratio ...
一. Filter 过滤器1. 概括过滤器,顾名思义就是对事物进行过滤的,在 Web 中的过滤器,当然就是对请求进行过滤,我们使用过滤器,就可以对请求进行拦截,然后做相应的处理,实现许多特殊功能。如登录控制,权限管理,过滤敏感词汇等,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。 2. 原理当我们使用过滤器时,过滤器会对浏览器的请求进行过滤,过滤器可以动态的分为 3 个部分,1.放行之前的代码,2.放行,3.放行后的代码,这 3 个部分分别会发挥不同作用。 第一部分代码会对浏览器请求进行第一次过滤,然后继续执行 第二部分代码就是将游览器请求放行,如果还有过滤器,那么就继续交给下一个过滤器 第三部分代码就是对返回的 Web 资源再次进行过滤处理我们使用过滤器,也就是说,不止请求会经过过滤器,我们的响应也会经过过滤器。 3. api定义过滤器 12345678910111213141516171819//定义一个类,实现一个标准的Filter过滤器的接口public class DemoFilter implements Filter { ...
一. 概述Spring Security 是一个 Java 框架,用于保护应用程序的安全性。它提供了一套全面的安全解决方案,包括身份验证、授权、防止攻击等功能。Spring Security 基于过滤器链的概念,可以轻松地集成到任何基于 Spring 的应用程序中。它支持多种身份验证选项和授权策略,开发人员可以根据需要选择适合的方式。此外,Spring Security 还提供了一些附加功能,如集成第三方身份验证提供商和单点登录,以及会话管理和密码编码等。总之,Spring Security 是一个强大且易于使用的框架,可以帮助开发人员提高应用程序的安全性和可靠性。 二. 先决条件Spring Security 要求有 Java 8 或更高的运行环境。 由于 Spring Security 旨在以独立的方式运行,你不需要在你的 Java 运行时环境中放置任何特殊的配置文件。特别是,你不需要配置一个特殊的 Java 认证和授权服务(JAAS)策略文件,也不需要把 Spring Security 放到普通的 classpath 位置。 同样地,如果你使用 EJB 容器或 Servlet 容 ...
一. 设计原则1. 一致 Consistency与现实生活一致: 与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念; 在界面中一致: 所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。 2. 反馈 Feedback控制反馈: 通过界面样式和交互动效让用户可以清晰的感知自己的操作; 页面反馈: 操作后,通过页面元素的变化清晰地展现当前状态。 3. 效率 Efficiency简化流程: 设计简洁直观的操作流程; 清晰明确: 语言表达清晰且表意明确,让用户快速理解进而作出决策; 帮助用户识别: 界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。 4. 可控 Controllability用户决策: 根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策; 结果可控: 用户可以自由的进行操作,包括撤销、回退和终止当前操作等。 二. 导航导航可以解决用户在访问页面时:在哪里,去哪里,怎样去的问题。 一般导航会有「侧栏导航」和「顶部导航」2 种类型。 1. 选择合适的导航选择合适的导航可以让用户在产品的使用过程中非常流畅,相反若是不合适就会 ...
课外开发
未读响应结构一个请求的响应包含以下信息。 1234567891011121314151617181920212223{ // `data` 由服务器提供的响应 data: {}, // `status` 来自服务器响应的 HTTP 状态码 status: 200, // `statusText` 来自服务器响应的 HTTP 状态信息 statusText: 'OK', // `headers` 是服务器响应头 // 所有的 header 名称都是小写,而且可以使用方括号语法访问 // 例如: `response.headers['content-type']` headers: {}, // `config` 是 `axios` 请求的配置信息 config: {}, // `request` 是生成此响应的请求 // 在node.js中它是最后一个ClientRequest实例 (in redirects), // 在浏览器中则是 XMLHttpRe ...
课外开发
未读一. Axios 是什么?Axios 是一个基于 promise 网络请求库,作用于 node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和 node.js 中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。 文档:https://github.com/axios/axios 二. 特性 从浏览器创建 XMLHttpRequests 从 node.js 创建 http 请求 支持 Promise API 拦截请求和响应 转换请求和响应数据 取消请求 超时处理 查询参数序列化支持嵌套项处理 自动将请求体序列化为: JSON (application/json) Multipart / FormData (multipart/form-data) URL encoded form (application/x-www-form-urlencoded) 将 HTML Form 转换成 JSON 进行请求 自动转换 JSON 数据 获取浏览 ...
大学生涯
未读7. 其它 API7.1.【shallowRef 与 shallowReactive 】shallowRef 作用:创建一个响应式数据,但只对顶层属性进行响应式处理。 用法: 1let myVar = shallowRef(initialValue); 特点:只跟踪引用值的变化,不关心值内部的属性变化。 shallowReactive 作用:创建一个浅层响应式对象,只会使对象的最顶层属性变成响应式的,对象内部的嵌套属性则不会变成响应式的 用法: 1const myObj = shallowReactive({ ... }); 特点:对象的顶层属性是响应式的,但嵌套对象的属性不是。 总结 通过使用 shallowRef() 和 shallowReactive() 来绕开深度响应。浅层式 API 创建的状态只在其顶层是响应式的,对所有深层的对象不会做任何处理,避免了对每一个内部属性做响应式所带来的性能成本,这使得属性的访问变得更快,可提升性能。 7.2.【readonly 与 shallowReadonly】readonly 作用:用于创建一个对象的深只读 ...
大学生涯
未读8. Vue3 新组件8.1. 【Teleport】 什么是 Teleport?—— Teleport 是一种能够将我们的组件 html 结构移动到指定位置的技术。 1234567<teleport to="body"> <div class="modal" v-show="isShow"> <h2>我是一个弹窗</h2> <p>我是弹窗中的一些内容</p> <button @click="isShow = false">关闭弹窗</button> </div></teleport> 8.2. 【Suspense】 等待异步组件时渲染一些额外内容,让应用有更好的用户体验 使用步骤: 异步引入组件 使用 Suspense包裹组件,并配置好 default 与 fallback 12import { defineAsyncComponent, Susp ...