07 2019 档案
摘要:应用层:为应用软件提供服务,构建与TCP协议之上,屏蔽网络传输相关细节 传输层:向用户提供端到端的服务,向高层屏蔽了下层数据通信的细节 网络层 :为数据在结点之间传输创建逻辑链路 数据链路层:在通信的实体之间建立数据逻辑链路 物理层:定义物理设备如何传输数据 http:三次握手 1.客户端向服务端发
阅读全文
摘要:LongAdder 提供了原子累计值的方法。 在高并发下N多线程同时去操作一个变量会造成大量线程CAS失败然后处于自旋状态,这大大浪费了cpu资源,降低了并发性。那么既然AtomicLong性能由于过多线程同时去竞争一个变量的更新而降低的,LongAdder思路把一个变量分解为多个变量,让同样多的线
阅读全文
摘要:锁的内存语义 锁的释放与获取所建立的happen-before关系 锁的释放与内存语义 锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息 volatile的内存语义 volatile读写所建立的happens-before关系 volatile读写的内存语义 2.当写一个v
阅读全文
摘要:什么是重排序 编译器和处理期为了提高程序的运行性能,对指令进行重新排序。 数据依赖性 as-if-serial 数据依赖性 1.写后读 2.读后写 3.写后写 指令重排序: 编译器重排序和处理器重排序 happens-before happen-before 是用来指定两个操作之间的执行顺序,提供跨
阅读全文
摘要:Executor 它在java.util.cocurrent 包下,通过该框架来控制线程的启动、执行和关闭,可以简化并发编程的操作。因此,在Java 5之后,通过Executor来启动线程比使用Thread的start方法更好,除了更易管理,效率更好(用线程池实现,节约开销)外,还有关键的一点:有助
阅读全文
摘要:线程池 线程池线程池概述创建一个线程池并提交线程任务线程池源码解析参数认识构造方法提交任务addWorker执行任务关闭线程池 线程池线程池概述创建一个线程池并提交线程任务线程池源码解析参数认识构造方法提交任务addWorker执行任务关闭线程池 线程池概述 什么是线程池 为什么使用线程池 线程池的
阅读全文
摘要:同步容器 性能差,线程不安全 Vector (线程安全)--> ArrayList(线程不安全) Vector 直接在方法上加同步,保证线程安全,不适用并发执行,性能损耗大 arrayList ArrayList<String> s = new ArrayList<>(); Collections.
阅读全文
摘要:用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 多线程的目的不仅仅是提高程序运行的性能,但是可以充分利用CPU资源 fork() 在当前线程运行的线程池中安排一个异步执行。简单的理解就是再创建一个子任务。 join() 当任务完成的时候返回
阅读全文
摘要:FutureTask FutureTask可用于异步获取执行结果或取消执行任务的场景。通过传入Runnable或者Callable的任务给FutureTask,直接调用其run方法或者放入线程池执行,之后可以在外部通过FutureTask的get方法异步获取执行结果. Callable() Futu
阅读全文
摘要:CountDownLatch CountDownLatch 允许一个或多个线程等待其他线程完成操作。 用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后
阅读全文
摘要:该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。 线程局部变量是局限于线程内部的变量,属于线程自身所有,不在多个线程间共享。Java 提供 Thread
阅读全文
摘要:Condition接口也提供了类似Object的监视器方法,与Lock配合可以实现等待/通知模式 condition对象是依赖于lock对象的,意思就是说condition对象需要通过lock对象进行创建出来(调用Lock对象的newCondition()方法) 三个线程依次打印abc Condit
阅读全文
摘要:主要是三个方法wait(); notify(); notifyAll() wait()使当前线程阻塞,前提是 必须先获得锁,一般配合synchronized 关键字使用,即,一般在synchronized 同步代码块里使用 wait()、notify/notifyAll() 方法。 wait方法释放
阅读全文
摘要:1.关键字段建立索引。2.使用存储过程,他使sql更加灵活高效。3.备份数据库合情理垃圾数据4.sql语句的语法的优化5.清理清除日志 1.用 union all代替or2.建立索引3,避免隐式转换,导致素引失效4.视图的优化:结合业务逻辑,考虑创建物化视图,通过其中间存储来消除不必要的全表扫描。(
阅读全文
摘要:排他锁与共享锁 读写锁实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。 读-读能共存,读-写不能共存,写-写不能共存 读写锁的实现 Main 执行如下 Thread-0写操作正在执行Thread-0写操作执行完毕Thread
阅读全文
摘要:AbstractQueueSynchronized 提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架。该同步器(以下简称同步器)利用了一个int来表示状态,期望它能够成为实现大部分同步需求的基础。使用的方法是继承,子类通过继承同步器并需要实现它的方法来管理其状态,管理的方式就
阅读全文
摘要:二级审批流程的实现 1.设计一个二级审批流程 2.创建三个不同用户组为流程参与者 3.参与者协同完成流程 second_approve.bpmn 设计 对应xml文件如下 新建springboot工程 引入依赖 简化logback输出,logback.xml resources引入second_ap
阅读全文
摘要:概述 工作流(workflow)是对工作流程及其各操作步骤之间业务规则的抽象,概括描述 工作流建模 即将工作流程中的工作如何前后组织在一起的逻辑和规则,在计算机中以恰当的模型 表达并对其实施计算 ProcessEnigneConfiguration (流程引擎配置载体 ) 通过读取 activiti
阅读全文

浙公网安备 33010602011771号