- 浏览: 561935 次
- 性别:
- 来自: 深圳
最新评论
-
jiang2011jiang:
mybatis3源码核心类1--Configuration -
tuyf_hs:
同求 图片
zookeeper+dubbo+dubbo管理集群的简要配置[单机] -
安静听歌:
请问图片还能找的会吗?你的图片和原文的图片都挂了,,,如果有图 ...
zookeeper+dubbo+dubbo管理集群的简要配置[单机] -
ahua186186:
yngwiet 写道楼主,有一个地方不太明白,为什么要用“ge ...
ListView中getChildAt(index)的使用注意事项 -
yngwiet:
楼主,有一个地方不太明白,为什么要用“getChildAt(p ...
ListView中getChildAt(index)的使用注意事项
文章列表
以前只排查过DHCP连接池泄露的问题,思路是通过btrace脚本收集日志排查问题,jboss用的是自带的连接池,不熟悉,经过查看官方文档终于找到jboss连接池的核心类,如下:
(1)Jboss连接池核心类:InternalManagedConnectionPool :包含2个核心方法:returnConnection (),getConnection()方法。
(2) 当应用需要进行业务处理时,首先会执行一个getConnection的操作,用于从连接池中获取连接,当业务处理完成后,需要把连接放回到连接池中,执行一个returnConnection的操作。
思路1:通过btrace脚本 ...
1.最近生产环境问题比较多,服务端连接池,接口包连接池各种泄露,监控报警,并且quartz 部分定时任务最近也出现问题:
问题描述:部分quartz定时任务没有启动。
定时任务:
<!--设置调度 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.Schedu ...
1. idea安装和jrebel破解:
JRebel是一款JAVA虚拟机插件,它使得JAVA程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。JRebel使你能即时分别看到代码、类和资源的变化,你可以一个个地上传而不是一次性全部部署。
Intellij JRebel安装、破解
1.下载文章底部的附件,包含官方插件zip文件以及破解需要的zip文件。
2.打开Intellij,进入Intellij IDEA - Preferences - Plugins - Install plugin from disk 选择下载的 jr-ide-idea-6.0. ...
提示:个人理解并且只针对NIO模式
总的来说,包括1个“核心接口”和2个“核心接口帮助类”:
(1)ChannelFactory(NioClientSocketChannelFactory和 NioServerSocketChannelFactory)
作用:初始化boss,work线程
(2)Channels,DefaultChannelPipeline
作用:统一发送底层IO thread的 ChannelEvent事件给handler(上行+下行)或ChannelSink(下行),通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果
...
以服务实现类NewsService为例:
思考:不明白作者为什么要这样生成服务代理类,根据服务名用反射获取服务实例不行吗?性能貌似也不低啊。 还是说为了热部署才这么做的,我能想到的只有这么个需求才会这么做。
ProxyFactoryCreater类动态生成的代码:
//动态代理工厂类
public class ProxyFactory1439795760927 implements IProxyFactory{
private IProxyStub proxyNewsServicedemo =null;
private IProxyStub demo1 = ...
1.核心思路:
(1)动态代理就不用说啦,本质就是通过字节码增强技术来代理对象的行为。
(2)通过在客户端对每个请求都保存一个计数为1的CountDownLatch对象实现同步模型。
2.细节:
客户端的每个请求1个SessionID,每个SessionID持有一个WindowData对象,每个WindowData持有一个AutoResetEvent对象,每个AutoResetEvent持有一个记数为1的CountDownLatch对象。
3.其他思考:
在动态代理的时候 ,作者设计时抽象啦一层:MethodCaller层,这层的各个环节大概有:
1.第一步当然是init: 初始化S ...
oceanus-58总体框架理解
- 博客分类:
- JAVA SE
1.总体思路:
通过约定的XML规则(分表分库规则)和 封装jdbc的Connection和PreparedStatement来实现SQL解析,sql路由和sql重写。
2. 3个核心类:ConnectionWrapper(JDBC Connection包装),PreparedStatementWrapper( JDBC PreparedStatement包装),SimpleExecutor(sql执行器,类似mybatis的SimpleExecutor)
3. 3个上下文传参数:ConnectionContext,StatementContext,transactionContext。 ...
MySQL分库分表环境下全局ID生成方案
- 博客分类:
- JAVA SE
1.最简单的方案就是UUID.
2.flicker的方案:(一种极为优秀的主键生成策略)
http://my.oschina.net/u/142836/blog/174465
3.最常用的是:twitter的snowflake方案以及它的变种,拼方案的话这个完胜。
今天去面试被这个问题问挂啦,只怪数据库知识太弱,准备买本高性能MYSQL补补,多看看沈询的视频。 现总结下如何解决这个问题:
问题分析和思考:
(1)现在数据库的事务隔离级别都是快照级别(MVCC),理论上写写操作是不是不会产生死锁的?
(2)表锁了,查看session,关联出SQL,然后执行看看,基本也可以定位下问题。
1.临时方案1:”查询是否是SQL的问题,查看锁表情况并处理锁表“ 或 “调整MYSQL事务隔离级别” 或 “重建索引表空间 ”或 “查询空间是否足够”
/*
*locked
*query locked object and analyse reason,k ...
阿里云各种产品使用索引(更新2015.07.24)
http://bbs.aliyun.com/read/251196.html?spm=5176.7189909.0.0.RbMAQJ
常见问题>云服务器ECS>linux操作指南:
http://help.aliyun.com/knowledge_list/8314850.html?spm=5176.788314869.1863381.422.pOHzLg
1.summercool-ddl核心类:SqlSessionDaoSupport 和 SqlSessionFactoryBean
(1)SqlSessionDaoSupport 封装了SqlSession(通过动态代理SqlSession来选择数据源的方式实现分库策略),SqlSessionFactoryBean,Map<DataSource, SqlSessionTemplate>。
(2)SqlSessionFactoryBean封装了DataSource,SqlSessionFactory(封装了Configuration(封装环境元素(数据源和事务)、 属性、类型别名 ...
1. summercool-hsf 的核心类包括:AbstractHsfService 和 HsfChannel,EventDispatcher,DispatchUpStreamHandler。
(1)真正干活的类:AbstractHsfService 封装EventDispatcher(封装了HsfService ),ChannelHandler列表,Option列表,所有在线Channel, 建立连接的Channel组列表,监听器列表,flowManager(流量控制)。
(2)真正干活的类:HsfChannel封装了HsfService,futures(回调future集合),cal ...
使用插件maven-shade-plugin可以方便的将项目已jar包的方式导出,插件的好处在于它会把项目所依赖的其他jar包都封装起来,这种jar包放在任何JVM上都可以直接运行。
使用步骤 :
将插件添加到pom.xml中,需要改的地方就是mainClass,在这里指定main方法的位置
使用mvn package打包,最后到projectName/target/下查找目标jar包
<build>
<plugins>
<!-- shade插件打包成jar包 -->
<plugin>
...
1.异步调用:
核心原理:利用JDK的动态代理类创建service代理对象,然后在InvocationHandler中调用channel发送数据, 同时在客户端维护一个回调对象callback集合或InvokeFuture对象集合,方便客户端接收消息的时候异步回调。
核心本质我的理解就是 futrue模式(本质就是setResult(),getResult()) + callback模式(本质就是个监听器对象)
相关核心代码:
创建代理:
/**
* @Title: wrapAsyncProxy4Service
* @Description: 为远程服务创建异步动 ...
1.同步调用:
核心原理:利用JDK的动态代理类创建service代理对象,然后在InvocationHandler中调用channel发送数据, 同时利用信号量同步等待结果返回。
本质我的理解是发送数据时采用“future超时模式”把异步变同步等待数据返回,这里的同步是指每次发送、接收过程的同步,即每次发送都会等待数据响应,消息传输还是异步的。
核心本质:每个请求都持有一个InvokeResult(封装一个信号量),通过invokeFuture.getResult(timeout, TimeUnit.MILLISECONDS);等待超时实现
核心代码:invokeFuture.getR ...