预留:大数据Hadoop之——部署hadoop+hive+Mysql环境(Linux)
传送门目录
前期准备
一、JDK的安装
1、安装jdk
2、配置Java环境变量
3、加载环境变量
4、进行校验
二、hadoop的集群搭建
1、hadoop的下载安装
2、配置文件设置
2.1. 配置 hadoop-env.sh
2.2. 配置 core-site.xml
2.3. 配置hdfs-site.xml
2.4. 配置 yarn-site.xml
2.5. 配置 mapred-site.xml
2.6. 配置 workers(伪分布式不配置)
2.7 配置sbin下启停命令
3、复制hadoop到其他节点(伪分布式不执行此步)
4、Hdfs格式化
5、启动hdfs分布式文件系统
三、msyql安装
1、卸载旧MySQL文件
2、Mysql下载安装
3、配置环境变量
4、删除用户组
5、创建用户和组
6、创建文件夹
7、更改权限
8、初始化
9、记住初始密码
10 将mysql加入到服务中
11、配置文件
12、设置开机启动并查看进程
13、 创建软连接
14、授权修改密码
四、HIve安装
1、下载安装
2、配置环境变量
3、配置文件
4、拷贝jar包
5、初始化
6、启动hive
前期准备
配置静态IP
vi /etc/syscnfig/network-scripts/ifcfg-eth1 ---- 根据自己网卡设置。
设置主机名
hostnamectl --static set-hostname 主机名
配置IP与主机名映射
vi /etc/hosts
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
配置免密登录
传送门
一、JDK的安装
1、安装jdk
sudo yum search openjdk
yum install java-1.8.0-openjdk.x86_64
yum install java-1.8.0-openjdk-devel.x86_64
2、配置Java环境变量
vi /etc/profile (~/.bash_profile 或 ~/.profile 或 ~/.bashrc 或 /etc/bashrc 或 /etc/bash.bashrc[在ubuntu 中的位置])
vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_11
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
3、加载环境变量
source /etc/profile
验证环境变量是否生效:
env | grep HOME
env | grep PATH
4、进行校验
二、hadoop的集群搭建
1、hadoop的下载安装
1.1. 下载
https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/
下载 hadoop-3.3.4.tar.gz 安装包1.2 上传
使用xshell上传到指定安装路径此处是安装路径是 /usr/local
1.3 解压重命名
tar -xzvf hadoop-3.3.4.tar.gz
mv hadoop-3.3.4 hadoop
1.4 配置环境变量
vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_11
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
1.5 加载环境变量
source /etc/profile
验证环境变量是否生效:
env | grep HOME
env | grep PATH
1.6检验安装
hadoop version
出现下图说明安装成功
2、配置文件设置
2.1. 配置 hadoop-env.sh
hadoop伪分布式配置
export HADOOP_OS_TYPE=${HADOOP_OS_TYPE:-$(uname -s)}
export JAVA_HOME=/usr/local/jdk1.8.0_11hadoop集群配置(root指的是用户名)
export HADOOP_OS_TYPE=${HADOOP_OS_TYPE:-$(uname -s)}
export JAVA_HOME=/usr/local/jdk1.8.0_11export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
2.2. 配置 core-site.xml
<configuration>
<!-- 指定HDFS中NameNode的地址 默认 9000端口-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop001:9000</value>
<description>配置NameNode的URL</description>
</property><!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/data</value>
</property>下面为可选项:
<!--配置所有节点的root用户都可作为代理用户-->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property><!--配置root用户能够代理的用户组为任意组-->
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property><!--配置root用户能够代理的用户为任意用户-->
<property>
<name>hadoop.proxyuser.root.users</name>
<value>*</value>
</property>
</configuration>
2.3. 配置hdfs-site.xml
以下配置集群和伪分布式均可用
<configuration>
<!-- 数据的副本数量 -->
<property>
<name>dfs.replication</name>
<value>3</value> <!-- 伪分布式此时为1->
</property>
<!-- nn web端访问地址 默认也是9870-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop001:9870</value>
</property><!--设置权限为false-->
<property>
<name>dfs.permissions.enabled </name>
<value>false</value>
</property><!--设置元数据存储目录-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///usr/local/hadoopdata/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///usr/local/hadoopdata/dfs/data</value>
</property>下面为可选项:伪分布式和集群配置都可以使用,但区别是伪分布式时候,主机名为hadoop001,下面的hadoop003和hadoop002都要改为hadoop001.而集群则不需要改。
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop003:9868</value>
</property>
<!-- 2nn web端访问地址 可以不配置-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop002:9868</value>
</property></configuration>
2.4. 配置 yarn-site.xml
<configuration>
<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MR程序。-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>伪分布式以下无需配置
<!-- Site specific YARN configuration properties -->
<!-- yarn集群主角色RM运行机器。-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop002</value>
</property>
<!-- 每个容器请求的最小内存资源(以MB为单位)。-->
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value>
</property>
<!-- 每个容器请求的最大内存资源(以MB为单位)。-->
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
</property>
<!-- 容器虚拟内存与物理内存之间的比率。-->
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>4</value>
</property>
<!-- 关闭yarn内存检查 flink on hadoop 配置-->
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property><!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
2.5. 配置 mapred-site.xml
<configuration>
<!-- mr程序默认运行方式。yarn集群模式 local本地模式-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>以下配置为集群配置使用
<!-- MR App Master环境变量。-->
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<!-- MR MapTask环境变量。-->
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<!-- MR ReduceTask环境变量。-->
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property><!-- 历史服务器端地址伪分布式和集群分布式都可以不配置 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop003:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop003:19888</value>
</property>
</configuration>
2.6. 配置 workers(伪分布式不配置)
在安装目录/usr/local/hadoop/etc/hadoop/中,在workers文件中配置三台主机名,在集群中使用。如果不是集群可以不用配置
vi worker
hadoop001
hadoop002
hadoop003
2.7 配置sbin下启停命令
在 sbin下的start-dfs.sh和stop-dfs.sh中顶部配置
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
在 sbin下的start-yarn.sh和stop-yarn.sh中顶部配置
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
3、复制hadoop到其他节点(伪分布式不执行此步)
scp /usr/local/hadoop root@hadoop002:/usr/local/
4、Hdfs格式化
cd /usr/local/hadoop/
bin/hdfs namenode -format
find /usr/local/data/hadoop/
5、启动hdfs分布式文件系统
cd /usr/local/hadoop
./sbin/start-dfs.sh
使用 jps 查看启动进程
访问hadoop分布式文件系统
6、启动yarn
cd /usr/local/hadoop
./sbin/start-yarn.sh
使用 jps 查看启动进程
访问hadoop分布式yarn页面
三、msyql安装
1、卸载旧MySQL文件
执行命令
# yum remove mysql mysql-server mysql-lib mysql-server
•再查看当前安装mysql的情况看卸载情况:
# rpm -qa|grep -i mysql
可以看到之前安装的包,然后执行删除命令,全部删除
# rpm -ev MySQL-devel--5.1.52-1.el6.i686 --nodeps
•查找之前老版本MySQL的目录,并删除老版本的MySQL的文件和库
# find / -name mysql
删除查找到的所有目录
#例如:rm -rf /run/lock/subsys/mysql
#例如: rm -rf /etc/selinux/targeted/active/modules/100/mysql # rm -rf /var/lib/mysql
•手动删除/etc/my.cnf
# rm -rf /etc/my.cnf
•再次查询如果无,则删除干净
# rpm -qa|grep -i mysql删除 mariadb
rpm -qa|grep mariadb
rpm -e --nodeps mariadb-libs
rpm -e --nodeps mysql-libs-5.1.52-1.el6_0.1.x86_64
2、Mysql下载安装
1.1 下载
官网网址:MySQL :: Download MySQL Community Server
在这里下载的是如下版本的mysql
https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz1.2 上传
使用xshell上传到到linux服务器指定安装路径
此处是安装路径是 /usr/local
1.3 解压重命名
cd /usr/local/
tar -xzvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz -C
# 如果是xz结尾压缩包用 tar -xvJf,如 tar -xvJf mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
重命令
mv mysql-5.7.26-linux-glibc2.12-x86_64 mysql
3、配置环境变量
vim /etc/profile
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin使环境生效
source /etc/profile
4、删除用户组
删除用户组
cat /etc/group|grep mysqluserdel mysql
groupdel mysql
5、创建用户和组
groupadd mysql
useradd -r -g mysql mysql
6、创建文件夹
mkdir /usr/local/mysql/data
7、更改权限
更改mysql目录下所有的目录及文件夹所属的用户组和用户,以及赋予可执行权限
chown -R mysql:mysql /usr/local/mysql/data/
chmod -R 755 /usr/local/mysql/data/
chown -R mysql:mysql /usr/local/mysql/
chmod -R 755 /usr/local/mysql/
8、初始化
安装依赖包
yum install libaio 或者下面的
yum install -y mariadb-server 安装mariadb-server 5.X版本使用
执行初始化
/usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --initialize
#说明
–initialize 初始化(真正开始干活)
–user=mysql 以mysql用户的身份初始化数据库,产生文件都是mysql作为拥有者
–basedir=xxx mysql其安装目录,非常重要
–lower_case_table_names=1 不区分大小写,如果初始化不指定,必须重装才能解决,非常重要
9、记住初始密码
10 将mysql加入到服务中
复制
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql#注意:默认情况下,GBLIC版本的数据库要求安装到/usr/local/mysql目录,其mysql.server脚本中对应的目录也是/usr/local/mysql,这会导致mysql无法启动。所以可以更改其basedir以及datadir两个变量,我们后面在 my.cnf中配置。
#赋予可执行权限
chmod +x /etc/init.d/mysql
#添加服务
chkconfig --add mysql
#显示服务列表
chkconfig --list mysql
11、配置文件
5.x版本
vi /etc/my.cnf
[mysqld]
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
#character config
character_set_server=utf8mb4
explicit_defaults_for_timestamp=true
8.0版
注意:使用配置前一定要创建好目录
mkdir /usr/local/mysql/tmp
mkdir /usr/local/mysql/log
touch /usr/local/mysql/log/mysqld_safe.err
chown -R mysql:mysql /usr/local/mysql/tmp
chown -R mysql:mysql /usr/local/mysql/log
chown -R mysql:mysql /usr/local/mysql/log/mysqld_safe.err
简单配置(推荐)
vi /etc/my.cnf
[mysql]
user=mysql
default-character-set=utf8socket=/usr/local/mysql/tmp/mysql.sock
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/tmp/mysql.sock
user=mysql
log_timestamps=SYSTEM
collation-server = utf8_unicode_ci
character-set-server = utf8
default_authentication_plugin= mysql_native_password[mysqld_safe]
log-error=/usr/local/mysql/log/mysqld_safe.err
pid-file=/usr/local/mysql/tmp/mysqld.pid复杂配置
vi /etc/my.cnf
[mysql]
socket=/usr/local/mysql/tmp/mysql.sock
port=3306
user=mysql
default-character-set=utf8[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/tmp/mysql.sock
port=3306
user=mysql
log_timestamps=SYSTEM
collation-server = utf8_unicode_ci
character-set-server = utf8
default_authentication_plugin= mysql_native_password[mysqld_safe]
log-error=/usr/local/mysql/log/mysqld_safe.err
pid-file=/usr/local/mysql/tmp/mysqld.pid
socket=/usr/local/mysql/tmp/mysql.sock[mysql.server]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/tmp/mysql.sock
port=3306
user=mysql
12、设置开机启动并查看进程
设置开机启动:chkconfig mysql on
启动mysql :service mysql start;
启动报错:
Starting MySQL.2023-06-25T04:58:08.333370Z mysqld_safe error: log-error set to ‘/usr/local/mysql/log/mysqld_safe.err’, however file don’t exists. Create writable for user ‘mysql’.
ERROR! The server quit without updating PID file (/usr/local/mysql/pid/mysqld.pid).解决方案
[root@mysql]# touch /usr/local/mysql/log/mysqld_safe.err
[root@mysql]# chown -R mysql:mysql /usr/local/mysql/log/mysqld_safe.err启动报错:
my_print_defaults: [Warning] World-writable config file ‘/usr/local/mysql/my.cnf’ is ignored.
Starting MySQL.my_print_defaults: [Warning] World-writable config file ‘/usr/local/mysql/my.cnf’ is ignored.
my_print_defaults: [Warning] World-writable config file ‘/usr/local/mysql/my.cnf’ is ignored.
ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).解决方案
/usr/local/mysql/my.cnf’ 权限给的是 777,需要改成644,再次重新启动即可。
查看进程:ps -ef|grep mysql;
查看状态:service mysql status;
13、 创建软连接
ln -s /usr/local/mysql/bin/mysql /usr/bin
14、授权修改密码
mysql -uroot -p
输入密码(初始化时候的密码)
输入密码报错:
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
解决方案
修改配置文件my.cnf 中 socket = /usr/local/mysql/tmp/mysql.sock,并重启mysql:service mysql restart;
修改密码
8.0以下修改密码:
use mysql;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpassword');
flush privileges;
8.0以上修改密码
alter user "root"@"localhost" identified by "root";
use mysql;
UPDATE user SET authentication_string="" WHERE user="root";
FLUSH PRIVILEGES;
update user set Host="%" where User="root";
flush privileges;
alter user "root"@"%" identified by "root";
flush privileges;说明:
- UPDATE user SET authentication_string="" WHERE user="root"; 更新user表,将用户名为root的用户的authentication_string字段设置为空字符串。实际上是在清空root用户的密码。
- update user set Host="%" where User="root"; 更新user表,它将用户名为root的用户的Host字段设置为%。即root用户可以从任何主机进行连接。默认情况下,root用户可能只能从localhost进行连接。
- alter user "root"@"%" identified by "root"; 更改用户的认证信息。它指定了用户名为root且来源主机为任意主机(%)的用户,并将其密码设置为root。这是在新版本的MySQL中设置或更改用户密码的推荐方式。
授权
8.0以下授权
grant all privileges on *.* to 'root'@'%' identified by '密码123456' with grant option;
flush privileges;说明:
- all privileges:表示将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等。
- on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写“*”表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user
- to:将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。比如:”yangxin”@”192.168.0.%”,表示yangxin这个用户只能在192.168.0IP段登录
- identified by:指定用户的登录密码
8.0以上授权
为了用 navicate工具 访问数据库,进行以下设置进行授权:
use mysql;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
flush privileges;
说明:
- ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root'; #还原密码验证插件,将MySQL8的密码认证插件由caching_sha2_password更换成mysql_native_password
四、HIve安装
1、下载安装
1.1下载
下载地址:http://archive.apache.org/dist/hive/
我们选择apache-hive-3.1.3-bin.tar.gz版本学习
1.2 上传
1.3 解压重命名
2、配置环境变量
vi ~/.bash_profile
export HIVE_HOME=/usr/local/hiveexport PATH=$PATH:$HIVE_HOME/bin
刷新配置
source ~/.bash_profile
3、配置文件
配置hive-env.sh
export HADOOP_HOME=/usr/local/hadoop
export HIVE_CONF_DIR=/usr/local/hive/conf
配置hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
</configuration>
4、拷贝jar包
4.1 拷贝mysql驱动
需要提前现在对应的驱动包,并解压
cp mysql-connector-java-5.1.49/mysql-connector-java-5.1.49-bin.jar /usr/local/hive/lib/
4.2 拷贝guava包
#hadoop和hive里面的guava包版本可能不一致,那么用hadoop里面的覆盖掉hive里面的
cp /usr/local/hadoop/share/hadoop/common/lib/guava-27.0-jre.jar /usr/local/hive/lib/#删除hive的旧依赖包
rm /opt/hive/lib/guava-19.0.jar
5、初始化
5.1 启动msyql
# 先查看mysql是否启动
service mysql status;
#未启动则进行启动
service mysql start
5.2 启动hadoop
#进入hadoop安装目录
cd /usr/local/hadoop/
#启动hadoop
sbin/start-all.sh
5.3 初始化hive
#进入hive安装目录
cd /usr/local/hive
#执行初始化命令,#初始化Hive
bin/schematool -dbType mysql -initSchema
6、启动hive
#进入hive安装目录
cd /usr/local/hive
#使用命令验证hive是否安装成功
bin/hive
#进入hive shell,使用show databases; 查看数据,说明安装成功!
相关文章:

预留:大数据Hadoop之——部署hadoop+hive+Mysql环境(Linux)
传送门目录 前期准备 一、JDK的安装 1、安装jdk 2、配置Java环境变量 3、加载环境变量 4、进行校验 二、hadoop的集群搭建 1、hadoop的下载安装 2、配置文件设置 2.1. 配置 hadoop-env.sh 2.2. 配置 core-site.xml 2.3. 配置hdfs-site.xml 2.4. 配置 yarn-site.xm…...

RabbitMQ介绍以及基本使用
文章目录 一、什么是消息队列? 二、消息队列的作用(优点) 1、解耦 2、流量削峰 3、异步 4、顺序性 三、RabbitMQ基本结构 四、RabbitMQ队列模式 1、简单队列模式 2、工作队列模式 3、发布/订阅模式 4、路由模式 5、主题模式 6、…...

C++演示中介模式
避免两个模块之间的耦合,使用中介模式解决。下面是C代码 #include <iostream> #include <vector>using namespace std;class client;//中介 class mediator { public:void addclient(client* client) {clientVec.push_back(client);}void send(const s…...

Vue的简单入门 一
声明:本版块根据B站学习,创建的是vue3项目,用的是vue2语法风格,仅供初学者学习。 目录 一、Vue项目的创建 1.已安装15.0或更高版本的Node.js 2.创建项目 二、 简单认识目录结构 三、模块语法中的指令 1.v-html 1.文本插值…...

【免费送书活动】《MySQL 9从入门到性能优化(视频教学版)》
本博主免费赠送读者3本书,书名为《MySQL 9从入门到性能优化(视频教学版)》。 《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 这本书已经公开…...
export default与export区别
1.定义: export default:用于导出模块中的默认成员。一个模块中只能有一个export default,通常用于导出模块的主要功能或对象。导入时可以使用任意名称,因为它没有具体的名称 export:用于导出模块中的多个成…...
最佳的出牌方法
最佳的出牌方法 真题目录: 点击去查看 E 卷 200分题型 题目描述 手上有一副扑克牌,每张牌按牌面数字记分(J=11,Q=12,K=13,没有大小王),出牌时按照以下规则记分: 出单张,记牌面分数,例如出一张2,得分为2出对或3张,记牌面分数总和再x2,例如出3张3,得分为(3+3+3)x2=1…...
Kotlin 2.1.0 入门教程(二十一)数据类
数据类 数据类主要用于存储数据。 对于每个数据类,编译器会自动生成一些额外的成员函数,这些函数支持将实例打印为易读的输出、比较实例、复制实例等操作。 数据类使用 data 关键字标记: data class User(val name: String, val age: Int…...

30天开发操作系统 第 20 天 -- API
前言 大家早上好,今天我们继续努力哦。 昨天我们已经实现了应用程序的运行, 今天我们来实现由应用程序对操作系统功能的调用(即API, 也叫系统调用)。 为什么这样的功能称为“系统调用”(system call)呢?因为它是由应用程序来调用(操作)系统中的功能来完…...
WEB安全--SQL注入--floor报错注入
一、原理: floor()报错注入需要组合count()、rand()、group by()等函数使用,通过一些手段使数据库在处理语句时产生主键重复的报错,从而达到爆出信息的目的 二、内容: ?id-1 or (select 1 from (select count(*),concat(databa…...
【java面向对象的三大特性】封装、继承和多态
目录标题 一、封装(Encapsulation):二、继承(Inheritance):三、多态(Polymorphism):1. 多态的三个必要条件:2.多态的具体实现:3.多态的使用场景&a…...
Hermite 插值
Hermite 插值 不少实际问题不但要求在节点上函数值相等,而且还要求它的导数值相等,甚至要求高阶导数值也相等。满足这种要求的插值多项式就是 Hermite 插值多项式。 下面只讨论函数值与导数值个数相等的情况。设在节点 a ≤ x 0 < x 1 < ⋯ <…...

【推理llm论文精度】DeepSeek-R1:强化学习驱动LLM推理能力飞跃
最近deepseek R1模型大火,正好复习一下他家的技惊四座的论文https://arxiv.org/pdf/2501.12948 近年来,大型语言模型(LLM)在推理能力上取得了显著进展,但如何进一步有效提升仍然是研究热点。DeepSeek-AI发布了 DeepS…...

arm linux下的中断处理过程。
本文基于ast2600 soc来阐述,内核版本为5.10 1.中断gic初始化 start_kernel() -> init_IRQ() -> irqchip_init() of_irq_init()主要是构建of_intc_desc. 489-514: 从__irqchip_of_table中找到dts node中匹配的of_table(匹配matches->compatible)…...

C语言:指针详解
C语言:指针详解 1:指针的基本概念1:什么是指针2:为什么要引入指针3:指针的作用4:指针的类型 2:指针的声明与初始化1: 指针的声明2: 指针的初始化 3:指针的操作…...

github用户名密码登陆失效了
问题: git push突然推代码需要登陆,但是用户名和密码正确输入后,却提示403 git push# Username for https://github.com: **** #Password for https://gyp-programmergithub.com: #remote: Permission to gyp-programmer/my-app.git denie…...
【删除tomcat默认管理控制台】
停止Tomcat: ./catalina.sh stop 删除管理控制台应用: 进入Tomcat的webapps目录: cd /path/to/tomcat/webapps List item 删除manager和host-manager文件夹: rm -rf manager host-manager 启动Tomcat: ./catali…...
动态库与静态库:深入解析与应用
在软件开发中,库(Library)是预编译的代码集合,用于在多个程序之间共享功能。根据链接方式的不同,库主要分为两种类型:静态库(Static Library) 和 动态库(Dynamic Library…...

【鱼眼镜头12】Scaramuzza的鱼眼相机模型实操,不依赖于具体的相机几何结构,直接从图像数据出发,因此更具灵活性。
文章目录 Scaramuzza相机模型标定效果2、原理和代码代码1、 2D映射到3D,函数输入为2D点坐标OCAM参数代码功能详解2、3D --> 2D 3、总结Scaramuzza 模型的核心思想Scaramuzza 模型的核心思想与 Kannala-Brandt 模型的对比Scaramuzza 模型的独特之处Scaramuzza 的意…...

LVS 负载均衡集群(NAT模式)
一、环境准备 四台主机(一台 LVS、两台 RS、一台客户端) 注意每个虚拟机都需要关闭防火墙和 selinux 1.1.LVS 主机 LVS 主机(两块网卡) 第一块:NAT模式(内网) 第二块:添加网卡&am…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...
第22节 Node.js JXcore 打包
Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...

【工具教程】多个条形码识别用条码内容对图片重命名,批量PDF条形码识别后用条码内容批量改名,使用教程及注意事项
一、条形码识别改名使用教程 打开软件并选择处理模式:打开软件后,根据要处理的文件类型,选择 “图片识别模式” 或 “PDF 识别模式”。如果是处理包含条形码的 PDF 文件,就选择 “PDF 识别模式”;若是处理图片文件&…...
零基础在实践中学习网络安全-皮卡丘靶场(第十一期-目录遍历模块)
经过前面几期的内容我们学习了很多网络安全的知识,而这期内容就涉及到了前面的第六期-RCE模块,第七期-File inclusion模块,第八期-Unsafe Filedownload模块。 什么是"遍历"呢:对学过一些开发语言的朋友来说应该知道&…...