工具调试

news/2025/1/7 18:44:37/文章来源:https://www.cnblogs.com/kyana/p/18655262

Git

01|前排提示

git真好用,配置真麻烦。

附:Linux系统上的安装只需要一行命令就到第三步了。

再附:GitHub服务更大更全但经常上不去需要手动修改hosts,Gitee在国内更快更稳定但只有基本服务。

02|本体安装

Windows

  1. 安装时更改位置
  2. 只勾选"Git Bash Here"和"Git LFS"
  3. 默认编辑器推荐选择VSCode
  4. 环境变量选择只用Git
  5. 控制台选择Windows
  6. 其余默认安装

Linux

(sudo) apt/dnf install git -y

03|生成本地ssh密钥

打开控制台/终端,输入 ssh-keygen,一路默认回车即可。在用户主目录("~/")下的 .ssh/文件夹生成一对rsa密钥。

选择路径时,一定要输入完整的unix格式或者双右斜杠路径

使用"-C"对密钥添加备注,如邮箱、昵称

04|连通远程库

GitHub

注册账号

进入GitHub,点击右上角"Sign Up"注册,填写相关信息后等待验证加载完毕,通过验证即注册成功。用户名一经选定就不容易更改,谨慎选择。

添加ssh密钥到账户

点击右上角头像,选下拉菜单中的"Settings"设置选项,跳转页面左侧"Access"权限下有条目"SSH and GPG keys",选择,点击右上绿色"New SSH key"按钮,将创建出的密钥对中的.pub文件使用记事本打开,复制全文到"Key"条目,"Title"条目随便写但建议写点有意义的方便管理。

创建仓库并连通

点击右上角加号+,点击菜单中的"New repository"新建仓库,填入仓库名,点击"Create repository"就创建完成。

在本地创建同名文件夹,使用如下命令即可将本地与远程库连同。在过程中可能会跳出GitHub验证,提交相应信息即可。

mkdir {your_repo_name}
cd {your_repo_name}
git init #初始化为git仓库
git config user.name {your_github_name} #设置仓库用户名
git config user.email {your_github_email} #设置用户邮件
git remote add origin {your_repo_link} #添加远程库链接
#创建一些文件并写入内容
git add * #添加所有修改到暂存区
git commit -m "some text" #提交一定要添加信息
git push origin -u master/main #推送到远程分支,GitHub默认main为主分支

Gitee

注册账号

进入官网,点击注册,输入手机号、验证码等相关信息后,即可注册成功。

添加ssh密钥到账户

指向右上角,在下拉菜单中点击“设置”。转到打开的页面,在左侧安全设置中找到SSH密钥,标题任意填写但建议有意义,公钥部分填写.pub文件的全文。

新建仓库并连通

指向右上角的加号+,在下拉菜单中点击新建仓库,填入仓库名默认产生仓库地址,创建仓库即可。

在本地打开终端/控制台,使用以下命令与远程库连通。

shell
mkdir {your_repo_name}
cd {your_repo_name}
git init #初始化为git仓库
git config user.name {your_gitee_name} #设置仓库用户名
git config user.email {your_gitee_email} #设置用户邮件
git remote add origin {your_repo_link} #添加远程库链接
#创建一些文件并写入内容
git add * #添加所有修改到暂存区
git commit -m "some text" #提交一定要添加信息
git push origin master #推送到远程master分支

GPG for GitHub

05|命令集合

git克隆

# 默认在当前目录下创建和版本库名相同的文件夹并下载版本到该文件夹下
$ git clone <远程仓库的网址>
# 指定本地仓库的目录
$ git clone <远程仓库的网址> <本地目录>
# -b 指定要克隆的分支,默认是master分支
$ git clone <远程仓库的网址> -b <分支名称> <本地目录>

分支

# 列出本地的所有分支,当前所在分支以 "*" 标出
$ git branch
# 列出本地的所有分支并显示最后一次提交,当前所在分支以 "*" 标出
$ git branch -v
# 创建新分支,新的分支基于上一次提交建立
$ git branch <分支名>
#修改分支名称,如果不指定原分支名称则为当前所在分支
$ git branch -m [<原分支名称>] <新的分支名称>
# 强制修改分支名称
$ git branch -M [<原分支名称>] <新的分支名称>
# 删除指定的本地分支
$ git branch -d <分支名称>
# 强制删除指定的本地分支
$ git branch -D <分支名称>

增删

# 把指定的文件添加到暂存区中
$ git add <文件路径>
# 添加所有修改、已删除的文件到暂存区中
$ git add -u [<文件路径>]
$ git add --update [<文件路径>]
# 添加所有修改、已删除、新增的文件到暂存区中,省略 <文件路径> 即为当前目录
$ git add -A [<文件路径>]
$ git add --all [<文件路径>]
# 查看所有修改、已删除但没有提交的文件,进入一个子命令系统
$ git add -i [<文件路径>]
$ git add --interactive [<文件路径>]#删除工作区文件,并将这次删除放入缓存区
git rm <file>
#停止追逐文件,但该文件会保留在工作区
git rm --cached <file>
#改名文件,并将改名放入缓存区
git mv <file_or> <file_re>

提交

# 把暂存区中的文件提交到本地仓库,调用文本编辑器输入该次提交的描述信息
$ git commit
# 把暂存区中的文件提交到本地仓库中并添加描述信息
$ git commit -m "<提交的描述信息>"
#重做上一次提交,并包括指定文件的新变化,若无变化则修改提交信息
$ git commit --amend <file> -m "message"
#提交时显示所有diff信息
git commit -v

合并

# 把指定的分支合并到当前所在的分支下
$ git merge <分支名称>

比较

# 比较当前文件和暂存区中文件的差异,显示没有暂存起来的更改
$ git diff
# 比较暂存区中的文件和上次提交时的差异
$ git diff --cached
$ git diff --staged
# 比较当前文件和上次提交时的差异
$ git diff HEAD
# 查看从指定的版本之后改动的内容
$ git diff <commit ID>
# 比较两个分支之间的差异
$ git diff <分支名称> <分支名称>
# 查看两个分支分开后各自的改动内容
$ git diff <分支名称>...<分支名称>

推拉

# 从远程仓库获取最新版本。
$ git pull
# 把本地仓库的分支推送到远程仓库的指定分支
$ git push <远程仓库的别名> <本地分支名>:<远程分支名># 删除指定的远程仓库的分支
$ git push <远程仓库的别名> :<远程分支名>
$ git push <远程仓库的别名> --delete <远程分支名>

记录

# 打印所有的提交记录
$ git log
# 打印从第一次提交到指定的提交的记录
$ git log <commit ID>
# 打印指定数量的最新提交的记录
$ git log -<指定的数量># 重置暂存区,但文件不受影响
# 相当于将用 "git add" 命令更新到暂存区的内容撤出暂存区,可以指定文件
# 没有指定 commit ID 则默认为当前 HEAD
$ git reset [<文件路径>]
$ git reset --mixed [<文件路径>]
# 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
$ git reset <commit ID>
$ git reset --mixed <commit ID>
# 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
# 相当于调用 "git reset --mixed" 命令后又做了一次 "git add"
$ git reset --soft <commit ID>
# 将 HEAD 的指向改变,撤销到指定的提交记录,文件也修改了
$ git reset --hard <commit ID># 生成一个新的提交来撤销某次提交
$ git revert <commit ID># 把已经提交的记录合并到当前分支
$ git cherry-pick <commit ID>

远程

# 列出已经存在的远程仓库
$ git remote
# 列出远程仓库的详细信息,在别名后面列出URL地址
$ git remote -v
$ git remote --verbose
# 添加远程仓库
$ git remote add <远程仓库的别名> <远程仓库的URL地址>
# 修改远程仓库的别名
$ git remote rename <原远程仓库的别名> <新的别名>
# 删除指定名称的远程仓库
$ git remote remove <远程仓库的别名>
# 修改远程仓库的 URL 地址
$ git remote set-url <远程仓库的别名> <新的远程仓库URL地址>

标签

# 列出所有tag
$ git tag
# 新建一个tag在当前commit
$ git tag [tag]
# 新建一个tag在指定commit
$ git tag [tag] [commit]
# 删除本地tag
$ git tag -d [tag]
# 删除远程tag
$ git push origin :refs/tags/[tagName]
# 查看tag信息
$ git show [tag]
# 提交指定tag
$ git push [remote] [tag]
# 提交所有tag
$ git push [remote] --tags
# 新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]

杂项

#初始化本地仓库;新建代码库
git init <project-name>
#查看本地仓库状态,简短模式
git status -s

其它知识

搭建git服务器

建议使用Ubuntu

  1. 安装git,添加git用户(sudo apt install git, sudo adduser git)
  2. 创建证书登录(/home/git/.ssh/authorizedKeys)
  3. 选定目录,初始化仓库(sudo git init --bare sample.git)
  4. owner改为git(sudo chown -R git:git sample:git)
  5. 禁用shell登录(/etc/passwd git❌1001:1001,,,:home/git:/bin/bash to git❌1001:1001,,,:/home/git:/bin/git-shell)
  6. 克隆远程仓库

忽略特殊文件(.gitignore)

  • 系统自动生成文件、编译中间文件、自己敏感信息文件
  • Windows系统.db .ini
  • Python 编译.pyc .pyo .dist
  • 强制添加使忽略无效:git add -f file
  • 校验文件是否被忽略:git check-ignore -v file
  • 添加例外文件:在忽略文件中添加"!fileName"

HTTP连不上

git config --global http.postBuffer 50M

SSH密钥

cd ~\.ssh
#t是加密方式,默认rsa;C是备注,可写电子邮箱等
keygen -t rsa -C
#默认不用密码,三下回车;clone时候输入yes

git配置

  • 仓库配置文件:.git/.gitconfig
  • 全局配置文件:~/.gitconfig
  • 系统配置文件:/etc/gitconfig
#显示当前git配置
git config --list
#编辑git配置
git config --global -e
#提交代码时显示的用户信息
git config --global user.name "<name>"
git config --global user.email "<email>"

Jupyter

基础安装配置

安装本体和nbextensions

安装python3.7+

pip install jupyter
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user

好用的扩展推荐

Code prettify、Hinterland、Table of Contents (2)、Scratchpad、Collapsible Headings、A 2to3 converter

插入代码控制的插件

Jupyter-notify 网页通知提示插件

pip install jupyternotify
%load_ext jupyternotify # 载入插件
%autonotify -a 30

对所有执行超过30s的cells在运行结束后进行通知,只关注特定的cell,那么可以将%autonotify -a 30去掉,然后在对应的格子中加入%%notify,在Jupyter运行的时候自动加载该插件,在需要向Notebook的config文件中加入下列代码

c.InteractiveShellApp.extensions = ['jupyternotify'
]

显示python循环进度

pip install tpdm

from tqdm import tnrange, tqdm_notebook
from time import sleep## 原来的循环
for i in range(10):for j in tqdm_notebook(range(100), desc='2nd loop'):sleep(0.01)## 使用tqdm显示进度的循环
for i in tnrange(10, desc='1st loop'):for j in tqdm_notebook(range(100), desc='2nd loop'):sleep(0.01)

修改默认文件夹路径

  1. cmd输入jupyter notebook --generate-config,在家目录下生成配置文件
  2. 查找关键词“c.NotebookApp.notebook_dir”,把该行行首的井号(#)删除
  3. 在该行写入新路径

修改默认浏览器

打开配置文件,找到c.NotebookApp.browser

import webbrowser
webbrowser.register('chrome', None, webbrowser.GenericBrowser(u'C:\\Program Files\\chrome.exe'))
c.NotebookApp.browser = 'chrome'

设置登录密码

  1. 打开配置文件,找到c.NotebookApp.allow_password_change
  2. 设置为False,并删掉#
  3. cmd运行jupyter notebook password,设置密码

多语言配置

python3

安装即可,默认选中

java

  1. 从链接下载zip文件并解压
  2. cmd进入解压后文件夹,运行python install.py --sys-prefix安装java,确保jdk9+
  3. jupyter kernelspec list在cmd中运行,查看已安装内核

功能使用配置

常用快捷键

快捷键 功能
Ctrl+Enter 运行本单元
Shift+Enter 运行本单元,选中下个单元
Alt+Enter 运行本单元,在其下插入新单元
Y 单元转入代码状态
M/Ctrl+M 单元转入markdown状态
A 在上方插入新单元
B 在下方插入新单元
X 剪切选中的单元
Shift+V 在上方粘贴单元
Tab 自动补全
Shift+Tab 查看帮助文档
s 保存
Ctrl+/ 添加取消注释
Ctrl+Shift+- 切分单元格
Ctrl+[] 删除/添加缩进
Shift+M 合并单元格
自定义(命令模式) 功能目的
Alt+C 清除当前单元格输出
Alt+Shift+C 清除所有单元格输出

魔法函数

函数使用 功能
%pwd 显示Jupyter当前的工作空间
%hist 显示当前Jupyter中,所有运行过的历史代码
%who 显示当前Jupyter环境中的所有变量或名称
%reset 删除当前Jupyter环境中的所有变量或名称
%time 计算当前代码行的运行时长
%timeit 计算当前代码行的平均运行时长,默认执行一个语句100000次,给出最快3次的平均值
%%timeit 计算当前cell的代码运行时长
%matplotlib 显示绘图结果的风格,默认为%matplotlib inline,是直接将图片显示在浏览器中,如果希望图片单独生成,可以使用%matplotlib
%load 加载本地Python文件或者网络中的Python文件,例如本地脚本文件的加载:%load xxx.py
%run 运行本地或网络中的Python文件,例如本地脚本文件的运行:%load xxx.py

美化配置

  1. 安装jupyterthemes:pip install jupyterthemes
  2. jt -l查看可选样式列表,后缀d为dark模式,l为light模式

jt命令说明(必须jt开头一行写完)

  • 使用帮助:-h
  • 主题列表: -l
  • 主题名称安装: -t
  • 代码的字体: -f
  • 代码字体大小: -fs(默认值:11 )
  • Notebook 字体: -nf
  • Notebook 字体大小: -nfs( 默认值: 13 )
  • Text/MD 单元格的字体: -tf
  • Text/MD 单元格字体大小:-tfs (默认值: 13)
  • Pandas DF Fontsize:-dfs(默认值: 9)
  • 输出面积字形大小: -ofs(默认值: 8.5 )
  • Mathjax 字形大小 (%): -mathfs(默认值: 100)
  • 介绍页边距 : -m(默认值: auto)
  • 单元格的宽度:-cellw ( 默认值: 980)
  • 行高: -lineh(默认值: 170 )
  • 光标宽度: -cursw(默认值: 2)
  • 光标的颜色:-cursc
  • Alt键提示布局:-altp
  • Alt键Markdown背景颜色:-altmd
  • Alt键输出背景色:-altout
  • Vim风格 NBExt* :-vim
  • 工具栏可见: -T
  • 名称和标识可见: -N
  • 标志可见: -kl
  • 重置默认主题: -r
  • 强制默认字体:-dfonts
jt -t chesterish -f hack -fs 14 -T -ofs 12  #my settings

拓展功能

%load URL #加载网页源代码
%load road #加载本地python文件(.py),绝对路径,使用ctrl+enter执行
%run road #运行本地python文件
!python(3) road #同上,是shell命令的用法
%/!pwd #显示当前路径

在单元格中使用shell命令:!shell,或者新建终端

命令模式(Esc)和编辑模式(Enter)

扩展命令

%matplotlib inline #在notebook中集成matplotlib图形

openGauss

00|修改后的安装脚本

#!/bin/bash## Author:  齐雅纳(Kyana)由贾军峰老师版本修改
## Date:    2021-11-14
## OS:       openEuler20.03LTS x86_64[最小硬件配置:2c/4G]
## Database:openGauss 2.1.0
## Description:一键式实现操作系统环境配置、openGauss软件下载、openGauss软件安装等步骤,帮助大家提升安装openGauss数据库效率
## Tips:     请确保操作系统可以连接外网
## Midifies: 更换了2.1版本,有更好的多核调用;############################################################
## 说明:ARM架构的操作系统需要修改脚本的URL地址和YUM源地址。
## 第1步操作修改内容:
## export openGauss_Download_url=https://opengauss.obs.cn-south-1.myhuaweicloud.com/2.1.0/arm/openGauss-2.1.0-openEuler-64bit-all.tar.gz
## 第8步操作修改内容:
## wget -O /etc/yum.repos.d/openEulerOS.repo https://repo.huaweicloud.com/repository/conf/openeuler_aarch64.repo
############################################################## 0.关闭virbr0网卡 [本地虚拟机软件标准化安装openEuler系统会默认存在virbr0网卡,删除该网卡以避免干扰数据库的安装]
## virsh net-destroy default
## virsh net-list
## echo "Net device virbr0 is disabled."## 1.定义主机信息[请根据实际情况修改]
export MY_HOSTNAME=euler           ## 主机名
export MY_HOSTIP=192.168.181.157     ## IP地址
export MY_SOFTWARE_DIRECTORY=/soft/openGauss      ## 软件包所在目录
export MY_XML=/soft/openGauss/clusterconfig.xml   ## 集群配置文件XML
export openGauss_Download_url=https://opengauss.obs.cn-south-1.myhuaweicloud.com/2.0.0/x86_openEuler/openGauss-2.0.0-openEuler-64bit-all.tar.gz  ## openGauss软件包下载地址## 1. 设置主机名并配置hosts文件
hostnamectl set-hostname $MY_HOSTNAME
sed -i '/$MY_HOSTIP/d' /etc/hosts
echo "$MY_HOSTIP  $MY_HOSTNAME   #Gauss OM IP Hosts Mapping" >> /etc/hosts
cat /etc/hosts
echo "1.Configure /etc/hosts completed."
echo -e "\n"## 2. 关闭防火墙
systemctl disable firewalld.service
systemctl stop firewalld.service
echo "Firewalld " `systemctl status firewalld|grep Active`
echo "2.Disable firewalld service completed."
echo -e "\n"## 3. 关闭SELinux
sed -i '/^SELINUX=/d' /etc/selinux/config
echo "SELINUX=disabled" >> /etc/selinux/config
cat /etc/selinux/config|grep "SELINUX=disabled"
echo "3.Disable SELINUX completed."
echo -e "\n"## 4. 设置操作系统字符集编码
echo "LANG=en_US.UTF-8" >> /etc/profile
source /etc/profile
echo $LANG
echo "4.Configure encoding completed."
echo -e "\n"## 5. 设置操作系统时区
rm -fr /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
date -R
hwclock
echo "5.Configure Timezone completed."
echo -e "\n"## 6. 关闭SWAP分区 [对于2G内存的设备,建议待安装完毕后再打开SWAP以间接 “扩容内存容量”]
sed -i '/swap/s/^/#/' /etc/fstab
swapoff -a
free -m
echo "6.Close swap partition completed."
echo -e "\n"## 7. 配置SSH服务,关闭Banner,允许root远程登录
sed -i '/Banner/s/^/#/'  /etc/ssh/sshd_config
sed -i '/PermitRootLogin/s/^/#/'  /etc/ssh/sshd_config
echo -e "\n" >> /etc/ssh/sshd_config
echo "Banner none " >> /etc/ssh/sshd_config
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
cat /etc/ssh/sshd_config |grep -v ^#|grep -E 'PermitRoot|Banner'
echo "7.Configure SSH Service completed."
echo -e "\n"## 8. 配置YUM源、安装依赖包、修改默认Python3版本
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo  /etc/yum.repos.d/bak/
wget -O /etc/yum.repos.d/openEulerOS.repo https://repo.huaweicloud.com/repository/conf/openeuler_x86_64.repo
yum clean all
yum install -y bzip2 python3
yum install -y libaio-devel libnsl flex bison ncurses-devel glibc-devel patch readline-devel net-tools tar
mv /usr/bin/python  /usr/bin/python2_bak
ln -s /usr/bin/python3 /usr/bin/python
python -V
echo "8.Configure Install Packages and change default Python version completed."
echo -e "\n"## 9. 配置 sysctl.conf 和 performance.sh
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_retries1 = 5
net.ipv4.tcp_syn_retries = 5
net.sctp.path_max_retrans = 10
net.sctp.max_init_retransmits = 10
EOF
sysctl -psed -i '/vm.min_free_kbytes/s/^/#/' /etc/profile.d/performance.sh   ## Only for openEuler
cat /etc/profile.d/performance.sh|grep vm.min_free_kbytesecho "9.Configure sysctl.conf and performance.sh completed."
echo -e "\n"## 10. 配置资源限制
echo "* soft stack 3072" >> /etc/security/limits.conf
echo "* hard stack 3072" >> /etc/security/limits.conf
echo "* soft nofile 1000000" >> /etc/security/limits.conf
echo "* hard nofile 1000000" >> /etc/security/limits.conf
echo "* soft nproc unlimited" >> /etc/security/limits.d/90-nproc.conf
tail -n 4 /etc/security/limits.conf
tail -n 1 /etc/security/limits.d/90-nproc.conf
echo "10.Configure resource limits completed."
echo -e "\n"## 11. 关闭透明大页[Only for CentOS]
cat >>/etc/rc.d/rc.local<<EOF
if test -f /sys/kernel/mm/transparent_hugepage/enabled; thenecho never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; thenecho never > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF
chmod +x /etc/rc.d/rc.local
/usr/bin/sh /etc/rc.d/rc.local
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag
echo "11.Close transparent_hugepage completed."
echo -e "\n"## 12. 禁用RemoveIPC[Only for openEuler]
sed -i '/^RemoveIPC/d' /etc/systemd/logind.conf
sed -i '/^RemoveIPC/d' /usr/lib/systemd/system/systemd-logind.service
echo "RemoveIPC=no"  >> /etc/systemd/logind.conf
echo "RemoveIPC=no"  >> /usr/lib/systemd/system/systemd-logind.service
systemctl daemon-reload
systemctl restart systemd-logind
loginctl show-session | grep RemoveIPC
systemctl show systemd-logind | grep RemoveIPC
echo "12.Disable RemoveIPC completed."
echo -e "\n"## 13. 下载openGauss软件包
mkdir -p $MY_SOFTWARE_DIRECTORY
cd $MY_SOFTWARE_DIRECTORY
wget $openGauss_Download_url
echo "13.openGauss software download completed."
echo -e "\n"## 14. 配置XML文件
rm -fr $MY_XML
cat >> $MY_XML <<EOF
<?xml version="1.0" encoding="UTF-8"?> 
<ROOT> <!-- openGauss整体信息 --> <CLUSTER> <PARAM name="clusterName" value="dbCluster" /> <PARAM name="nodeNames" value="$MY_HOSTNAME" /> <PARAM name="backIp1s" value="$MY_HOSTIP"/> <PARAM name="gaussdbAppPath" value="/gaussdb/app" /> <PARAM name="gaussdbLogPath" value="/gaussdb/log" /> <PARAM name="gaussdbToolPath" value="/gaussdb/om" /> <PARAM name="corePath" value="/gaussdb/corefile"/> <PARAM name="clusterType" value="single-inst"/> </CLUSTER> <!-- 每台服务器上的节点部署信息 --> <DEVICELIST> <!-- node1上的节点部署信息 --> <DEVICE sn="1000001"> <PARAM name="name" value="$MY_HOSTNAME"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="$MY_HOSTIP"/> <PARAM name="sshIp1" value="$MY_HOSTIP"/> <!--dbnode--> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="26000"/> <PARAM name="dataNode1" value="/gaussdb/data/db1"/> </DEVICE> </DEVICELIST> 
</ROOT>
EOF
cat $MY_XML
echo "14.Configure XML file completed."
echo -e "\n"## 15. 解压安装包并修改目录权限
echo "Begin to Uncompress openGauss Package and Modify directory permissions:"
cd $MY_SOFTWARE_DIRECTORY
tar -zxvf *all.tar.gz
tar -zxvf *om.tar.gz
ls -l
chmod -R 777 $MY_SOFTWARE_DIRECTORY/../
echo "15.Uncompress openGauss Package completed."
echo -e "\n"## 16. 执行 gs_preinstall
echo "Begin to execute openGauss preinstall:"
python $MY_SOFTWARE_DIRECTORY/script/gs_preinstall -U omm -G dbgrp -X $MY_XML
echo "16.openGauss preinstall completed."
echo -e "\n"## 17. 检查预安装环境
echo "Begin to Check OS environment:"
$MY_SOFTWARE_DIRECTORY/script/gs_checkos -i A -h $MY_HOSTNAME --detail## 18. 执行 gs_install
echo "Begin to execute openGauss install:"
touch /home/omm/install_db
cat >> /home/omm/install_db <<EOF
source ~/.bashrc
gs_install -X  $MY_XML --gsinit-parameter="--encoding=UTF8"  --dn-guc="max_process_memory=2GB" --dn-guc="shared_buffers=128MB" --dn-guc="cstore_buffers=16MB"
EOF
chown -R omm:dbgrp /home/omm/install_db
su - omm -c "sh /home/omm/install_db"
echo "17.openGauss install completed."
echo -e "\n"## 安装完毕!
echo "openGauss Install completed.congratulations"
echo "Congratulations!!!"
#!/bin/bash
## Author:  Kyana modified from JiaJunfeng
## Date:    2021-11-18
## OS:       CentOS7.6 [least:2c/4G]
## Database:openGauss 2.1.0## DEL VIRBR0
#ifconfig virbr0 down
#brctl delbr virbr0
#systemctl disable libvirtd.service[REBOOT NEEDED MAYBE]## 0. SET HOST INFO
export MY_HOSTNAME=gs_centos
export MY_HOSTIP=192.68.181.142
export MY_SOFTWARE_DIRECTORY=/soft/openGauss
export MY_XML=/soft/openGauss/clusterconfig.xml
export openGauss_Download_url=https://opengauss.obs.cn-south-1.myhuaweicloud.com/2.1.0/x86/openGauss-2.1.0-CentOS-64bit-all.tar.gz## 1. SET HOSTNAME & hosts FILE
hostnamectl set-hostname $MY_HOSTNAME
sed -i '/$MY_HOSTIP/d' /etc/hosts
echo "$MY_HOSTIP  $MY_HOSTNAME   #Gauss OM IP Hosts Mapping" >> /etc/hosts
cat /etc/hosts
echo "1.Configure hostname and /etc/hosts completed."
echo -e "\n"## 2. CLOSE FIREWALL & SELinux
systemctl disable firewalld.service
systemctl stop firewalld.service
echo "Firewalld " `systemctl status firewalld|grep Active`
sed -i '/^SELINUX=/d' /etc/selinux/config
echo "SELINUX=disabled" >> /etc/selinux/config
cat /etc/selinux/config|grep "SELINUX=disabled"
echo "2.Disable firewalld service and SELINUX completed."
echo -e "\n"## 3. SET SYS ENCODING & TIMEZONE
#####Can be done via GUI when installing
#echo "LANG=en_US.UTF-8" >> /etc/profile
#source /etc/profile
#echo $LANG
rm -fr /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
date -R
hwclock
echo "3.Configure encoding and Timezone completed."
echo -e "\n"## 4. CLOSE SWAP PARTITION
sed -i '/swap/s/^/#/' /etc/fstab
swapoff -a
free -m
echo "4.Close swap partition completed."
echo -e "\n"## 5. SET SSH SERVICE & CLOSE Banner
sed -i '/Banner/s/^/#/'  /etc/ssh/sshd_config
sed -i '/PermitRootLogin/s/^/#/'  /etc/ssh/sshd_config
echo -e "\n" >> /etc/ssh/sshd_config
echo "Banner none " >> /etc/ssh/sshd_config
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
cat /etc/ssh/sshd_config |grep -v ^#|grep -E 'PermitRoot|Banner'
echo "5.Configure SSH Service completed."
echo -e "\n"## 6. SET YUM MIRROR RELIABLE PACKAGE & PYTHON VERSION
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo  /etc/yum.repos.d/bak/
wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo
yum clean all
yum install -y python3 libaio-devel flex bison ncurses-devel glibc-devel patch redhat-lsb-core readline-devel
mv /usr/bin/python  /usr/bin/python2_bak
ln -s /usr/bin/python3 /usr/bin/python
python -V
echo "6.Configure Install Packages and change default Python version completed."
echo -e "\n"## 7. SET sysctl.conf & performance.sh
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_retries1 = 5
net.ipv4.tcp_syn_retries = 5
net.sctp.path_max_retrans = 10
net.sctp.max_init_retransmits = 10
EOF
sysctl -p
echo "7.Configure sysctl.conf and performance.sh completed."
echo -e "\n"## 8. SET RESOURCE LIMITITION
echo "* soft stack 3072" >> /etc/security/limits.conf
echo "* hard stack 3072" >> /etc/security/limits.conf
echo "* soft nofile 1000000" >> /etc/security/limits.conf
echo "* hard nofile 1000000" >> /etc/security/limits.conf
echo "* soft nproc unlimited" >> /etc/security/limits.d/90-nproc.conf
tail -n 4 /etc/security/limits.conf
tail -n 1 /etc/security/limits.d/90-nproc.conf
echo "8.Configure resource limits completed."
echo -e "\n"## 9. CLOSE TRANSPARENT HUGEPAGE[Only for CentOS]
cat >>/etc/rc.d/rc.local<<EOF
if test -f /sys/kernel/mm/transparent_hugepage/enabled; thenecho never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; thenecho never > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF
chmod +x /etc/rc.d/rc.local
/usr/bin/sh /etc/rc.d/rc.local
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag
echo "9.Close transparent_hugepage completed."
echo -e "\n"
[reboot here?]
## 10. DOWNLOAD openGauss SOFTWARE PACKAGE
mkdir -p $MY_SOFTWARE_DIRECTORY
cd $MY_SOFTWARE_DIRECTORY
wget $openGauss_Download_url
echo "10.openGauss software download completed."
echo -e "\n"## 11. SET XML CONFIGURE FILE
rm -fr $MY_XML
cat >> $MY_XML <<EOF
<?xml version="1.0" encoding="UTF-8"?> 
<ROOT> <CLUSTER> <PARAM name="clusterName" value="dbCluster" /> <PARAM name="nodeNames" value="$MY_HOSTNAME" /> <PARAM name="backIp1s" value="$MY_HOSTIP"/> <PARAM name="gaussdbAppPath" value="/gaussdb/app" /> <PARAM name="gaussdbLogPath" value="/gaussdb/log" /> <PARAM name="gaussdbToolPath" value="/gaussdb/om" /> <PARAM name="corePath" value="/gaussdb/corefile"/> <PARAM name="clusterType" value="single-inst"/> </CLUSTER> <DEVICELIST> <DEVICE sn="1000001"> <PARAM name="name" value="$MY_HOSTNAME"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <PARAM name="backIp1" value="$MY_HOSTIP"/> <PARAM name="sshIp1" value="$MY_HOSTIP"/> <!--dbnode--> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="23333"/> <PARAM name="dataNode1" value="/gaussdb/data/db1"/> </DEVICE> </DEVICELIST> 
</ROOT>
EOF
cat $MY_XML
echo "11.Configure XML file completed."
echo -e "\n"## 12. UNZIP PACKAGE & MODIFY PATH RIGHT
echo "Begin to Uncompress openGauss Package and Modify directory permissions:"
cd $MY_SOFTWARE_DIRECTORY
tar -zxvf *all.tar.gz
tar -zxvf *om.tar.gz
ls -l
chmod -R 777 $MY_SOFTWARE_DIRECTORY/../
echo "12.Uncompress openGauss Package completed."
echo -e "\n"## 13. OPERATE gs_preinstall & CHECK
echo "Begin to execute openGauss preinstall:"
python $MY_SOFTWARE_DIRECTORY/script/gs_preinstall -U omm -G dbgrp -X $MY_XML
echo "Begin to Check OS environment:"
$MY_SOFTWARE_DIRECTORY/script/gs_checkos -i A -h $MY_HOSTNAME --detail
echo "13.openGauss preinstall and check completed."
echo -e "\n"## 14. OPERATE gs_install
echo "Begin to execute openGauss install:"
touch /home/omm/install_db
cat >> /home/omm/install_db <<EOF
source ~/.bashrc
gs_install -X  $MY_XML --gsinit-parameter="--encoding=UTF8"  --dn-guc="max_process_memory=3GB" --dn-guc="shared_buffers=128MB" --dn-guc="cstore_buffers=16MB"
EOF
chown -R omm:dbgrp /home/omm/install_db
su - omm -c "sh /home/omm/install_db"
echo "14.openGauss install completed."
echo -e "\n"
echo "openGauss Install completed.congratulations"
echo "Congratulations!!!"

01|学习SQL

关系模型

  • 表之间的关系“一对一”、“一对多”、“多对一”,通过主键和外键维护
  • 主键(ID)唯一定位记录,不能用任何业务相关字段作为主键,主键通常选择自增整数或者全局唯一GUID
  • 联合主键是通过多个字段唯一标识记录,允许重复,但不常用
  • 通过定义外键实现一对多关系,防止插入无效数据,但会降低数据库效率,通过 ALERT TABLE实现
  • 通过中间表实现多对多关系
  • 通过定义新表实现一对一关系,可以提高效率
  • 索引是对关系数据库中某一列或者多个列的值进行预排序的数据结构,加快了查询效率
  • 索引效率取决于索引列值是否散列,越互不相同效率越高,主键会自动创建索引
  • 添加唯一索引保证列值的唯一性

查询数据

-- 选择数据库
USE database_name;-- 查询数据表(带条件)
SELECT * FROM table_name WHERE condition(AND OR NOT is avaliable);-- 投影查询
SELECT column_name( rename, mutiple_name) FROM table_name;-- 排序(逆序)
SELECT FROM ORDER BY column_name (DESC);-- 分页查询
SELECT FROM LIMIT maxium_each_page OFFSET offset_index;-- 聚合查询(返回一个一行一列的表,聚合分组)
SELECT COUNT(*) FROM table_name GROUP BY column_name;
-- 其它聚合函数: SUM, AVG, MAX, MIN, CELING, FLOOR
-- MAX和MIN也可以返回排序最前/后的字符串
-- 匹配不到时候,COUNT返回0,其它返回NULL-- 多表查询(笛卡尔查询,返回二维乘积表,列数是列数和、行数是行数积,可以使用表别名、列别名)-- 链接查询
-- 返回两表都存在的内容
INNER JOIN table_name ON column_name=column_name
-- 返回单表存在的内容,不存在的用NULL填充
LEFT/RIGHT/FULL JOIN

修改数据

-- 添加、替换数据,如果存在就忽略(自增和默认值可以不写,VALUES后可以增加多条数据)
INSERT/REPLACE (IGNORE) INTO (column_name1, column_name2, ...) VALUES (value1, value2, ...)-- 更新记录(如果WHERE没有匹配,不会更新不会报错,没有WHERE更新全表,可以一次更新多条)
UPDATE table_name SET column1=value1, ... WHERE condition-- 删除记录
DELETE FROM table_name WHERE condition

MySQL

mysql -h ipv4 -u root -p链接远程服务器,真正的服务器是 mysqldmysql是客户端

-- 切换数据库
USE database_name-- 创建数据库
CREATE database_name-- 删除数据表、库
DROP database_name-- 显示数据表、库
SHOW table_name-- 查看表结构
DESC table_name-- 查看创建表的语句
SHOW CREATE TABLE 'table_name-- 新增、修改表列
ALERT TABLE tabel_name ADD/CHANGE COLUMN column_name column_type(VARCHAR(10)) NOT NULL-- 删除表列
ALERT TABLE table_name DROP COLUMN column_name-- 写入查询结果集:把SELECT替换为INSERT

事务

对一些只能执行全部语句或全不执行,不能执行一部分语句的,事务有ACID(原子、一致、隔离、持久)四个特性

-- 显式事务
BEGIN
-- MYSQL STATEMENTS
COMMIT/ROLLBACK

隔离级别

SET TRANSACTION ISOLATION LEVEL level;在事务开始前设定隔离级别

Read Uncommited:隔离级别最低,别的事务可以读到本事务更新但未提交的数据,脏读

Read Commited:可能遇到不可重复读(Non Reaptedable Read)问题,两次读取数据不一致

Repeatable Read:可能遇到幻读(Phantom Read),可以更新不存在的记录,再一次读取成功

Serializable:最高级别,默认,串行,什么都不会发生,性能下降

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/864958.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年简单好用的电脑桌面便签记事本软件

在新的一年,很多打工人希望自己可以更加高效工作,把每件事管理的井井有条,实现升职加薪。 每天使用电脑办公,想要随手记录工作事项、零散琐事,用一款电脑桌面便签或记事本软件是非常方便的。 今天为大家推荐一款2025年简单又好用的电脑桌面便签记事本软件:敬业签! ~ 桌面…

基础知识-虚拟化(Virtualization)技术

(250106) 参考资料 KVM 虚拟化技术 | cnblogs | 惨绿少年@clsn.io 虚拟化介绍 | cnblogs | 休耕 云计算与虚拟化技术发展编年史 | cnblogs | 云物互联 nova系列二:kvm介绍 | cnblogs | linhaifeng 虚拟化与容器 | cnblogs | marility 《LPIC-3-Virtualization-and-Containe…

【k8s基础】k8s 基本使用

介绍及教程大全 Kubernetes中文文档 结构模型 k8s 是经典的一对多模型,有一个主要的管理节点master和许多的工作节点slaver。当然,k8s 也可以配置多个管理节点,拥有两个以上的管理节点被称为 高可用。k8s 包括了许多的组件,每个组件都是单运行在一个docker容器中,然后通过…

Scss 入门

Scss 是对 CSS 的扩展,提供了比 CSS 更简洁的语法和更强大的功能。不过,在部署时,我们要先把 Scss 编译成 CSS,才能让浏览器识别。编译 Scss 的方法有很多,这里我们使用 VS Code 的插件 Live Sass Compiler 进行自动编译。 基本准备配置保存目录。在 VS Code 配置文件中添…

Seed Lab实验:RSAPublic-Key Encryption and Signature Lab

Seed Lab实验:RSAPublic-Key Encryption and Signature Lab笔记RSAPublic-Key Encryption and Signature Lab 1.推导RSA私钥 import gmpy2p = 0xF7E75FDC469067FFDC4E847C51F452DF q = 0xE85CED54AF57E53E092113E62F436F4F e = 0x0D88C3n = q * p phi = (p - 1) * (q - 1) d =…

双稳态触发器

双稳态触发器双稳态触发器是一种具有记忆功能的逻辑单元电路,它能储存一位二进制码。 特点有两个稳定状态“0”态和“1”态; 能根据输入信号将触发器置成“0”或“1”态; 输入信号消失后,被置成的“0”或“1”态能保存下来,即具有记忆功能。RS触发器 基本RS触发器 输入低电…

在Lazarus下的Free Pascal编程教程——以数据处置推动程序运行的模块化程序设计方法

0.前言 我想通过编写一个完整的游戏程序方式引导读者体验程序设计的全过程。我将采用多种方式编写具有相同效果的应用程序,并通过不同方式形成的代码和实现方法的对比来理解程序开发更深层的知识。 了解我编写教程的思路,请参阅体现我最初想法的那篇文章中的“1.编程计划”和…

foobar2000 v2.24.1 汉化版

foobar2000 v2.24.1 汉化版 -----------------------【软件截图】---------------------- -----------------------【软件介绍】---------------------- foobar2000 是一个 Windows 平台下的高级音频播放器.包含完全支持 unicode 及支持播放增益的高级标签功能. 特色: * 支持的…

ABB机器人IO板DSQC652维修方法归纳

ABB机械手IO板DSQC652维修需要一定的专业知识和技能,以下是详细的维修步骤和注意事项:1. 初步检查断电操作:在维修前,确保机器人系统完全断电,避免触电或损坏设备。外观检查:检查DSQC652板是否有明显的物理损坏,如烧焦痕迹、裂纹或元件脱落。连接检查:检查IO板与控制器…

车载以太网一致性测试套件TAE.AETP

随着汽车电子电气架构的发展,高带宽、高速率的数据通信需求逐步涌现,具有稳定、高效特点的车载以太网技术逐步成为汽车主干网通信主流方案。为了满足复杂的通信需求,越来越多的以太网通信协议被应用到车载领域与之而来的是更多新技术的测试验证需求,经纬恒润自主研发的车载…

直播电商运营工具如何选?看这一篇就够了

近年来,直播电商迅速崛起,成为电商行业的新风口。无论是头部主播还是中小商家,都希望通过直播带货实现销售增长。然而,随着市场竞争的加剧,直播电商的运营难度也在不断增加。商家们面临着选品、数据分析、用户互动、流量获取等多重挑战。如何高效管理直播流程、精准分析数…