vue学习记录之axios
这篇介绍框架开发中用的比较多的HTTP工具axios,是一个类似ajax但比ajax强点的网络工具库。
axios是一个类似于ajax的对HTTP请求封装的工具,比ajax多了一点新的特性,使用了ES6中的Promise管理异步,比传统的callback处理更加方便、简洁。以及提供了丰富的配置项和拦截器功能(类似于Java语言的Spring MVC框架中的拦截器),可以更加方便处理请求Token等数据。
一杯清茶,一本书籍,一个明媚的下午。
这篇介绍框架开发中用的比较多的HTTP工具axios,是一个类似ajax但比ajax强点的网络工具库。
axios是一个类似于ajax的对HTTP请求封装的工具,比ajax多了一点新的特性,使用了ES6中的Promise管理异步,比传统的callback处理更加方便、简洁。以及提供了丰富的配置项和拦截器功能(类似于Java语言的Spring MVC框架中的拦截器),可以更加方便处理请求Token等数据。
学习前端框架vue、react等之前学习下ES6的新特性会方便理解,因为框架中会大量的使用这些特性,如果不了解可能会比较懵逼。
ES6其实是一个泛指,ES是ECMAScript的缩写,ECMAScript是一种由Ecma国际在标准ECMA-262中定义的脚本语言规范, 目前只有js对其进行了实现,而ES6是由于ES在6这个版本做了一个大的版本升级,后续的版本只有少量的新增,所以常用ES6作为一个分割点,其代指js的新特性。截至目前ES已更新到11,一般1年一更新。
let和const关键字是ES6中新增的两个变量定义的关键字,主要用来解决var关键字的三个弊端。
curl下载文件curl -O url
启动单机模式的 Nacos 连接宿主机的 MySQL,并启用 Auth 认证。
启动后需要在hosts文件中配上映射127.0.0.1 local.gitlab.com
然后http访问这个域名即可。ssh的22端口已被占用,所有要换个端口。其实ssh的访问方式我并没有搞成功,看其他的文章说22,443端口还需要证书等,而我这个本地的服务也是临时使用也就没有继续研究下去。如果又知道的可以评论里说下,在此感谢!
目前Mac采用的是zsh终端,所以用户目录下默认是有一个.zshrc文件的,在该文件中将上述代码添加进去然运行source .zshrc命令并重启终端就能生效了,如果使用的不是zsh终端,那么可以放在用户目录下的.bash_profile文件里,没有就创建一个。
将上述代码添加到用户目录下的.vimrc文件中,文件不存在可新建一个。保存后运行source .vimrc命令并重启终端。
.zshenv总是被读取,所以通常把$PATH, $EDITOR等变量写在这里,这样无论是在shell交互,或者运行程序都会读取此文件
Caffeine被称为目前JVM缓存性能最好的缓存,本篇讲述的就是JVM缓存的另一种实现。Caffeine是对Guava缓存的升级版(如果需要了解Guava Cache可参考上篇👉学习JVM缓存之GuavaCache),就和Mybatis与Mybatis Plus一样。Caffeine也是Spring5.x后使用的缓存框架,作为Spring推荐的缓存框架我们有必要了解一下。


JVM缓存就是将数据缓存到JVM内存中,这种缓存是最快的一种缓存方式。如果缓存的数据不多,并且服务是单机的话,那么就可以考虑使用JVM缓存而非使用第三方的redis、memcache等。
JVM缓存我们可以选择将需要缓存的数据存储到一个Map中,然后启动一个线程去管理这个Map中的数据。Guava Cache做的就是这样的一件事。当然它会把这件事做好的同时拓展更多的接口,使开发者使用时更加方便。
Guava Cache提供了Builder模式构建缓存对象。
在springboot 2.3.x以前的版本中,spring-boot-start-web中会将其默认引入,之后的版本将其剔除,需要手动引入下面的依赖
常用来使用的注解包括以下这些:
也就是javax.validation.constraints包里的注解
MapStruct是一个用于生成类型安全,高性能和无依赖的bean映射代码的注释处理器。简而言之就是一个可以在我们做vo->dto->do转换时通过注解在编译时生成类型转换使用的代码,免去了我们每次都要使用BeanCopy或者遍历去将每个字段的值设置到另一个对象里的过程。
在规范的项目中是需要有VO、DTO、DO、BO等领域模型来划分不同层级使用的Java类,这样做的好处就是不会将一个类中冗杂过多的无用属性,而且负责某一层开发的人员如果需要做改动可以最小化影响其他层级的开发人员。
不可否认对象copy的方式确实相对第一种会简单很多,也能节省很多代码,但是它依旧有局限性,比如遇到两个属性的类型不同、需要将源对象里的某个对象属性中的一个属性设置到目标对象里的某个属性上时就不能这么简单处理了。