当前位置: 首页 > news >正文

Day56-LNMP架构扩展为集群模式实战精讲

Day56-LNMP架构扩展为集群模式实战精讲

  • 1. 企业级标准部署知乎产品wecenter
    • 1.1 部署知乎软件Wecenter
  • 2. 企业级迁移数据库到独立服务器
    • 2.1 为什么要进行数据库的拆分
    • 2.2 数据库拆分架构演变过程,如下图所示
    • 2.3 数据库拆分环境规划
    • 2.4 数据库拆分架构详细步骤
    • 2.4 web01修改代码连接新数据库环境
  • 3. 快速扩展多台相同的Web服务器(php7.4)
    • 3.1 为什么要扩展多台web节点
    • 3.2 扩展多台web解决了什么问题
    • 3.3多台web节点技术架构组成,如下图所示
    • 3.4快速扩展一台web节点环境规划
    • 3.5 快速扩展一台web节点详细步骤
  • 4. 企业级标准拆分静态资源至独立存储服务器NFS
    • 4.1 为什么拆分静态资源至独立存储服务器
    • 4.2新增一台nfs存储解决了什么问题
    • 4.3 多台web节点技术架构组成,如下图所示
    • 4.4 快速扩展一台web节点环境规划
    • 4.5 快速扩展一台web节点详细步骤

1. 企业级标准部署知乎产品wecenter

1.1 部署知乎软件Wecenter

知乎产品官方: https://www.wecenter.com/downloads/
1.配置Nginx虚拟主机站点,域名为zh.etiantian.org

[root@web01 ~]# cat /etc/nginx/conf.d/zh.etiantian.org.conf
server {listen 80;server_name zh.etiantian.org;root /data/zh;index index.php index.html;location ~ \.php$ {root /data/zh;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}#重启nginx服务
[root@http-server ~]# systemctl restart nginx

2.重启nginx服务

[root@web01 ~]# nginx -t
[root@web01 ~]# systemctl reload nginx

3.下载Wecenter产品,部署并授权

[root@web02 ~]# cd /server/tools
[root@web02 tools]# rz #回车上传知乎软件
[root@web02 tools]# unzip WeCenter_3-6-0.zip -d /data/zh
[root@web02 tools]# chown -R www.www /data/zh/ #部署完需要优化目录权限

本机hosts文件配置zh.etiantian.org,打开浏览器访问,出现可以访问的页面,知乎的目录如下
在这里插入图片描述

4.wecenter产品也需要使用数据库, 所以需要手动建立数据库

[root@web02 tools]# mysql -uroot -poldboy123 #登陆数据库
MariaDB [(none)]> create database zh; #创建zh数据库
MariaDB [(none)]> grant all on zh.* to zh@'localhost' identified by 'oldboy123';
MariaDB [(none)]> grant select,insert,update,delete on zh.* to 'zh'@'172.16.1.%' identified by 'oldboy123'; #异地数据库用户,只授权增删改查。
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> quit

在这里插入图片描述

在这里插入图片描述

[root@web01 zh]# rm -f /data/zh/install/index.php

5.通过浏览器访问zh.etiantian.org,并通过网页配置,最终结果
在这里插入图片描述

6.知乎产品优化

#权限优化
chown -R root.root /data/zh
chown -R www.www /data/zh/uploads /data/zh/cache/ /data/zh/tmp/
#限制目录下php被访问
location ~* /(?:uploads|cache|tmp)/.*\.php$ {deny all;
}
#前后台分离(独立后台服务器) <==生产场景方案
#动静分离(独立静态服务器) <==生产场景方案

在这里插入图片描述

2. 企业级迁移数据库到独立服务器

拆分数据库至至独立数据库服务器

2.1 为什么要进行数据库的拆分

(数据库的瓶颈:CPU、磁盘、内存,数据库服务器可以MySQL+Redis在一起,但不要和Web一起)

  1. 缓解web网站的压力
  2. 增强数据库读写性能
  3. 提高用户访问的速度

2.2 数据库拆分架构演变过程,如下图所示

在这里插入图片描述

2.3 数据库拆分环境规划

主机名称应用环境外网地址内网地址
web01nginx+php10.0.0.7172.16.1.7
db01mysql10.0.0.51(生产场景无)172.16.1.51

2.4 数据库拆分架构详细步骤

1.web01网站服务器操作如下
1)备份web01上的数据库,oldboy123是数据库密码

[root@web01 ~]# mysqldump -uroot -p'oldboy123' -B -A|gzip>/tmp/bak.sql.gz

2)将web01上备份的数据库拷贝至db01服务器上

[root@web01 ~]# scp /tmp/bak.sql.gz root@172.16.1.51:/tmp  
#永久停止web01本地数据库
[root@web01 ~]# systemctl stop mariadb
[root@web01 ~]# systemctl disable mariadb

2.db01数据库服务器操作如下
1)将web01服务器上推送的数据库备份文件恢复至db01服务器新数据库中

[root@db01 ~]# yum install mariadb mariadb-server -y
[root@db01 ~]# systemctl start mariadb
[root@db01 ~]# systemctl enable mariadb
[root@db01 ~]# cd /tmp && gzip -d bak.sql.gz
[root@db01 tmp]# mysql </tmp/bak.sql         #没有重启,还是没密码状态。
[root@db01 tmp]# mysql -e "show databases"
+--------------------+
| Database           |
+--------------------+
| information_schema |
| blog               |
| mysql              |
| performance_schema |
| test               |
| zh                 |
+--------------------+
[root@db01 tmp]# mysql -e "select user,host from mysql.user";
+------+------------+
| user | host       |
+------+------------+
| root | 127.0.0.1  |
| blog | 172.16.1.% |
| root | localhost  |
| zh   | localhost  |
+------+------------+

2)数据库导入完成后,重启数据库,使用新密码进行登录,并检查数据库已被导入成功

[root@db01 ~]# systemctl restart mariadb #测试下进入flush privileges;
[root@db01 ~]# mysql -uroot -poldboy123 -e "show databases;" #查库
[root@db01 ~]# mysql -uroot -poldboy123 -e "select user,host from mysql.user;" #查用户
[root@db01 ~]# mysql -uroot -poldboy123 -e "show tables from zh;" #查表
[root@db01 ~]# mysql -uroot -poldboy123 -e "show grants for 'zh'@'172.16.1.%';" #查表
+------------------------------------------------------------------------------------------------------------+
| Grants for zh@172.16.1.%                                                                                   |
+------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'zh'@'172.16.1.%' IDENTIFIED BY PASSWORD '*FE28814B4A8B3309DAC6ED7D3237ADED6DA1E515' |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `zh`.* TO 'zh'@'172.16.1.%'                                        |
+------------------------------------------------------------------------------------------------------------+
[root@db01 tmp]# mysql -uroot -poldboy123 -e "revoke CREATE, ALTER ON zh.* from 'zh'@'172.16.1.%';"
[root@db01 tmp]# mysql -uroot -poldboy123 -e "show grants for 'zh'@'172.16.1.%';" 
| Grants for zh@172.16.1.% | GRANT USAGE ON *.* TO 'zh'@'172.16.1.%' IDENTIFIED BY PASSWORD '*FE28814B4A8B3309DAC6ED7D3237ADED6DA1E515' |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `zh`.* TO 'zh'@'172.16.1.%'

3)在新数据库上授权, 允许所有网段, 通过单个账户管理单个数据库

#授权所有权限 grant all privileges
#授权所有库所有表 *.*
#将授权赋予给哪个用户,这个用户只能通过哪个网段过来(%所有) 'zh'@'172.16.1.%'
#授权该用户登录的密码 identified by
mysql> grant select,insert,update,delete on zh.* to zh@'172.16.1.%' identified by 'oldboy123';
mysql> grant select,insert,update,delete on blog.* to zh@'172.16.1.%' identified by 'oldboy123';
mysql> flush privileges;
mysql> quit

2.4 web01修改代码连接新数据库环境

1)修改blog产品代码连接数据库的配置文件

[root@web01 ~]# vim /data/blog/wp-config.php
# 数据库名称
define('DB_NAME', 'blog');
# 数据库用户
define('DB_USER', 'blog');
# 数据库密码
define('DB_PASSWORD', 'oldboy123');
# 数据库地址
define('DB_HOST', 'db01.etiantian.org'); ####核心点用域名

2)修改wecenter产品代码连接数据库的配置文件

[root@web01 zh]# grep -iR "oldboy123"|grep -v cache 
system/config/database.php: 'password' => 'oldboy123',
[root@web01 zh]# vim /data/zh/system/config/database.php
'host' => 'db01.etiantian.org', ####核心点用域名
'username' => 'zh',
'password' => 'oldboy123',
'dbname' => 'zh',

3)最后访问网站,成功打开,并能发表问题,至此拆分数据库完成

3. 快速扩展多台相同的Web服务器(php7.4)

扩展多台相同的Web服务器

3.1 为什么要扩展多台web节点

单台web服务器能抗住的访问量是有限的,配置多台web服务器能提升更高的访问速度。

3.2 扩展多台web解决了什么问题

  1. 单台web节点如果故障,会导致业务down机

  2. 多台web节点能保证业务的持续稳定,扩展性高

  3. 多台web节点能有效的提升用户访问网站的速度

没有流量的时候,单机比集群快。

3.3多台web节点技术架构组成,如下图所示

在这里插入图片描述

3.4快速扩展一台web节点环境规划

主机名称应用环境外网地址内网地址
web01nginx+php10.0.0.7172.16.1.7
web02nginx+php10.0.0.8172.16.1.8
db01mysql10.0.0.51172.16.1.51

3.5 快速扩展一台web节点详细步骤

通过web01现有环境快速的扩展一台web02的服务器,数据库统一使用db01
1.创建www用户

[root@web02 ~]# useradd -u1111 www -s /sbin/nologin -M

2.安装LNP

#[root@web02 ~]# scp -rp root@172.16.1.7:/etc/yum.repos.d/* /etc/yum.repos.d/
#[root@web02 ~]# scp -rp root@172.16.1.7:/etc/pki/rpm-gpg/* /etc/pki/rpm-gpg/
##[root@web02 ~]# yum install nginx -y
#[root@web02 ~]# yum -y install php71w php71w-cli php71wcommon php71w-devel php71w-embedded php71w-gd php71wmcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb#安装PHP7.4
#安装php第三方官方yum源
yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
#安装yum-tools管理工具
yum -y install yum-utils
#启用PHP 7.4 Remi存储库
yum-config-manager --enable remi-php74
#安装php扩展服务包
rpm -e $(rpm -qa|grep php)
yum install php74-php php74-php-cli php74-php-common php74-php-devel php74-php-embedded php74-php-gd -y
yum install php74-php-mcrypt php74-php-mbstring php74-phppdo php74-php-xml php74-php-fpm php74-php-mysqlnd -y
yum install php74-php-opcache php74-php-pecl-memcached php74-php-pecl-redis php74-php-pecl-mongodb -y
[root@web02 ~]# php74 -v
PHP 7.4.21 (cli) (built: Jun 29 2021 15:17:15) ( NTS )
[root@web02 ~]# rpm -ql php74-php-fpm
/etc/logrotate.d/php74-php-fpm
/etc/opt/remi/php74/php-fpm.conf
/etc/opt/remi/php74/php-fpm.d
/etc/opt/remi/php74/php-fpm.d/www.conf

3.将web01的nginx配置文件导入到web02

[root@web02 ~]# scp -rp root@172.16.1.7:/etc/nginx /etc/

4.将web01的php配置文件导入到web02

#[root@web02 ~]# scp -rp root@172.16.1.7:/etc/php-fpm.d /etc/

5.配置php-fpm用户与Nginx的运行用户保持一致

[root@web01 ~]# sed -i '/^user/c user = www' /etc/opt/remi/php74/php-fpm.d/www.conf
[root@web01 ~]# sed -i '/^group/c group = www' /etc/opt/remi/php74/php-fpm.d/www.conf
[root@web01 blog]# egrep "^user|^group" /etc/opt/remi/php74/php-fpm.d/www.conf
user = www
group = www

6.从web02服务器上拉回web1上的站点目录/data到本地的/下。

[root@web02 ~]# scp -rp root@172.16.1.7:/data /
[root@web02 ~]# chown -R www.www /data/

7.最后启动nginx与启动php74-php-fpm,并加入开机自启

[root@web02 ~]# systemctl start php74-php-fpm nginx
[root@web02 ~]# systemctl enable php74-php-fpm nginx

8.把所有域名解析到10.0.0.8,然后打开浏览器测试

4. 企业级标准拆分静态资源至独立存储服务器NFS

拆分静态资源至独立存储服务器NFS

4.1 为什么拆分静态资源至独立存储服务器

当后端的web节点出现多台时,会导致用户上传的图片、视频附件等内容仅上传至一台web服务器,那么其他的web服务器则无法访问到该图片。

4.2新增一台nfs存储解决了什么问题

  1. 保证了多台web节点静态资源一致。
  2. 有效节省多台web节点的存储空间。
  3. 统一管理静态资源,便于后期推送至CDN进行静态资源加速

4.3 多台web节点技术架构组成,如下图所示

在这里插入图片描述

4.4 快速扩展一台web节点环境规划

主机名称应用环境外网地址内网地址
web01nginx+php10.0.0.7172.16.1.7
web02nginx+php10.0.0.8172.16.1.8
nfsnfs172.16.1.31
db01mysql172.16.1.51

4.5 快速扩展一台web节点详细步骤

1.nfs服务端,操作步骤如下
0)创建www用户

useradd -u1111 www -s /sbin/nologin -M

1)安装并配置nfs

[root@nfs01 ~]# rpm -qa nfs-utils
nfs-utils-1.3.0-0.68.el7.x86_64
[root@nfs ~]# yum install nfs-utils -y
[root@nfs ~]# cat /etc/exports
/data/blog 172.16.1.0/24(rw,sync,all_squash,anonuid=1111,anongid=1111)
/data/zh 172.16.1.0/24(rw,sync,all_squash,anonuid=1111,anongid=1111)

2)创建共享目录,并进行授权

[root@nfs01 ~]# mkdir /data/{blog,zh} -p
[root@nfs01 ~]# chown -R www.www /data/

3)启动nfs服务,并加入开机自启

[root@nfs01 ~]# systemctl restart rpcbind nfs
[root@nfs01 ~]# systemctl enable rpcbind nfs

2.web01端操作步骤如下
1)web01节点安装nfs,然后使用showmount查看服务端共享的资源

[root@web01 ~]# rpm -qa nfs-utils rpcbind
rpcbind-0.2.0-49.el7.x86_64
nfs-utils-1.3.0-0.68.el7.2.x86_64
#[root@web01 ~]# yum install nfs-utils -y
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data/zh 172.16.1.0/24
/data/blog 172.16.1.0/24

2)如何查找blog静态资源存放的位置

# 浏览器->右键->检查->Network->选择左上角的Select按钮->点击对应的图片,然后能获取到对应的url地址,如下
http://blog.etiantian.org/wp-content/uploads/2024/03/1e030d5e06954f86bd4514f1db3d3ddb.png

3)备份web01服务器上blog的静态资源,因为该服务器上的资源资源最全

[root@web01 zh]# scp -rp /data/blog/wp-content/uploads/* root@172.16.1.31:/data/blog/

4)web01客户端执行挂载操作

[root@web01 zh]# mount -t nfs 172.16.1.31:/data/blog /data/blog/wp-content/uploads/
[root@web01 zh]# df -h
文件系统 容量 已用 可用 已用% 挂载点
172.16.1.31:/data/blog 17G 2.4G 15G 15% /data/blog/wp-content/uploads

5)将挂载信息加入开机自启

[root@web01 zh]# tail -1 /etc/fstab 
172.16.1.31:/data/blog /data/blog/wp-content/uploads nfs defaults 0 0
[root@web01 zh]# umount 172.16.1.31:/data/blog
[root@web01 zh]# df -h|grep upload
[root@web01 zh]# mount -a
[root@web01 zh]# df -h
文件系统 容量 已用 可用 已用% 挂载点
172.16.1.31:/data/blog 17G 2.4G 15G 15% /data/blog/wp-content/uploads###fstab延迟启动nfs
[root@web01 zh]# systemctl list-unit-files|grep remote-fs
remote-fs.target disabled
[root@web01 zh]# systemctl enable remote-fs.target
[root@web01 zh]# systemctl list-unit-files|grep remote-fs
remote-fs.target enabled

3.web02端,操作步骤如下
1)web02客户端直接挂载nfs即可

[root@web02 zh]# mount -t nfs 172.16.1.31:/data/blog /data/blog/wp-content/uploads/
[root@web02 zh]# df -h
文件系统 容量 已用 可用 已用% 挂载点
172.16.1.31:/data/blog 17G 2.4G 15G 15% /data/blog/wp-content/uploads

2)将挂载信息加入开机自启

[root@web01 zh]# tail -1 /etc/fstab
172.16.1.31:/data/blog /data/blog/wp-content/uploads nfs defaults 0 0
[root@web01 zh]# umount 172.16.1.31:/data/blog
[root@web01 zh]# df -h|grep upload
[root@web01 zh]# mount -a
[root@web01 zh]# df -h
文件系统 容量 已用 可用 已用% 挂载点
172.16.1.31:/data/blog 17G 2.4G 15G 15% /data/blog/wp-content/uploads###fstab延迟启动nfs
[root@web01 zh]# systemctl list-unit-files|grep remote-fs
remote-fs.target disabled
[root@web01 zh]# systemctl enable remote-fs.target
[root@web01 zh]# systemctl list-unit-files|grep remote-fs
remote-fs.target enabled作业;知乎目录分离到NFS
1.找上传目录
2.挂载并放入fstab。

4.定时任务(web01,web02)备份到backup

[root@web01 /]# cat /server/scripts/bak.sh
backup=/backup
Path="$backup/$(hostname -i)"
[ -f $Path ]||mkdir -p $Path
if [ $(date +%w) -eq 2 ];thendate="$(date +%F -d "-1day")_week1"
elsedate="$(date +%F -d "-1day")"
fi#备份
cd $Path &&\
tar zcfh conf_${date}.tar.gz /var/spool/cron/root /server/scripts /etc 2>/dev/null
tar zcf www_${date}.tar.gz /data --exclude=/data/blog/wp-content/uploads 2>/dev/null
tar zcf logs_${date}.tar.gz /var/log/nginx 2>/dev/null
#获取原始指纹
find $Path -type f -name "*_${date}.tar.gz"|xargs md5sum>$Path/$(hostname -i)_${date}.flag
#推送
rsync -az $backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password#删除7天前的数据
find $backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -f

5.检查nfs01的sersync,检查backup的rsync。

6.windows一键安装PHP集成环境
PHPTS 1.06 版本,集成 Nginx 1.17.8、PHP 7.4.2、PHP 7.3.14、PHP 5.6.40、MySQL 8.0.19(x64)、Memcached 1.5.22、Redis 4.0.14(x64)、MongoDB 4.3.3(x64)、phpMyAdmin 5.0.1、Bash 终端,并可通过组件方式下载安装 InfluxDB(时间序列数据库)、HeidiSQL(MySQL客户端管理工具)、Another.Redis.Desktop.Manager(Redis客户端管理工具)。推荐在64位 Windows 系统上安装 PHPTS。

Nginx for PHPTS 是专门为 Windows 移植的高并发版本,采用Windows 输入输出完成端口(IOCP),媲美 Linux 下的 epoll。
链接: http://zyan.cc/phpts/
Linux下面也有一键集成LNMP ftp wincp

排错思路:

  1. 授权时候 select,insert,update,delete,alter,create ----缺少。。。all 命令行登录不了
    ​ mysql -uroot -poldboy123 -h172.16.1.51
  2. 数据库主机名 db01.etiantian.org ====> localhost
  3. 权限root.root(www.www) /data
  4. selinux关了。

安装知乎就好了,最后再调回来生产标准配置。。依然没问题

相关文章:

Day56-LNMP架构扩展为集群模式实战精讲

Day56-LNMP架构扩展为集群模式实战精讲 1. 企业级标准部署知乎产品wecenter1.1 部署知乎软件Wecenter 2. 企业级迁移数据库到独立服务器2.1 为什么要进行数据库的拆分2.2 数据库拆分架构演变过程&#xff0c;如下图所示2.3 数据库拆分环境规划2.4 数据库拆分架构详细步骤2.4 we…...

Windows 设置多显示器显示

Windows 设置多显示器显示 1. Windows 7 设置 HDMI 输出2. Windows 11 设置多显示器显示References 1. Windows 7 设置 HDMI 输出 2. Windows 11 设置多显示器显示 ​​​ References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/...

语言模型的原理、实战与评估

语言模型的原理、实战与评估是一个宽泛的话题,下面是对这三个方面简要概述: 语言模型的原理 语言模型(Language Model, LM)是一种统计模型,用于估计一段文本序列的概率分布。它的核心任务是给定一系列词语,计算出这些词语组合成一个完整句子或段落的概率。典型的语言模型…...

【Android 内存优化】Koom核心内存指标分析

文章目录 源码Runtime.getRuntime()/proc/self/status/proc/meminfo 附总结 获取内存的指标有很多&#xff0c;假如我们要写一个用于监控APP内存泄漏的框架的话&#xff0c;主要获取哪些指标呢&#xff1f; 这篇文章来研究下KOOM里面获取到是哪些指标。 下面正文开始&#xff…...

Spring相关框架八股

单例bean是线程安全的吗&#xff1f; AOP 事务失效 Bean生命周期 Bean循环依赖解决 MVC执行流程 自动装配原理 Spring常见注解 SpringMVC注解 SpringBoot注解 MyBatis执行流程 MyBatis延迟加载 MyBatis缓存 SpringCloud五大组件 注册中心Nacos、Eureka 负载均衡Ribbon 服务雪崩…...

RK3588开发笔记-v1.3.0-SDK文件系统分区添加

目录 目录 前言 一、分区文件 二、分区文件初始化 三、板级配置文件修改...

架构评估方法相关知识总结

一、架构评估中的重要概念 定义&#xff1a;软件架构评估是在对架构分析、评估的基础上&#xff0c;对架构策略的选取进行决策。 常用系统架构评估的方式&#xff1a; 1. 基于调查问卷或检查表的方法&#xff1a;该方法的关键是设计好问卷或检查表。缺点是在很大 程度上依赖于评…...

常用ES标准

ES2015&#xff1a; 1.块级作用域const、let const声明对象可修改属性&#xff0c;但不能重新赋值对象。 2.解构赋值 const arr [a1, a2, a3]; const [a1, ...rest] arr; // rest [a2, a3];3.模板字符串 const date "星期一"; console.log(今天是${date};);4…...

Http中Host,Referer,Origin和Access-Control-Allow-Origin

Http中Host&#xff0c;Referer&#xff0c;Origin和Access-Control-Allow-Origin 文章目录 Http中Host&#xff0c;Referer&#xff0c;Origin和Access-Control-Allow-OriginHost定义特性作用 Referer定义特性作用 Origin定义特性作用 Access-Control-Allow-Origin定义特性作用…...

UDP实现聊天室

现象&#xff1a; 源码&#xff1a; 服务器&#xff1a; #include<myhead.h>struct sockaddr_in serveraddr,caddr; enum type_t//枚举 {Login,Chat,Quit, }; typedef struct MSG {char type;//L C Qchar name[32];//char text[128];// }msg_t;typedef struct NODE//链…...

排序算法:如冒泡排序、插入排序、选择排序、快速排序、归并排序

冒泡排序&#xff08;Bubble Sort&#xff09;&#xff1a;冒泡排序是一种简单的排序算法。它通过反复交换相邻的元素&#xff0c;将最大的元素逐步“浮”到数组的末尾。基本思想是每次比较相邻的两个元素&#xff0c;如果顺序不对就进行交换&#xff0c;直到整个数组有序。时间…...

深度学习pytorch——GPU加速(持续更新)

使用 .to(device)&#xff0c;以前使用 .cuda() &#xff0c;但是现在基本不使用了。 代码示例&#xff1a; 查看电脑GPU运行情况&#xff1a; 使用Ctrl Shift ESC快捷键&#xff1a;...

StringRedisTemplate

Redis快速入门 3.2.3.StringRedisTemplate 为了节省内存空间&#xff0c;我们可以不使用JSON序列化器来处理value&#xff0c;而是统一使用String序列化器&#xff0c;要求只能存储String类型的key和value。当需要存储Java对象时&#xff0c;手动完成对象的序列化和反序列化。…...

Linux cp、mv命令显示进度条

1.advcpmv 平常使用cp 拷贝大文件时&#xff0c;看不到多久可以完成&#xff0c;虽然加上-v参数也只能看到正在拷贝文件&#xff0c;那就使用以下方法实现 git clone https://github.com/jarun/advcpmv.git cd advcpmv/ bash install.shmv ./advcp /usr/local/bin/ mv ./advmv …...

在Java中使用Apache POI保留Excel样式合并多个工作簿

背景 在日常工作中&#xff0c;我们经常需要将多个Excel文件合并成一个&#xff0c;同时保留原有的样式和格式。Apache POI是一个流行的Java库&#xff0c;用于读取和写入Microsoft Office格式的文件&#xff0c;包括Excel。然而&#xff0c;仅仅使用Apache POI的基本功能进行…...

Nomachine远程黑屏通用处理方法

Nomachine远程黑屏通用处理方法 文章目录 前言正文解决步骤 总结 前言 NoMachine是一种远程桌面软件&#xff0c;它允许用户通过互联网或局域网连接到远程计算机&#xff0c;并在本地计算机上使用远程计算机的桌面环境和应用程序。它提供了高性能的图形渲染和低延迟的响应&…...

基于51单片机数控直流电压源proteus仿真LCD显示+程序+设计报告+讲解视频

基于51单片机数控直流电压源proteus仿真LCD显示( proteus仿真程序设计报告讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;S0072 讲解视频 基于51单片机数控直流电压源proteus仿真程序…...

[Linux]文件缓冲区

文件fd 输出重定向除了用dup2()改变数组下标外&#xff0c;还可以用命令来完成 所有的命令执行&#xff0c;都必须有操作系统将其运行起来变成进程&#xff0c;然后根据>>, <<来判断是输入重定向&#xff0c;还是输出重定向。 缓冲区 之所以有缓冲区&#xff0…...

ARM:按键中断

key_inc.c #include"key_inc.h"void key1_it_config(){//使能GPIOF外设时钟RCC->MP_AHB4ENSETR | (0x1<<5);//将PF9设置为输入模式GPIOF->MODER & (~(0x3<<18));//设置由PF9管脚产生EXTI9事件EXTI->EXTICR3 & (~(0XFF<<8));EXTI…...

JavaScript高级(五)--柯西化函数

柯里化 定义 首先&#xff0c;我们参照维基百科给出的定义&#xff1a; 在计算机科学中&#xff0c;柯里化&#xff08;英语&#xff1a;Currying&#xff09;&#xff0c;又译为卡瑞化或加里化&#xff0c;是把接受多个参数的函数变换成接受一个单一参数&#xff08;最初函数…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

DAY 26 函数专题1

函数定义与参数知识点回顾&#xff1a;1. 函数的定义2. 变量作用域&#xff1a;局部变量和全局变量3. 函数的参数类型&#xff1a;位置参数、默认参数、不定参数4. 传递参数的手段&#xff1a;关键词参数5 题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一…...