摘要: 为什么要使用线程池呢?因为创建线程和销毁线程的开销很大,如果来一个请求就要创建一个线程,处理完之后又要销毁,这样频繁的创建和销毁会消耗大量的系统资源。 java线程池的原理:创建一个ThreadPool,核心线程数为m,最大线程数为n,还有一个阻塞队列BlockingQueue。当来一个请求的时候, 阅读全文
posted @ 2017-06-13 00:03 bili111 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 由于计算机的内存与处理器的运算能力之间有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(cache)来作为内存与处理器之间的缓冲:将运算需要使用到的数据从主内存复制到高速缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存之中。 基于高速缓存的存储 阅读全文
posted @ 2017-06-13 00:02 bili111 阅读(160) 评论(0) 推荐(0) 编辑
摘要: JVM内存结构: 1.java虚拟机栈:存放的是对象的引用(指针)和局部变量 2.程序计数器:每个线程都有一个程序计数器,跟踪代码运行到哪个位置了 3.堆:对象、数组 4.方法区:字节流(字节码文件)所代表的静态存储结构转换为方法区的运行时数据结构 5.常量池:String(字符串常量) JVM的类 阅读全文
posted @ 2017-06-13 00:01 bili111 阅读(2666) 评论(0) 推荐(0) 编辑
摘要: 在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。但是首先需要明确,什么样的对象才能当为垃圾: 1.引用计数法:如果某个引用(即指针)指向对象,那么说明该对象还存活着的,如果没有指针与之相关联,则可以认为是垃圾。 缺点,无法解决循环引用的问题。 public  阅读全文
posted @ 2017-06-13 00:00 bili111 阅读(976) 评论(0) 推荐(0) 编辑
摘要: ConcurrentHashMap HashMap是线程非安全的,在多线程环境下,采用的是Fail-Fast快速失败机制,即当A线程在访问容器的时候,如果此时B线程修改了HashMap的结构,那么就会抛出并发修改异常。且当A线程添加一个Entry的时候,它会首先获得头节点,如果此时B线程也要添加一个 阅读全文
posted @ 2017-06-12 23:59 bili111 阅读(313) 评论(0) 推荐(0) 编辑
摘要: ArrayList: 初始容量为10,底层实现是一个数组,Object[] elementData 自动扩容机制,当添加一个元素时,数组长度超过了elementData.leng,则会按照1.5倍进行扩容 private void grow() { int oldCapacity = element 阅读全文
posted @ 2017-06-12 23:58 bili111 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 1.图在计算机中是如何存储的呢? G=<V,E> (G表示graph,v表示顶点,e表示边) 图是一种很复杂的数据结构,但是可以利用基础数据结构来表示:邻接矩阵,链表。邻接矩阵本质是一个线性表,只不过是二维的而已,将图以矩阵的形式存储,那么之后就可以利用线性代数对其进行计算,如求笛卡尔乘积,矩阵的逆 阅读全文
posted @ 2017-06-09 10:39 bili111 阅读(708) 评论(0) 推荐(0) 编辑
摘要: 树在计算机中是一种非常重要的数据结构。 二叉树:对树的定义都是递归的,如果该树为一颗二叉树,那么所有子树也是一颗二叉树。 树的层数:根结点所在的层数为第一层。 叶子结点的个数=度为2的结点数+1 满二叉树:如果树有n层,那么树的总结点数为2的n次方-1。 完全二叉树:树的结点总是从上往下,从左往右排 阅读全文
posted @ 2017-06-07 14:03 bili111 阅读(250) 评论(1) 推荐(0) 编辑
摘要: 1.快排: Quicksort is a divide and conquer algorithm. It first divides a large list into two smaller sub-lists and then recursively sort the two sub-list 阅读全文
posted @ 2017-06-06 19:16 bili111 阅读(402) 评论(0) 推荐(0) 编辑
摘要: Servlet为根接口,里面有5个方法,init() servlet初始化,将ServletConfig作为参数传入,service() 响应请求,destroy() 销毁servlet,getServletConfig() 获得servlet的配置信息,如初始化参数和启动参数,getServlet 阅读全文
posted @ 2017-03-23 21:24 bili111 阅读(373) 评论(0) 推荐(0) 编辑