摘要: 1. 可重入锁当一个线程重新获取锁,读写锁或其他不可重入的同步器时,就可能发生重入锁死。可重入的意思是线程可以重复获得它已经持有的锁。Java的synchronized块是可重入的。因此下面的代码是没问题的:(这里提到的锁都是指的不可重入的锁实现,并不是Java类库中... 阅读全文
posted @ 2017-04-09 08:35 john8169 阅读(127) 评论(0) 推荐(0) 编辑
摘要: sleep():sleep()使当前线程进入停滞状态(阻塞当前线程),让出CUP的使用、目的是不让当前线程独自霸占该进程所获的CPU资源,以留一定时间给其他线程执行的机会;sleep()是Thread类的Static(静态)的方法;因此他不能改变对象的机锁,所以当在一... 阅读全文
posted @ 2017-04-06 23:09 john8169 阅读(228) 评论(0) 推荐(0) 编辑
摘要: Assuming you're joining on columns with no duplicates, which is a very common case:An inner join of A and B gives the result of A inte... 阅读全文
posted @ 2017-04-06 23:01 john8169 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 1.demo public class SimpleAIOServer { static final int PORT = 30000; public static void main(String[] args) throws Exception { // ①创... 阅读全文
posted @ 2017-04-06 22:24 john8169 阅读(546) 评论(0) 推荐(0) 编辑
摘要: 传统的输入流、输出流(面向流的输入/输出系统)一次只能处理一个字节(即使我们不直接去处理字节流,但底层的实现还是依赖于字节处理),因此面向流的输入/输出系统通常效率不高。新IO使用了不同的方式来处理输入/输出,新IO采用内存映射的方式的来处理输入/输出(即将文件或文件... 阅读全文
posted @ 2017-04-05 23:04 john8169 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 注:1.服务端的sk.isAcceptable()只能是注册的惟一一个ServerSocketChannel,所以有sk.interestOps(SelectionKey.OP_ACCEPT);产生sk.isReadable()只能是ServerSocketChann... 阅读全文
posted @ 2017-04-05 22:36 john8169 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 1.demo public class Server { public static void main(String[] args) throws IOException { // 创建一个ServerSocket,用于监听客户端Socket的连接请求 Serv... 阅读全文
posted @ 2017-04-05 22:26 john8169 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 1.MySQL索引原理1.1 索引目的索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从上往下找到y字母,再找到剩下的sql。如果没有索引,那么你可能需要把所有单词看一遍才能找到你想要的,如果我想找到m开头的单词... 阅读全文
posted @ 2017-04-04 21:02 john8169 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 0. 引言在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。 8种基本类型的常量池都是系统协调的,String类型的常量池比较特... 阅读全文
posted @ 2017-03-05 10:39 john8169 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 1.相关概念 1.1 什么是常量用final修饰的成员变量表示常量,值一旦给定就无法改变!final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。 1.2 Class文件中的常量池在Class文件结构中,最头的4个字节用于存储魔数Magic ... 阅读全文
posted @ 2017-03-05 10:07 john8169 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 一、外在表现有时java应用的load很高,影响系统稳定性,这时候就要进行问题排查,找出影响系统稳定性的因素。如果是进程级的应用,如Nginx、Apache等都还比较容易排查,但如果是JVM中的某个线程导致的,估计有人就要开始抓瞎了。 二、排查过程 1.ps -ef ... 阅读全文
posted @ 2017-02-19 11:14 john8169 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 一、外在表现前段时间系统经常出现OOM,服务很不稳定,偶尔会有java进程不存在的情况,临时解决方案只能是重启。 二、辅助工具1.top用top查看,发现内存占用(%MEM)挺多,其他指标均正常。 2.dmesg如果发现自己的java进程突然消失了,那么就要借助dme... 阅读全文
posted @ 2017-02-19 10:17 john8169 阅读(606) 评论(0) 推荐(0) 编辑
摘要: 1. 简介HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMa... 阅读全文
posted @ 2017-02-18 13:12 john8169 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 一. 何为session用户使用网站的服务,基本上需要浏览器和web服务器进行多次交互,web服务器如何知道哪些请求是来自哪个会话的?具体方式为:在会话开始时,分配一个唯一的会话标识(sessionId),通过cookie把这个标识告诉浏览器,以后每次请求的时候,浏览... 阅读全文
posted @ 2017-02-18 12:22 john8169 阅读(197) 评论(0) 推荐(0) 编辑
摘要: JDK本身提供了很多方便的JVM性能调优监控工具,有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具. 1.jps(Java Virtual Machine Process Status Tool)最常用的就是 jps -mlvVjps主要... 阅读全文
posted @ 2017-02-12 21:42 john8169 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 工作常用,在此记录,一来总结,便于快速查询,二来分享交流。 1.tail最常用的是tail -f a.log 或者是 tail -f -n 100 a.log 2.vmstatvmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值... 阅读全文
posted @ 2017-02-12 20:18 john8169 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 第一题:现有的程序代码模拟产生了16个日志对象,并且需要运行16秒才能打印完这些日志,请在程序中增加4个线程去调用parseLog()方法来分头打印这16个日志对象,程序只需要运行4秒即可打印完这些日志对象。原始代码如下: public class Test { ... 阅读全文
posted @ 2016-11-21 13:51 john8169 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 1. 简介在java.util.concurrent包的说明文档里有Executors/Queues/Timing/Synchronizers/Concurrent Collections整体介绍,一看便知传统集合类在并发访问时是有问题的,如HashMap并发访问时即... 阅读全文
posted @ 2016-11-21 10:45 john8169 阅读(234) 评论(0) 推荐(0) 编辑
摘要: ArrayBlockingQueue(jdk中已经提供 就在那个condition类说明里的可阻塞示例程序的下面就说明了)注意三个添加方法的区别->查API文档 拿插入来说 一个会抛异常 一个返回true/false 一个会阻塞是记不住的 找到doc即可 把精力留出来... 阅读全文
posted @ 2016-11-20 13:28 john8169 阅读(175) 评论(0) 推荐(0) 编辑
摘要: CyclicBarrier表示大家彼此等待,大家集合好后才开始出发,分散活动后又在指定地点集合碰面,这就好比整个公司的人员利用周末时间集体郊游一样,先各自从家出发到公司集合后,再同时出发到公园游玩,在指定地点集合后再同时开始就餐,… package javaplay.... 阅读全文
posted @ 2016-11-20 12:50 john8169 阅读(135) 评论(0) 推荐(0) 编辑