- 博客(9)
- 资源 (3)
- 收藏
- 关注
原创 java虚拟机JVM和jmm内存模型
学Java的朋友, 相信都听过一句话:java语言是跨平台的。那java是怎么跨平台的呢, 靠的就是JVM(Java Virtual Machine)java虚拟机。java编译以后会生成class字节码文件, 然后字节码文件运行在JVM上, 然后JVM就把class字节码文件转成机器指令, 可以在不同的平台上运行了。这里要注意的是, 跨平台的是java语言, 而不是JVM,不同平台上JVM的...
2019-06-24 19:13:30 224
转载 java虚拟机JVM--java虚拟机的内存管理(新生代、老年代)
前言在上一篇博客中,还遗留了一个问题:JVM的内存如何分配最高效?换一种说法就是:JVM的内存是如何的分配以及回收的?通过前面两篇博客的铺垫:java虚拟机JVM–java虚拟机的结构, java虚拟机JVM–java虚拟机垃圾的回收机制详解, 本篇将从JVM的内存如何分配的以及内存是如何回收的 角度来介绍java虚拟机的内存管理,来回答这一个遗留下的的问题。再贴一下JVM内存结构图:...
2019-06-24 16:04:38 206
转载 互斥锁 自旋锁 自适应的自旋锁
线程安全与锁的优化互斥锁:挂起线程和恢复线程的操作都需要转入内核态中完成 .从 实现原理上来讲,Mutex属于sleep-waiting类型的锁。例如在一个双核的机器上有两个线程(线程A和线程B),它们分别运行在Core0和 Core1上。假设线程A想要通过pthread_mutex_lock操作去得到一个临界区的锁,而此时这个锁正被线程B所持有,那么线程A就会被阻塞 (blocking),Co...
2019-06-13 15:37:21 382
转载 单例设计模式详解
为什么要有单例的类呢?有些对象的创建消耗时间和内存是非常大的,恰恰好这些对象在我们的应用中只需要使用 1 个,如果不能得到控制,会造成资源的浪费。说明:就向我们的办公室、家里那些很贵的电器,比如电冰箱、空调、打印机、热水器这一类电器,一般情况下,在一个小范围内我们只用使用 1 个。比如我们办公室吧, 1 台打印机就够我们几个人用了,没有必要买 2 台打印机。类似地,Java 中有这样的一些...
2019-06-12 15:58:56 195
转载 使用移位运算符做乘除法运算
>>(向右位移)针对二进制,转换成二进制后向右移动n位一个整数每次执行移位运算中的左运算n次,相当于这个整数乘以2的n次方;一个整数每次执行移位运算中的右运算n次,相当于这个整数除以2的n次方;不过这种方式只能用于乘以除以2的n次方,但是他的效率比乘法运算要高;坐乘右除public class Main { public static void main(.........
2019-06-04 11:38:58 4012
转载 ArrayList循环遍历并删除元素的常见陷阱
在工作和学习中,经常碰到删除ArrayList里面的某个元素,看似一个很简单的问题,首先请看下面的例子:public class DuplicateAndOrderTest{ public static void main(String[] args){ ArrayList<String>list=new ArrayList<>(); ...
2019-06-03 19:26:17 199
转载 ArrayList.add(index, element)失败,都是size的误解
在使用ArrayList时遇到一个很愚蠢的问题,想在大小为10的ArrayList的第5个位置插入10,结果抛异常。代码示例如下ArrayList<Integer> arr=new ArrayList<Integer>(10);arr.add(5, 10);异常为Exception in thread "main" java.lang.IndexOu...
2019-06-03 15:12:13 955
原创 Arrays.copyOf() 方法理解
最近看线性表、栈、队列数据结构实现源码时,经常看到 Arrays.copy()、System.arraycopy() 方法。在JDK 6中,Arrays 类别新增了copyOf()方法. Array.copyOf() 用于复制指定的数组内容以达到扩容的目的,该方法对不同的基本数据类型都有对应的重载方法,详见 java api: public static <T> T[]...
2019-06-02 22:44:30 28883
转载 Redis中位图Bitmaps的使用(签到功能的实现)
Bitmaps并不属于Redis中数据结构的一种,它其实是使用了字符串类型,是set、get等一系列字符串操作的一种扩展,与其不同的是,它提供的是位级别的操作,从这个角度看,我们也可以把它当成是一种位数组、位向量结构。当我们需要存取一些boolean类型的信息时,Bitmap是一个非常不错的选择,在节省内存的同时也拥有很好的存取速度(getbit/setbit操作时间复杂度为O(1))。假设现在...
2019-06-02 16:57:08 2637
SpringBoot2.0不容错过的新特性 WebFlux响应式编程.txt
2019-08-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人