根据要求完成部署

根据如下要求,完成部署过程

1.恢复7、8、9、31、41所有机器的快照

7 8 9     web服务  nginx

172.16.1.xx


nfs-31 提供共享文件存储


rsync-41 提供数据备份的机器

2.在61机器,远程一键脚本化,部署这5台机器

master-61机器远程的,操作目标机器,让它安装好对应的服务

web-7
1.安装软件

2.修改配置文件

3.启动服务

4.挂载nfs



根据服务相关性,需要有先后的部署关系
rsync-41
1.安装软件

2.修改配置文件

3.创建rsync对应的数据目录,配置文件,授权

4.启动服务




nfs-31 + lrsync实时同步
1.安装软件

2.修改配置文件

3.创建nfs相关的数据目录,授权

3.启动服务

4.安装lsync

5.修改lsync配置文件

6.启动服务

3.检查整体应用可用性

1.从nginx作为入口,nginx默认的网页根目录
/usr/share/nginx/html 写入数据

2.同步到nfs机器上


3.同步到rsync机器上

学习方法建议

1.理解部署架构

2.手敲部署过程,别复制粘贴,(1.复制粘贴可能会出现各种语法错误)

否则你永远搞不清其中每一个命令的语法,可能遇见的坑。

阶段1:手工部署

备份项目综合架构要求

把你要部署的1,2,3,45流程,捋清楚了,脚本自然也就出来了

完成需求思路

1.确认连接方式
2.连接后开始部署

Master-61建议登录的别名

alias sshweb7='ssh root@172.16.1.7 -p 22999'
alias sshweb8='ssh root@172.16.1.8 -p 22999'
alias sshweb9='ssh root@172.16.1.9 -p 22999'
alias sshnfs31='ssh root@172.16.1.31 -p 22999'
alias sshrsync41='ssh root@172.16.1.41 -p 22999'


写入/etc/profile

windows部分

让windows可以免密登录master-61机器

1. windows创建公私钥,默认会存放在什么路径下
~/.ssh/id_rsa
~/.ssh/id_rsa.pub

ssh-keygen 去哪执行
在windows中下载一个支持使用linux命令的工具
git-bash工具

yu@DESKTOP-1TDLFH9 MINGW64 ~/.ssh
$ ls
id_rsa id_rsa.pub
known_hosts(存放目标机器的指纹公钥,意义在于?当你下次连接该目标机器的时候,就无序再确认机器的指纹了)

生成公私钥对儿
ssh-keygen -t rsa
yu@DESKTOP-1TDLFH9 MINGW64 ~/.ssh
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/yu/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/yu/.ssh/id_rsa
Your public key has been saved in /c/Users/yu/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:UIRiwabE0gzUJhD04WzJqA6AmXqNSntfFvxJa+QHKAk yu@DESKTOP-1TDLFH9
The key's randomart image is:
+---[RSA 3072]----+
|BO.o.. oo |
|o+@oB .. |
|=+oE .. |
|+ oo. o.. |
|+.o .o +S+ |
|+o. . * + |
|.o . o * . |
| . . o . . |
| . |
+----[SHA256]-----+



发送windows的公钥,给需要免密登录的机器上,目标机器 git-bash执行

ssh-copy-id (这个命令,等于把本地的公钥,写入到目标机器的~/.ssh/)


yu@DESKTOP-1TDLFH9 MINGW64 ~/.ssh
$ ssh-copy-id root@10.0.0.61
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/c/Users/yu/.ssh/id_rsa.pub"
The authenticity of host '10.0.0.61 (10.0.0.61)' can't be established.
ECDSA key fingerprint is SHA256:Csqwr63+SZRFFOug/IGoFTgRe8hDSI/QalSMBcC6IaU.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@10.0.0.61's password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'root@10.0.0.61'"
and check to make sure that only the key(s) you wanted were added.



分别检查,客户端,服务端的,密钥文件信息

windows客户端的,目标机器的公钥
yu@DESKTOP-1TDLFH9 MINGW64 ~/.ssh
$ cat known_hosts
10.0.0.61 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL/Sx3bAaNcKqo7pC4FTYk3gyZ6hd1D/DKUWVfOd4gZb/8XwlAxWauceHe/BAsW5Z8pEmG6AjSyHM8ckOs94c7Y=


linux服务端,可以看到windows机器的,公钥信息

[root@master-61 ~]#cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCyHEvexmoo7E/dkKjYg66uwo4i2q+dEdZ7nP+eTx4xmY6xUMohsK/LjE5ZuNN8GNPLD92fMGczX3Pz+tFkb4ujVb6yJkqVDVv5P48bZoC+10gYXAjX+mopa058iTKwkS9kcis5Geuomb7aReLnvnoP1q6qYe2rqhYQzLoB9xdjvrWeJ8ay/Z3ON4FR/a5Py2azPFPihIMKuTQasivHyq6BWImD44tLCgZaYrJRKLRge39aFAufxt2nIeeaZIsr55BZavAPzyLqpPez446geMZvEh1wgIZc0+ULSDy55gNXV9m12nBCVEHDUkn7IID9gw7zfMCq2s2eetPldDJnlVQpT2eFtn7nhCbkc0mxn+qCxEgSGQLDmUxnplN9kCBxsQfo5rT35guViMy1emw6dk26tX/sszyW9dFPYENNF0GfZBRw2Haj0zNNH5hoPrh+SLqY6d//fptHBrbgikVN474ewXmNeLThm0sl6BYrw/tUskV+CWW2+emNT49hcGPk4js= yu@DESKTOP-1TDLFH9

这个信息就和windows的 id_rsa.pub

yu@DESKTOP-1TDLFH9 MINGW64 ~/.ssh
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCyHEvexmoo7E/dkKjYg66uwo4i2q+dEdZ7nP+eTx4xmY6xUMohsK/LjE5ZuNN8GNPLD92fMGczX3Pz+tFkb4ujVb6yJkqVDVv5P48bZoC+10gYXAjX+mopa058iTKwkS9kcis5Geuomb7aReLnvnoP1q6qYe2rqhYQzLoB9xdjvrWeJ8ay/Z3ON4FR/a5Py2azPFPihIMKuTQasivHyq6BWImD44tLCgZaYrJRKLRge39aFAufxt2nIeeaZIsr55BZavAPzyLqpPez446geMZvEh1wgIZc0+ULSDy55gNXV9m12nBCVEHDUkn7IID9gw7zfMCq2s2eetPldDJnlVQpT2eFtn7nhCbkc0mxn+qCxEgSGQLDmUxnplN9kCBxsQfo5rT35guViMy1emw6dk26tX/sszyW9dFPYENNF0GfZBRw2Haj0zNNH5hoPrh+SLqY6d//fptHBrbgikVN474ewXmNeLThm0sl6BYrw/tUskV+CWW2+emNT49hcGPk4js= yu@DESKTOP-1TDLFH9


master-61管理机

1.修改ssh端口为22999
2.关闭用户名密码登录
3.开启通过公私钥登录

被管理机

1.修改ssh端口为22999
2.关闭用户名密码登录
3.开启通过公私钥登录
4.指定监听内网地址,172.16.1.xx

要求部署效果

1.master-61机器只能通过公私钥登录,禁止用户密码连接
2.所有主机的ssh端口全都是22999
3.被管理的机器只能通过内网、且使用公私钥连接。

阶段2:脚本部署ssh

阶段1的ssh环境部署,是手动操作;

现在需要实现脚本一键部署;

1.管理机自动创建公私钥
2.管理机自动分发公钥到备管理机
3.远程修改被管理机的ssh连接端口为22999,监听地址是172.16.1.xx
4.远程修改被管理机不允许密码登录,只能是密钥登录
5.修改完毕后,验证是否生效,远程查看所有被管理主机的主机名

参考写法

  • 思路不唯一

  • 可优化还很多

  • 脚本是一个工艺品,不断打磨,不断完善

批量修改配置文件

友情提醒

  • 客户端机器需要安装sshpass命令

  • 这个sshpass命令只存在master-61机器上即可

    实现了公钥面交互分发的命令如下
    在master-61机器上执行
    ssh-copy-id命令,分发公钥,但是默认需要输入远程机器的密码
    使用 sshpass即可面交互输入密码
    以及面指纹确认的参数 -o StrictHostKeyChecking=no

    sshpass -p '123123' ssh-copy-id 172.16.1.${ip} -o StrictHostKeyChecking=no > /tmp/create_ssh.log 2>&1

  • 客户端机器是否允许公钥登录

  • 检查目标机器是否允许了公钥登录,一般情况下默认允许的

  • 目标机器的sshd配置文件是初始化的


#1.管理机自动创建公私钥
echo "正在创建公私钥..."
if [ -f /root/.ssh/id_rsa ]
then
echo "密钥对已经存在,请检查!"
else
ssh-keygen -f /root/.ssh/id_rsa -N '' > /tmp/create_ssh.log 2>&1
fi

echo '====================分割线=============================='
#2.管理机自动分发公钥到备管理机
echo "正在分发公钥中...分发的机器列表是{7,8,31,41}"
for ip in {7,8,9,31,41}
do
sshpass -p '123123' ssh-copy-id 172.16.1.${ip} -o StrictHostKeyChecking=no > /tmp/create_ssh.log 2>&1
echo "正在验证免密登录结果中...."
echo "远程获取到主机名: $(ssh 172.16.1.${ip} hostname)"
done
echo '====================分割线=============================='

#3.远程修改被管理机的ssh连接端口为22999,监听地址是172.16.1.xx
for ip in {7,8,9,31,41}
do
echo "修改172.16.1.${ip}的ssh端口中..."
ssh root@172.16.1.${ip} "sed -i '/Port 22/c Port 22999' /etc/ssh/sshd_config"
done



echo '====================分割线=============================='

#4.远程修改被管理机不允许密码登录,只能是密钥登录
for ip in {7,8,9,31,41}
do
echo "禁止密码登录参数修改中...当前操作的机器是172.16.1.${ip}"
ssh root@172.16.1.${ip} "sed -i '/^PasswordAuthentication/c PasswordAuthentication no' /etc/ssh/sshd_config"
echo "允许公钥登录参数修改中...当前操作的机器是172.16.1.${ip}"
ssh root@172.16.1.${ip} "sed -i '/PubkeyAuthentication/c PubkeyAuthentication yes' /etc/ssh/sshd_config"
done
echo '====================分割线=============================='
# 5.修改监听内网地址
for ip in {7,8,9,31,41}
do
echo "修改监听地址中...当前操作的机器是172.16.1.${ip}"
ssh root@172.16.1.${ip} "sed -i '/ListenAddress 0.0.0.0/c ListenAddress 172.16.1.${ip}' /etc/ssh/sshd_config"
done

echo '====================分割线=============================='

# 6.批量验证ssh修改情况
for ip in {7,8,9,31,41}
do
echo "当前查看的机器是172.16.1.${ip}"
ssh root@172.16.1.${ip} "grep -E '^(Port|PasswordAuthentication|PubkeyAuthentication|ListenAddress)' /etc/ssh/sshd_config"
done

echo '====================脚本执行完毕=============================='
 

当前完成到了这个里

master-61可以免密操作  
7 8 9 31 41这几个机器了

还缺少远程的批量重启sshd服务,让sshd_config配置生效

批量重启ssh服务验证结果

创建验证脚本如下

1.批量重启sshd服务

重启服务,单独拆分为了一个脚本,作用就是重启服务

for ip in {7,8,9,31,41}
do
echo "重启sshd服务中,当前操作的机器是172.16.1.${ip}"
ssh root@172.16.1.${ip} "systemctl restart sshd"
echo "==========================================="
done

重启完毕了服务,验证下修改的结果是否正确,远程查看配置文件信息

2.远程查看主机信息

这个脚本,作用就是远程查看主机的配置文件信息

[root@master-61 ~]#cat show_config.sh
for ip in {7,8,9,31,41}
do
echo "远程获取主机名中,当前操作的机器是172.16.1.${ip}"
ssh -p 22999 root@172.16.1.${ip} "hostname"
echo "远程获取主机sshd配置信息,当前操作的机器是172.16.1.${ip}"
ssh -p 22999 root@172.16.1.${ip} "grep -E '^(Port|PasswordAuthentication|PubkeyAuthentication|ListenAddress)' /etc/ssh/sshd_config"
echo "远程查看sshd端口情况,当前操作的机器是172.16.1.${ip}"
ssh -p 22999 root@172.16.1.${ip} "netstat -tunlp|grep sshd|grep -v grep"
echo "========================分割线============================="
done

此时还剩下master-61机器未修改了

web-7
web-8
web-9

nfs-31
rsync-41

全部完成了 sshd的配置文件修改,修改了
端口
监听地址
禁止密码登录
允许公钥登录



下一步就是该master-61机器的安全性,
禁止密码登录
允许公钥登录即可


此时,master-61,以及所有的目标机器以及全部配置好了ssh环境,可以进行服务安装 了

吧你以前部署操作,整理为一个健康的脚本,执行即可

阶段3:远程一键安装综合备份架构

  • 上述的阶段2,一键搭建好了sshd的安全连接环境

  • 只要编写一键安装服务的脚本即可

  • 注意服务的启动顺序

rsync服务

根据刚才的画图理解流程,判断出先部署rsync服务

# 1.安装
yum install rsync -y

# 2.配置文件
cat > /etc/rsyncd.conf << 'EOF'
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
comment = yuchaoit.cn about rsync
path = /backup
EOF

# 3.创建用户
groupadd www -g 666
useradd www -g 666 -u 666 -M -s /sbin/nologin

# 4.创建目录,授权
mkdir -p /backup
chown -R www.www /backup

# 5.创建密码文件,授权
echo 'rsync_backup:yuchao666' > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd

# 6.启动服务
systemctl start rsyncd
systemctl enable rsyncd

# 7.检查服务
netstat -tunlp|grep rsync

远程拷贝、远程安装

[root@master-61 ~]#scp -P 22999 install_rsync.sh root@172.16.1.41:/opt/
[root@master-61 ~]#ssh -p 22999 root@172.16.1.41 "bash /opt/install_rsync.sh"


远程检查rsync部署操作
[root@master-61 /0224_scripts]#sshrsync41   "cat /etc/rsync.passwd;ls -ld /backup;id www"
rsync_backup:yuchao666
drwxr-xr-x 2 www www 6 Apr 28 10:39 /backup
uid=666(www) gid=666(www) groups=666(www)

nfs服务(nfs-31)

# 0. yum源阿里云yum配置


# 1.安装服务
yum install nfs-utils rpcbind -y

# 2.创建nfs限定的用户、组
groupadd www -g 666
useradd www -g 666 -u 666 -M -s /sbin/nologin

# 3.创建共享目录,修改权限
mkdir /nfs-yuchao-nginx
chown -R www.www /nfs-yuchao-nginx

# 4.创建配置文件
cat > /etc/exports <<EOF
/nfs-yuchao-nginx 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
EOF

# 5.启动服务
systemctl start nfs

# 6.检查服务
showmount -e 127.0.0.1
远程安装 1.远程发送配置文件
[root@master-61 ~]#scp -P 22999 install_nfs.sh root@172.16.1.31:/opt/
install_nfs.sh

2.远程执行
[root@master-61 ~]#ssh -p 22999 root@172.16.1.31 "bash /opt/install_nfs.sh"


nfs+lsyncd服务

# 1.安装服务
yum install lsyncd -y

# 2.生成配置文件
cat >/etc/lsyncd.conf <<EOF
settings {
logfile ="/var/log/lsyncd/lsyncd.log",
statusFile ="/var/log/lsyncd/lsyncd.status",
inotifyMode = "CloseWrite",
maxProcesses = 8,
}

sync {
default.rsync,
source = "/nfs-yuchao-nginx",
target = "rsync_backup@172.16.1.41::backup",
delete= true,
exclude = {".*"},
delay=1,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true,
password_file="/etc/rsync.passwd",
_extra={"--bwlimit=200"}
}
}
EOF

# 3.创建密码文件
echo "yuchao666" > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd

# 4.启动
systemctl start lsyncd

# 5.检查服务
ps -ef|grep lsyncd |grep -v grep

远程安装lsyncd

1.远程发送配置文件
[root@master-61 ~]#scp -P 22999  install_lsyncd.sh root@172.16.1.31:/opt/install_lsyncd.sh 


2.远程执行
[root@master-61 ~]#ssh -p 22999 root@172.16.1.31 "bash /opt/install_lsyncd.sh"


测试rsync+nfs

[root@master-61 ~]#ssh -p 22999 root@172.16.1.31 "touch /nfs-yuchao-nginx/超哥666.png"
[root@master-61 ~]#
[root@master-61 ~]#ssh -p 22999 root@172.16.1.41 "ls /backup"
超哥666.log
超哥666.png
 

Web7/8/9机器

# 1.安装服务
yum install nginx -y

# 2.创建配置文件
cat >/etc/nginx/nginx.conf <<EOF
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;


server {
listen 81;
server_name localhost;
location / {
root html;
index index.html;
}
}

}
EOF

# 3.启动服务
systemctl start nginx

# 4.检查服务
netstat -tunlp|grep nginx

# 5.挂载目录
yum install nfs-utils -y
mount -t nfs 172.16.1.31:/nfs-yuchao-nginx /usr/share/nginx/html
 

远程部署

[root@master-61 ~]#scp -P 22999 install_nginx.sh  root@172.16.1.7:/opt
[root@master-61 ~]#ssh -p 22999 root@172.16.1.7 "bash /opt/install_nginx.sh"


for server in {7,8,9}
do
scp -P 22999 install_nginx.sh root@172.16.1.${server}:/opt
ssh -p 22999 root@172.16.1.${server} "bash /opt/install_nginx.sh"
done

最终测试

1.在共享存储中,创建网页数据文件,提供给所有web机器使用
cat >index.html<<EOF
<meta charset=utf8>
心若在、梦就在。
于超老师带你学linux,加油吧少年。
EOF


scp -P 22999 index.html root@172.16.1.31:/nfs-yuchao-nginx/





2.检查数据备份情况
ssh -p 22999 root@172.16.1.41 "ls -l /backup"


3.检查网站情况
for web in {7,8,9}
do
curl 172.16.1.${web}:81
done


4. 浏览器访问
http://10.0.0.7:81/
http://10.0.0.8:81/
http://10.0.0.9:81/

5.再次修改页面,查看数据
cat >index.html<<EOF
<meta charset=utf8>
心若在、梦就在。 EOF
scp -P 22999 index.html root@172.16.1.31:/nfs-yuchao-nginx/

[root@master-61 ~]#ssh -p 22999 root@172.16.1.41 "cat /backup/index.html"
<meta charset=utf8>
心若在、梦就在。 ​
 

ssh练习的更多相关文章

  1. [linux]阿里云主机的免登陆安全SSH配置与思考

    公司服务器使用的第三方云端服务,即阿里云,而本地需要经常去登录到服务器做相应的配置工作,鉴于此,每次登录都要使用密码是比较烦躁的,本着极速思想,我们需要配置我们的免登陆. 一 理论概述 SSH介绍 S ...

  2. SSH实战 · 唯唯乐购项目(上)

    前台需求分析 一:用户模块 注册 前台JS校验 使用AJAX完成对用户名(邮箱)的异步校验 后台Struts2校验 验证码 发送激活邮件 将用户信息存入到数据库 激活 点击激活邮件中的链接完成激活 根 ...

  3. 记录一则Linux SSH的互信配置过程

    需求:四台Linux主机,IP地址为192.168.10.10/11/12/13,配置登录用户的互信 1.各节点ssh-keygen生成RSA密钥和公钥 ssh-keygen -q -t rsa -N ...

  4. SSH免手动输入密码和设置代理

    通过使用sshpass将密码写入命令里,直接执行,免去手动密码输入的步骤命令如下: sshpass -p password_abc ssh user_abc@ssh_host -p ssh_port ...

  5. github免输用户名/密码SSH登录的配置

    从github上获取的,自己整理了下,以备后用. Generating an SSH key mac windows SSH keys are a way to identify trusted co ...

  6. Linux 利用Google Authenticator实现ssh登录双因素认证

    1.介绍 双因素认证:双因素身份认证就是通过你所知道再加上你所能拥有的这二个要素组合到一起才能发挥作用的身份认证系统.双因素认证是一种采用时间同步技术的系统,采用了基于时间.事件和密钥三变量而产生的一 ...

  7. mac下生成ssh keys 并上传github仓储

    使用github仓储需要本机生成一个公钥key 添加到自己的git账户SSH keys中   mac 生成方法:   1. 打开终端 输入   ssh-keygen 然后系统提示输入文件保存位置等信息 ...

  8. Linux实战教学笔记05:远程SSH连接服务与基本排错(新手扫盲篇)

    第五节 远程SSH连接服务与基本排错 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 远程连接LInux系统管理 1.1 为什么要远程连接Linux系统 在实际的工作场景中,虚拟机界面或物理 ...

  9. 树莓派3B的食用方法-1(装系统 网线ssh连接)

    首先要有一个树莓派3B , 在某宝买就行, 这东西基本上找到假货都难,另外国产和英国也没什么差别,差不多哪个便宜买哪个就行. 不要买店家的套餐,一个是配的东西有些不需要,有的质量也不好. 提示:除了G ...

  10. linux启动SSH及开机自动启动

    本文地址 分享提纲: 1.查看是否启动 2. 设置自动启动 1.[查看是否启动] 启动SSH服务 “/etc/init.d/sshd start”.然后用netstat -antulp | grep ...

随机推荐

  1. 阿里云全站加速DCDN重磅发布!打造新一代加速引擎

    简介: 新一代的加速引擎DCDN,安全.高效.可计算 在数字化转型变革逐步深入的当下,安全高效成为企业上云.全球化部署的关键需求. 随着应用场景复杂度不断提升.业务需求差异化发展,为了给企业提供更完善 ...

  2. 庖丁解InnoDB之REDO LOG

    ​简介: 数据库故障恢复机制的前世今生一文中提到,今生磁盘数据库为了在保证数据库的原子性(A, Atomic) 和持久性(D, Durability)的同时,还能以灵活的刷盘策略来充分利用磁盘顺序写的 ...

  3. 如何开发 Node.js Native Add-on?

    简介: 来一起为 Node.js 的 add-on 生态做贡献吧~ 作者 | 吴成忠(昭朗) 这篇文章是由 Chengzhong Wu (@legendecas),Gabriel Schulhof ( ...

  4. 如何将一棵LSM-Tree塞进NVM

    ​简介: 随着非易失内存产品的商业化推广,我们对于其在云原生数据库中大规模推广的潜力越来越有兴趣.X-Engine是阿里云数据库产品事业部PolarDB新型存储引擎团队研发的一个LSM-tree存储引 ...

  5. [FE] uni-app 安装 uview-ui 的两种方式

    一. 下载的方式安装 就是把源码放到项目根目录中,然后引入 scss.js,并配置 easycom 模式. https://www.uviewui.com/components/install.htm ...

  6. dotnet 读 WPF 源代码笔记 渲染层是如何将字符 GlyphRun 画出来的

    从业务代码构建出来 GlyphRun 对象,在 WPF 的渲染层里,如何利用 GlyphRun 提供的数据将字符在界面呈现出来.本文将和大家聊聊从 WPF 的渲染层获取到 GlyphRun 数据,到调 ...

  7. Process-与操作系统中的进程进行交互

    1.Process介绍 在Java中,Process类是一个抽象类,它提供了与操作系统中的进程进行交互的方法.当你在Java程序中启动一个新的进程(例如,运行一个外部程序或脚本)时,JVM会创建一个P ...

  8. 259k+ Star!这是我见过最全的开发者技术学习路线!

    大家好,我是 Java陈序员. 自从上班后,身体是一天不如一天了,也很少有时间可以去学习新技术了.程序员如果技术跟不上,很容易就被淘汰. 而碎片化的学习效率又不高,往往今天学了,明天就忘了.有时候更是 ...

  9. Swift实现判断目录下是否存在指定文件功能

    本文主要讲解以下这段名为 isDataJsonFilePathExists 的私有函数的 Swift 代码实现细节,该函数的作用是检查指定文件或文件夹是否存在,其返回值类型为 Bool 类型,如果存在 ...

  10. 07 mapping索引操作

    目录 版本 获取健康值 获取所有索引的信息 创建索引 1. 自动推导 2. 自定义 判断索引是否存在 新增字段 新增记录 查询记录 获取mapping信息 删除索引 添加别名 查看别名 索引备份数据 ...