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

  • 相关阅读:
    SCUT
    模板
    重链剖分
    树的重心
    SCUT
    SCUT
    SCUT
    SCUT
    SCUT
    SCUT
  • 原文地址:https://www.cnblogs.com/alliswelltome/p/9375014.html
Copyright © 2020-2023  润新知