文章目录
什么是数据治理?
数据治理是一种组织和管理数据资源的过程,旨在确保数据的质量、安全性、可靠性、可访问性和合规性,以支持企业决策和运营需求。
数据治理涉及制定和执行数据管理策略、规则和流程,包括数据分类、数据质量管理、数据安全和隐私保护、数据共享和访问控制、数据存储和备份等方面。
数据治理通常需要跨部门合作,包括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 搭建与集成
- 解压压缩包
tar -zxvf apache-atlas-2.1.0-server.tar.gz -C /opt/module/# 修改名称
cd /opt/module
mv apache-atlas-2.1.0/ atlas
- 配置环境变量
使用命令 vi /etc/profile
编辑环境变量文件,添加如下参数:
#ATLAS_HOME
export ATLAS_HOME=/opt/module/atlas
export PATH=$PATH:$ATLAS_HOME/bin
相关路径注意修改成自己的,然后通过 source /etc/profile
使环境生效。
- 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
- 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 界面中查看索引结构,如下所示:
- 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
- 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
- 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 的登录界面:
登录进入之后,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&useUnicode=true&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 模拟生成血缘依赖
模拟创建两张表。
- 订单表
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';
- 地区表
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 查看表的血缘关系:
- 查看数据字典
- 查看表
- 查看表的血缘关系
所以说呢,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”功能。 入门࿱……
前端、后端和全栈到底不该学什么
1、前言
在职业规划咨询过程中经常会被问到这样的问题:
老师,我是该深入钻研专精一门,走技术大牛路线,还是所有都要精通,做一个全栈工程师?
类似问题的变种还有,老师我是不是该30岁最迟35岁就要转管理了,是不是技术年龄大了就没有优势,精力跟不上了?
这是一个从业……
前端到底是求职者的乐士还是日渐成为烫手的山芋?
web前端技术是近年来一个新兴职业,是伴随着web兴起而细分进去的行业。web前端技术是由网页制作演变而来的,有鲜明的时代特性,Web前端在国内乃至国际上真正开始受到重视的时间不超过10年。
既有sass/gulp/angular/react/vue等技术万花筒的大放……
程序员的简历该怎么写?
一个学生辞职了,约我吃饭。
他说,老师,最近投了很多简历,就一个小公司回复了;
面试过了,但我不想去,能不能帮我分析分析,我现在该怎么办啊?
他的情况我了解࿰……
使用flex进行网易云音乐界面构建和布局解析
1.为什么要用flex进行webapp布局
第一,float布局 需要清除浮动,很麻烦。
第二,绝对定位需要考虑位置和空间占位
第三,元素垂直水平居中问题。
2.网易云音乐首页分析 3.啥也别说,直接上代码
先来一个html,
<!D……
起点没有选对,想找好的前端工作只能越找越累
到底什么才是一份好的前端工作?
自从开始做咨询,就不断有人问我:
“老师,前端这个行业行业怎么样啊?有发展吗?”
或者是:
“老师,做IT,算不算一份好工作啊࿱……
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常用标签……
编程日记2023/4/16 14:55:50
设置或取得c# NumericUpDown 编辑框值的方法,(注意:不是Value值)
本人在C#开发中使用到了NumericUpDown控件,但是发现该控件不能直接控制显示值,经研究得到下面的解决办法
NumericUpDown由于是由多个控件组合而来的控件,其中包含一个类似TextBox的控件,若想取得或改变其中的值要使用如下方法
N……
编程日记2023/4/16 14:55:46
使用NPOI 技术 的SetColumnWidth 精确控制列宽不能成功的解决办法(C#)
在使用NPOI技术开发自动操作EXCEL软件时遇到不能精确设置列宽的问题。
如
ISheet sheet1 hssfworkbook.CreateSheet("Sheet1");
sheet1.SetColumnWidth(0, 50 * 256); // 在EXCEL文档中实际列宽为49.29
sheet1.SetColumnWidth(1, 100 * 256); // 在EXCEL文……
编程日记2023/4/16 14:55:46
Mysql 数据库zip版安装时basedir datadir 路径设置问题,避免转义符的影响
本人在开发Mysql数据库自动安装程序时遇到个很奇怪的问题,其中my.ini的basedir 的路径设置是下面这样的:
basedir d:\测试\test\mysql
但是在使用mysqld安装mysql服务时老是启动不了,报1067错误,后来查看window事件发现一个独特……
编程日记2023/4/16 14:55:45