●基础
文章平均质量分 75
代立冬
StayHungryStayFoolish外功修行内功修神
展开
-
弄明白CMS和G1,就靠这一篇了
在开始介绍CMS和G1前,我们可以剧透几点:根据不同分代的特点,收集器可能不同。有些收集器可以同时用于新生代和老年代,而有些时候,则需要分别为新生代或老年代选用合适的收集器。一般来说,新生代收集器的收集频率较高,应选用性能高效的收集器;而老年代收集器收集次数相对较少,对空间较为敏感,应当避免选择基于复制算法的收集器。 在垃圾收集执行的时刻,应用程序需要暂停运行。 可以串行收集,也可以并行收...转载 2020-04-14 13:38:15 · 2570 阅读 · 0 评论 -
BitMap算法详解
BitMap算法详解 所谓的BitMap就是用一个bit位来标记某个元素所对应的value,而key即是该元素,由于BitMap使用了bit位来存储数据,因此可以大大节省存储空间。基本思想: 这此我用一个简单的例子来详细介绍BitMap算法的原理。假设我们要对0-7内的5个元素(4,7,2,5,3)进行排序(这里假设元素没有重复)。我们可以使用BitMap算法达到排序目的。要表示8...转载 2018-11-16 16:54:56 · 1895 阅读 · 1 评论 -
jvm疯狂吞占内存,罪魁祸首是谁
分享一篇公司小伙伴的关于jvm占用内存的技术文章导读:JVM是Java Virtual Machine的缩写,中文名为Java虚拟机。它是一种用于计算设备的规范,是一个虚构出来的计算机,主要通过在实际的计算机上仿真模拟各种计算机功能来实现的。在实际运用过程中,易观技术人员注意到一台开发机上各个微服务进程占用内存很高,随即便展开了调查......现象:前段时间发现某台开发机上各个微服务进程占...原创 2018-11-12 14:25:32 · 11659 阅读 · 1 评论 -
LRU算法四种实现方式介绍
LRU全称是Least Recently Used,即最近最久未使用的意思。LRU算法的设计原则是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。也就是说,当限定的空间已存满数据时,应当把最久没有被访问到的数据淘汰。实现LRU 1.用一个数组来存储数据,给每一个数据项标记一个访问时间戳,每次插入新数据项的时候,先把数组中存在的数据项的时间戳自增,并将新数据项的时...转载 2018-07-04 19:03:40 · 1500 阅读 · 0 评论 -
B+Tree 可视化
通过B+Tree 可视化 直观操作理解下B+Tree的插入,查找,更新和删除过程https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html数据结构可视化:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html...原创 2018-07-08 13:22:00 · 4449 阅读 · 1 评论 -
jdk8 GC之详解CMS收集过程和日志分析
话题引入让我们先简单的看下整个堆年轻代和年老代的垃圾收集器组合(以下配合java8完美支持,其他版本可能稍有不同),其中标红线的则是我们今天要着重讲的内容:ParNew and CMS"Concurrent Mark and Sweep" 是CMS的全称,官方给予的名称是:“Mostly Concurrent Mark and Sweep Garbage Collector”;年轻代:采用 sto...转载 2018-06-21 18:23:56 · 3421 阅读 · 0 评论 -
该虚拟机的某个磁盘已经由虚拟机或者快照使用 问题解决
解决方式如下:1)删除虚拟机配置文件下面的.lck文件2)删除类型为快照的.vmsn/.vmsd文件然后重启虚拟机即可原创 2018-03-19 02:19:29 · 16511 阅读 · 5 评论 -
永久关闭linux swap
一般来说,Linux的虚拟内存会根据系统负载自动调整。内存页(page)swap到磁盘会显著的影响Kafka的性能,并且Kafka重度使用page cache,如果VM系统swap到磁盘,那说明没有足够的内存来分配page cache。 避免swap的一种方式是设置swap空间为0。但是,swap会在系统崩溃时提供安全机制,或者会在out of memory的情况下阻止操作系统 kill 掉进程。...原创 2018-03-22 16:47:05 · 54500 阅读 · 0 评论 -
python文件操作
使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件。file_object = open('thefile.txt')try: all_the_text = file_object.read( )finally: file_object.close( )注:不能把open语句放在try块里,因为当打开文件出现异...转载 2018-02-16 12:25:12 · 610 阅读 · 0 评论 -
linux查看是否开启超线程
我们知道intel的cpu拥有超线程技术,可以为一个逻辑核心开启两个处理线程。通过查看物理CPU数,每个CPU的逻辑核数,CPU线程数可以得知是否开启了超线程。物理CPU数[root@localhost daxiang]# cat /proc/cpuinfo | grep "physical id" | sort | uniqphysical id : 0physical id原创 2018-02-07 19:35:10 · 2400 阅读 · 0 评论 -
深入了解volatile
volatile关键字经常在并发编程中使用,其特性是保证可见性以及有序性,但是关于volatile的使用仍然要小心,这需要明白volatile关键字的特性及实现的原理,这也是本篇文章的主要内容一、Java内存模型想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的。Java内存模型规定了所有的变量都存储在主内存中。每条线程中还有自己的工作内存,线程的工作内存中保存了转载 2017-04-08 09:55:47 · 971 阅读 · 1 评论 -
设计模式(Design Patterns)
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式转载 2015-06-11 15:42:47 · 2002 阅读 · 0 评论 -
java中byte转换int时为何与0xff进行与运算
本文总结了java中byte转换int时总是与0xff进行与运算的原因。在剖析该问题前请看如下代码:public static String bytes2HexString(byte[] b) { String ret = ""; for (int i = 0; i String hex = Integer.toHexString(b[ i ] & 0xFF);转载 2015-09-20 01:11:30 · 1133 阅读 · 0 评论 -
java实现极简的LRU算法
import java.util.LinkedHashMap;import java.util.Map; /** * LRU (Least Recently Used) */public class LRUCache extends LinkedHashMap { /*** */private static final long serialVers原创 2015-11-02 23:11:41 · 4498 阅读 · 1 评论 -
常用排序算法
瞬间学会数据结构常用排序算法分类: 数据结构 2014-10-30 20:05 1639人阅读 评论(0)收藏 举报本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/40625351下面是用JAVA代码实现的数据结构中的7种基本排序算法,希望对你有所帮助。原创 2016-01-08 00:33:32 · 1368 阅读 · 0 评论