Redis:
1.Redis的数据结构:
redis的存储: key:value的格式进行存储.
其中key都是字符串,value有5中不同的数据结构
* value的数据结构:
1)字符串类型 String
2)哈希类型 hash -> map格式
3)列表类型 list -> linkedList格式, 支持重复元素
4)集合类型 set -> 不允许重复元素
5)有序集合类型 sortedset -> 不允许重复元素,且元素有顺序
* 通用命令:
1)keys * : 查询所有的键
2)type key: 获取键对应的value的类型
3)del key: 删除指定的key value
___________________________________________________
Jedis:
1.概念:java操作redis数据库的工具
2.使用步骤:
1).下载jedis的jar包
* commons-pool2-2.3.jar
* jedis-2.7.0.jar
2).使用
a.获取连接
b.相关操作 - 增删改查
c.关闭连接
3.Jedis的连接池: JedisPool
1)使用步骤:
a.创建JedisPool连接池对象
b.调用方法 getresource() 获取jedis连接
2).优化 - 连接池工具类
* 使用JedisPoolutils
__________________________________________________________
Maven:项目管理工具
1.作用:
* maven 统一集中管理所有的依赖包.
* maven会自动解决重复和冲突问题
2.统一管理jar包的地方:仓库
1)本地仓库 - 个人维护
2)私服(远程仓库) - 公司维护
3)中央仓库 - maven团队维护
3.Maven的安装和配置
* 安装:将bin目录添加到环境变量中
命令行查看版本: cmd -> mvn -v
* 配置:配置本地仓库路径 D:\Maven\repository
1.解压 repository
<localRepository> 配置本地仓库
* 路径上不要出现: repository/repository/xx..
* Default: ${user.home}/.m2/repository
* 默认:${user.home}:个人主目录
* <localRepository>
D:\Maven\repository(自己的本地仓库位置)
</localRepository>
* <mirror>:配置的是中央仓库
4.Maven项目目录结构:
|- src:
|- main:主程序,主要代码
|- java:java代码 (编译后和配置文件在一起)
|- resources:配置文件
|- webapps:web资源(取代原工程中的web)
|- test:测试代码
|- java:测试用的Java文件(基本是单元测试)
|- resources:测试用的配置文件
[如果没有,则找main中的配置文件]
|- target:编译后的文件
|- pom.xml:maven核心配置文件
* jar包依赖(重要)
* 版本信息
* 打包方式
* 插件
...
5.Maven的生命周期:
1)不同的命令称之为不同的生命周期
2)常用命令:
* clean:清除编译的文件
* compile:编译了主⽬录的⽂件
* test:编译并运⾏了test⽬录的代码
* package 打包
* tomcat7:run ⼀键启动
* deploy:上传到服务器,用于发布项目
3)生命周期:
* 不同的生命周期:
clean 和 compile -> 互不干扰
* 相同的生命周期
test 和 compile -> 会先执行compile
_______________________________________________________________
类加载器:
1.作用:加载字节码文件(.class)
2.分类:
1)引导类加载器:加载的都是最基础的文件
* 最基础的类: java.lang.String
2)扩展类加载器:加载的都是最基础的文件
* JDK的扩展类(基本上不考虑)
3)应用类加载器:第三⽅jar包和⾃⼰编写java⽂件
3.面试题:
* 自己写一个 java.lang.String 能不能用?
* 什么叫做双亲委派模型?
先通过引导类加载器和扩展类加载器 -> 基础的类加载器
最后才是去找应用类加载器
在加载所有类之前,都先要通过引导类加载器,扩展类加载器先去加载对应的类,当找不到对应要加载的类的时候,才会通过应用类加载器去加载.最终完成加载这个类的过程.
________________________________________________________________
反射:
1.特点: 通用性
2.将类的各个组成部分封装为其他对象,这就是反射机制
例如:
* 构造方法(Constructor)
* 属性(Field)
* 方法(Method)
3.获取class对象的方式:
1. Class.forName("全类名"):将字节码⽂件加载进内存,返回Class对象
多⽤于配置⽂件,将类名定义在配置⽂件中。读取⽂件,加载类
2. 类名.class:通过类名的属性class获取
多⽤于参数的传递
3. 对象.getClass():getClass()⽅法在Object类中定义着。
多⽤于对象的获取字节码的⽅式
4.工厂模式
* 工厂都是为了生产方法 - 都是静态方法
* 接口的意义: 不管使用的实现类是哪一个,全部都是接口类型
* 结论: 接口 + 工厂 -> 完全解耦合