本文利用云服务器对大数据平台进行环境部署,包含:服务器使用、环境准备、Hadoop集群完全分布式安装、Zookeeper集群完全分布式安装、HBase完全分布式安装、Hive、Scala、Spark、Sqoop、Flume的安装。如有错误还望指出。
目录
一、服务器使用
二、环境准备
三、Hadoop3.1.1 集群环境安装
四、Zookeeper 集群安装部署
五、Hbase 完全分布式安装
六、Hive安装
七、Scala安装
八、Spark安装
九、Sqoop安装
十、flume安装
阿里云服务器,百度云服务器,腾讯云服务器。学生购买会有优惠,但只限一台机器。我用的学生优惠分别在三个平台各买了一台云主机来搭建大数据环境。
1、 阿里云(centos7.3)
47.101.62.158公
172.19.46.110私
2、百度云(centos7.3)
180.76.96.39 公
192.168.0.4私
3、腾讯云(centos7.3)
132.232.131.91 公
172.27.0.13 私
4、安全组ssh端口开放
使用服务器这里是关键。服务器如果在各网页界面去操作会效率很低,用Xshell或者putty可以远程连接服务器进行操作。这样就需要设置各服务器安全组打开ssh的22端口,然后进行远程连接。
OS:CentOS 7.0+
远程连接:Xshell
序号
主机
IP
主机名
用户名
密码
1
Baidu Cloud
180.76.96.39 公
192.168.0.4 私
Hadoop2
root
***
2
Alibaba Cloud
47.101.62.158 公
172.19.46.110 私
Hadoop1
root
***
3
Tencent Cloud
132.232.131.91 公
172.27.0.13 私
Hadoop3
root
***
Package:
Welcome to The Apache Software Foundation!(Apache官网)
Index of /apache
Hadoop集群安装(伪|全)
https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.1.1/hadoop-3.1.1.tar.gz
JDK安装
Unauthorized Request
如果用wget命令下载会出问题:博客:https://blog.csdn.net/weixin_42039699/article/details/82936624
MySQL安装
https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz
https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.47.tar.gz
Pig安装
https://mirrors.tuna.tsinghua.edu.cn/apache/pig/pig-0.17.0/pig-0.17.0.tar.gz
Hive安装
https://mirrors.tuna.tsinghua.edu.cn/apache/hive/stable-2/apache-hive-2.3.3-bin.tar.gz
HBase安装
https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/1.2.7/hbase-1.2.7-bin.tar.gz
Zookeeper集群安装
https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
Sqoop安装
Apache Sqoop - Apache Attic
Spark安装
https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.3.1/spark-2.3.1-bin-hadoop2.7.tgz
Flume安装
https://mirrors.tuna.tsinghua.edu.cn/apache/flume/stable/apache-flume-1.8.0-bin.tar.gz
Storm安装
https://mirrors.tuna.tsinghua.edu.cn/apache/storm/apache-storm-1.2.2/apache-storm-1.2.2.tar.gz
设备:
实验设备包括 3 台服务器(CentOS7.0+)
实验所需安装包
步骤:
1.基础环境准备
1.1 集群规划
序号
主机
IP
主机名
用户名
密码
1
Baidu Cloud
180.76.96.39 公
192.168.0.4 私
Hadoop2
root
***
2
Alibaba Cloud
47.101.62.158 公
172.19.46.110 私
Hadoop1
root
***
3
Tencent Cloud
132.232.131.91 公
172.27.0.13 私
Hadoop3
root
***
1.2 系统准备
3台服务器(CentOS7.0+)
软件安装包存放于tgz目录下:
1.3 网络配置(虚拟机配置,云服务器跳过 )
为每个 Hadoop 主机配置相应的 IP 地址,每台的操作方法相同。IP 地址根据
实验环境进行配置,如果实验环境使用的是动态 IP 地址则可以跳过网络配置部分,进入下一步操作。
1.3.1 修改网络配置文件
1、首先,确保在 root 用户下进行操作。通过 vi 命令修改网络配置文件
[root@localhost ~]#
vi /etc/sysconfig/network-scripts/ifcfg-eth0
2、然后按 i 键进入编辑模式,我们需要将其中的 BOOTPROTO=dhcp 改为BOOTPROTO=static 意思是设置为静态 IP,将 ONBOOT=no 改为 ONBOOT=yes 意思是将网卡设置 为开机启用,同时在文字下方添加如下内容:
IPADDR= #静态 IP
GATEWAY= #默认网关
NETMASK= #子网掩码
DNS1= #DNS 配置
3、修改完成以后按 Esc 键退出编辑模式,按 Shift + : 输入 wq 进行保存并退出!修改好的配置截图。
1.3.2 重启网络服务
通过 service network restart 重启网络服务,使修改的配置生效
[root@localhost ~]# service network restart
1.3.3 查看配置是否修改成功
通过 ifconfig 命令来查看当前的 IP 地址信息
通过上面的操作以后分别将三台 hadoop 主机的配置改为 :
hadoop1 IP,hadoop2 IP,hadoop3 IP
1.4 关闭防火墙
三台 hadoop 主机都需要操作关闭防火墙
1、首先,输入 service iptables stop 命令停止防火墙的运行,再通过输入
chkconfig iptables off 命令关闭防火墙开机运行
2、执行命令如下:
[root@localhost ~]# service iptables stop
[root@localhost ~]# chkconfig iptables off
查看防火墙状态:
[root@localhost ~]# service iptables status
iptables: Firewall is not running.
注意:
CentOS 7.0+默认使用的是firewall作为防火墙
关闭并禁止firewall开机启动:
停止
systemctl stop firewalld.service
禁止开机启动
systemctl disable firewalld.service
启动/重启Firewalld
#systemctl start firewalld.service
#systemctl restart firewalld.service
开机启动/关闭开机启动
#systemctl enable firewalld.service
#systemctl disable firewalld.service
查看状态
#firewall-cmd --state
开放端口:云主机开放全部端口比较危险,容易被挖矿程序占CPU,建议需要什么端口打开什么。
firewall-cmd --permanent --zone=public --add-port=10-50010/tcp
firewall-cmd --permanent --zone=public --add-port=10-50010/udp
firewall-cmd --reloa
1.5 修改主机名称
修改主机名称目的是为了方便管理,将第一台 hadoop 主机的名称改为 hadoop1,
第二台改为 hadoop2,第三台改为 hadoop3。在三台 hadoop 主机上按下面的方法
修改每台的主机名称
1、首先,确保在 root 用户下进行操作。[root@localhost ~]# vi /etc/sysconfig/network
2、然后按 i 键进入编辑模式,将 HOSTNAME=localhost 改为 HOSTNAME=hadoop1
也就是将该机器名称改为 hadoop1。修改完成后需要输入 reboot 命令重启生效
重启命令:
[root@localhost ~]# reboot
查看当前主机名命令:
[root@localhost ~]# hostname
1.6 修改 hosts 文件
每台 hadoop 主机都加入相同的 hosts 主机记录
1、打开 hosts 文件
[root@hadoop1 ~]# vim /etc/hosts
2、在第三行添加下面的参数
IP hadoop1
IP hadoop2
IP hadoop3
云服务器搭建Hadoop完全分布式hosts配置关键:
在Master服务器上,要将自己的ip设置成内网ip,而将另一台Slave服务器的ip设置成外网ip
同样的在Slave服务器上,要将自己的ip设置成内网ip,而降另一台Master服务器的ip设置成外网ip
1.7时钟同步命令
ntpdate cn.pool.ntp.org
1.8 配置 SSH 免密码登录
hadoop 在执行配置过程中,master 需要对 salves 进行操作,所以我们需要在 hadoop1 节点配置 ssh 免密码登录 hadoop2、hadoop3.在 hadoop1 主机上执行以下的命令:
1、进入 root 管理员目录,执行 ssh-keygen -t rsa 一直回车生成密钥
[root@hadoop1 ~]# cd ~
[root@hadoop1 ~]# ssh-keygen -t rsa
2、进入 ~/.ssh 目录,将生成好的密钥同步到 hadoop2 和 hadoop3 中,在执行
ssh-copy-id 命令后需要输入对应 hadoop 主机的密码
[root@hadoop1 ~]# cd ~/.ssh
[root@hadoop1 .ssh]# ssh-copy-id hadoop2
[root@hadoop1 .ssh]# ssh-copy-id hadoop3
3、执行
[root@hadoop1 .ssh]# cat ~/.ssh/id_rsa.pub >~/.ssh/authorized_keys
4、验证 SSH 免密码登录是否成功
在 hadoop1 主机上可以不用输入密码即可远程访问 hadoop2 和 hadoop3,验证可以连接以后记得使用 exit 命令退出 ssh 连接
验证免密码登录 hadoop2:
[root@hadoop1 .ssh]# ssh hadoop2
退出 hadoop2 连接:
[root@hadoop2 ~]# exit
验证免密码登录 hadoop3:
[root@hadoop1 .ssh]# ssh hadoop3
[root@hadoop2 ~]# exit
退出 hadoop3 连接:
[root@hadoop3 ~]# exit
免密方式2:
hadoop1上执行:
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
ssh-add ~/.ssh/id_dsa
scp ~/.ssh/authorized_keys hadoop2
scp ~/.ssh/authorized_keys hadoop3
ssh-copy-id hadoop2
ssh-copy-id hadoop3
ssh hadoop2
ssh hadoop3
遇到问题:
重装openssh
1. 卸载
先查看openssh的相关包rpm -qa openssh* 然后依次卸载 安装 yum install -y
yum install -y openssh-7.4p1-16.el7.x86_64;yum install -y openssh-clients-7.4p1-16.el7.x86_64;yum install -y openssh-server-7.4p1-16.el7.x86_64
然后重新启动ssh服务
systemctl start sshd.service
通过ssh-keygen -t rsa和ssh-copy-id -i 操作后,免密登录依然需要输入密码问题解决:
目录文件的权限 .ssh父目录的权限是755,.ssh目录权限是700,authorized_keys文件 600
还是有问题。
目录的属主 如果上面方法还没有解决问题,那可能是.ssh父目录的属主存在问题。
这里发现.ssh父目录(..)的属主存在问题。
解决方法:
chown root:root /root
1.9 安装 JDK 环境
用wget命令直接下载的JDK,这是问题的根源。 去Oracle官网下载过jdk , 下载之前需要同意Oracle的安装协议,不然不能下载,但是用wget的方式,默认是不同意,虽然能下载下来,但是下载下来的文件会有问题,所以在Linux上解压一直失败。去官网下载好,然后传到服务器上,再解压就没有问题了。
使用Xshell本地传送JDK到服务器上:
三台 hadoop 主机都需要按照下面步骤安装 JDK 环境
注:安装所需要的软件都在tgz目录下
1、首先执行 java -version 查看 jdk 是否已经安装,如果看到以下内容则表示
已经安装了则可以跳过这一步骤,进入环境部署环节,另外如果版本低于 java version "1.8.0_181"则需要升级到对应版本
[root@hadoop1]# java -version
2、进入软件包位置,将 jdk 安装包复制到/usr/lib/
[root@hadoop1 ~]# cd ~/tgz/
[root@hadoop1 tgz]# cp jdk-8u181-linux-x64.tar.gz /usr/lib
3、进入/usr/lib 目录并解压 jdk-8u181-linux-x64.tar.gz
[root@hadoop1 tgz]# cd /usr/lib
[root@hadoop1 lib]# tar -zxvf jdk-8u181-linux-x64.tar.gz
4、修改环境变量
[root@hadoop1 lib]# vim /etc/profile
添加以下内容:
export JAVA_HOME=/usr/lib/jdk1.8
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
5、更新环境变量
[root@hadoop1 lib]# source /etc/profile
6、执行 java -version 查看是否安装或者更新成功
[root@hadoop1]# java -version
2.hadoop集群环境部署
注:安装所需要的软件都在tgz目录下
2.1 安装 hadoop3.1.1
我们通过在hadoop1进行安装hadoop,然后配置相应的配置文件,最后将hadooop所有文件同步到其它 hadooop 节点(hadoop2、hadoop3)。Hadoop 路径配置为/opt/hadoop-3.1.1
在 hadoop1 执行以下操作:
1、 首先进入软件包目录
[root@localhost ~]# cd /opt/tgz/
2、通过 cp 命令将 hadoop 安装包(hadoop-3.1.1.tar.gz)复制到/opt 目录下
[root@localhost tgz]# cp hadoop-3.1.1.tar.gz /opt/
3、 进入/opt 目录,并解压 hadoop-3.1.1.tar.gz 压缩包
[root@localhost tgz]# cd /opt/
[root@localhost opt]# tar -zxvf hadoop-3.1.1.tar.gz
2.2 配置 hadoop 配置文件
2.2.1 修改 core-site.xml 配置文件
通过 vi 命令修改 core-site.xml 配置文件,在
中间添加以下命令,fs.defaultFS 是用来定义 HDFS 的默认名
称节点路径。就是我们将来访问 HDFS 文件时,如果没有指定路径,就会联系这
里定义的路径的主机,去联系这台主机去寻找其路径。
1、打开 core-site.xml 配置文件命令:
[root@hadoop1]# vim /opt/hadoop-3.1.1/etc/hadoop/core-site.xml
2、添加内容:
fs.defaultFS
hdfs://hadoop1:9000
hadoop.tmp.dir
/opt/hadoop-3.1.1/tmp
2.2.2 修改 hdfs-site.xml 配置文件
通过 vi 命令修改 hdfs-site.xml 配置文件,在
中间添加第 2 步的内容
1、打开 hdfs-site.xml 配置文件:
[root@hadoop1]# vim /opt/hadoop-3.1.1/etc/hadoop/hdfs-site.xml
2、添加内容:
dfs.replication
3
dfs.namenode.name.dir
file:///opt/hadoop-3.1.1/hdfs/name
dfs.datanode.data.dir
file:///opt/hadoop-3.1.1/hdfs/data
dfs.namenode.secondary.http-address
hadoop2:9001
2.2.3 修改 workers 配置文件
通过 vi 命令修改 workers 配置文件,将第一行的localhost改成hadoop1,并在第二行中加入 hadoop2 和 hadoop3
1、打开 workers 配置文件
[root@hadoop1]# vim /opt/hadoop-3.1.0/etc/hadoop/workers
2、添加内容
hadoop1
hadoop2
hadoop3
2.2.4 修改 mapred-site.xml 配置文件
通过 vi 命令修改 mapred-site.xml 配置文件,在
中间添加第 2 步的内容
1、打开 mapred-site.xml 配置文件命令:
[root@hadoop1]# vim /opt/hadoop-3.1.0/etc/hadoop/mapred-site.xml
2、添加内容
mapreduce.framework.name
yarn
mapreduce.application.classpath
/opt/hadoop-3.1.1/etc/hadoop,
/opt/hadoop-3.1.1/share/hadoop/common/*,
/opt/hadoop-3.1.1/share/hadoop/common/lib/*,
/opt/hadoop-3.1.1/share/hadoop/hdfs/*,
/opt/hadoop-3.1.1/share/hadoop/hdfs/lib/*,
/opt/hadoop-3.1.1/share/hadoop/mapreduce/*,
/opt/hadoop-3.1.1/share/hadoop/mapreduce/lib/*,
/opt/hadoop-3.1.1/share/hadoop/yarn/*,
/opt/hadoop-3.1.1/share/hadoop/yarn/lib/*
2.2.5 修改 yarn-site.xml 配置文件
通过 vi 命令修改 yarn-site.xml 配置文件,在
中间添加第 2 步的内容
1、打开 yarn-site.xml 配置文件命令:
[root@hadoop1]# vim /opt/hadoop-3.1.1/etc/hadoop/yarn-site.xml
2、添加内容
yarn.resourcemanager.hostname
hadoop1
yarn.nodemanager.aux-services
mapreduce_shuffle
取消yarn运行模式的运行内存检测,这样就算内存达不到要求也不会kill掉任务
yarn.nodemanager.pmem-check-enabled
false
yarn.nodemanager.vmem-check-enabled
false
2.2.6 修改 hadoop-env.sh 配置文件
通过 vi 命令修改 hadoop-env.sh 配置文件,在第二行中添加第 2 步的内容
1、打开 hadoop-env.sh 配置文件命令:
[root@hadoop1]# vim /opt/hadoop-3.1.1/etc/hadoop/hadoop-env.sh
2、添加内容
export JAVA_HOME=/usr/lib/jdk1.8
4、更新配置文件
[root@hadoop1 ~]# source /opt/hadoop-3.1.0/etc/hadoop/hadoop-env.sh
2.2.7 修改 start-dfs.sh 和 stop-dfs.sh 配置文件
1、打开 start-dfs.sh 配置文件,在第二行中添加以下命令
[root@localhost ~]# vi /opt/hadoop-3.1.1/sbin/start-dfs.sh
添加内容:
export HDFS_NAMENODE_SECURE_USER=root
export HDFS_DATANODE_SECURE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
2、打开 stop-dfs.sh 配置文件,在第二行中添加以下命令
[root@localhost ~]# vi /opt/hadoop-3.1.1/sbin/stop-dfs.sh
添加内容:
export HDFS_NAMENODE_SECURE_USER=root
export HDFS_DATANODE_SECURE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
2.2.8 修改 start-yarn.sh 和 stop-yarn.sh 配置文件
1、打开 start-yarn.sh 配置文件,在第二行中添加以下命令
[root@localhost ~]# vi /opt/hadoop-3.1.1/sbin/start-yarn.sh
添加内容:
export YARN_RESOURCEMANAGER_USER=root
export HADOOP_SECURE_DN_USER=root
export YARN_NODEMANAGER_USER=root
2、打开 stop-yarn.sh 配置文件,在第二行中添加以下命令
[root@localhost ~]# vi /opt/hadoop-3.1.1/sbin/stop-yarn.sh
添加内容:
export YARN_RESOURCEMANAGER_USER=root
export HADOOP_SECURE_DN_USER=root
export YARN_NODEMANAGER_USER=root
2.2.9 取消打印警告信息
由于系统预装的 glibc 库时 2.12 版本,而 hadoop3.1.0 期待的是 2.14 版本,所
以后期启动服务的时候会打印报警信息,我们可以配置取消打印警告信息
1、打开 log4j.properties 配置文件,在首行中添加第 2 步的内容
[root@hadoop1 ~]# vim /opt/hadoop-3.1.1/etc/hadoop/log4j.properties
2、添加内容
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
2.2.10 同步 hadoop1 配置到 hadoop2 和 hadoop3 中
1、同步已经配置好的 hadoop 文件到 hadoop2 上
[root@hadoop1 ~]# cd /opt/
[root@hadoop1 opt]# scp -r hadoop-3.1.1root@hadoop2:/opt/
2、同步已经配置好的 hadoop 文件到 hadoop3 上
[root@hadoop1 ~]# cd /opt/
[root@hadoop1 opt]# scp -r hadoop-3.1.0 root@hadoop3:/opt/
2.2.11 配置三台 hadoop 主机的 profile 文件
1、打开 profile 文件,在最后面添加第 2 步的参数内容
[root@hadoop1 ~]# vim /etc/profile
2、添加内容
#SET HADOOP
HADOOP_HOME=/opt/hadoop-3.1.1
PATH=$HADOOP_HOME/bin:$PATH
export HADOOP_HOME PATH
4、更新环境变量
[root@localhost ~]# source /etc/profile
[root@localhost ~]# source /opt/hadoop-3.1.0/etc/hadoop/hadoop-env.sh
2.3 格式化 HDFS 文件系统
在 hadoop1 上通过 hdfs namenode -format 命令来格式化 HDFS 文件系统
[root@hadoop1 ~]# hdfs namenode -format
表示格式化 HDFS 文件系统完成
3.启动集群
3.1 启动集群
1、启动 hadoop 集群验证是否能正常启动,进入到/opt/hadoop-3.1.1/sbin/目
录下通过./start-all.sh 命令执行启动
[root@hadoop1 ~]# cd /opt/hadoop-3.1.1/sbin/
[root@hadoop1 sbin]# ./start-all.sh
2、在各 hadoop 节点上执行 jps 命令查看 hadoop 进程
[root@hadoop1 ~]# jps
3、通过 web 访问 HDFS 文件系统和 yarn
可以通过以下链接访问 hdfs 和 yarn
公网ip:8088或ip:9870
http://47.101.62.158:8088/cluster
http://47.101.62.158:9870
1.基础环境准备
2.环境部署
2.1 安装 zookeeper3.4.10
2.1.1 首先进入软件包目录
[root@hadoop1 ~]# cd tgz/
2.1.2 把 zookeeper 安装包(zookeeper-3.4.10.tar.gz)解压到/opt 目录下
[root@hadoop1 tgz]# tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/
2.1.3 解压完成后在环境变量中添加 Zookeeper 的安装路径,更新配置文件,使变量生效。
[root@hadoop1 tgz]# vi /etc/profile
添加以下内容:
#SET ZOOKEEPER
export ZOOKEEPER_HOME=/opt/zookeeper-3.4.10
export PATH=$PATH:$ZOOKEEPER_HOME/bin
退出后执行 source /etc/profile 命令更新环境变量
[root@hadoop1 opt]# source /etc/profile
2.2 配置 zookeeper 配置文件
1、进入 zookeeper 配置文件目录:
[root@hadoop1]# cd /opt/zookeeper-3.4.10/conf
2、复制 zoo_sample.cfg 文件为 zoo.cfg
[root@hadoop1]# cp zoo_sample.cfg zoo.cfg
3、创建存放数据的文件夹:
[root@hadoop1 conf]# mkdir /opt/zookeeper-3.4.10/data
4、创建 myid 文件,并加入数字 0 (主节点为 0,从节点分别为 1,2)
[root@hadoop1 conf]# vi /opt/zookeeper-3.4.10/data/myid
5、修改 zoo.cfg 配置文件
[root@hadoop1 conf]# vi /opt/zookeeper-3.4.10/conf/zoo.cfg
将配置文件中 dataDir 的路径改为/opt/zookeeper-3.4.10/data
并在底部中加入以下参数:
server.0=hadoop1:2888:3888
server.1=hadoop2:2888:3888
server.2=hadoop3:2888:3888
zoo.cfg 各语句的含义
tickTime:服务器与客户端之间交互的基本时间单元(ms)
initLimit:允许 follower 连接并同步到 leader 的初始化时间,它以 tickTime
的倍数来表示。当超过设置倍数的 tickTime 时间,则连接失败
syncLimit:Leader 服务器与 follower 服务器之间信息同步允许的最大时间间
隔,如果超过次间隔,默认 follower 服务器与 leader 服务器之间断开链接
dataDir:保存 zookeeper 数据路径
clientPort:客户端访问 zookeeper 时经过服务器端时的端口号
2.2.2 文件同步
1、将 hadoop1 上配置好的 zookeeper 文件同步到 haoop2、hadoop3 节点上:
[root@hadoop1]# scp -r /opt/zookeeper-3.4.10/ root@hadoop2:/opt
[root@hadoop1]# scp -r /opt/zookeeper-3.4.10/ root@hadoop3:/opt
2、将 hadoop1 的环境变量同步到 haoop2、hadoop3 节点上::
[root@hadoop1]# scp -r /etc/profile/ root@hadoop2:/etc/profile
[root@hadoop1]# scp -r /etc/profile/ root@hadoop3:/etc/profile
3、在其它节点上使环境生效:
[root@hadoop2]# source /etc/profile
[root@hadoop3]# source /etc/profile
4、修改 hadoop2 和 hadoop3 上的 myid
在 hadoop2 上将 myid 修改为 1
命令如下:
[root@hadoop2]# vi /opt/zookeeper-3.4.10/data/myid
hadoop1 下的 myid:
hadoop2 下的 myid
hadoop3 下的 myid
启动 zookeeper 集群并测试
3.1 启动 zookeeper
1、分别启动 hadoop1、hadoop2、hadoop3 节点的 zookeeper 集群命令
[root@hadoop1]# zkServer.sh start
[root@hadoop2]# zkServer.sh start
[root@hadoop3]# zkServer.sh start
2、查看是否启动成功命令:
[root@hadoop1]# zkServer.sh status
问题:
1.执行zkServer.sh start 后显示:
JMX enabled by default Using config:/home/hadoop/app/zookeeper-3.4.5/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
2.jps后发现没有QuorumPeerMain进程
3.查看zookeeper-3.4.5/data下的zookeeper-3.4.5.out,如果提示 binding to port 0.0.0.0/0.0.0.0:2181
ERROR [main:QuorumPeerMain@89] - Unexpected exception, exiting abnormally java.net.BindException: Address already in use
说明2181端口被占用,通过netstat -nltp | grep 2181检查是否已被占用,如果有则把对应的进程kill掉(kill 进程的pid),然后再启动zookeeper
4..jps后发现有QuorumPeerMain进程,然后执行zkServer.sh status,如果显示:
JMX enabled by default Using config: /home/hadoop/app/zookeeper-3.4.5/bin/../conf/zoo.cfg Error contacting service. It is probably not running.
说明未启动成功,通过查看zookeeper-3.4.5.out,如果提示
Cannot open channel to 1 at election address hadoop05/10.37.129.105:3888 java.net.NoRouteToHostException: No route to host,说明无法连接远程电脑10.37.129.105:3888,很有可能开启了防火墙
通过sudo service iptables status检查,如果确实开启,则通过sudo service iptables stop将其关闭,最后再查看状态zkServer.sh status
此时,基本都能够正常启动了,提示:
JMX enabled by default Using config: /home/hadoop/app/zookeeper-3.4.5/bin/../conf/zoo.cfg Mode: leader(或follower)
#查看端口有没有被占用
netstat -ntpl | grep 端口号
Top查看进程
Kill -9 进程
1.1 解压安装包 hbase
1.1.1 首先进入软件包目录
[root@hadoop ~]# cd tgz/
1.1.2 解压安装压缩包 将 hbase 安装包(hbase-1.2.7-bin.tar.gz)解压缩到 /opt 目录下
[root@hadoop tgz]# tar -zxvf hbase-1.2.7-bin.tar.gz -C /opt
1.1.3 进入到/opt 目录
[root@hadoop ~]# cd /opt
1.1.4 将解压的安装包重命名
[root@hadoop ~]# mv hbase-1.2.7 /opt/hbase
1.1.5 配置环境变量 加入 hbase 的安装路径
[root@hadoop conf]# vi /etc/profile
在文件的最底部加入下面内容
export HBASE_HOME=/opt/hbase
export PATH=$PATH:$HBASE_HOME/bin
配置如图:
退出后执行 source /etc/profile 命令更新环境变量
[root@hadoop conf]# source /etc/profile
1.2:搭建 Hbase 伪分布模式
hadoop1
NameNode
DataNode
NodeManager
ResourceManager
SecondaryNameNode
HMaster
QuorumPeerMain
HRegionServer
1.2.1 按照上述 1.1 解压缩后进入到配置文件 conf 目录
[root@hadoop opt]# cd /opt/hbase/conf/
1.2.2 编辑 hbase-site.xml
[root@hadoop conf]# vi hbase-site.xml
添加内容
hbase.rootdir
hdfs://localhost:9000/hbase
hbase.cluster.distributed
true
配置参数说明:
hbase.rootdir:该参数制定了 HReion 服务器的位置,即数据存放的位置。主要端口
号要和 Hadoop 相应配置一致。
hbase.cluster.distributed:HBase 的运行模式。false 是单机模式,true 是分布式模式。
若为 false, HBase 和 Zookeeper 会运行在同一个 JVM 里面。默认为 false。
1.2.3 编辑 hbase-env.sh 设置 JAVA_HOME
[root@hadoop conf]# vi hbase-env.sh
修改 export JAVA_HOME=/usr/lib/jdk1.8/
修改后如下:
1.2.4 启动 hbase
进入到 hbase 的 bin 目录
[root@hadoop conf]# cd /opt/hbase/bin/
启动 hbase
[root@hadoop bin]# ./start-hbase.sh
1.3:搭建 Hbase 完全分布模式
序号 主机 角色 Ip 主机名 账户 密码
hadoop1
NameNode
ResourceManager
HMaster
QuorumPeerMain
hadoop2
DataNode
NodeManager
HRegionServer
QuorumPeerMain
hadoop3
NodeManager
DataNode
HRegionServer
QuorumPeerMain
1.3.1 完全配置好的 hadoop 集群(需要启动)
参考 hadoop 完全分布式搭建
1.3.2 完全配置好的 zookeeper 集群(需要启动)
参考 zookeeper 完全分布式搭建
1.3.3 按照上述 1.1 解压缩后进入到配置文件 conf 目录
[root@hadoop1 opt]# cd /opt/hbase/conf/
如上图:需要修改 hbase-site.xml、regionservers、hbase-env.sh 三个配置文件
1.3.4 编辑 hbase-site.xml
[root@hadoop1 conf]# vi hbase-site.xml
加入下面内容
hbase.rootdir
hdfs://hadoop1:9000/hbase
hbase.cluster.distributed
true
hbase.zookeeper.quorum
hadoop1,hadoop2,hadoop3
配置参数说明:
在上面的配置文件中,第一个属性指定本机的 hbase 的存储目录;第二个属性指定 hbase 的运行
模式,true 代表全分布模式;第三属性是关于 Zookeeper 集群的配置。我的 Zookeeper 安装在 hadoop1
和 hadoop2、hadoop3 上。
1.3.5 修改 regionservers
[root@hadoop1 conf]# vi regionservers
在 regionservers 文件中添加如下内容 (删除原来里面的 localhost)
hadoop2
hadoop3
1.3.7 编辑 hbase-env.sh 设置 JAVA_HOME
[root@hadoop conf]# vi hbase-env.sh
修改 export JAVA_HOME=/usr/lib/jdk1.8/
修改 export HBASE_MANAGES_ZK=false (使用我们自己搭建的 zookeeper 集群)
1.3.8 将在 hadoop1 上配置好的安装包分发到 hadoop2 和 hadoop3 上
scp -r /opt/hbase/ hadoop2:/opt
scp -r /opt/hbase/ hadoop3:/opt
1.3.9 启动 hbase 集群
在 hadoop1 上进入到 hbase 的 bin 目录
[root@hadoop conf]# cd /opt/hbase/bin/
启动 hbase
[root@hadoop bin]# ./start-hbase.sh
在每个节点上分别用 jps 查看进程
hadoop1 上 HMaster
hadoop2 上 HRegionServer
hadoop3 上 HRegionServer
2:Hbase 基本操作
2.1、Hbase Shell 命令
使用 hbase shell 命令来连接正在运行的 Hbase 实例 按照上述 1 步骤配置好环境变量
后可以直接在命令行输入 hbase shell 来启动 hbase
启动成功如下:
2.2:显示 HBase Shell 帮助文档
输入 help 并按 Enter 键,可以显示 HBase Shell 的基本使用信息
2.3:退出 HBase Shell
使用 quit 命令,退出 HBase Shell 并且断开和集群的连接,但此时 HBase 仍然在后台运
行,也可以直接 ctrl+c
2.4:查看 HBase 状态 直接输入 status 回车
3、hbase 数据定义(DDL)操作
3.1:创建新表
使用 create 命令来创建一个新的表。在创建的时候,必须指定表名和列族名。
create 'user', 'info '
3.2: 列举表信息
使用 list 命令
list 'user'
3.3:获取表描述
使用 describe 命令
describe 'user'
3.4:检查表是否存在
使用 exists 命令
exists 'user'
操作结果图如下:
3.5:删除表
删除表之前,先 disable 表,再使用 drop 命令实现删除表的功能
drop 'user'
操作结果图如下:
4、数据管理(DML)操作
4.1:在上述步骤 3 中删除了 user 表,重新创建一张 user 表
create 'user', 'info'
4.2:向表中插入数据
使用 put 命令,将数据插入表中:
put 'user', 'row1', 'info:a', 'value1'
4.3:一次性扫描全表数据
一种获取 HBase 数据的方法是扫描,使用 scan 命令来扫描表的数据。(可以限制扫描的
范围)
scan 'user'
4.4:获取一个行数据
使用 get 命令来获得某一行的数据:
get 'user', 'row1'
4.5:禁用一个表
如果你想要删除一个表或是修改它的设置,或者是其它的情况,都需要首先禁用该表。
使用 disable 命令禁用表,enable 命令重新启用表。
disable 'user'
enable 'user'
如下图所示:
6:删除数据
删除行中的某个列值
# 语法:delete
, , ,
delete 'user','rowkey001','info:a'
删除行
# 语法:deleteall
, , ,
deleteall 'user','row1'
删除表中的所有数据
# 语法: truncate
truncate 'user'
1.1首先进入软件包目录
[root@hadoop1 ~]# cd tgz/
1.2解压缩mysql到/usr/local目录
[root@hadoop1 haoodp-install]# tar -zxvf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
1.3进入到/usr/local目录并重命名
[root@hadoop1 haoodp-install]# cd /usr/local/
[root@hadoop1 local]# mv mysql-5.6.40-linux-glibc2.12-x86_64 mysql
1.4添加组用户
[root@hadoop1 local]# groupadd mysql
添加用户mysql 到用户组mysql
[root@hadoop1 local]# useradd -g mysql mysql
1.5安装mysql
Centos7将默认数据库mysql替换成了Mariadb
[root@localhost ~]# rpm -qa|grep mariadb // 查询出来已安装的mariadb
[root@localhost ~]# rpm -e --nodeps 文件名 // 卸载mariadb,文件名为上述命令查询出来的文件
yum remove mariadb
rm -rf /etc/my.cnf
rm -rf /var/lib/mysql/
yum --setopt=tsflags=noscripts remove MariaDB-client.x86_64;
删除etc目录下的my.cnf
1.5.1进入到安装包目录
[root@hadoop1 local]# cd /usr/local/mysql
1.5.2创建data目录下mysql文件夹
[root@hadoop1 mysql]# mkdir ./data/mysql
cd data
chown -R mysql:mysql mysql
依赖问题:
yum install -y perl perl-devel autoconf
yum install -y libaio.so.1
yum remove libnuma.so.1
yum -y install numactl.x86_64
1.5.3授权并执行脚本
[root@hadoop1 mysql]# chown -R mysql:mysql ./
[root@hadoop1 mysql]# chown -R mysql:mysql /usr/local/mysql
[root@hadoop1 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql
如果报错进行如下操作yum install -y perl-Module-Install.noarch,然后在./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql
1.5.4复制mysql服务文件到/etc/init.d目录下并重命名
[root@hadoop1 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
1.5.5修改服务文件权限
[root@hadoop1 mysql]# chmod 777 /etc/init.d/mysqld
1.5.6复制mysql的配置文件并重命名
[root@hadoop1 mysql]# cp support-files/my-default.cnf /etc/my.cnf
1.5.7修改mysql启动脚本
[root@hadoop1 mysql]# vi /etc/init.d/mysqld
修改下面内容
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/mysql
1.5.8配置环境变量 加入mysql的安装路径
[root@hadoop1 conf]# vi /etc/profile
在文件的最底部加入下面内容
export PATH=$PATH:/usr/local/mysql/bin
退出后执行source /etc/profile命令更新环境变量
[root@hadoop1 conf]# source /etc/profile
1.5.10给mysql添加远程登录
[root@hadoop1 mysql]# vi /etc/my.cnf
在[mysqld]下面加
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
server_id=1
socket=/tmp/mysql.sock
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
1.5.11初始化mysql
[root@hadoop1 mysql]# /usr/local/mysql/scripts/mysql_install_db --user=mysql
1.5.12启动mysql服务
[root@hadoop1 mysql]# service mysqld start
查看mysql服务状态
[root@hadoop1 ~]# service mysqld status
1.5.13登录mysql
[root@hadoop1 ~]# mysql -u root -p
第一次登录不需要密码,直接回车
1.5.14设置本机mysql用户名和密码
mysql> use mysql;
mysql> update user set password =password('root') where user ='root';
1.5.15添加远程登录用户
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;
1.5.14创建hive数据库,来存储hive元数据信息
mysql>create database hive;
可以直接Ctrl+c 退出mysql或者exit
2.安装Hive
2.1首先进入软件包目录
[root@hadoop ~]# cd tgz/
2.2解压安装压缩包 将hive安装包(apache-hive-2.3.3-bin.tar.gz)解压缩到/opt目录下
[root@hadoop tgz]# tar -zxvf apache-hive-2.3.3-bin.tar.gz -C /opt
2.3进入到/opt目录
[root@hadoop ~]# cd /opt
2.4将解压的安装包重命名
[root@hadoop opt]# mv apache-hive-2.3.3-bin hive
2.5配置环境变量 加入hive的安装路径
[root@hadoop conf]# vi /etc/profile
在文件的最底部加入下面内容
export HIVE_HOME=/opt/hive
export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH
退出后执行source /etc/profile命令更新环境变量
[root@hadoop conf]# source /etc/profile
2.6.配置hive
2.6.1 进入到hive的配置文件目录
[root@hadoop opt]# cd /opt/hive/conf/
2.6.2 复制hive-env.sh.template 一份并重命名为hive-env.sh
[root@hadoop conf]# cp hive-env.sh.template hive-env.sh
修改hive-env.sh,设置加入HADOOP_HOME=/opt/hadoop-3.1.1
[root@hadoop conf]# vi hive-env.sh
2.6.3 新建hive-site.xml
[root@hadoop conf]# vi hive-site.xml
需要在 hive-site.xml 文件中配置 MySQL 数据库连接信息 复制下面内容到新建文件中
javax.jdo.option.ConnectionURL
jdbc:mysql://localhost:3306/hive?characterEncoding=UTF-8
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName
root
javax.jdo.option.ConnectionPassword
root
2.6.4 配置mysql的驱动 将mysql驱动放到hive安装路径的lib目录下
[root@hadoop1]# cp tgz/mysql-connector-java-5.1.47.jar /opt/hive/lib/
2.6.5 hive在启动前到进行元数据初始化
[root@hadoop1 conf]# schematool -dbType mysql -initSchema
看到schemaTool completed 则初始化完成
检测hive 是否成功 直接在命令行输入hive即可hive (需要hadoop安装并启动)
启动成功如下:
scala下载: https://www.scala-lang.org/download/
https://downloads.lightbend.com/scala/2.12.7/scala-2.12.7.tgz
解压到/opt下
vim /etc/profile
export PATH=$PATH:/opt/scala/bin
source /etc/profile
$ scala
安装前提
Java1.8 zookeeper hadoop Scala
集群规划
二 集群安装
1 解压缩
tar zxvf spark-2.3.1-bin-hadoop2.7.tgz -C /opt/
mv spark-2.3.1-bin-hadoop2.7 spark
2 修改配置文件
(1)进入配置文件所在目录cd /opt//spark/conf/
(2)复制spark-env.sh.template并重命名为spark-env.sh
cp spark-env.sh.template spark-env.sh
vi spark-env.sh
编辑并在文件末尾添加如下配置内容
export JAVA_HOME=/usr/lib/jdk1.8
#指定默认master的ip或主机名
export SPARK_MASTER_HOST=hadoop1
#指定master提交任务的默认端口为7077
export SPARK_MASTER_PORT=7077
#指定master节点的webui端口
export SPARK_MASTER_WEBUI_PORT=8080
#每个worker从节点能够支配的内存数
export SPARK_WORKER_MEMORY=1g
#允许Spark应用程序在计算机上使用的核心总数(默认值:所有可用核心)
export SPARK_WORKER_CORES=1
#每个worker从节点的实例(可选配置)
export SPARK_WORKER_INSTANCES=1
#指向包含Hadoop集群的(客户端)配置文件的目录,运行在Yarn上配置此项
export HADOOP_CONF_DIR=/opt/hadoop-3.1.1/etc/hadoop
#指定整个集群状态是通过zookeeper来维护的,包括集群恢复
export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=hadoop1:2181,hadoop2:2181,hadoop3:2181
-Dspark.deploy.zookeeper.dir=/spark"
cd /opt/spark/conf
cp log4j.properties.template log4j.properties
Log4j.rootCategory=INFO, console修改为
Log4j.rootCategory=WARN, console
(3)复制slaves.template成slaves,并修改配置内容
cp slaves.template slaves
vi slaves
修改从节点
hadoop1
hadoop2
hadoop3
(4)将安装包分发给其他节点
修改hadoop2节点上conf/spark-env.sh配置的MasterIP为SPARK_MASTER_IP=hadoop2
修改hadoop3节点上conf/spark-env.sh配置的MasterIP为SPARK_MASTER_IP=hadoop3
3 配置环境变量
所有节点均要配置
vi /etc/profile
export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HDFS_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
source /etc/profile
三 启动集群
1 启动zookeeper集群
所有zookeeper节点均要执行
zkServer.sh start
2 启动Hadoop集群
3 启动Spark集群
启动spark:启动master节点:sbin/start-master.sh 启动worker节点:sbin/start-slaves.sh
或者:sbin/start-all.sh
注意:备用master节点hadoop2,hadoop3需要手动启动
sbin/start-master.sh
4 查看进程
启动spark
cd /opt/spark/bin
./pyspark
./spark-shell
1.解压缩
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /opt/
cd /opt/
重命名mv sqoop-1.4.7.bin__hadoop-2.6.0/ sqoop
2.修改环境变量vi /etc/profile
export SQOOP_HOME=/opt/sqoop
export PATH=$SQOOP_HOME/bin:$PATH
source /etc/profile
3.将MySQL的驱动拷贝到lib下
4.修改sqoop-env-template.sh,配置HADOOP_HOME、HBASE_HOME、HIVE_HOME路径
vim sqoop-env-template.sh
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=
#set the path to where bin/hbase is available
export HBASE_HOME=
#Set the path to where bin/hive is available
export HIVE_HOME=
5.修改$SQOOP_HOME/bin/configure-sqoop
注释掉HCatalog,Accumulo检查(除非你准备使用HCatalog,Accumulo等HADOOP上的组件)
## Moved to be a runtime check in sqoop.
#if [ ! -d "${HCAT_HOME}" ]; then
# echo "Warning: $HCAT_HOME does not exist! HCatalog jobs willfail."
# echo 'Please set $HCAT_HOME to the root of your HCatalog installation.'
#fi
#if [ ! -d "${ACCUMULO_HOME}" ];then
# echo "Warning: $ACCUMULO_HOME does not exist! Accumulo imports willfail."
# echo 'Please set $ACCUMULO_HOME to the root of your Accumuloinstallation.'
#fi
执行:sqoop version
测试连接:显示mysql数据库列表:
sqoop list-databases --connect jdbc:mysql://ip:3306/ --username hive --password hive
显示数据库里所有表:
sqoop list-tables --connect jdbc:mysql://ip:3306/hive --username hive --password hive
环境
centos:7.3
JDK:1.8
Flume:1.8
一、Flume 安装
1、下载
wget http://mirrors.tuna.tsinghua.edu.cn/apache/flume/1.8.0/apache-flume-1.8.0-bin.tar.gz
2、解压
tar –zxvf apache-flume-1.8.0-bin.tar.gz
mv apache-flume-1.8.0-bin /usr/local/flume
3、设置环境变量
export FLUME_HOME=/opt/flume
export PATH=$FLUME_HOME/bin:$PATH
Source /etc/profile
4、配置java_home
cp flume-env.sh.template flume-env.sh
vim flume-env.sh
export JAVA_HOME=/usr/lib/jdk1.8
export HADOOP_HOME=/opt/hadoop-3.1.1
查看版本:flume-ng version
至此大数据环境平台基本搭建完成,各环节具体配置文件还需视情况而配。此文仅供参考,如有错误,望指出。感激不尽!
业务搭载离不了云服务器,选择合适的平台最重要!
从目前国内云计算市场的格局来看,国内云计算前三强分别是阿里云、腾讯云和华为云,阿里云、腾讯云作为背靠互联网平台的企业,更偏向于B端用户;华为与作为传统的通信巨头,更偏向于G端。
本人从事云计算相关工作至今已有多年,国内主流的云平台都接触过,包括他们的销售及技术团队,对各家的产品也小有了解,并且指导过数百家企业迁移上云,对云平台选择也有一定的发言权!
网上有很多评测,评测数据也五花八门,说谁好的都有,这个两篇博文分析汇总的非常详细,分享给大家,文档地址:
博文1:云服务器哪家好!阿里云、腾讯云、华为云的服务器配置及价格对比?
博文2:阿里云服务器突发型t6、n4、s6、c5、c6怎么选?和腾讯云服务器标准型s3、sn3ne、s4、s5、sa2相比哪家好?全面解析
如果是高并发,高IO业务场景,需要确定服务器规格,可让业务应用性能发挥到最佳,参考官方文档:
阿里云服务器规格:规格实例族 - 云服务器 ECS
腾讯云服务器规格:规格实例族 - 云服务器CVM
你可能感兴趣的:(腾讯云,服务器,云计算)
2025年开发者工具全景图:IDE与AI协同的效能革命
He.Tech
ide 人工智能
2025年开发者工具全景图:IDE与AI协同的效能革命(基于CSDN、腾讯云等平台技术文档与行业趋势分析)一、核心工具链的务实演进与配置指南主流开发工具的升级聚焦于工程化适配与智能化增强,以下是2025年开发者必须掌握的配置技巧:1.VSCode:性能优化与远程协作标杆核心特性:CUDA核心利用率分析:通过NVIDIANsight插件优化GPU计算任务,需在settings.json中添加:"ns
ubuntu高并发内核参数调优 - (压测客户端调优)
sj1163739403
Linux系统 ubuntu
业务上要求集群提供10w+并发,10w+并发听上去不是很难,但10w并发持续1小时呢在业务上线之前还需要我们自己对业务进行压测,俗称benchmark。压测的服务器也是需要进行性能调优的,以下列出调优前后的参数对比,更直观的分析和感受参数对程序的影响压测前内核参数自检#!/bin/bash#脚本名称:check_benchmark_server_kernel_params.sh#描述:查询压测服务
nginx性能优化有哪些方式?
企鹅侠客
linux 面试 nginx 性能优化 php
0.运维干货分享软考高级系统架构设计师备考学习资料软考高级网络规划设计师备考学习资料KubernetesCKA认证学习资料分享信息安全管理体系(ISMS)制度模板分享免费文档翻译工具(支持word、pdf、ppt、excel)PuTTY中文版安装包MobaXterm中文版安装包pinginfoview网络诊断工具中文版Nginx是一个高性能的HTTP服务器和反向代理服务器,但在高并发场景下,仍然有
代理IP防“开盒”?技术人实测后的真相与防护指南
小白iP代理
tcp/ip 网络 系统安全
近年来“开盒”攻击事件频发,最近更是暴出百度副总裁12岁女儿”开盒“他人。技术人该如何保护隐私?本文从代理IP的原理出发,结合实测数据与攻防案例,分析代理技术的真实作用与局限,并提供一套可落地的防护方案。一、什么是“开盒”攻击?“开盒”(Doxxing)是一种通过技术手段挖掘并公开他人隐私信息的网络暴力行为,常见攻击路径包括:IP追踪:通过社交平台、游戏服务器等获取目标IP地址数据关联:利用社工库
RabbitMQ中如何确保你的消息只被消费一次
昔我往昔
MQ rabbitmq ruby 分布式
在SpringBoot项目中,确保RabbitMQ消息只被消费一次是一个常见且重要的问题。为了确保消息在RabbitMQ中只被消费一次,我们通常依赖于消息确认机制(acknowledgment),以及幂等性设计。以下是一些常见的做法来实现这一目标。1.使用消息确认机制(Ack)RabbitMQ提供了消息确认机制,允许消费者在成功处理消息后通知RabbitMQ服务器。这可以确保在消息消费完成前,不会
【微信小程序变通实现DeepSeek支持语音】
技术与健康
微信小程序 小程序
微信小程序实现录音转文字,并调用后端服务(Node.js)进行语音识别和,然后调用DeepSeek处理的完整实现。整体架构前端(微信小程序):实现录音功能。将录音文件上传到后端。接收后端返回的语音识别结果,并显示在可编辑的文本框中。调用DeepSeek处理文本。后端(Node.js):接收小程序上传的录音文件。调用腾讯云语音识别(ASR)服务,将语音转换为文字。返回识别结果给小程序。提供DeepS
物联网为什么用MQTT不用 HTTP 或 UDP?
工程师焱记
物联网 http udp 硬件架构 嵌入式硬件 开源协议 网络
先来两个代码对比,上传温度数据给服务器。MQTT代码示例//MQTT客户端连接到MQTT服务器mqttClient.connect("mqtt://broker.server.com:8883",clientId)//订阅特定主题mqttClient.subscribe("sensor/data",qos=1)//发布消息到主题mqttClient.publish("sensor/data","t
CDN与RTC(实时通信)技术
百态老人
实时音视频
CDN(内容分发网络)和RTC(实时通信技术)是两种在现代互联网应用中广泛使用的技术,它们各自具有独特的特点和应用场景。CDN的特点与应用CDN通过在全球范围内部署边缘节点,将内容缓存到用户附近的服务器上,从而减少网络延迟,提高访问速度和用户体验。其主要优势包括:加速静态和动态内容的加载:通过缓存机制和智能路由,CDN可以显著提升网站和应用的响应速度。优化用户体验:通过减轻源服务器的负载,CDN能
腾讯云服务器标准型s2/sa1/sa2区别在哪?如何选择?
m0_58271257
腾讯云
腾讯云服务器标准型实例包括很多种不同机型的型号。本文主要说S2实例、sa1实例和sa2实例。这三款实例都是腾讯云页面比较常见的机型。这样对于新用户就容易产生困扰,不知道该选择哪个。下面详细说说在腾讯云常看到的这几款云服务器区别在哪,又该依据什么选择。我们选择电脑、服务器首先关心的都是CPU、内存怎么样。所以先这两个地方对比结果。CPU处理器不同1、标准型S2是于IntelCPU,也就是Intel云
腾讯云与阿里云,哪个更好些?
云计算开发者小李
阿里云 腾讯云
借用一部电视剧的名字:都挺好!根据IDC最新的数据统计显示,国内前二的云计算平台分别是阿里云、腾讯云,分别背靠阿里、腾讯两大互联网集团,接下来我们就简单的介绍下两大平台。阿里云:国内最早成立的云计算平台,并且一开始就是独立运营,马爸爸宣称每年投入10亿,连续投入10年,最终阿里云的发展没有让阿里人失望,目前已成长为超千亿美元的独角兽,阿里云也由最早的带有明显淘系特色的云平台成长为综合性的云计算平台
智慧交通是什么,可以帮助我们解决什么问题?
Guheyunyi
运维 大数据 人工智能 信息可视化 前端
智慧交通是什么?智慧交通(SmartTransportation)是指利用物联网(IoT)、大数据、人工智能(AI)、云计算、5G通信等先进技术,对交通系统进行智能化管理和优化,以提高交通效率、减少拥堵、降低事故率、提升出行体验,并实现交通资源的合理配置和可持续发展。智慧交通的核心是通过数据采集、分析和应用,实现交通系统的智能化、自动化和协同化,从而构建一个高效、安全、绿色、便捷的交通生态系统。智
物理服务器与云服务器的区别是什么
苹果企业签名分发
服务器 运维
首先,我需要确定用户的基本背景。可能是一个刚开始学习服务器知识的学生,或者是一个企业里负责IT基础设施的人员,想要了解如何选择服务器类型。不管怎样,用户需要的是两者的核心区别,可能还涉及成本、性能、管理等方面的考虑。物理服务器和云服务器,这两个概念在硬件、部署方式、资源管理上都有不同。首先,物理服务器是实实在在的硬件设备,企业自己购买和维护,而云服务器是基于虚拟化技术的资源,由云服务商提供,用户按
火山云服务器在市场中的用户占有量
苹果企业签名分发
服务器 火山引擎
火山云服务器(即字节跳动旗下的火山引擎云服务)作为云计算市场的新兴参与者,其用户占有量目前尚未进入行业前列,但凭借字节跳动的技术背景和资源支持,正在逐步扩大市场渗透。以下是综合市场现状的分析:---###**1.整体市场格局**-**中国云计算市场前三**:阿里云、华为云、腾讯云占据主导地位(合计超60%份额)。-**第二梯队**:天翼云、AWS中国、百度智能云、京东云等。-**火山引擎**:属于
SSL证书失效?用户数据还安全吗?
ssl证书
一、SSL证书:数据安全的“护盾”SSL证书,全称为安全套接层证书,它通过在浏览器和服务器之间建立加密通道,确保数据传输的保密性、完整性与真实性。当用户访问一个启用SSL证书的网站时,数据被加密成密文,外人难以窃取或篡改,犹如给数据穿上了一层坚固的铠甲。SSL证书申请流程↓快速申请入口直接访问JoySSL,注册一个账号,记得填写注册码230931,获得技术支持二、证书失效瞬间:风险乍现一旦SSL证
如何申请内网 IP 证书
ssl证书
一、明确需求与规划在企业或特定内部网络环境中,开启申请内网IP证书流程的首要任务是明确自身需求并做好精细规划。要仔细确定内网中究竟哪些服务器、应用程序或服务亟待IP证书的加持,这可能涉及到企业内部的办公系统、数据库服务器、关键业务应用等诸多关键节点。二、选择合适的证书颁发机构(CA)完成需求规划后,紧接着便是抉择恰当的证书颁发机构。对于内网场景,有两种主流途径:一是企业自主搭建内部CA二是选用专业
Java面试八股之Redis集群Cluster
天哥不爱学习
Java面试八股文 java 面试 redis
Redis集群ClusterRedisCluster是一种基于数据分片(Sharding)的分布式缓存和存储系统,它实现了数据的水平扩展、高可用性和自动故障转移。以下是对RedisCluster模式详细实现流程的描述:1.初始化与配置部署节点:在不同的服务器上部署多个Redis节点,每个节点既可以作为主节点也可以作为从节点。配置集群模式:为每个节点启用Cluster模式,指定Cluster所需的端
2023年中职网络安全——SQL注入测试(PL)解析
旺仔Sec
网络安全职业技能大赛任务解析 服务器 运维 web安全 sql 网路安全
SQL注入测试(PL)任务环境说明:服务器场景:Server2312服务器场景操作系统:未知(关闭链接)已知靶机存在网站系统,使用Nmap工具扫描靶机端口,并将网站服务的端口号作为Flag(形式:Flag字符串)值提交。访问网站/admin/pinglun.asp页面,此页面存在SQL注入漏洞,使用排序语句进行列数猜测,将语句作为Flag(形式:URL无空格)值提交。页面没有返回任何有用信息,尝试
Socketioxide:Rust 中的 Socket.IO 服务器实现
时闯虎
Socketioxide:Rust中的Socket.IO服务器实现socketioxideAsocket.ioserverimplementationinRustthatintegrateswiththeTowerecosystemandtheTokiostack.项目地址:https://gitcode.com/gh_mirrors/so/socketioxide项目介绍Socketioxide
NestJS Bull 和 BullMQ 模块:高效、可扩展的后端应用框架
严微海
NestJSBull和BullMQ模块:高效、可扩展的后端应用框架bullBullmoduleforNestframework(node.js):cow:项目地址:https://gitcode.com/gh_mirrors/bul/bull项目介绍NestJS是一个基于Node.js的渐进式框架,专为构建高效且可扩展的服务器端应用程序而设计。NestJSBull和BullMQ模块是其生态系统中的
Cookies 详解:工作原理、使用方法及安全性
才华是浅浅的耐心
python java javascript
1.什么是Cookie?Cookie是存储在用户浏览器中的小型文本数据,通常用于保存用户会话信息、个性化设置以及跨页面的数据共享。它是Web服务器与客户端浏览器之间的一种状态管理机制,常用于爬虫的会话凭证。查看方式:打开网站-登录-打开开发正工具-点击网络-刷新-点击一个包-查看表头(有的需要禁用缓存才能看见)2.Cookie的作用会话管理:如用户登录状态的保持。个性化设置:存储用户偏好,如主题、
TDE透明加密技术:免改造实现华为云ECS中数据库和文件加密存储
安 当 加 密
华为云 数据库
在数字经济与云计算深度融合的今天,华为云ECS(弹性云服务器)已成为企业数字化转型的核心载体,承载着数据库、文件存储、AI训练等关键业务。然而,云上数据安全形势日益严峻:2024年全球云环境勒索攻击同比激增210%,密钥泄露、权限失控、合规失效成为企业上云的三大痛点。作为国内数据安全领域的领军者,上海安当推出的TDE透明加密技术,以“存储层无感加密、密钥全生命周期管理、动态防勒索”为核心,为华为云
使用vscode连接到华为云WordPress服务器
北洋水师总督
vscode 华为云 服务器
1.在vscode中安装扩展Remote-ssh2.连接到华为云服务器打开ssh按下Ctrl+Shift+P快捷键,出现窗口选择其中的Remote-SSH:ConnecttoHost输入远程主机的IP地址,前加root@。
[email protected] 输入密码,等待配置完成。连接成功
图片压缩及水印添加概述华为云微认证
大嘴巴子
华为网络技术 华为 华为云 网络
一、图片压缩和水印添加概述(1)为更好地传输,存储和辨识数据;使用压缩降低图片大小,节约了成本;图片压缩:简单易用;;图片压缩软件:功能单一;网页在线图片压缩;自设图片压缩代码:需要变成基础;使用云服务批量压缩:适合批量处理,可结合自设代码;(2)水印:logo增加辨识,盖章表示版权;附加信息,可增加了地点等信息;二、函数工作流简介(1)是华为云提供的一款无服务器计算服务,它包含了函数和工作流两个
libwebsockets实现异步websocket客户端,服务端异常断开可重连
jbjhzstsl
websocket
libwebsocketswebsocket客户端基本流程网上都有,我只额外优化了重连机制。在服务器异常断开时不触发LWS_CALLBACK_CLOSED或LWS_CALLBACK_CLIENT_CONNECTION_ERROR,导致无法自动重连通过定时检查链接是否可写入判断链接是否有效//判断wsi是否可用if((std::chrono::duration_cast(std::chrono::s
macos 搭建 ragflow 开发环境
Dickence
macos
ragflow是一个很方便的本地RAG库。本文主要记录一下在本机的部署过程1、总体架构说明开发环境:macbookpro(m1),16G内存+512G固态因本机的内存和硬盘比较可怜,所以在服务器上部署基础docker包,本机仅运行rag-server部分。服务器环境:28核56线程,64G,CentOS82、服务器部署服务器安装docker,过程略服务器安装docker-compose,过程略安装
SQL优化之MySQL执行计划(Explain)及索引失效详解
一未道
# 性能优化 大数据 sql mysql 数据库
1、执行计划基础1.1、执行计划(Explain)定义在MySQL中可以通过explain关键字模拟优化器执行SQL语句,从而解析MySQL是如何处理SQL语句的。1.2、MySQL查询过程客户端向MySQL服务器发送一条查询请求服务器首先检查查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段服务器进行SQL解析、预处理、之后由优化器生成对应的执行计划MySQL根据执行计划,调
HAProxy的ACL
Hurry6
网络 服务器 运维
访问控制列表(ACL,AccessControlLists)是一种基于包过滤的访问控制技术,它可以根据设定的条件对经过服务器传输的数据包进行过滤(条件匹配),即对接收到的报文进行匹配和过滤,基于请求报文头部中的源地址、源端口、目标地址、目标端口、请求方法、URL、文件后缀等信息内容进行匹配并执行进一步操作,比如允许其通过或丢弃。定义ACL匹配规范,即:判断条件hdrstring,提取在一个HTTP
Rocky Linux安装部署Elasticsearch(ELK日志服务器)_rockylinux elk
2401_83739411
程序员 服务器 linux elasticsearch
一、Elasticsearch的简介Elasticsearch是一个强大的开源搜索和分析引擎,可用于实时处理和查询大量数据。它具有高性能、可扩展性和分布式特性,支持全文搜索、聚合分析、地理空间搜索等功能,是构建实时应用和大规模数据分析平台的首选工具。二、RockyLinux系统安装链接:VMwareWorkstation下载安装(含秘钥)链接:VMwareWorkstation创建虚拟机链接:Ro
基于STM32+微信小程序设计的环境监测系统(腾讯云IOT)
DS小龙哥
智能家居与物联网项目实战 stm32 微信小程序 腾讯云
一、设计需求基于STM32设计的环境检测系统(腾讯云物联网+微信小程序实现)【1】项目背景随着人们生活水平的提高,人们对生活环境的求越来越高尤其是在家居环境有害气体污染已经引起了人们的注意,温度和湿度控制等。有关研究人员发现,天然气主要组成部分为甲烷气,而且还有少量的乙烷、丙烷、丁烷等烷烃,还含有二氧化碳、氧、氮、硫化氢、水分等。甲醛是一种破坏生物细胞蛋白质的原生质毒物,会对人的皮肤、呼吸道及内脏
TCP 通信流程图
U_p_
计算机网络知识 网络 服务器 windows
下面给出一个详细的TCP通信流程图,演示客户端(Client)与服务器(Server)之间通过TCP协议进行通信时的各个步骤。这里假设:服务器IP:192.168.1.100,监听80端口客户端IP:192.168.1.200,使用随机分配的端口(示例中为50000)下面的流程图按三次握手、数据交互、四次挥手的顺序展示。为便于阅读,采用ASCII画出大致示意。┌──────────────────
C/C++Win32编程基础详解视频下载
择善Zach
编程 C++ Win32
课题视频:C/C++Win32编程基础详解
视频知识:win32窗口的创建
windows事件机制
主讲:择善Uncle老师
学习交流群:386620625
验证码:625
--
Guava Cache使用笔记
bylijinnan
java guava cache
1.Guava Cache的get/getIfPresent方法当参数为null时会抛空指针异常
我刚开始使用时还以为Guava Cache跟HashMap一样,get(null)返回null。
实际上Guava整体设计思想就是拒绝null的,很多地方都会执行com.google.common.base.Preconditions.checkNotNull的检查。
2.Guava
解决ora-01652无法通过128(在temp表空间中)
0624chenhong
oracle
解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程
一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle的错误代码说明:意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是不能自动扩展。
分析过程:
既然是temp表空间有问题,那当
Struct在jsp标签
不懂事的小屁孩
struct
非UI标签介绍:
控制类标签:
1:程序流程控制标签 if elseif else
<s:if test="isUsed">
<span class="label label-success">True</span>
</
按对象属性排序
换个号韩国红果果
JavaScript 对象排序
利用JavaScript进行对象排序,根据用户的年龄排序展示
<script>
var bob={
name;bob,
age:30
}
var peter={
name;peter,
age:30
}
var amy={
name;amy,
age:24
}
var mike={
name;mike,
age:29
}
var john={
大数据分析让个性化的客户体验不再遥远
蓝儿唯美
数据分析
顾客通过多种渠道制造大量数据,企业则热衷于利用这些信息来实现更为个性化的体验。
分析公司Gartner表示,高级分析会成为客户服务的关键,但是大数据分析的采用目前仅局限于不到一成的企业。 挑战在于企业还在努力适应结构化数据,疲于根据自身的客户关系管理(CRM)系统部署有效的分析框架,以及集成不同的内外部信息源。
然而,面对顾客通过数字技术参与而产生的快速变化的信息,企业需要及时作出反应。要想实
java笔记4
a-john
java
操作符
1,使用java操作符
操作符接受一个或多个参数,并生成一个新值。参数的形式与普通的方法调用不用,但是效果是相同的。加号和一元的正号(+)、减号和一元的负号(-)、乘号(*)、除号(/)以及赋值号(=)的用法与其他编程语言类似。
操作符作用于操作数,生成一个新值。另外,有些操作符可能会改变操作数自身的
从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序
aijuans
嵌入式学习
笔者学习嵌入式Linux也有一段时间了,很奇怪的是很多书讲驱动编程方面的知识,也有很多书将ARM9方面的知识,但是从以前51形式的(对寄存器直接操作,初始化芯片的功能模块)编程方法,和思维模式,变换为基于Linux操作系统编程,讲这个思想转变的书几乎没有,让初学者走了很多弯路,撞了很多难墙。
笔者因此写上自己的学习心得,希望能给和我一样转变
在springmvc中解决FastJson循环引用的问题
asialee
循环引用 fastjson
我们先来看一个例子:
package com.elong.bms;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import co
ArrayAdapter和SimpleAdapter技术总结
百合不是茶
android SimpleAdapter ArrayAdapter 高级组件基础
ArrayAdapter比较简单,但它只能用于显示文字。而SimpleAdapter则有很强的扩展性,可以自定义出各种效果
ArrayAdapter;的数据可以是数组或者是队列
// 获得下拉框对象
AutoCompleteTextView textview = (AutoCompleteTextView) this
九封信
bijian1013
人生 励志
有时候,莫名的心情不好,不想和任何人说话,只想一个人静静的发呆。有时候,想一个人躲起来脆弱,不愿别人看到自己的伤口。有时候,走过熟悉的街角,看到熟悉的背影,突然想起一个人的脸。有时候,发现自己一夜之间就长大了。 2014,写给人
Linux下安装MySQL Web 管理工具phpMyAdmin
sunjing
PHP Install phpMyAdmin
PHP http://php.net/
phpMyAdmin http://www.phpmyadmin.net
Error compiling PHP on CentOS x64
一、安装Apache
请参阅http://billben.iteye.com/admin/blogs/1985244
二、安装依赖包
sudo yum install gd
分布式系统理论
bit1129
分布式
FLP
One famous theory in distributed computing, known as FLP after the authors Fischer, Lynch, and Patterson, proved that in a distributed system with asynchronous communication and process crashes,
ssh2整合(spring+struts2+hibernate)-附源码
白糖_
eclipse spring Hibernate mysql 项目管理
最近抽空又整理了一套ssh2框架,主要使用的技术如下:
spring做容器,管理了三层(dao,service,actioin)的对象
struts2实现与页面交互(MVC),自己做了一个异常拦截器,能拦截Action层抛出的异常
hibernate与数据库交互
BoneCp数据库连接池,据说比其它数据库连接池快20倍,仅仅是据说
MySql数据库
项目用eclipse
treetable bug记录
braveCS
table
// 插入子节点删除再插入时不能正常显示。修改:
//不知改后有没有错,先做个备忘
Tree.prototype.removeNode = function(node) {
// Recursively remove all descendants of +node+
this.unloadBranch(node);
// Remove
编程之美-电话号码对应英语单词
bylijinnan
java 算法 编程之美
import java.util.Arrays;
public class NumberToWord {
/**
* 编程之美 电话号码对应英语单词
* 题目:
* 手机上的拨号盘,每个数字都对应一些字母,比如2对应ABC,3对应DEF.........,8对应TUV,9对应WXYZ,
* 要求对一段数字,输出其代表的所有可能的字母组合
jquery ajax读书笔记
chengxuyuancsdn
jQuery ajax
1、jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()
JWFD工作流拓扑结构解析伪码描述算法
comsci
数据结构 算法 工作 活动 J#
对工作流拓扑结构解析感兴趣的朋友可以下载附件,或者下载JWFD的全部代码进行分析
/* 流程图拓扑结构解析伪码描述算法
public java.util.ArrayList DFS(String graphid, String stepid, int j)
oracle I/O 从属进程
daizj
oracle
I/O 从属进程
I/O从属进程用于为不支持异步I/O的系统或设备模拟异步I/O.例如,磁带设备(相当慢)就不支持异步I/O.通过使用I/O 从属进程,可以让磁带机模仿通常只为磁盘驱动器提供的功能。就好像支持真正的异步I/O 一样,写设备的进程(调用者)会收集大量数据,并交由写入器写出。数据成功地写出时,写入器(此时写入器是I/O 从属进程,而不是操作系统)会通知原来的调用者,调用者则会
高级排序:希尔排序
dieslrae
希尔排序
public void shellSort(int[] array){
int limit = 1;
int temp;
int index;
while(limit <= array.length/3){
limit = limit * 3 + 1;
初二下学期难记忆单词
dcj3sjt126com
english word
kitchen 厨房
cupboard 厨柜
salt 盐
sugar 糖
oil 油
fork 叉;餐叉
spoon 匙;调羹
chopsticks 筷子
cabbage 卷心菜;洋白菜
soup 汤
Italian 意大利的
Indian 印度的
workplace 工作场所
even 甚至;更
Italy 意大利
laugh 笑
m
Go语言使用MySQL数据库进行增删改查
dcj3sjt126com
mysql
目前Internet上流行的网站构架方式是LAMP,其中的M即MySQL, 作为数据库,MySQL以免费、开源、使用方便为优势成为了很多Web开发的后端数据库存储引擎。MySQL驱动Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常用的有如下几种:
http://code.google.c...o-mysql-dri
git命令
shuizhaosi888
git
---------------设置全局用户名:
git config --global user.name "HanShuliang" //设置用户名
git config --global user.email "
[email protected] " //设置邮箱
---------------查看环境配置
git config --li
qemu-kvm 网络 nat模式 (四)
haoningabc
kvm qemu
qemu-ifup-NAT
#!/bin/bash
BRIDGE=virbr0
NETWORK=192.168.122.0
GATEWAY=192.168.122.1
NETMASK=255.255.255.0
DHCPRANGE=192.168.122.2,192.168.122.254
TFTPROOT=
BOOTP=
function check_bridge()
不要让未来的你,讨厌现在的自己
jingjing0907
生活 奋斗 工作 梦想
故事one
23岁,他大学毕业,放弃了父母安排的稳定工作,独闯京城,在家小公司混个小职位,工作还算顺手,月薪三千,混了混,混走了一年的光阴。 24岁,有了女朋友,从二环12人的集体宿舍搬到香山民居,一间平房,二人世界,爱爱爱。偶然约三朋四友,打扑克搓麻将,日子快乐似神仙; 25岁,出了几次差,调了两次岗,薪水涨了不过百,生猛狂飙的物价让现实血淋淋,无力为心爱银儿购件大牌
枚举类型详解
一路欢笑一路走
enum 枚举详解 enumset enumMap
枚举类型详解
一.Enum详解
1.1枚举类型的介绍
JDK1.5加入了一个全新的类型的”类”—枚举类型,为此JDK1.5引入了一个新的关键字enum,我们可以这样定义一个枚举类型。
Demo:一个最简单的枚举类
public enum ColorType {
RED
第11章 动画效果(上)
onestopweb
动画
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
Eclipse中jsp、js文件编辑时,卡死现象解决汇总
ljf_home
eclipse jsp卡死 js卡死
使用Eclipse编辑jsp、js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲。将所有用过的方法罗列如下:
1、取消验证
windows–>perferences–>validation
把 除了manual 下面的全部点掉,build下只留 classpath dependency Valida
MySQL编程中的6个重要的实用技巧
tomcat_oracle
mysql
每一行命令都是用分号(;)作为结束
对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的分号省略掉,例如:
mysql_query("INSERT INTO tablename(first_name,last_name)VALUES('$first_name',$last_name')");
zoj 3820 Building Fire Stations(二分+bfs)
阿尔萨斯
Build
题目链接:zoj 3820 Building Fire Stations
题目大意:给定一棵树,选取两个建立加油站,问说所有点距离加油站距离的最大值的最小值是多少,并且任意输出一种建立加油站的方式。
解题思路:二分距离判断,判断函数的复杂度是o(n),这样的复杂度应该是o(nlogn),即使常数系数偏大,但是居然跑了4.5s,也是醉了。 判断函数里面做了3次bfs,但是每次bfs节点最多