欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-10-23 13:53:23
线程池 ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue, ThreadFactory thre ......

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