摘要: 一.Explain是什么 explain是mysql里面用于分析sql语句在执行计划的,如下图,使用方法就是在sql语句之前加上这个关键字,然后通过下面的信息来分析这个sql语句。 二.字段详解 1.id:select查询的序列号,如果id全部相同,则执行顺序由上到下。如果id全部不同,递增,id越 阅读全文
posted @ 2018-11-14 23:15 AJimmyFang 阅读(795) 评论(0) 推荐(0) 编辑
摘要: 一.SprinMvc 的数据绑定问题 1.默认支持的类型 HttpServletRequest 对象,HttpServletResponse 对象,HttpSession 对象。这些对象在Controller的方法形参直接使用就可以,这些都是默认的声明。 2.基本数据的绑定 基本上前台有两种方式传递 阅读全文
posted @ 2018-11-12 21:29 AJimmyFang 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 一.SpringMvc上传组件简介 MultipartResolver,SpringMvc的文件上传就是通过这个组件来完成的。使用的话要在SpringMvc的配置文件Dispatch-Servlet里面配置multipartResolver这个bean了,再配置一下最大上传的大小,编解码字符集等,如 阅读全文
posted @ 2018-11-08 16:46 AJimmyFang 阅读(633) 评论(0) 推荐(0) 编辑
摘要: 一.Condition 概述以及API 1.概述 在java1.5之前,线程之间的通信主要通过notify和wait。而Condition支持多路等待,就是定义多个Condition,每个Condition控制一个支路,典型问题生产者和消费者问题现在可以通过这个接口来进行优化。 2.API 1.aw 阅读全文
posted @ 2018-11-08 10:18 AJimmyFang 阅读(1984) 评论(0) 推荐(0) 编辑
摘要: 一.使用线程池的两个关键点 1.尽量减少线程切换和管理的开支 所以使用的时候要求线程数尽量少,这样可以减少线程切换和管理的开支。 2. 最大化利用cpu。 这个点要求尽量多的线程数,最大化的利用cpu 二.对不同的应用场景的处理策略 1.耗时短的场景 这个时候尽量减少线程数,如果保证完成任务就行,如 阅读全文
posted @ 2018-11-07 20:05 AJimmyFang 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 一.在I/O中存在的编码 1.读,Reader,InputStream,InputStreamReader。 Reader是读字符的父类,InputStream是读字节的父类,InputStreamReader是读取字节到字符的桥梁,它是委托StreamDecoder去做的。 2.写,Writer, 阅读全文
posted @ 2018-11-07 19:42 AJimmyFang 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 一.对象的内存布局 1.对象头 存储对象自身的运行时数据,如哈希码,GC分代年龄,锁状态标志,偏向线程ID,官方称为Mark Word。 类型指针,虚拟机通过这个指针来确定这个对象是哪一个类的实例。 记录数组长度的数据,不是数组时没有。 存储对象自身的运行时数据,如哈希码,GC分代年龄,锁状态标志, 阅读全文
posted @ 2018-11-06 21:22 AJimmyFang 阅读(586) 评论(0) 推荐(0) 编辑
摘要: 一.定义 cpu保存上一次的任务状态,加载下一个任务这个过程为一次上下文切换。 二.线程上下文切换的原因 1.正常时间片完了之后的正常调度。 2.执行任务时遇到IO阻塞,挂起当前线程加载下一个线程。 3.多个任务抢占锁资源,当前任务没有抢到锁资源,被调度器挂起,继续下一任务。 4.用户代码挂起当前任 阅读全文
posted @ 2018-11-06 18:43 AJimmyFang 阅读(703) 评论(0) 推荐(0) 编辑
摘要: 一.简介 1.定义以及作用: 用于创建锁和其他同步类的阻塞原语,也就是Lock 的爸爸? 2.许可(permit): LockSupport通过许可(permit)实现挂起线程、唤醒挂起线程功能,有了permit就不会挂起(免死金牌)。 3.pack与uppack pack(阻塞线程):挂起线程,当 阅读全文
posted @ 2018-11-06 18:10 AJimmyFang 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 一.控制并发访问资源的利器-信号量Semaphore 1.定义及作用 它是一种计数器,用来保护一个或多个共享资源的访问,计数器大于0表示可以使用资源,如果为0,线程会休眠到计数器大于0,线程完成资源使用后,信号量要被释放,释放会使计数器加一。 2.使用方法 1.首先调用acquire()方法获得信号 阅读全文
posted @ 2018-11-06 16:11 AJimmyFang 阅读(270) 评论(0) 推荐(0) 编辑