1.redis memcache es
es的查询功能很强大 但是查询语dsl言很麻烦 用插件(elasticsearch-sql)
es是一个高扩展 开源的全文搜索和分析引擎 可以准确地快速存储 搜索 分析海量的数据
解决对大规模数据检索的要求 分布式全文检索
redis支持的数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)
redis是非关系型数据库 可持久化(可持久化就是把内存的数据写到磁盘中 防止服务器宕机 内存数据丢失)
java使用redis基本操作
string:set(key value) get
list:
rpush (key value)在名称为key的list尾部添加一个元素value
lpush(key value)在名称为key的list头部添加一个元素value
llen(key)返回名称为key的list长度
lrange(key start end)
hgetAll(key)返回哈希表key中,所有的域和值
hash:
hset(key field value)将哈希表key中的域field的值设为value
hget(key field)返回哈希表key中给定域field的值
set:
sadd(key member)将member元素加入到集合key当中
srem (key member)移除集合中的member元素
smembers(key)返回集合key中的所有成员
sismember(key member)判断member元素是否是集合key的成员。是(true),否则(false)
Jedis redis = new Jedis ("192.168.10.64",6379);//连接redis
2. 如何创建线程 为何创建线程
1.避免阻塞
2.提高资源利用率 提高程序处理效率
3.提高cpu利用率 提升软件运行速度
创建线程的两种方式:继承thread类 实现runnable接口
必须重写润方法 在润方法中定义需要执行的任务
创建好自己的线程类之后 就可以创建线程对象了 通过start方法启动线程
3. java项目部署
java项目使用maven插件和docker实现自动打包部署运行
使用maven的打包插件maven-assembly-plugin以及docker的打包功能实现自动打包部署并运行的功能
3. 联合索引
联合索引的最左前缀匹配原则即最左优选
例如:key test_col1_col2_col3 on test(col1_col2_col3))
联合索引test_col1_col2_col3实际建立了(col1),(col1,col2),(col1,col2,col3)三个索引
4.事务
数据库事务
四大特性ACID
原子性atomicity:指事务包含的所有操作要么全部成功 要么全部失败回滚
一致性consistency:指事务必须使数据库从一个一致性状态变换到另一个一致性状态 也就是说一个事物执行之前和执行之后都必须处于一致性状态
隔离性isolation:是指当多个用户并发访问数据库时比如操作同一张表时 数据库为每一个用户开启的事务 不能被其他事务的操作打扰 多个并发事务之间要相互隔离
持久性durability:是指一个事物一旦被提交了 那么对数据库中的数据的改变是永久性的 即便在数据库系统遇到故障的情况下 也不会丢失提交事务的操作
5. java异常
error是无法处理的异常
exception 比如nullpointerexception
在java中 如果需要处理异常 必须现对异常进行捕获 然后对异常情况进行处理
使用try catch关键字即可
try包围的代码说明可能发生异常 一旦发生异常 便会被catch捕获到 然后在catch块中进行异常处理
try { //执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容 }
catch { //除非try里面执行代码发生了异常,否则这里的代码不会执行 }
finally { //不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally }
第二种处理异常是抛出异常 让调用者处理 自己不做具体的处理 用throw和throws关键字
throws在方法函数头 throw在函数体
throws表示出现异常是一种可能 并不一定会发生
throw是抛出异常 一定会异常
6. list set
list set都是collection的子接口
set不允许重复 lise允许
set无序 list有序
set只能有一个null Set底层是Map HashMap可以有1个key为null的元素,TreeMap不能有key为null的元素
list可以存储多个null
7. object类
registerNatives() //私有方法
getClass() //返回此 Object 的运行类。
hashCode() //用于获取对象的哈希值。
equals(Object obj) //用于确认两个对象是否“相同”。
clone() //创建并返回此对象的一个副本。
toString() //返回该对象的字符串表示。
notify() //唤醒在此对象监视器上等待的单个线程。
notifyAll() //唤醒在此对象监视器上等待的所有线程。
wait(long timeout) //在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或 者超过指定的时间量前,导致当前线程等待。
wait(long timeout, int nanos) //在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。
wait() //用于让当前线程失去操作权限,当前线程进入等待序列
finalize() //当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。