- 博客(16)
- 资源 (4)
- 收藏
- 关注
原创 PriorityQueue优先队列实现原理
一、什么是优先队列 优先队列不是按照普通对象先进先出原FIFO则进行数据操作,其中的元素有优先级属性,优先级高的元素先出队。本文提到的PriorityQueue队列,是基于最小堆原理实现。二、什么是最小堆 最小堆是一个完全二叉树,所谓的完全二叉树是一种没有空节点的二叉树。 最小堆的完全二叉树有一个特性是根节点必定是最小节点,子女节点一定大于其父节点。还有一个
2016-11-17 20:02:33
13565
2
原创 newScheduledThreadPool延时任务线程池,实现原理
Excutors的newScheduleThreadPool程序结构,我们在构造ThreadPoolExcute时,Queue队列使用了DelayedWorkQueue,这是一个可延时执行阻塞任务的队列,Delayed元素的一个无界阻塞队列,只有在延迟期满时才能从中提取元素。该队列的头部是延迟期满后保存时间最长的Delayed元素。如果延迟都还没有期满,则队列没有头部,并且poll将返回null。condition的定义Condition available = lock.newCondition();(n
2016-11-09 10:29:29
14150
原创 Why are Thread.stop, Thread.suspend and Thread.resume Deprecated?(源码学习)
一、Thread.stopWhy is Thread.stop deprecated?Because it is inherently unsafe. Stopping a thread causes it to unlock all the monitors that it has locked. (The monitors are unlocked as the Threa
2016-11-07 11:19:33
1093
原创 ThreadPoolExcute运行原理(源码学习)
一、ThreadPoolExcute类主要变量shutdownPerm:权限检查使用runState:运行状态,对应有RUNNING 0、SHUTDOWN 1、STOP 2、TERMINATED 3BlockingQueue workQueue :任务队列ReentrantLock mainLock:可重入锁Condition termination=mainL
2016-11-04 18:06:57
1676
原创 Java线程池原理(多线程)
一、JDK四种线程池1、ExecutorService .newSingleThreadExecutor() //创建一个只有单一线程的线程池,全部任务都按顺序执行,源码如下 /** * Creates an Executor that uses a single worker thread operating * off an unbounded queue.
2016-11-03 10:04:32
566
原创 Mysql聚簇索引和非聚簇索引原理(数据库)
一、‘页’和操作系统的关系①为什么要有内存管理?我们知道,一个进程完成他的功能,需要访问磁盘加载数据到内存然后等待进入cpu运算,因为数据量大小远远大于内存大小。因此提出虚拟内存概念。虚拟内存就是将程序用到的数据进行划分,暂时用不到的放到磁盘里,用到的放到内存里,操作系统中总是运行着不止一个进程,各个进程有优先级顺序,所以存在进程调度问题,进程的每次调度都会导致内存和磁盘数据置换,段式内存
2016-11-02 11:29:35
40631
13
原创 java.lang.Number家族(源码学习)
java.lang.Number这个基础类,看似貌不惊人,其实在java数字类型生态系统中很重要。上图看下他的子类家族 基本涵盖了我们常用的几个数字类型的封装类,Byte、Double、Float、Integer、Long、Short,还有Atomic家族,AtomicDouble、AtomicInteger、AtomicLong再看看Number类中的方法public abstract
2016-11-01 10:24:29
2290
原创 TreeMap原理(源码学习)
TreeMap是一种实现了有序的Map类型。TreeMap基于红黑树原理实现。TreeMap是线程不安全的。TreeMap实现了 NavigableMap接口支持导航方法,TreeMap继承自AbstractMap。put方法原理1、判断有没有root节点。没有则创建一个root(节点用new Entry)表示。modCount++2、定义一个父节点pare
2016-10-31 17:57:46
524
原创 Java中的引用(强引用、弱引用、软引用、虚引用)
今天学习了关于java中引用的一个知识点。在博客里记录一下。1、概念解释强引用,就是一般引用,如String a = new String("abc"); String b = a + "bc";在放弃引用钱垃圾回收绝对不回收的。软引用,垃圾回收器发现没有内存空间时就会回收弱引用。弱引用,垃圾回收器每次运行只要发现是弱引用就一定回收。虚引用,虚引用并不会决定对象的生命周
2016-10-31 10:09:23
381
原创 ExtJs 处理复合主键 ID不唯一 数据缺失问题
<br />var rd = new Ext.data.JsonReader( {<br /> totalProperty : 'totalCount',<br /> root: 'recordList', //从struts2里面传递过来的参数 <br /> successProperty :'success',<br /> id:'chrCid'+'dtmDate1' ,/*注意这里!!!*/<br /> fields: [ <br /> {name : 'ch
2011-05-13 12:44:00
1220
转载 C++中的开放数据库连接技术
文章来自:回忆青春 摘 要 ODBC(Open DataBase Connectivity,开放数据库连接)提供了一组应用程序调用接口和一套运行支持环境,应用程序可以使用标准的函数进行数据库操作,而不必关心数据源来自于何种数据库管理系统(DBMS),只要有相应的驱动程序即可。本文介绍了ODBC的运行机制,着重讨论了Visual C++ 1.5
2009-12-26 19:38:00
930
原创 C1083错误!
C1083错误!编译->重建全部! Deleting intermediate files and output files for project Ex050101 - Win32 Debug.--------------------Configuration: Ex050101 - Win32 Debug--------------------Compiling resources..
2009-05-20 07:57:00
1071
转载 printf的格式控制的完整格式
printf的格式控制的完整格式:% - 0 m.n l或h 格式字符下面对组成格式说明的各项加以说明:①%:表示格式说明的起始符号,不可缺少。②-:有-表示左对齐输出,如省略表示右对齐输出。③0:有0表示指定空位填0,如省略表示指定空位不填。④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=
2009-05-11 08:59:00
334
转载 rand()和srand()函数
表头文件: #include定义函数 :int rand(void)函数说明 :因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。
2009-05-11 00:02:00
966
转载 time_t clock_t
关于time_t,clock_t ,time(),clock(),CLK_TCK, CLOCKS_PER_SEC 的使用2007-03-29 21:28ISO/IEC 9899:1999 标准中有一个宏: CLOCKS_PER_SEC tc2 中的 time.h:没有 CLOCKS_PER_SEC,有
2009-05-09 18:43:00
5631
2
转载 转载:C/C++:sizeof和strlen的区别
最近在论坛里总有人问关于sizeof的问题,并且本人对这个问题也一直没有得到很好的解决,索性今天对它来个较为详细的总结,同时结合strlen进行比较,如果能对大家有点点帮助,这是我最大的欣慰了。一、好首先看看sizeof和strlen在MSDN上的定义:首先看一MSDN上如何对sizeof进行定义的: sizeof Operatorsizeof expressionThe si
2009-04-28 09:14:00
548
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人