Git—GitHub常用操作记录
本文以一次完整的实际操作需求记录Git命令,在此之前需要配置好Git工具和注册GitHub账号 Git基本命令 更新fork的远程仓库 假设:① forked from 仓库地址:git@github.com:company/project.git② 自己 fork 的仓库:git@githu ...
第11章| Java并发编程实践
生产者和消费者模式该模式通过平衡生产者线程与消费者线程的工作能力来提高程序整体处理数据的速度 生产者和消费者模式概念 生产者和消费者模式是通过一个容器来解决生产者与消费者的强耦合问题。 生产者与消费者不直接通信,而是通过阻塞队列通信,所以生产者生产完数据后不用等待消费者处理,直接扔给阻塞队列;同时 ...
第10章| Executor框架
Java线程既是工作单元,也是执行机制。jdk5后将工作单元和执行机制分离开来,工作单元包括Runnable和Callable,执行单元为Executor。 Executor框架简介 Executor框架的两级调度模型 应用程序通过Executor框架控制上层的调度,下层的调度由操作系统内核控制 ...
第9章| Java中的线程池
合理使用线程池带来的3个好处: 降低资源消耗,重复利用已创建的线程降低线程创建/销毁时造成的消耗; 提高响应速度,任务到达时不需等待线程创建即可执行; 提高线程的可管理性,无限制地创建线程会造成系统资源的消耗,降低系统的稳定性,使用线程池可以统一分配、调优、监控。 线程池的实现原理 Threa ...
第8章| Java中的并发工具类
等待线程完成的CountDownLatch功能:允许一个或多个线程等待其他线程完成操作。 在jdk1.5前,join可用于让当前线程等待join线程执行结束,原理是不停检查join线程是否存活,如果join线程存活则让当前线程一直等待;join线程终止后,调用notifyAll()方法。 在jdk ...
第7章| Java中的13个原子操作类
jdk1.5后提供了java.util.concurrent.atomic包,其中的原子操作类提供了一种用法简单、性能高效、线程安全地更新一个变量的方式。 Atomic包提供了4种类型的13个原子更新类来完成原子更新,Atomic包里的类基本都是使用Unsafe实现的包装类,具体见下表 简要汇 ...
第6章| Java并发容器和框架
ConcurrentHashMap的实现原理与使用ConcurrentHashMap是线程安全且高效的HashMap 为什么使用ConcurrentHashMap原因: 线程不安全的HashMap可能导致程序死循环比如HashMap在并发执行put操作时会引发死循环,因为多线程操作会导致Has ...
第5章| Java中的锁
本章主要介绍Java并发包(concurrent)下与锁相关的API和组件的使用及实现细节。 Lock接口 锁:用来控制多个线程访问共享资源的方式,通常一个锁能防止多个线程同时访问共享资源,但读写锁可以允许多个线程并发地访问共享资源。 JDK1.5前用synchronized实现锁功能,之后Lo ...
良心推荐Linux/Ubuntu下好用的工具
本篇博文主要记录个人在Ubuntu18.0(其他系统安装方法可参见开源地址的详细说明)下用过的好用工具,将不定期更新…… 截图工具动态截图工具「peek」开源工具,GitHub repo—phw/peek,4.7k Stars 工具特点:可以方便地动态截图,输出格式可选为GIF、APNG、Web ...