自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (1)
  • 收藏
  • 关注

转载 java并发之ConcurrentHashMap

下面这部分内容转载自:  http://www.haogongju.net/art/2350374  JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能。因为同步容器将所有对容器状态的访问都串行化了,这样保证了线程的安全性,所以这种方法的代价就是严重降低了并发性,当多个线程竞争容器时,吞吐量严重降低。因此Java5.0开

2016-04-29 23:07:05 2096

转载 java并发之Condtion在生产者消费者中的应用

public class Depot {      private int depotSize;     //仓库大小      private Lock lock;         //独占锁            public Depot(){          depotSize = 0;          lock = new ReentrantLock();  

2016-04-27 22:33:31 1133

原创 HashSet源码解析

package java.util;import java.io.InvalidObjectException;/** * This class implements the Set interface, backed by a hash table * (actually a HashMap instance). It makes no guarantees as to the

2016-04-27 21:34:00 1672

原创 HashMap源码解析

HashMap的存储结构,如下图所示:紫色部分即代表哈希表,也称为哈希数组,数组的每个元素都是一个单链表的头节点,链表是用来解决冲突的,如果不同的key映射到了数组的同一位置处,就将其放入单链表中。1、首先看链表中节点的数据结构:// Entry是单向链表。 (1.7以前) // 它是 “HashMap链式存储法”对应的链表。 // 它实现了Map.Entry

2016-04-27 21:11:08 3449

原创 spring的IOC浅析

所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。       这是什么意思呢,举个简单的例子,我们是如何找女朋友的?常见的情况是,我们到处去看哪里有长得漂亮身材又好的mm,然后打听她们的兴趣爱好、qq号、电话号、ip号、iq号………,想办法认识她们,投其所好送其所要,然后嘿嘿……这个过程是复杂深奥的,我们必须自己设计和面对每个环节。传统的程序开发

2016-04-27 16:47:23 1881

原创 java并发之Semaphore(信号量)

在操作系统中,信号量是个很重要的概念,它在控制进程间的协作方面有着非常重要的作用,通过对信号量的不同操作,可以分别实现进程间的互斥与同步。当然它也可以用于多线程的控制,我们完全可以通过使用信号量来自定义实现类似Java中的synchronized、wait、notify机制。    Java并发包中的信号量Semaphore实际上是一个功能完毕的计数信号量,从概念上讲,它维护了一个许可集合,对

2016-04-24 22:58:20 1389

原创 java并发之CyclicBarrier(障碍器)

CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。CyclicBarrier 支持一个可选的 Runnable 命令,在一

2016-04-24 22:53:43 2357 2

原创 java并发之concurrent包的结构

软件包 java.util.concurrent接口摘要BlockingDeque支持两个附加操作的 Queue,这两个操作是:获取元素时等待双端队列变为非空;存储元素时等待双端队列中的空间变得可用。BlockingQueue支持两个附加操作的 Queue,这两个操作是:获取元素时等待队列变为非空,以及存储元素时等待空间变得可用。Ca

2016-04-24 22:05:32 1862

转载 java成神之路

一、基础篇1.1 JVM1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http://www.jcp.org/en/jsr/detail?id=133 http://ifeve.com/jmm-faq/ 1.1.2. 了解JVM各种参数及调优1.1.3. 学习使用Java工具 jps, jstack, jmap, jconsole

2016-04-24 20:01:21 1016

转载 Django基本命令

1. 新建一个 django project1django-admin.py startproject project-name一个 project 为一个项目,project-name 项目名称,改成你自己的,要符合Python 的变量命名规则(以下划线或字母开头)2. 新建 app12

2016-04-23 21:39:49 1049

原创 Django环境搭建

安装:第一种方式      下载地址:https://www.djangoproject.com/download/,解压进入目录后执行python setup install第二种方式      pip install Django==1.8.5        1 .8.5 版本号进入python环境后>>> import django>>> django.VERSIO

2016-04-23 21:31:42 1558

原创 java并发之Thread

线程的状态线程从创建到最终的消亡,要经历若干个状态。一般来说,线程包括以下这几个状态:创建(new)、就绪(runnable)、运行(running)、阻塞(blocked)、time waiting、waiting、消亡(dead)。当需要新起一个线程来执行某个子任务时,就创建了一个线程。但是线程创建之后,不会立即进入就绪状态,因为线程的运行需要一些条件(比如内存资源,在前面的JVM

2016-04-23 18:47:04 1320

原创 java并发之ThreadLocal

ThreadLocal为每个使用该变量的线程提供独立的变量副本,即每个线程内部都会有一个该变量,且在线程内部任何地方都可以使用,线程之间互不影响,这样一来就不存在线程安全问题,也不会严重影响程序执行性能。所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。    对比同步机制与ThreadLocal,可以得出同步通过加锁的方式实现了线程数据共享,也就是以时间换空间,而Th

2016-04-23 17:53:11 2509

原创 python基础之列表

列表:list是Python内置的一种数据类型。list是一种有序的集合,可以随时添加和删除其中的元素。列表类型内建函数1、list.append(obj):向列表中添加一个对象obj>>> mylist=[1,2,3,'a','b','abc']>>> mylist.append(1)>>> print mylist[1, 2, 3, 'a', 'b', 'abc', 1]

2016-04-23 12:45:08 1270

原创 Java并发之线程间的通信Condition

Condition是在java 1.5中才出现的,它用来替代传统的Object的wait()、notify()实现线程间的协作,相比使用Object的wait()、notify(),使用Condition1的await()、signal()这种方式实现线程间协作更加安全和高效。因此通常来说比较推荐使用Condition,在阻塞队列那一篇博文中就讲述到了,阻塞队列实际上是使用了Condition来模

2016-04-22 23:21:46 501

原创 Java并发之线程间协作Object的wait()、notify()、notifyAll()

wait()、notify()和notifyAll()是Object类中的方法:1)wait()、notify()和notifyAll()方法是本地方法,并且为final方法,无法被重写。 2)调用某个对象的wait()方法能让当前线程阻塞,并且当前线程必须拥有此对象的monitor(即锁)3)调用某个对象的notify()方法能够唤醒一个正在等待这个对象的monitor的线程,如

2016-04-22 23:03:15 2097

原创 Java并发之volatile二

使用volatile关键字的场景Volatile 变量具有 synchronized 的可见性特性,但是不具备原子特性。这就是说线程能够自动发现 volatile 变量的最新值。Volatile 变量可用于提供线程安全,但是只能应用于非常有限的一组用例:多个变量之间或者某个变量的当前值与修改后值之间没有约束。因此,单独使用 volatile 还不足以实现计数器、互斥锁或任何具有与多个变量相关的

2016-04-22 18:07:31 1731

原创 java并发之volatile

开篇来重点,根据《Java并发编程实战》正确使用 volatile 变量的条件:您只能在有限的一些情形下使用 volatile 变量替代锁。要使 volatile 变量提供理想的线程安全,必须同时满足下面两个条件:(1)对变量的写操作不依赖于当前值。(2)该变量没有包含在具有其他变量的不变式中。再次之前,必须了解一些知识      可见性是指当多个线程访问同一个变量时,一个

2016-04-22 17:39:05 369

原创 java并发之Lock与synchronized的区别

1)Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现;  2)synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock在发生异常时,如果没有主动通过unLock()去释放锁,则很可能造成死锁现象,因此使用Lock时需要在finally块中释放锁;  3)Lock可以让等待锁的线程响

2016-04-21 19:22:06 5612

原创 java并发之Lock

从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。 1.Lock  首先要说明的就是Lock,通过查看Lock的源码可知,Lock是一个接口:12345678public interface

2016-04-21 19:10:19 1610

原创 java并发之原子性、可见性、有序性

原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。在Java中,对基本数据类型的变量的读取和赋值操作是原子性操作,即这些操作是不可被中断的,要么执行,要么不执行。  上面一句话虽然看起来简单,但是理解起来并不是那么容易。看下面一个例子i:  请分析以下哪些操作是原子性操作:12

2016-04-21 18:30:28 3876

原创 java并发之synchronized

在Java中,每一个对象都拥有一个锁标记(monitor),也称为监视器,多线程同时访问某个对象时,线程只有获取了该对象的锁才能访问。  在Java中,可以使用synchronized关键字来标记一个方法或者代码块,当某个线程调用该对象的synchronized方法或者访问synchronized代码块时,这个线程便获得了该对象的锁,其他线程暂时无法访问这个方法,只有等待这个方法执行完毕或

2016-04-21 18:08:23 1278

原创 线程安全问题及解决办法

一.什么时候会出现线程安全问题?在单线程中不会出现线程安全问题,而在多线程编程中,有可能会出现同时访问同一个资源的情况,这种资源可以是各种类型的的资源:一个变量、一个对象、一个文件、一个数据库表等,而当多个线程同时访问同一个资源的时候,就会存在一个问题:由于每个线程执行的过程是不可控的,所以很可能导致最终的结果与实际上的愿望相违背或者直接导致程序出错。举个简单的例子:  现

2016-04-21 17:03:00 3491

原创 java并发简介

在过去单CPU时代,单任务在一个时间点只能执行单一程序。之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程。虽然并不是真正意义上的“同一时间点”,而是多个任务或进程共享一个CPU,并交由操作系统来完成多任务间对CPU的运行切换,以使得每个任务都有机会获得一定的时间片运行。随着多任务对软件开发者带来的新挑战,程序不在能假设独占所有的CPU时间、所有的内存和其他计算机资源。一个好

2016-04-20 22:54:28 312

转载 JDK内置工具

javap你可以给 javap(Java class文件反编译器)传递这些有用的参数:-I – 打印行数和局部变量-p – 打印包括非public在内的所有类和成员信息,-c – 打印方法字节码比如在著名的“你真的懂 Classloader 吗?”演讲里,当出现 NoSuchMethodException 错误时,我们可以执行以下命令来调

2016-04-09 18:25:43 1367

转载 Java NIO 系列教程

(一) Java NIO 概述Channel 和 BufferSelector(二) ChannelChannel的实现基本的 Channel 示例(三) BufferBuffer的基本用法Buffer的capacity,position和limitcapacitypositionlimitBuffer的类型Buffer的分配向Buffer中

2016-04-09 18:20:56 366

原创 jvm调优之调优策略

调优需要关注的几个方面内存调优CPU 使用调优锁竞争调优I/O 调优调优基本原则:将转移到老年代的对象数量降到最少。减少Full GC的执行时间。目标是Minor GC时间在100ms以内,Full GC时间在1s以内。主要调优参数:设定堆内存大小,这是最基本的。-Xms:启动JVM时的堆内存空间。-Xmx:堆内存最大限制。设定新生代大小。

2016-04-07 14:17:00 2582

原创 jvm调优之jdk工具的使用

jps列出正在运行的虚拟机进程,用法如下:jps [-option] [hostid]选项作用q只输出LVMID,省略主类的名称m输出main method的参数l输出完全的包名,应用主类名,jar的完全路径名v输出jvm参数jstat

2016-04-07 13:53:39 2026

转载 详解垃圾收集器

转载:http://blog.csdn.net/u011116672/article/details/50994096前言前面已经对垃圾收集算法有了较为详细的介绍,这里我们将对JVM中具体的垃圾回收器进行介绍,在虚拟机规范中并没有对垃圾回收器如何实现具体介绍,因此每个厂商的垃圾回收器可能会完全不同,但是我们介绍的是基于JDK1.7之后的Hotspot虚拟机(包括前面对Java虚

2016-04-04 22:06:20 1812

转载 垃圾回收算法

转载子:http://blog.csdn.net/u011116672/article/details/50994092前言垃圾收集算法是JVM中垃圾收集器的方法论,所以了解算法是必要的,在算法领域只做最简单的介绍,力求文章的简单易懂。垃圾收集算法主要有以下几种:标记-清除算法(mark-sweep)、复制算法(copying)和标记-整理算法(mark-compact)。随着

2016-04-04 21:59:39 1733

numpy.exe、scipy.exe

windows下numpy和scipy最简单的安装方法

2016-01-13

空空如也

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

TA关注的人

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