`
文章列表
通过AtomicBoolean 和队列实现一个线程FIFO的Lock工具, 一步步接近AQS!!!   package com.horizon.thread.aqs; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.lock ...
   经典!
可回收对象的判定【收藏,非原创】 讲算法之前,我们先要搞清楚一个问题,什么样的对象是垃圾(无用对象),需要被回收?目前市面上有两种算法用来判定一个对象是否为垃圾。 1. 引用计数算法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。优点是简单,高效,现在的objective-c用的就是这种算法。缺点是很难处理循环引用,比如图中相互引用的两个对象则无法释放。这个缺点很致命,有人可能会问,那objective-c不是用的好好的吗?我个人并没有觉得objective-c好好的处理了这个循环引用问 ...
目前所有的新生代gc都是需要STW的:   Serial:单线程STW,复制算法ParNew:多线程并行STW,复制算法Parallel Scavange:多线程并行STW,吞吐量优先,复制算法 Serial old:标记-整理 parallel old:标记-整理 cms:标记清除算法   简要对比三种基本算法:   
功能:可以分析jmap dump下的hprof文件 一般配合    jmap -dump:format=b,file=dumpFileName pid 或者 jmap -histo:live 21711 | more   jmap -histo:live 21711 | more num #instances #bytes class name ---------------------------------------------- 1: 38445 5597736 <constMethod ...
jinfo: 1、输出 当前java进程启动的相关配置信息,包括各种各样的jvm参数 2、修改运行时的java 进程的opts     查看参数: 举例: sudo jinfo 14855 输出:   Attaching to process ID 14855, please wait... Debugger attached successfully. Server compiler detected. JVM version is 24.45-b08 Java System Properties: java.runtime.name = Java(TM) ...
转载自:http://ifeve.com/useful-jvm-flags-part-8-gc-logging/ 本系列的最后一部分是有关垃圾收集(GC)日志的JVM参数。GC日志是一个很重要的工具,它准确记录了每一次的GC的执行时间和执行结果,通过分析GC日志可以优化堆设置和GC设置,或者改进应用程序的对象分配模式。 -XX:+PrintGC 参数-XX:+PrintGC(或者-verbose:gc)开启了简单GC日志模式,为每一次新生代(young generation)的GC和每一次的Full GC打印一行信息。下面举例说明:
http://blog.codinglabs.org/articles/theory-of-mysql-index.html 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。 文章主要内容分为三个部分。
  其他重要参考 http://blog.csdn.net/xifeijian/article/details/20313977#t10 1    背景    1
1、探讨:eq_ref 和 ref的区别 CREATE TABLE `idg_1` (    `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,    `key` varchar(100) NOT NULL DEFAULT '',    `min_id` bigint(20) NOT NULL,    `max_id` bigint(20) NOT NULL DEFAULT '0',    `step` int(11) NOT NULL DEFAULT '3',    `batch_size` int(11) NOT NULL D ...
摘抄和整理,非原创!!! 官方定义: 在《数据库原理》一书中是这么解释聚簇索引和非聚簇索引的区别的: 聚簇索引的叶子节点就是数据节点, 而非聚簇索引的叶子节点仍然是索引节点,只不过有指向对应数据块的指针 ...
规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎。 注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过1000字节。另外MyISAM数据和索引是分开,而InnoDB的数据存储是按聚簇(cluster)索引有序排列的,主键是默认的聚簇(cluster)索引,因此MyISAM虽然在一般情况下,查询性能比InnoDB高,但InnoDB的以主键为条件的查询性能是非常高的。 规则2:命名规则。 数据库和表名应尽可能和所服务的业务模块名一致 服务与同一个子模块的一类表应尽量以子模块名(或部 ...
感受大量构造异常带来的性能影响: package com; /** * 异常也会影响性能(在非常高的请求频率下) */ public class ExceptionPerformance { public static void main(String[] args) { long t1 = System.currentTimeMillis(); testParseWithException(100000); System.out.println(System.currentTimeMillis() - t1); t1 ...
TCC是应用层的2PC(2 Phase Commit, 两阶段提交), 如果你将应用看做资源管理器的话。        详细来说,TCC每项操作需要做的事情如下: 1、Try:尝试执行业务。 完成所有业务检查(一致性) 预留必须业务资源(准隔离性) 2、Confirm:确认执行业务。 真正执行业务 不做任何业务检查 只使用Try阶段预留的业务资源 3、Cancel:取消执行业务 释放Try阶段预留的业务资源  个完整的TCC事务参与方包括三部分: 主业务服务:主业务服务为整个业务活动的发起方,如前面提到的组合支付场景,支付系统即是主业务服务。 从业务 ...
转载分布式事务 微服务架构的分布式事务解决方案 标签:分布式事务发布于 2016-07-16 18:39:05 分布式系统架构中,分布式事务问题是一个绕不过去的挑战。而微服务架构的流行,让分布式事问题日益突出! 下面我们以电商 ...
Global site tag (gtag.js) - Google Analytics