自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 MySQL的8小时

一个关于MySQL的8小时问题在项目中的出现。最近在项目测试过程中出现了数据库连接被close的问题。现象:早上一来测试前几条的订单时,就会报连接close,之后一天都是正常的。初探:用了C3P0,很自然的就想到了C3P0为什么会把close的连接给项目使用,因为C3P0本身会有检查连接是否有效的机制。自然就想到是不是配置有问题,结果配置了所有的选项,在本地测试都有...

2017-03-31 14:59:22 213

原创 关于Spring的事务

关于spring的事务,这里纯粹就是记录一下:现在在大部分项目中,都会把事务交给Spring来管理,这应该是通用的做法了。1,Spring的事务管理不到类的private,static,protected方法。因为Spring的事务基于接口动态代理的AOP事务。接口的方法都必然是public的。 补充:只要最外层的方法交给了Spring的事务管理后,那么在此方法中再调用privat...

2017-03-30 15:05:50 183

原创 继续关于死锁

继续关于死锁的分析:上一篇分析大多只是表面上,概念上的。这篇根据项目中实际出现的死锁问题我们再来进一步分析一下。来分析之前,先的弄清楚几个问题:MVCC:在MySQL的InnoDB中,实现的是基于多版本的并发控制协议(MVCC):读不加锁,读写不冲突。在MVCC中读操作分为两种:快照读:读取的是记录当前的版本(有可能是历史版本),不用加锁。简单的select语句属于快照读,不加...

2017-03-28 18:09:16 268

原创 关于死锁

最近在项目中遇到了死锁的问题,在解决死锁的同时,也比较系统的理解了相关的锁,这里记录一下。了解一下innodb中的锁基本锁:共享锁(S锁):读锁:事务T对数据A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。排他锁(X锁):写锁。事务T对数据A加上X锁,事...

2017-03-21 17:33:40 140

原创 netty探索之旅八

我们继续EventLoop。走起!在前一节我们谈到了一个eventloop负责两个工作,第一作为IO线程,负责处理相应的IO操作;第二作为任务线程,执行队列中的任务。下面我们先来看看负责IO线程中的一个TCP数据是如何从socket中传递到netty的handler中的。我在netty探索之旅二的时候说了一下Java NIO中的selector的使用流程:1,通过Sel...

2017-03-09 13:27:06 141

原创 netty探索之旅七

前面我们分析了Pipeline,还有一个东西值得我们去研究研究,那就是EventLoop。哈哈!我们继续吧!不管是在客户端还是服务端,在netty启动的时候,都会指定EventLoopGroup,当然用的最多的就是NIO,所以都会指定NioEventLoopGroup。那么这个NioEventLoopGroup在Nnetty中是扮演什么角色的喃!netty是基于Reactor模型的一个实现...

2017-03-06 16:28:23 112

原创 netty探索之旅六

netty中的管道--ChannelPipeline的事件传输机制在AbstractChannelHandlerContext对象中有inbound和outbound两个boolean变量,用于标识 Context所对应的handler的类型。inbound=ture,表示对应的ChannelHandler实现了 ChannelInboundHandler方法.outbound=t...

2017-03-05 15:45:15 158

原创 netty探索之旅五

netty中的管道--ChannelPipeline机制前面我们在提到ChannelPipeline的地方只是简单的描述了一下,这里我们再进一步深入到ChannelPipeline的内部中。在netty中每一个channel都会只有一个ChannelPipeline与之对应.在看看AbstractChannel类的构造函数吧,channel的初始化都会到这个父类的构造函数中...

2017-03-02 11:09:31 119

原创 netty探索之旅四

上一篇我们研究了netty的客户端代码,这一篇我们研究一下服务端代码以下是源码中服务端的启动代码 路径:example\src\main\java\io\netty\example\echo\EchoServer[code="java"]public static void main(String[] args) throws Exception { fina...

2017-02-27 16:19:48 147

原创 netty探索之旅三

下面就开始我们的探索之旅我下载的源码的版本是netty4.0。通过netty源码中自带的例子我们就可以看到netty是如何运行起来的,首先我们来探索客户端。源码中的客户端启动代码,路径:example\src\main\java\io\netty\example\echo\EchoClient[code="java"]final SslContext sslCtx;...

2017-02-17 16:00:15 162

原创 netty探索之旅二

上一篇只是简单的介绍了一下NIO中的Selector。这里我还是想再详细点。通过Selector.open()方法,我们可以创建一个选择器(selector)。通过channel.register()方法,我们把channel注册到Selector中。 register()方法中的参数:第一个参数selector:创建的选择器;第二个参数指定了对channel的什么事件感...

2017-02-13 13:30:26 132

原创 netty探索之旅一

其实一直都在关注NETTY,前面也花了点时间去看过,但是还是觉得对netty还不是很了解,所以还是打算系统的学习一下。并且把学习的过程记录下来,当成后面追溯的地方。以前的学习就是只是看,没有很好的记录,导致不系统不连贯。俗话说:好记性不如烂笔头。在开始netty探索之旅之前,还是先来回顾一下NIO的知识。NIO在JDK1.4的时候就已经有了(同步非阻塞IO)。关于阻塞IO...

2017-02-12 16:38:36 132

原创 模拟Proactor

前面在【Reactor and Proactor】中讨论了那两种模式,因为Proactor模式需要操作系统级别的支持。所以这里看看融合Reactor和Proactor的解决方案:[color=blue]使用Reactor模拟Proactor[/color]。使用Reactor模拟Proactor的思路其实很简单,就是让Reactor模式中的事件分享者在得知事件发生的时候,让事件分享者来读写...

2017-02-07 10:33:10 449

原创 Reactor and Proactor

引言: 这里准备记录一下自己对TCP服务器的高性能设计模式的理解!系统IO分为:阻塞型,非阻塞同步型,非阻塞异步型阻塞型IO:拿read方法来举例,现在系统的一个线程调用了read方法,这时控制权只有等到read调用结束后才会回到这个线程手里(调用read函数的代码就会一直停留在那里,直到它所处理的socket缓存中有数据来)。这时这个调用者(此线程)就被阻塞了,这其中的这...

2017-02-06 15:13:00 150

原创 dubbo-探索之旅(六)---结合spring

这节来看看spring的schema是怎么在dubbo中进行使用的。1)看看dubbo中的dubbo-registry-simple.xml文件,这个文件是dubbo在spring中的bean基于dubbo自己定义的schema文件来配置的。有了上节介绍的知识,现在来看看这个文件就很好理解了。[code="java"]//dubbo定义的XSD文件 ...

2016-11-15 16:03:39 135

原创 dubbo-探索之旅(五)---spring中的schema

dubbo于spring框架结合,为了让dubbo配置与spring框架语义更贴近,所以会选择基于spring的XML扩展方式,来表示自己的特有的一些配置方式。所以这里先来看看spring中的schema(模式文档)。如何基于Spring来扩展自己的特有的标签。完成一个自定义配置一般需要以下步骤:1)设计配置属性和JavaBean2)编写XSD文件3)编写NamespaceHa...

2016-11-14 11:50:13 137

原创 dubbo-探索之旅(四)---动态编译

dubbo是一个高扩展性的框架,用户可以添加自己的需求。dubbo根据配置动态生成适配类代码,这样就需要在运行的时候去编译加载这个适配类的代码。 以下我们来研究一下dubbo的动态编译 类图:[img]http://dl2.iteye.com/upload/attachment/0121/0051/c4f436d0-8791-3d81-9d0a-a097a7799e6e...

2016-11-03 14:42:30 191

原创 dubbo-探索之旅(三)---ExtensionFactory

上一节比较全面的了解了dubbo里面是怎么对JAVA的SPI机制进行扩展的。理解了这个很重要,因为dubbo里面很多的实现都和扩展SPI机制有关。比如今天我看的ExtensionFactory 上一节谈到ExtensionLoader在加载扩展实现的时候内部实现了个简单的ioc机制,来实现对扩展实现所依赖的参数的注入。对扩展实现中公有的set方法且入参个数为一个的方法,尝试从工厂...

2016-11-01 09:38:43 279

原创 dubbo-探索之旅(二)---扩展JDK的SPI

[b] 在此感谢http://blog.youkuaiyun.com/quhongwei_zhanqiu/article/details/41577235。斩秋的文章。以下的大部分是在参考了斩秋的文章。 [/b] 上一节简单的对dubbo的外围知识进行了简单的打探,下面开始真正进入dubbo。开启dubbo的源码探索之旅。 JDK自带的SPI正因为有在上一节提到的缺点,因此在dub...

2016-10-28 17:34:48 140

原创 dubbo-探索之旅(一)---初探外围

Dubbo-阿里巴巴公司的产物,为了实现SOA(面向服务的体系架构)的工具。本人对阿里技术一直在关注中,同时也为后面的工作增加储备。因此决定进入Dubbo中,去探索一下。在网上看了其他朋友写的文章后,感觉自己还是处在云里雾里中,所以打算自己写点内容,一是整理思路;二是记录一下自己的心得,以后好实时查看。好记性不如烂笔头嘛。 Dubbo涉及到的知识还是很多的,所以自己先不进入源...

2016-10-21 17:11:12 161

mina源码中的疑问之---过滤器

最近在研究mina的源码,看到了过滤器这块,有个疑问在源码中没有找到答案,因此在这里请教一下各位同事。 疑问: 使用mina作为服务器。调用NioSocketAcceptor类的方法getFilterChain()方法的时候,获取的是DefaultIoFilterChainBuilder类。把过滤器的类添加到DefaultIoFilterChainBuilder中。...

2014-04-27 10:41:24 99

空空如也

空空如也

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

TA关注的人

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