- 浏览: 331725 次
- 性别:
- 来自: 北京
最新评论
-
bbls:
有用有用有用
java-jvm-jstack-(监视器和锁的概念) -
王新春:
小侠有点帅哦 写道此流怎么关闭新春这个实现 可以不关闭的,哈哈 ...
源码剖析之java.io.ByteArrayOutputStream -
小侠有点帅哦:
此流怎么关闭新春
源码剖析之java.io.ByteArrayOutputStream -
cumt168:
写的很好为什么初始化参数,年轻代-Xmn10M def new ...
jvm之内存申请过程分析 -
ronin47:
应该是跟共享域名思路差不多,根据cookie的key作判断
跨域:一种通过服务端解决跨域的实现
文章列表
AQS-预备-FIFOMutex
- 博客分类:
- java-thread
通过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 ...
垃圾回收算法详解
- 博客分类:
- java-jvm&性能&原理
可回收对象的判定【收藏,非原创】
讲算法之前,我们先要搞清楚一个问题,什么样的对象是垃圾(无用对象),需要被回收?目前市面上有两种算法用来判定一个对象是否为垃圾。
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 ...
java-jvm-jinfo
- 博客分类:
- java-jvm&性能&原理
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打印一行信息。下面举例说明:
MySQL索引背后的数据结构及算法原理【转载】
- 博客分类:
- mysql
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
mysql-索引的类型的实践
- 博客分类:
- mysql
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
分布式系统架构中,分布式事务问题是一个绕不过去的挑战。而微服务架构的流行,让分布式事问题日益突出!
下面我们以电商 ...