- 博客(27)
- 收藏
- 关注
原创 自旋锁(Ticket,CLH,MCS)
目录目录自旋锁Spin lock代码简单实现Ticket Spinlock代码简单实现CLH锁CLH Spinlock代码简单实现CLH分析MCS锁MCS Spinlock代码简单实现自旋锁(Spin lock)自旋锁(spin lock)是一个典型的对临界资源的互斥手段,它的名称来源于它的特性。自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否
2016-12-14 14:08:48 1509
转载 IO模型
也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念 说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步IO的区别,接下来介绍了5种IO模型,最后介绍了两种和高性能IO设计相关的设计模式(Reactor和Pr
2015-11-21 22:26:57 455
转载 AQS的原理浅析
AQS的原理浅析本文是《Java特种兵》的样章,本书即将由工业出版社出版AQS的全称为(AbstractQueuedSynchronizer),这个类也是在java.util.concurrent.locks下面。这个类似乎很不容易看懂,因为它仅仅是提供了一系列公共的方法,让子类来调用。那么要理解意思,就得从子类下手,反过来看才容易看懂。如下图所示:图 5-15 A
2015-09-21 09:54:56 1250
转载 怎么理解Condition
版权声明:本文为本作者原创文章,转载请注明出处。感谢码梦为生| 刘锟洋 的投稿。在java.util.concurrent包中,有两个很特殊的工具类,Condition和ReentrantLock,使用过的人都知道,ReentrantLock(重入锁)是jdk的concurrent包提供的一种独占锁的实现。它继承自Dong Lea的 AbstractQueuedSynchronizer(同
2015-09-20 23:43:47 563
原创 Callable与Future以及FutureTask
Callable与Future的介绍 Callable与 Future 两功能是Java在后续版本中为了适应多并法才加入的,Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其他线程执行的任务。Callable的接口定义如下;public interface Callable {
2015-09-14 22:55:22 504 1
转载 java常用线程池的特点
自JDK5之后,Java推出了一个并发包,java.util.concurrent,在Java开发中,我们接触到了好多池的技术,String类的对象池、Integer的共享池、连接数据库的连接池、Struts1.3的对象池等等,池的最终目的都是节约资源,以更小的开销做更多的事情,从而提高性能。 我们的web项目都是部署在服务器上,浏览器端的每一个request就是一个线程,那
2015-09-14 19:12:53 484
转载 Java可阻塞队列的两种实现方式
在Java中,对于Lock和Condition可以理解为对传统的synchronized和wait/notify机制的替代。wait/notify有个限制,调用wait/notify的线程必须持有对象的锁。This method should only be called by a thread that is the owner of this object's monito
2015-09-14 18:21:01 1252
转载 Java中的Copy-On-Write容器
Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。
2015-09-14 09:40:10 426
原创 线程通信
多线程的通信方法本文转自:http://my.oschina.net/u/248570/blog/53226第三部分属于本人原创一、进程通信方法在说明线程通信前,有必要对进程通信进行说明;进程间通信的方法主要有以下几种: (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。 (2)命名管道
2015-06-04 16:17:21 715
原创 InnoDB和MyISAM区别总结
我用MySQL的时候用的是Navicat for MySQL(Navicat for mysql v9.0.15注册码生成器)操作库、表操作的,默认的表就是InnoDB类型,也就没有在意。最近做项目时发现表里除了有InnoDB类型外还有MyISAM类型,上官网看了看之后做以下总结:原来是MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。 MyISAM类型的表强调的是性能,其
2015-06-04 12:57:13 427
转载 JDBC(MYSQL)初步学习
JAVA JDBC(MySQL)驱动源码分析(一)2010-03-28 21:35 6636人阅读 评论(0) 收藏 举报jdbcjavamysqlsqlserver数据库database注: 本系列文章使用JDK1.5 数据库驱动版本 mysql-connector-java-5.1.8b JAVA连接数据库是其众多功能中的一部分,主要有两种方式连接D
2015-06-02 15:05:43 358
转载 《How Tomcat Works》读书笔记(四)-容器附加
《深入剖析tomcat》读书笔记3--servlet容器分类: 读书笔记 源码学习2013-04-05 20:15 955人阅读 评论(2) 收藏 举报主要是《深入剖析tomcat》的第五章和第十一章。个人觉得如下3点是关键:1. pipeline相关概念及其执行valve的顺序;2. standardwrapper的接受http请求时候的调用序列;3. sta
2015-05-25 19:56:33 498
转载 《How Tomcat Works》读书笔记(二)-附加
目标:在这篇文章希望搞明白http请求到tomcat后是怎么由连接器转交到容器的? 在上一节里已经启动了一个HttpConnector线程,并且也启动了固定数量的HttpProcessor线程。HttpConnector用来等待http连接,得到http连接后交给其中的一个HttpProcessor线程来处理。接下里具体看一下HttpConnector是怎么得到连接得,以及Htt
2015-05-21 19:08:54 415
转载 《How Tomcat Works》读书笔记(五):生命周期
第一次接触到“生命周期”这个词汇,是在软件工程的课程上,“软件的生命周期”,当时也是觉得有点玄,但还算可以理解:软件从需求分析到最后没人用,就像人的一生(人的“需求分析”是什么呢?这是个哲学问题...)扯远了,回到tomcat。tomcat的“生命周期”非常简单,说白了是一个接口:org.apache.catalina.Lifecycle,内容如下:public interface
2015-05-18 13:57:36 463
转载 《How Tomcat Works》读书笔记(四)
第四章:容器初探接触JAVA EE以来,最初对“容器”一词满头雾水、无比崇拜,后来听到耳朵长茧,一直觉得这个词的定义有点太广了,很多情况下不管沾没沾点关系的都往上靠,力图通过此术语使自己显得“专业”一些(老实说我写文档也这么做过)。但不论如何,发明这个计算机术语的人还是相当牛的,充分体现了JAVA EE“分层”的思想。唯一不爽的是,一直以来都处于“容器”的黑盒之外,更加上那些大厂商
2015-05-18 13:48:16 435
转载 《How Tomcat Works》读书笔记(三)
Chapter 4: Tomcat default connector何为default Connector?其实这里指的是tomcat最初设计时使用的Connector,尽管问题多多,现在已经被coyote所取代,但作为教学用例,default Connector仍然不失为一个优秀的组件,值得一学!这一章的目的是系统的讲述tomcat的Connector,同时为介绍后面的容器作铺
2015-05-18 13:46:22 478
转载 《How Tomcat Works》读书笔记(二)
《How Tomcat Works》读书笔记(二):Connector分类: 开源2009-03-12 14:28 3536人阅读 评论(1) 收藏 举报tomcat读书socketservletstrutsstring目录(?)[+]Chapter Three:Connectortomcat的Connector名字叫做Coyote,
2015-05-18 13:41:42 375
转载 《How Tomcat Works》读书笔记(一)
看了这本书的头三章,写得非常好,可谓深入浅出将tomcat分析的很透彻。虽然书中所讲述的tomcat是“简化版”,但内容也不算少,越到后面代码越多,也越复杂。为了加深印象,遂决定写读书笔记,“好记性不如烂笔头”,说不定还能方便他人。闲话少说,直入主题:Chapter One:A Simple Web Server第一章是一个非常简单的web server,主要目的在于让读者
2015-05-18 13:31:06 380
转载 Tomcat 源码解析(1)
废话少说,拉代码,导入eclipse开干,具体步骤可以参考http://hi.baidu.com/hateeyes/blog/item/7f44942a20ad8f9d023bf66d.html下面谈谈我对Tomcat架构的理解总体架构:面向组件架构基于JMX事件侦听1)面向组件架构tomcat代码看似很庞大,但从结构上看却很清晰和简单,它主要由一堆组件组成
2015-05-17 09:34:44 465
转载 java回收机制详解
对于Java开发人员来说,了解垃圾回收机制(GC)有哪些好处呢?首先可以满足作为一名软件工程师的求知欲,其次,深入了解GC如何工作可以帮你写出更好的Java应用。这仅仅代表我个人的意见,但我坚信一个精通GC的人往往是一个好的Java开发者。如果你对GC的处理过程感兴趣,说明你已经具备较大规模应用的开发经验。如果你曾经想过如何正确的选择GC算法,那意味着你已经完全理解你所开发的应用的特点。当
2015-05-11 18:24:46 349
原创 java 和javac命令
如何在命令行模式下编译运行带包的java文件 (2009-10-06 14:46:07)转载▼标签: 杂谈分类: 小技巧问题 假设两个文件: D:\workspace\com\A.java D:\workspace\com\B.java两个文件都有: package com;
2015-04-14 21:33:21 479
原创 算法初体验-3
早想做一下字符串的题,这个字符串题,自己感觉很经典,同样也是用了哈希表,把通常的O(n2),O(n3)变成了O(n)Longest Substring Without Repeating Characters Total Accepted: 52607 Total Submissions: 245781My SubmissionsQuestion Sol
2015-03-23 21:47:18 328
原创 算法初体验-2
Add Two Numbers Total Accepted: 49173 Total Submissions: 220247My SubmissionsQuestion Solution You are given two linked lists representing two non-negative numbers. The digits ar
2015-03-23 21:45:24 359
转载 有关java中内存泄露
前言在使用Memory Analyzer tool(MAT)分析内存泄漏(一)中,我介绍了内存泄漏的前因后果。在本文中,将介绍MAT如何根据heap dump分析泄漏根源。由于测试范例可能过于简单,很容易找出问题,但我期待借此举一反三。一开始不得不说说ClassLoader,本质上,它的工作就是把磁盘上的类文件读入内存,然后调用java.lang.ClassLoader.defineC
2014-11-18 15:59:56 648
转载 hashcode()和equals()的不同之处
hashcode方法浅析 有许多人学了很长时间的Java,但一直不明白hashCode方法的作用,我来解释一下吧。首先,想要明白hashCode的作用,你必须要先知道Java中的集合。 总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set。你知道它们的区别吗?前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复。那么这里就有一个比
2014-11-17 20:39:17 500
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人