当前位置: 首页 > news >正文

HBase API

我们之后的实际开发中不可能在服务器那边直接使用shell命令一直敲的,一般都是通过API进行操作的。

环境准备

新建Maven项目,导入Maven依赖

<dependencies><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>2.4.17</version></dependency></dependencies>

1、创建连接

        HBase 的客户端连接由 ConnectionFactory 类来创建(工厂模式直接创建),我们使用完之后需要手动关闭连接。同时连接 是一个重量级的,推荐一个进程使用一个连接,对 HBase 的命令通过连接中的两个属性 Admin 和 Table 来实现。其中 Admin 主要是针对元数据-表格的创建修改进行操作, Table 则是针对表格中数据的增加修改进行操作。

1.1、单线程创建连接

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.AsyncConnection;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;import java.io.IOException;
import java.util.concurrent.CompletableFuture;public class HBaseConnection {public static void main(String[] args) throws IOException {// 1. 创建连接配置参数Configuration conf = new Configuration();//对应我们 hbase-site.xml 中的配置信息的<name>和<value>的值conf.set("hbase.zookeeper.quorum","hadoop102,hadoop103,hadoop104");// 2. 创建连接// 默认使用同步连接Connection connection = ConnectionFactory.createConnection(conf);// 3. 使用连接System.out.println(connection);// 4. 关闭连接connection.close();}
}

1.2、多线程创建连接

我们真正开发中首先不会把配置参数写到代码中的,我们是通过Maven项目下的resources目录来读取配置文件来设置配置参数的,我们可以看源码:

Connection connection = ConnectionFactory.createConnection();

我们调用了工厂模式的 ConnectionFactory 的 createConnection 方法来创建连接,这里我们。

没有配置参数,因为HBase默认其实会自动帮我们添加配置参数:

我们可以看到当调用ConnectionFactory 的 createConnection 方法的时候,其实又调用了HBaseConfiguration 的 create 方法,

 

 该方法内部帮我们添加了配置参数:

可以看到,它其实是去读取我们Maven项目下的resources目录下的文件,所以我们需要将我们的配置参数写到resources目录下,最好使用 "hbase-ste.xml" 来命名,至于这个文件,我们直接复制我们hbase集群中conf目录下的hbase-site.xml 。 

其中,我们只需要留下关于我们zookeeper服务器连接地址的配置信息即可,别的全部删除,因为我们是客户端,我们不能设置服务端的配置,那些即使写了也不会生效。

 

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property><name>hbase.zookeeper.quorum</name><value>hadoop102,hadoop103,hadoop104</value><description>The directory shared by RegionServers.</description></property>
</configuration>

 使用类单例模式确保只使用一个连接,可以同时用于多个线程。

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.AsyncConnection;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;import java.io.IOException;
import java.util.concurrent.CompletableFuture;public class HBaseConnection {// 声明一个静态属性public static Connection connection = null;static {// 1. 创建连接// 默认使用同步连接try {//使用读取本地配置文件的方式来添加参数connection = ConnectionFactory.createConnection();} catch (IOException e) {e.printStackTrace();}}public static void closeConnection() throws IOException {// 判断连接是否为 nullif (connection != null){connection.close();}}public static void main(String[] args) throws IOException {//使用多线程连接 直接使用创建好的连接 不再main线程单独创建System.out.println(HBaseConnection.connection);//在main线程的最后记得关闭连接HBaseConnection.closeConnection();}}

2、DDL

创建 HBaseDDL类,添加HBaseConnection的静态属性作为我们的连接对象,确保单例模式。

2.1、创建命名空间

我们上面说了,HBase中的 DDL 语句被封装到了 Admin中,所以我们需要先获取 Admin。

Admin admin = connection.getAdmin();

注意:在coding的过程中遇到异常不要老想着直接在方法名之后直接 throws ,这样虽然是简洁了一些,但是如果第一行抛出了一个IOException,之后几行再出现异常我们就察觉不到了,所以尽量在我们核心代码处try-catch,方便了解异常信息。

然后我们直接通过方法来创建 namespace ,这里的namespace是一个对象,这样做的原因是因为我们 HBase 的shell命令中创建namespace的时候就是不止一种方法,所以这里单纯字符串来创建namespace肯定不行,对象具有更完整属性。

第二种创建命名空间的方式中,我们可以看到有一个 键值对参数,这就需要设置我们对象的属性了。 

 

import org.apache.hadoop.hbase.NamespaceDescriptor;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;import java.io.IOException;public class HBaseDDL {public static Connection connection = HBaseConnection.connection;/*** 创建命名空间* @param namespace 命名空间的名称*/public static void createNamespace(String namespace) throws IOException {// 1. 获取admin//admin是轻量级的 并且不是线程安全的 不推荐池化或者缓存这个连接//也就是说 用的时候再去获取 不用就把它关闭掉Admin admin = connection.getAdmin();// 2. 调用方法创建 namespace// 代码比shell更加底层 所以shell能实现的功能代码 一定也可以// 所以代码实现时 需要更完整的命名空间描述// 2.1 获取一个命名空间的建造者 => 设计师NamespaceDescriptor.Builder builder = NamespaceDescriptor.create(namespace);// 2.2 给命名空间添加属性// 给namespace添加键值对属性其实并没有什么意义 只是给人注释一样builder.addConfiguration("user","lyh");// 2.3 使用builder构造出namespace对象// 创建命名空间造成的问题 属于方法本身的问题 不应该抛出try {admin.createNamespace(builder.build());} catch (IOException e) {System.out.println("该命名空间已经存在!");e.printStackTrace();}// 3. 关闭资源admin.close();}public static void main(String[] args) throws IOException {//测试创建马命名空间createNamespace("lyh");//记得关闭HBase连接HBaseConnection.closeConnection();}
}

运行结果 

 

2.2、判断表格是否存在

    /*** 判断表格是否存在* @param namespace 命名空间* @param tableName 表名* @return true-存在 false-不存在*/public static boolean isTableExists(String namespace,String tableName) throws IOException {// 1. 获取adminAdmin admin = connection.getAdmin();// 2. 使用方法判断表格是否存在boolean b = false;try {b = admin.tableExists(TableName.valueOf(namespace, tableName));} catch (IOException e) {e.printStackTrace();}// 3. 关闭adminadmin.close();// 4.返回结果return b;}

2.3、创建表

    /*** 创建表格* @param namespace 命名空间* @param tableName 表格名称* @param columnFamilies 列族名称 可以有多个*/public static void createTable(String namespace,String tableName,String... columnFamilies) throws IOException {// 判断是否有至少一个列族if (columnFamilies.length == 0){System.out.println("创建表格至少应该有一个列族");return;}// 判断表格是否已经存在if (isTableExists(namespace,tableName)){System.out.println("表格已经存在");return;}// 1. 获取adminAdmin admin = connection.getAdmin();// 2. 调用方法创建表格// 2.1 获取表格的建造者TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(TableName.valueOf(namespace,tableName));// 2.2 添加参数for (String columnFamily : columnFamilies) {// 2.3 获取列族建造者ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(columnFamily));// 2.4 通过建造者创建对应列族描述// 添加版本参数-维护的版本数columnFamilyDescriptorBuilder.setMaxVersions(5);// 2.5 创建添加完参数的列族描述builder.setColumnFamily(columnFamilyDescriptorBuilder.build());}// 2.3 创建表格描述try {admin.createTable(builder.build());} catch (IOException e) {//System.out.println("表格已经存在");e.printStackTrace();}// 2.4 关闭adminadmin.close();}

2.4、修改表

这里需要注意的比较多:

我们这里修改表格的列族版本,首先就需要获取表格描述和列族描述,但是我们不能重新通过newBuilder创建这两种描述,而是应该使用旧的描述。

对于旧的表格描述来说,我们可以通过admin的getDescriptor()来获取旧的描述。

对于旧的列族描述来说,我们可以通过表格描述对象的getColumnFamily()方法来获取。

    /*** 修改表格中一个列族的版本* @param namespace 命名空间* @param tableName 表名* @param columnFamily 列族* @param version 维护的版本*/public static void modifyTable(String namespace,String tableName,String columnFamily,int version) throws IOException {// 判断表格是否存在if (!isTableExists(namespace,tableName)){System.out.println("表格不存在");return;}// 1. 获取adminAdmin admin = connection.getAdmin();// 2. 调用方法修改表格// 2.0 获取之前的表格描述TableDescriptor tableDescriptor = null;try {tableDescriptor = admin.getDescriptor(TableName.valueOf(namespace, tableName));} catch (IOException e) {System.out.println("表格不存在");e.printStackTrace();}// 2.1 创建一个表格描述建造者// 如果使用填写 tableName 的方法 相当于创建了一个新的表格描述 没有之前的信息// 如果想要修改表格的信息 必须调用方法填写一个旧的表格描述TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(tableDescriptor);// 2.2 对应建造者进行表格数据的修改// 获取旧的列族描述ColumnFamilyDescriptor columnFamily1 = tableDescriptor.getColumnFamily(Bytes.toBytes(columnFamily));// 创建列族描述建造者ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(columnFamily1);// 修改对应的版本columnFamilyDescriptorBuilder.setMaxVersions(version);// 在这里修改的时候 如果填写的是新创建的列族描述 那么我们表格之前的其它属性会被初始化 所以要使用旧的列族描述builder.modifyColumnFamily(columnFamilyDescriptorBuilder.build());try {admin.modifyTable(builder.build());} catch (IOException e) {e.printStackTrace();}// 3. 关闭adminadmin.close();}

 

2.5、删除表

需要注意HBase中删除表前必须标记表为不可用!

/*** 删除表格* @param namespace 命名空间* @param tableName 表名* @return true-删除成功*/public static boolean deleteTable(String namespace,String tableName) throws IOException {// 1. 判断表格是否存在if (!isTableExists(namespace,tableName)){System.out.println("表格不存在 无法删除");return false;}// 2. 获取adminAdmin admin = connection.getAdmin();// 3. 调用相关的方法删除表格try {// hbase 删除表格前必须标记标记表格为不可用才能删除admin.disableTable(TableName.valueOf(namespace,tableName));admin.deleteTable(TableName.valueOf(namespace,tableName));} catch (IOException e) {e.printStackTrace();}// 4. 关闭adminadmin.close();return true;}

3、DML

3.1、插入数据

我们可以看到,插入数据的put方法中要求参数必须为Byte类型,这也应证了我们之前第一篇博客说的-HBase的Cell的数据都是以Byte字节类型存储的。

public class HBaseDML {//静态属性public static Connection connection = HBaseConnection.connection;/*** 插入数据* @param namespace 命名空间* @param tableName 表名* @param rowKey 行键* @param columnFamily 列族* @param columnName 列名* @param value 值*/public static void putCell(String namespace,String tableName,String rowKey,String columnFamily,String columnName,String value) throws IOException {// 1. 获取 TableTable table = connection.getTable(TableName.valueOf(namespace,tableName));// 2. 调用相关方法实现数据插入// 2.1 创建 put 对象Put put = new Put(Bytes.toBytes(rowKey));// 2.2 给 put 对象添加属性put.addColumn(Bytes.toBytes(columnFamily),Bytes.toBytes(columnName),Bytes.toBytes(value));// 2.3 将对象写入对应的方法try {table.put(put);} catch (IOException e) {e.printStackTrace();}// 3. 关闭tabletable.close();}public static void main(String[] args) throws IOException {// 测试插入数据putCell("bigdata","student","1005","info","name","hbase");System.out.println("其他代码");// 关闭连接HBaseConnection.closeConnection();}
}

3.2、查询数据

未完待续

3.3、扫描数据

3.4、带过率扫描

3.5、删除数据

相关文章:

HBase API

我们之后的实际开发中不可能在服务器那边直接使用shell命令一直敲的&#xff0c;一般都是通过API进行操作的。 环境准备 新建Maven项目&#xff0c;导入Maven依赖 <dependencies><dependency><groupId>org.apache.hbase</groupId><artifactId>…...

Qt6之QListWidget——Qt仿ToDesk侧边栏(1)

一、 QLitWidget概述 注意&#xff1a;本文不是简单翻译Qt文档或者接口函数&#xff0c;而侧重于无代码Qt设计器下演示使用。 QListWidget也称列表框类&#xff0c;它提供了一个类似于QListView提供的列表视图&#xff0c;但是它具有一个用于添加和删除项的经典的基于项的接口…...

Prometheus技术文档--基本安装-docker安装并挂载数据卷-《十分钟搭建》

一、查看可安装的版本 docker search prom/prometheus 二、拉取镜像 docker pull prom/prometheus 三、查看镜像 docker images 四、书写配置文件-以及创建挂载目录 宿主机挂载目录位置&#xff1a; 以及准备对应的挂载目录&#xff1a; /usr/local/docker/promethues/se…...

Android 数据库之GreenDAO

GreenDAO 是一款开源的面向 Android 的轻便、快捷的 ORM 框架&#xff0c;将 Java 对象映射到 SQLite 数据库中&#xff0c;我们操作数据库的时候&#xff0c;不再需要编写复杂的 SQL语句&#xff0c; 在性能方面&#xff0c;greenDAO 针对 Android 进行了高度优化&#xff0c;…...

kotlin 编写一个简单的天气预报app(六)使用recyclerView显示forecast内容

要使用RecyclerView显示天气预报的内容 先在grandle里添加recyclerView的引用 implementation androidx.recyclerview:recyclerview:1.3.1创建一个RecyclerView控件&#xff1a;在布局文件中&#xff0c;添加一个RecyclerView控件&#xff0c;用于显示天气预报的列表。 这是一…...

jpa Page 1 of 0 containing UNKNOWN instances错误关于like问题的解决记录

导致这个问题的原因很多&#xff0c;这里记录一下我碰到的问题和解决方法。 网上有说时 pageNo要从0开始&#xff0c;我的不是这个问题。 在使用springboot jpa时&#xff0c;发现使用 t.ip like %?5% 语句&#xff0c;如果数据库记录的ip is null时&#xff0c;将查询不到该…...

Python实战之使用Python进行数据挖掘详解

一、Python数据挖掘 1.1 数据挖掘是什么&#xff1f; 数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中&#xff0c;通过算法&#xff0c;找出其中的规律、知识、信息的过程。Python作为一门广泛应用的编程语言&#xff0c;拥有丰富的数据挖掘库&#…...

scala 加载properties文件

利用java.util.Properties加载 import java.io.FileInputStream import java.util.Properties object LoadParameter {//动态获取properties文件可配置参数val props new Properties()def getParameter(s:String,filePath:String): String {props.load(new FileInputStream(f…...

备战秋招012(20230808)

文章目录 前言一、今天学习了什么&#xff1f;二、动态规划1.概念2.题目 总结 前言 提示&#xff1a;这里为每天自己的学习内容心情总结&#xff1b; Learn By Doing&#xff0c;Now or Never&#xff0c;Writing is organized thinking. 提示&#xff1a;以下是本篇文章正文…...

QT中定时器的使用

文章目录 概述步骤 概述 Qt中使用定时器大致有两种&#xff0c;本篇暂时仅描述使用QTimer实现定时器 步骤 // 1.创建定时器对象 QTimer *timer new QTimer(this);// 2.开启一个定时器&#xff0c;5秒触发一次 timer->start(5000); // 3.建立信号槽连接&am…...

【UE4】多人联机教程(重点笔记)

效果 1. 创建房间、搜索房间功能 2. 根据指定IP和端口加入游戏 步骤 1. 新建一个第三人称角色模板工程 2. 创建一个空白关卡&#xff0c;这里命名为“InitMap” 3. 新建一个控件蓝图&#xff0c;这里命名为“UMG_ConnectMenu” 在关卡蓝图中显示该控件蓝图 打开“UMG_Connec…...

【go】GIN参数重复绑定报错EOF问题

文章目录 1 问题描述2 解决&#xff1a;替换为ShouldBindBodyWith 1 问题描述 在 Gin 框架中&#xff0c;当多次调用 ShouldBind() 或 ShouldBindJSON() 方法时&#xff0c;会导致请求体的数据流被读取多次&#xff0c;从而出现 “EOF” 错误。 例如在api层绑定了参数&#x…...

关于MySQL中的binlog

介绍 undo log 和 redo log是由Inno DB存储引擎生成的。 在MySQL服务器架构中&#xff0c;分为三层&#xff1a;连接层、服务层&#xff08;server层&#xff09;、执行层&#xff08;存储引擎层&#xff09; bin log 是 binary log的缩写&#xff0c;即二进制日志。 MySQL…...

我维护电脑的方法

无论是学习还是工作&#xff0c;电脑都是IT人必不可少的重要武器&#xff0c;一台好电脑除了自身配置要经得起考验&#xff0c;后期主人对它的维护也是决定它寿命的重要因素&#xff01; 你日常是怎么维护你的“战友”的呢&#xff0c;维护电脑运行你有什么好的建议吗&#xff…...

AP51656 电流采样降压恒流驱动IC RGB PWM深度调光 LED电源驱动

产品描述 AP51656是一款连续电感电流导通模式的降压恒流源&#xff0c;用于驱动一颗或多颗串联LED 输入电压范围从 5 V 到 60V&#xff0c;输出电流 可达 1.5A 。根据不同的输入电压和 外部器件&#xff0c; 可以驱动高达数十瓦的 LED。 内置功率开关&#xff0c;采用电流采样…...

Python爬虫的解析(学习于b站尚硅谷)

目录 一、xpath  1.xpath插件的安装  2. xpath的基本使用  &#xff08;1&#xff09;xpath的使用方法与基本语法&#xff08;路径查询、谓词查询、内容查询&#xff08;使用text查看标签内容&#xff09;、属性查询、模糊查询、逻辑运算&#xff09;  &#xff08;2&a…...

python的virtualenv虚拟环境无法激活activate

目录 问题描述&#xff1a; 解决办法&#xff1a; 解决结果&#xff1a; 问题描述&#xff1a; PS D:\pythonProject\pythonProject\DisplayToolLibs\venv\Scripts> .\activate .\activate : 无法加载文件 D:\pythonProject\pythonProject\DisplayToolLibs\venv\Scripts\…...

uniapp中token操作:存储、获取、失效处理。

实现代码 存储token:uni.setStorageSync(token, res.data.result);获取token:uni.getStorageSync(token);清除token&#xff1a;uni.setStorageSync(token, ); 应用场景 在登录操作中&#xff0c;保存token pwdLogin() {....this.$axios.request({url: .....,method: post,p…...

乐鑫科技 2022 笔试面试题

岗位:嵌入式软件实习生。 个人情况:本科双非电子信息工程,硕士华五软件工程研一在读;本科做过一些很水的项目 ,也拿项目搞了一些奖,相对来说嵌入式方向比较对口。 时间线及面试流程 2021.04.02 笔试 题目分为选择题和编程题,选择题二十题,编程题两题; 选择题基本…...

实现UDP可靠性传输

文章目录 1、TCP协议介绍1.1、ARQ协议1.2、停等式1.3、回退n帧1.4、选择性重传 1、TCP协议介绍 TCP协议是基于IP协议&#xff0c;面向连接&#xff0c;可靠基于字节流的传输层协议 1、基于IP协议&#xff1a;TCP协议是基于IP协议之上传输的&#xff0c;TCP协议报文中的源端口IP…...

Zebec Protocol 将进军尼泊尔市场,通过 Zebec Card 推动地区金融平等

流支付正在成为一种全新的支付形态&#xff0c;Zebec Protocol 作为流支付的主要推崇者&#xff0c;正在积极的推动该支付方案向更广泛的应用场景拓展。目前&#xff0c;Zebec Protocol 成功的将流支付应用在薪酬支付领域&#xff0c;并通过收购 WageLink 将其纳入旗下&#xf…...

Qt--动态链接库的创建和使用

写在前面 在Qt的实际开发中&#xff0c;免不了使用和创建动态链接库&#xff0c;因此熟悉Qt中动态链接库的创建和使用对后续的库开发或使用是非常用必要的。 在之前的文章https://blog.csdn.net/SNAKEpc12138/article/details/126189926?spm1001.2014.3001.5501中已经对导入…...

设计模式十二:享元模式(Flyweight Pattern)

当我们需要创建大量相似对象时&#xff0c;享元模式可以帮助我们节省内存空间和提高性能。该模式通过共享相同的数据来减少对象的数量。 在享元模式中&#xff0c;有两种类型的对象&#xff1a;享元&#xff08;Flyweight&#xff09;和非享元&#xff08;Unshared Flyweight&a…...

【LeetCode】88. 合并两个有序数组 - 双指针

这里写自定义目录标题 2023-8-7 22:35:41 88. 合并两个有序数组 双指针 2023-8-7 22:35:41 class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int last m n ;while(n > 0){if(m > 0 && nums2[n-1] > nums1[m-1]){nums1[las…...

HarmonyOS应用开发的新机遇与挑战

HarmonyOS 4已经于2023年8月4日在HDC2023大会上正式官宣。对广大HarmonyOS开发者而言&#xff0c;这次一次盛大的大会。截至目前&#xff0c;鸿蒙生态设备已达7亿台&#xff0c;HarmonyOS开发者人数超过220万。鸿蒙生态充满着新机遇&#xff0c;也必将带来新的挑战。 HarmonyO…...

Qt中qmake、构建、运行、清理的区别

Qt 中默认的执行顺序&#xff1a;qmake--- 编译 --- 运行。 一、qmake qmake&#xff1a; 根据之前项目指南创建的项目文件 .pro&#xff0c;并且运行 qmake [qmake xx.pro]生成调试 [build-ttt-***-Debug] 或者发布 [build-ttt-***-Release] 目录&#xff08;这个是影子构建…...

【设计模式——学习笔记】23种设计模式——观察者模式Observer(原理讲解+应用场景介绍+案例介绍+Java代码实现)

文章目录 案例引入原始方案实现实现问题分析 介绍基础介绍登场角色 案例实现案例一类图实现分析 案例二类图实现 观察者模式在JDK源码的应用总结文章说明 案例引入 有一个天气预报项目&#xff0c;需求如下&#xff1a; 气象站可以将每天测量到的温度、湿度、气压等等以公告的…...

【奇葩瑞萨-004】RX系列单片机的GPIO初始化

RX系列单片机的GPIO初始化 与IO口相关的寄存器端口&#xff08;PORT&#xff09;寄存器端口功能控制&#xff08;MPC&#xff09;寄存器MPC.PmnFPS的设置过程MPC寄存器设置注意事项 端口Pmn的初始化不同端口模式下&#xff0c;PORT、MCP寄存器的配置顺序 感想&#xff1a;与STM…...

【Git】Git切换地址

如何切换git代码地址&#xff1f; 1、查看当前远程 url git remote -v执行命令后&#xff0c;可以看见当前有2个URL。 远程 URL 在一般情况下有两个&#xff0c;分别是 fetch 和 push。 fetch URL 是用于从远程仓库获取最新版本的数据。当您运行 git fetch 命令时&#xf…...

elementUI点击当前行更改当前行状态(数据更新DOM不更新问题解决)

<template slot-scope"{row,$index}" slot"menu"><el-button v-if"row.editable" type"text" size"small" click"changeStatus(row,$index)">编辑</el-button><el-button v-else type"…...

哪家公司提供专业的网站建设/广州最新发布最新

阿里云分布式关系型数据库&#xff08;DRDS&#xff09; Distribute Relational Database Service&#xff08;DRDS&#xff09;是分布式关系型数据库&#xff0c;它主要是一种水平拆分、可平滑扩容、读写分离的在线分布式数据库服务。 DRDS在使用的过程中存在于我们的应用和数…...

网站建设商城/独立站建站需要多少钱

做了这么多年的数据分析和挖掘工作&#xff0c;一直都在思考一个问题&#xff0c;“互联网和金融&#xff0c;在数据挖掘上到底存在什么样的区别”。在对这个问题的摸索和理解过程中&#xff0c;发现数据挖掘本身包含很多层次。模型本身也是存在传统和时髦之分的。本文就想聊聊…...

贵阳做网站的大公司有哪些/引流黑科技app

ls /etc/sysconfig/network-scripts/ifcfg-* 列出所有的设备配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33 打开配置文件进行编辑&#xff0c;BOOTPROTO默认情况是dhcp动态获取的&#xff0c;改成static静态&#xff0c;再添加网关信息 BROADCAST192.168.1.255IPAD…...

长沙知名网站推广/seo优缺点

最近在网上看到一篇介绍android window的requestWindowFeature()的使用方法&#xff0c;共享出来大家学习学习 requestWindowFeature(Window.FEATURE_LEFT_ICON);setContentView(R.layout.dialog_activity);getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON,…...

如何选择佛山网站建设/淘宝客怎么做推广

1:http://blog.csdn.net/jjwwmlp456/article/details/45198423 2:http://blog.csdn.net/woshisap/article/details/6617118 搜索关键字&#xff1a;DateFormat.format...

淡水网站建设哪家便宜/seo教程免费分享

网上胡说八道&#xff0c;众说风云&#xff0c;感觉这篇还算靠谱点。 原文链接&#xff1a;http://blog.csdn.net/dog250/article/details/51809566 为什么大家看到这个以后总是会往MSS&#xff0c;TSO上联系呢&#xff1f;也许第一个解释这个的人是个高手&#xff0c;而且以MS…...