1.淘宝镜像:
https://start.aliyun.com
2.Redis两种持久化方式:
(1)rdb(redis database)
(2)aof(append only file)
3.网络模型:
开放式系统互联通信参考模型(Open System Interconnection Reference Model),简称为OSI模型
3.rabbitmq基于高级消息队列协议(Advanced Message Queuing Protocol)
4.docker启动命令:docker run -d -p 宿主机的端口号:容器的端口号 --name 容器的名称 镜像的id
5.vue创建工程命令:vue init webpack 'project-name’
6.安装elementui命令:npm i element-ui -S
7.安装axios命令:npm install axios
7.安装 vue-cookies命令:npm install vue-cookies
8.sql执行顺序
from
join
on
where
group by(开始使用select中的别名,后面的语句中都可以使用)
avg,sum…
having
select
distinct
order by
limit
9.对v-html的文字做超出显示省略号
html代码:
<p v-html="$options.filters.ellipsis(item.title)"></p>
js代码:
filters: {
//当渲染的文字超出9字后显示省略号
ellipsis(value) {
value = value.replace(/<.*?>/ig,"") //把v-html的格式标签替换掉
if (value.length > 30) {
return value.slice(0, 30) + "...";
}else{
return value;
}
}
},
10.@JsonFormat 格式化的依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.12.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.12.3</version>
</dependency>
//或者 @DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")//注解可以以该格式注入格式
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date gmtModified;
11.开闭原则规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”
12.synchronized和lock区别:
1)Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现;
2)synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock在发生异常时,如果没有主动通过unLock()去释放锁,则很可能造成死锁现象,因此使用Lock时需要在finally块中释放锁;
3)Lock可以让等待锁的线程响应中断,而synchronized却不行,使用synchronized时,等待的线程会一直等待下去,不能够响应中断;
4)通过Lock可以知道有没有成功获取锁,而synchronized却无法办到。
5)Lock可以提高多个线程进行读操作的效率。
在性能上来说,如果竞争资源不激烈,两者的性能是差不多的,而当竞争资源非常激烈时(即有大量线程同时竞争),此时Lock的性能要远远优于synchronized。所以说,在具体使用时要根据适当情况选择。
13.软硬拷贝
软拷贝就是复制对象的值;
硬拷贝是复制这个对象所有的东西,如果该对象引用了其他对象,则引用也会改变到复制的新对象那边。
软拷贝一般是java.lang.Object 类里面的clone() 方法;
一般硬拷贝是使用序列化,然后再反析出来;(把对象写到流里面的过程叫序列化过程,从流中读取对象的过程叫反序列化过程)
transient 修饰的不能序列化,也就不能硬拷贝。
14.SQL的Foreach
将数据库中前三个数据的id修改为1,2,3;
需求:我们需要查询 blog 表中 id 分别为1,2,3的博客信息
1、编写接口
List queryBlogForeach(List ids);
2、编写SQL语句
<select id="queryBlogForeach" parameterType="list" resultType="blog">
select * from blog
<where>
<!--
collection:指定输入对象中的集合属性
item:每次遍历生成的对象
open:开始遍历时的拼接字符串
close:结束时拼接的字符串
separator:遍历对象之间需要拼接的字符串
select * from blog where 1=1 and (id=1 or id=2 or id=3)
-->
<foreach collection="ids" item="id" open="and (" close=")" separator="or">
id=#{id}
</foreach>
</where>
</select>
15.SQL片段
有时候可能某个 sql 语句我们用的特别多,为了增加代码的重用性,简化代码,我们需要将这些代码抽取出来,然后使用时直接调用。
提取SQL片段:
<sql id="if-title-author">
<if test="title != null">
title = #{title}
</if>
<if test="author != null">
and author = #{author}
</if>
</sql>
引用SQL片段:
<select id="queryBlogIf" parameterType="map" resultType="blog">
select * from blog
<where>
<!-- 引用 sql 片段,如果refid 指定的不在本文件中,那么需要在前面加上 namespace -->
<include refid="if-title-author"></include>
<!-- 在这里还可以引用其他的 sql 片段 -->
</where>
</select>
注意:
①、最好基于 单表来定义 sql 片段,提高片段的可重用性
②、在 sql 片段中不要包括 where
16.
17.Java编译是先将.java编译为.class文件,再将所.class文件交给java虚拟机运行。