自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大闲人柴毛毛

博观而约取,厚积而薄发

  • 博客(10)
  • 资源 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 Java并发编程的艺术(十三)——锁优化

自旋锁背景:互斥同步对性能最大的影响是阻塞,挂起和恢复线程都需要转入内核态中完成;并且通常情况下,共享数据的锁定状态只持续很短的一段时间,为了这很短的一段时间进行上下文切换并不值得。原理:当一条线程需要请求一把已经被占用的锁时,并不会进入阻塞状态,而是继续持有CPU执行权等待一段时间,该过程称为『自旋』。优点:由于自旋等待锁的过程线程并不会引起上下文切换,因此比较高效;缺点:自旋等待过程线程

2017-02-28 15:17:55 4324 1

原创 Java并发编程的艺术(十二)——线程安全

什么是『线程安全』?如果一个对象构造完成后,调用者无需额外的操作,可以随意地在多线程环境下使用,并不发生错误,那么这个对象就是线程安全的。线程安全的几种程度线程安全性的前提:对『线程安全性』的讨论必须建立在多线程间存在共享变量这一前提,若对象在多条线程间没有共享数据,那这个对象一定是线程安全的!绝对的线程安全上述线程安全性的定义即为绝对线程安全的情况,即:一个对象构造完之后,调用者无需任何额外的操作

2017-02-27 23:03:16 3452 2

原创 深入理解JVM(十)——类加载器

类与类加载器类加载器的作用:将class文件加载进JVM的方法区,并在方法区中创建一个java.lang.Class对象作为外界访问这个类的接口。类与类加载器的关系:比较两个类是否相等,只有当这两个类由同一个加载器加载才有意义;否则,即使同一个class文件被不同的类加载器加载,那这两个类必定不同,即通过类的Class对象的equals执行的结果必为false。类加载器种类JVM提供如下三种类

2017-02-27 17:08:53 3200

原创 Java并发编程的艺术(十一)——线程池(2)

Executor两级调度模型 在HotSpot虚拟机中,Java中的线程将会被一一映射为操作系统的线程。 在Java虚拟机层面,用户将多个任务提交给Executor框架,Executor负责分配线程执行它们; 在操作系统层面,操作系统再将这些线程分配给处理器执行。Executor结构 Executor框架中的所有类可以分成三类:任务 任务有两种类型:Runnable和Callable。

2017-02-23 17:34:01 3960 3

原创 Java并发编程的艺术(十)——线程池(1)

线程池的作用减少资源的开销 减少了每次创建线程、销毁线程的开销。提高响应速度 每次请求到来时,由于线程的创建已经完成,故可以直接执行任务,因此提高了响应速度。提高线程的可管理性 线程是一种稀缺资源,若不加以限制,不仅会占用大量资源,而且会影响系统的稳定性。 因此,线程池可以对线程的创建与停止、线程数量等等因素加以控制,使得线程在一种可控的范围内运行,不仅能保证系统稳定运行,而且方便性能

2017-02-23 15:40:39 5626 2

原创 深入剖析Spring(三)——Bean的生命周期

对于普通的Java对象,当new的时候创建对象,当它没有任何引用的时候被垃圾回收机制回收。而由Spring IoC容器托管的对象,它们的生命周期完全由容器控制。Spring中每个Bean的生命周期如下:1. 实例化Bean对于BeanFactory容器,当客户向容器请求一个尚未初始化的bean时,或初始化bean的时候需要注入另一个尚未初始化的依赖时,容器就会调用createBean进行实例化。

2017-02-17 15:04:22 4828 1

原创 深入剖析Spring(二)——IoC容器的实现

Spring的两种IoC容器BeanFactory 基础类型的IoC容器;采用延迟初始化策略(容器初始化完成后并不会创建bean的对象,只有当收到初始化请求时才进行初始化);由于延迟初始化,因此启动速度较快,占用资源较少;ApplicationContext 在BeanFactory的基础上,增加了更为高级的特定:事件发布、国际化等;在容器启动时便完成所有bean的创建;启动时间较长

2017-02-16 18:31:56 2461

原创 深入剖析Spring(一)——IoC的基本概念(从面向对象角度介绍)

IoC与DIIoC和DI是Spring的两个核心概念,很多人都把它们视为相同的东西,但事实并非如此。 IoC(Inversion of Control):控制反转。 DI(Dependency Injection):依赖注入。为了方便理解,先给出结论: 控制反转是目的,依赖注入是实现控制反转的手段。控制反转是一种面向对象的思想,它是一种宽泛的概念,只要一个类将对它内部状态的控制权交由其他机

2017-02-16 18:30:59 4182

原创 计算机网络传输层知识点全覆盖

传输层概述作用:传输层为它上面的应用层提供通信服务。在OSI七层参考模型中,传输层是面向通信的最高层,也是用户功能的最底层。传输层两大重要的功能:复用 和 分用。 复用:在发送端,多个应用进程公用一个传输层;分用:在接收端,传输层会根据端口号将数据分派给不同的应用进程。和网络层的区别: 网络层为不同主机提供通信服务,而传输层为不同主机的不同应用提供通信服务。网络层只对报文头部进行差错

2017-02-12 21:59:27 25801 5

原创 Java并发容器大合集

概述        java.util包中的大部分容器都是非线程安全的,若要在多线程中使用容器,你可以使用Collections提供的包装函数:synchronizedXXX,将普通容器变成线程安全的容器。但该方法仅仅是简单地给容器使用同步,效率很低。因此并发大师Doug Lea提供了java.util.concurrent包,提供高效的并发容器。并且为了保持与普通的容器的接口一致性,仍然使用ut

2017-02-06 10:24:13 8110 6

剑指offer算法实现java版——面试题19二叉树的镜像

分析:所谓“镜像”就是从镜子里看到的样子。我们可以画一棵二叉树,然后画出该二叉树的镜像。画完图之后我们会发现,所谓“二叉树的镜像”就是把二叉树中所有子树的左孩子和右孩子进行交换。因此需要遍历二叉树所有的结点,在遍历的同时交换非叶子结点的左右子树。遍历我们可以使用先序遍历,首先判断当前根结点是否为叶子结点,若非叶子结点,则交换左右孩子,然后再分别对左右孩子进行相同的操作。

2016-03-14

剑指offer算法实现java版——面试题21包含min函数的栈

实现一个栈,要求使用O(1)时间获取栈中最小值,O(1)执行pop、push操作。

2016-03-14

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除