- 博客(22)
- 收藏
- 关注
原创 一、简单工厂模式
可维护 可复用 可扩展 灵活性好 工厂: 用一个单独的类来做创造实例的过程。简单运算工厂类:package SimpleFactory;public class OperFactory { public static Operation createOperate(char operate) { Operation oper = null; switch
2017-05-29 13:24:56 237
原创 mac 安装 RabbitMQ
官网http://www.rabbitmq.com/install-standalone-mac.html1.使用brew来安装 RabbitMQbrew update brew install rabbitmq注意: rabbitmq的安装目录: /usr/local/Cellar/rabbitmq/3.6.92.RabbitMQ 的启动/usr/local/Cellar/rabbitmq/3.6
2017-05-26 13:52:24 400
原创 git rebase 与 git merge
这些操作都是为了把一个分支上的工作加到另一个分支上。 merge :把另一个分支合并到当前分支上。 rebase :把当前分支的提交在另一分支上重演。(如果可以成功重演,本分支将会消失) cherry-pick :把本分支或者其他分支的某一次或某几次提交,在当前分支上重演。 rebase 假设你现在基于远程分支”origin”,创建一个叫”mywork”的分支。 $ git che...
2017-05-09 18:48:17 265
原创 Java并发编程:深入剖析ThreadLocal
一. 对ThreadLocal的理解import java.util.Date; import java.util.concurrent.TimeUnit;class UnsafeTask implements Runnable{ private Date startDate; @Override public void run() { startDate =
2017-05-08 22:37:30 334
原创 Java内存模型
Java内存模型 多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。在讨论Java内存模型和线程之前,先简单介绍一下硬件的效率与一致性。
2017-05-08 17:41:22 225
原创 Java内存区域与内存溢出异常
运行时数据区域 程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区1. 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。 严格来说是一个数据结构,用于保存当前正在执行的程序的内存地址,由于Java是支持多线程执行的,所以程序执行的轨迹不可能一直都是线性执行。当有多个线程交叉执行时,被中断的线程的程序当前执行到哪条内存地址必然要保存下来,以便用于被中断的线程
2017-05-07 23:27:25 259
原创 Java并发编程:volatile关键字解析
volatile解析Java内存模型在Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽各个硬件平台和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。那么Java内存模型规定了哪些东西呢,它定义了程序中变量的访问规则,往大一点说是定义了程序执行的次序。注意,为了获得较好的执行性能,Java内存模型并没有限制执行引擎
2017-05-07 21:57:53 385
原创 Java并发编程:Lock
在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。也许有朋友会问,既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock? Lock ReentrantLock 可重入锁 公平锁 读写锁
2017-05-06 00:26:44 285
原创 Java并发编程:Thread类的使用
Thread类 sleep相当于让线程睡眠,交出CPU,让CPU去执行其他的任务。但是有一点要非常注意,sleep方法不会释放锁,也就是说如果当前线程持有对某个对象的锁,则即使调用sleep方法,其他线程也无法访问这个对象。看下面这个例子就清楚了:public class Test { private int i = 10; private Object object = new Object();
2017-05-05 14:27:57 592 1
原创 Java并发编程:如何创建线程?
在Java中,一个应用程序对应着一个JVM实例(也有地方称为JVM进程),一般来说名字默认为java.exe或者javaw.exe(windows下可以通过任务管理器查看)。Java采用的是单线程编程模型,即在我们自己的程序中如果没有主动创建线程的话,只会创建一个线程,通常称为主线程。但是要注意,虽然只有一个线程来执行任务,不代表JVM中只有一个线程,JVM实例在创建的时候,同时会创建很多其他的线程
2017-05-05 13:53:06 297
原创 Java并发编程:进程和线程之由来
进程让操作系统的并发性成为可能,而线程让进程的内部并发成为可能。 一个进程包括多个线程,这些线程是共享进程占有的资源和地址空间的。进程是操作系统进行资源分配的基本单位,线程时操作系统进行调度的基本单位。多线程是共享进程的资源和地址空间的,所以就会有同步问题。 进程和线程之由来
2017-05-05 13:29:08 206
原创 Java多线程总结
进程和线程 一个进程可以拥有多个线程,各个线程之间共享程序的内存空间(代码段、数据段和堆空间)及一些进程级的资源(例如打开的文件),但是各个线程拥有自己的栈空间。 使用多线程可以减少程序的响应时间。 与进程相比,线程的创建和切换开销更小。 多CPU或多核计算机本身就有执行多线程的能力。 同步和异步同步机制确保资源的安全性。 synchronized是以系统开销作为代价的,有时候甚至可能造成死锁。
2017-05-04 23:48:27 217
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人