`
gaojingsong
  • 浏览: 1201857 次
  • 性别: 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)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:...

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

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

    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 ...

    Mycat-server-1.6.7.6-release-windows-linux.rar

    4. "Mycat-server-1.6.7.6-release-sources.jar":这是Mycat的源代码jar包,对于开发者来说,这是一个非常宝贵的资源,可以通过查看源代码了解Mycat的工作原理和实现细节。 安装和配置Mycat时,需要修改相应的配置...

    mycat-web、mycat-eye

    - **源代码**:mycat-web项目的Java源码,包含了MyCat Web管理平台的前端和后端代码。 - **部署脚本**:用于部署mycat-web到服务器的脚本,可能包括启动、停止、更新等操作。 - **配置文件**:如mycat.properties,...

Global site tag (gtag.js) - Google Analytics