摘要: JVM全称java虚拟机。HelloWorld.java(源代码) ->Hello.class->010101(2进制编码),class文件和2进制编码需要在JVM中运行。 jvm运行时的数据区: 蓝色的是数据区,绿色的是指令区。 程序计数器:一块较小的内存空间,指向当前线程所执行的字节码指令的地址 阅读全文
posted @ 2019-05-07 22:52 有梦想的人不睡觉s 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 当MySQL单表记录数过大时,增删改查性能都会急剧下降。 通常在以整型值为主的表数据量达到千万级时,以字符串为主的表达到五百万的时候就需要考虑分库分表。 一般来说,数据库的分库分表分为两种拆分形式,即纵向和横向。 垂直拆分:垂直分库:解决表过多的问题; 垂直分表:解决单表列过多的问题。通常根据业务耦 阅读全文
posted @ 2019-05-06 22:17 有梦想的人不睡觉s 阅读(556) 评论(0) 推荐(0) 编辑
摘要: Java有四种实现多线程的方式: 1).继承Thread类 2).实现Runnable接口 3).实现Callable接口 4).使用线程池 前三种实现方式的代码: line26,27行当传入一个Runnable target参数给Thread后,Thread的run()方法就会调用target.r 阅读全文
posted @ 2019-05-05 23:06 有梦想的人不睡觉s 阅读(840) 评论(0) 推荐(0) 编辑
摘要: 记录一下公平锁,非公平锁,可重入锁(递归锁),读写锁,自旋锁的概念,以及一些和锁有关的java类。 公平锁与非公平锁: 公平锁就是在多线程环境下,每个线程在获取锁时,先查看这个锁维护的队列,如果队列为空或者自身就是等待队列的第一个,就占有锁。否则就加入到等待队列中,按照FIFO的顺序依次占有锁。 非 阅读全文
posted @ 2019-04-27 23:27 有梦想的人不睡觉s 阅读(218) 评论(0) 推荐(0) 编辑
摘要: java中常见的集合类大部分是非线程安全的,在多线程情况下会报并发修改异常(ConcurrentModificationException) 并发下的ArrayList类: 解决办法:使用集合的工具类Collections包中的synchronizedList(), 或者直接使用java.util. 阅读全文
posted @ 2019-04-25 21:55 有梦想的人不睡觉s 阅读(431) 评论(0) 推荐(0) 编辑
摘要: CAS(Compare-and-Swap),即比较并替换,java并发包中许多Atomic的类的底层原理都是CAS。 它的功能是判断内存中某个地址的值是否为预期值,如果是就改变成新值,整个过程具有原子性。 具体体现于sun.misc.Unsafe类中的native方法,调用这些native方法,JV 阅读全文
posted @ 2019-04-23 23:12 有梦想的人不睡觉s 阅读(6518) 评论(0) 推荐(2) 编辑
摘要: volatile是java虚拟机提供的轻量级的同步机制 JMM(Java内存模型)是围绕着并发编程中原子性、可见性、有序性这三个特征来建立的 原子性:一个操作或多个操作要么全部执行完成且执行过程不被中断,要么就不执行。 可见性:当多个线程同时访问同一个变量时,一个线程修改了这个变量的值,其他线程能够 阅读全文
posted @ 2019-04-22 22:46 有梦想的人不睡觉s 阅读(1185) 评论(0) 推荐(1) 编辑