大型网站系统与java中间件实践-阅读笔记

线程池  ThreadPoolExecutor(int corePoolSize,

                          int maximumPoolSize,

                          long keepAliveTime,

                          TimeUnit unit,

                          BlockingQueue<Runnable> workQueue,

                          ThreadFactory threadFactory,

                          RejectedExecutionHandler handler) 

 

1.synchronized

2.volatile

3.Reentrantlock ReentrantReadWriteLock

4.Atomics

5.wait notify notifyAll

6.CountDownLatch

7.CyclicBarrier  循环屏障 

    

示例:

class Solver {

*   final int N;

*   final float[][] data;

*   final CyclicBarrier barrier;

*

*   class Worker implements Runnable {

*     int myRow;

*     Worker(int row) { myRow = row; }

*     public void run() {

*       while (!done()) {

*         processRow(myRow);

*

*         try {

*           barrier.await();

*         } catch (InterruptedException ex) {

*           return;

*         } catch (BrokenBarrierException ex) {

*           return;

*         }

*       }

*     }

*   }

*

*   public Solver(float[][] matrix) {

*     data = matrix;

*     N = matrix.length;

*     Runnable barrierAction =

*       new Runnable() { public void run() { mergeRows(…); }};

*     barrier = new CyclicBarrier(N, barrierAction);

*

*     List<Thread> threads = new ArrayList<Thread>(N);

*     for (int i = 0; i < N; i++) {

*       Thread thread = new Thread(new Worker(i));

*       threads.add(thread);

*       thread.start();

*     }

*

*     // wait until done

*     for (Thread thread : threads)

*       thread.join();

*   }

* }}

 

 

9.Semaphone 

10.Exchanger 用于两个线程之间进行数据交换

 

11 Future  FutureTask

 

12 并发容器  JUC  copyOnWrite

13 动态代理

14 反射  (1)获取对象属于哪个类  2)获取类的信息 3)构建对象 4)动态执行方法 Method method = clazz.getDeclaredMethod(“add”,int.class,int.class); method.invoke(this,1,1);

5)动态操作属性  Filed filed = clazz.getDeclaredFiled(“name”); filed.set(this,”test”);

字节码增强  javassist  cglib asm  bcel

15 网络通信  BIO NIO  AIO

16 服务框架原型 

   1) 客户端逻辑  a 获取可用服务地址列表  b 确定要调用服务的目标机器 c 请求信息序列化 d. 发送请求 e 接收结果

   2)服务端逻辑  a.启动端口进行监听 b.接收请求并进行反序列化处理 c.定位到具体的service methodName和参数 d.通过反射方式进行执行业务逻辑 e.执行结果序列化为二进制写会给请求发送端

   大概流程:   调用发起——》寻址路由——》协议适配/序列化 ——》网络传输——》反序列化/协议解析——》结果返回给调用方

  3)服务框架使用方式  a 三个基础属性:interfaceName  version group  

  4) 调用者和提供者进行直连方式进行建立连接,通过引入注册中心进行服务注册与发现,出于效率考虑,调用者会进行本地地址缓存一份,发送变更后,注册中心进行列表最新信息推送,从而更新变化。集群的负责均衡:轮询 随机 权重 

    原文作者:雨人bob
    原文地址: https://www.cnblogs.com/alliswelltome/archive/2018/07/26/9375014.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞