自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 资源 (2)
  • 收藏
  • 关注

原创 阿里巴巴-淘系技术部-20应届生招聘

2019-08-08 19:20:05 1223

转载 揭秘内存屏障

转载自http://wiki.jikexueyuan.com/project/disruptor-getting-started/storage-barrier.html原文地址:http://ifeve.com/disruptor-memory-barriers/最近我博客文章更新有点慢,因为我在忙着写一篇介绍内存屏障(Memory Barries)以及如何将其应用于Disruptor...

2019-03-03 16:51:44 402

转载 Metaq原理与应用

Metaq原理与应用 (针对2.X版本)   誓嘉 兰生 2013/1/13  目录1       前言2       特别说明3       专业术语4       消息系统需要解决哪些问题?4.1        Publish/Subscribe4.2        ...

2018-11-17 22:34:37 548

转载 关于TCP 半连接队列和全连接队列

关于TCP 半连接队列和全连接队列发表于 2017-05-25   |   作者   蛰剑     |   分类于 网络   |  最近碰到一个client端连接异常问题,然后定位分析并查阅各种资料文章,对TCP连接队列有个深入的理解查资料过程中发现没有文章把这两个队列以及怎么观察他们的指标说清楚,希望通过这篇文章能把他们说清楚一点问题描述JAVA的client和serv...

2018-10-26 23:22:01 237

原创 一些命令杂记

1.print %X 转换16进制    作用:拿到线程id时,转换16进制grep线程栈2.top -Hp pid   作用:线程级别,迅速找到耗费cpu的线程3.vmstat   作用:其余不说,里面有个cs,可以看线程切换是否频繁  4.sar5.netstat    作用:网络链接,也可以看下服务器time_wait(server主动关闭,进入time_wa...

2018-07-27 00:20:20 123

原创 Java问题排查工具

1.psps aux|grep java 获取java进程id2.jstat     一条命令就够了jstat -gcutil pid 1000 1000 两个数值分别为时间间隔和监听次数 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 8.76 0.00 50.32 1...

2018-07-03 20:33:07 270

转载 Understanding GC pauses in JVM, HotSpot's CMS collector.

Concurrent Mark Sweep (CMS) is one of HotSpot JVM low pause garbage collectors. CMS can do most of its work for reclaiming memory concurrently with application (without stopping it). But still it requ...

2018-07-03 14:48:50 194

转载 Understanding GC pauses in JVM, HotSpot's minor GC.

Stop the world pauses of JVM due to work of garbage collector are known foes of java based application. HotSpot JVM has a set of very advanced and tunable garbage collectors, but to find optimal confi...

2018-07-03 14:47:30 217

原创 分库分表

根据id进行分库分表,一般套路是取id上的几位,取模得库表后缀。比如,我们有256个分库,8192张分表(256*32),即每个库32张分表,那么计算方式如下:对于库:    (id%8192)/32,先计算出哪个表,在根据表得出库坐标对于表:     (id%8192)...

2018-06-22 17:07:35 241

原创 开放平台note

这两天看了下网关的代码,有很多地方看不太懂,个人感觉,对于网关而言,核心有几点:1.授权&权限&安全2.流控3.异步化这里记录下开放平台大佬放翁的博客http://www.blogjava.net/cenwenchu/archive/2010/06/30/324840.html...

2018-06-13 14:52:20 165

原创 spring之aop方法内部调用问题

现象描述:假设有一个service,其中有A B 两个方法,A B都被aop托管,且A中调用了B方法,这时请求方法A的时候只会触发A的aop逻辑而不会触发B的aop逻辑。public interface UserService { void test();} public class UserServiceImpl implements UserService { @Overri

2017-07-09 21:20:48 8542 4

原创 ElasticJob引发的Tomcat内存泄漏问题

这里记录一下遇到的一个tomcat memory leak的问题:一个使用了elastic job的webapp,在进行热部署的时候日志打印了内存泄漏异常。前置知识点 在类使用完之后,如果满足下面的情况,类就会被卸载: 1.该类所有的实例都已经被回收,也就是 Java 堆中不存在该类的任何实例。 2.加载该类的ClassLoader已经被回收。 3.该类对应的java.lang.Clas

2017-06-29 18:34:55 1650

原创 JDK中hash冲突解决的两种方法

哈希表定义散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构。 也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。 这个映射函数称做散列函数,存放记录的数组称做散列表。实现关键点hash函数 hash冲突解决首先来说hash函数,java中对象都已一个hashCode() 方法,那为什么还

2017-06-28 16:31:30 2270

原创 强引用、软引用、弱引用

强引用:关于强引用这里不用多说Object obj = new Object(); 这里就是强引用。软引用:SoftReference<Object> obj = new SoftReference<Object>(new Object()); 强引用只有在内存不够的时候才会被回收。弱引用:WeakReference,一次gc之后原有对象即被回收。测试用例如下: /*

2017-06-28 13:23:54 239

原创 静态文件编码的一个坑(freemarker)

今天遇到一个很奇怪的乱码问题,从早上忙到了现在,终于找到了原因,做下记录。问题大概是这样的,我用ftl生成xml文件,在一些ftl中存在汉字,渲染后的xml中,静态的汉字,会有个别字乱码(不是全部,是不是好奇怪)。进行排错,首先猜测,我的文件编码格式有问题,因为我用的windows系统,编码默认GBK,猜测有可能是使用了GBK编码,将源文件在vim下,:set fileecoding,结果为ut

2017-03-08 15:23:30 414

原创 关于hvie对join优化的一个隐藏的坑

hive mapjoin 优化

2017-01-18 15:44:41 2960 1

转载 ZooKeeper分布式锁实现原理

本文主要讲述在使用ZooKeeper进行分布式锁的实现过程中,如何有效的避免“羊群效应( herd effect)”的出现。一般的分布式锁实现   这里简单的讲下一般的分布式锁如何实现。具体的代码实现可以在这里看到: https://svn.apache.org/repos/asf/zookeeper/trunk/src/recipes/lock/   在之前的《ZooKe

2016-12-04 20:36:54 410

原创 Mysqldump 之Access denied when doing LOCK TABLES

在写一个脚本,备份表数据,当表有数据在插入的时候,提示 Access denied for user '**'@'**' to database '**' when doing LOCK TABLES搜了一下原因: Lock all tables before dumping them. The tables are locked with READ LOCAL to allow concu

2016-11-16 13:49:11 483

原创 shell中单引号和双引号的问题

写一个shell去处理mysql的数据,遇到一个拼接条件的问题。就是在-e中的sql语句中加where条件,模拟下。lala=heheecho "'$lala'"输出:'hehe'这样就可以把参数拼接到where条件中echo "select a from table where a='$lala' "输出:select a from table where a='hehe' 这里注意下这种

2016-11-03 11:07:50 559

原创 RabbitMQ3.6.5集群搭建和遇到的问题

RabbitMQ3.6.5集群搭建搭建及问题排错

2016-10-18 11:58:43 2174

转载 Tomcat 导入eclipse

tomcat源码导入eclipse

2016-09-19 21:06:01 359

原创 Tomcat源码阅读二

tomcat源码

2016-09-19 12:59:00 266

原创 Tomcat源码阅读1

tomcat 源码

2016-09-19 11:45:20 247

转载 搭建高可用mongoDB集群

mongo

2016-09-06 17:41:40 837

原创 Epoll在Nio中的实现

java nio 和epoll实现

2016-09-01 11:18:47 4424

转载 我读过的最好的epoll讲解--转自”知乎“

首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。    不管是文件,还是套接字,还是管道,我们都可以把他们看作流。    之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。现在假定一个情形,我们需要从流中读数据,但是流中还没有数据,(典型的例子为,客户端要

2016-07-24 22:49:58 286

原创 spring中bean生命周期

spring中bean默认是单例的,引用spring手册上:The singleton scope is the default scope in Spring!另外亲自测试,发现使用注解的时候,@Controller和@Servcie等,bean都是单例的,可以使用@Scope注解修改bean的scope。注意点:单例类注入原型类时,只会注一次,即单例中的注入bean对于自身来说是一

2016-06-28 15:06:19 260

转载 linux配置java环境变量(详细)

linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586.bin 这时会出现一段协议,连继敲回车,当询问是否同意的时候,输入yes,回车。之后会在当前目录下生成一个jdk1.6.0_14目录,你可以将它复制到 任何一个目录下。二. 需

2016-02-25 13:07:50 307

转载 flickr的分表全局唯一id实现方式

原文地址http://code.flickr.net/2010/02/08/ticket-servers-distributed-unique-primary-keys-on-the-cheap/Ticket Servers: Distributed Unique Primary Keys on the CheapPosted on February 8, 2010 by

2016-02-19 14:32:08 2384

转载 MySQL binlog 组提交与 XA(两阶段提交)

文章转载自http://www.2cto.com/database/201511/448803.html 仅为留作记录1. XA-2PC (two phase commit, 两阶段提交 ) XA是由X/Open组织提出的分布式事务的规范(X代表transaction; A代表accordant?)。XA规范主要定义了(全局)事务管理器(TM: Transaction Manage

2016-02-05 10:41:19 664

原创 mysql二进制版本安装以及主从服务的搭建

简单的笔记: 去mysql官网下载5.5的二进制版本,wget -c +url下载tar.gz,我这里下载的是64位5.5版本的包,先简单的说下安装,其实这些在mysql文档上都有,只不过每个人安装的时候可能遇到不同的问题,看下.err文件,会有问题提示。为了方便搭建主从,我在同一台机器上,安装两个mysql。假设这里的路径分别为:/usr/local/mysql01 ,而slave的库路径为

2016-02-04 10:24:36 430

转载 【MySQL】性能优化之 index merge (1)

转载自http://blog.itpub.net/22664653/viewspace-774687/一 序言介绍MySQL 5.0 版本之前,每条个表在查询时 只能使用一个索引,有些不知道此功能限制的开发总是在一个表上创建很多单独列的索引,以便当where条件中含有这些列是能够走上索引。但是这样并不是一个好方法,或者是“好心办坏事”,索引能够提供查询速度,但是也能给日常维护和IU

2016-01-29 16:10:01 454

原创 无索引时行锁升级为表锁测试

今天看到简朝阳的书上的一句话,如下:当Query无法利用索引的时候,Innodb会放弃使用行级别锁定而改用表级别锁定,造成并发效率的降低。看到这句话,开始让我有种不信的感觉,所以亲自测试下,MYSQL版本为5.5,过程如下:表中的a b都是无索引的开启两个事务,事务A进行更新,之后事务B也进行更新,但是更新的是不同的两行。结果如下执行B的更新

2016-01-14 15:45:16 1851

原创 MYSQL下read committed 和repeatable read级别下一致性非锁定读笔记+实测

MYSQL 的读已提交和可重复读两种模式下,都支持一致性非锁定读,这时候的读取操作不会加锁(注:读不加锁,但是写的时候,没有一致性非锁定读,下面例子会说明),新session可以对同一行进行mod操作。两种的区别在于,可重复读级别下,读取的是本事务开启式那个timepoint的版本,不会是最新的,而读已提交,读的是最新的快照版本。一下摘自mysql文档:14.2.2.2

2016-01-11 14:19:31 3401

原创 MySql的二进制日志,重做日志笔记,UndoLog

简单总结一下二进制日志和重做日志的区别二进制日志(bin log):是mysql数据库级别的文件,不会记录select和show语句,主要用于恢复数据库和集群,配置参数为sync_binlog=N(表示每写缓冲多少次就同步一次磁盘),1表示同步方式写磁盘(写一次缓存即同步一次磁盘),默认为0,事务提交时会写磁盘(仅在事务提交前写磁盘)。有STATEMENT ROW MIXED三种格式。重做

2016-01-07 14:12:32 1727

转载 MySQL数据文件介绍及存放位置

一、MySQL数据库文件介绍MySQL的每个数据库都对应存放在一个与数据库同名的文件夹中,MySQL数据库文件包括MySQL所建数据库文件和MySQL所用存储引擎创建的数据库文件。1、MySQL创建并管理的数据库文件:.frm文件:存储数据表的框架结构,文件名与表名相同,每个表对应一个同名frm文件,与操作系统和存储引擎无关,即不管MySQL运行在何种操作系统上,使用何种存储引擎,

2016-01-05 16:56:05 418

原创 JUC之ReentrantReadWriteLock(JDK1.8源码)

上文学习了JUC下的可重入互斥锁,今天继续看下JUC包下的读写锁,并与之进行对比。我们知道,ReentrantLock锁是基于AQS实现的,同样读写锁也是如此。不同的是,ReentrantLock的state用0/1作为标识,而读写锁中由于有两个syc的实现,内部包含了读锁和写锁,就不能用一个state来做区分,这里的做法是将32的state分开,高16bit为做读锁持有数量,低16bi表示读锁持

2016-01-02 13:51:23 457

原创 ReentrantLock源码学习

上文学习了JUC的AQS工具,下面看下可重入显示锁的实现(如何基于AQS),要看ReentrantLock,还是先看下显示锁内部对AQS的几种子类实现。 abstract static class Sync extends AbstractQueuedSynchronizer { private static final long serialVersionUID = -517

2015-12-25 13:46:33 327

原创 JUC包之AbstractQueuedSynchronizer源码学习

AQS是JUC包的基础,几乎所有的JUC工具类,都是用了AQS进行实现,AQS使用了CLH lock的队列作为基础,关于CLH,前文有一篇转载的又说到什么事CLH lock,AQS中的CLH,其实就是一个FIFO的队列,队列中的每个结点(线程)只要等待其前继释放锁就可以了。这是JDK内画的 一张图: * * +------+ prev +-----+ +

2015-12-24 09:47:00 514

转载 自旋锁、排队自旋锁、MCS锁、CLH锁

自旋锁(Spin lock)自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否被释放,而不是进入线程挂起或睡眠状态。自旋锁适用于锁保护的临界区很小的情况,临界区很小的话,锁占用的时间就很短。简单的实现import java.util.concurrent.atomic.AtomicReference;public class SpinLock

2015-12-23 14:57:43 284

java8官方虚拟机英文规范.pdf

java8官方虚拟机英文规范.pdf

2015-12-18

jdbc-connector

Mysql数据库驱动,mysql-connector-java-5.1.22

2015-04-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除