opentsdb+grafana监控环境搭建

2023-11-12

opentsdb是在hbase的基础上设计的时间序列数据库。安装opentsdb必须先有hbase。hadoop和hbase是以集群的方式安装,如果在单台服务器上安装,下面的配置文件也是适合的,只要把相应的服务器名移除掉就可以。
grafana是一个仪表盘和图形编辑器,可以适配多个时间序列库,显示功能非常强大。在最新的v4.0会加入报警功能,演示地址:http://play.grafana.org。
硬件3台服务器.192.168.1.1;192.168.1.2;192.168.1.3。64位centos6.5
1. 安装 rzsz
yum install lrzsz
2.安装jdk
yum -y list java*
yum -y install java-1.7.0-openjdk*
3.配置JAVA_HOME
vi  /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.7.0
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
export PATH=$PATH:$JAVA_HOME/bin 
// 生效
source /etc/profile 
// 测试JAVA_HOME是否生效
echo $JAVA_HOME
4.安装zookeeper
上传zookeeper
cd /usr/local/src
rz
tar -zxvf zookeeper-3.4.8.tar.gz 
cd /home
mkdir zookeeper
cd zookeeper
mkdir data
mkdir logs
cp -r /usr/local/src/zookeeper-3.4.8 /home/zookeeper/
cd /home/zookeeper/zookeeper-3.4.8/conf
mv zoo_sample.cfg  zoo.cfg
vi zoo.cfg
#修改数据目录.
dataDir=/home/zookeeper/data
#增加日志目录
dataLogDir=/home/zookeeper/logs 
#增加部署地址
server.1=192.168.1.1:2888:3888
server.2=192.168.1.2:2888:3888
server.3=192.168.1.3:2888:3888
#修改server.1的myid。写入1;server.2则写入2
cd /home/zookeeper/data
vi myid
#其他两台重复以上步骤
#启动
cd /home/zookeeper/zookeeper-3.4.8/bin
./zkServer.sh start
#关闭
./zkServer.sh stop
#测试集群是否都启动成功
./zkCli.sh -server 192.168.1.1:2181
5.安装hadoop

一、配置hosts文件

二、建立hadoop运行帐号(也可直接用root账号)

三、配置ssh免密码连入

四、下载并解压hadoop安装包

五、配置各种配置文件

六、向各节点复制hadoop

七、格式化namenode

八、启动hadoop

九、用jps检验各后台进程是否成功启动

十、通过网站查看集群情况


5.1配置host
(1)编辑/etc/hosts文件
vi /etc/hosts
192.168.1.1 sms-test-001
192.168.1.2 sms-test-002
192.168.1.3 sms-test-003
#sms-test-001作为master,sms-test-002,sms-test-003作为slave
(2)编辑/etc/sysconfig/network文件
(3)Hostname设置
hostname sms-test-001
(4)输入hostname验证

5.2建立hadoop
运行账号
//设置hadoop用户组

sudo groupadd hadoop

//添加一个hadoop用户,此用户属于hadoop用户组

sudo useradd -s /bin/bash -d /home/user/hadoop -m hadoop -g hadoop

#设置hadoop权限./home目录的读写执性权限

setfacl -m u:hadoop:rwx /home

//设置用户hadoop登录密码

sudo passwd hadoop

//切换到hadoop用户中 

su hadoop

【注】不一定要新建账号。例如我用root账号登录的,直接用root账号也可以,为了方便下面就直接用root账号操作。


5.3配置ssh免密码连接

#单点回环免密码登录

cd /root

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

chmod 0600 ~/.ssh/authorized_keys

#验证免密码。welcome则表示成功

ssh localhost

#退出用exit

#master连接slave免密码登录

#sms-test-002服务器

cd /root/.ssh

scp root@sms-test-001:~/.ssh/id_dsa.pub ./master_dsa.pub

cat master_dsa.pub >> authorized_keys
#sms-test-001服务器ssh sms-test-002。第一次需要密码,后面就可以免密码登录
#sms-test-003服务器重复以上操作。
#sms-test-001登录002和003可以免密码登录了,但是002,003登录001还需要手动认证。
#slave连接master免密码登录。重复master连接slave的操作
6.安装hadoop
#在sms-test-001服务器上传hadoop
cd /usr/local/src
rz
tar -zxvf hadoop-2.6.0.tar.gz
cd /home
mkdir hadoop
cd /home/hadoop
cp -r hadoop-2.6.0 /home/hadoop/
cd hadoop-2.6.0
ll
cd etc/hadoop
ls
#修改hadoop-env.sh、yarn-env.sh、core-site.xml、hdfs-size.xml、mapred-site.xml、yarn-size.xml、slaves文件
(1)配置hadoop-env.sh和yarn-env.sh的JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-1.7.0
(2)配置core-site.xml
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://sms-test-001:9000</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>4096</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/tmp</value>
    </property>
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>sms-test-001:2181,sms-test-002:2181,sms-test-003:2181</value>
    </property>
(3)配置hdf-site.xml
   <property>
        <name>dfs.namenode.name.dir</name>
        <value>/home/hdfs_data/name</value>
   </property>
   <property>
        <name>dfs.datanode.data.dir</name>
        <value>/home/hdfs_data/data</value>
   </property>
   <property>
        <name>dfs.replication</name>
        <value>2</value>
   </property>
   <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>sms-test-001:50090</value>
   </property>
   <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
   </property>
(4)配置mapred-site.xml
   <property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
   </property>
   <property>
       <name>mapreduce.jobtracker.http.address</name>
       <value>Master.Hadoop:50030</value>
   </property>
   <property>
       <name>mapreduce.jobhistory.address</name>
       <value>sms-test-001:10020</value>
   </property>
   <property>
      <name>mapreduce.jobhistory.webapp.address</name>
      <value>sms-test-001:19888</value>
   </property>
(5)配置yarn-site.xml(8088端口如果想通过外网访问,则要配置成外网地址)
  <property>
     <name>yarn.nodemanager.aux-services</name>
     <value>mapreduce_shuffle</value>
  </property>
  <property>
     <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
     <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  </property>
  <property>
     <name>yarn.resourcemanager.address</name>
     <value>sms-test-001:8032</value>
  </property>
  <property>
     <name>yarn.resourcemanager.scheduler.address</name>
     <value>sms-test-001:8030</value>
  </property>
  <property>
     <name>yarn.resourcemanager.resource-tracker.address</name>
     <value>sms-test-001:8031</value>
  </property>
  <property>
     <name>yarn.resourcemanager.admin.address</name>
     <value>sms-test-001:8033</value>
  </property>
  <property>
     <name>yarn.resourcemanager.webapp.address</name>
     <value>sms-test-001:8088</value>
  </property>
  <property>
     <name>yarn.nodemanager.resource.memory-mb</name>
     <value>768</value>
  </property>
(5)配置slaves文件
vi slaves
#写入
sms-test-002
sms-test-003
#至此sms-test-001的配置已完成。可以把sms-test-001的hadoop拷贝到002和003上,也可以重新上传,然后把上面七个文件的改成和sms-test-001的一样的就行。
(6)格式化namenode (Master机器上面)
cd /home/hadoop/hadoop-2.6.0/bin
./hdfs namenode -format
(7)启动hds.会报一个警告,不过不影响。(注:如果安装的是openjdk需要启动可能失败,检查是否安装nss)
cd /home/hadoop/hadoop-2.6.0/sbin
./start-dfs.sh
./start-yarn.sh
#sms-test-001上执行jps看到有NameNode,ResourceManager,SecondaryNameNode。002和003上执行jps看到有DataNode
(8)http://sms-test-001:8088/可以访问任务情况
(9)http://sms-test-001:50070/可以访问数据节点信息
7.安装hbase
在sms-test-001服务器上传hbase
cd /usr/local/src
rz
tar -zxvf hbase-1.1.4-bin.tar.gz
cd /home/
mkdir hbase
cd /home/hbase
cp -r /usr/local/src/hbase-1.1.4 /home/hbase
#修改hbase-env.sh
cd /home/hbase/hbase-1.1.4/conf
vi hbase-env.sh
export JAVA_HOME=/usr/lib/jvm/java-1.7.0
export HBASE_MANAGES_ZK=false 
#修改hbase-site.xml
vi hbase-site.xml
  <property>
     <name>hbase.rootdir</name>
     <value>hdfs://sms-test-001:9000/hbase/hbase-1.1.4</value>
  </property>
  <property>
     <name>hbase.cluster.distributed</name>
     <value>true</value>
  </property>
  <property>
     <name>hbase.tmp.dir</name>
     <value>/home/hbase/tmp</value>
  </property>
  <property>
     <name>hbase.zookeeper.quorum</name>
     <value>sms-test-001:2181,sms-test-002:2181,sms-test-003:2181</value>
  </property>
  <property>
     <name>hbase.zookeeper.property.dataDir</name>
     <value>/home/hbase/zookeeper</value>
  </property>
#设置regionservers
vi regionservers
sms-test-001
sms-test-002
sms-test-003
#创建目录
cd /home/hbase
mkdir tmp
mkdir zookeeper
#设置hbase环境变量
vi /etc/profile
export HBASE_HOME=/home/hbase/hbase-1.1.4
#保存,使环境变量生效
source /etc/profile
#分发 hbase 到其它机器,并在其上设置环境变量
#在sms-test-001上启动hbase
cd /home/hbase/hbase-1.1.4/bin
./start-hbase.sh
jps
#可以看到HMaster,HRegionServer
#在002和003上可以执行jps只能看到HRegionServer
8.安装Opentsdb
在sms-test-001服务器上传opentsdb
cd /user/local/src
rz
tar -zxvf opentsdb-2.2.0.tar.gz
cd /home
cp -r /usr/local/src/opentsdb-2.2.0 /home
mv opentsdb-2.2.0 opentsdb
#Opentsdb依赖Gnuplot,它 是一个命令行的交互式绘图工具。用户通过输入命令,可以逐步设置或修改绘图环境,并以图形描述数据或函数,使我们可以借由图形做更进一步的分析
yum install gnuplot
#安装opentsdb
cd /home/opentsdb
./build.sh
#注:build过程可能失败,安装autoconf和automake( yum install autoconf; yum install automake )
#如果报'aclocal-1.14' is missing on your system 则执行 sudo autoreconf -ivf   
#配置环境变量,在shell中执行如下命令
env COMPRESSION=NONE HBASE_HOME=/home/hadoop/hadoop-2.6.0
#建表
cd /home/opentsdb/src
vi create_table.sh
create 'tsdb-uid',
  {NAME => 'id', COMPRESSION => '$COMPRESSION', BLOOMFILTER => '$BLOOMFILTER'},
  {NAME => 'name', COMPRESSION => '$COMPRESSION', BLOOMFILTER => '$BLOOMFILTER'}
create 'tsdb',
  {NAME => 't', VERSIONS => 1, COMPRESSION => '$COMPRESSION', BLOOMFILTER => '$BLOOMFILTER'}
create 'tsdb-tree',
  {NAME => 't', VERSIONS => 1, COMPRESSION => '$COMPRESSION', BLOOMFILTER => '$BLOOMFILTER'}
create 'tsdb-meta',
  {NAME => 'name', COMPRESSION => '$COMPRESSION', BLOOMFILTER => '$BLOOMFILTER'}
#运行opentsdb
./build/tsdb tsd --port=4242 --staticroot=build/staticroot --cachedir=/tmp/tsdtm --zkquorum=sms-test-001:2181,sms-test-002:2181,sms-test-003:2181
#启动参数说明
Usage: tsd --port=PORT --staticroot=PATH --cachedir=PATH Starts the TSD, the Time Series Daemon --async-io=true|false Use async NIO (default true) or traditionalblocking io --auto-metric        Automatically add metrics to tsdb as they are inserted.  Warning:this may cause unexpected metrics to be tracked --cachedir=PATH       Directory underwhich to cache result of requests. --flush-interval=MSEC Maximum time for which a new data point canbe buffered (default: 1000). --port=NUM            TCPport to listen on. --staticroot=PATH     Web root from which toserve static files (/s URLs). --table=TABLE         Nameof the HBase table where to store the time series (default: tsdb). --uidtable=TABLE      Name of theHBase table to use for Unique IDs (default: tsdb-uid). --worker-threads=NUM  Number for async io workers(default: cpu * 2). --zkbasedir=PATH      Path underwhich is the znode for the -ROOT- region (default: /hbase). --zkquorum=SPEC       Specificationof the ZooKeeper quorum to use (default: localhost).
## /home/opentsdb/build下的tsdb运维脚本
#添加指标
./tsdb mkmetric sms.user.submit
#删除指标
./tsdb uid delete metrics sms.user.submit
#查看指标
./tsdb uid grep sms.user.submit
9.grafana安装
1.sudo yum install initscripts fontconfig
2.sudo rpm -Uvh grafana-4.0.0-1478693311beta1.x86_64.rpm
配置文件 /etc/grafana/grafana.ini
启动 service grafana-server start
关闭 service grafana-server stop


附录:
1.磁盘挂载
  1. fdisk -l  //先查询未挂载的硬盘名如:sdb1 等  
  2. mkfs.ext4 /dev/xvdb   开始格式化  
  3. df -h              
  4. mount /dev/xvdb /home/hdfs_data   开始挂载  
  5. vi /etc/fstab        设置自动开启启动  
  6. 按格式添加  
  7. /dev/xvdb  /home/hdfs_data        ext4    defaults        0 0  
  8. 硬盘名      需要挂载的位置   格式  
  9.   
  10. 卸载挂载点:  
  11. umount /home/hdfs_data 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

opentsdb+grafana监控环境搭建 的相关文章

  • 调用未定义函数 Doctrine\ORM\Mapping\Driver\simplexml_load_file()

    我正在使用 Symfony2 并将我的网络部署到 CentOs6 服务器 我得到了这个异常 FatalErrorException Error Call to undefined function Doctrine ORM Mapping
  • 尝试访问使用 CIFS 装载的远程文件夹在断开连接时挂起

    这个问题是一个扩展那个问题 https stackoverflow com questions 17929294 qdir hangs on accessing cifs remote folder when disconnected 再说
  • gcc 找不到 cc1plus

    我正在尝试在 CentOS 6 上安装 python 包 pandas 但我遇到了 gcc 编译器问题 sudo pip install pandas creating build temp linux x86 64 2 7 pandas
  • 显示grafana点悬停的详细信息

    我使用 Influxdb 作为 grafana 的来源 在每个数据点的时间序列上 我有几个值和标签 如何将鼠标悬停在折线图中的特定数据点上显示相关数据点 或者 我可以调用一些 API 传递一些值来填充悬停时出现的工具提示 截至撰写本文时 还
  • Centos 7 Postgres 服务的环境变量

    最近我遇到了使用自定义 PGDATA 路径启动 postgresql 服务的问题 它尝试查找未初始化的默认数据目录 var lib pgsql 9 3 data 因此触发了这些错误 问题似乎是 Centos 7 上的服务启动器删除了所有环境
  • 命令“PassengerAppRoot”无效,可能拼写错误或由服务器配置中未包含的模块定义

    我已按照中给出的每一个安装步骤进行操作在 Linux Unix 生产服务器上安装 Passenger Apache 适用于 Node js 应用程序 Red Hat 6 CentOS 6 带 RPM https www phusionpas
  • Centos 上的 MSBuild 返回“未找到导入的项目“/Microsoft.Cpp.Default.props””

    我正在尝试在 CentOS 中构建 VS 项目 我通过安装 dotnet sdk 2 2yum install dotnet sdk 2 2 执行时dotnet msbuild myproj vcxproj I get Microsoft
  • Grafana 多值浮点 histogram_quantile

    嗨 我正在强制解决 histogram quantile 问题 如果我将变量设置为多值 这样我就可以重复面板 然后我收到错误消息 字符 21 处解析错误 意外字符 我的要求是 histogram quantile percentile av
  • apache 和 httpd 正在运行,但我看不到我的网站 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我已经在我的服务器上安装了 apache 但是我无法通过我的服务器 IP 浏览我的网站 apache 的设置是 var www htdocs 下的单帐
  • 如何从 Mac OS X 交叉编译到 Linux x86?

    我正在运行 Mac OS X 10 5 8 并希望使用 GCC 4 1 2 为目标 CentOS 5 3 进行编译 我怎么能 编译GCC 4 1 2工具链及相关工具 使用该工具交叉编译目标 CentOS 5 3 任何帮助是极大的赞赏 最简单
  • 无法在 CentOS 7 上的 PHP 中打开 file_put_contents 上的流

    我知道这是许多线程的常见错误 但我厌倦了搜索 但仍然没有解决它 当我尝试运行该函数时文件放置内容我收到以下错误 Warning file put contents test txt failed to open stream Permiss
  • 将 awk 输出保存到变量 [重复]

    这个问题在这里已经有答案了 谁能帮我解决这个问题吗 我正在尝试将 awk 输出保存到变量中 variable ps ef grep port 10 grep v grep port 10 awk printf s 12 printf var
  • apache centos 上的多个 php

    如何在 Centos 6 5 上同时运行多个 php 版本 就是这样 要求Centos 6 5 可能适用于 6 6 和 7 Apache Apache 2 2 15 可能与其他版本一起使用 本指南安装和使用FASTCGI 请参阅替代安装的注
  • 无法使用 git 克隆任何存储库

    我尝试克隆一些存储库 但总是遇到相同的错误 我在哪里可以找到有关此错误的更多信息 错误日志文件或类似的文件 或者也许有人知道可能出了什么问题 git clone http github com creationix nvm git nvm
  • mod_mono 在新安装的 centos 上出现 EOF 错误

    我全新安装了 Centos 6 3 已完全更新 我已经从源安装了 mono xsp 和 mod mono 每个包都完美编译 它们都以 usr local mono 前缀安装 因此所有内容都位于 usr local mono 下 我已将 In
  • 出现错误 /usr/bin/env: 节点:权限被拒绝

    我已经在我的服务器 Centos 上完成了 ODOO v9 安装 一切都已安装成功 登录页面也可以正常工作 但登录后我收到一个包含以下错误的页面 usr bin env node Permission Denied 我尝试更改权限 但我的问
  • EC2 增加大小后无法调整卷大小

    我已按照调整 EC2 卷大小的步骤进行操作 停止实例 拍摄当前卷的快照 在同一区域中从上一个快照创建了一个更大大小的新卷 从实例中分离旧卷 将新卷附加到同一安装点的实例 旧卷是 5GB 我创建的卷是 100GB 现在 当我重新启动实例并运行
  • 合并来自 ffmpeg 的两个视频

    我想使用 ffmpeg 将两个 mp4 视频组合成一个 mp4 视频 到目前为止我尝试过的是 ffmpeg i input1 mp4 i input2 mp4 output mp4 但是 每次我获取带有第一个输入的视频编解码器的视频而不是另
  • Bash:更新文件中的变量

    我知道这是一个简单的答案 在找到答案之前我可能可以继续在谷歌上进行挖掘 但我的日程很紧 我希望能得到一个轻松的答复 我需要在安装时更新 ifcfg eth0 中的变量 换句话说 这就是需要发生的事情 以下变量需要更改 ONBOOT no B
  • proc_open() 失败并显示“权限被拒绝”

    我正在尝试使用proc open 执行程序并打印结果 但是 我不断收到 许可被拒绝 的消息 已将脚本和可执行文件的 chmod 设置为 0777 但无济于事 ini get safe mode 是假的 可能出什么问题了 我正在使用 Cent

随机推荐

  • 外包干了2个月,技术退步明显.......

    先说一下自己的情况 大专生 18年通过校招进入武汉某软件公司 干了接近4年的功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋友
  • 【Tensorflow2.0】11、经典图像CNN模型实现代码

    文章目录 1 Lenet5 2 AlexNet 3 VGG 4 Inception系列 v1到v4 4 1 Inceptionv1 GoogLeNet 4 2 inceptionv2 4 3 inceptionv3 4 4 Inceptio
  • Android快速开发框架-ZBLibrary 源码分享

    坐标标准库ZBLibrary 是一个MVP架构的Android快速开发框架 提供一套开发标准 UI Data Listener 以及模板和工具类并规范代码 封装层级少 简单高效兼容性好 一句代码就可实现全局滑动返回 可重写 集成方便快捷的照
  • matlab练习程序(c/c++调用matlab

    这里的环境是windows7 vs2010 matlabR2010b 上一篇是通过engine来调用matlab中的语句 本篇是通过调用m文件编译成的h lib dll文件而实现的 首先写一个函数mysvd m function s v d
  • docker国内镜像加速

    1 阿里云容器 生成自己的加速地址 登陆地址 https cr console aliyun com 选择自己的系统 2 修改配置文件 针对Docker客户端版本大于 1 10 0 的用户 您可以通过修改daemon配置文件 etc doc
  • Linux防火墙

    安全防御 常见的攻击手段 拒绝服务 已知漏洞 口令破解 欺骗用户 常见的安全防御设备 基础类防火墙 IDS类 入侵检测系统 提供报告 事后分析 IPS类 入侵防御系统 针对数据包分析 根据模式匹配 阻断非法访问 主动安全类 什么是防火墙 工
  • 这篇文章带你读懂IP地址

    这篇文章带你读懂IP地址 一 IP地址介绍 二 IP地址分类及表示 三 IP地址的主要特点 四 特殊IP地址及私有IP地址 一 IP地址介绍 IP地址 全世界唯一的32位 4字节标识符 标识路由器主机的接口 IP地址 lt 网络号 gt l
  • 【Git CMD】Git上传本地代码到远程仓库(6步到位)

    步骤 1 创建指定名称的分支并切换至该分支 2 添加文件到暂存区 3 查看本地仓库和暂存区的状态 4 提交文件到本地仓库 5 查看本地仓库提交的历史 6 将本地当前分支推送到与本地当前分支同名的远程分支 1 创建指定名称的分支并切换至该分支
  • 学习PGL课程:图卷积网络GCN、图注意力网络GAT

    一 GCN 什么是图卷积 不同的地方在于 图像像素点周围的像素个数通常是固定的 而图结构上某个节点周围的节点数是不固定的 图卷积网络计算公式 1 邻接矩阵解释 2 度矩阵 表示节点与之相连节点的个数 包括自环 3 H l 表示第l次迭代的节
  • 具体项目下解决Echarts多端同步开发和维护的问题

    具体问题场景 PC端和移动端需要同时上线图表功能 没有多余工时 之后的版本迭代 功能 样式 配置等 默认双端同步 开发人员只希望维护一套代码 Echarts在移动端有部分功能不兼容不支持 Echarts在移动端的坑 移动端页面使用echar
  • Raspberry Pi使用TinyML运动识别

    我们将使用机器学习来构建在微型微控制器RP2040上运行的手势识别系统 探索Raspberry Pi Pico及其SDK Raspberry Pi Pico是具有灵活数字接口的低成本 高性能微控制器板 主要功能包括 Raspberry Pi
  • C11 : 函数模板 std::function

    目录 std function 定义 实现原理 应用 注意事项 std function 定义 类模板 std function 是一种通用的 多态的函数封装 std function 的实例可以对任何可以调用的目标实体进行存储 复制和调用
  • react hooks无法获取到最新值问题

    无法获取最新值的写法 在state中定义初始值 import React useState useEffect from react const type setType useState 0 通过setType方法修改type div s
  • 字符替换 英文字符串单词个数统计 python123题解

    字符替换 描述 假设有段英文 其中有单独字母 P 被误写为 p 请编写程序进行纠正 输入格式 用户输入一个字符串 不要使用提示词语 输出格式 程序输出字符串 其中原本包含的英文字母 p 全部被替换为 P 输入输出示例 输入 输出 示例 py
  • MYSQL常用字段属性

    MYSQL常用字段属性 1 DECIMAL M D 2 INT 3 VARCHAR 4 CHAR 5 TEXT 6 DATA 1 DECIMAL M D M是总位数 1 65 包含精度 D是小数位 0 30 当表示定点小数时使用类型 比fl
  • PostgreSQL配置优化

    转载请注明原文出处 http blog csdn net roddick621 PostgreSQL配置优化 PostgreSQL配置优化 硬件和系统配置 测试工具 配置文件 主要选项 测试数据 总结 硬件和系统配置 操作系统 Ubuntu
  • GVIM编辑器实现自定义配对关键字之间的跳转

    由于刚开始接触GVIM编辑器 在使用GVIM写Verilog代码的时候发现使用 命令可以实现配对括号之间的跳转 但其它的一些关键字之间却不能实现配对跳转 从而导致在代码量较大的时候常常会出现配对关键字多写或漏写的情况 很不方便 网上查阅了相
  • MMDetection新手安装使用教程(无限踩坑)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 MMDetection安装过程 1 torch torchvision的安装 2 mmdetection的安装 二 MMDetection的使用步骤 1
  • c++中的新成员——new,命名空间

    c 中的动态内存分配 优点 使用更加的方便 解决了c中有很时候没有库文件时不能申请堆内存的情况 使用 c 中是通过new关键字来进行内存空间的申请的 c 中动态内存是基于类型进行的 delete关键字用于释放 new在申请的时候可以进行初始
  • opentsdb+grafana监控环境搭建

    opentsdb是在hbase的基础上设计的时间序列数据库 安装opentsdb必须先有hbase hadoop和hbase是以集群的方式安装 如果在单台服务器上安装 下面的配置文件也是适合的 只要把相应的服务器名移除掉就可以 grafan