大数据之数据治理架构 —— Atlas

文章目录

        • 什么是数据治理?
        • 什么是 Atlas?
        • Atlas 的作用
        • Atlas 架构
          • Atlas 架构解析
        • Atlas 大数据集群搭建
          • JDK 与 Hadoop 搭建
          • MySQL 与 Hive 搭建
          • Zookeeper 与 HBase 搭建
          • Kafka 搭建
          • Solr 搭建
          • Atlas 搭建与集成
        • Atlas 启动
        • Hive 元数据导入
        • Atlas 模拟生成血缘依赖

什么是数据治理?

数据治理是一种组织和管理数据资源的过程,旨在确保数据的质量、安全性、可靠性、可访问性和合规性,以支持企业决策和运营需求。

数据治理涉及制定和执行数据管理策略、规则和流程,包括数据分类、数据质量管理、数据安全和隐私保护、数据共享和访问控制、数据存储和备份等方面。

数据治理通常需要跨部门合作,包括IT、业务和法务等部门,以确保数据资源在整个企业中的有效管理和利用。数据治理对于企业决策的准确性和效率至关重要,可以提高数据价值、减少风险和遵守法规要求。

什么是 Atlas?

Apache Atlas 是一组可伸缩和可扩展的核心基础治理服务——使企业能够有效且高效地满足其在 Hadoop 中的合规性要求,并允许与整个企业数据生态系统集成。

Atlas 为组织提供开放的元数据管理和治理功能,以构建其数据资产的目录,对这些资产进行分类和治理,并为数据科学家、分析师和数据治理团队提供围绕这些数据资产的协作能力。

Atlas 的作用

元数据类型和实例

  • 各种 Hadoop 和非 Hadoop 元数据的预定义类型
  • 能够为要管理的元数据定义新类型
  • 类型可以有原始属性、复杂属性、对象引用;可以继承自其他类型
  • 类型的实例,称为实体,捕获元数据对象的详细信息及其关系
  • 用于处理类型和实例的 REST API 允许更轻松的集成

分类

  • 能够动态创建分类,如 PII、EXPIRES_ON、DATA_QUALITY、SENSITIVE
  • 分类可以包括属性——比如 EXPIRES_ON 分类中的 expiry_date 属性
  • 实体可以与多个分类相关联,从而更容易发现和安全实施
  • 通过沿袭传播分类,自动确保分类在数据经过各种处理时遵循

血统

  • 直观的 UI 可在数据通过各种流程时查看数据沿袭
  • 用于访问和更新沿袭的 REST API

搜索/发现

  • 用于按类型、分类、属性值或自由文本搜索实体的直观 UI
  • 丰富的 REST API 可按复杂条件进行搜索
  • 用于搜索实体的类似 SQL 的查询语言 – 领域特定语言 (DSL)

安全和数据屏蔽

  • 元数据访问的细粒度安全性,支持对实体实例的访问和添加/更新/删除分类等操作的控制
  • 与 Apache Ranger 的集成可以根据与 Apache Atlas 中实体相关的分类对数据访问进行授权/数据屏蔽。例如:
    • 谁可以访问分类为 PII、敏感的数据
    • 客户服务用户只能看到归类为 NATIONAL_ID 的列的最后 4 位数字

Atlas 架构

Atlas 架构解析

底层:

Atlas 的最底层是通过 HBase 与 Solr 完成对 Atlas 组件的元数据存储。

Core 核心层:

  • Ingest / Export:Ingest 组件允许将元数据添加到 Atlas。同样,Export 组件公开 Atlas 检测到的元数据更改,并将其作为事件引发。消费者可以使用这些更改事件来实时响应元数据更改。

  • Type System 类型系统:Atlas 允许用户为他们想要管理的元数据对象定义模型。该模型由称为“类型”的定义组成。称为“实体”的“类型”实例代表了被管理的实际元数据对象。类型系统是一个允许用户定义和管理类型和实体的组件。开箱即用的 Atlas 管理的所有元数据对象(例如 Hive 表)都使用类型建模并表示为实体。

  • Graph Engine 图引擎:在内部,Atlas 使用图模型持久化它管理的元数据对象。这种方法提供了极大的灵活性,并能够有效地处理元数据对象之间的丰富关系。图形引擎组件负责 Atlas 类型系统的类型和实体之间的转换,以及底层图形持久化模型。除了管理图形对象外,图形引擎还为元数据对象创建适当的索引,以便可以有效地搜索它们。Atlas 使用 JanusGraph 来存储元数据对象。

Integration 消息传递层:

用户可以使用以下两种方法管理 Atlas 中的元数据。

  • Messaging 消息传递:用户可以选择使用基于 Kafka 的消息传递接口与 Atlas 集成。这对于将元数据对象与 Atlas 通信以及使用来自 Atlas 的元数据更改事件都非常有用,可以使用这些事件构建应用程序。如果希望使用与 Atlas 的耦合更松散的集成以实现更好的可伸缩性、可靠性等,则消息传递接口特别有用。Atlas 使用 Apache Kafka 作为通知服务器,用于挂钩和元数据通知事件的下游消费者之间的通信。事件由钩子和 Atlas 写入不同的 Kafka 主题。

  • API:Atlas 的所有功能都通过 REST API 公开给最终用户,该 API 允许创建、更新和删除类​​型和实体。它也是查询和发现 Atlas 管理的类型和实体的主要机制。

Metadata sources 元数据源层:

Atlas 支持与开箱即用的许多元数据源集成。目前,Atlas 支持从以下来源获取和管理元数据:

  • HBase
  • Hive
  • Sqoop
  • Storm
  • Kafka

集成意味着两件事:Atlas 本地定义元数据模型来表示这些组件的对象。Atlas 提供了一些组件来从这些组件中摄取元数据对象(在某些情况下以实时或批处理模式)。

Apps 应用层:

Atlas 管理的元数据被各种应用程序使用,以满足许多治理用例。

  • Atlas Admin UI:该组件是一个基于 Web 的应用程序,允许数据管理员和科学家发现和注释元数据。这里最重要的是搜索界面和类似 SQL 的查询语言,可用于查询 Atlas 管理的元数据类型和对象。管理 UI 使用 Atlas 的 REST API 来构建其功能。

  • 基于标签的策略:Apache Ranger是 Hadoop 生态系统的高级安全管理解决方案,与各种 Hadoop 组件广泛集成。通过与 Atlas 集成,Ranger 允许安全管理员定义元数据驱动的安全策略以实现有效治理。Ranger 是 Atlas 通知的元数据更改事件的消费者。

Atlas 大数据集群搭建

从 Atlas 的架构中,我们可以看出其涉及的大数据组件很多,例如:HBase、Solr、Hadoop、Kafka、Hive 等等,在正式搭建 Atlas 之前,我们需要先确保这些相关的组件都已经搭建完毕,且能够正常启动运行。

架构搭建计划如下:

服务名称 子服务 hadoop104服务器 hadoop105服务器 hadoop106服务器
Java JDK
HDFS NameNode
HDFS DataNode
HDFS SecondaryNameNode
Yarn Resourcemanager
Yarn NodeManager
HistoryServer JobHistoryServer
Zookeeper QuorumPeerMain
Kafka Kafka
HBase HMaster
HBase HRegionServer
Solr Jar
Hive Hive
MySQL MySQL
Atlas Atlas
JDK 与 Hadoop 搭建

参考我的这篇博客:Hadoop 完全分布式搭建(超详细)

启动服务后,相关节点运行如下图所示:

MySQL 与 Hive 搭建

参考我的这篇博客:Hive 搭建(将 MySQL 作为元数据库)

启动服务后,相关组件运行如下图所示:

MySQL 运行图

Hive 运行图

Zookeeper 与 HBase 搭建

参考我的这篇博客:HBase 分布式搭建

启动服务后,相关节点运行如下图所示:

Kafka 搭建

参考我的这篇博客:Kafka 搭建

启动服务后,相关节点运行如下图所示:

Solr 搭建

参考我的这篇博客:大数据之 Solr 集群搭建

选择任意一台主机地址,访问 Solr 的默认端口 8983 ,成功启动如下图所示:

Atlas 搭建与集成
  1. 解压压缩包
tar -zxvf apache-atlas-2.1.0-server.tar.gz -C /opt/module/# 修改名称
cd /opt/module
mv apache-atlas-2.1.0/ atlas
  1. 配置环境变量

使用命令 vi /etc/profile 编辑环境变量文件,添加如下参数:

#ATLAS_HOME
export ATLAS_HOME=/opt/module/atlas
export PATH=$PATH:$ATLAS_HOME/bin

相关路径注意修改成自己的,然后通过 source /etc/profile 使环境生效。

  1. Atlas 集成 HBase

Atlas 的底层是通过 HBase 去存储元数据的。

修改 Atlas 安装目录下的 conf/atlas-application.properties 配置文件,为 HBase 设置 Zookeeper 的连接地址。

atlas.graph.storage.hostname=hadoop104:2181,hadoop105:2181,hadoop106:2181

修改 Atlas 安装目录下的 atlas-env.sh 环境配置文件,设置 HBase 的目录。

export HBASE_CONF_DIR=/opt/module/hbase-2.0.5/conf
  1. Atlas 集成 Solr

修改 Atlas 安装目录下的 conf/atlas-application.properties 配置文件,为 Solr 设置 Zookeeper 的连接地址。

atlas.graph.index.search.solr.zookeeper-url=hadoop104:2181,hadoop105:2181,hadoop106:2181

创建 Solr 集合,因为在 Atlas 中是通过 Solr 来负责存储图形数据索引信息的,所以需要创建点、线(边缘)以及全文(图)索引。

# 创建点索引,设置 3 个分片以及两个副本
sudo -i -u solr solr create -c vertex_index -d /opt/module/atlas/conf/solr -shards 3 -replicationFactor 2# 创建线(边缘)索引,设置 3 个分片以及两个副本
sudo -i -u solr solr create -c edge_index -d /opt/module/atlas/conf/solr -shards 3 -replicationFactor 2# 创建全文(图)索引,设置 3 个分片以及两个副本
sudo -i -u solr solr create -c fulltext_index -d /opt/module/atlas/conf/solr -shards 3 -replicationFactor 2

创建完成后,我们可以在 Solr 的 WEB 界面中查看索引结构,如下所示:

在这里插入图片描述

  1. Atlas 集成 Kafka

修改 Atlas 安装目录下的 conf/atlas-application.properties 配置文件,为 Kafka 设置相关参数。

# 是否开启 atlas 的通知嵌入
atlas.notification.embedded=false# 指定 kafka 的 data 目录
atlas.kafka.data=/opt/module/kafka/data# 指定 kafka 的 zookeeper 连接地址
atlas.kafka.zookeeper.connect=hadoop104:2181,hadoop105:2181,hadoop106:2181/kafka# 指定 kafka 的连接地址
atlas.kafka.bootstrap.servers=hadoop104:9092,hadoop105:9092,hadoop106:9092
  1. Atlas Server 配置

修改 Atlas 安装目录下的 conf/atlas-application.properties 配置文件。

# 设置 atlas 的默认 WEB 访问地址
atlas.rest.address=http://hadoop104:21000# 每次启动 atlas 是否都进行初始化
atlas.server.run.setup.on.start=false# 为 atlas 绑定 zookeeper 地址
atlas.audit.hbase.zookeeper.quorum=hadoop104:2181,hadoop105:2181,hadoop106:2181
  1. Atlas 集成 Hive

修改 Atlas 安装目录下的 conf/atlas-application.properties 配置文件,在该文件末尾添加如下参数:

#########  Hive  Configuration ########
# 是否开启 hive 的自动同步测试
atlas.hook.hive.synchronous=false
# 重试次数
atlas.hook.hive.numRetries=3
# 最大队列大小
atlas.hook.hive.queueSize=10000
# 集群名称
atlas.cluster.name=primary

修改 Hive 的配置文件 hive-site.xml,配置钩子属性,如下所示:

	<property><name>hive.exec.post.hooks</name><value>org.apache.atlas.hive.hook.HiveHook</value></property>

安装 Hive 的 Atlas 钩子程序。

tar -zxvf apache-atlas-2.1.0-hive-hook.tar.gz -C /opt/module/

复制 Hive 钩子程序的文件夹到 Atlas 目录下。

cd /opt/module/apache-atlas-hive-hook-2.1.0cp -r ./* /opt/module/atlas/

接下来需要修改 Hive 的环境变量 hive-env.sh 配置文件。

cd $HIVE_HOME/conf/# 复制模板文件并改名
cp hive-env.sh.template hive-env.sh# 然后编辑复制的文件,在其中添加如下参数,指定 Hive 的 hook 目录
export HIVE_AUX_JARS_PATH=/opt/module/atlas/hook/hive

最后将 Atlas 配置文件目录下的 atlas-application.properties 文件拷贝到 Hive 中的 conf 目录下。

cp /opt/module/atlas/conf/atlas-application.properties $HIVE_HOME/conf/

Atlas 集群 Hive 完成。

Atlas 启动

从 Atlas 的设计架构中就可以看出,它的运行依附了许多组件,所以,在启动 Atlas 之前,我们需要先启动如下组件:

  • Hadoop
  • Zookeeper
  • Kafka
  • HBase
  • Solr

上述组件启动后,相关服务节点如下所示:

然后最终再启动 Atlas 服务。

# 启动 atlas
atlas_start.py# 停止 atlas
atlas_stop.py

首次启动需要大概五分钟左右,启动期间会频繁打印 . 符号,启动成功后,会出现如下提示:

并且使用 jps 命令,可以查看到 Atlas 进程:

但启动成功后,我们发现,还是无法访问 Atlas 的 WEB 界面,如下所示:

在这里插入图片描述

这是由于 Atlas 还在做初始化工作,还需要再耐心等待三四分钟,然后再次刷新,就看到了 Atlas 的登录界面:

在这里插入图片描述
默认的账号密码都是 admin

登录进入之后,Atlas 的基本界面如下所示:

在这里插入图片描述

Hive 元数据导入

我们可以通过 Atlas 提供的 Hive 钩子程序来直接进行首次元数据的同步,但在这之前,我们需要在 Hive 中创建一个表来进行模拟数据。

首先,我们进入 MySQL 中修改 Hive 的元数据库相关字段字符编码格式为 utf8,修改完成后,无需重启 MySQL 和 Hive 就能生效。

这一步的目的是避免后面在 Atlas 中查看中文字符时出现乱码情况。

# 切换到 Hive 的元数据库中
use metastore;# 修改字段注释字符集
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;#修改表注释字符集
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;# 修改分区表参数,以支持分区键能够用中文表示
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;# 修改索引注解
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

然后修改 Hive 的配置文件 hive-site.xml,设置 JDBC 的连接参数,如下所示:

        <property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://hadoop104:3306/metastore?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</value></property>

进入 Hive 中,创建测试表。

drop table if exists student;
create table student(
id int comment '学号',
name string comment '姓名',
age int comment '年龄',
sex string comment '性别')
row format delimited fields terminated by '\t'; # 插入一些模拟数据
insert into student values(1,"张三",20,"男"),(2,"李四",20,"男"),(3,"王五",21,"男"),(4,"张梅",20,"女"),(5,"王甜甜",21,"女");

插入后数据如下所示:

字符编码显示正常:

下面我们就可以通过运行 Atlas 提供的 Hive 钩子程序来进行首次元数据的导入了。

# 进入 Atlas 的安装目录
cd /opt/module/atlas# 进入我们拷贝来的 Hive 的 hook-bin 目录
cd /hook-bin

直接运行该脚本文件 import-hive.sh

运行后会提示输入 Atlas 的账号与密码,默认都是 admin

导入完成后会出现 Hive Meta Data imported successfully!!! 提示,表示导入成功。

导入的时长和元数据量大小有关,后续 Hive 的元数据 Atlas 都会自动更新同步,无需再次执行该钩子程序。

我们打开 Atlas 的 WEB 界面,查看导入的元数据资产信息,点击右上角的统计标志。

在这里插入图片描述

然后就会发现我们的数据资产,显然我们的元数据已经首次同步完成了。

Atlas 模拟生成血缘依赖

模拟创建两张表。

  1. 订单表
CREATE TABLE dwd_order_info (
`id` STRING COMMENT '订单号',
`final_amount` DECIMAL(16,2) COMMENT '订单最终金额',
`order_status` STRING COMMENT '订单状态',
`user_id` STRING COMMENT '用户 id',
`payment_way` STRING COMMENT '支付方式',
`delivery_address` STRING COMMENT '送货地址',
`out_trade_no` STRING COMMENT '支付流水号',
`create_time` STRING COMMENT '创建时间',
`operate_time` STRING COMMENT '操作时间',
`expire_time` STRING COMMENT '过期时间',
`tracking_no` STRING COMMENT '物流单编号',
`province_id` STRING COMMENT '省份 ID',
`activity_reduce_amount` DECIMAL(16,2) COMMENT '活动减免金额',
`coupon_reduce_amount` DECIMAL(16,2) COMMENT '优惠券减免金额',
`original_amount` DECIMAL(16,2) COMMENT '订单原价金额',
`feight_fee` DECIMAL(16,2) COMMENT '运费',
`feight_fee_reduce` DECIMAL(16,2) COMMENT '运费减免'
) COMMENT '订单表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
  1. 地区表
CREATE TABLE dim_base_province (
`id` STRING COMMENT '编号',
`name` STRING COMMENT '省份名称',
`region_id` STRING COMMENT '地区 ID',
`area_code` STRING COMMENT '地区编码',
`iso_code` STRING COMMENT 'ISO-3166 编码,供可视化使用',
`iso_3166_2` STRING COMMENT 'IOS-3166-2 编码,供可视化使用'
) COMMENT '省份表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

模拟数据下载:数据治理-模拟数据下载

数据导入:

load data local inpath '/opt/software/base_province.txt' into table dwd_order_info;load data local inpath '/opt/software/order_info.txt' into table dim_base_province;

下面来建立一张需求表,用于保存订单表与地区表的合并分析结果。

CREATE TABLE `ads_order_by_province` (
`dt` STRING COMMENT '统计日期',
`province_id` STRING COMMENT '省份 id',
`province_name` STRING COMMENT '省份名称',
`area_code` STRING COMMENT '地区编码',
`iso_code` STRING COMMENT '国际标准地区编码',
`iso_code_3166_2` STRING COMMENT '国际标准地区编码',
`order_count` BIGINT COMMENT '订单数',
`order_amount` DECIMAL(16,2) COMMENT '订单金额'
) COMMENT '各省份订单统计'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

执行需求,统计各个省份的订单量以及金额:

insert into table ads_order_by_province 
select'2021-08-30' dt,bp.id,bp.name,bp.area_code,bp.iso_code,bp.iso_3166_2,count(*) order_count,sum(oi.final_amount) order_amount
from dwd_order_info oi
left join dim_base_province bp 
on oi.province_id=bp.id
group by bp.id,bp.name,bp.area_code,bp.iso_code,bp.iso_3166_2;

运行完成后,我们进入 Atlas 查看表的血缘关系:

  1. 查看数据字典

  1. 查看表

  1. 查看表的血缘关系

所以说呢,Atlas 就是做这么一个事情,通过对数据仓库的监控,生成十分详细的血缘依赖图,能够对你执行的操作进行增量同步,数据资产清晰可见,适合在大型项目中使用,部署过程有点繁琐。


查看全文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/2231584.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章:

大数据之数据治理架构 —— Atlas

文章目录什么是数据治理?什么是 Atlas?Atlas 的作用Atlas 架构Atlas 架构解析Atlas 大数据集群搭建JDK 与 Hadoop 搭建MySQL 与 Hive 搭建Zookeeper 与 HBase 搭建Kafka 搭建Solr 搭建Atlas 搭建与集成Atlas 启动Hive 元数据导入Atlas 模拟生成血缘依赖什么是数据治……

全能PDF:Pdfium.Net SDK 2023-03-18 Crack

Pdfium.Net SDK 是领先的 .Net 库,用于生成、操作和查看可移植文档格式的文件。我们提供高级 c# / VB.Net API,用于在 WEB 服务器或任何其他服务器系统上动态创建 pdf,并在现有桌面或 WEB 应用程序中实现“另存为 PDF”功能。 入门&#xff1……

前端、后端和全栈到底不该学什么

1、前言
在职业规划咨询过程中经常会被问到这样的问题:
老师,我是该深入钻研专精一门,走技术大牛路线,还是所有都要精通,做一个全栈工程师?
类似问题的变种还有,老师我是不是该30岁最迟35岁就要转管理了,是不是技术年龄大了就没有优势,精力跟不上了?
这是一个从业……

前端到底是求职者的乐士还是日渐成为烫手的山芋?

web前端技术是近年来一个新兴职业,是伴随着web兴起而细分进去的行业。web前端技术是由网页制作演变而来的,有鲜明的时代特性,Web前端在国内乃至国际上真正开始受到重视的时间不超过10年。
既有sass/gulp/angular/react/vue等技术万花筒的大放……

程序员的简历该怎么写?

一个学生辞职了,约我吃饭。
他说,老师,最近投了很多简历,就一个小公司回复了;
面试过了,但我不想去,能不能帮我分析分析,我现在该怎么办啊?
他的情况我了解&#xff0……

使用flex进行网易云音乐界面构建和布局解析

1.为什么要用flex进行webapp布局
第一,float布局 需要清除浮动,很麻烦。
第二,绝对定位需要考虑位置和空间占位
第三,元素垂直水平居中问题。
2.网易云音乐首页分析 3.啥也别说,直接上代码
先来一个html,
<!D……

起点没有选对,想找好的前端工作只能越找越累

到底什么才是一份好的前端工作?
自从开始做咨询,就不断有人问我:
“老师,前端这个行业行业怎么样啊?有发展吗?”
或者是:
“老师,做IT,算不算一份好工作啊&#xff1……

2_Linux高级存储管理

2_Linux高级存储管理1、逻辑卷1.1、lvm设备建立1.2、lvm拉伸1.3、lvm缩减1.4、缩减步骤1.5、lvm删除2、vdo(Virtual Data Optimize)1、逻辑卷 LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的存储卷&am……

找一份好的前端工作,起点很重要

一、到底什么才是一份好的前端工作?
自从开始做咨询,就不断有人问我:
“老师,前端这个行业行业怎么样啊?有发展吗?”
或者是:
“老师,做IT,算不算一份好工作啊&#……

使用flex进行网易云音乐界面构建和布局解析(2)

前面我们通过[《css布局简史与决胜未来的第四代css布局技术》](https://segmentfault.com/a/1190000015782763)了解了css布局发展史和未来,下面,我们通过[《使用flex进行网易云音乐界面构建和布局解析》](https://segmentfault.com/a/1190000015846688)了……

Java 进阶(15)线程安全集合

CopyOnWriteArrayList
线程安全的ArrayList,加强版读写分离。
写有锁,读⽆锁,读写之间不阻塞,优于读写锁。
写⼊时,先copy⼀个容器副本、再添加新元素,最后替换引⽤。
使⽤⽅式与ArrayList⽆异。
示例……

HR:面试官最爱问的linux问题,看看你能答对多少

文章目录摘要Linux的文件系统是什么样子的?如何访问和管理文件和目录?如何在Linux中查看和管理进程?如何使用Linux命令行工具来查看系统资源使用情况?如何配置Linux系统的网络设置?如何使用Linux的cron任务调度器来执行……

vscode开发常用的工具栏选项,查看源码技巧以及【vscode常用的快捷键】

一、开发常用的工具栏选项
1、当前打开的文件快速在左侧资源树中定位: 其实打开了当前的文件已经有在左侧资源树木定位了,只是颜色比较浅 2、打开太多文件的时候,可以关闭 3、设置查看当前类或文件的结构 OUTLINE
相当于idea 查看当前类或接……

数据要素化条件之一:原始性

随着技术的发展,计算机不仅成为人类处理信息的工具,而且逐渐地具有自主处理数据的能力,出现了替代人工的数据智能技术。数据智能的大规模使用需要关于同一分析对象或同一问题的、来源于不同数据源的海量数据。这种数据必须是针对特定对象的记……

【面试题 高逼格利用 类实现加法】编写代码, 实现多线程数组求和.

编写代码, 实现多线程数组求和.关键1. 数组的初始化关键2. 奇偶的相加import java.util.Random;public class Thread_2533 {public static void main(String[] args) throws InterruptedException {// 记录开始时间long start System.currentTimeMillis();// 1. 给定一个很长的……

一个python训练

美国:28:麻省理工学院,斯坦福大学,哈佛大学,加州理工学院,芝加哥大学,普林斯顿大学,宾夕法尼亚大学,耶鲁大学,康奈尔大学,哥伦比亚大学,密歇根大学安娜堡分校,约翰霍普金斯大学,西北大学,加州大学伯克利分校,纽约大学,加州大学洛杉矶分校,杜克大学,卡内基梅隆大学,加州大学圣地……

Mybatis03学习笔记

目录 使用注解开发
设置事务自动提交
mybatis运行原理
注解CRUD
lombok使用(偷懒神器,大神都不建议使用)
复杂查询环境(多对一)
复杂查询环境(一对多)
动态sql环境搭建
动态sql常用标签……

设置或取得c# NumericUpDown 编辑框值的方法,(注意:不是Value值)

本人在C#开发中使用到了NumericUpDown控件,但是发现该控件不能直接控制显示值,经研究得到下面的解决办法
NumericUpDown由于是由多个控件组合而来的控件,其中包含一个类似TextBox的控件,若想取得或改变其中的值要使用如下方法
N……

使用NPOI 技术 的SetColumnWidth 精确控制列宽不能成功的解决办法(C#)

在使用NPOI技术开发自动操作EXCEL软件时遇到不能精确设置列宽的问题。

ISheet sheet1 hssfworkbook.CreateSheet("Sheet1");
sheet1.SetColumnWidth(0, 50 * 256); // 在EXCEL文档中实际列宽为49.29
sheet1.SetColumnWidth(1, 100 * 256); // 在EXCEL文……

Mysql 数据库zip版安装时basedir datadir 路径设置问题,避免转义符的影响

本人在开发Mysql数据库自动安装程序时遇到个很奇怪的问题,其中my.ini的basedir 的路径设置是下面这样的:
basedir d:\测试\test\mysql
但是在使用mysqld安装mysql服务时老是启动不了,报1067错误,后来查看window事件发现一个独特……

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注