Apache Atlas 2.0 安装部署详解
背景
环境配置
Atlas嵌入式Hbase与Solr的部署方式
Atlas独立部署
1、Atlas独立编译
2、Kafka,Zookeeper安装
3、Hadoop安装
3.1、解压
3.2 、查看本机hostname
3.3、修改 hadoop-env.sh 配置文件
3.4、修改 core-site.xml 配置文件
3.5、修改 hdfs-site.xml 配置文件
3.6、复制 mapred-site.xml 文件并修改
3.7、修改 yarn-site.xml 配置文件
3.8、修改 start-yarn.sh 和 stop-yarn.sh 文件,在文件开头添加如下信息
3.9、修改 start-dfs.sh 和 stop-dfs.sh 文件,在文件开头添加如下信息
3.10、hdfs格式化
3.11、配置系统环境变量
3.12、设置免密登陆
3.13、启动Hadoop
4、Hive安装
4.1、解压
4.2、配置系统环境变量
4.3、修改 hive-site.xml 配置文件
4.4、将MySQL驱动放到如下目录
4.5、Mysql创建hive库
4.6、初始化hive库
4.7、执行hive命令并测试
5、Hbase安装
5.1、解压
5.2、配置系统环境变量
5.3、修改 hbase-env.sh 配置文件
5.4、修改 hbase-site.xml 配置文件
5.5、启动Hbase
6、Solr安装
7、Atlas配置并启动
7.1、修改 atlas-env.sh 配置文件
7.2、修改 atlas-application.properties 配置文件
7.3、Atlas 与 Hive 集成
7.3.1、修改hive-site.xml
7.3.2、修改hive-env.sh
7.3.3、hook-hive文件
7.3.4、atlas-application.properties 复制文件到 Hive 的conf目录下
7.3.5、Hive批量导入工具
7.4、Atlas 与 Sqoop 集成
7.4.1、解压
7.4.2、配置系统环境变量
7.4.3、修改sqoop-env.sh配置文件
7.4.4、修改sqoop-site.xml 配置文件
7.4.5、hook-sqoop文件
7.4.6、atlas-application.properties 复制文件到 Sqoop 的conf目录下
7.4.7、将/hook/sqoop/*.jar 复制到 Sqoop 的lib目录下
7.4.8、将数据库的驱动放到 Sqoop 的lib目录下
7.5、启动Atlas
7.5、使用Sqoop将DB中的数据导入Atlas
背景
公司在做一个数据治理的售前,选型为Apache Atlas 和 Azure Data Catalog,所以让我拥有了一次研究Apache Atlas的机会。之前从未接触过Atlas,发现网上相关的资料还不是很多,因此记录我在本地搭建Atlas的过程,供各位指正。
在搭建过程中,我分别使用了两种不同的搭建方式:
1、Atlas使用嵌入式Hbase与Solr的部署方式
2、Atlas独立部署(针对环境中已经存在了Hbase、Solr、Zookeeper以及Kafka的情况)
同时各位也可以参考Atlas官方:http://atlas.apache.org.
环境配置
1、Apache Atlas 2.0
2、JDK 1.8.0_251
3、Maven 3.6.3
4、Git
如果是使用Atlas内嵌Hbase与Solr的部署方式,只需上面的环境配置即可。
以下为独立部署时的配置:
5、Hadoop 3.1.1
6、Hbase 2.2.2
7、Hive 3.1.0
8、Solr 7.7.2
9、Zookeeper 3.4.14
10、Kafka 2.0.0
11、Sqoop 1.4.6
注意:Maven的版本需要3.5.0及以上版本,JDK需要Java 8 (Update 151)及以上版本,不然在报如下错误信息:
** MAVEN VERSION ERROR ** Maven 3.5.0 or above is required. See https://maven.apache.org/install.html
** JAVA VERSION ERROR ** Java 8 (Update 151) or above is required.
如果使用Java 9的话,会有如下警告:
** JAVA VERSION WARNING ** Java 9 and above has not been tested with Atlas.
Atlas嵌入式Hbase与Solr的部署方式
1、下载源码并编译
用户从Atlas官网下载Apache Atlas 2.0版本的源码 将源码 apache-atlas-2.0.0-sources.tar.gz 上传至对应的Linux服务器,并解压
tar -zxf apache-atlas-2.0.0-sources.tar.gz
配置 Maven 镜像仓库
vi $MAVEN_HOME/conf/settings.xml
在 标签中填加如下配置信息,并保存退出
repo1
central
Human Readable Name for this Mirror.
https://repo1.maven.org/maven2/
repo2
central
Human Readable Name for this Mirror.
https://repo2.maven.org/maven2/
进入到解压后的 Atlas 的根目录下 执行Maven编译打包
export MAVEN_OPTS="-Xms2g -Xmx2g"
mvn clean -DskipTests package -Pdist,embedded-hbase-solr
在编译过程中可能会发生编译中断的情况,请使用 mvn 命令进行多次编译,直至编译成功
使用此方式编译部署后,Hbase 和 Solr 服务将与Apache Atlas服务器一起启动 / 停止
此种方式仅用于单节点开发,不用于生产
2、Atlas 启动
Atlas编译成功后,会将编译好的文件放置在如下目录中
$Atlas_Source_Home/distro/target
tar -xzvf apache-atlas-{project.version}-server.tar.gz
cd atlas-{project.version}
启动 Atlas
export MANAGE_LOCAL_HBASE=true (设置使用内嵌的zk和hbase)
export MANAGE_LOCAL_SOLR=true (设置使用内嵌的solr)
bin/atlas_start.py
启动完成后,可以使用如下命令验证
curl -u admin:admin http://localhost:21000/api/atlas/admin/version
{"Description":"Metadata Management and Data Governance Platform over Hadoop","Version":"1.0.0","Name":"apache-atlas"}
Atlas 初始化用户名密码为 admin
如果发生异常,请查看 Atlas 的日志
cat logs/application.log
在 Web 访问 Atlas
使用如下命令停止 Atlas
bin/atlas_stop.py
另外官网说可以使用
bin/quick_start.py
导入简单示例,但是我在本地报错,原因暂未找到
Atlas独立部署
1、Atlas独立编译
修改atlas源码工程的pom.xml,将hbase zookeeper hive等依赖的版本修改成自己环境中一致的版本
vim apache-atlas-sources-2.0.0/pom.xml
3.4.14
2.2.2
7.7.2
保存退出后,进入到 apache-atlas-sources-2.0.0 目录下,执行如下编译语句
mvn clean -DskipTests install
tar -xzvf apache-atlas-{project.version}-server.tar.gz
cd atlas-{project.version}
2、Kafka,Zookeeper安装
如果安装了docker,可以直接使用docker进行部署,使用镜像如下:
wurstmeister/kafka:2.11-2.0.0
zookeeper:3.4.14
3、Hadoop安装
下载:hadoop-3.1.1.tar.gz
3.1、解压
tar -zxvf hadoop-3.1.1.tar.gz
mkdir -p data/hadoop_repo
cd hadoop-3.1.1/
3.2 、查看本机hostname
3.3、修改 hadoop-env.sh 配置文件
vim etc/hadoop/hadoop-env.sh
export JAVA_HOME=/software/jdk/jdk1.8.0_251
3.4、修改 core-site.xml 配置文件
vim etc/hadoop/core-site.xml
fs.defaultFS
hdfs://node1:9000
hadoop.tmp.dir
/software/hadoop/data/hadoop_repo
3.5、修改 hdfs-site.xml 配置文件
vim etc/hadoop/hdfs-site.xml
dfs.replication
1
3.6、复制 mapred-site.xml 文件并修改
cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
vim etc/hadoop/mapred-site.xml
mapreduce.framework.name
yarn
3.7、修改 yarn-site.xml 配置文件
vim etc/hadoop/yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.env-whitelist
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
3.8、修改 start-yarn.sh 和 stop-yarn.sh 文件,在文件开头添加如下信息
vim sbin/start-yarn.sh
vim sbin/stop-yarn.sh
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
3.9、修改 start-dfs.sh 和 stop-dfs.sh 文件,在文件开头添加如下信息
vim sbin/start-dfs.sh
vim sbin/stop-dfs.sh
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
3.10、hdfs格式化
hdfs使用前需要进行格式化(和格式化磁盘类似):不要频繁执行,如果出错,把hadoop_repo目录删除,在执行格式化
确保路径 /software/hadoop/data/hadoop_repo 存在
bin/hdfs namenode -format
3.11、配置系统环境变量
vim /etc/profile
#Hadoop
export HADOOP_HOME=/software/hadoop/hadoop-3.1.1
export HADOOP_COMMON_LIB_NATIVE_DIR=/software/hadoop/hadoop-3.1.1/lib/native
export HADOOP_OPTS="-Djava.library.path=/software/hadoop/hadoop-3.1.1/lib"
export PATH=$PATH:/software/hadoop/hadoop-3.1.1/sbin:/software/hadoop/hadoop-3.1.1/bin
保存退出并使之生效
source /etc/profile
3.12、设置免密登陆
ssh localhost
如果需要输入密码,则需要设置免密登陆
ssh-keygen -t rsa
三次回车
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3.13、启动Hadoop
sbin/start-all.sh
访问:http://192.168.199.11:8088
4、Hive安装
下载:apache-hive-3.1.0-bin.tar.gz
4.1、解压
tar -zxvf apache-hive-3.1.0-bin.tar.gz
cd apache-hive-3.1.0-bin/
4.2、配置系统环境变量
vim /etc/profile
#Hive
export HIVE_HOME=/software/hive/apache-hive-3.1.0-bin
export PATH=$HIVE_HOME/bin:$PATH
保存退出并使之生效
source /etc/profile
4.3、修改 hive-site.xml 配置文件
cp conf/hive-default.xml.template conf/hive-site.xml
vim conf/hive-site.xml
javax.jdo.option.ConnectionUserName
root
javax.jdo.option.ConnectionPassword
root
javax.jdo.option.ConnectionURL
jdbc:mysql://192.168.199.11:3306/hive
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
4.4、将MySQL驱动放到如下目录
$Hive_Home/lib
4.5、Mysql创建hive库
4.6、初始化hive库
cd bin/
schematool -dbType mysql -initSchema
4.7、执行hive命令并测试
5、Hbase安装
下载:hbase-2.2.2-bin.tar.gz
5.1、解压
tar -zxvf hbase-2.2.2-bin.tar.gz
cd hbase-2.2.2/
5.2、配置系统环境变量
vim /etc/profile
#Hbase
HBASE_HOME=/software/hbase/hbase-2.2.2
export PATH=${HBASE_HOME}/bin:${PATH}
保存退出并使之生效
source /etc/profile
5.3、修改 hbase-env.sh 配置文件
vim conf/hbase-env.sh
export JAVA_HOME=/software/jdk/jdk1.8.0_251
5.4、修改 hbase-site.xml 配置文件
vim conf/hbase-site.xml
hbase.rootdir
hdfs://node1:9000/hbase
hbase.zookeeper.property.clientPort
2181
Property from ZooKeeper'sconfig zoo.cfg. The port at which the clients will connect.
hbase.tmp.dir
/software/hbase/data
hbase.zookeeper.quorum
node1
hbase.cluster.distributed
true
The mode the cluster will be in. Possible values are
false: standalone and pseudo-distributed setups with managed Zookeeper
true: fully-distributed with unmanaged Zookeeper Quorum (see hbase-env.sh)
hbase.unsafe.stream.capability.enforce
false
5.5、启动Hbase
bin/start-hbase.sh
查看Hbase的两个服务是否全部启动 如果两个服务有未启动成功的,请查看具体日志
cat logs/hbase-root-master-node1.log
6、Solr安装
下载:solr-7.7.2.tgz
6.1、解压
tar -zxvf solr-7.7.2.tgz
cd solr-7.7.2/
6.2、配置并启动Solr
mkdir apache-atlas-conf
将$Atlas_Home下的solr conf复制到 $Solr_Home/apache-atlas-conf 目录下
cp -r /software/atlas/apache-atlas-sources-2.0.0/distro/target/apache-atlas-2.0.0-server/apache-atlas-2.0.0/conf/solr/ /software/solr/solr-7.7.2/apache-atlas-conf/
启动服务
./bin/solr start -c -z -p 8983
创建 collection
bash ./bin/solr create -c vertex_index -d ./apache-atlas-conf -shards 2 -replicationFactor 2 -force
bash ./bin/solr create -c edge_index -d ./apache-atlas-conf -shards 2 -replicationFactor 2 -force
bash ./bin/solr create -c fulltext_index -d ./apache-atlas-conf -shards 2 -replicationFactor 2 -force
7、Atlas配置并启动
7.1、修改 atlas-env.sh 配置文件
vim conf/atlas-env.sh
export HBASE_CONF_DIR=/software/hbase/hbase-2.2.2/conf
7.2、修改 atlas-application.properties 配置文件
vim conf/atlas-application.properties
atlas.graph.storage.backend=hbase
atlas.graph.storage.hbase.table=atlas
atlas.graph.storage.hostname=localhost:2181
#Solr
#Solr cloud mode properties
atlas.graph.index.search.solr.mode=cloud
atlas.graph.index.search.solr.zookeeper-url=localhost:2181
atlas.graph.index.search.solr.zookeeper-connect-timeout=60000
atlas.graph.index.search.solr.zookeeper-session-timeout=60000
atlas.graph.index.search.solr.wait-searcher=true
######### Notification Configs #########
atlas.kafka.zookeeper.connect=localhost:2181/kafka
atlas.kafka.bootstrap.servers=localhost:9092
atlas.kafka.zookeeper.session.timeout.ms=60000
atlas.kafka.zookeeper.connection.timeout.ms=30000
atlas.kafka.zookeeper.sync.time.ms=20
atlas.kafka.auto.commit.interval.ms=1000
atlas.kafka.hook.group.id=atlas
######### Entity Audit Configs #########
atlas.audit.zookeeper.session.timeout.ms=60000
atlas.audit.hbase.zookeeper.quorum=node1:2181
######### Hive Hook Configs #######
atlas.hook.hive.synchronous=false
atlas.hook.hive.numRetries=3
atlas.hook.hive.queueSize=10000
######### Sqoop Hook Configs #######
atlas.hook.sqoop.synchronous=false
atlas.hook.sqoop.numRetries=3
atlas.hook.sqoop.queueSize=10000
storage.cql.protocol-version=3
storage.cql.local-core-connections-per-host=10
storage.cql.local-max-connections-per-host=20
storage.cql.local-max-requests-per-connection=2000
storage.buffer-size=1024
atlas.ui.editable.entity.types=*
7.3、Atlas 与 Hive 集成
7.3.1、修改hive-site.xml
vim hive-site.xml
hive.exec.post.hooks
org.apache.atlas.hive.hook.HiveHook
7.3.2、修改hive-env.sh
vim hive-env.sh
export HIVE_AUX_JARS_PATH=/software/atlas/apache-atlas-sources-2.0.0/distro/target/apache-atlas-2.0.0-bin/apache-atlas-2.0.0/hook/hive
7.3.3、hook-hive文件
复制 apache-atlas-sources-2.0.0/distro/target/apache-atlas-hive-hook-${project.version}/hook/hive 全部内容到 apache-atlas-sources-2.0.0/distro/target/apache-atlas-2.0.0-server/apache-atlas-2.0.0/hook/hive
7.3.4、atlas-application.properties 复制文件到 Hive 的conf目录下
7.3.5、Hive批量导入工具
Usage 1: /hook-bin/import-hive.sh
Usage 2: /hook-bin/import-hive.sh [-d OR --database ] [-t OR --table ]
Usage 3: /hook-bin/import-hive.sh [-f ]
File Format:
database1:tbl1
database1:tbl2
database2:tbl1
如果在 hook-bin 目录下未找到 import-hive.sh 可以将下面路径下的文件复制过来 apache-atlas-sources-2.0.0/addons/hive-bridge/src/bin/import-hive.sh
7.4、Atlas 与 Sqoop 集成
下载:sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
7.4.1、解压
tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
cd sqoop-1.4.6.bin__hadoop-2.0.4-alpha/
7.4.2、配置系统环境变量
vim /etc/profile
#Sqoop
export SQOOP_HOME=/software/sqoop/sqoop-1.4.6.bin__hadoop-2.0.4-alpha
export PATH=${SQOOP_HOME}/bin:$PATH
保存退出并使之生效
source /etc/profile
7.4.3、修改sqoop-env.sh配置文件
cp conf/sqoop-env-template.sh conf/sqoop-env.sh
export HADOOP_COMMON_HOME=/software/hadoop/hadoop-3.1.1
export HADOOP_MAPRED_HOME=/software/hadoop/hadoop-3.1.1
export HIVE_HOME=/software/hive/apache-hive-3.1.0-bin
7.4.4、修改sqoop-site.xml 配置文件
vim conf/sqoop-site.xml
sqoop.job.data.publish.class
org.apache.atlas.sqoop.hook.SqoopHook
7.4.5、hook-sqoop文件
复制 apache-atlas-sources-2.0.0/distro/target/apache-atlas-sqoop-hook-${project.version}/hook/sqoop全部内容到 apache-atlas-sources-2.0.0/distro/target/apache-atlas-2.0.0-server/apache-atlas-2.0.0/hook/sqoop
7.4.6、atlas-application.properties 复制文件到 Sqoop 的conf目录下
7.4.7、将/hook/sqoop/*.jar 复制到 Sqoop 的lib目录下
7.4.8、将数据库的驱动放到 Sqoop 的lib目录下
7.5、启动Atlas
bin/atlas_start.py
7.5、使用Sqoop将DB中的数据导入Atlas
sqoop import-all-tables --connect 'jdbc:sqlserver://192.168.199.11:1433;username=sa;password=Qq104105;database=TestDB' --hive-import --create-hive-table -m 1
参考文献: https://blog.csdn.net/coderblack/article/details/104283606/ https://www.jianshu.com/p/8dc3cb5266e3
你可能感兴趣的:(Apache Atlas 2.0 安装部署详解 Atlas自带Hbase/Solr部署 && 独立部署)
Squirrel: 通用SQL、NoSQL客户端
antui1957
安装配置数据库配置驱动配置连接如果你的工作中,需要使用到多个数据库,又不想在多种客户端之间切换来切换去。那么就需要找一款支持多数据库的客户端工具了。如果你要连接多个关系型数据库,你就可以使用NavicatPremium。但是如果你有使用到NOSQL(譬如HBase、MongoDB等),还是建议使用SquirrelSQLClient。1、安装下载地址:http://squirrel-sql.sour
pytest 的setup/teardown方法
weixin_44984098
服务器 运维
copy于凡晨丹心setup()和teardown()方法用于初始化和清理测试环境,可以保证测试用例的独立性。pytest的setup/teardown方法包括:模块级别(setup_module/teardown_module)、函数级别(setup_function/teardown_function)、类级别(setup_class/teardown_class)、方法级别(setup_me
Pytest 入门:测试函数与测试类详解
努力搬砖的咸鱼
掌握Pytest:从新手到专家 pytest python 自动化
概述在编写自动化测试时,了解如何组织和管理测试用例是至关重要的。Pytest提供了灵活的方式来定义测试函数和测试类,并支持多层次的设置(setup)和清理(teardown)机制,帮助你更高效地进行代码验证。本文将详细介绍测试函数和测试类的概念、定义、注意点以及实际操作示例,助你快速掌握这些基础知识。什么是测试函数?测试函数是最基本的测试单元,在Pytest中通过以test_开头的函数名来标识。每
【机器学习第四期(Python)】LightGBM 方法原理详解
WW、forever
机器学习原理及代码实现 机器学习 python 人工智能
LightGBM概述一、LightGBM简介二、LightGBM原理详解⚙️核心原理LightGBM的主要特点三、LightGBM实现步骤(Python)可调参数推荐完整案例代码(回归任务+可视化)参考LightGBM是由微软开源的基于梯度提升框架(GBDT)的机器学习算法,专为高性能、高效率设计,适用于大规模数据处理任务。它在准确率、训练速度和资源使用上都优于传统GBDT实现(如XGBoost)
Pytest测试框架(七):pytest 的setup/teardown方法
凡晨丹心
Python+pytest 软件测试 python
setup()和teardown()方法用于初始化和清理测试环境,可以保证测试用例的独立性。pytest的setup/teardown方法包括:模块级别(setup_module/teardown_module)、函数级别(setup_function/teardown_function)、类级别(setup_class/teardown_class)、方法级别(setup_method/tear
高性能AI核心板Z3588CV1:基于瑞芯微RK3588的旗舰级解决方案——8K视觉处理 · 6TOPS NPU算力 · 多场景边缘计算
九鼎创展科技
嵌入式硬件 边缘计算 arm开发 android
RK3588处理器技术细节计算单元CPU:4×
[email protected] (大核集群)4×
[email protected] (能效集群)支持ARMDynamIQ混合架构,可实现任务智能调度GPU:Mali-G610MP4,支持OpenGLES3.2/2.0/1.1、Vulkan1.28KVPU视频编解码:H.265/H.264/AV1格式,支持60fps实时处理NPU:6TOPS算力(INT
pytest学习和使用-pytest如何进行分布式测试?(pytest-xdist)
测试界晓晓
软件测试 pytest 学习 分布式 软件测试 功能测试 自动化测试 程序人生
1什么是分布式测试?在进行本文之前,先了解些基础知识,什么是分布式测试?分布式测试:是指通过局域网和Internet,把分布于不同地点、独立完成特定功能的测试计算机连接起来,以达到测试资源共享、分散操作、集中管理、协同工作、负载均衡、测试过程监控等目的的计算机网络测试。通俗的讲:分布式测试就是活太多,一个人干费时间,那就让多个人一起干,节省了资源和时间。2为什么要进行分布式测试?2.1场景1:自动
SpringMVC实战:从配置到JSON处理全解析
Cyanto
SpringMVC spring java
目录项目概述核心配置文件解析web.xml配置springmvc.xml配置控制器详解基本控制器示例请求处理方式获取请求参数返回JSON数据请求转发重定向视图解析与页面跳转项目结构说明关键知识点总结项目概述这是一个基于SpringMVC的Web应用示例,展示了如何配置SpringMVC环境、创建控制器以及处理不同类型的请求和响应。项目包含了以下核心功能:基本页面跳转请求参数处理JSON数据返回请求
如何搭建基于RK3588的边缘服务器集群?支持12个RK3588云手机
XMAIPC_Robot
ARM+FPGA AI服务器 服务器 运维
以下是基于RK3588搭建边缘服务器集群的完整实施方案,涵盖硬件选型、集群架构、软件部署及优化要点:️一、硬件集群架构设计节点基础配置核心单元:单节点采用RK3588核心板(4×
[email protected] +4×
[email protected] ),集成6TOPSNPU及Mali-G610GPU,支持LPDDR4X内存(4~32GB)及eMMC/SATA/TF卡多级存储611。扩展接口:通过100Pin
【无标题】获取独立按键值
五幺大师
51单片机
#include#include"Delay.h"/***@brief获取独立按键键码*@param无*@retval按下按键的键码,范围:0~4,无按键按下时返回值为0*/unsignedcharKey(){unsignedcharKeyNumber=0;if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);KeyNumber=1;}if(P3_0==0)
告别网络崩溃!手把手教你零基础部署本地DeepSeek-R1,解锁AI自由(附独家加速下载+全版本适配)
程序小武
网络 人工智能
使用Ollama部署本地DeepSeek-R1模型为什么要部署一个本地DeepSeek?在使用AI网站或App时遇到网络连接失败或网站本身问题,决定部署自己的本地DeepSeek。在如今这个数字化时代,AI网站和应用已经成为了我们日常生活中不可或缺的一部分,它们帮助我们提升效率、解决问题。然而,频繁遭遇网络连接问题或平台本身的不稳定,往往会带来不少困扰,尤其是当我们依赖这些工具来完成重要任务时,任
为什么要学习 next.js 框架 + Vercel 部署平台,因为我想把自己的 app 分享给别人。
waterHBO
学习 javascript 开发语言
前端开发太卷?不如给你的React换个“豪华座驾”和“F1赛道”**如果你像我一样,从create-react-app的时代一路走来,你一定经历过那种“甜蜜的烦恼”:React给了你一个超强的V8引擎,但造车剩下的所有事——从方向盘(路由)、底盘(项目结构)到导航系统(数据管理)——都得你自己撸。结果就是,每个项目开始前,你都在重复发明轮子,在Webpack的配置地狱里苦苦挣扎。好消息是,时代变了
C# 打造全能通讯调试工具:串口、TCP/IP、Modbus 一站式解决
威哥说编程
c# tcp/ip arm开发
在嵌入式系统、工业自动化、物联网以及各种通信设备调试过程中,调试工具的作用至关重要。无论是串口通讯、TCP/IP网络通信,还是更高级的Modbus协议,开发者都需要一个能够高效、稳定地进行数据传输调试和问题排查的工具。常见的通信调试工具如串口调试助手、Modbus工具等,都各自独立,给调试工作带来很多不便。本文将带你通过C#来实现一个全能的通讯调试工具,支持串口通信、TCP/IP网络通信以及Mod
关于Flutter中两种Widget的生命周期详解
Ever69
Flutter《葵花宝典》 flutter
目录一、StatelessWidget生命周期二、StatefulWidget生命周期1.创建阶段2.State初始化阶段3.构建阶段4.更新阶段5.销毁阶段三、核心对比与常见陷阱四、面试回答技巧以下是Flutter中两种核心Widget(StatelessWidget和StatefulWidget)生命周期的详细解释,结合关键方法和实际场景说明:一、StatelessWidget生命周期特点:不
Statement 和 PreparedStatement 详解
风起携月归
java JavaEE SQL python 数据库 开发语言
Statement和PreparedStatement详解文章目录Statement和PreparedStatement详解一、定义二、Statement三、PreparedStatement四、Statement和PreparedStatement的区别一、定义在Java数据库编程中,Statement和PreparedStatement是两种用于执行SQL语句的接口理解:在Java语句里执行S
3D打印+开源硬件:独立开发者的低成本创业秘籍
AI天才研究院
计算 AI大模型企业级应用开发实战 AI人工智能与大数据 3d 开源 ai
3D打印+开源硬件:独立开发者的低成本创业秘籍关键词:3D打印、开源硬件、低成本创业、独立开发者、快速原型、开源生态、硬件创新摘要:对于独立开发者而言,创业最大的痛点往往是“钱少、人少、试错成本高”。但近年来,3D打印技术的普及与开源硬件生态的成熟,正在彻底改变这一局面。本文将从“3D打印如何降低硬件制造门槛”“开源硬件如何提供免费设计资源”“两者如何结合实现‘创意-原型-产品’的快速闭环”三个核
Apache Gravitino 安装和配置指南
牧沛琚Immortal
ApacheGravitino安装和配置指南gravitino世界上最强大的数据目录服务,提供高性能、地理分布和联邦化的元数据湖。项目地址:https://gitcode.com/gh_mirrors/gra/gravitino1.项目基础介绍和主要的编程语言项目基础介绍ApacheGravitino是一个高性能、地理分布式和联邦化的元数据湖。它直接管理不同来源、类型和区域的元数据,并为用户提供统
JDBC中PreparedStatement对象详解(认真看完包学会)
码力无边-OEC
java 后端
JDBC(JavaDatabaseConnectivity)是Java用于访问数据库的标准API。PreparedStatement是JDBC中用于执行预编译的SQL语句的接口,能够有效地防止SQL注入,并提高性能。以下是关于PreparedStatement的详细讲解:1.什么是PreparedStatementPreparedStatement是一种SQL语句的预编译版本。与Statement
PreparedStatement详解
empti_
JDBC java 数据库
PreparedStatement详解一、PreparedStatement概述PreparedStatement是JDBC中用于执行预编译SQL语句的接口,它继承自Statement接口,提供了更安全、更高效的SQL执行方式。主要特点:预编译:SQL语句被预编译并存储在PreparedStatement对象中参数化查询:使用占位符(?)代替直接拼接SQL值防止SQL注入:自动处理特殊字符,提高安
python读mongodb很慢_Python3.5+Mongodb+Flask Web实战坑点小结【Dog Plus】
weixin_39604685
我不是程序员,也不是设计师,我只是碰巧有一些想法和一台电脑。Iamnotadesignernoracoder.I'mjustaguywithapoint-of-viewandacomputer.写在前言前:第一个WEB部署完毕,觉得有必要做一个小结:开发平台及工具:Win10+Pycharm+Py3.5+Flask+Mongodb回头看看,一旦选择这样的套装就注定要有很多坑来填。建议后来者能用Li
MongoDB 常用配置详解
panbuhei
MongoDB mongodb
官方参考文档:https://docs.mongodb.com/v3.2/reference/configuration-options/从2.6版本开始,MongoDB配置文件支持YAML的格式;原来的配置文件格式还保持向后兼容性。systemLog模块示例:systemLog:verbosity:0quiet:falsedestination:filelogAppend:truepath:/u
Nuxt.js学习(二) --- Nuxt目录结构详解、Nuxt常用配置项、Nuxt路由配置和参数传递...
庭前云落
前端 --- Nuxt.JS vue java javascript react js
[TOC]1、Nuxt目录结构详解Nuxt项目文件目录结构|--.nuxt//Nuxt自动生成,临时的用于编辑的文件,build|--assets//用于组织未编译的静态资源入LESS、SASS或JavaScript|--components//用于自己编写的Vue组件,比如滚动组件,日历组件,分页组件|--layouts//布局目录,用于组织应用的布局组件,不可更改。|--middleware/
vue-32(部署一个 Nuxt.js 应用程序)
清幽竹客
VUE javascript vue.js 前端
部署一个Nuxt.js应用程序部署Nuxt.js应用程序是使您的创作向世界开放的最后一步。它包括为生产环境准备应用程序、选择合适的托管平台以及配置部署流程。本课程将指导您完成部署Nuxt.js应用程序的关键方面,确保顺利高效的发布。准备部署在部署您的Nuxt.js应用之前,优化它以适应生产环境至关重要。这涉及几个关键步骤:构建应用第一步是为生产环境构建您的Nuxt.js应用。这个过程会编译您的代码
Nuxt.js页面目录结构详解:从入门到精通
柏廷章Berta
Nuxt.js页面目录结构详解:从入门到精通nuxtTheIntuitiveVueFramework.项目地址:https://gitcode.com/gh_mirrors/nu/nuxt什么是Nuxt.js的pages目录Nuxt.js采用基于文件系统的路由机制,pages目录是Nuxt项目中最核心的目录之一。该目录下的每个Vue组件文件都会自动映射为一个应用路由,这种设计极大地简化了路由配置工
架构轻巧的kokoro 文本转语音模型
skywalk8163
软硬件调试 多媒体 python 开发语言
Kokoro是一个具有8200万个参数的开放权重TTS模型。尽管其架构轻巧,但它提供了与较大型号相当的质量,同时速度更快,更具成本效益。使用Apache许可的权重,Kokoro可以部署在从生产环境到个人项目的任何地方。官网:hexgrad/kokoro:https://hf.co/hexgrad/Kokoro-82M现在我们来实践下KokoroLinux下安装使用安装库pipinstall-qko
数据库事务全面指南:概念、语法、机制与最佳实践
步行cgn
数据库 数据库
数据库事务全面指南:概念、语法、机制与最佳实践事务是数据库管理系统的核心功能,它确保数据库操作满足ACID特性(原子性、一致性、隔离性、持久性)。正确使用事务对于维护数据完整性和系统可靠性至关重要。一、事务核心概念ACID特性详解特性描述实现机制原子性(Atomicity)事务的所有操作要么全部完成,要么全部不执行回滚日志(UndoLog)一致性(Consistency)事务使数据库从一个一致状态
数据库视图详解:概念、语法、应用场景与注意事项
步行cgn
数据库 数据库 oracle
数据库视图详解:概念、语法、应用场景与注意事项视图(View)是数据库中的虚拟表,它基于SQL查询结果动态生成数据,不实际存储数据。视图是数据库设计中的强大工具,正确使用可以显著提升系统的安全性和可维护性。一、视图核心概念1.视图的本质虚拟表:不存储数据,仅存储查询定义动态生成:每次访问时执行底层SQL安全层:控制数据访问权限抽象层:隐藏底层表结构复杂性2.视图vs表特性表(Table)视图(Vi
C#库存管理系统源码与详解
weixin_42613017
本文还有配套的精品资源,点击获取简介:本文深入剖析C#开发的库存管理系统源码,涵盖从设计到实现的各个方面。详细解释了面向对象编程思想在库存管理中的应用,包括商品、仓库、订单等实体的类设计,以及关键的库存管理模块如入库、出库、查询、预警、盘点、报表生成、数据库设计、用户界面设计、错误处理与安全性的实现。此项目旨在帮助开发者深入理解C#语言及其在业务系统开发中的实践经验,涵盖软件工程的核心概念。1.面
嵌入式AI项目综合应用分享
嵌入式开发星球
人工智能
01EdgeOnePagesMCP你使用Cursor生成的HTML静态页面,如何发布出去让其它人也能访问到?腾讯开源的EdgeOnePagesMCP能帮上你的忙,它能将HTML内容、文件夹和zip文件部署到EdgeOnePages,丢给一个可公开访问的URL链接。你看,使用这个MCP服务,可以直接把AI写的2048小游戏部署它起来。变成一个mcp.edgeone.app/share/url形式的链
嵌入式硬件中电容的基本原理与详解
嵌入式开发星球
单片机项目实战操作之优秀 单片机 智能硬件
大家好我们今天重讨论点知识点如下:1.电容在电路中的作用2.用生活中水缸的例子来比喻电容3.电容存储能力原理4.电容封装的种类介绍电容种类图片辨识5.X电容的作用介绍6.Y电容的作用介绍7.钽电容的优点及特性7.钽电容的缺点及特性8.铝电解电容的优点及特性9.铝电解电容的缺点及特10.贴片铝电解电容和插件铝电解电容缺点特性对比
集合框架
天子之骄
java 数据结构 集合框架
集合框架
集合框架可以理解为一个容器,该容器主要指映射(map)、集合(set)、数组(array)和列表(list)等抽象数据结构。
从本质上来说,Java集合框架的主要组成是用来操作对象的接口。不同接口描述不同的数据类型。
简单介绍:
Collection接口是最基本的接口,它定义了List和Set,List又定义了LinkLi
Table Driven(表驱动)方法实例
bijian1013
java enum Table Driven 表驱动
实例一:
/**
* 驾驶人年龄段
* 保险行业,会对驾驶人的年龄做年龄段的区分判断
* 驾驶人年龄段:01-[18,25);02-[25,30);03-[30-35);04-[35,40);05-[40,45);06-[45,50);07-[50-55);08-[55,+∞)
*/
public class AgePeriodTest {
//if...el
Jquery 总结
cuishikuan
java jquery Ajax Web jquery方法
1.$.trim方法用于移除字符串头部和尾部多余的空格。如:$.trim(' Hello ') // Hello2.$.contains方法返回一个布尔值,表示某个DOM元素(第二个参数)是否为另一个DOM元素(第一个参数)的下级元素。如:$.contains(document.documentElement, document.body); 3.$
面向对象概念的提出
麦田的设计者
java 面向对象 面向过程
面向对象中,一切都是由对象展开的,组织代码,封装数据。
在台湾面向对象被翻译为了面向物件编程,这充分说明了,这种编程强调实体。
下面就结合编程语言的发展史,聊一聊面向过程和面向对象。
c语言由贝尔实
linux网口绑定
被触发
linux
刚在一台IBM Xserver服务器上装了RedHat Linux Enterprise AS 4,为了提高网络的可靠性配置双网卡绑定。
一、环境描述
我的RedHat Linux Enterprise AS 4安装双口的Intel千兆网卡,通过ifconfig -a命令看到eth0和eth1两张网卡。
二、双网卡绑定步骤:
2.1 修改/etc/sysconfig/network
XML基础语法
肆无忌惮_
xml
一、什么是XML?
XML全称是Extensible Markup Language,可扩展标记语言。很类似HTML。XML的目的是传输数据而非显示数据。XML的标签没有被预定义,你需要自行定义标签。XML被设计为具有自我描述性。是W3C的推荐标准。
二、为什么学习XML?
用来解决程序间数据传输的格式问题
做配置文件
充当小型数据库
三、XML与HTM
为网页添加自己喜欢的字体
知了ing
字体 秒表 css
@font-face {
font-family: miaobiao;//定义字体名字
font-style: normal;
font-weight: 400;
src: url('font/DS-DIGI-e.eot');//字体文件
}
使用:
<label style="font-size:18px;font-famil
redis范围查询应用-查找IP所在城市
矮蛋蛋
redis
原文地址:
http://www.tuicool.com/articles/BrURbqV
需求
根据IP找到对应的城市
原来的解决方案
oracle表(ip_country):
查询IP对应的城市:
1.把a.b.c.d这样格式的IP转为一个数字,例如为把210.21.224.34转为3524648994
2. select city from ip_
输入两个整数, 计算百分比
alleni123
java
public static String getPercent(int x, int total){
double result=(x*1.0)/(total*1.0);
System.out.println(result);
DecimalFormat df1=new DecimalFormat("0.0000%");
百合——————>怎么学习计算机语言
百合不是茶
java 移动开发
对于一个从没有接触过计算机语言的人来说,一上来就学面向对象,就算是心里上面接受的了,灵魂我觉得也应该是跟不上的,学不好是很正常的现象,计算机语言老师讲的再多,你在课堂上面跟着老师听的再多,我觉得你应该还是学不会的,最主要的原因是你根本没有想过该怎么来学习计算机编程语言,记得大一的时候金山网络公司在湖大招聘我们学校一个才来大学几天的被金山网络录取,一个刚到大学的就能够去和
linux下tomcat开机自启动
bijian1013
tomcat
方法一:
修改Tomcat/bin/startup.sh 为:
export JAVA_HOME=/home/java1.6.0_27
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export PATH=$JAVA_HOME/bin:$PATH
export CATALINA_H
spring aop实例
bijian1013
java spring AOP
1.AdviceMethods.java
package com.bijian.study.spring.aop.schema;
public class AdviceMethods {
public void preGreeting() {
System.out.println("--how are you!--");
}
}
2.beans.x
[Gson八]GsonBuilder序列化和反序列化选项enableComplexMapKeySerialization
bit1129
serialization
enableComplexMapKeySerialization配置项的含义
Gson在序列化Map时,默认情况下,是调用Key的toString方法得到它的JSON字符串的Key,对于简单类型和字符串类型,这没有问题,但是对于复杂数据对象,如果对象没有覆写toString方法,那么默认的toString方法将得到这个对象的Hash地址。
GsonBuilder用于
【Spark九十一】Spark Streaming整合Kafka一些值得关注的问题
bit1129
Stream
包括Spark Streaming在内的实时计算数据可靠性指的是三种级别:
1. At most once,数据最多只能接受一次,有可能接收不到
2. At least once, 数据至少接受一次,有可能重复接收
3. Exactly once 数据保证被处理并且只被处理一次,
具体的多读几遍http://spark.apache.org/docs/lates
shell脚本批量检测端口是否被占用脚本
ronin47
#!/bin/bash
cat ports |while read line
do#nc -z -w 10 $line
nc -z -w 2 $line 58422>/dev/null2>&1if[ $?-eq 0]then
echo $line:ok
else
echo $line:fail
fi
done
这里的ports 既可以是文件
java-2.设计包含min函数的栈
bylijinnan
java
具体思路参见:http://zhedahht.blog.163.com/blog/static/25411174200712895228171/
import java.util.ArrayList;
import java.util.List;
public class MinStack {
//maybe we can use origin array rathe
Netty源码学习-ChannelHandler
bylijinnan
java netty
一般来说,“有状态”的ChannelHandler不应该是“共享”的,“无状态”的ChannelHandler则可“共享”
例如ObjectEncoder是“共享”的, 但 ObjectDecoder 不是
因为每一次调用decode方法时,可能数据未接收完全(incomplete),
它与上一次decode时接收到的数据“累计”起来才有可能是完整的数据,是“有状态”的
p
java生成随机数
cngolon
java
方法一:
/**
* 生成随机数
* @author
[email protected]
* @return
*/
public synchronized static String getChargeSequenceNum(String pre){
StringBuffer sequenceNum = new StringBuffer();
Date dateTime = new D
POI读写海量数据
ctrain
海量数据
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.apache.poi.xssf.streaming.SXSSFRow;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming
mysql 日期格式化date_format详细使用
daizj
mysql date_format 日期格式转换 日期格式化
日期转换函数的详细使用说明
DATE_FORMAT(date,format) Formats the date value according to the format string. The following specifiers may be used in the format string. The&n
一个程序员分享8年的开发经验
dcj3sjt126com
程序员
在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这里在下想凭借自己的亲身经历,与大家一起探讨一下。
明确入行的目的
很多人干IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML, DIV+CSS,要做一个页面开发人员并不是一件难事,而且做一个页面开发人员更容
android欢迎界面淡入淡出效果
dcj3sjt126com
android
很多Android应用一开始都会有一个欢迎界面,淡入淡出效果也是用得非常多的,下面来实现一下。
主要代码如下:
package com.myaibang.activity;
import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.os.CountDown
linux 复习笔记之常见压缩命令
eksliang
tar解压 linux系统常见压缩命令 linux压缩命令 tar压缩
转载请出自出处:http://eksliang.iteye.com/blog/2109693
linux中常见压缩文件的拓展名
*.gz gzip程序压缩的文件
*.bz2 bzip程序压缩的文件
*.tar tar程序打包的数据,没有经过压缩
*.tar.gz tar程序打包后,并经过gzip程序压缩
*.tar.bz2 tar程序打包后,并经过bzip程序压缩
*.zi
Android 应用程序发送shell命令
gqdy365
android
项目中需要直接在APP中通过发送shell指令来控制lcd灯,其实按理说应该是方案公司在调好lcd灯驱动之后直接通过service送接口上来给APP,APP调用就可以控制了,这是正规流程,但我们项目的方案商用的mtk方案,方案公司又没人会改,只调好了驱动,让应用程序自己实现灯的控制,这不蛋疼嘛!!!!
发就发吧!
一、关于shell指令:
我们知道,shell指令是Linux里面带的
java 无损读取文本文件
hw1287789687
读取文件 无损读取 读取文本文件 charset
java 如何无损读取文本文件呢?
以下是有损的
@Deprecated
public static String getFullContent(File file, String charset) {
BufferedReader reader = null;
if (!file.exists()) {
System.out.println("getFull
Firebase 相关文章索引
justjavac
firebase
Awesome Firebase
最近谷歌收购Firebase的新闻又将Firebase拉入了人们的视野,于是我做了这个 github 项目。
Firebase 是一个数据同步的云服务,不同于 Dropbox 的「文件」,Firebase 同步的是「数据」,服务对象是网站开发者,帮助他们开发具有「实时」(Real-Time)特性的应用。
开发者只需引用一个 API 库文件就可以使用标准 RE
C++学习重点
lx.asymmetric
C++ 笔记
1.c++面向对象的三个特性:封装性,继承性以及多态性。
2.标识符的命名规则:由字母和下划线开头,同时由字母、数字或下划线组成;不能与系统关键字重名。
3.c++语言常量包括整型常量、浮点型常量、布尔常量、字符型常量和字符串性常量。
4.运算符按其功能开以分为六类:算术运算符、位运算符、关系运算符、逻辑运算符、赋值运算符和条件运算符。
&n
java bean和xml相互转换
q821424508
java bean xml xml和bean转换 java bean和xml转换
这几天在做微信公众号
做的过程中想找个java bean转xml的工具,找了几个用着不知道是配置不好还是怎么回事,都会有一些问题,
然后脑子一热谢了一个javabean和xml的转换的工具里,自己用着还行,虽然有一些约束吧 ,
还是贴出来记录一下
顺便你提一下下,这个转换工具支持属性为集合、数组和非基本属性的对象。
packag
C 语言初级 位运算
1140566087
位运算 c
第十章 位运算 1、位运算对象只能是整形或字符型数据,在VC6.0中int型数据占4个字节 2、位运算符: 运算符 作用 ~ 按位求反 << 左移 >> 右移 & 按位与 ^ 按位异或 | 按位或 他们的优先级从高到低; 3、位运算符的运算功能: a、按位取反: ~01001101 = 101
14点睛Spring4.1-脚本编程
wiselyman
spring4
14.1 Scripting脚本编程
脚本语言和java这类静态的语言的主要区别是:脚本语言无需编译,源码直接可运行;
如果我们经常需要修改的某些代码,每一次我们至少要进行编译,打包,重新部署的操作,步骤相当麻烦;
如果我们的应用不允许重启,这在现实的情况中也是很常见的;
在spring中使用脚本编程给上述的应用场景提供了解决方案,即动态加载bean;
spring支持脚本