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

LAMP 综合实验

LAMP 综合实验

一.实验目标

实验目标如下:
  1. 实现 LAMP 架构
  1. 实现数据库主从复制
  1. 实现 NFS 服务器存储 wordpress 文件
  1. 实现备份服务器实时备份 NFS 服务器文件
  1. 实现日志集中存储
  1. 实现 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.bz2172.20.1.225 编译 httpd 需要的依赖包
apr-util-1.6.1.tar.bz2172.20.1.225 编译 httpd 需要的依赖包
httpd-2.4.41.tar.gz172.20.1.225 web 服务器安装
php-7.3.10.tar.xz172.20.1.225 web 服务器安装
wordpress-5.3-zh_CN.tar.gz172.20.1.225 web 服务器安装
mariadb-10.2.29-linux-systemd-x86_64.tar.gz172.20.1.[226:227]
web 服务器的数据存放主机和备份服务器安装
inotify-tools172.20.1.228 nfs 服务器安装,监控共享目录文件
变动,以便通知 rsync 将数据同步到备份服务器
rsync172.20.1.[228:229] nfs 服务器和备份服务器都要安装
nfs-utils172.20.1.[228,225] nfs 共享服务器需要安装,其带有
nfs 文件共享服务相关的工具
autofs172.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安装httpdphp,均使用编译
    安装,在这里使用事先写好的 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

  1. 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>
  1. 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
  1. 解压wordpress-5.3-zh_CN.tar.gz/data/httpd24/htdocs/

3.2 实现 NFS 文件共享

3.3 实现日志集中存储

3.4 Trouble Shooting

四.测试

五.总结

相关文章:

LAMP 综合实验

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

JavaScript发展历程

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

LP(六十九)智能文档助手升级

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

VIM统计搜索关键词命令

:%s/./&/gn 统计字符数 :%s/\i\/&/gn 统计单词数 :%s/^//n 统计行数 :%s/keyword/&/g 统计任何地方出现的 "keyword" :%s/keyword/&/gn 统计任何地方出现的 "keyword" :%s/keyword/&#xff1a;这部分是 Vi…...

0017Java程序设计-spr农业过程化管理系统

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

以可视化方式解释 Go 并发 - 通道

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

kafka学习-生产者

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

【Python】设计模式

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

C++ 数字

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

code阶段——gitgitlab安装

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

C 风格文件输入/输出---无格式输入/输出

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

Spring-MVC的文件上传下载,及插件的使用(让项目开发更节省时间)

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

算法 数据结构 递归冒泡算法 java冒泡算法 优化递归冒泡 数据结构(九)

使用递归算法实现冒泡&#xff1a; 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&#xff0c;有 k 次询问&#xff0c;每次给定三个正整数 ni&#xff0c;ei&#xff0c;di&#xff0c;求两个正整数 pi&#xff0c;qi&#xf…...

Flutter实现CombineExecutor进行多个异步分组监听,监听第一个异步执行的开始和最后一个异步执行结束时机。

1.场景 我们在调用接口时&#xff0c;很多时候会同时调用多个接口&#xff0c;接口都是异步执行&#xff0c;我们很难知道调用的多个接口哪个会最后执行完成&#xff0c;我们有时候需要对最后一个接口执行完成的时机监听&#xff0c;所以基于该需求&#xff0c;设计了CombineE…...

2023 年最新Java 毕业设计选题题目参考,500道 Java 毕业设计题目,值得收藏

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

Mac电脑其他文件占用超过一大半的内存如何清理?

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

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国家的三个字母的…...

长胜证券:三大拐点共振 看好智能驾驶新一轮行情

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

NomNom终极指南:3个技巧让你轻松掌控《无人深空》存档

NomNom终极指南&#xff1a;3个技巧让你轻松掌控《无人深空》存档 【免费下载链接】NomNom NomNom is the most complete savegame editor for NMS but also shows additional information around the data youre about to change. You can also easily look up each item indi…...

HealthGPT入门教程:5分钟快速搭建你的个人健康助手

HealthGPT入门教程&#xff1a;5分钟快速搭建你的个人健康助手 【免费下载链接】HealthGPT Query your Apple Health data with natural language &#x1f4ac; &#x1fa7a; 项目地址: https://gitcode.com/gh_mirrors/he/HealthGPT 想要用自然语言查询你的Apple健康…...

论文降AIGC教程:从标红区到安全线,2026最新3步攻略与工具测评

今年的交稿季有一点很磨人&#xff1a;除了文章重复率&#xff0c;AIGC检测率几乎也成了各处的标配&#xff0c;很多小伙伴接到通知直接懵了。 我之前也有过长文盲改失败的经历&#xff1a;刚拿到初稿就开始一通操作&#xff0c;觉得把文段里面的词语换换同义词就行&#xff0…...

FaaS承载AI Agent的性能断崖真相,实测AWS Lambda vs Cloudflare Workers响应延迟对比(含17项压测数据)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;FaaS承载AI Agent的性能断崖真相 当AI Agent被部署至函数即服务&#xff08;FaaS&#xff09;平台时&#xff0c;其推理延迟常出现非线性跃升——从本地毫秒级响应骤增至数秒甚至超时失败。这一“性能断…...

告别混乱:用SAP STO退货功能(NCR/NLR)清晰管理公司间物料退回

告别混乱&#xff1a;用SAP STO退货功能&#xff08;NCR/NLR&#xff09;清晰管理公司间物料退回 当集团企业发展到多工厂、多法人架构时&#xff0c;物料在组织间的流动管理往往成为供应链的痛点。特别是在退货场景下&#xff0c;手工处理导致的账实不符、责任归属模糊等问题&…...

APK Installer完整指南:在Windows上快速安装Android应用的终极方案

APK Installer完整指南&#xff1a;在Windows上快速安装Android应用的终极方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经想在Windows电脑上轻松安装An…...

WarcraftHelper 2024:魔兽争霸3终极优化指南

WarcraftHelper 2024&#xff1a;魔兽争霸3终极优化指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为《魔兽争霸3》在现代电脑上运行卡顿、画…...

基于RAG与向量检索的本地化智能搜索问答系统部署指南

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目&#xff0c;叫moneykick/openclaw-anspire-search_pro。光看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;但如果你对信息检索、智能问答或者企业知识库构建感兴趣&#xff0c;那这个项目绝对值得你花时间研究一…...

3步搞定无损音乐自由:网易云音乐歌单批量下载终极指南

3步搞定无损音乐自由&#xff1a;网易云音乐歌单批量下载终极指南 【免费下载链接】NeteaseCloudMusicFlac 根据网易云音乐的歌单, 下载flac无损音乐到本地.。 项目地址: https://gitcode.com/gh_mirrors/nete/NeteaseCloudMusicFlac 你是否曾经想过&#xff0c;只需一个…...

别再折腾wgrib了!用Python的xarray+cfgrib在Windows上优雅读取GRIB气象数据

告别命令行混乱&#xff1a;用Python生态在Windows上高效处理GRIB气象数据 气象数据分析工作中&#xff0c;GRIB格式文件一直是让人又爱又恨的存在。这种专为网格化气象数据设计的二进制格式&#xff0c;虽然存储效率高、兼容性强&#xff0c;但处理起来却常常让初学者望而生畏…...