操作指南产品文档
|
|
|
- 鸭 却
- 7 years ago
- Views:
Transcription
1 云数据库 Hbase 操作指南 产品文档
2 版权声明 腾讯云版权所有 本文档著作权归腾讯云单独所有, 未经腾讯云事先书面许可, 任何主体不得以任何形式复制 修改 抄袭 传 播全部或部分本文档内容 商标声明 及其它腾讯云服务相关的商标均为腾讯云计算 ( 北京 ) 有限责任公司及其关联公司所有 本文档涉及的第三方 主体的商标, 依法由权利人所有 服务声明 本文档意在向客户介绍腾讯云全部或部分产品 服务的当时的整体概况, 部分产品 服务的内容可能有所调整 您所购买的腾讯云产品 服务的种类 服务标准等应由您与腾讯云之间的商业合同约定, 除非双方另有约定, 否则, 腾讯云对本文档内容不做任何明示或模式的承诺或保证 第 2 页共 41 页
3 文档目录 文档声明... 2 Step1. 连接和访问... 4 Step2. 替换客户端 jar 包... 6 Step3. 连接腾讯云参数设置 Step4. 操作示例代码 MapReduce 示例代码 endpoint 协处理器示例代码 observer 协处理器示例 第 3 页共 41 页
4 Step1. 连接和访问 获取连接 IP 1) 申请资格 点击进入产品介绍页申请测试资格 2) 获取实例 ID 和 IP 信息 进入腾讯云 Hbase 管理中心, 可以查看实例 ID, 并获取连接 Hbase 的一个或多个 IP 和端口 : 通过 SHELL 访问 首先下载 Hbase 客户端软件, 然后解压到云主机, 然后修改 conf 下的 hbase-site.xml 添加如下配置项目 : <configuration> <property> <name>hbase.zookeeper.quorum</name> <value>( 腾讯云提供的连接地址和端口, 管理控制台可查 )</value> </property> <property> <name> chbase.tencent.enable </name> <value> true</value> </property> </configuration> 然后执行 bin/hbase shell, 可以进入 Hbase 命令终端 : 第 4 页共 41 页
5 第 5 页共 41 页
6 Step2. 替换客户端 jar 包 替换客户端 jar 包 连接腾讯云 Hbase 服务, 需要使用我们提供的 jar 包来替换社区版本的部分 jar 包, 并设置相应的参数 1). 如您使用 maven 管理 jar 包, 可参考如下 pom 设置来拉取和替换 jar 包 : <properties> <project.build.sourceencoding>utf-8</project.build.sourceencoding> <hadoop-two.version>2.6.4</hadoop-two.version> </properties> <dependencies> <!-- 导入社区 jar 包 --> <groupid>org.apache.hbase</groupid> <artifactid>hbase-client</artifactid> <version>1.1.3</version> <type>pom</type> <scope>provided</scope> <exclusions> <artifactid>hadoop-annotations</artifactid> <artifactid>hadoop-auth</artifactid> <artifactid>hadoop-client</artifactid> 第 6 页共 41 页
7 <artifactid>hadoop-common</artifactid> <artifactid>hadoop-hdfs</artifactid> <artifactid>hadoop-mapreduce-client-app</artifactid> <artifactid>hadoop-mapreduce-client-common</artifactid> <artifactid>hadoop-mapreduce-client-core</artifactid> <artifactid>hadoop-mapreduce-client-jobclient</artifactid> <artifactid>hadoop-mapreduce-client-shuffle</artifactid> <artifactid>hadoop-yarn-api</artifactid> 第 7 页共 41 页
8 <artifactid>hadoop-yarn-client</artifactid> <artifactid>hadoop-yarn-common</artifactid> <artifactid>hadoop-yarn-server-common</artifactid> </exclusions> <groupid>org.apache.hbase</groupid> <artifactid>hbase-server</artifactid> <version>1.1.3</version> <type>pom</type> <scope>provided</scope> <exclusions> <artifactid>hadoop-annotations</artifactid> <artifactid>hadoop-auth</artifactid> <artifactid>hadoop-client</artifactid> <artifactid>hadoop-common</artifactid> 第 8 页共 41 页
9 <artifactid>hadoop-hdfs</artifactid> <artifactid>hadoop-mapreduce-client-app</artifactid> <artifactid>hadoop-mapreduce-client-common</artifactid> <artifactid>hadoop-mapreduce-client-core</artifactid> <artifactid>hadoop-mapreduce-client-jobclient</artifactid> <artifactid>hadoop-mapreduce-client-shuffle</artifactid> <artifactid>hadoop-yarn-api</artifactid> <artifactid>hadoop-yarn-client</artifactid> 第 9 页共 41 页
10 <artifactid>hadoop-yarn-common</artifactid> <artifactid>hadoop-yarn-server-common</artifactid> </exclusions> <groupid>com.google.code.gson</groupid> <artifactid>gson</artifactid> <version>2.5</version> <groupid>commons-configuration</groupid> <artifactid>commons-configuration</artifactid> <version>1.6</version> <groupid>org.apache.httpcomponents</groupid> <artifactid>httpcore</artifactid> <version>4.2.4</version> <groupid>org.apache.httpcomponents</groupid> <artifactid>httpclient</artifactid> <version>4.2.5</version> <groupid>org.htrace</groupid> <artifactid>htrace-core</artifactid> <version>3.0.4</version> 第 10 页共 41 页
11 <groupid>org.apache.avro</groupid> <artifactid>avro</artifactid> <version>1.7.4</version> <!-- 导入腾讯云提供的 jar 包, 注意修改 jar 包路径 --> <artifactid>hadoop-annotations</artifactid> <version>2.6.4</version> <scope>system</scope> <systempath>${basedir/hadoop/hadoop-annotations jar</systempath> <artifactid>hadoop-auth</artifactid> <version>2.6.4</version> <scope>system</scope> <systempath>${basedir/hadoop/hadoop-auth jar</systempath> <artifactid>hadoop-client</artifactid> <version>2.6.4</version> <scope>system</scope> <systempath>${basedir/hadoop/hadoop-client jar</systempath> <artifactid>hadoop-common</artifactid> <version>2.6.4</version> <scope>system</scope> <systempath>${basedir/hadoop/hadoop-common jar</systempath> 第 11 页共 41 页
12 <artifactid>hadoop-hdfs</artifactid> <version>2.6.4</version> <scope>system</scope> <systempath>${basedir/hadoop/hadoop-hdfs jar</systempath> <artifactid>hadoop-mapreduce-client-app</artifactid> <version>2.6.4</version> <scope>system</scope> <systempath>${basedir/hadoop/hadoop-mapreduce-client-app jar</systempath> <artifactid>hadoop-mapreduce-client-common</artifactid> <version>2.6.4</version> <scope>system</scope> <systempath> ${basedir/hadoop/hadoop-mapreduce-client-common jar</systempath> <artifactid>hadoop-mapreduce-client-core</artifactid> <version>2.6.4</version> <scope>system</scope> 第 12 页共 41 页
13 <systempath> ${basedir/hadoop/hadoop-mapreduce-client-core jar</systempath> <artifactid>hadoop-mapreduce-client-jobclient</artifactid> <version>2.6.4</version> <scope>system</scope> <systempath> ${basedir/hadoop/hadoop-mapreduce-client-jobclient jar</systempath> <artifactid>hadoop-mapreduce-client-shuffle</artifactid> <version>2.6.4</version> <scope>system</scope> <systempath> ${basedir/hadoop/hadoop-mapreduce-client-shuffle jar</systempath> <artifactid>hadoop-yarn-api</artifactid> <version>2.6.4</version> <scope>system</scope> <systempath>${basedir/hadoop/hadoop-yarn-api jar</systempath> 第 13 页共 41 页
14 <artifactid>hadoop-yarn-client</artifactid> <version>2.6.4</version> <scope>system</scope> <systempath>${basedir/hadoop/hadoop-yarn-client jar</systempath> <artifactid>hadoop-yarn-common</artifactid> <version>2.6.4</version> <scope>system</scope> <systempath>${basedir/hadoop/hadoop-yarn-common jar</systempath> <artifactid>hadoop-yarn-server-common</artifactid> <version>2.6.4</version> <scope>system</scope> <systempath>${basedir/hadoop/hadoop-yarn-server-common jar</systempath> <groupid>org.apache.hbase</groupid> <artifactid>hbase-client</artifactid> <version>1.1.3</version> <scope>system</scope> <systempath>${basedir/hadoop/hbase-client jar</systempath> <groupid>org.apache.hbase</groupid> <artifactid>hbase-common</artifactid> <version>1.1.3</version> <scope>system</scope> <systempath>${basedir/hadoop/hbase-common jar</systempath> 第 14 页共 41 页
15 <groupid>org.apache.hbase</groupid> <artifactid>hbase-protocol</artifactid> <version>1.1.3</version> <scope>system</scope> <systempath>${basedir/hadoop/hbase-protocol jar</systempath> <groupid>org.apache.hbase</groupid> <artifactid>hbase-server</artifactid> <version>1.1.3</version> <scope>system</scope> <systempath>${basedir/hadoop/hbase-server jar</systempath> </dependencies> 需要替换的 jar 包下载需要替换的 jar 包清单 : hadoop-annotations jar hadoop-auth jar hadoop-client jar hadoop-common jar hadoop-hdfs jar hadoop-mapreduce-client-app jar hadoop-mapreduce-client-common jar hadoop-mapreduce-client-core jar hadoop-mapreduce-client-jobclient jar hadoop-mapreduce-client-shuffle jar hadoop-yarn-api jar hadoop-yarn-client jar 第 15 页共 41 页
16 hadoop-yarn-common jar hadoop-yarn-server-common jar hbase-client jar hbase-common jar hbase-protocol jar hbase-server jar 以上 jar 包替换为 : hadoop-annotations jar hadoop-auth jar hadoop-client jar hadoop-common jar hadoop-hdfs jar hadoop-mapreduce-client-app jar hadoop-mapreduce-client-common jar hadoop-mapreduce-client-core jar hadoop-mapreduce-client-jobclient jar hadoop-mapreduce-client-shuffle jar hadoop-yarn-api jar hadoop-yarn-client jar hadoop-yarn-common jar hadoop-yarn-server-common jar hbase-client jar hbase-common jar hbase-protocol jar hbase-server jar 2). 如不使用 mvn 获取依赖, 您也可以在这里直接下载所有的客户端 jar 包 第 16 页共 41 页
17 Step3. 连接腾讯云参数设置 连接腾讯云参数设置 1). 连接腾讯云 Hbase 服务时必须设置以下参数为 true( 完整代码请参考示例代码 ), 方能正常使用 : config.setboolean("chbase.tencent.enable", true); 2). 如需要使用 yarn, 还需要额外设置实例 ID( 管理页面可以查到, 完整代码请参考示例代码 ), 如 : config.set("yarn.chbase.tencent.instanceid", "chb-lpvsvdlr"); 提示 : 除增加以上代码, 其余使用方式和社区版本 Hbase 一致 ; 可以参考 的 API 文档 ; 如您未设置以上参数, 也可以正常连接社区版的 Hbase 第 17 页共 41 页
18 Step4. 操作示例代码 参考以下示例代码, 包括常见的 hbase 表格创建 删除, 插入 删除 读取数据等操作 import java.util.arraylist; import java.util.list; import java.util.map; import java.util.navigablemap; import org.apache.hadoop.conf.configuration; import org.apache.hadoop.hbase.cell; import org.apache.hadoop.hbase.cellutil; import org.apache.hadoop.hbase.hbaseconfiguration; import org.apache.hadoop.hbase.hcolumndescriptor; import org.apache.hadoop.hbase.htabledescriptor; import org.apache.hadoop.hbase.keyvalue; import org.apache.hadoop.hbase.tablename; import org.apache.hadoop.hbase.client.admin; import org.apache.hadoop.hbase.client.connection; import org.apache.hadoop.hbase.client.connectionfactory; import org.apache.hadoop.hbase.client.delete; import org.apache.hadoop.hbase.client.get; import org.apache.hadoop.hbase.client.put; import org.apache.hadoop.hbase.client.result; import org.apache.hadoop.hbase.client.resultscanner; import org.apache.hadoop.hbase.client.scan; import org.apache.hadoop.hbase.client.table; import org.apache.hadoop.hbase.util.bytes; public class Connect { public static void createtable (String tablename, String[] familys) throws Exception { Configuration config = HBaseConfiguration.create(); // 填写 zookeeper 地址, 多个地址用英文逗号隔开 第 18 页共 41 页
19 config.set("hbase.zookeeper.quorum", " :2181"); // 设置重试参数 config.setint("hbase.client.retries.number", 1); /* * 要连接腾讯云的 hbase 服务必须设置此值为 true; 不设置该值功能和社区版相同, 可以正常连接自建 hbase 服务 */ config.setboolean("chbase.tencent.enable", true); TableName TABLE = TableName.valueOf(tableName); Connection con = ConnectionFactory.createConnection(config); Admin admin = con.getadmin(); if (admin.tableexists(table)) { System.out.println("table already exists!"); else { HTableDescriptor tabledesc = new HTableDescriptor(TABLE); for (int i = 0; i < familys.length; i++) { tabledesc.addfamily(new HColumnDescriptor(familys[i])); admin.createtable(tabledesc); System.out.println("create table " + tablename + " ok."); admin.close(); public static void deletetable(string tablename) throws Exception { Configuration config = HBaseConfiguration.create(); // 填写 zookeeper 地址, 多个地址用英文逗号隔开 config.set("hbase.zookeeper.quorum", " :2181"); // 设置重试参数 config.setint("hbase.client.retries.number", 1); /* * 要连接腾讯云的 hbase 服务必须设置此值为 true; 不设置该值功能和社区版相同, 可以正常连接自建 hbase 服务 */ 第 19 页共 41 页
20 config.setboolean("chbase.tencent.enable", true); TableName TABLE = TableName.valueOf(tableName); Connection con = ConnectionFactory.createConnection(config); Admin admin = con.getadmin(); if (!admin.tableexists(table)) { System.out.println("table not exists!"); else { admin.disabletable(table); admin.deletetable(table); System.out.println("delete table " + tablename + " ok."); admin.close(); public static void get(string tablename, String rowkey) throws Exception { Configuration config = HBaseConfiguration.create(); // 填写 zookeeper 地址, 多个地址用英文逗号隔开 config.set("hbase.zookeeper.quorum", " :2181"); // 设置重试参数 config.setint("hbase.client.retries.number", 1); /* * 要连接腾讯云的 hbase 服务必须设置此值为 true; 不设置该值功能和社区版相同, 可以正常连接自建 hbase 服务 */ config.setboolean("chbase.tencent.enable", true); Connection con = ConnectionFactory.createConnection(config); Table table = con.gettable(tablename.valueof(tablename)); Get get = new Get(rowkey.getBytes()); Result rs = table.get(get); for (Cell cell : rs.rawcells()) { System.out.print(new String(CellUtil.cloneRow(cell)) + " "); 第 20 页共 41 页
21 System.out.print(new String(CellUtil.cloneFamily(cell)) + ":"); System.out.print(new String(CellUtil.cloneQualifier(cell)) + " "); System.out.print(cell.getTimestamp() + " "); System.out.println(new String(CellUtil.cloneValue(cell))); table.close(); public static void del(string tablename, String rowkey) throws Exception { Configuration config = HBaseConfiguration.create(); // 填写 zookeeper 地址, 多个地址用英文逗号隔开 config.set("hbase.zookeeper.quorum", " :2181"); // 设置重试参数 config.setint("hbase.client.retries.number", 1); /* * 要连接腾讯云的 hbase 服务必须设置此值为 true; 不设置该值功能和社区版相同, 可以正常连接自建 hbase 服务 */ config.setboolean("chbase.tencent.enable", true); Connection con = ConnectionFactory.createConnection(config); Table table = con.gettable(tablename.valueof(tablename)); // 批量删除 List<Delete> list = new ArrayList<Delete>(); Delete del = new Delete(rowkey.getBytes()); list.add(del); table.delete(list); // 单个删除 // Delete del = new Delete(Bytes.toBytes(rowkey)); // table.delete(del); System.out.println("del recored " + rowkey + " ok."); table.close(); public static void put 第 21 页共 41 页
22 (String tablename, String rowkey, String familyname, String colname, String valu e) throws Exception { Configuration config = HBaseConfiguration.create(); // 填写 zookeeper 地址, 多个地址用英文逗号隔开 config.set("hbase.zookeeper.quorum", " :2181"); // 设置重试参数 config.setint("hbase.client.retries.number", 1); /* * 要连接腾讯云的 hbase 服务必须设置此值为 true; 不设置该值功能和社区版相同, 可以正常连接自建 hbase 服务 */ config.setboolean("chbase.tencent.enable", true); Connection con = ConnectionFactory.createConnection(config); Table table = con.gettable(tablename.valueof(tablename)); byte[] ROWKEY = Bytes.toBytes(rowkey); Put put = new Put(ROWKEY); Cell c1 = CellUtil.createCell(ROWKEY, Bytes.toBytes(familyname), Bytes.t obytes(colname), System.currentTimeMillis(), KeyValue.Type.Put.getCode(), Bytes.t obytes(value)); put.add(c1); table.put(put); System.out.println(" put ok "); table.close(); public static void scan (String tablename, String rowkey, String family) throws Exception { Configuration config = HBaseConfiguration.create(); // 填写 zookeeper 地址, 多个地址用英文逗号隔开 config.set("hbase.zookeeper.quorum", " :2181"); 第 22 页共 41 页
23 // 设置重试参数 config.setint("hbase.client.retries.number", 1); /* * 要连接腾讯云的 hbase 服务必须设置此值为 true; 不设置该值功能和社区版相同, 可以正常连接自建 hbase 服务 */ config.setboolean("chbase.tencent.enable", true); Scan scan = new Scan(); scan.setstartrow(bytes.tobytes(rowkey)); scan.setcaching(500); scan.setcacheblocks(false); Connection con = ConnectionFactory.createConnection(config); Table table = con.gettable(tablename.valueof(tablename)); ResultScanner ss = table.getscanner(scan); System.out.println(" "); for (Result r : ss) { NavigableMap<byte[], byte []> map = r.getfamilymap(bytes.tobytes(family)); for (Map.Entry<byte[], byte[]> ent : map.entryset()) { String key = new String(ent.getKey()); String value = new String(ent.getValue()); System.out.println( "find result is:" + new String(r.getRow()) + " and code is:" + key + " and value is:" + value); System.out.println(" "); table.close(); public static void main(string[] args) throws Exception { if (args == null args.length < 1) { System.out.println("please input args..."); 第 23 页共 41 页
24 return; String op = args[0]; if (op.equals("create")) { // 要创建的列名 String[] familys = { "fam1", "fam2", "fam3" ; createtable("test", familys); else if (op.equals("put")) { put("test", "key1", "fam1", "col1", "value1"); else if (op.equals("get")) { get("test", "key1"); else if (op.equals("deltable")) { deletetable("test"); else if (op.equals("scan")) { scan("test", "key1", "fam1"); else if (op.equals("del")) { del("test", "key1"); 第 24 页共 41 页
25 MapReduce 示例代码 Map 类 import java.io.ioexception; import java.util.map; import java.util.navigablemap; import org.apache.hadoop.hbase.client.result; import org.apache.hadoop.hbase.io.immutablebyteswritable; import org.apache.hadoop.hbase.mapreduce.tablemapper; import org.apache.hadoop.hbase.util.bytes; import org.apache.hadoop.io.text; public class Mapper extends TableMapper<Text, protected void map (ImmutableBytesWritable rowkey, Result columns, Context context) throws IOException, InterruptedException{ NavigableMap<byte[], byte []> map = columns.getfamilymap(bytes.tobytes("retcode")); for (Map.Entry<byte[], byte[]> ent : map.entryset()) { String retcode=bytes.tostring(ent.getkey()); String value = Bytes.toString(ent.getValue()); Text retkey = new Text(retcode); Text retvalue = new Text(value); context.write(retkey, retvalue); Reduce 类 第 25 页共 41 页
26 import java.io.ioexception; import org.apache.hadoop.hbase.io.immutablebyteswritable; import org.apache.hadoop.hbase.mapreduce.tablereducer; import org.apache.hadoop.io.text; public class Reduce extends TableReducer<Text, Text, ImmutableBytesWritable> protected void cleanup(context context) throws IOException, InterruptedException protected void setup(context context) throws IOException, InterruptedException { public void reduce (Text key, Iterable<Text> valu es, Context context) throws IOException, InterruptedException { long size = 0; String rowkey = key.tostring(); System.out.println(rowkey); for(text t:values){ System.out.println(t.toString()); 第 26 页共 41 页
27 提交任务 import org.apache.hadoop.conf.configuration; import org.apache.hadoop.hbase.client.scan; import org.apache.hadoop.hbase.mapreduce.tablemapreduceutil; import org.apache.hadoop.hbase.util.bytes; import org.apache.hadoop.io.text; import org.apache.hadoop.mapreduce.job; import org.apache.hadoop.mapreduce.lib.output.nulloutputformat; public class MR { public static void main(string[] args) throws Exception{ Job job =Job.getInstance(); Configuration conf=job.getconfiguration(); // 填写 zookeeper 地址, 多个地址用英文逗号隔开 conf.set("hbase.zookeeper.quorum", " :2181"); // 必填 : 填写腾讯云 Hbase 实例 ID conf.set("yarn.chbase.tencent.instanceid", "chb-lpvsvdlr"); job.setjobname("testjob"); String tablename = "monitordata_201603"; Scan scan = new Scan(); scan.setstartrow(bytes.tobytes("0800:00_ ")); scan.setcaching(500); scan.setcacheblocks(false); job.setjarbyclass(mr.class); job.setreducerclass(reduce.class); job.setoutputformatclass(nulloutputformat.class); job.setnumreducetasks(5); // 如果要使用第三方 jar 包, 可使用该工具类上传 //job.addfiletoclasspath(jobhelper.addjartodistributedcache(genericobjectpoolcon fig.class, conf)); 第 27 页共 41 页
28 TableMapReduceUtil.initTableMapperJob(tableName, scan, Mapper.class, Tex t.class, Text.class, job); boolean b = job.waitforcompletion(true); if (!b) { throw new Exception("error with job!"); 工具类 ( 如果需要使用第三方 jar 包 ) import java.io.ioexception; import org.apache.hadoop.fs.path; import org.apache.hadoop.fs.filesystem; import org.apache.hadoop.conf.configuration; import java.io.file; public class JobHelper { public JobHelper() { public static Path addjartodistributedcache (Class classtoadd, Configuration conf) throws IOException { n().getpath(); // Retrieve jar file for class2add String jar = classtoadd.getprotectiondomain().getcodesource().getlocatio File jarfile = new File(jar); 第 28 页共 41 页
29 // Declare new HDFS location Path hdfsjar = new Path("/tmp/hadoop/userlib/" + jarfile.getname()); // Mount HDFS FileSystem hdfs = FileSystem.get(conf); // Copy (override) jar file to HDFS hdfs.copyfromlocalfile(false, true, new Path(jar), hdfsjar); hdfs.close(); return hdfsjar; 第 29 页共 41 页
30 endpoint 协处理器示例代码 使用协处理, 需要将 jar 包提供给我们, 我们安装后提供 hdfs 地址, 您可以再通过 shell 或者 api 方式 ( 代码中有示例 ) 安装 强烈建议开发好协处理器 jar 包后, 经过充分测试再安装, 避免安装后影响 Hbase 服务的正常使用 协处理器开发步骤 1. 编写 proto 文件 ( 示例 :RowCount.proto); 因为 hbase 使用 google 的 protoc 版本, 所以最好使用相同版本编译 proto 文件, 生成 java 文件 ( 示例 :RowCountService.java); 2. 编写服务端 EndPoint 代码 ( 示例 :RowCountEndPoint.java); 3. 编写客户端调用 Client 代码 ( 示例 :RowCountClient.java); 4. 编译 jar 包 endpoint 协处理器示例 : proto 文件 : option java_package = "com.tencent.yun.endpoint.proto"; option java_outer_classname = "RowCountService"; option java_generic_services = true; option java_generate_equals_and_hash = true; option optimize_for = SPEED; message RowCountRequest{ required string family = 1; required string column = 2; message RowCountResponse { required int64 rowcount = 1 [default = 0]; service RowCount { 第 30 页共 41 页
31 rpc getrowcount(rowcountrequest) returns (RowCountResponse); 服务端 RowCountEndPoint 类 : import java.io.ioexception; import java.util.arraylist; import java.util.list; import org.apache.hadoop.hbase.cell; import org.apache.hadoop.hbase.coprocessor; import org.apache.hadoop.hbase.coprocessorenvironment; import org.apache.hadoop.hbase.client.scan; import org.apache.hadoop.hbase.coprocessor.coprocessorexception; import org.apache.hadoop.hbase.coprocessor.coprocessorservice; import org.apache.hadoop.hbase.coprocessor.regioncoprocessorenvironment; import org.apache.hadoop.hbase.protobuf.responseconverter; import org.apache.hadoop.hbase.regionserver.internalscanner; import org.apache.hadoop.hbase.util.bytes; import com.google.protobuf.rpccallback; import com.google.protobuf.rpccontroller; import com.google.protobuf.service; import com.tencent.yun.endpoint.proto.rowcountservice; import com.tencent.yun.endpoint.proto.rowcountservice.rowcountrequest; import com.tencent.yun.endpoint.proto.rowcountservice.rowcountresponse; public class RowCountEndPoint extends RowCountService.RowCount implements Coprocessor, CoprocessorService { private RegionCoprocessorEnvironment env; 第 31 页共 41 页
32 public Service getservice() { return this; public void start(coprocessorenvironment env) throws IOException { if (env instanceof RegionCoprocessorEnvironment) { this.env = (RegionCoprocessorEnvironment) env; else { throw new CoprocessorException("Must be loaded on a table region!"); public void stop(coprocessorenvironment arg0) throws IOException { // do public void getrowcount (RpcController controller, RowCountRequest request, RpcCallback<RowCountResponse > done) { Scan scan = new Scan(); scan.addfamily(bytes.tobytes(request.getfamily())); scan.addcolumn(bytes.tobytes(request.getfamily()), Bytes.toBytes(request.getColumn())); // scan.setmaxversions(1); InternalScanner scanner = null; RowCountResponse response = null; long count = 0L; try { List<Cell> results = new ArrayList<Cell>(); boolean hasmore = false; scanner = env.getregion().getscanner(scan); 第 32 页共 41 页
33 do { hasmore = scanner.next(results); for (Cell cell : results) { count++; // count = count + Bytes.toLong(CellUtil.cloneValue(cell)); results.clear(); while (hasmore); response = RowCountResponse.newBuilder().setRowCount(count).build(); catch (IOException e) { ResponseConverter.setControllerException(controller, e); finally { if (scanner!= null) { try { scanner.close(); catch (IOException ignored) { done.run(response); 客户端 RowCountClient 类 : import java.io.ioexception; import java.util.map; import org.apache.hadoop.conf.configuration; 第 33 页共 41 页
34 import org.apache.hadoop.fs.path; import org.apache.hadoop.hbase.coprocessor; import org.apache.hadoop.hbase.hbaseconfiguration; import org.apache.hadoop.hbase.hcolumndescriptor; import org.apache.hadoop.hbase.htabledescriptor; import org.apache.hadoop.hbase.tablename; import org.apache.hadoop.hbase.client.admin; import org.apache.hadoop.hbase.client.connection; import org.apache.hadoop.hbase.client.connectionfactory; import org.apache.hadoop.hbase.client.table; import org.apache.hadoop.hbase.client.coprocessor.batch; import org.apache.hadoop.hbase.ipc.blockingrpccallback; import org.apache.hadoop.hbase.ipc.serverrpccontroller; import com.google.protobuf.serviceexception; import com.tencent.yun.endpoint.proto.rowcountservice.rowcount; import com.tencent.yun.endpoint.proto.rowcountservice.rowcountrequest; import com.tencent.yun.endpoint.proto.rowcountservice.rowcountresponse; import com.tencent.yun.observer.regionobserver; public class RowCountClient { public static void testrowcountendpoint(string tablename) { System.out.println("begin test..."); Configuration config = HBaseConfiguration.create(); // 填写 hbase zk 地址 config.set("hbase.zookeeper.quorum", " :2181, :2181, :2181"); // 填寫 family 名和列名 final RowCountRequest r eq = RowCountRequest.newBuilder().se tfamily("family").setcolumn("field0").build(); 第 34 页共 41 页
35 RowCountResponse resp = null; try { Connection con = ConnectionFactory.createConnection(config); Table table = con.gettable(tablename.valueof(tablename)); Map<byte [], Long> results = table.coprocessorservice(rowcount.class, null, null, new Batch.Call<RowCount, Long>() { public Long call(rowcount instance) throws IOException { ServerRpcController controller = new ServerRpcController(); BlockingRpcCallback<RowCountResp onse> rpccall = new BlockingRpcCallback<RowCountResponse>(); instance.getrowcount(controller, req, rpccall); RowCountResponse resp = rpccall.get(); // return resp.hasrowcount()? resp.getrowcount() : 0L; ); long count = 0L; for (Long sum : results.values()) { System.out.println("region row Sum = " + sum); count += sum; System.out.println("total count = " + count); catch (IOException e) { e.printstacktrace(); catch (ServiceException e) { e.printstacktrace(); catch (Throwable e) { 第 35 页共 41 页
36 e.printstacktrace(); finally{ public static void delcorprocessor(string tablename) { System.out.println("begin delcorprocessor..."); try { Configuration config = HBaseConfiguration.create(); // 填写 hbase zk 地址 config.set("hbase.zookeeper.quorum", " :2181, :2181, :2181"); TableName TABLE = TableName.valueOf(tableName); Connection con = ConnectionFactory.createConnection(config); Admin admin = con.getadmin(); HTableDescriptor tabledesc = admin.gettabledescriptor(table); tabledesc.removecoprocessor(rowcountendpoint.class.getcanonicalname( )); tabledesc.removecoprocessor(regionobserver.class.getcanonicalname()) ; admin.modifytable(table, tabledesc); catch (IOException e) { e.printstacktrace(); System.out.println("end delcorprocessor...ok"); public static void setuptoexisttable(string tablename) { 第 36 页共 41 页
37 System.out.println("begin setuptoexisttable..."); try { Configuration config = HBaseConfiguration.create(); // 填写 hbase zk 地址 config.set("hbase.zookeeper.quorum", " :2181, :2181, :2181"); TableName TABLE = TableName.valueOf(tableName); Connection con = ConnectionFactory.createConnection(config); Admin admin = con.getadmin(); HTableDescriptor tabledesc = admin.gettabledescriptor(table); // 填写我们提供的 jar 包的 hdfs 地址 Path jarpath = new Path( "hdfs:// :8020/coprocessor/1/thbase-1.0-snapshot.jar"); tabledesc.addcoprocessor(rowcountendpoint.class.getcanonicalname(), jarpath, Coprocessor.PRIORITY_USER, null); tabledesc.addcoprocessor(regionobserver.class.getcanonicalname(), ja rpath, Coprocessor.PRIORITY_USER, null); admin.modifytable(table, tabledesc); catch (IOException e) { e.printstacktrace(); System.out.println("end setuptoexisttable...ok"); public static void createandsetup(string tablename) { System.out.println("begin safesetup..."); try { 第 37 页共 41 页
38 Configuration config = HBaseConfiguration.create(); // 填写 hbase zk 地址 config.set("hbase.zookeeper.quorum", " :2181, :2181, :2181"); TableName TABLE = TableName.valueOf(tableName); Connection con = ConnectionFactory.createConnection(config); Admin admin = con.getadmin(); HTableDescriptor tabledesc = new HTableDescriptor(TABLE); HColumnDescriptor columnfamily1 = new HColumnDescriptor("f1"); columnfamily1.setmaxversions(3); tabledesc.addfamily(columnfamily1); // 填写我们提供的 jar 包的 hdfs 地址 Path jarpath = new Path( "hdfs:// :8020/coprocessor/1/thbase-1.0-snapshot.jar"); tabledesc.addcoprocessor(rowcountendpoint.class.getcanonicalname(), jarpath, Coprocessor.PRIORITY_USER, null); tabledesc.addcoprocessor(regionobserver.class.getcanonicalname(), ja rpath, Coprocessor.PRIORITY_USER, null); admin.createtable(tabledesc); System.out.println("end safesetup...ok"); catch (IOException e) { e.printstacktrace(); public static void main(string[] args) { 第 38 页共 41 页
39 if (args == null args.length < 2) { System.out.println("please input args..."); return; String op = args[0]; String tablename = args[1]; if (op.equals("setup")) { setuptoexisttable(tablename); else if (op.equals("safesetup")) { createandsetup(tablename); else if (op.equals("run")) { testrowcountendpoint(tablename); else if (op.equals("unset")) { delcorprocessor(tablename); 第 39 页共 41 页
40 observer 协处理器示例 observer 协处理器示例 : import java.io.ioexception; import java.util.list; import org.apache.hadoop.hbase.cell; import org.apache.hadoop.hbase.cellutil; import org.apache.hadoop.hbase.client.get; import org.apache.hadoop.hbase.coprocessor.baseregionobserver; import org.apache.hadoop.hbase.coprocessor.observercontext; import org.apache.hadoop.hbase.coprocessor.regioncoprocessorenvironment; import org.apache.hadoop.hbase.util.bytes; public class RegionObserver extends BaseRegionObserver { private static final byte[] ADMIN = Bytes.toBytes("admin"); private static final byte[] COLUMN_FAMILY = Bytes.toBytes("f1"); private static final byte[] COLUMN = Bytes.toBytes("col1"); private static final byte[] VALUE = Bytes.toBytes( "You can not see Admin public void pregetop (O bser verconte xt<regioncoproce ssorenvironment> e, Get get, List<Cell> results) throws IOException{ if (Bytes.equals(get.getRow(),ADMIN)) { Cell c = CellUtil.createCell(get.getRow(), COLUMN_FAMILY, COLUMN, Sy stem.currenttimemillis(), (byte)4, VALUE); results.add(c); e.bypass(); 第 40 页共 41 页
41 Powered by TCPDF ( 操作指南产品文档 第 41 页共 41 页
Get Started产品文档
腾讯云 CDB for MySQL Get Started 产品文档 版权声明 2015-2016 腾讯云版权所有 本文档著作权归腾讯云单独所有, 未经腾讯云事先书面许可, 任何主体不得以任何形式复制 修改 抄袭 传 播全部或部分本文档内容 商标声明 及其它腾讯云服务相关的商标均为腾讯云计算 ( 北京 ) 有限责任公司及其关联公司所有 本文档涉及的第三方 主体的商标, 依法由权利人所有 服务声明 本文档意在向客户介绍腾讯云全部或部分产品
Domain Management产品文档
腾讯云Content Delivery Network Domain Management 产品文档 版权声明 2015-2016 腾讯云版权所有 本文档著作权归腾讯云单独所有 未经腾讯云事先书面许可 任何主体不得以任何形式复制 修改 抄袭 传 播全部或部分本文档内容 商标声明 及其它腾讯云服务相关的商标均为腾讯云计算 北京 有限责任公司及其关联公司所有 本文档涉及的第三方 主体的商标 依法由权利人所有
产品简介产品文档
云数据库 Hbase 产品简介 产品文档 版权声明 2015-2016 腾讯云版权所有 本文档著作权归腾讯云单独所有, 未经腾讯云事先书面许可, 任何主体不得以任何形式复制 修改 抄袭 传 播全部或部分本文档内容 商标声明 及其它腾讯云服务相关的商标均为腾讯云计算 ( 北京 ) 有限责任公司及其关联公司所有 本文档涉及的第三方 主体的商标, 依法由权利人所有 服务声明 本文档意在向客户介绍腾讯云全部或部分产品
HBase 中加盐(Salting)之后的表如何读取:协处理器篇
在 HBase Rowkey 设计指南 文章中, 我们介绍了避免数据热点的三种比较常见方法 : 加盐 - Salting 哈希 - Hashing 反转 - Reversing 其中在加盐 (Salting) 的方法里面是这么描述的 : 给 Rowkey 分配一个随机前缀以使得它和之前排序不同 但是在 Rowkey 前面加了随机前缀, 那么我们怎么将这些数据读出来呢? 我将分三篇文章来介绍如何读取加盐之后的表,
Quick Start产品文档
腾讯云 CDB for PostgreSQL Quick Start 产品文档 版权声明 2015-2016 腾讯云版权所有 本文档著作权归腾讯云单独所有, 未经腾讯云事先书面许可, 任何主体不得以任何形式复制 修改 抄袭 传 播全部或部分本文档内容 商标声明 及其它腾讯云服务相关的商标均为腾讯云计算 ( 北京 ) 有限责任公司及其关联公司所有 本文档涉及的第三方 主体的商标, 依法由权利人所有 服务声明
使用MapReduce读取XML文件
使用 MapReduce 读取 XML 文件 XML( 可扩展标记语言, 英语 :extensible Markup Language, 简称 : XML) 是一种标记语言, 也是行业标准数据交换交换格式, 它很适合在系统之间进行数据存储和交换 ( 话说 Hadoop H ive 等的配置文件就是 XML 格式的 ) 本文将介绍如何使用 MapReduce 来读取 XML 文件 但是 Had oop
雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO
CHAPTER 使用 Hadoop 打造自己的雲 8 8.3 測試 Hadoop 雲端系統 4 Nodes Hadoop Map Reduce Hadoop WordCount 4 Nodes Hadoop Map/Reduce $HADOOP_HOME /home/ hadoop/hadoop-0.20.2 wordcount echo $ mkdir wordcount $ cd wordcount
三种方法实现Hadoop(MapReduce)全局排序(1)
三种方法实现 Hadoop(MapReduce) 全局排序 () 三种方法实现 Hadoop(MapReduce) 全局排序 () 我们可能会有些需求要求 MapReduce 的输出全局有序, 这里说的有序是指 Key 全局有序 但是我们知道,MapReduce 默认只是保证同一个分区内的 Key 是有序的, 但是不保证全局有序 基于此, 本文提供三种方法来对 MapReduce 的输出进行全局排序
Hive:用Java代码通过JDBC连接Hiveserver
Hive: 用 Java 代码通过 JDBC 连接 Hiveserver 我们可以通过 CLI Client Web UI 等 Hive 提供的用户接口来和 Hive 通信, 但这三种方式最常用的是 CLI;Client 是 Hive 的客户端, 用户连接至 Hive Server 在启动 Client 模式的时候, 需要指出 Hive Server 所在节点, 并且在该节点启动 Hive Server
PowerPoint 演示文稿
Hadoop 生 态 技 术 在 阿 里 全 网 商 品 搜 索 实 战 阿 里 巴 巴 - 王 峰 自 我 介 绍 真 名 : 王 峰 淘 宝 花 名 : 莫 问 微 博 : 淘 莫 问 2006 年 硕 士 毕 业 后 加 入 阿 里 巴 巴 集 团 淘 及 搜 索 事 业 部 ( 高 级 技 术 与 家 ) 目 前 负 责 搜 索 离 线 系 统 团 队 技 术 方 向 : 分 布 式 计 算
EJB-Programming-4-cn.doc
EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session
1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:
Chapter 15. Suppressed Exception CH14 Finally Block Java SE 7 try-with-resources JVM cleanup try-with-resources JVM cleanup cleanup Java SE 7 Throwable getsuppressed Throwable[] getsuppressed() Suppressed
Microsoft Word - 01.DOC
第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的
chp6.ppt
Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行
1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6
www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7
SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基
开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些
Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,
http://debut.cis.nctu.edu.tw/~chi Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, : POSITIVE_INFINITY NEGATIVE_INFINITY
Flume-ng与Mysql整合开发
Flume-ng 与 Mysql 整合开发 我们知道,Flume 可以和许多的系统进行整合, 包括了 Hadoop Spark Kafka Hbase 等等 ; 当然, 强悍的 Flume 也是可以和 Mysql 进行整合, 将分析好的日志存储到 Mysql( 当然, 你也可以存放到 pg oracle 等等关系型数据库 ) 不过我这里想多说一些 :Flume 是分布式收集日志的系统 ; 既然都分布式了,
(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit
Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How
untitled
1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override
Microsoft PowerPoint - hbase_program(0201).ppt
TSMC 教育訓練課程 HBase Programming < V 0.20 > 王耀聰陳威宇 [email protected] [email protected] Outline HBase 程式編譯方法 HBase 程式設計 常用的 HBase API 說明實做 I/O 操作搭配 Map Reduce 運算 其他用法補充 其他專案 2 HBase 程式編譯方法 此篇介紹兩種編譯與執行 HBase
JavaIO.PDF
O u t p u t S t ream j a v a. i o. O u t p u t S t r e a m w r i t e () f l u s h () c l o s e () public abstract void write(int b) throws IOException public void write(byte[] data) throws IOException
《大话设计模式》第一章
第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜
untitled
JavaEE+Android - 6 1.5-2 JavaEE web MIS OA ERP BOSS Android Android Google Map office HTML CSS,java Android + SQL Sever JavaWeb JavaScript/AJAX jquery Java Oracle SSH SSH EJB+JBOSS Android + 1. 2. IDE
开放数据处理服务 ODPS 批量数据通道
开放数据处理服务 ODPS 批量数据通道 批量数据通道 SDK 介绍 概要 ODPS Tunnel 是 ODPS 的数据通道, 用户可以通过 Tunnel 向 ODPS 中上传或者下载数据 目前 Tunnel 仅支持表 ( 不包括视图 View) 数据的上传下载 ODPS 提供的数据上传下载工具即是基于 Tunnel SDK 编写的 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk-core"
三种方法实现Hadoop(MapReduce)全局排序(2)
三种方法实现 Hadoop(MapReduce) 全局排序 (2) 我在前面的文章介绍了 MapReduce 中两种全排序的方法及其实现 但是上面的两种方法都是有很大的局限性 : 方法一在数据量很大的时候会出现 OOM 问题 ; 方法二虽然能够将数据分散到多个 Reduce 中, 但是问题也很明显 : 我们必须手动地找到各个 Reduce 的分界点, 尽量使得分散到每个 Reduce 的数据量均衡
"+handlermethod.getbean().getclass().getname()); public void aftercompletion(httpservletrequest req, HttpServletResponse resp, Object handler, Excepti
SpringBoot 的配置 一 拦截器的配置 1 定义一个表单 用户名 : 密 码 :
Mac Java import com.apple.mrj.*;... public class MyFirstApp extends JFrame implements ActionListener, MRJAboutHandler, MRJQuitHandler {... public MyFirstApp() {... MRJApplicationUtils.registerAboutHandler(this);
云数据库 RDS SDK
云数据库 RDS SDK SDK SDK 下载 SDK 下载 最新版本 java_sdk.zip python_sdk.zip php_sdk.zip c#_sdk.zip 历史版本 2015-11-3 java_sdk.zip python_sdk.zip php_sdk.zip c#_sdk.zip JAVA 教程 JAVA 创建 Access Key 登陆阿里云账号 打开 我的 Access
詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入
100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入
1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10
Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1
<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>
程 序 设 计 实 习 INFO130048 3-2.C++ 面 向 对 象 程 序 设 计 重 载 继 承 多 态 和 聚 合 复 旦 大 学 计 算 机 科 学 与 工 程 系 彭 鑫 [email protected] 内 容 摘 要 方 法 重 载 类 的 继 承 对 象 引 用 和 拷 贝 构 造 函 数 虚 函 数 和 多 态 性 类 的 聚 集 复 旦 大 学 计 算 机 科 学
用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應
專題進度 老師 : 趙啟時老師 學生 : 陳建廷 2013/10/13 用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 程式碼 : package com.example.phone; import java.util.arraylist;
FileMaker 16 ODBC 和 JDBC 指南
FileMaker 16 ODBC JDBC 2004-2017 FileMaker, Inc. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc. FileMaker WebDirect FileMaker Cloud FileMaker,
全国计算机技术与软件专业技术资格(水平)考试
全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2008 年 上 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 ) 试 题 一 ( 共 15 分 ) 阅 读 以 下 说 明 和 流 程 图, 填 补 流 程 图 中 的 空 缺 (1)~(9), 将 解 答 填 入 答 题 纸 的 对 应 栏 内 [ 说 明
Chapter 9: Objects and Classes
Fortran Algol Pascal Modula-2 BCPL C Simula SmallTalk C++ Ada Java C# C Fortran 5.1 message A B 5.2 1 class Vehicle subclass Car object mycar public class Vehicle extends Object{ public int WheelNum
Microsoft Word - ch04三校.doc
4-1 4-1-1 (Object) (State) (Behavior) ( ) ( ) ( method) ( properties) ( functions) 4-2 4-1-2 (Message) ( ) ( ) ( ) A B A ( ) ( ) ( YourCar) ( changegear) ( lowergear) 4-1-3 (Class) (Blueprint) 4-3 changegear
RUN_PC連載_8_.doc
PowerBuilder 8 (8) Web DataWindow ( ) DataWindow Web DataWindow Web DataWindow Web DataWindow PowerDynamo Web DataWindow / Web DataWindow Web DataWindow Wizard Web DataWindow Web DataWindow DataWindow
前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii
前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii C# 7 More Effective C# C# C# C# C# C# Common Language Runtime CLR just-in-time
javaexample-02.pdf
n e w. s t a t i c s t a t i c 3 1 3 2 p u b l i c p r i v a t e p r o t e c t e d j a v a. l a n g. O b j e c t O b j e c t Rect R e c t x 1 y 1 x 2 y 2 R e c t t o S t r i n g ( ) j a v a. l a n g. O
概述
OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3
IoC容器和Dependency Injection模式.doc
IoC Dependency Injection /Martin Fowler / Java Inversion of Control IoC Dependency Injection Service Locator Java J2EE open source J2EE J2EE web PicoContainer Spring Java Java OO.NET service component
FileMaker 15 ODBC 和 JDBC 指南
FileMaker 15 ODBC JDBC 2004-2016 FileMaker, Inc. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc. / FileMaker WebDirect FileMaker, Inc. FileMaker
无类继承.key
无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo [email protected] https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255
epub83-1
C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C
JBuilder Weblogic
JUnit ( [email protected]) < >6 JUnit Java Erich Gamma Kent Beck JUnit JUnit 1 JUnit 1.1 JUnit JUnit java XUnit JUnit 1.2 JUnit JUnit Erich Gamma Kent Beck Erich Gamma Kent Beck XP Extreme Programming CRC
1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F
1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET 2.0 2.0.NET Framework.NET Framework 2.0 ( 3).NET Framework 2.0.NET Framework ( System ) o o o o o o Boxing UnBoxing() o
3.1 num = 3 ch = 'C' 2
Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:
建模与图形思考
C03_c 基 於 軟 硬 整 合 觀 點 JNI: 从 C 调 用 Java 函 数 ( c) By 高 煥 堂 3 How-to: 基 於 軟 硬 整 合 觀 點 从 C 调 用 Java 函 数 如 果 控 制 点 摆 在 本 地 C 层, 就 会 常 常 1. 从 本 地 C 函 数 去 调 用 Java 函 数 ; 2. 从 本 地 C 函 数 去 存 取 Java 层 对 象 的 属 性
建立Android新專案
Android 智 慧 型 手 機 程 式 設 計 Android WebService 建 國 科 技 大 學 資 管 系 饒 瑞 佶 2012/4 V1 2012/8 V2 2013/5 V3 2014/10 v4 提 醒 這 節 的 內 容 針 對 的 是 MS 的 Web Service 或 是 使 用 SOAP(Simple Object Access Protocol) 標 準 建 立
Swing-02.pdf
2 J B u t t o n J T e x t F i e l d J L i s t B u t t o n T e x t F i e l d L i s t J F r a m e 21 2 2 Swing C a n v a s C o m p o n e n t J B u t t o n AWT // ToolbarFrame1.java // java.awt.button //
untitled
1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 [email protected] www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立
新版 明解C++入門編
511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,
java2d-4.PDF
75 7 6 G r a d i e n t P a i n t B a s i c S t r o k e s e t P a i n t ( ) s e t S t o r k e ( ) import java.awt.*; import java.awt.geom.*; public class PaintingAndStroking extends ApplicationFrame { public
业 务 与 运 营 Business & Operation (Transform) 加 载 (Load) 至 目 的 端 的 过 程, 该 部 分 在 数 据 挖 掘 和 分 析 过 程 中 为 最 基 础 的 一 部 分 一 个 良 好 的 ETL 系 统 应 该 有 以 下 几 个 功 能 1
Business & Operation 业 务 与 运 营 大 数 据 技 术 在 精 准 营 销 中 的 应 用 王 小 鹏 北 京 东 方 国 信 科 技 股 份 有 限 公 司 北 京 100102 摘 要 简 要 介 绍 主 流 的 大 数 据 技 术 架 构 和 大 数 据 挖 掘 技 术 ; 阐 述 大 数 据 技 术 在 精 准 营 销 与 维 系 系 统 建 设 中 的 应 用,
Guava学习之Resources
Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于
OOP with Java 通知 Project 4: 4 月 19 日晚 9 点
OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d
KillTest 质量更高 服务更好 学习资料 半年免费更新服务
KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 1Z0-854 Title : Java Standard Edition 5 Programmer Certified Professional Upgrade Exam Version : Demo 1 / 12 1.Given: 20. public class CreditCard
PowerPoint 演示文稿
Apache Spark 与 多 数 据 源 的 结 合 田 毅 @ 目 录 为 什 么 会 用 到 多 个 数 据 源 Spark 的 多 数 据 源 方 案 有 哪 些 已 有 的 数 据 源 支 持 Spark 在 GrowingIO 的 实 践 分 享 为 什 么 会 用 到 多 个 数 据 源 从 数 据 本 身 来 看 大 数 据 的 特 性 之 一 :Variety 数 据 的 多 样
1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->
目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController
7521,WARD,SALESMAN,7698,22-2 月 -81,1250,500, ,JONES,MANAGER,7839,02-4 月 -81,2975,, ,MARTIN,SALESMAN,7698,28-9 月 -81,1250,1400, ,BLAK
MapReduce 应用案例 本文版权归作者和博客园共有, 欢迎转载, 但未经作者同意必须保留此段声明, 且在文章页面明显位置给出原文连接, 博主为石山园, 博客地址为 http://www.cnblogs.com/shishanyuan 该系列课程是应邀实验楼整理编写的, 这里需要赞一下实验楼提供了学习的新方式, 可以边看博客边上机实验, 课程地址为 https://www.shiyanlou.com/courses/237
内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌
语 言 程 序 设 计 郑 莉 胡 家 威 编 著 清 华 大 学 逸 夫 图 书 馆 北 京 内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 握 语
2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF
Chapter 2 WF 2.1 WF 2.2 2. XAML 2. 2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF WF WF WF WF EDI API WF Visual Studio Designer 1 2.1 WF Windows Workflow Foundation 2 WF 1 WF Domain-Specific
目 录 / CATALOG 一 桌 面 网 站 接 入 1. JAVASCRIPT 网 页 插 件 接 入 2. JS 代 码 操 作 指 引 3. 网 页 链 接 独 立 页 面 接 入 4. 网 页 链 接 接 入 操 作 指 引 5. 自 定 义 桌 面 网 站 接 入 图 标 颜 色 等 0
爱 客 服 快 速 接 入 指 南 400 005 0025 / [email protected] 目 录 / CATALOG 一 桌 面 网 站 接 入 1. JAVASCRIPT 网 页 插 件 接 入 2. JS 代 码 操 作 指 引 3. 网 页 链 接 独 立 页 面 接 入 4. 网 页 链 接 接 入 操 作 指 引 5. 自 定 义 桌 面 网 站 接 入 图 标 颜 色 等 01
untitled
ADF Web ArcGIS Server ADF GeocodeConnection control 4-2 Web ArcGIS Server Application Developer Framework (ADF).NET interop semblies.net Web ADF GIS Server 4-3 .NET ADF Web Represent the views in ArcMap
