分类 技术相关 下的文章

java抽象类 vs 接口理解

前提条件

对抽象类和接口有了基本概念的了解。大部分文章整的比较复杂,虽然说得对,但还是不好区分。

核心概要总结如下:

-- 抽象类 跟普通类没啥大区别,只是多了抽象方法。不能new。 属于顶层设计,定义出共有的属性和方法。
含有抽象方法一定是抽象类。

-- 接口,更严格,不能new
只能定义常量 public static final,默认的可忽略
只能有抽象方法,不能有构造方法,默认就是public abstract 可以忽略
jdk1.8之后,放宽条件,可以 defalut关键字声明普通方法,静态方法

使用场景:

抽象类,一般用于含有共有属性及功能的抽取,如人是一个抽象类,下面还有男人 女人等,人都有公用的属性和方法。java是单继承

接口,可以多实现、继承,解耦,多态。 动物>> 狗 猫

综上,大概就是这个样子,相比其它文字的长篇大论是不是清晰很多,只要理解核心即可。

解决办法:
Remove this line from the build.gradle on the specified project (移除build.gradle的这个配置)

apply from: 'https://raw.github.com/twotoasters/gradle-mvn-push/master/gradle-mvn-push.gradle'

library has gradle tasks for uploading to the Maven repository that require some properties to be set for the gradle environment, in your project you don't need/want that.

mybatis开启缓存
MyBatis的缓存分为一级缓存和二级缓存(全局缓存) ,缓存示意图如下图所示。默认情况下,一级缓存是开启的,且不能被关闭。
一次数据库 SqlSession会话中,执行多次查询条件完全相同的SQL,MyBatis提供了一级缓存的方案优化这部分场景,如果是相同的SQL语句,会优先命中一级缓存,避免直接对数据库进行查询,提高性能。

二级缓存(全局缓存)开启后,同一个namespace下的所有操作语句,都影响着同一个Cache,即二级缓存被多个SqlSession共享,是一个全局的变量。
当开启缓存后,数据的查询执行的流程就是 二级缓存 -> 一级缓存 -> 数据库。

mybatis 一级二级缓存

nginx

使用try_files属性

location / {
  root   /app/web;
  try_files $uri $uri/ @router; #检测文件是否存在不存在则重定向到首页目录    防止404
  index  index.html index.htm;
  #proxy_set_header        Host $host;
  #nginx非80端口处理 加上 :$server_port
   client_max_body_size 10m;
   client_body_buffer_size 128k;
}
location @router {
   rewrite ^.*$ /index.html last;
}

在项目的子路由下刷新页面出现了404,这是因为刷新页面时访问的资源在服务端找不到,因为vue-router设置的路径不是真实存在的路径。
当用户请求 http://localhost/example 时,这里的 $uri 就是 /example。
try_files 会到硬盘里尝试找这个文件。如果存在名为 /$root/example(其中 $root 是项目代码安装目录)的文件,就直接把这个文件的内容发送给用户。

免责声明
本博客部分内容来自于互联网,不代表作者的观点和立场,如若侵犯到您的权益,请联系[email protected]。我们会在24小时内进行删除。