`
jishuaige
  • 浏览: 9612 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论
文章列表

MySQL的8小时

 
一个关于MySQL的8小时问题在项目中的出现。 最近在项目测试过程中出现了数据库连接被close的问题。 现象: 早上一来测试前几条的订单时,就会报连接close,之后一天都是正常的。 初探: 用了C3P0,很自然的就想到了C3P0为什么会把close的连接给项目使用,因为C3P0本身会有检查连接是否有效的机制。自然就想到是不是配置有问题,结果配置了所有的选项,在本地测试都有问题。 本地测试测场景: 1,MySQL的8小时连接无效改成2分钟。 2,C3P0把与检查连接相关的配置全部配置上。 结果让人失望的是,全部不行。 进一步:是不是触发了C3P0的BUG,换阿里的连接池?,不过这个想法 ...

关于Spring的事务

 
关于spring的事务,这里纯粹就是记录一下: 现在在大部分项目中,都会把事务交给Spring来管理,这应该是通用的做法了。 1,Spring的事务管理不到类的private,static,protected方法。因为Spring的事务基于接口动态代理的AOP事务。接口的方法都必然是public的。    补充:只要最外层的方法交给了Spring的事务管理后,那么在此方法中再调用private等方法是可以被Spring的事务管理的。(这个只是在当前线程中是按照这样来执行的)。 2,有两个类:classA和classB,classA包含methodA1和methodA2,classB包含metho ...

继续关于死锁

继续关于死锁的分析:上一篇分析大多只是表面上,概念上的。这篇根据项目中实际出现的死锁问题我们再来进一步分析一下。 来分析之前,先的弄清楚几个问题: MVCC: 在MySQL的InnoDB中,实现的是基于多版本的并发控制协议(MVC ...

关于死锁

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

netty探索之旅八

我们继续EventLoop。走起! 在前一节我们谈到了一个eventloop负责两个工作,第一作为IO线程,负责处理相应的IO操作;第二作为任务线程,执行队列中的任务。 下面我们先来看看负责IO线程中的一个TCP数据是如何从socket中传递到netty的handler中的。 我在netty探索之旅二的时候说了一下Java NIO中的selector的使用流程: 1,通过Selector.open()打开一个Selector。 2,将Channel注册到Selector中,并设置需要监听的事件。 3,不断循环:     调用select()方法---阻塞     调用selecto ...

netty探索之旅七

前面我们分析了Pipeline,还有一个东西值得我们去研究研究,那就是EventLoop。哈哈!我们继续吧! 不管是在客户端还是服务端,在netty启动的时候,都会指定EventLoopGroup,当然用的最多的就是NIO,所以都会指定NioEventLoopGroup。那么这个NioEventLoopGroup在Nnetty中是扮演什么角色的喃!netty是基于Reactor模型的一个实现,那么我们先简单的说明一下Reactor的线程模型。 单线程模型: 所有的acceptor处理和handler处理都在同一个线程中。这种模式的坏处就是显而易见的了,当一个handler阻塞时,会导致所有的 ...

netty探索之旅六

netty中的管道--ChannelPipeline的事件传输机制 在AbstractChannelHandlerContext对象中有inbound和outbound两个boolean变量,用于标识 Context所对应的handler的类型。 inbound=ture,表示对应的ChannelHandler实现了 ChannelInboundHandler方法. outbound=ture,表示对应的ChannelHandler实现了 ChannelOutboundHandler方法. 在netty中支持两种类型的事件: Inbound和Outbound事件。 看看以下的图: inb ...

netty探索之旅五

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

netty探索之旅四

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

netty探索之旅三

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

netty探索之旅二

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

netty探索之旅一

   其实一直都在关注NETTY,前面也花了点时间去看过,但是还是觉得对netty还不是很了解,所以还是打算系统的学习一下。并且把学习的过程记录下来,当成后面追溯的地方。以前的学习就是只是看,没有很好的记录,导致不系统不连贯。俗话说:好记性不如烂笔头。 在开始netty探索之旅之前,还是先来回顾一下NIO的知识。 NIO在JDK1.4的时候就已经有了(同步非阻塞IO)。 关于阻塞IO,同步非阻塞IO,异步非阻塞IO,可以参考我其他的博客: http://jishuaige.iteye.com/blog/2355648。里面比较详细的讲解了一下。 这里说一下其他的两个方面: 1:stream ...
前面在【Reactor and Proactor】中讨论了那两种模式,因为Proactor模式需要操作系统级别的支持。所以这里看看融合Reactor和Proactor的解决方案:使用Reactor模拟Proactor。 使用Reactor模拟Proactor的思路其实很简单,就是让Reactor模式中的事件分享者在得知事件发生的时候,让事件分享者来读写数据,读写完成后把数据放到事件处理者提供的缓冲区里面。再通知事件处理者:你所关心的事件已经完成(注意这里不是发生而是完成)。然后事件处理者就直接在自己所提供的缓冲区里面获取数据。事件处理者需要提供:用于存放读到数据的缓存区,读的数据大小,或者用于 ...
引言:    这里准备记录一下自己对TCP服务器的高性能设计模式的理解! 系统IO分为:阻塞型,非阻塞同步型,非阻塞异步型 阻塞型IO:拿read方法来举例,现在系统的一个线程调用了read方法,这时控制权只有等到read调用结束 ...
这节来看看spring的schema是怎么在dubbo中进行使用的。 1)看看dubbo中的dubbo-registry-simple.xml文件,这个文件是dubbo在spring中的bean基于dubbo自己定义的schema文件来配置的。 有了上节介绍的知识,现在来看看这个文件就很好理解了。 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xm ...
Global site tag (gtag.js) - Google Analytics