HBase 中加盐(Salting)之后的表如何读取:协处理器篇

Size: px
Start display at page:

Download "HBase 中加盐(Salting)之后的表如何读取:协处理器篇"

Transcription

1 在 HBase Rowkey 设计指南 文章中, 我们介绍了避免数据热点的三种比较常见方法 : 加盐 - Salting 哈希 - Hashing 反转 - Reversing 其中在加盐 (Salting) 的方法里面是这么描述的 : 给 Rowkey 分配一个随机前缀以使得它和之前排序不同 但是在 Rowkey 前面加了随机前缀, 那么我们怎么将这些数据读出来呢? 我将分三篇文章来介绍如何读取加盐之后的表, 其中每篇文章提供一种方法, 主要包括 : 使用协处理器读取加盐的表使用 Spark 读取加盐的表使用 MapReduce 读取加盐的表 关于协处理器的入门及实战, 请参见这里 本文使用的各组件版本 :hadoop-2.7.7,hbase-2.0.4,jdk1.8.0_201 测试数据生成 在介绍如何查询数据之前, 我们先创建一张名为 iteblog 的 HBase 表, 用于测试 为了数据均匀和介绍的方便, 这里使用了预分区, 并设置了 27 个分区, 如下 : hbase(main):002:0> create 'iteblog', 'f', SPLITS => ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] 0 row(s) in seconds 然后我们使用下面方法生成了 条测试数据 RowKey 的形式为 UID + 当前数据生成时间戳 ; 由于 UID 的长度为 4, 所以 条数据会存在大量的 UID 一样的数据, 所以我们使用加盐方法将这些数据均匀分散到上述 27 个 Region 里面 ( 注意, 其实第一个 Region 其实没数据 ) 具体代码如下 : package com.iteblog.data; import org.apache.hadoop.conf.configuration; import org.apache.hadoop.hbase.hbaseconfiguration; import org.apache.hadoop.hbase.hconstants; import org.apache.hadoop.hbase.tablename; 1 / 12

2 import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.util.bytes; import java.io.ioexception; import java.util.arraylist; import java.util.list; import java.util.random; import java.util.uuid; public class HBaseDataGenerator { private static byte[] FAMILY = "f".getbytes(); private static byte[] QUALIFIER_UUID = "uuid".getbytes(); private static byte[] QUALIFIER_AGE = "age".getbytes(); private static char generateletter() { return (char) (Math.random() * 26 + 'A'); private static long generateuid(int n) { return (long) (Math.random() * 9 * Math.pow(10, n - 1)) + (long) Math.pow(10, n - 1); public static void main(string[] args) throws IOException { BufferedMutatorParams bmp = new BufferedMutatorParams(TableName.valueOf("iteblog ")); bmp.writebuffersize(1024 * 1024 * 24); Configuration conf = HBaseConfiguration.create(); conf.set(hconstants.zookeeper_quorum, " Connection connection = ConnectionFactory.createConnection(conf); BufferedMutator bufferedmutator = connection.getbufferedmutator(bmp); int BATCH_SIZE = 1000; int COUNTS = ; int count = 0; List<Put> putlist = new ArrayList<>(); for (int i = 0; i < COUNTS; i++) { String rowkey = generateletter() + "-" + generateuid(4) + "-" + System.currentTimeMillis(); Put put = new Put(Bytes.toBytes(rowKey)); byte[] uuidbytes = UUID.randomUUID().toString().substring(0, 23).getBytes(); put.addcolumn(family, QUALIFIER_UUID, uuidbytes); 2 / 12

3 )); put.addcolumn(family, QUALIFIER_AGE, Bytes.toBytes("" + new Random().nextInt(100) putlist.add(put); count++; if (count % BATCH_SIZE == 0) { bufferedmutator.mutate(putlist); bufferedmutator.flush(); putlist.clear(); System.out.println(count); if (putlist.size() > 0) { bufferedmutator.mutate(putlist); bufferedmutator.flush(); putlist.clear(); 运行完上面代码之后, 会生成 条数据 ( 注意, 这里其实不严谨, 因为 Rowkey 设计问题, 可能会导致重复的 Rowkey 生成, 所以实际情况下可能没有 条数据 ) 我们 limit 10 条数据看下长成什么样 : hbase(main):001:0> scan 'iteblog', {'LIMIT'=>10 ROW COLUMN+CELL A column=f:age, timestamp= , value=54 A column=f:uuid, timestamp= , value=e9b10a9f fd-bd01 A column=f:age, timestamp= , value=4 A column=f:uuid, timestamp= , value=181aa91e-5f1d -454c-959c A column=f:age, timestamp= , value=33 A column=f:uuid, timestamp= , value=19aad8d3-621a -473c-8f9f A column=f:age, timestamp= , value=64 A column=f:uuid, timestamp= , value=c6712a0d d5-865b A column=f:age, timestamp= , value=96 A column=f:uuid, timestamp= , value=4bf05d10-bb4d -43e / 12

4 A A a3-8f96 A A d95 A A b68 A A c f-89c0 A A e-bd0c 10 row(s) Took seconds column=f:age, timestamp= , value=8 column=f:uuid, timestamp= , value=f04ba835-d8accolumn=f:age, timestamp= , value=84 column=f:uuid, timestamp= , value=99d6c989-afb5- column=f:age, timestamp= , value=21 column=f:uuid, timestamp= , value=8c1ff1b6-b97ccolumn=f:age, timestamp= , value=2 column=f:uuid, timestamp= , value=e240aa0f- column=f:age, timestamp= , value=6 column=f:uuid, timestamp= , value=e8df15c9-02fa- 使用协处理器查询加盐之后的表 现在有数据了, 我们需要查询所有 UID = 1000 的用户所有历史数据, 那么如何查呢? 我们知道 UID = 1000 的用户数据是均匀放到上述的 27 个 Region 里面的, 因为经过加盐了, 所以这些数据前缀都是类似于 A-,B-,C- 等开头的 其次我们需要知道, 每个 Region 其实是有 Start Key 和 End Key 的, 这些 Start Key 和 End Key 其实就是我们创建 iteblog 表指定的 如果你看了 HBase 协处理器入门及实战 这篇文章, 你就知道协处理器的代码其实是在每个 Region 里面执行的 ; 而这些代码在 Region 里面执行的时候是可以拿到当前 Region 的信息, 包括了 Start Key 和 End Key, 所以其实我们可以将拿到的 Start Key 信息和查询的 UID 进行拼接, 这样就可以查询我们要的数据 协处理器处理篇就是基于这样的思想来查询加盐之后的数据的 定义 proto 文件 为什么需要定义这个请参见 HBase 协处理器入门及实战 这篇文章 因为我们查询的时候需要传入查询的参数, 比如 tablename StartKey EndKey 以及是否加盐等标记 ; 同时当查询到结果的时候, 我们还需要将数据返回, 所以我们定义的 proto 文件如下 : option java_package = "com.iteblog.data.coprocessor.generated"; option java_outer_classname = "DataQueryProtos"; option java_generic_services = true; option java_generate_equals_and_hash = true; option optimize_for = SPEED; 4 / 12

5 message DataQueryRequest { optional string tablename = 1; optional string startrow = 2; optional string endrow = 3; optional bool incluedend = 4; optional bool issalting = 5; message DataQueryResponse { message Cell{ required bytes value = 1; required bytes family = 2; required bytes qualifier = 3; required bytes row = 4; required int64 timestamp = 5; message Row{ optional bytes rowkey = 1; repeated Cell celllist = 2; repeated Row rowlist = 1; service QueryDataService{ rpc querybystartrowandendrow(dataqueryrequest) returns (DataQueryResponse); 然后我们使用 protobuf-maven-plugin 插件将上面的 proto 生成 java 类, 具体如何操作参见 在 IDEA 中使用 Maven 编译 proto 文件 我们将生成的 DataQueryProtos.java 类拷贝到 com.iteblog.data.coprocessor.generated 包里面 编写协处理器代码 有了请求和返回的类, 现在我们需要编写协处理器的处理代码了, 结合上面的分析, 协处理器的代码实现如下 : package com.iteblog.data.coprocessor; import com.google.protobuf.bytestring; 5 / 12

6 import com.google.protobuf.rpccallback; import com.google.protobuf.rpccontroller; import com.google.protobuf.service; import com.iteblog.data.coprocessor.generated.dataqueryprotos.querydataservice; import com.iteblog.data.coprocessor.generated.dataqueryprotos.dataqueryrequest; import com.iteblog.data.coprocessor.generated.dataqueryprotos.dataqueryresponse; import org.apache.hadoop.hbase.cell; import org.apache.hadoop.hbase.coprocessorenvironment; import org.apache.hadoop.hbase.client.get; import org.apache.hadoop.hbase.client.result; import org.apache.hadoop.hbase.client.scan; import org.apache.hadoop.hbase.coprocessor.coprocessorexception; import org.apache.hadoop.hbase.coprocessor.regioncoprocessor; import org.apache.hadoop.hbase.coprocessor.regioncoprocessorenvironment; import org.apache.hadoop.hbase.regionserver.internalscanner; import org.apache.hadoop.hbase.shaded.protobuf.responseconverter; import org.apache.hadoop.hbase.util.bytes; import java.io.ioexception; import java.util.arraylist; import java.util.collections; import java.util.list; public class SlatTableDataSearch extends QueryDataService implements RegionCoprocessor { private RegionCoprocessorEnvironment env; public Iterable<Service> getservices() { return public void querybystartrowandendrow(rpccontroller controller, DataQueryRequest request, RpcCallback<DataQueryResponse> done) { DataQueryResponse response = null; String startrow = request.getstartrow(); String endrow = request.getendrow(); String regionstartkey = Bytes.toString(this.env.getRegion().getRegionInfo().getStartKey()); if (request.getissalting()) { String startsalt = null; if (null!= regionstartkey && regionstartkey.length()!= 0) { startsalt = regionstartkey; if (null!= startsalt && null!= startrow) { 6 / 12

7 startrow = startsalt + "-" + startrow; endrow = startsalt + "-" + endrow; Scan scan = new Scan(); if (null!= startrow) { scan.withstartrow(bytes.tobytes(startrow)); if (null!= endrow) { scan.withstoprow(bytes.tobytes(endrow), request.getincluedend()); try (InternalScanner scanner = this.env.getregion().getscanner(scan)) { List<Cell> results = new ArrayList<>(); boolean hasmore; DataQueryResponse.Builder responsebuilder = DataQueryResponse.newBuilder(); do { hasmore = scanner.next(results); DataQueryResponse.Row.Builder rowbuilder = DataQueryResponse.Row.newBuilder( ); if (results.size() > 0) { Cell cell = results.get(0); rowbuilder.setrowkey(bytestring.copyfrom(cell.getrowarray(), cell.getrowoffset(), cell.getrowlength())); for (Cell kv : results) { buildcell(rowbuilder, kv); responsebuilder.addrowlist(rowbuilder); results.clear(); while (hasmore); response = responsebuilder.build(); catch (IOException e) { ResponseConverter.setControllerException(controller, e); done.run(response); private void buildcell(dataqueryresponse.row.builder rowbuilder, Cell kv) { DataQueryResponse.Cell.Builder cellbuilder = DataQueryResponse.Cell.newBuilder(); 7 / 12

8 cellbuilder.setfamily(bytestring.copyfrom(kv.getfamilyarray(), kv.getfamilyoffset(), kv.get FamilyLength())); cellbuilder.setqualifier(bytestring.copyfrom(kv.getqualifierarray(), kv.getqualifieroffset(), kv.getqualifierlength())); cellbuilder.setrow(bytestring.copyfrom(kv.getrowarray(), kv.getrowoffset(), kv.getrowle ngth())); cellbuilder.setvalue(bytestring.copyfrom(kv.getvaluearray(), kv.getvalueoffset(), kv.getval uelength())); cellbuilder.settimestamp(kv.gettimestamp()); rowbuilder.addcelllist(cellbuilder); /** * Stores a reference to the coprocessor environment provided by the * {@link org.apache.hadoop.hbase.regionserver.regioncoprocessorhost from the region where this * coprocessor is loaded. Since this is a coprocessor endpoint, it always expects to be loade d * on a table region, so always expects this to be an instance of * {@link RegionCoprocessorEnvironment. * env the environment provided by the coprocessor host IOException if the provided environment is not an instance of * {@code RegionCoprocessorEnvironment 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 public void stop(coprocessorenvironment env) { // nothing to do 大家可以看到, 这里面的代码框架和 HBase 协处理器入门及实战 里面介绍的 HBase 提供的 RowCountEndpoint 示例代码很类似 主要逻辑在 querybystartrowandendrow 函数实现里面 我们通过 DataQueryRequest 拿到客户端查询的表,StartKey 和 EndKey 8 / 12

9 等数据 通过 this.env.getregion().getregioninfo().getstartkey() 可以拿到当前 Region 的 StartKey, 然后再和客户端传进来的 StartKey 和 EndKey 进行拼接就可以拿到完整的 Rowkey 前缀 剩下的查询就是正常的 HBase Scan 代码了 现在我们将 SlatTableDataSearch 类进行编译打包, 并部署到 HBase 表里面去, 具体如何部署参见 HBase 协处理器入门及实战 协处理器客户端代码编写 到这里, 我们的协处理器服务器端的代码和部署已经完成了, 现在我们需要编写协处理器客户端代码 其实也很简单, 如下 : package com.iteblog.data; import com.iteblog.data.coprocessor.generated.dataqueryprotos.querydataservice; import com.iteblog.data.coprocessor.generated.dataqueryprotos.dataqueryrequest; import com.iteblog.data.coprocessor.generated.dataqueryprotos.dataqueryresponse; import com.iteblog.data.coprocessor.generated.dataqueryprotos.dataqueryresponse.*; import org.apache.hadoop.conf.configuration; import org.apache.hadoop.hbase.hbaseconfiguration; import org.apache.hadoop.hbase.tablename; import org.apache.hadoop.hbase.client.connection; import org.apache.hadoop.hbase.client.connectionfactory; import org.apache.hadoop.hbase.client.htable; import org.apache.hadoop.hbase.ipc.coprocessorrpcutils.blockingrpccallback; import org.apache.hadoop.hbase.ipc.serverrpccontroller; import java.util.linkedlist; import java.util.list; import java.util.map; public class DataQuery { private static Configuration conf = null; static { conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", " static List<Row> querybystartrowandstoprow(string tablename, String startrow, String stoprow, boolean isincludeend, boolean issalting) { final DataQueryRequest.Builder requestbuilder = DataQueryRequest.newBuilder(); requestbuilder.settablename(tablename); requestbuilder.setstartrow(startrow); 9 / 12

10 requestbuilder.setendrow(stoprow); requestbuilder.setincluedend(isincludeend); requestbuilder.setissalting(issalting); try { Connection connection = ConnectionFactory.createConnection(conf); HTable table = (HTable) connection.gettable(tablename.valueof(tablename)); Map<byte[], List<Row>> result = table.coprocessorservice(querydataservice.class, null, null, counter -> { ServerRpcController controller = new ServerRpcController(); BlockingRpcCallback<DataQueryResponse> call = new BlockingRpcCallback<>(); counter.querybystartrowandendrow(controller, requestbuilder.build(), call); DataQueryResponse response = call.get(); if (controller.failedonexception()) { throw controller.getfailedon(); return response.getrowlistlist(); ); List<Row> list = new LinkedList<>(); for (Map.Entry<byte[], List<Row>> entry : result.entryset()) { if (null!= entry.getkey()) { list.addall(entry.getvalue()); return list; catch (Throwable e) { e.printstacktrace(); return null; public static void main(string[] args) { List<Row> rows = querybystartrowandstoprow("iteblog", "1000", "1001", false, true); if (null!= rows) { System.out.println(rows.size()); for (DataQueryResponse.Row row : rows) { List<DataQueryResponse.Cell> celllistlist = row.getcelllistlist(); for (DataQueryResponse.Cell cell : celllistlist) { System.out.println(row.getRowKey().toStringUtf8() + " \t " + "column=" + cell.getfamily().tostringutf8() + ":" + cell.getqualifier().tostringutf8() + ", " + "timestamp=" + cell.gettimestamp() + ", " + 10 / 12

11 "value=" + cell.getvalue().tostringutf8()); 我们运行上面的代码, 可以得到如下的输出 : A column=f:age, timestamp= , value=54 A column=f:uuid, timestamp= , value=e9b10a9f fd-bd01 A column=f:age, timestamp= , value=4 A column=f:uuid, timestamp= , value=181aa91e-5f1d-4 54c-959c A column=f:age, timestamp= , value=33 A column=f:uuid, timestamp= , value=19aad8d3-621a-4 73c-8f9f B column=f:age, timestamp= , value=1 B column=f:uuid, timestamp= , value=cf720efe-2ad2-48 d6-81b8 B column=f:age, timestamp= , value=7 B column=f:uuid, timestamp= , value=8a e cb-adfe hbase(main):020:0> scan 'iteblog', {STARTROW => 'A-1000', ENDROW => 'A-1001' ROW COLUMN+CELL A column=f:age, timestamp= , value=54 A column=f:uuid, timestamp= , value=e9b10a9f fd-bd01 A column=f:age, timestamp= , value=4 A column=f:uuid, timestamp= , value=181aa91e-5f1d -454c-959c A column=f:age, timestamp= , value=33 A column=f:uuid, timestamp= , value=19aad8d3-621 a-473c-8f9f 3 row(s) Took seconds 可以看到, 和我们使用 HBase Shell 输出的一致, 而且我们还把所有的 UID = / 12

12 Powered by TCPDF ( 的数据拿到了 好了, 到这里, 使用协处理器查询 HBase 加盐之后的表已经算完成了, 明天我将介绍使用 Spark 如何查询加盐之后的表 本博客文章除特别声明, 全部都是原创! 转载本文请加上 : 转载自过往记忆 ( 本文链接 : () 12 / 12

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

使用MapReduce读取XML文件

使用MapReduce读取XML文件 使用 MapReduce 读取 XML 文件 XML( 可扩展标记语言, 英语 :extensible Markup Language, 简称 : XML) 是一种标记语言, 也是行业标准数据交换交换格式, 它很适合在系统之间进行数据存储和交换 ( 话说 Hadoop H ive 等的配置文件就是 XML 格式的 ) 本文将介绍如何使用 MapReduce 来读取 XML 文件 但是 Had oop

More information

Spark读取Hbase中的数据

Spark读取Hbase中的数据 Spark 读取 Hbase 中的数据 Spark 和 Flume-ng 整合, 可以参见本博客 : Spark 和 Flume-ng 整合 使用 Spark 读取 HBase 中的数据 如果想及时了解 Spark Hadoop 或者 Hbase 相关的文章, 欢迎关注微信公共帐号 :iteblog_hadoop 大家可能都知道很熟悉 Spark 的两种常见的数据读取方式 ( 存放到 RDD 中 ):(1)

More information

使用Cassandra和Spark 2.0实现Rest API服务

使用Cassandra和Spark 2.0实现Rest API服务 使用 Cassandra 和 Spark 2.0 实现 Rest API 服务 在这篇文章中, 我将介绍如何在 Spark 中使用 Akkahttp 并结合 Cassandra 实现 REST 服务, 在这个系统中 Cassandra 用于数据的存储 我们已经见识到 Spark 的威力, 如果和 Cassandra 正确地结合可以实现更强大的系统 我们先创建一个 build.sbt 文件, 内容如下

More information

通过Hive将数据写入到ElasticSearch

通过Hive将数据写入到ElasticSearch 我在 使用 Hive 读取 ElasticSearch 中的数据 文章中介绍了如何使用 Hive 读取 ElasticSearch 中的数据, 本文将接着上文继续介绍如何使用 Hive 将数据写入到 ElasticSearch 中 在使用前同样需要加入 elasticsearch-hadoop-2.3.4.jar 依赖, 具体请参见前文介绍 我们先在 Hive 里面建个名为 iteblog 的表,

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

Hadoop&Spark解决二次排序问题(Hadoop篇)

Hadoop&Spark解决二次排序问题(Hadoop篇) Hadoop&Spark 解决二次排序问题 (Spark 篇 ) 问题描述 二次排序就是 key 之间有序, 而且每个 Key 对应的 value 也是有序的 ; 也就是对 MapReduce 的输出 (KEY, Value(v 1,v 2,v 3,...,v n )) 中的 Value(v 1,v 2,v 3,...,v n ) 值进行排序 ( 升序或者降序 ), 使得 Value(s 1,s 2,s

More information

Flume-ng与Mysql整合开发

Flume-ng与Mysql整合开发 Flume-ng 与 Mysql 整合开发 我们知道,Flume 可以和许多的系统进行整合, 包括了 Hadoop Spark Kafka Hbase 等等 ; 当然, 强悍的 Flume 也是可以和 Mysql 进行整合, 将分析好的日志存储到 Mysql( 当然, 你也可以存放到 pg oracle 等等关系型数据库 ) 不过我这里想多说一些 :Flume 是分布式收集日志的系统 ; 既然都分布式了,

More information

Hive:用Java代码通过JDBC连接Hiveserver

Hive:用Java代码通过JDBC连接Hiveserver Hive: 用 Java 代码通过 JDBC 连接 Hiveserver 我们可以通过 CLI Client Web UI 等 Hive 提供的用户接口来和 Hive 通信, 但这三种方式最常用的是 CLI;Client 是 Hive 的客户端, 用户连接至 Hive Server 在启动 Client 模式的时候, 需要指出 Hive Server 所在节点, 并且在该节点启动 Hive Server

More information

三种方法实现Hadoop(MapReduce)全局排序(1)

三种方法实现Hadoop(MapReduce)全局排序(1) 三种方法实现 Hadoop(MapReduce) 全局排序 () 三种方法实现 Hadoop(MapReduce) 全局排序 () 我们可能会有些需求要求 MapReduce 的输出全局有序, 这里说的有序是指 Key 全局有序 但是我们知道,MapReduce 默认只是保证同一个分区内的 Key 是有序的, 但是不保证全局有序 基于此, 本文提供三种方法来对 MapReduce 的输出进行全局排序

More information

使用Hive读取ElasticSearch中的数据

使用Hive读取ElasticSearch中的数据 本文将介绍如何通过 Hive 来读取 ElasticSearch 中的数据, 然后我们可以像操作其他正常 Hive 表一样, 使用 Hive 来直接操作 ElasticSearch 中的数据, 将极大的方便开发人员 本文使用的各组件版本分别为 Hive0.12 Hadoop-2.2.0 ElasticSearch 2.3.4 我们先来看看 ElasticSearch 中相关表的 mapping: {

More information

在Spring中使用Kafka:Producer篇

在Spring中使用Kafka:Producer篇 在某些情况下, 我们可能会在 Spring 中将一些 WEB 上的信息发送到 Kafka 中, 这时候我们就需要在 Spring 中编写 Producer 相关的代码了 ; 不过高兴的是,Spring 本身提供了操作 Kafka 的相关类库, 我们可以直接通过 xml 文件配置然后直接在后端的代码中使用 Kafka, 非常地方便 本文将介绍如果在 Spring 中将消息发送到 Kafka 在这之前,

More information

Apache CarbonData集群模式使用指南

Apache CarbonData集群模式使用指南 我们在 Apache CarbonData 快速入门编程指南 文章中介绍了如何快速使用 Apache CarbonData, 为了简单起见, 我们展示了如何在单机模式下使用 Apache CarbonData 但是生产环境下一般都是使用集群模式, 本文主要介绍如何在集群模式下使用 Apache CarbonData 启动 Spark shell 这里以 Spark shell 模式进行介绍,master

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

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" 一些

More information

JavaIO.PDF

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

More information

如何在 Apache Hive 中解析 Json 数组

如何在 Apache Hive 中解析 Json 数组 问题 我们都知道,Hive 内部提供了大量的内置函数用于处理各种类型的需求, 参见官方文档 :Hive Operators and User-Defined Functions (UDFs) 我们从这些内置的 UDF 可以看到两个用于解析 Json 的函数 :get_json_object 和 json_tuple 用过这两个函数的同学肯定知道, 其职能解析最普通的 Json 字符串, 如下 : hive

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc Java C++ Pascal C# C# if if if for while do while foreach while do while C# 3.1.1 ; 3-1 ischeck Test() While ischeck while static bool ischeck = true; public static void Test() while (ischeck) ; ischeck

More information

Guava学习之CharSequenceReader

Guava学习之CharSequenceReader CharSequenceReader 类是以 CharSequence 的形式读取字符 CharSequenceReader 类继承自 Reader 类, 除了 remaining() hasremaining() 以及 checkopen() 函数之后, 其他的函数都是重写 Reader 类中的函数 CharSequenceReader 类声明没有用 public 关键字, 所以我们暂时还不能调用这个类

More information

操作指南产品文档

操作指南产品文档 云数据库 Hbase 操作指南 产品文档 版权声明 2015-2016 腾讯云版权所有 本文档著作权归腾讯云单独所有, 未经腾讯云事先书面许可, 任何主体不得以任何形式复制 修改 抄袭 传 播全部或部分本文档内容 商标声明 及其它腾讯云服务相关的商标均为腾讯云计算 ( 北京 ) 有限责任公司及其关联公司所有 本文档涉及的第三方 主体的商标, 依法由权利人所有 服务声明 本文档意在向客户介绍腾讯云全部或部分产品

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

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

More information

使用Apache Beam读写HDFS上的文件

使用Apache Beam读写HDFS上的文件 Apache Beam( 原名 Google DataFlow) 是 Google 在 2016 年 2 月份贡献给 Apache 基金会的 Apache 孵化项目, 被认为是继 MapReduce,GFS 和 BigQuery 等之后,Google 在大数据处理领域对开源社区的又一个非常大的贡献 Apache Beam 的主要目标是统一批处理和流处理的编程范式, 为无限, 乱序,web-scale

More information

EJB-Programming-4-cn.doc

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

More information

Hadoop元数据合并异常及解决方法

Hadoop元数据合并异常及解决方法 Hadoop 元数据合并异常及解决方法 这几天观察了一下 Standby NN 上面的日志, 发现每次 Fsimage 合并完之后,Standby NN 通知 Active NN 来下载合并好的 Fsimage 的过程中会出现以下的异常信息 : 2014-04-23 14:42:54,964 ERROR org.apache.hadoop.hdfs.server.namenode.ha. StandbyCheckpointer:

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 Hadoop 生 态 技 术 在 阿 里 全 网 商 品 搜 索 实 战 阿 里 巴 巴 - 王 峰 自 我 介 绍 真 名 : 王 峰 淘 宝 花 名 : 莫 问 微 博 : 淘 莫 问 2006 年 硕 士 毕 业 后 加 入 阿 里 巴 巴 集 团 淘 及 搜 索 事 业 部 ( 高 级 技 术 与 家 ) 目 前 负 责 搜 索 离 线 系 统 团 队 技 术 方 向 : 分 布 式 计 算

More information

untitled

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

More information

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

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

More information

chp6.ppt

chp6.ppt Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-065Big5 Title : Sun Certified Programmer for the Java 2 Platform, SE 6.0 Version : Demo 1 / 14 1. 35. String #name = "Jane Doe"; 36. int

More information

使用Spark SQL读取Hive上的数据

使用Spark SQL读取Hive上的数据 使用 Spark SQL 读取 Hive 上的数据 Spark SQL 主要目的是使得用户可以在 Spark 上使用 SQL, 其数据源既可以是 RDD, 也可以是外部的数据源 ( 比如 Parquet Hive Json 等 ) Spark SQL 的其中一个分支就是 Spark on Hive, 也就是使用 Hive 中 HQL 的解析 逻辑执行计划翻译 执行计划优化等逻辑, 可以近似认为仅将物理执行计划从

More information

untitled

untitled 4.1AOP AOP Aspect-oriented programming AOP 來說 AOP 令 理 Cross-cutting concerns Aspect Weave 理 Spring AOP 來 AOP 念 4.1.1 理 AOP AOP 見 例 來 例 錄 Logging 錄 便 來 例 行 留 錄 import java.util.logging.*; public class HelloSpeaker

More information

Mac Java import com.apple.mrj.*;... public class MyFirstApp extends JFrame implements ActionListener, MRJAboutHandler, MRJQuitHandler {... public MyFirstApp() {... MRJApplicationUtils.registerAboutHandler(this);

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

Kafka客户端是如何找到 leader 分区的

Kafka客户端是如何找到 leader 分区的 在正常情况下,Kafka 中的每个 Topic 都会有很多个分区, 每个分区又会存在多个副本 在这些副本中, 存在一个 leader 分区, 而剩下的分区叫做 follower, 所有对分区的读写操作都是对 leader 分区进行的 所以当我们向 Kafka 写消息或者从 Kafka 读取消息的时候, 必须先找到对应分区的 Lea der 及其所在的 Broker 地址, 这样才可以进行后续的操作

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj Message Transition 5-1 5-2 DataInputStream Class 5-3 DataOutputStream Class 5-4 PrintStream Class 5-5 (Message Transition) (Exercises) Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream

More information

javaexample-02.pdf

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

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(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

More information

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 JAVA 程 序 设 计 ( 肆 ) 徐 东 / 数 学 系 使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 使 用 Java class 代 表 保 险 箱 public class SaveBox 类 名 类 类 体 实 现 封 装 性 使 用 class SaveBox 代 表 保

More information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

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

More information

《大话设计模式》第一章

《大话设计模式》第一章 第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜

More information

雲端 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

雲端 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

More information

三种方法实现Hadoop(MapReduce)全局排序(2)

三种方法实现Hadoop(MapReduce)全局排序(2) 三种方法实现 Hadoop(MapReduce) 全局排序 (2) 我在前面的文章介绍了 MapReduce 中两种全排序的方法及其实现 但是上面的两种方法都是有很大的局限性 : 方法一在数据量很大的时候会出现 OOM 问题 ; 方法二虽然能够将数据分散到多个 Reduce 中, 但是问题也很明显 : 我们必须手动地找到各个 Reduce 的分界点, 尽量使得分散到每个 Reduce 的数据量均衡

More information

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 access_token=access_token (http

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址   access_token=access_token (http 停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 https://webapi.zego.im/cgi/stop-mix? access_token=access_token (https://webapi.zego.im/cgi/stop-mix? access_token=access_token)

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-055Big5 Title : Sun Certified Programmer for the Java 2 Platform.SE 5.0 Version : Demo 1 / 22 1. 11. public static void parse(string str)

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 70-536Chinese(C++) Title : TS:MS.NET Framework 2.0-Application Develop Foundation Version : DEMO 1 / 10 1. Exception A. Data B. Message C.

More information

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

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

More information

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 專題進度 老師 : 趙啟時老師 學生 : 陳建廷 2013/10/13 用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 程式碼 : package com.example.phone; import java.util.arraylist;

More information

CHAPTER 1

CHAPTER 1 CHAPTER 1 1-1 System Development Life Cycle; SDLC SDLC Waterfall Model Shelly 1995 1. Preliminary Investigation 2. System Analysis 3. System Design 4. System Development 5. System Implementation and Evaluation

More information

SparkR(R on Spark)编程指南

SparkR(R on Spark)编程指南 概论 SparkR 是一个 R 语言包, 它提供了轻量级的方式使得可以在 R 语言中使用 Apache Spark 在 Spark 1.4 中,SparkR 实现了分布式的 data frame, 支持类似查询 过滤以及聚合的操作 ( 类似于 R 中的 data frames:dplyr), 但是这个可以操作大规模的数据集 SparkR DataFrames DataFrame 是数据组织成一个带有列名称的分布式数据集

More information

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

More information

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class 踩地雷遊戲 高慧君南港高中 開啟專案 MineSweep 任務一 : 產生 30X20 個磚塊編輯 Table 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.util.arraylist; Write a description of class MyWorld

More information

untitled

untitled 1 行 行 行 行.NET 行 行 類 來 行 行 Thread 類 行 System.Threading 來 類 Thread 類 (1) public Thread(ThreadStart start ); Name 行 IsAlive 行 行狀 Start 行 行 Suspend 行 Resume 行 行 Thread 類 (2) Sleep 行 CurrentThread 行 ThreadStart

More information

Microsoft Word - ch04三校.doc

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

More information

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取将导致上次获取的 access_token 失效 接入方可以使用 AppID 和 AppSecret

More information

Chapter 9: Objects and Classes

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

More information

CHAPTER VC#

CHAPTER VC# 1. 2. 3. 4. CHAPTER 2-1 2-2 2-3 2-4 VC# 2-5 2-6 2-7 2-8 Visual C# 2008 2-1 Visual C# 0~100 (-32768~+32767) 2 4 VC# (Overflow) 2-1 2-2 2-1 2-1.1 2-1 1 10 10!(1 10) 2-3 Visual C# 2008 10! 32767 short( )

More information

untitled

untitled 1 MSDN Library MSDN Library 量 例 參 列 [ 說 ] [] [ 索 ] [] 來 MSDN Library 了 類 類 利 F1 http://msdn.microsoft.com/library/ http://msdn.microsoft.com/library/cht/ Object object 參 類 都 object 參 object Boxing 參 boxing

More information

EJB-Programming-3.PDF

EJB-Programming-3.PDF :, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

开放数据处理服务 ODPS 批量数据通道

开放数据处理服务 ODPS 批量数据通道 开放数据处理服务 ODPS 批量数据通道 批量数据通道 SDK 介绍 概要 ODPS Tunnel 是 ODPS 的数据通道, 用户可以通过 Tunnel 向 ODPS 中上传或者下载数据 目前 Tunnel 仅支持表 ( 不包括视图 View) 数据的上传下载 ODPS 提供的数据上传下载工具即是基于 Tunnel SDK 编写的 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk-core"

More information

untitled

untitled 1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

untitled

untitled 1 Outline ArrayList 類 列類 串類 類 類 例 理 MSDN Library MSDN Library 量 例 參 列 [ 說 ] [] [ 索 ] [] 來 MSDN Library 了 類 類 利 F1 http://msdn.microsoft.com/library/ http://msdn.microsoft.com/library/cht/ Object object

More information

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises)

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises) 09 (File Processes) 9-1 9-2 (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises) Java Servlet 9-1 Servlet (File Processes) Client Servlet Servlet Java Java (Stream)

More information

六种使用Linux命令发送带附件的邮件

六种使用Linux命令发送带附件的邮件 六种使用 Linux 命令发送带附件的邮件 在很多场景中我们会使用 Shell 命令来发送邮件, 而且我们还可能在邮件里面添加附件, 本文将介绍使用 Shell 命令发送带附件邮件的几种方式, 希望对大家有所帮助 如果想及时了解 Spark Hadoop 或者 Hbase 相关的文章, 欢迎关注微信公共帐号 :iteblog_hadoop 使用 mail 命令 mail 命令是 mailutils(on

More information

输入 project name 选择完成

输入 project name 选择完成 JAVA 程序访问 HighGo DB 的环境准备 山东瀚高科技有限公司版权所有仅允许不作任何修改的转载和转发 Hibernate 的配置 MyEclipse 中创建新项目 : 选择菜单栏 file---new---project 选择 web project 进行下一步 输入 project name 选择完成 4. 单击 " 添加 JAR/ 文件夹 ", 会如下图出现 JDBC 下载 Hibernate

More information

建模与图形思考

建模与图形思考 C03_c 基 於 軟 硬 整 合 觀 點 JNI: 从 C 调 用 Java 函 数 ( c) By 高 煥 堂 3 How-to: 基 於 軟 硬 整 合 觀 點 从 C 调 用 Java 函 数 如 果 控 制 点 摆 在 本 地 C 层, 就 会 常 常 1. 从 本 地 C 函 数 去 调 用 Java 函 数 ; 2. 从 本 地 C 函 数 去 存 取 Java 层 对 象 的 属 性

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com 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

More information

新版 明解C++入門編

新版 明解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,

More information

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 语 言 程 序 设 计 郑 莉 胡 家 威 编 著 清 华 大 学 逸 夫 图 书 馆 北 京 内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 握 语

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

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

More information

C/C++ 语言 - 循环

C/C++ 语言 - 循环 C/C++ Table of contents 7. 1. 2. while 3. 4. 5. for 6. 8. (do while) 9. 10. (nested loop) 11. 12. 13. 1 // summing.c: # include int main ( void ) { long num ; long sum = 0L; int status ; printf

More information

Socket Socket TcpClient Socket.Connect TcpClient.Connect Socket.Send / Receive NetworkStream 6-5

Socket Socket TcpClient Socket.Connect TcpClient.Connect Socket.Send / Receive NetworkStream 6-5 6 6-1 6-2 Socket 6-2-1 Socket 6-2-2 TcpClient 6-3 6-3-1 Socket.Connect 6-3-2 TcpClient.Connect 6-4 6-4-1 Socket.Send / Receive 6-4-2 NetworkStream 6-5 6-5-1 Socket.Close 6-5-2 TcpClient.Close 6-6 DateTime

More information

Microsoft Word - Broker.doc

Microsoft Word - Broker.doc Broker 模式 采用 broker 模式对分布式计算进行简单模拟 系统在一个进程内模拟分布式环境, 因此不涉及网络编程和进程间通信,Broker 通过本地函数调用的方式实现 request 和 response 的转发 采用 broker 模式对分布式计算进行简单的模拟, 要求如下 : 设计四个 server, 一个 server 接收两个整数, 求和并返回结果, 一个 server 接收两个整数,

More information

( 总 第 1073 期 ) 浙 江 省 人 民 政 府 主 办 2015 年 3 月 17 日 出 版 省 政 府 令 省 政 府 文 件 目 录 浙 江 省 大 型 群 众 性 活 动 安 全 管 理 办 法 ( 浙 江 省 人 民 政 府 令 第 333 号 ) (3) 浙 江 省 人 民 政

( 总 第 1073 期 ) 浙 江 省 人 民 政 府 主 办 2015 年 3 月 17 日 出 版 省 政 府 令 省 政 府 文 件 目 录 浙 江 省 大 型 群 众 性 活 动 安 全 管 理 办 法 ( 浙 江 省 人 民 政 府 令 第 333 号 ) (3) 浙 江 省 人 民 政 ( 总 第 1073 期 ) 浙 江 省 人 民 政 府 主 办 2015 年 3 月 17 日 出 版 省 政 府 令 省 政 府 文 件 目 录 浙 江 省 大 型 群 众 性 活 动 安 全 管 理 办 法 ( 浙 江 省 人 民 政 府 令 第 333 号 ) (3) 浙 江 省 人 民 政 府 关 于 命 名 第 一 批 省 级 生 态 市 第 七 批 省 级 生 态 县 ( 市 区 )

More information

拦截器(Interceptor)的学习

拦截器(Interceptor)的学习 二 拦截器 (Interceptor) 的学习 拦截器可以监听程序的一个或所有方法 拦截器对方法调用流提供了细粒度控制 可以在无状态会话 bean 有状态会话 bean 和消息驱动 bean 上使用它们 拦截器可以是同一 bean 类中的方法或是一个外部类 下面介绍如何在 Session Bean 类中使用外部拦截器类 @Interceptors 注释指定一个或多个在外部类中定义的拦截器 下面拦截器

More information

韶关:神奇丹霞

韶关:神奇丹霞 丹霞山 南华寺 六祖慧能 韶乐 曹溪假日温泉 马坝人遗址 珠玑 巷 乳源必背瑶寨 乳源大峡谷 封面... 1 一 韶关 山水之城 神奇丹霞... 3 二 韶关不过错过的美景... 5 三 韶关行程推荐... 9 四 韶关交通... 10 1 铁路... 10 2 公路... 10 3 内部交通... 4 韶关至香港直通巴士... 五 韶关娱乐 享受慢生活... 六 韶关特产带回家... 七 食在韶关...

More information

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 复习 创建对象 构造函数 函数重载 : 函数 = 函数名 + 参数列表 public class MyType { int i; double d; char c; void set(double x)

More information

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题 2009 年 3 月 全 国 计 算 机 等 级 考 试 笔 试 试 卷 二 级 Java 语 言 程 序 设 计 ( 考 试 时 间 90 分 钟, 满 分 100 分 ) 一 选 择 题 ( 每 题 2 分, 共 70 分 ) 下 列 各 题 A) B) C) D) 四 个 选 项 中, 只 有 一 个 选 项 是 正 确 的 请 将 正 确 选 项 填 涂 在 答 题 卡 相 应 位 置 上,

More information

untitled

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

More information

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat 本章学习目标 小风 Java 实战系列教程 AOP 思想概述 AOP 底层技术实现 AOP 术语介绍 SpringAOP 的 XML 方式 HelloWorld SpringAOP 的 XML 方式配置细节 SpringAOP 的注解方式 SpringAOP 的零配置方式 1. AOP 思想概述 1.1. AOP 思想简介 1.2. AOP 的作用 2. AOP 底层技术实现 小风 Java 实战系列教程

More information

全国计算机技术与软件专业技术资格(水平)考试

全国计算机技术与软件专业技术资格(水平)考试 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2008 年 上 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 ) 试 题 一 ( 共 15 分 ) 阅 读 以 下 说 明 和 流 程 图, 填 补 流 程 图 中 的 空 缺 (1)~(9), 将 解 答 填 入 答 题 纸 的 对 应 栏 内 [ 说 明

More information

Flink快速上手之Scala API使用

Flink快速上手之Scala API使用 Flink 快速上手之 Scala API 使用 本文将介绍如何通过简单地几步来开始编写你的 Flink Scala 程序 构建工具 Flink 工程可以使用不同的工具进行构建, 为了快速构建 Flink 工程, Flink 为下面的构建工具分别提供了模板 : 1 SBT 2 Maven 这些模板可以帮助我们组织项目结构并初始化一些构建文件 SBT 创建工程 1 使用 Giter8 可以使用下面命令插件一个

More information

WWW PHP

WWW PHP WWW PHP 2003 1 2 function function_name (parameter 1, parameter 2, parameter n ) statement list function_name sin, Sin, SIN parameter 1, parameter 2, parameter n 0 1 1 PHP HTML 3 function strcat ($left,

More information

哼, 你 們 不 回 答 又 怎 麼 樣? 不 管 是 多 大 來 頭, 現 在 都 被 血 魔 吞 噬 無 蹤 了 你 們 幾 個 真 是 太 過 分, 我 不 犯 你 們, 你 們 卻 一 天 到 晚 來 挑 釁 我 教 尊 冷 笑 著 說 道 嗚, 大 人 土 地 大 姐 跪 下 來, 流 下

哼, 你 們 不 回 答 又 怎 麼 樣? 不 管 是 多 大 來 頭, 現 在 都 被 血 魔 吞 噬 無 蹤 了 你 們 幾 個 真 是 太 過 分, 我 不 犯 你 們, 你 們 卻 一 天 到 晚 來 挑 釁 我 教 尊 冷 笑 著 說 道 嗚, 大 人 土 地 大 姐 跪 下 來, 流 下 [tw] 天 醫 傳 奇 覺 醒 篇 [/tw][cn] 天 医 传 奇 觉 醒 篇 [/cn] 我 跌 坐 在 這 團 奇 異 的 麻 糬 上 面 城 隍 爺 和 土 地 大 姐 也 大 驚 失 色, 趕 緊 拉 住 我 的 手, 想 要 把 我 拉 起 來 看 來, 城 隍 爺 真 的 不 是 故 意 的 當 然, 我 並 不 排 除 他 們 現 在 仍 然 在 演 戲, 大 概 怕 一 旦 我

More information

ebook39-5

ebook39-5 5 3 last-in-first-out, LIFO 3-1 L i n e a r L i s t 3-8 C h a i n 3 3. 8. 3 C + + 5.1 [ ] s t a c k t o p b o t t o m 5-1a 5-1a E D 5-1b 5-1b E E 5-1a 5-1b 5-1c E t o p D t o p D C C B B B t o p A b o

More information

untitled

untitled 1 Outline 類别 欄 (1) 類 類 狀 更 易 類 理 若 類 利 來 利 using 來 namespace 類 ; (2) namespace IBM class Notebook namespace Compaq class Notebook 類别 類 來 類 列 欄 (field) (property) (method) (event) 類 例 立 來 車 類 類 立 車 欄 料

More information

java2d-4.PDF

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

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

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

More information

ASP.NET实现下拉框二级联动组件

ASP.NET实现下拉框二级联动组件 ASP.NET 实现下拉框二级联动组件 namespace WebApplicationDlh using System.Drawing; using System.Web; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using Db; / / Area 的摘要说明 /

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

伊春:醉人林都

伊春:醉人林都 林海 雪淞 山野菜 狩猎 大丰河漂流 滑雪场 杜鹃花海 东北大 集 封面... 1 一 美丽林都 天然氧吧... 4 二 伊春旅游最棒体验... 6 1 春季 赏万紫千红杜鹃花海... 6 2 夏季 瞧林都醉人绿色海洋... 7 3 秋季 观层林染金梦幻美景... 8 4 冬季 看林海雪原雪凇奇观... 8 5 铁力市赶东北大集 感受风风火火的东北风情... 6 伊春狩猎 做回野性的东北汉子...

More information

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF> 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 考 试 2009 年 上 半 年 软 件 设 计 师 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 请 按 下 述 要 求 正 确 填 写 答 题 纸 1. 在 答 题 纸 的 指 定 位 置 填 写 你 所 在 的 省 自 治 区 直 辖 市 计 划 单 列 市 的 名 称 2. 在 答

More information

ebook39-6

ebook39-6 6 first-in-first-out, FIFO L i n e a r L i s t 3-1 C h a i n 3-8 5. 5. 3 F I F O L I F O 5. 5. 6 5. 5. 6.1 [ ] q u e n e ( r e a r ) ( f r o n t 6-1a A 6-1b 6-1b D C D 6-1c a) b) c) 6-1 F I F O L I F ADT

More information

Microsoft PowerPoint - ch6 [相容模式]

Microsoft PowerPoint - ch6 [相容模式] UiBinder wzyang@asia.edu.tw UiBinder Java GWT UiBinder XML UI i18n (widget) 1 2 UiBinder HelloWidget.ui.xml: UI HelloWidgetBinder HelloWidget.java XML UI Owner class ( Composite ) UI XML UiBinder: Owner

More information

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B 25 9 2008 9 M ICROEL ECTRON ICS & COMPU TER Vol. 25 No. 9 September 2008 J ava 1,2, 1,2, 1,2 (1, 330022 ; 2, 330022) :,. Apla - Java,,.. : PAR ;Apla - Java ; ;CMP ; : TP311 : A : 1000-7180 (2008) 09-0018

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

Java ¿ª·¢ 2.0: Óà Hadoop MapReduce ½øÐдóÊý¾Ý·ÖÎö

Java ¿ª·¢ 2.0: Óà Hadoop MapReduce ½øÐдóÊý¾Ý·ÖÎö 中 文 登 录 ( 或 注 册 ) 技 术 主 题 软 件 下 载 社 区 技 术 讲 座 搜 索 developerworks developerworks 技 术 主 题 Java technology 文 档 库 Java 开 发 2.0: 用 Hadoop MapReduce 进 行 大 数 据 分 析 成 堆 的 数 据 如 何 变 成 信 息 金 矿 Andrew Glover, 作 家

More information

是 喔, 就 是 那 個 在 BBS 醫 療 版 跟 你 嗆 聲, 自 稱 有 三 十 多 年 推 拿 經 驗 的 大 叔 嗎? 一 個 看 來 頗 為 清 秀 的 女 生 問 道, 她 語 氣 中 略 感 訝 異 是 啊, 什 麼 推 拿 按 摩 有 多 好, 還 要 人 生 病 盡 量 不 要

是 喔, 就 是 那 個 在 BBS 醫 療 版 跟 你 嗆 聲, 自 稱 有 三 十 多 年 推 拿 經 驗 的 大 叔 嗎? 一 個 看 來 頗 為 清 秀 的 女 生 問 道, 她 語 氣 中 略 感 訝 異 是 啊, 什 麼 推 拿 按 摩 有 多 好, 還 要 人 生 病 盡 量 不 要 [tw] 天 醫 傳 奇 回 憶 篇 [/tw][cn] 天 医 传 奇 回 忆 篇 [/cn] 少 年 的 時 光 是 容 易 凋 謝 的 玫 瑰, 又 像 是 不 停 等 的 河 流, 總 會 在 某 一 個 渡 口 駐 岸 時, 才 發 現, 滾 滾 河 水 夾 帶 著 輕 舟, 在 不 經 意 間, 已 經 漂 流 過 萬 重 山 A.D.1999.12.31 傍 晚 新 竹 綠 莎 庭 園

More information