摘要: 什么是伪共享 关于伪共享讲解最清楚的是这篇文章《剖析Disruptor:为什么会这么快?(三)伪共享》,我这里就直接摘抄其对伪共享的解释: 缓存系统中是以缓存行(cache line)为单位存储的。缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个字节。当多线程修改互 阅读全文
posted @ 2018-03-14 15:06 _AlbertWang 阅读(1391) 评论(0) 推荐(0) 编辑
摘要: 基础概念 先列出几个基础的概念: Shallow Heap 和 Retained Heap Shallow Heap表示对象本身占用内存的大小,不包含对其他对象的引用,也就是对象头加成员变量(不是成员变量的值)的总和。 Retained Heap是该对象自己的Shallow Heap,并加上从该对象 阅读全文
posted @ 2018-03-14 15:00 _AlbertWang 阅读(6215) 评论(0) 推荐(1) 编辑
摘要: 原文地址:http://www.javatang.com JVM Heap Dump(堆转储文件)的生成 正如Thread Dump文件记录了当时JVM中线程运行的情况一样,Heap Dump记录了JVM中堆内存运行的情况。可以通过以下几种方式生成Heap Dump文件: 使用 jmap 命令生成 阅读全文
posted @ 2018-03-14 14:59 _AlbertWang 阅读(78234) 评论(2) 推荐(4) 编辑
摘要: 原文地址:http://www.javatang.com 症状及解决方案 下面列出几种常见的症状即对应的解决方案: CPU占用率很高,响应很慢 按照《Java内存泄漏分析系列之一:使用jstack定位线程堆栈信息》中所说的方法,先找到占用CPU的进程,然后再定位到对应的线程,最后分析出对应的堆栈信息 阅读全文
posted @ 2018-03-14 14:57 _AlbertWang 阅读(7417) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://www.javatang.com Thread Dump日志的线程信息 以下面的日志为例: "resin-22129" 线程名称:如果使用 java.lang.Thread 类生成一个线程的时候,线程名称为 Thread-(数字) 的形式,这里是resin生成的线程; dae 阅读全文
posted @ 2018-03-14 14:55 _AlbertWang 阅读(3079) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://www.javatang.com 使用jstat命令 当服务器CPU100%的时候,通过定位占用资源最大的线程定位到 VM Thread: 这个时候需要使用 jstat -gc <pid> <period> <times> 命令查看gc的信息,显示结果如下: 结果中每个项目的 阅读全文
posted @ 2018-03-14 11:40 _AlbertWang 阅读(3815) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://www.javatang.com 一个典型的thread dump文件主要由一下几个部分组成: 上图将JVM上的线程堆栈信息和线程信息做了详细的拆解。 第一部分:Full thread dump identifier 这一部分是内容最开始的部分,展示了快照文件的生成时间和JV 阅读全文
posted @ 2018-03-14 11:35 _AlbertWang 阅读(6365) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://www.javatang.com 前一段时间上线的系统升级之后,出现了严重的高CPU的问题,于是开始了一系列的优化处理之中,现在将这个过程做成一个系列的文章。 基本概念 基本概念 在对Java内存泄漏进行分析的时候,需要对jvm运行期间的内存占用、线程执行等情况进行记录的du 阅读全文
posted @ 2018-03-14 11:25 _AlbertWang 阅读(15549) 评论(0) 推荐(1) 编辑
摘要: 原文地址:https://www.cnblogs.com/learnhow/p/5694876.html 一、架构 要学习如何使用Shiro必须先从它的架构谈起,作为一款安全框架Shiro的设计相当精妙。Shiro的应用不依赖任何容器,它也可以在JavaSE下使用。但是最常用的环境还是JavaEE。 阅读全文
posted @ 2018-03-12 20:14 _AlbertWang 阅读(279) 评论(0) 推荐(0) 编辑
摘要: JDK动态代理: a、先定义一个接口,这个接口中的方法是“目标方法” b、接着写一个这个接口的具体实现: c、如果要完成动态代理,首先需要定义一个InvocationHandler接口的子类: d:JDK动态代理测试类: 为什么JDK动态代理只能局限于接口呢?查阅了一些技术文档和JDK动态代理的源码 阅读全文
posted @ 2018-03-05 20:33 _AlbertWang 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 数据库分库分表从互联网时代开启至今,一直是热门话题。在NoSQL横行的今天,关系型数据库凭借其稳定、查询灵活、兼容等特性,仍被大多数公司作为首选数据库。因此,合理采用分库分表技术应对海量数据和高并发对数据库的冲击,是各大互联网公司不可避免的问题。 虽然很多公司都致力于开发自己的分库分表中间件,但截止 阅读全文
posted @ 2018-02-26 15:43 _AlbertWang 阅读(3514) 评论(1) 推荐(0) 编辑
摘要: 首先在pom文件中引入需要的依赖 二、新建一个sharding-jdbc.xml文件,实现分库分表的配置 这里我简单介绍下一些属性的含义, <rdb:strategy id="tableShardingStrategy" sharding-columns="user_id" algorithm-cl 阅读全文
posted @ 2018-02-26 10:12 _AlbertWang 阅读(2036) 评论(0) 推荐(0) 编辑
摘要: 摘要: Elastic-Job是ddframe中dd-job的作业模块中分离出来的分布式弹性作业框架。去掉了和dd-job中的监控和ddframe接入规范部分。该项目基于成熟的开源产品Quartz和Zookeeper及其客户端Curator进行二次开发。 ddframe其他模块也有可独立开源的部分, 阅读全文
posted @ 2017-10-17 16:46 _AlbertWang 阅读(70923) 评论(3) 推荐(3) 编辑
摘要: 一、rownum的说明 rownum是oracle特有的一个关键字。 (1)对于基表,在insert记录时,oracle就按照insert的顺序,将rownum分配给每一行记录,因此在select一个基表的时候,rownum的排序是根据insert记录的顺序显示的,例如: (2)对于子查询,则row 阅读全文
posted @ 2017-10-16 10:08 _AlbertWang 阅读(51890) 评论(4) 推荐(9) 编辑
摘要: 一.分类 从实现的技术上来分类,目前主要有三种技术(或者说有三种产品): 从实现的技术上来分类,目前主要有三种技术(或者说有三种产品): 从作业类的继承方式来讲,可以分为两类: 从作业类的继承方式来讲,可以分为两类: 注:个人推荐使用第二种方式,因为这样所以的类都是普通类,不需要事先区别对待。 从任 阅读全文
posted @ 2017-10-11 16:42 _AlbertWang 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 一、背景: 线程不安全的HashMap 因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。 效率低下的HashTable容器 HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下 阅读全文
posted @ 2017-10-10 15:29 _AlbertWang 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 小时候写日记都是这么写的:上午七点起床,八点之前洗脸刷牙吃早饭,十二点之前好好上课,中午一点,吃午饭,下午两点到六点,上课,下课,找请假,明天妈妈要带我去姥姥家,九点之前,看动画片,九点钟,收拾去姥姥家的东西,十点以后,睡觉。 我们把请假这块在充实一下:找班长请假,班长只能请半天,否则班长向老师申请 阅读全文
posted @ 2017-09-22 17:54 _AlbertWang 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 如何使用 Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper 并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到 阅读全文
posted @ 2017-09-14 10:19 _AlbertWang 阅读(332) 评论(0) 推荐(0) 编辑
摘要: Linux下,如果想要删除目录及其子目录下某种类型文件,比如说所有的txt文件,则可以使用下面的命令: [html] view plain copy print? find . -name "*.txt" -type f -print -exec rm -rf {} \; [html] view p 阅读全文
posted @ 2017-08-16 17:12 _AlbertWang 阅读(12100) 评论(0) 推荐(2) 编辑
摘要: 工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组长小张,组员小袁 场景一:小张创建项目并提交到远程Git仓库 场景二:小袁从远程Git仓库上获取项目源码 场景三:小袁修改了部分源码,提交到远程仓库 场景四:小张从远程仓库获取小袁的提交 场景五:小袁接受了一个新功能 阅读全文
posted @ 2017-07-27 11:13 _AlbertWang 阅读(13773) 评论(3) 推荐(5) 编辑