采用CDH Tarbal方式安装Hadoop集群。

1. 环境组件版本

组件名称
组件版本
用途
jdk 1.8 jdk-8u191-linux-x64 oracle jdk
mysql

mysql-5.7.13-linux-glibc2.5-x86_64

存放cloudera manager配置文件
zookeeper zookeeper-3.4.5-cdh5.12.2 分布式协调服务
hadoop
hadoop-2.6.0-cdh5.12.2
包含HDFS和YARN,支撑分布式存储和资源管理。
hbase hbase-1.2.0-cdh5.12.2 存储特性数据,并支持实时更新特性
hive hive-1.1.0-cdh5.12.2 数据离线分区存储,离线分析
kafka kafka_2.11-0.10.2.0 消息中间件(0.10.2.0+kafka2.2.0+110)
azkaban azkaban-3.52.0 调度服务
elasticsearch elasticsearch-6.3.2 Ad-hoc查询,简单实时统计分析

2. 主机规划

IP地址
主机名
角色
172.23.7.138 sz-pg-entps-dev-001.tendcloud.com NameNode, ResourceManager, HMaster, Hive, Azkaban
172.23.7.139 sz-pg-entps-dev-002.tendcloud.com NameNode, ResourceManager, HMaster, Hive
172.23.7.140 sz-pg-entps-dev-003.tendcloud.com JournalNode, DataNode, NodeManager, HRegionServer, Zookeeper, Kafka, ES, KafkaManager
172.23.7.141 sz-pg-entps-dev-004.tendcloud.com JournalNode, DataNode, NodeManager, HRegionServer, Zookeeper, Kafka, ES
172.23.7.142 sz-pg-entps-dev-005.tendcloud.com JournalNode, DataNode, NodeManager, HRegionServer, Zookeeper, Kafka, ES
172.23.7.143 sz-pg-entps-dev-006.tendcloud.com mysql

3. 安装配置

3.1 基础环境

  • JDK 1.8 - Hadoop是用Java开发的,Hadoop的编译及MapReduce的运行都需要使用JDK。
    1. 上传tar包并解压

    tar jdk-8u191-linux-x64.tar.gz

    2. 配置java环境变量

    vim ~/.bash_profile
    export JAVA_HOME=/home/hadoop/jdk1.8.0_191
    export PATH=$PATH:$JAVA_HOME/bin

    3. 加载配置文件

    source ~/.bash_profile
  • SSH - Hadoop需要通过SSH来启动salve列表中各台主机的守护进程,因此SSH也是必须安装的。
    1.  检查 ~/.ssh目录下是否有公私钥对文件(如果存在则跳过第2步)
    2. 生成公私钥对
        ssh-keygen -t rsa  (一直回车)
    3. 将每台机器的公钥都追加到 authorized_keys文件
        cat id_rsa.pub >> authorized_keys
        chmod 600 authorized_keys
        内容类似:

    ...  
    ssh-rsa  AAAAB3NzaC1yc2EAAAADAQABAAABAQDPKrND6Fnn3fZOdV9yseMhNruIFJQJXL8nA3s8QoR3dc0/qJ6GHFHOcVv9zK0o+AYmfxzYupIqwZKX9oqbHR3EOhecoafODY0ynopbvdWbx+VUDub3uQ4W5vgKZQYRxSmqk4xBJSVGnIOjxN0fadUIQx/MwZ/MIBEHs7A5ECLIssvJPehvzcUiLl7SIRnDcRZjdCHJLMMVjzFRq0xJ3i7v04a82bSPrycSuQazvEG7apherZvbfxoD+oa3G0ATq9mOaqvT47dPQ9/lSNXsmMWcT3n3Y8WCPHbbrdJoi51ZrdSrqs8e616rZIj1J06e+mewGbtB61CQSuwhamWR+4o1 hadoop@sz-pg-entps-dev-001.tendcloud.com
             ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzfEL1MZv4mJXldBPIvwUIY6KfsG6cjel8i2stMx/AomoWY7XfcdZeXagUh/LsslQ92wOqVegj1MBiUkiaA2NR5rZERZECJrJuc3DILaxesotq+l1W7EYPQmCGrCJmC3RWWhte5bkIXxFbwKTEbgre5HgdigTnrs5/wf0wqyn/JpTpJGYOF71lVHX4gW9SgWSVBfsqfA4nO61agp4bahQcAPVmfcNHpbXig5mgPF14nPTMuqsrfiqxthup7XZvgXWMvK07nyUv/+rR3FRyv1sP8l+Exx9N0o7X9SG0GfeZXohzBGVv11tzBdCSn+TSE1I5WLZV0bT7b9wB/PLGwSZX hadoop@sz-pg-entps-dev-002.tendcloud.com
    ...

    4. 检查能否免密登录各节点

  • 安装mysql(略)

3.2 Zookeeper安装

  1. 解压安装包中的`zookeeper-3.4.5-cdh5.12.2.tar.gz`到指定的安装目录

    tar -zxvf zookeeper-3.4.5-cdh5.12.2.tar.gz
  2. 修改zookeeper配置文件(conf/zoo.cfg)
      tickTime=2000
      initLimit=10
      syncLimit=5
      dataDir=/data/cdp/zookeeper-3.4.5-cdh5.12.2/data
      dataLogDir=/data/cdp/zookeeper-3.4.5-cdh5.12.2/log (文件夹必须存在,否则启动不起来)
      clientPort=2181

    server.1=sz-pg-entps-dev-003.tendcloud.com:2888:3888
      server.2=sz-pg-entps-dev-004.tendcloud.com:2888:3888
      server.3=sz-pg-entps-dev-005.tendcloud.com:2888:3888

  3. 上面已经在一台机器(sz-pg-entps-dev-003.tendcloud.com)上配置完zookeeper,现在可以将该配置好的安装文件远程拷贝到集群中的各个结点对应的目录下

    scp -r ~/zookeeper-3.4.5-cdh5.12.2/ hadoop@sz-pg-entps-dev-004.tendcloud.com:/home/hadoop/
    scp -r ~/zookeeper-3.4.5-cdh5.12.2/ hadoop@sz-pg-entps-dev-005.tendcloud.com:/home/hadoop/
  4. 创建文件夹并设置myid

    mkdir -p /data/cdp/zookeeper-3.4.5-cdh5.12.2/data
     mkdir -p /data/cdp/zookeeper-3.4.5-cdh5.12.2/log

    在配置的dataDir指定目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机。
      server.X 中 X为什么数字,则myid文件中就输入这个数字。

  5. 启动zookeeper集群(在zookeeper集群的每个节点上,执行启动脚本)
     ~/zookeeper-3.4.5-cdh5.12.2/bin/zkServer.sh start
  6. 安装验证
    ~/zookeeper-3.4.5-cdh5.12.2/bin/zkServer.sh status

3.3  Hadoop安装

  1. 解压安装包中的`hadoop-2.6.0-cdh5.12.2.tar.gz到指定的安装目录
    tar -zxvf hadoop-2.6.0-cdh5.12.2.tar.gz
  2. 将hadoop目录添加到环境变量
    vim ~/.bash_profile
    export HADOOP_HOME=/home/hadoop/hadoop-2.6.0-cdh5.12.2
    export PATH=$PATH:$HADOOP_HOME/bin

    应用环境变量
    source ~/.bash_profile

  3. 配置hadoop-env.sh
    export JAVA_HOME=/home/hadoop/jdk1.8.0_191
  4. 配置core-site.xml

    <configuration>
      <property>
        <name>fs.defaultFS</name>
        <value>hdfs://ns1</value>
      </property>
      <property>
        <name>ha.zookeeper.quorum</name>
      </property>
      <property>
        <name>hadoop.tmp.dir</name>
        <value>/data/cdp/hadoop-2.6.0-cdh5.12.2/tmp</value>
      </property>
    </configuration>
  5. 配置hdfs-site.xml

    <configuration>
      <property>
        <name>dfs.replication</name>
        <value>3</value>
      </property>
      <property>
        <name>dfs.permissions</name>
        <value>false</value>
      </property>
      <property>
        <!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致-->
        <name>dfs.nameservices</name>
        <value>ns1</value>
      </property>
      <property>
        <name>dfs.ha.namenodes.ns1</name>
        <value>nn1,nn2</value>
      </property>
      <property>
      </property>
      <property>
      </property>
      <property>
      </property>
      <property>
      </property>
      <property>
      </property>
      <property>
      </property>
      <property>
        <value>true</value>
      </property>
      <property>
        <name>dfs.namenode.shared.edits.dir</name>
      </property>
      <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/home/hadoop/hadoop-2.6.0-cdh5.12.2/journaldata</value>
      </property>
      <property>
      </property>
      <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
      </property>
      <property>
        <value>/home/hadoop/.ssh/id_rsa</value>
      </property>
      <property>
        <value>30000</value>
      </property>
      <property>
        <name>dfs.namenode.handler.count</name>
        <value>100</value>
      </property>
    </configuration>
  6. 配置datanode的slaves文件

    sz-pg-entps-dev-003.tendcloud.com
    sz-pg-entps-dev-004.tendcloud.com
    sz-pg-entps-dev-005.tendcloud.com
  7. 配置yarn-site.xml

    <configuration>
      <property>
        <name>yarn.resourcemanager.zk-address</name>
      </property>
      <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
      </property>
      <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
      </property>
      <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>yrc</value>
      </property>
      <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
      </property>
      <property>
        <value>sz-pg-entps-dev-001.tendcloud.com</value>
      </property>
      <property>
        <value>sz-pg-entps-dev-002.tendcloud.com</value>
      </property>
    </configuration>
  8. 配置marped-site.xml

    <configuration>
      <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
      </property>
    </configuration>
  9. 将配置好的hadoop复制到集群其他节点

    启动流程:

  1. 启动JournalNode(必须在格式化NameNode之前启动)

    在namenode节点(sz-pg-entps-dev-002.tendcloud.com)启动 journalnode

    ~/hadoop-2.6.0-cdh5.12.2/sbin/hadoop-daemons.sh start journalnode

  2. 在NameNode节点格式化zookeeper - 目的是在ZooKeeper集群上建立HA的相应节点
       hdfs zkfc -formatZK
  3. 格式化NameNode(必须开启JournalNode进程)
       hadoop namenode -format
      注意:如果不是首次format的话还是把NameNode和DataNode存放数据地址下的数据手动删除一下,否则会造成NameNode ID和DataNode ID不一致。
  4. 启动 NameNode
       ~/hadoop-2.6.0-cdh5.12.2/sbin/hadoop-daemons.sh start namenode
  5. 把namenode数据从 sz-pg-entps-dev-002.tendcloud.com 同步到 sz-pg-entps-dev-001.tendcloud.com
      在 sz-pg-entps-dev-001.tendcloud.com (namenode standby)下执行: 
       hdfs namenode -bootstrapStandby
  6. 启动所有DataNode
      ~/hadoop-2.6.0-cdh5.12.2/sbin/hadoop-daemons.sh start datanode
  7. 启动yarn
      ~/hadoop-2.6.0-cdh5.12.2/sbin/start-yarn.sh
  8. 在sz-pg-entps-dev-001.tendcloud.com,sz-pg-entps-dev-002.tendcloud.com启动ZooKeeperFailoverController
      ~/hadoop-2.6.0-cdh5.12.2/sbin/hadoop-daemon.sh start zkfc
  9. NameNode HA操作完之后我们可以发现只有一个节点(这里是sz-pg-entps-dev-002.tendcloud.com)启动,需要手动启动另外一个节点(sz-pg-entps-dev-001.tendcloud.com)的resourcemanager
        ~/hadoop-2.6.0-cdh5.12.2/sbin/yarn-daemon.sh start resourcemanager

检测验证

  1. 在本机配置hosts文件,如下:

    172.23.7.138 sz-pg-entps-dev-001.tendcloud.com
    172.23.7.139 sz-pg-entps-dev-002.tendcloud.com
    172.23.7.140 sz-pg-entps-dev-003.tendcloud.com
    172.23.7.141 sz-pg-entps-dev-004.tendcloud.com
    172.23.7.142 sz-pg-entps-dev-005.tendcloud.com
    172.23.7.143 sz-pg-entps-dev-006.tendcloud.com

    在浏览器输入:在浏览器中输入:http://sz-pg-entps-dev-002.tendcloud.com:50070/,就可以看到如下界面

    问题: 启动时 两个namenode节点若都是standby
    解决:在hadoop安装目录执行 sbin/hadoop-daemon.sh start zkfc (启动zookeeper的选举制度)

3.4 HBase安装

  1. 解压安装包中的`hbase-1.2.0-cdh5.12.2.tar.gz到指定的安装目录
    tar -zxvf hbase-1.2.0-cdh5.12.2.tar.gz
  2. 配置 hbase-env.sh
      - 加入JAVA环境变量 
         export JAVA_HOME=/home/hadoop/jdk1.8.0_191
      - 关闭HBase自带的Zookeeper,使用Zookeeper集群
         export HBASE_MANAGES_ZK=false
  3. 配置 hbase-site.xml

    <configuration>
      <property>
        <name>hbase.rootdir</name>
        <value>hdfs://sz-pg-entps-dev-002.tendcloud.com:9000/hbase</value>
      </property>
      <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
      </property>
      <property>
       <name>hbase.zookeeper.quorum</name<!-- list of  zookooper -->
     </property>
      <property>
        <name>hbase.master.maxclockskew</name>
        <value>180000</value>
      </property>
    </configuration>
  4. 配置 regionservers

    sz-pg-entps-dev-003.tendcloud.com
    sz-pg-entps-dev-004.tendcloud.com
    sz-pg-entps-dev-005.tendcloud.com

  5. 将HBase复制到其他机器
    scp -r ~/hbase-1.2.0-cdh5.12.2 hadoop@sz-pg-entps-dev-001.tendcloud.com:/home/hadoop/
    scp -r ~/hbase-1.2.0-cdh5.12.2 hadoop@sz-pg-entps-dev-003.tendcloud.com:/home/hadoop/
    scp -r ~/hbase-1.2.0-cdh5.12.2 hadoop@sz-pg-entps-dev-004.tendcloud.com:/home/hadoop/
    scp -r ~/hbase-1.2.0-cdh5.12.2 hadoop@sz-pg-entps-dev-005.tendcloud.com:/home/hadoop/
  6. 启动HBase服务(只需要在一个节点启动就行了)
    ~/hbase-1.2.0-cdh5.12.2/bin/start-hbase.sh
  7. 检测验证
    在浏览器输入:在浏览器中输入:http://sz-pg-entps-dev-002.tendcloud.com:60010/,就可以看到如下界面

3.5 Hive安装

  1. 解压安装包中的`hive-1.1.0-cdh5.12.2.tar.gz`到指定的安装目录
      tar -zxvf hive-1.1.0-cdh5.12.2.tar.gz
  2. 添加Hive环境变量

    vim ~/.bash_profile
    export HIVE_HOME=/home/hadoop/hive-1.1.0-cdh5.12.2
    export PATH=$PATH:$HIVE_HOME/bin
  3. 加载配置文件
  4. 配置 hive-env.sh

    HADOOP_HOME=/home/hadoop/hadoop-2.6.0-cdh5.12.2
    HIVE_HOME=/home/hadoop/hive-1.1.0-cdh5.12.2
     
     
    export HADOOP_HEAPSIZE=1024
    export HIVE_CONF_DIR=$HIVE_HOME/conf
    export HIVE_AUX_JARS_PATH=$HIVE_HOME/lib
  5. 配置hive-site.xml

    <configuration>
       <property>
        <name>javax.jdo.option.ConnectionURL</name>
      </property>
       <property>
        <value>com.mysql.jdbc.Driver</value>
      </property>
       <property>
        <value>hive</value>
      </property>
      <property>
        <value>hive</value>
      </property>
     <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
      </property>
      <property>
        <name>hive.exec.scratchdir</name>
        <value>/tmp/hive</value>
      </property>
      <property>
        <name>hive.zookeeper.quorum</name>
      </property>
    </configuration>
  6. 查看HDFS是否存在这些路径,若不存在需要手动添加

    hdfs dfs -ls /
    ## 若不存在,需要手动添加
    hdfs dfs -mkdir -p /user/hive/warehouse
    hdfs dfs -chmod 777 /user/hive/warehouse
    hdfs dfs -mkdir -p /tmp/hive
    hdfs dfs -chmod 777 /tmp/hive
  7. 拷贝JDBC包
      将 mysql-connector-java-5.1.47.jar 放到 $HIVE_HOME/lib 下
  8. 初始化Hive操作
      schematool -dbType mysql -initSchema
  9. 启动Metastore服务
      hive --service metastore
  10. 测试

3.6 Kafka安装

  1. 解压安装包中的`kafka_2.11-0.10.2.0.tgz`到指定的安装目录
      tar -zxvf kafka_2.11-0.10.2.0.tgz

  2. 配置server.properties

    注意:broker.id 的值3个节点要配置不同的值,分别配置为0,1,2;log.difs必须保证目录存在,不会根据配置文件自动生成。

    mkdir -p  /data/cdp/kafka_2.11-0.10.2.0/data

  3. 将Kafka复制到其他机器

  4. 启动kafka集群,进入kafka目录,执行如下命令
       ./bin/kafka-server-start.sh -daemon config/server.properties &
  5. 3个节点均要启动;启动无报错,即搭建成功,可以生产和消费信息,来检测是否搭建成功
     
    ./bin/kafka-topics.sh --zookeeper sz-pg-entps-dev-003.tendcloud.com:2181,sz-pg-entps-dev-004.tendcloud.com:2181,sz-pg-entps-dev-005.tendcloud.com:2181 --create --replication-factor 1 --partitions 3 --topic test
    Created topic "test".
     
    test

Kafka Manager地址:http://172.23.7.140:8020/

3.7 Azkaban安装

  1. 解压安装包中的`azkaban-3.52.0-bin.tar.gz`到指定的安装目录

    tar -zvxf azkaban-3.52.0-bin.tar.gz
  2. 在mysql创建azkaban元数据库,并且使用安装目录下的`create-all-sql-0.1.0-SNAPSHOT.sql`脚本进行数据库的初始化

    CREATE DATABASE azkaban;
    CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
    GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;
    flush privileges;
    use azkaban;
    source ${安装目录}/create-all-sql-0.1.0-SNAPSHOT.sql;
  3. 修改azkaban-web-server目录下的/conf/azkaban.properties,替换以下参数为真实环境量

    # Azkaban mysql settings by default. Users should configure their own username and password.
  4. 修改azkaban-web-server目录下的/conf/global.properties,替换以下参数为真实环境IP

    job.notification.started.1.url=http://${IP:PORT}/job-scheduler/jobs/callback
    job.notification.completed.1.url=http://${IP:PORT}/job-scheduler/jobs/callback
  5. 修改azkaban-web-server目录下的/conf/azkaban-users.xml,替换为真实环境的登录用户名和密码

    <azkaban-users>
      <user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
      <user password="metrics" roles="metrics" username="metrics"/>
      <role name="admin" permissions="ADMIN"/>
      <role name="metrics" permissions="METRICS"/>
    </azkaban-users>vim
  6. 在azkaban-exec-server目录下分别重复步骤3、步骤4,并且修改/conf/azkaban.properties,替换以下参数为真实的Azkaban Web服务地址

    # Azkaban Jetty server properties.
    # 指定executor的端口
    # Where the Azkaban web server is located
  7. 启动executor服务
      ./bin/start-exec.sh
  8. 在mysql中的azkaban.executors表更新对应executor实例的`active`字段为1,用于azkaban-web服务的executor服务感知,如果此步骤不执行,web服务启动将报错
      update executors set active = 1
  9. 启动azkaban-web服务
      ./bin/start-web.sh

  10. 访问Azkaban WEB UI: http://172.23.7.138:8081/index

3.8 ElasticSearch安装

    1. 解压安装包中的`elasticsearch-6.3.2.tar.gz`到指定的安装目录  tar -zxvf elasticsearch-6.3.2.tar.gz
    2. 参数调整 - 配置elasticsearch.yml

      配置 jvm.options

      -Xms10g
      -Xmx10g
    3. 启动elasticsearch
       ./bin/elasticsearch

CDH 安装配置指南(Tarball方式)的更多相关文章

  1. [转载]SharePoint 2013测试环境安装配置指南

    软件版本 Windows Server 2012 标准版 SQL Server 2012 标准版 SharePoint Server 2013 企业版 Office Web Apps 2013 备注: ...

  2. 大数据应用日志采集之Scribe 安装配置指南

    大数据应用日志采集之Scribe 安装配置指南 大数据应用日志采集之Scribe 安装配置指南 1.概述 Scribe是Facebook开源的日志收集系统,在Facebook内部已经得到大量的应用.它 ...

  3. 高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南

    原文:http://my.oschina.net/wstone/blog/365010#OSC_h3_13 (WJW)高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南 [X] ...

  4. 【转】服务器证书安装配置指南(Weblogic)

    服务器证书安装配置指南(Weblogic) 详情请点击: http://verisign.itrus.com.cn/html/fuwuyuzhichi/fuwuqizhengshuanzhuangpe ...

  5. 【转】Syncthing – 数据同步利器---自己的网盘,详细安装配置指南,内网使用,发现服务器配置

    Syncthing – 数据同步利器---自己的网盘,详细安装配置指南,内网使用,发现服务器配置 原贴:https://www.cnblogs.com/jackadam/p/8568833.html ...

  6. 【云计算】ubuntu下docker安装配置指南

    Docker Engine安装配置 以下描述仅Docker在Ubuntu Precise 12.04 (LTS).Ubuntu Trusty 14.04 (LTS).Ubuntu Wily 15.10 ...

  7. linux下安装Apache(https) 服务器证书安装配置指南

    一.  安装准备 1.    安装Openssl 要使Apache支持SSL,需要首先安装Openssl支持.推荐下载安装openssl-0.9.8k.tar.gz   下载Openssl:http: ...

  8. Gitolite v3安装配置指南

    使用gitolite对git仓储进行权限配置 gitolite在近期做了很多代码改动,升级到了v3版本,而我使用的是v3.5.2.在<Git权威指南>中所提及的是v2版本,有很多东西已经不 ...

  9. HADOOP2.2.0安装配置指南

    一.     集群环境搭建 这里我们搭建一个由三台机器组成的集群: Ip地址 用户名/密码 主机名 集群中角色 操作系统版本 192.168.0.1 hadoop/hadoop Hadoop-mast ...

随机推荐

  1. http 使用curl发起https请求报错的解决办法

    使用curl发起https请求的时候报错:“SSL certificate problem, verify that the CA cert is OK. Details: error:1409008 ...

  2. 往aws中的s3上传数据

    在官网下载对应的sdk http://aws.amazon.com/cn/sdk-for-net/ 然后再aws上为s3上的bucket生成密钥对 access_key和secret_key 调用对应 ...

  3. 转:用十条命令在一分钟内检查Linux服务器性能

    转自:http://www.infoq.com/cn/news/2015/12/linux-performance?utm_campaign=rightbar_v2&utm_source=in ...

  4. Boost.Asio c++ 网络编程翻译(21)

    同步VS异步 Boost.Asio的作者做了一个非常惊艳的工作:它能够让你在同步和异步中自由选择,从而更好的适应你的应用. 在之前的章节中,我们学习了每种类型应用的框架,比方同步client,同步服务 ...

  5. 接口测试框架开发(一):rest-Assured_接口返回数据验证

    转载:http://www.cnblogs.com/lin-123/p/7111034.html 返回的json数据:{"code":"200","m ...

  6. 实现淡入淡出效果的组件,继承自JComponent

    由于仅贴出代码,供有缘人参考. import java.awt.AlphaComposite; import java.awt.Graphics; import java.awt.Graphics2D ...

  7. servlet中ServletConfig的使用

    转自:http://www.zzzj.com/html/20090117/69483.html 前言 相对于ServletContext,ServletConfig是针对特定的Servlet的参数或属 ...

  8. html中锚点的应用【本页面跳转】

    设置锚点 <a name="top"></a> 同页跳转 <a href="#top">返回顶部</a> 不同页 ...

  9. Rails 枚举

    Rails Model中使用枚举有两种方案,一种是rails内置的enum,一种使用enumerize这个gem,不管哪种都能达到相同的目的. 首先介绍第一种: 一. enum 基本使用方法,以一个案 ...

  10. Windows注册表中修改CMD默认路径

    一.开启注册表“win键+R键”并输入regedit 二.在注册表项 HKEY_CURRENT_USER\ Software\ Microsoft\ Command Processor 新建一个项,并 ...