`
gaojingsong
  • 浏览: 1182006 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Mycat之启动类MycatStartup代码阅读

阅读更多

public final class MycatStartup {

    private static final String dateFormat = "yyyy-MM-dd HH:mm:ss";

    private static final Logger LOGGER = LoggerFactory.getLogger(MycatStartup.class);

    public static void main(String[] args) {

        //use zk ?

    //使用单例模式加静态代码块加载/myid.properties配置文件

    //如果配置文件中loadZk取值为true则会调用ZktoXmlMain类的loadZktoFile方法,

    // 否则不使用ZK,这段代码小刘的注释写的很漂亮,值得学习和表扬

        ZkConfig.getInstance().initZk();

        try {

        //检查是否设置SystemConfig中的SYS_HOME = "MYCAT_HOME"变量值

            String home = SystemConfig.getHomePath();

            if (home == null) {

                System.out.println(SystemConfig.SYS_HOME + "  is not set.");

                System.exit(-1);

            }

            // init

            //使用单例模式初始化配置文件为启动做准备:读取配置文件和启用scheduler调度器,

            //其中配置文件的加载使用的是java中的w3c的DocumentBuilderFactory-->DocumentBuilder,

            //这种代码比较底层。 dom  sax  dom4j的区别呢?此处没有用dom4j,估计是考虑到dtd验证问题

            MycatServer server = MycatServer.getInstance();

            //空方法啥也不干,以前可能用来初始化启动上述ZK,被注释掉代码  ZkConfig.instance().initZk();

            server.beforeStart();

 

            // startup

            //这个是个超级大方法,长达200多行,因此此段代码是个bad code,待优化

            server.startup();

            System.out.println("MyCAT Server startup successfully. see logs in logs/mycat.log");

        } catch (Exception e) {

        //SimpleDateFormat类不是线程安全的,所以在多线程的环境下,往往会出现意想不到的结果。

        //umberFormatException: multiple points

            SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);

            LOGGER.error(sdf.format(new Date()) + " startup error", e);

            System.exit(-1);

        }

    }

}



 

启用ZK的配置文件



 

启用ZK的代码



 

XML文件解析

Sax基于事件的访问,应用程序通过事件处理函数实现对xml文档的访问.

因为事件触发是有时序性的,
优点:1、无需将整个文档加载到内存中,所以内存消耗少.
       2 、推模型允许注册多个contentHandler.
缺点:1、没有内置的文档导航支持.
       2、不能随机访问xml文档.
       3、不支持原地修改xml.
       4、不支持名字空间作用域.
适合:对xml文档读取数据
小王老师曾说:SAX类似一个盲人去触摸一个漂亮女孩子一样,从头到脚只能触摸一次,即不可返回反复触摸,再摸就是非礼了。而DOM就可以反复了,因为它是整个加载到内存的,SAX是边读边解析的,解析完就丢弃


DOM解析器把XML文档转化为一个包含其内容的树,并可以对树进行遍历。也就是说,通过DOM树,应用程序可以对XML文档进行随机访问
优点:1、丰富的API集合,可以轻松导航.
        2、 整个DOM树加载到内存,允许随机访问.
缺点:1、整个xml文档必须一次解析完.
        2、整个DOM树都加载到内存中,内存要求高.
        3、一般的DOM节点对于必须为所有节点创建对象的对象类型绑定不太理想.
适用:对xml文档修改数据


DOM4J
DOM4J有更复杂的api,所以dom4j比jdom有更大的灵活性.DOM4J性能最好,连Sun的JAXM也在用DOM4J.目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J.
优点:1、灵活性最高
           2、易用性和功能强大、性能优异
缺点:1、复杂的api
      2、移植性差
适用:自行选择
 
单例模式:

单例模式的特征

构造函数私有化,不能产生对象,所以只能用类名调用,所有只能是静态函数。

缺点:弄不好,并发有问题

永久链接: http://gaojingsong.iteye.com/blog/2283961

预览文章: 【设计模式之单例模式】

  • 大小: 120.4 KB
  • 大小: 28.8 KB
  • 大小: 79.4 KB
0
0
分享到:
评论

相关推荐

    mycat 主键自增代码

    总结来说,Mycat 的主键自增代码涉及到分布式环境下的主键生成、配置、冲突解决和性能优化等多个方面。正确理解和配置这些参数,对于构建高可用、高性能的分布式数据库系统至关重要。在实际应用中,需要根据业务需求...

    mycat 资源mycat 资源mycat 资源mycat 资源mycat 资源mycat 资源mycat 资源mycat 资源

    mycat 资源mycat 资源mycat 资源mycat 资源mycat 资源mycat 资源mycat 资源mycat 资源mycat 资源mycat 资源mycat 资源mycat 资源mycat 资源mycat 资源mycat 资源mycat 资源mycat 资源mycat 资源mycat 资源mycat 资源...

    MyCat测试报告(单机MyCAT对比多机MyCAT)1

    《MyCat测试报告:单机与多机集群的性能比较》 MyCat,作为一个流行的开源分布式数据库系统,常被用于解决大数据场景下的高并发问题。本测试报告旨在探究单台MyCat与多台MyCat集群在性能上的差异,并对比前端使用...

    mycat2 install-template(mycat2-install-template-1.20.zip)

    【标题】"mycat2 install-template(mycat2-install-template-1.20.zip)" 指的是MyCat 2的一个安装模板文件,版本号为1.20,存储在一个名为“mycat2-install-template-1.20.zip”的压缩包内。MyCat是开源的、基于...

    Mycat源码分析

    Mycat源码分析Mycat源码分析Mycat源码分析Mycat源码分析Mycat源码分析

    MyCat知识点汇总

    数据分片是Mycat的核心功能之一,它允许用户根据业务需求将数据分布到不同的数据库或表中。垂直拆分是将一个大型的数据库拆分成若干个小型的数据库,每个小型数据库只包含原数据库的一部分表,通常是为了将相关业务...

    Mycat-1.6.7.3.zip

    6. **扩展性**:Mycat设计时考虑了良好的扩展性,随着业务的增长,可以轻松添加新的数据节点,无需改动应用层代码。 在实际应用中,我们还需要关注Mycat的日志配置、性能监控、异常处理等方面,确保系统的稳定运行...

    mycat安装部署文档

    此外,还有一个"mycat.rar"文件,可能是更深入的Mycat配置文件或者源代码,用于进一步研究或调试。 【标签】"mycat.zip"强调了这个主题的关键点,即Mycat数据库中间件。 【文件名称列表】中的具体文件说明如下: ...

    MyCat中间件

    1. 安装部署:下载MyCat的压缩包,解压后进入bin目录,执行start.sh(Linux)或start.bat(Windows)启动MyCat服务器。 2. 配置分片规则:编辑conf/server.xml,定义数据分片策略和数据库连接信息。 3. 创建表结构...

    MYCAT.zip MYCAT.zip

    5. 启动MYCAT服务:使用bin目录下的start.sh(Linux)或start.bat(Windows)脚本启动服务。 6. 监控与管理:通过Web管理界面或命令行工具检查MYCAT的运行状态,进行必要的调整。 总的来说,MYCAT是一个强大的...

    mycat的安装和启动

    ### MyCat的安装与启动详解 #### 一、前言 Mycat是一款优秀的开源数据库中间件,它通过实现SQL解析、路由、分片等功能,为应用程序提供了一种透明的多数据库连接池管理机制,从而简化了应用层对底层数据库集群的...

    【Mycat1.6之操作SQLServer案例】

    【Mycat1.6与SQLServer操作案例详解】 Mycat是一款开源的分布式数据库中间件,它在大型分布式系统中扮演着数据库分片的角色,能够有效地解决单个数据库性能瓶颈的问题。Mycat 1.6是其一个重要版本,提供了更稳定、...

    mycat2基础安装包

    10. **社区支持**:Mycat2作为开源项目,有活跃的社区支持,用户可以通过官方论坛、GitHub等平台获取帮助、报告问题或贡献代码。 以上就是关于"mycat2基础安装包"的相关知识点,通过理解这些内容,用户可以更好地...

    mycat使用经验分享

    - 运行入口程序:`org.opencloudb.MycatStartup.java`,右键运行并设置 `MYCAT_HOME` 目录为当前工程所在目录(src/main)。 - 如果启动时出现 DirectBuffer 内存不足的错误,可以通过添加 JVM 参数 `XX:...

    mycat 分库分表

    - 启动 mycat:启动 mycat 服务,测试连接和 SQL 路由。 6. **mycat 在实际项目中的应用** mycat 常用于电商、社交、金融等领域的大数据平台,如订单系统、用户信息管理、商品分类等,通过分库分表降低单表数据量...

    mycat2(mycat2-1.21-release-jar-with-dependencies.jar)

    2. 启动服务:运行jar包,启动mycat2服务器。命令行输入`java -jar mycat2-1.21-release-jar-with-dependencies.jar`。 3. 连接测试:通过MySQL客户端连接mycat2,验证服务是否正常运行,可以执行简单的SQL查询来...

    Mycat-Server-1.6可以直接导入到eclipse调试

    在Eclipse中,你可以设置断点,通过Debug模式启动Mycat,以便于分析代码执行流程和问题定位。 此外,Mycat-Server-1.6使用Maven进行项目管理,Maven的生命周期可以帮助你构建、测试和打包项目。通过执行"Maven ...

    mycat2 install-template(mycat2-install-template-1.21.zip)

    【标题】"mycat2 install-template(mycat2-install-template-1.21.zip)" 指的是MyCat 2的一个安装模板文件,版本为1.21,通常包含了安装MyCat 2所需的所有配置文件和脚本,用于简化部署过程。 【描述】虽然描述...

    mycat2(mycat2映射关系.pdf)

    MyCat2映射关系概述 MyCat2是一款开源的数据库中间件,可以实现数据库的分布式处理、读写分离、负载均衡等功能。在MyCat2中,数据源、集群和逻辑表是三个核心概念。 数据源(DataSource)是指实际的数据库实例,...

Global site tag (gtag.js) - Google Analytics