更新笔记

This commit is contained in:
xiongraorao 2018-08-24 14:37:08 +08:00
parent 277362a6a1
commit 667f850743
6 changed files with 77 additions and 0 deletions

View File

@ -40,6 +40,9 @@ dependencies {
// https://mvnrepository.com/artifact/org.apache.hbase/hbase-client // https://mvnrepository.com/artifact/org.apache.hbase/hbase-client
compile group: 'org.apache.hbase', name: 'hbase-client', version: '1.2.6' compile group: 'org.apache.hbase', name: 'hbase-client', version: '1.2.6'
// https://mvnrepository.com/artifact/mysql/mysql-connector-java
compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.46'
} }
jar { jar {

View File

@ -10,6 +10,7 @@
- [数据库](#数据库) - [数据库](#数据库)
- [truncate与 delete区别](#truncate与-delete区别) - [truncate与 delete区别](#truncate与-delete区别)
- [B+树索引和哈希索引的区别](#b树索引和哈希索引的区别) - [B+树索引和哈希索引的区别](#b树索引和哈希索引的区别)
- [mysql 分库分表](#mysql-分库分表)
- [Linux](#linux) - [Linux](#linux)
- [Top 查看系统信息](#top-查看系统信息) - [Top 查看系统信息](#top-查看系统信息)
- [Linux 内核空间和用户空间](#linux-内核空间和用户空间) - [Linux 内核空间和用户空间](#linux-内核空间和用户空间)
@ -113,6 +114,30 @@ B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差
说白了等值查询的时候Hash索引才有用武之地。 说白了等值查询的时候Hash索引才有用武之地。
## mysql 分库分表
**分表:**
分表策略可以划分为垂直拆分和水平拆分。
垂直拆分把表的字段进行拆分。一方面减少客户端和数据库之间的网络传输。一方面单个数据块存放的数据更多查询的时候就可以减少I/O次数。
垂直拆分建议:
1. 将不常用的字段单独拆分到林外一张扩展表。
2. 将大文本的字段单独拆分到另外一张扩展表。
3. 将不经常修改的字段放在同一张表中,经常改变的字段放在另一张表中。
4. 对于需要经常关联查询的字段,建议放在同一张表中。不然联合查询的时候,会给数据库带来额外压力。
水平拆分:拆分表的行。
水平拆分策略取模分表时间维度分表自定义hash分表等。
取模分表和自定义hash分表属于随机分表。时间维度分表属于连续分布表。随机分表可以避免热点问题读写相对均匀连续分表有热点问题但是避免了跨表查询的复杂问题。
**分库:**
垂直拆分:按照业务和功能划分数据库
水平拆分:两个数据库的表结构一样,划分方法同水平拆分表。
# Linux # Linux
## Top 查看系统信息 ## Top 查看系统信息

View File

@ -12,6 +12,7 @@
- [抽象类和接口](#抽象类和接口) - [抽象类和接口](#抽象类和接口)
- [java 重写和重载的区别](#java-重写和重载的区别) - [java 重写和重载的区别](#java-重写和重载的区别)
- [Synchronized 和 volitate区别](#synchronized-和-volitate区别) - [Synchronized 和 volitate区别](#synchronized-和-volitate区别)
- [Synchronized 的内部实现](#synchronized-的内部实现)
- [异常](#异常) - [异常](#异常)
- [String StringBuffer StringBuilder的区别](#string-stringbuffer-stringbuilder的区别) - [String StringBuffer StringBuilder的区别](#string-stringbuffer-stringbuilder的区别)
- [运行速度:](#运行速度) - [运行速度:](#运行速度)
@ -40,6 +41,9 @@
- [接口默认方法](#接口默认方法) - [接口默认方法](#接口默认方法)
- [socket 编程](#socket-编程) - [socket 编程](#socket-编程)
- [Java 集合类的底层实现](#java-集合类的底层实现) - [Java 集合类的底层实现](#java-集合类的底层实现)
- [.class 和 getclass的区别](#class-和-getclass的区别)
- [加载时机不同](#加载时机不同)
- [静态内部类](#静态内部类)
- [参考文档](#参考文档) - [参考文档](#参考文档)
<!-- /TOC --> <!-- /TOC -->
@ -379,6 +383,10 @@ java 类可以继承一个抽象类,实现多个接口,都不能被实例化
5) 当一个域的值依赖于它之前的值时volatile就无法工作了如n=n+1,n++等。如果某个域的值受到其他域的值的限制那么volatile也无法工作如Range类的lower和upper边界必须遵循lower<=upper的限制。 5) 当一个域的值依赖于它之前的值时volatile就无法工作了如n=n+1,n++等。如果某个域的值受到其他域的值的限制那么volatile也无法工作如Range类的lower和upper边界必须遵循lower<=upper的限制。
6) 使用volatile而不是synchronized的唯一安全的情况是类中只有一个可变的域。 6) 使用volatile而不是synchronized的唯一安全的情况是类中只有一个可变的域。
# Synchronized 的内部实现
通过javap反编译代码可以看到对于同步方法JVM采用**ACC_SYNCHRONIZED**标记符来实现同步。 对于同步代码块。JVM采用**monitorenter、monitorexit**两个指令来实现同步。
# 异常 # 异常
Throwable 可以用来表示任何可以作为异常抛出的类,分为两种: Error 和 Exception。其中 Error 用来表示 JVM 无法处理的错误Exception 分为两种: Throwable 可以用来表示任何可以作为异常抛出的类,分为两种: Error 和 Exception。其中 Error 用来表示 JVM 无法处理的错误Exception 分为两种:
@ -909,6 +917,25 @@ private interface DefaulableFactory {
[参考文档](https://blog.csdn.net/qq_25868207/article/details/55259978) [参考文档](https://blog.csdn.net/qq_25868207/article/details/55259978)
# .class 和 getclass的区别
最明显的一个区别是,.class 可以直接从类名获取,.getClass() 是一个对象实例的方法。
## 加载时机不同
Class.forName(),getClass()在运行时加载;
Class.class是在编译器加载即.class是静态加载
.getClass()是动态加载。
## 静态内部类
Iterator it = s.iterator();得到的it的真正类型是KeyIterator是Iterator的子类按常理来说应该可以执行next()方法但是值得注意的是KeyIterator是hashmap的内部类JAVA给的提示是cannot access a member of class java.util.HashMap$KeyIterator withmodifiers "public"
从上面的那些例子上也能看出,除内部类外的其他类的应用上.class功能完全等于.getClass()!只是一个是用类直接获得的,一个是用实例获得的。
# 参考文档 # 参考文档
- [HashMap? ConcurrentHashMap? 相信看完这篇没人能难住你!](https://crossoverjie.top/2018/07/23/java-senior/ConcurrentHashMap/) - [HashMap? ConcurrentHashMap? 相信看完这篇没人能难住你!](https://crossoverjie.top/2018/07/23/java-senior/ConcurrentHashMap/)

View File

@ -39,6 +39,7 @@
- [LinkedList](#linkedlist) - [LinkedList](#linkedlist)
- [ArrayDeque](#arraydeque) - [ArrayDeque](#arraydeque)
- [Vector](#vector) - [Vector](#vector)
- [线程间通信](#线程间通信)
- [参考文档](#参考文档) - [参考文档](#参考文档)
<!-- /TOC --> <!-- /TOC -->
@ -1043,6 +1044,24 @@ ArrayDeque: 数组实现的双端队列默认队列长度为16队列满了
Vector 是一个线程安全的动态数组内部采用数组实现和ArrayList的区别在于ArrayList的增长速度是50%,而 Vector 的增长速度为100% Vector 是一个线程安全的动态数组内部采用数组实现和ArrayList的区别在于ArrayList的增长速度是50%,而 Vector 的增长速度为100%
# 线程间通信
1. 同步方法
synchronized或者ReentrantLock
2. while 轮询
3. wait/notify机制
4. 管道通信
PipedInputStream
5. 共享内存(共享对象)
6. volitale、原子类
# 参考文档 # 参考文档
- [java并发编程--Executor框架](https://www.cnblogs.com/MOBIN/p/5436482.html) - [java并发编程--Executor框架](https://www.cnblogs.com/MOBIN/p/5436482.html)

View File

@ -41,6 +41,7 @@ Java后端开发大数据、分布式应用等
华为 |8.1 | 8.21 华为 |8.1 | 8.21
百度 | 8.22 | 8.22(新投递) | 百度 | 8.22 | 8.22(新投递) |
网易 | 8.22 | 8.22(新投递) | 网易 | 8.22 | 8.22(新投递) |
腾讯 | 8.22 | 8.22(新投递)
# 2 复习内容 # 2 复习内容

View File

@ -145,6 +145,8 @@
- 数据库事务 - 数据库事务
- 四大基本特性?什么是隔离性?数据库并发有几个隔离级别? - 四大基本特性?什么是隔离性?数据库并发有几个隔离级别?
- MySQL默认级别 - MySQL默认级别
- mysql 分库分表
-
# Linux # Linux