摘要: 1、new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? 1 2 3 4 5 6 7 8 new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stu 阅读全文
posted @ 2018-05-06 22:24 阿善9 阅读(1411) 评论(0) 推荐(0) 编辑
摘要: 、索引利弊 --整理 1、索引的好处 a、提高数据检索的效率,降低检索过程中必须要读取得数据量,降低数据库IO成本。 b、降低数据库的排序成本。因为索引就是对字段数据进行排序后存储的,如果待排序的字段与索引键字段一致,就在取出数据后不用再次排序了,因为通过索引取得的数据已满足排序要求。另外,分组操作 阅读全文
posted @ 2018-05-06 21:26 阿善9 阅读(1570) 评论(0) 推荐(0) 编辑
摘要: 在只有双重检查锁,没有volatile的懒加载单例模式中,由于指令重排序的问题,我确实不会拿到两个不同的单例了,但我会拿到“半个”单例。 而发挥神奇作用的volatile,可以当之无愧的被称为Java并发编程中“出现频率最高的关键字”,常用于保持内存可见性(随时见到的都是最新值)和防止指令重排序。 阅读全文
posted @ 2018-05-06 21:12 阿善9 阅读(13211) 评论(2) 推荐(7) 编辑
摘要: ——索引优化,可以说是数据库相关优化、理解尤其是查询优化中最常用的优化手段之一。所以,只有深入索引的实现原理、存储方式、不同索引间区别,才能设计或使用最优的索引,最大幅度的提升查询效率! 一、BTree索引 1、概述 Mysql数据库中使用最频繁的索引类型,基本所有存储引擎都支持BTree索引。正是 阅读全文
posted @ 2018-05-06 20:59 阿善9 阅读(20697) 评论(0) 推荐(1) 编辑
摘要: 在ConcurrentHashMap没有出现以前,jdk使用hashtable来实现线程安全,但是hashtable是将整个hash表锁住,所以效率很低下。 ConcurrentHashMap将数据分别放到多个Segment中,默认16个,每一个Segment中又包含了多个HashEntry列表数组 阅读全文
posted @ 2018-05-06 20:23 阿善9 阅读(1977) 评论(0) 推荐(0) 编辑
摘要: Hashmap本质是数组加链表。根据key取得hash值,然后计算出数组下标,如果多个key对应到同一个下标,就用链表串起来,新插入的在前面。 ConcurrentHashMap:在hashMap的基础上,ConcurrentHashMap将数据分为多个segment(段),默认16个(concur 阅读全文
posted @ 2018-05-06 20:17 阿善9 阅读(10047) 评论(0) 推荐(0) 编辑
摘要: 单例模式是一种很基础的设计模式,在面试时可能会被要求手写不同类型的单例模式代码,主要有三种模式: 1、饿汉模式: [java] view plain copy //饿汉模式,很饿很着急,所以类加载时即创建实例对象 public class Singleton1 { private static Si 阅读全文
posted @ 2018-05-06 20:02 阿善9 阅读(1087) 评论(0) 推荐(0) 编辑
摘要: 一、进程与线程?并行与并发? 进程代表一个运行中的程序,是资源分配与调度的基本单位。进程有三大特性: 1、独立性:独立的资源,私有的地址空间,进程间互不影响。 2、动态性:进程具有生命周期。 3、并发性:多进程可以在单核CPU上并发运行。 线程代表进程中的一个顺序执行流,多线程就是一个进程中的多个顺 阅读全文
posted @ 2018-05-06 19:49 阿善9 阅读(2547) 评论(0) 推荐(1) 编辑
摘要: 函数回调机制,一种双向调用思想,简单来说就是,如下图所示: 在层次一中的方法一(函数)调用层次二中的方法,并传入函数二的地址,而这个被调用的方法又会调用层次一中的方法,这个最后被调用的方法二就是回调方法。方法三调用方法二就是回调的过程。一个有意思的例子,大家可以先感受一下:“诸葛亮给赵子龙一个锦囊, 阅读全文
posted @ 2018-05-06 14:43 阿善9 阅读(294) 评论(0) 推荐(1) 编辑
摘要: 如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟 阅读全文
posted @ 2018-05-06 14:33 阿善9 阅读(301) 评论(0) 推荐(0) 编辑
摘要: IOC是一种叫做“控制反转”的设计思想。 1、较浅的层次——从名字上解析 “控制”就是指对 对象的创建、维护、销毁等生命周期的控制,这个过程一般是由我们的程序去主动控制的,如使用new关键字去创建一个对象(创建),在使用过程中保持引用(维护),在失去全部引用后由GC去回收对象(销毁)。 “反转”就是 阅读全文
posted @ 2018-05-06 10:21 阿善9 阅读(4587) 评论(0) 推荐(0) 编辑
摘要: 1、HTML静态化 freemaker其实大家都知道,效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可能使我们的网站上的页面采 用静态页面来实现,这个最简单的方法其实也是最有效的方法。但是对于大量内容并且频繁更新的网站,我们无法全部手动去挨个实现,于是出现了我们常见的信息 发布系统CMS 阅读全文
posted @ 2018-05-06 09:59 阿善9 阅读(10769) 评论(0) 推荐(1) 编辑
摘要: 一、Java异常概述 在Java中,所有的事件都能由类描述,Java中的异常就是由java.lang包下的异常类描述的。 Trowable是所有异常的超类. 他的常用方法printStackTrece()打印异常信息. Error 代表程序处理的错误. 通过程序改变不了的 . Java运行时系统的内 阅读全文
posted @ 2018-05-06 09:58 阿善9 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 一、概述 在windows中,每一个打开运行的应用程序或后台程序,比如运行中的QQ、谷歌浏览器、网易云音乐、资源管理器等都是一个进程。我们感觉这些程序是“同时”运行的,但实际上,一个处理器同一时刻只能运行一个进程,只是CPU在高速轮换执行让我们有这样的错觉,我们感受不到中断的原因是CPU执行速度相对 阅读全文
posted @ 2018-05-06 09:32 阿善9 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 1、常用的HTTP方法有哪些?GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。HEAD: 获得报文首部,与 阅读全文
posted @ 2018-05-06 01:20 阿善9 阅读(4052) 评论(0) 推荐(0) 编辑
摘要: Java流概念: Java把所有的有序数据都抽象成流模型,简化了输入输出,理解了流模型就理解了Java IO。可以把流想象成水流,里面的水滴有序的朝某一方向流动。水滴就是数据,且代表着最小的数据流动单位,在字节流中,水滴就是一字节(byte),在字符流中,水滴就是一字符(char)。 Java流的分 阅读全文
posted @ 2018-05-06 01:14 阿善9 阅读(1801) 评论(0) 推荐(0) 编辑
摘要: 首先Throws(抛出)几个自己学习过程中一直疑惑的问题: 1、什么是类加载?什么时候进行类加载? 2、什么是类初始化?什么时候进行类初始化? 3、什么时候会为变量分配内存? 4、什么时候会为变量赋默认初值?什么时候会为变量赋程序设定的初值? 5、类加载器是什么? 6、如何编写一个自定义的类加载器? 阅读全文
posted @ 2018-05-06 01:04 阿善9 阅读(9081) 评论(0) 推荐(0) 编辑