远程控制全过程启用和目标浏览分布式数据库:关键处理分布式系统自然环境下运用的相互之间浏览难题。是支撑点业务系统化的基本
消息中间件:处理运用中间的消息传递、耦合、多线程的难题
数据信息浏览分布式数据库:处理运用浏览数据库查询的共性问题
搭建Java分布式数据库的基本知识
JVM中堆分成三块:Young/Tenured/Perm,年轻一代/年迈代/长久代
一般来说,新目标分派在年轻一代的Eden区,也将会立即分派在年迈代,在开展年轻一代垃圾分类回收时,Eden区生存的目标被拷贝到空的Survivor区,在下一次年轻一代收购时,Eden区生存的目标和这一Survivor生存的目标被拷贝到此外哪个Survivor区,而且清除当今Survivor区,历经数次年轻一代垃圾分类回收,还生存的目标会被挪动到年迈代。
线程池
1
2
3
4
ThreadPoolExecutor tp =
new
ThreadPoolExecutor(
1
,
1
,
60
, TimeUnit, SECONDS,
new
LinkedBlockingQueue<Runnable>(count));
tp.execute(
new
Runnable(){
public
void
run(){}
});
应用线程池的方法是重复使用进程的,无需每一次都建立进程。而建立进程的花销占较为大。
synchronized
synchronized装饰静态方法、目标方式 、代码块
ReetrantLock
**出示tryLock方式 ,试着启用,假如锁被别的进程拥有,则tryLock马上回到
能够完成公平公正锁
ReentrantReadWriteLock:读写锁,用以读多写少而且读不用互斥的情景
能够有好几个Condition
volatile
由此可见性指一个进程改动变量类型后,别的进程中可以见到这一值。volatile尽管解决了由此可见性的问题,可是不可以操纵高并发
Atomics
原子操作,如AtomicInteger內部根据JNI的方法应用了硬件配置适用的CAS命令
wait、notify和notifyAll
wait是等候进程,notify是唤起一个等候进程(并不可以特定,任意),notifyAll是唤起全部的等候进程。
CountDownLatch
java.util.concurrent包中的一个类,关键出示的体制是当好几个进程都抵达了预估情况或进行预估工作中时开启恶性事件,别的进程能够等候这一恶性事件来开启自身事后的工作中。
CyclicBarrier
循环系统天然屏障,能够协作好几个进程,让好几个进程在这个天然屏障前等候,了解全部进程都抵达了这一天然屏障时,再一起执行后边的姿势。
Semaphore
Semaphore是用以管理方法信号量的,结构时传到可供管理方法的信号量的标值。假如信号量只有一个,就衰退到互斥锁了,假如超过一个,则关键用以操纵并发数。
Exchanger
用以2个进程中间开展数据传输,进程会堵塞在exchange方式 上,了解此外一个进程也来到同一个Exchanger的exchange方式 时,二者开展互换。
Future和FutureTask
Future是一个插口,FutureTask是一个实际完成类
1
2
3
4
5
6
7
8
9
10
11
Future<HashMap> future = getDataFromRemote2();
......
HashMap data = (HashMap) future.get();
public
Future<HashMap> getDataFromRemote2(){
return
threadPool.submit(
new
Callable<HashMap>(){
public
HashMap call()
throws
Exception{
return
getDataFromRemote();
}
});
}
getDataFromRemote2還是利用率getDataFromRemote进行实际操作,而且采用了线程池:把每日任务添加线程池中,把Future目标回到出来。
高并发器皿
CopyOnWrite:变更器皿时,把器皿拷贝一份开展改动,用以读多写少
Concurrent:尽可能确保读不上锁,而且改动时不危害读,因此比读写锁高些的高并发特性
动态代理
承继InvocationHandler
反射面
Java反射机制就是指在运作情况,针对随意一个类,都能了解这一类全部特性和方式 ;针对随意一个目标,都可以启用它的随意一个方式 和特性。
1
2
3
4
5
6
7
8
9
10
11
12
Class clazz = Object.getClass();
String className = clazz.getName();
Method[] methods = clazz.getDeclaredMethods();
Field[] fields = clazz.getDeclaredFields();
// 搭建目标
Class.forName(
"ClassName"
).newInstance();
// 动态性实行方式
Method method = clazz.getDeclaredMethod(
"add"
,
int
.
class
,
int
.
class
);
method.invoke(
this
,
1
,
1
);
// 动态性操作步骤
Field field = clazz.getDeclaredField(
"name"
);
field.set(
this
,
"test"
);
通信网络的挑选
BIO、NIO、AIO
第三方架构,MINA,Netty
服务项目启用端设计方案与完成
启用进行==>寻址方式路由器==>协议书兼容和实例化==>数据传输
==>反序列化 协议书分析==>获得結果回到给启用方
1、明确服务项目架构的应用方法
2、服务项目调用者与服务供应商中间通信方式的挑选
3、引进根据插口、方式 、主要参数的路由器
4、多主机房情景,防止跨主机房启用,一是在服务项目认证中心鉴别,二是详细地址过虑
5、服务项目启用端流控解决
6、实例化与反序列化解决,Java自身的实例化特性难题、跨語言难题、实例化后語言长短等
7、通信网络完成挑选:BIO、NIO、AIO
8、适用多种多样多线程服务项目启用方法:Oneway,Callback,Future,靠谱多线程
服务项目出示端设计方案与完成
1、怎样曝露远程服务
2、服务器端对恳求解决的步骤
3、实行不一样服务项目的线程池防护
4、服务项目出示端流控解决
文章推荐:
发表评论