网站开发 兼职挣钱吗/网络营销推广平台有哪些
LAMP 综合实验
一.实验目标
- 实验目标如下:
-
- 实现 LAMP 架构
-
- 实现数据库主从复制
-
- 实现 NFS 服务器存储 wordpress 文件
-
- 实现备份服务器实时备份 NFS 服务器文件
-
- 实现日志集中存储
-
- 实现 loganalyzer 分析展示日志
二.实验准备
2.1 实验环境
- 实验环境:
- 虚拟机版本:
VMware Workstation pro 15.0.0
- Linux 系统版本:
Centos7.7
- 实验虚拟主机:六台
172.20.1.225----172.20.1.230
- 六台主机情况
2.3 所使用软件包
- 软件包列表:
-
apr-1.7.0.tar.bz2
—172.20.1.225
编译 httpd 需要的依赖包 -
apr-util-1.6.1.tar.bz2
—172.20.1.225
编译 httpd 需要的依赖包 -
httpd-2.4.41.tar.gz
—172.20.1.225
web 服务器安装 -
php-7.3.10.tar.xz
—172.20.1.225
web 服务器安装 -
wordpress-5.3-zh_CN.tar.gz
—172.20.1.225
web 服务器安装 -
mariadb-10.2.29-linux-systemd-x86_64.tar.gz
—172.20.1.[226:227]
web 服务器的数据存放主机和备份服务器安装 -
inotify-tools
—172.20.1.228
nfs 服务器安装,监控共享目录文件
变动,以便通知 rsync 将数据同步到备份服务器 -
rsync
—172.20.1.[228:229]
nfs 服务器和备份服务器都要安装 -
nfs-utils
—172.20.1.[228,225]
nfs 共享服务器需要安装,其带有
nfs 文件共享服务相关的工具 -
autofs
—172.20.1.225
apache 服务器用来自动挂载 nfs 文件系统
2.3 思路
-
大致思路是:
配置LAMP --> 完成数据库主从备份 --> 完成nfs共享文件夹挂载到web服务器 --> 完成日志转储到日志存储主机的数据库 --> 测试
-
需要注意的是,每完成一步需要测试该步是否成功。
-
具体步骤
实现LAMP,主从复制
1. 首先在 web 服务器172.20.1.225编译安装httpd和php
2. 配置httpd支持php,并开启opcache等功能
3. 在主数据库主机二进制安装MariaDB,开启二进制日志,创建wordpress的数据库和相应的用户
4. 在主数据库创建一个用于从数据库复制的用户
5. 在从数据库主机二进制安装MariaDB,使用CHANGE MASTER TO指令与主数据库同步
6. 测试数据库同步情况
7. 准备wordpress程序包,解压到web服务器的服务目录,更改web服务器配置并重启
8. 配置wordpress,使其能够连接数据库
9. 测试是否能够正常访问wordpress管理界面实现nfs服务器的共享文件夹挂载到web服务器的wordpress图片目录下
10. 在nfs服务器安装nfs-utils,创建用于访问共享文件夹的用户和家目录
11. 编辑/etc/exports配置文件,执行exportfs -r将其家目录共享
12. 在web服务器安装nfs-utils,执行`showmount -e nfs服务器ip`查看nfs服务共享的文件夹
13. 在web服务器安装autofs,编辑/etc/auto.master指定自动挂载的方式,并编辑指定的配置文件
来自动挂载nfs共享的文件夹
14. 在nfs服务器和备份服务器安装rsync,在nfs服务器安装inotify-tools
15. 在备份服务器配置/etc/rsyncd.conf 使得rsync以独立服务方式运行,并创建
验证文件(保存的内容为"用户名:密码")
16. 在nfs服务器添加密码文件,同15步中备份服务器验证文件的密码
17. 在nfs服务器编写脚本,将共享文件夹备份到备份服务器实现日志转存到专门的日志存储服务器,存储于该服务器的数据库中
18. 在日志存储服务器二进制安装MariaDB
19. 在其他主机安装rsyslog-mysql模块,rsyslog用来和mariadb交互的模块
安装rsyslog-mysql模块会自带一个sql语句文件
20. rpm -ql rsyslog-mysql-->复制生成rsyslog要用的表的sql语句到日志存储服务器
21. 应用sql语句生成存储日志的数据库和表,并创建一个用户来给其他主机连接和访问
存储日志的数据库和表
22. 重启相关服务并测试,在其他主机使用logger "logging test message" 测试,
在日志存储服务器查看是否有记录最终测试
23. 在wordpress上传和下载文件,发布博文,再检查备份数据库的同步情况
nfs共享目录是否更新,日志是否都被存储到日志服务器。
三.实验步骤
3.1 实现 LAMP,数据库主从复制
-
主机
172.20.1.225
安装httpd
和php
,均使用编译
安装,在这里使用事先写好的 ansible 角色安装 -
主机列表
root@ubuntu1904:/data/lamp_ansible/roles/httpd_compile#vim /etc/ansible/hosts ...# If you have multiple hosts following a pattern you can specify # them like this:#www[001:006].example.com # [lamp_lab] 172.20.1.[225:230] [log_slave] 172.20.1.[225:229] ...
3.1.1 编译安装 httpd
- httpd_compile 角色目录
root@ubuntu1904:/data/lamp_ansible/roles/httpd_compile#tree
.
├── default
│ └── main.yml
├── files
│ ├── apr-1.7.0.tar.bz2 # 安装包放ansible主控机
│ ├── apr-util-1.6.1.tar.bz2
│ ├── httpd-2.4.41.tar.gz
│ └── index.html
├── handlers
│ └── main.yml
├── tasks
│ ├── adduser.yml
│ ├── compile.yml
│ ├── config.yml
│ ├── index.yml
│ ├── install_deps.yml
│ ├── install.yml
│ ├── main.yml
│ ├── merge_apr.yml
│ ├── path.yml
│ ├── remove.yml
│ ├── service.yml
│ └── unarchive.yml
├── templates
│ └── httpd.conf.j2
└── vars└── main.yml
-
各文件代码
httpd_compile/tasks/main.yml--- - include: adduser.yml - include: install_deps.yml## for yum install #- include: install.yml- include: unarchive.yml - include: merge_apr.yml - include: compile.yml - include: path.yml - include: index.yml - include: config.yml - include: service.yml #- include: remove.yml
httpd_compile/tasks/adduser.yml
--- - name: add apache useruser: name=apache groups="root,daemon" system=yes shell=/sbin/nologin createhome=no non_unique=no
httpd_compile/tasks/install_deps.yml
--- # {{ deps }} see ./vars/main.yml - name: install some deps and libsyum: name={{ deps }}
httpd_compile/tasks/install.yml
--- - name: install httpdyum: name=httpd
httpd_compile/tasks/unarchive.yml
--- # vars see ./vars/main.yml - name: unarchive apr_pkgunarchive: src=/data/ansible_exercise/roles/httpd_compile/files/apr-1.7.0.tar.bz2 dest=/data/ - name: narchive apr_util_pkgunarchive: src=/data/ansible_exercise/roles/httpd_compile/files/apr-util-1.6.1.tar.bz2 dest=/data/ - name: narchive httpd_pkgunarchive: src=/data/ansible_exercise/roles/httpd_compile/files/httpd-2.4.41.tar.gz dest=/data/
httpd_compile/tasks/merge_apr.yml
--- - name: move apr to httpd/srclib/shell: mv /data/{{ apr }} /data/{{ httpd }}/srclib/apr - name: move apr-util to httpd/srclib/shell: mv /data/{{ apr_util }} /data/{{ httpd }}/srclib/apr-util
httpd_compile/tasks/compile.yml
--- - name: run comfigure scriptshell: chdir=/data/{{ httpd }} ./configure --prefix=/app/httpd24 {{ compile_opt }} - name: compile the httpdshell: chdir=/data/{{ httpd }} make -j 6 && make installnotify: message
httpd_compile/tasks/path.yml
--- - name: config path variablecopy: content='PATH=/usr/local/mysql/bin/:/app/httpd24/bin:$PATH' dest=/etc/profile.d/httpd.sh
httpd_compile/tasks/index.yml
--- - name: indexcopy: src=index.html dest=/data/httpd24/htdocs/
httpd_compile/tasks/config.yml
--- - name: configtemplate: src=httpd.conf.j2 dest=/app/httpd24/conf/httpd.conf backup=yesnotify: restart - name: source pathshell: . /etc/profile.d/httpd.sh
httpd_compile/tasks/service.yml
--- - name: start httpd serviceshell: /app/httpd24/bin/apachectl start
httpd_compile/vars/main.yml
--- apr_pkg: ansible_exercise/roles/httpd_compile/files/apr-1.7.0.tar.bz2 apr: apr-1.7.0 apr_util_pkg: ansible_exercise/roles/httpd_compile/files/apr-util-1.6.1.tar.bz2 apr_util: apr-util-1.6.1 httpd_pkg: ansible_exercise/roles/httpd_compile/files/httpd-2.4.41.tar.gz httpd: httpd-2.4.41 deps: ["gcc", "pcre-devel", "openssl-devel", "expat-devel"] compile_opt: "--enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork --with-included-apr"
httpd_compile/files/index.html
<!DOCTYPE html> <head><p1>Hello There!</p1> </head><body><a>A test message!!</a> </body>
httpd_compile/handlers/main.yml
--- - name: restartshell: /app/httpd24/bin/apachectl stop; /app/httpd24/bin/apachectl start#- name: message# shell: echo "Nice everything just fine!!" > /dev/pts/*#- name: make# shell: chdir=/data/{{ httpd }} make -j 6 && make install
httpd_compile/templates/httpd.conf.j2
root@ubuntu1904:/data/lamp_ansible/roles# cat httpd_compile/templates/httpd.conf.j2 | grep -Ev "*[#]|^$" ServerRoot "/app/httpd24" Listen 80 LoadModule mpm_event_module modules/mod_mpm_event.so LoadModule authn_file_module modules/mod_authn_file.so LoadModule authn_core_module modules/mod_authn_core.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule authz_groupfile_module modules/mod_authz_groupfile.so LoadModule authz_user_module modules/mod_authz_user.so LoadModule authz_core_module modules/mod_authz_core.so LoadModule access_compat_module modules/mod_access_compat.so LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule reqtimeout_module modules/mod_reqtimeout.so LoadModule filter_module modules/mod_filter.so LoadModule mime_module modules/mod_mime.so LoadModule log_config_module modules/mod_log_config.so LoadModule env_module modules/mod_env.so LoadModule headers_module modules/mod_headers.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule version_module modules/mod_version.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so LoadModule unixd_module modules/mod_unixd.so LoadModule status_module modules/mod_status.so LoadModule autoindex_module modules/mod_autoindex.so <IfModule !mpm_prefork_module>LoadModule cgid_module modules/mod_cgid.so </IfModule> <IfModule mpm_prefork_module>LoadModule cgi_module modules/mod_cgi.so </IfModule> LoadModule dir_module modules/mod_dir.so LoadModule alias_module modules/mod_alias.so <IfModule unixd_module> User apache Group apache </IfModule> ServerAdmin stevobs@163.com <Directory />AllowOverride noneRequire all denied </Directory> DocumentRoot "/data/httpd24/htdocs" <Directory "/data/httpd24/htdocs">Options Indexes FollowSymLinksAllowOverride allRequire all granted </Directory> <IfModule dir_module>DirectoryIndex index.php index.html </IfModule> <Files ".ht*">Require all denied </Files> ErrorLog "logs/error_log" LogLevel warn <IfModule log_config_module>LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedLogFormat "%h %l %u %t \"%r\" %>s %b" common<IfModule logio_module>LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio</IfModule>CustomLog "logs/access_log" combined </IfModule> <IfModule alias_module>ScriptAlias /cgi-bin/ "/app/httpd24/cgi-bin/" </IfModule> <IfModule cgid_module> </IfModule> <Directory "/app/httpd24/cgi-bin">AllowOverride NoneOptions NoneRequire all granted </Directory> <IfModule headers_module>RequestHeader unset Proxy early </IfModule> <IfModule mime_module>TypesConfig conf/mime.typesAddType application/x-compress .ZAddType application/x-gzip .gz .tgzAddType application/x-httpd-php .phpAddType application/x-httpd-php-source .phps </IfModule> ErrorDocument 500 "The server made a boo boo." ErrorDocument 404 /missing.html ErrorDocument 404 "/cgi-bin/missing_handler.pl" Include conf/extra/httpd-mpm.conf <IfModule proxy_html_module> Include conf/extra/proxy-html.conf </IfModule> <IfModule ssl_module> SSLRandomSeed startup builtin SSLRandomSeed connect builtin </IfModule> ProxyRequests off ProxyPassMatch ^/(.*.php) fcgi://127.0.0.1:9000/data/httpd24/htdocs/$1
-
httpd 角色代码
root@ubuntu1904:/data/lamp_ansible#cat role_httpd_compile.yml
---
- hosts: 172.20.1.225remote_user: rootroles:- role: httpd_compiletags: ["httpd_compile"]
...
- 安装
root@ubuntu1904:/data/lamp_ansible#ansible-playbook role_httpd_compile.yml
3.1.2 编译安装 php7.4
- php 角色目录
root@ubuntu1904:/data/lamp_ansible/roles#tree -f php/
php
├── php/files
│ ├── php/files/Discuz_X3.3_SC_UTF8.zip
│ ├── php/files/loganalyzer-4.1.8.tar.gz
│ ├── php/files/php-7.4.0.tar.xz
│ └── php/files/wordpress-5.3-zh_CN.tar.gz
├── php/handlers
│ └── php/handlers/main.yml
├── php/tasks
│ ├── php/tasks/compile.yml
│ ├── php/tasks/config.yml
│ ├── php/tasks/install_deps.yml
│ ├── php/tasks/main.yml
│ ├── php/tasks/make_sure.yml
│ ├── php/tasks/path.yml
│ ├── php/tasks/unarchive_app.yml
│ └── php/tasks/unarchive.yml
├── php/templates
│ └── php/templates/php.ini.j2
└── php/vars└── php/vars/main.yml
- 各部分代码
php/tasks/main.yml
---
- include: install_deps.yml
- include: unarchive.yml
- include: compile.yml
- include: path.yml
- include: config.yml
- include: make_sure.yml
php/tasks/install_deps.yml
---
- name: install deps and libs#yum: name={{ deps74 }}yum: name={{ deps73 }}
php/tasks/unarchive.yml
---
- name: unarchive php pkg#unarchive: src={{ php_pkg74 }} dest=/data/unarchive: src={{ php_pkg73 }} dest=/data/
php/tasks/compile.yml
---
- name: run configure script ...#shell: chdir=/data/{{ php74 }} ./configure {{ compile_opt74 }}shell: chdir=/data/{{ php73 }} ./configure {{ compile_opt73 }}
- name: compile php ...#shell: chdir=/data/{{ php74 }} make -j 6 && make installshell: chdir=/data/{{ php73 }} make -j 6 && make install
php/tasks/unarchive_app.yml
---
- name: unarchive wordpress pkgunarchive: src={{ wordpress_pkg53 }} dest={{ httpd_htdocs_root }}
- name: change wordpress file folder nameshell: chdir={{ httpd_htdocs_root }} mv {{ wordpress53 }} wordpress- name: unzrchive Discuz pkgunarchive: src={{ Discuz_pkg34 }} dest={{ httpd_htdocs_root }}
- name: change Discuz file folder nameshell: chdir= {{ httpd_htdocs_root }} mv {{ Discuz34 }} forum
php/tasks/path.yml
---
- name: config path variablecopy: content='PATH=/app/php74/bin:$PATH' dest=/etc/profile.d/php.sh
- name: source /etc/profile.d/php.shshell: . /etc/profile.d/php.sh
php/tasks/config.yml
---
- name: copy php.ini#shell: cp /data/{{ php74 }}/php.ini-production /etc/php.inishell: cp /data/{{ php73 }}/php.ini-production /etc/php.ini
- name: copy php-fpm.service#shell: cp /data/{{ php74 }}/sapi/fpm/php-fpm.service.in /usr/lib/systemd/system/php-fpm.serviceshell: cp /data/{{ php73 }}/sapi/fpm/php-fpm.service.in /usr/lib/systemd/system/php-fpm.service
- name: copy php-fpm.conf.default#shell: chdir=/app/php74/etc cp php-fpm.conf.default php-fpm.confshell: chdir=/app/php73/etc cp php-fpm.conf.default php-fpm.conf
- name: copy www.confshell: chdir=/app/php73/etc/php-fpm.d cp www.conf.default www.conf
php/tasks/make_sure.yml
---
- name: make sure php installedshell: /app/php73/bin/php --version
php/vars/main.yml
---
#
# for php-7.3
deps73: ["gcc", "libxml2-devel", "bzip2-devel", "libmcrypt-devel"]#
# for php-7.4
deps74:["gcc","libxml2-devel","bzip2-devel","libmcrypt-devel","sqlite-devel","oniguruma-devel",]php_pkg74: php-7.4.0.tar.xz
php_pkg73: php-7.3.10.tar.xz
php74: php-7.4.0
php73: php-7.3.10#
# for php-7.3
compile_opt73: "--prefix=/app/php73 --enable-mysqlnd --with-mysqli=mysqlnd --with-openssl --with-pdo-mysql=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-maintainer-zts --disable-fileinfo"# for php-7.4
compile_opt74: "--prefix=/app/php74 --enable-mysqlnd --with-mysqli=mysqlnd --with-openssl --with-pdo-mysql=mysqlnd --enable-mbstring --with-zlib --enable-xml --enable-sockets --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-maintainer-zts --disable-fileinfo"# for wordpress-5.3
wordpress_pkg53: wordpress-5.3-zh_CN.tar.gz
wordpress53: wordpress-5.3-zh_CN# for Discuz3.4
Discuz_pkg34: Discuz_X3.4_SC_UTF8.zip
Discuz34: upload# for phpMyAdmin-4.9.2
phpmyadmin_pkg49: phpMyAdmin-4.9.2-all-languages.zip
phpmyadmin49: phpMyAdmin-4.9.2-all-languages# for poweradmin-2.1.7
poweradmin_pkg: poweradmin-2.1.7.tgz
poweradmin: poweradmin-2.1.7# for loganalyzer-4.1.8
log_analyzer_pkg: loganalyzer-4.1.8.tar.gz
log_analyzer: loganalyzer-4.1.8# httpd doc root
httpd_www_doc_root: /var/www/html
httpd_default_htdocs_root: /app/httpd24/htdocs
httpd_htdocs_root: /data/httpd24/htdocs
- php 角色代码
root@ubuntu1904:/data/lamp_ansible#cat role_php.yml
---
- hosts: 172.20.1.225remote_user: rootroles:- role: phptags: php
- 安装 php
root@ubuntu1904:/data/lamp_ansible#ansible-playbook role_php.yml
3.1.3 配置 LAMP 并安装 wordpress
- httpd 配置(172.20.1.225)
[root@httpd-php ~]# vim /app/httpd24/conf/httpd.conf
ServerRoot "/app/httpd24"
...
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
...
<IfModule mime_module>###### manual added ######AddType application/x-httpd-php .phpAddType application/x-httpd-php-source .phps
</IfModule>
...
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User apache
Group apache
DocumentRoot "/data/httpd24/htdocs"
<Directory "/data/httpd24/htdocs">Options Indexes FollowSymLinksAllowOverride allRequire all granted
</Directory>
...
<IfModule dir_module>DirectoryIndex index.php index.html#DirectoryIndex index.html index.php
</IfModule>
...
ProxyRequests off
ProxyPassMatch ^/(.*.php) fcgi://127.0.0.1:9000/data/httpd24/htdocs/$1#### virtual hosts ####
<virtualhost *:80>
servername wordpress.suosuoli.cn
documentroot /data/httpd24/htdocs/wordpress
<directory /data/httpd24/htdocs/wordpress>
require all granted
</directory>
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/httpd24/htdocs/wordpress/$1
ProxyPassMatch ^/(status|ping)$ fcgi://127.0.0.1:9000/$1
CustomLog "logs/access_wordpress_log" common
</virtualhost>
- php 配置
[root@httpd-php ~]# vim /app/php73/etc/php-fpm.d/www.conf
user = apache
group = apache
...
pm.status_path = /status
...
ping.path = /ping
...
ping.response = pong
...
access.log = log/$pool.access.log[root@httpd-php ~]# vim /etc/php.d/opcache.ini
[opcache]
zend_extension=opcache.so
opcache.enable=1
- 解压
wordpress-5.3-zh_CN.tar.gz
到/data/httpd24/htdocs/
3.2 实现 NFS 文件共享
3.3 实现日志集中存储
3.4 Trouble Shooting
四.测试
五.总结
相关文章:

LAMP 综合实验
LAMP 综合实验 一.实验目标 实验目标如下: 实现 LAMP 架构 实现数据库主从复制 实现 NFS 服务器存储 wordpress 文件 实现备份服务器实时备份 NFS 服务器文件 实现日志集中存储 实现 loganalyzer 分析展示日志 二.实验准备 2.1 实验环境 实验环境: 虚拟机版本: VM…...

JavaScript发展历程
目录 一、起源(1995-1997) 二、发展(1997-2005) 三、进化——Ajax与Web 2.0(2005-2010年) 四、移动互联网与现代化(2010年至今) 结论 JavaScript是一种广泛使用的网络编程语言&…...

LP(六十九)智能文档助手升级
本文在笔者之前研发的大模型智能文档问答项目中,开发更进一步,支持多种类型文档和URL链接,支持多种大模型接入,且使用更方便、高效。 项目介绍 在文章NLP(六十一)使用Baichuan-13B-Chat模型构建智能文档中…...

VIM统计搜索关键词命令
:%s/./&/gn 统计字符数 :%s/\i\/&/gn 统计单词数 :%s/^//n 统计行数 :%s/keyword/&/g 统计任何地方出现的 "keyword" :%s/keyword/&/gn 统计任何地方出现的 "keyword" :%s/keyword/:这部分是 Vi…...

0017Java程序设计-spr农业过程化管理系统
摘 要目 录系统设计开发环境 摘 要 本农业过程化管理系统就是建立在充分利用现在完善科技技术这个理念基础之上,并使用IT技术进行对农业过程化的管理,从而保证种植户能种植出优质的农作物,可以实现农业过程化的在线管理,这样保证…...

以可视化方式解释 Go 并发 - 通道
在并发编程中,许多编程语言采用共享内存/状态模型。然而,Go 通过实现 通信顺序进程 (CSP) 区别于众多语言。在 CSP 中,一个程序由并行的进程组成,这些进程不共享状态,而是使用通道进行通信和同步它们的操作。因此&…...

kafka学习-生产者
目录 1、消息生产流程 2、生产者常见参数配置 3、序列化器 基本概念 自定义序列化器 4、分区器 默认分区规则 自定义分区器 5、生产者拦截器 作用 自定义拦截器 6、生产者原理解析 1、消息生产流程 2、生产者常见参数配置 3、序列化器 基本概念 在Kafka中保存的数…...

【Python】设计模式
设计模式分为三种类型,共23类。 创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。行为型模式:模版方法模式、命令模…...

C++ 数字
C 数字 通常,当我们需要用到数字时,我们会使用原始的数据类型,如 int、short、long、float 和 double 等等。这些用于数字的数据类型,其可能的值和数值范围,我们已经在 C 数据类型一章中讨论过。 C 定义数字 我们已…...

code阶段——gitgitlab安装
在code阶段,我们需要将不同版本的代码存储到一个仓库中,常见的版本控制工具就是SVN或者Git,这里我们采用Git作为版本控制工具,GitLab作为远程仓库。 Git安装 https://git-scm.com/(傻瓜式安装) GitLab安…...

C 风格文件输入/输出---无格式输入/输出
C 标准库的 C I/O 子集实现 C 风格流输入/输出操作。 <cstdio> 头文件提供通用文件支持并提供有窄和多字节字符输入/输出能力的函数,而 <cwchar>头文件提供有宽字符输入/输出能力的函数。 无格式输入/输出 从文件流获取字符 std::fgetc, std::getc …...

Spring-MVC的文件上传下载,及插件的使用(让项目开发更节省时间)
目录 一、概述 ( 1 ) 介绍 ( 2 ) 讲述 二、上传 三、下载 四、jrebel的使用 五、多文件上传 给我们带来什么收获 一、概述 ( 1 ) 介绍 Spring MVC的文件上传下载是指在Spring MVC框架中实现文件的上传和下载功能。文件上传是指将本地计算机上的文件上传到服务器端…...

算法 数据结构 递归冒泡算法 java冒泡算法 优化递归冒泡 数据结构(九)
使用递归算法实现冒泡: package com.nami.algorithm.study.day06;import java.util.Arrays;/*** beyond u self and trust u self.** Author: lbc* Date: 2023-09-05 15:36* email: 594599620qq.com* Description: keep coding*/ public class BubbleSort2 {// p…...

【计算机视觉 | 目标检测】目标检测常用数据集及其介绍(十五)
文章目录 一、STN PLAD (STN Power Line Assets Dataset)二、Satlas三、Street Dataset四、UAVVaste五、UDA-CH (Unsupervised Domain Adaptation on Cultural Heritage)六、USB (Universal-Scale Object Detection Benchmark)七、VEDAI (Vehicle Detection in Aerial Imagery)…...
洛谷P8814:解密 ← CSP-J 2022 复赛第2题
【题目来源】https://www.luogu.com.cn/problem/P8814https://www.acwing.com/problem/content/4732/【题目描述】 给定一个正整数 k,有 k 次询问,每次给定三个正整数 ni,ei,di,求两个正整数 pi,qi…...

Flutter实现CombineExecutor进行多个异步分组监听,监听第一个异步执行的开始和最后一个异步执行结束时机。
1.场景 我们在调用接口时,很多时候会同时调用多个接口,接口都是异步执行,我们很难知道调用的多个接口哪个会最后执行完成,我们有时候需要对最后一个接口执行完成的时机监听,所以基于该需求,设计了CombineE…...

2023 年最新Java 毕业设计选题题目参考,500道 Java 毕业设计题目,值得收藏
大家好,我是程序员徐师兄,最近有很多同学咨询,说毕业设计了,不知道选怎么题目好,有哪些是想需要注意的。 确实毕设选题实际上对很多同学来说一个大坑, 每年挖坑给自己跳的人太多太多,选题选得好…...

Mac电脑其他文件占用超过一大半的内存如何清理?
mac的存储空间时不时会提示内存已满,查看内存占用比例最大的居然是「其他文件」,「其他文件」是Mac无法识别的格式文件或应用插件扩展等等...如果你想要给Mac做一次彻底的磁盘空间清理,首当其冲可先对「其他文件」下手,那么我们该…...

geopandas 笔记: datasets 数据集
geopandas 自带的几个数据集 1 世界各个国家 import geopandas as gpd import pandas as pdpd.set_option(display.max_rows,None) gpd.read_file(gpd.datasets.get_path(naturalearth_lowres)) pop_est人口数量continent国家所在的大陆name国家的名称iso_a3国家的三个字母的…...

长胜证券:三大拐点共振 看好智能驾驶新一轮行情
摘要 【长胜证券:三大拐点共振 看好智能驾驭新一轮行情】长胜证券研报指出,全球共振,国内智驾商场正迎来三大拐点:1)技能上,“BEV Transformer数据闭环”新架构2023年开端上车,使得不依靠高精地…...

AIGC专栏5——EasyPhoto AI写真照片生成器 sd-webui插件介绍、安装与使用
AIGC专栏5——EasyPhoto AI写真照片生成器 插件安装与使用 学习前言源码下载地址技术原理储备(SD/Control/Lora)StableDiffusionControlNetLora EasyPhoto插件简介EasyPhoto插件安装安装方式一:Webui界面安装 (需要良好的网络&…...

【Python程序设计】 工厂模式【07/8】
一、说明 我们探索数据工程中使用的设计模式 - 软件设计中常见问题的可重用解决方案。 以下文章是有关 Python 数据工程系列文章的一部分,旨在帮助数据工程师、数据科学家、数据分析师、机器学习工程师或其他刚接触 Python 的人掌握基础知识。 迄今为止,…...

PHP8的多维数组-PHP8知识详解
今天分享的是php8的数组中的多维数组,主要内容有:多维数组的概念、创建和输出二维数组、创建和输出三维数组。 1、多维数组的概念 多维数组是包含一个或多个数组的数组。在多维数组中,主数组中的每一个元素也可以是一个数组,子数…...

【【STM32--28--IO引脚的复用功能】】
STM32–28–IO引脚的复用功能 STM32的IO复用功能 何为复用? 我们先了解一下何为通用 IO端口的输入或输出是由GPIO外设控制,我们称之为通用 复用: IO端口的输入或者是输出是由其他非GPIO外设控制就像经常说的USART 由 DR寄存器进行输出 STM32的IO复用功…...

CodeJock Active-X / COM v22.1.0 Crack
CodeJock Active-X / COM v22.1.0--这个支持 Unicode 啦, Unicode Unicode 创建专业应用程序,其中包含一整套高度可定制的用户界面组件,包括 Visual Studio 风格的对接窗格和 Office 风格的功能区、工具栏和菜单,为您的应用程序…...

mac通过docker搭建elasticsearch:8.9.2以及kibana:8.9.2
1.elasticsearch.yml配置修改: cluster.name: "docker-cluster" network.host: 0.0.0.0 http.port: 9200 #discovery.seed_hosts: ["172.17.0.2"]#----------------------- BEGIN SECURITY AUTO CONFIGURATION ----------------------- # # T…...

python实现排列组合代码
def combination(n, c, com1, limit0, per[]):for pos in range(limit, n):t per [pos]if len(set(t)) len(t):if len(t) c:yield [pos, ]else:for result in combination(n, c, com, com * pos, per [pos, ]):yield [pos, ] resultprint("排列:") …...

盲盒小程序开发方案
盲盒游戏作为一种富有趣味性和收藏价的虚拟盲盒产品,近年来在游戏市场中备受关注。本文将深入探讨盲盒游戏的开发方案,从市场趋势分析、用户体验设计、商业模式选择等多个维度,为开发者提供业且有深度的思考,以帮助他们在盲盒游戏…...

Mysql锁
文章目录 1. 概述2. 分类3. 全局锁4. 表级锁5. 行级锁 1. 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并…...

Kubernetes(k8s)安装NFS动态供给存储类并安装KubeSphere
Kubernetes安装NFS动态供给存储类并安装KubeSphere KubeSphere介绍环境准备KubeSphereNFS动态供给 安装NFS动态供给搭建NFS下载动态供给驱动修改驱动文件安装动态供给 安装KubeSphere下载KubeSphere的yaml资源清单文件安装KubeSphere 使用KubeSphere部署应用创建项目部署MySQL …...