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

Nginx03-动态资源和LNMP介绍与实验、自动索引模块、基础认证模块、状态模块

目录

  • 写在前面
  • Nginx03
    • 案例1 模拟视频下载网站
      • 自动索引autoindex
      • 基础认证auth_basic模块
      • 状态stub_status模块
      • 模块小结
    • 案例2 动态网站(部署php代码)
      • 概述
      • 常见的动态网站的架构
      • LNMP
        • 架构流程
        • 数据库Mariadb
          • 安装
          • 安全配置
          • 基本操作
        • PHP
          • 安装php
          • 修改配置文件
        • Nginx+Wordpress
          • 编辑Nginx
          • 安装wordpress
          • 访问主页

写在前面

这是Nginx第三篇,内容为Nginx自动索引模块、基础认证模块、状态模块、动态资源介绍、LNMP介绍与实验等。
上篇笔记 Nginx02-Nginx虚拟主机介绍、日志介绍、Location规则介绍

Nginx03

案例1 模拟视频下载网站

需求:

  1. 浏览器打开,显示目录结构(autoindex模块)
  2. 部分文件夹需登录认证功能(auth_basic模块)
  3. 统计nginx服务,访问状态(stub_status模块)
  4. 域名:v.test.com,目录:/app/code/v

ngx模块是众多ngx指令的集合.

自动索引autoindex

首页不存在时,会使用autoindex模块

  • autoindex on: 开启目录索引功能(显示站点目录下的文件的列表,首页文件不存在.)
  • autoindex_localtime on: 显示本地时间.
  • autoindex_exact_size off:是否显示精确的文件的大小. off表示以人类可读形式显示大小

实现浏览器打开,显示目录结构(文件模拟即可)
在这里插入图片描述

# 设置子配置文件
[root@front conf.d]# cat v.test.com.conf
server {listen 80;server_name v.test.com;root /app/code/v;error_log /var/log/nginx/v.test.com-error.log notice;access_log /var/log/nginx/v.test.com-access.log main;autoindex on;  #开启目录索引功能(首页文件不存在时,显示站点目录下的文件的列表)charset utf8; # 中文字符autoindex_localtime on; # 系统本地时间autoindex_exact_size off; # 人类可读的大小显示location / {index index.html;}
}# 新建目录
[root@front conf.d]# mkdir -p /app/code/v
[root@front conf.d]# touch /app/code/v/test{1..10}.mp4# 检查语法并重启服务
[root@front conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@front conf.d]# systemctl reload nginx

基础认证auth_basic模块

nginx中最基础的认证模块

  • auth_basic “请输入密码:”; #输出提示,根据不同浏览器,可能不显示.
  • auth_basic_user_file conf/htpasswd; #指定用户名,密码文件

登录认证
登陆的用户有auth目录,需要登录才能访问,直接退出会401报错
在这里插入图片描述
在这里插入图片描述

# 修改子配置文件
[root@front conf.d]# cat v.test.com.conf
server {listen 80;server_name v.test.com;root /app/code/v;error_log /var/log/nginx/v.test.com-error.log notice;access_log /var/log/nginx/v.test.com-access.log main;autoindex on;charset utf8;autoindex_localtime on;autoindex_exact_size off;location / {index index.html;}location /auth/ { # 新增locationauth_basic "提示-请输入密码:"; #认证提示auth_basic_user_file /etc/nginx/user; #认证密码文件路径}
}# 新建目录
[root@front conf.d]# mkdir -p /app/code/v/auth/
[root@front conf.d]# touch /app/code/v/auth/auth{1..5}.mp5# 新建密码文件
## 安装httpd-tools,需要用到htpasswd工具
[root@front conf.d]# yum install -y httpd-tools## 创建加密的密码文件并新增用户
[root@front conf.d]# htpasswd -bc /etc/nginx/user test test #-b不使用交互模式,-c新增一个密码文件(若有内容会清空)
Adding password for user test
[root@front conf.d]# htpasswd -b /etc/nginx/user tassel tassel
Adding password for user tassel
[root@front conf.d]# cat /etc/nginx/user
test:$apr1$DYOgLaoY$GKNgriUjduo/r7s5ous4v.
tassel:$apr1$iQF6rDr0$.Pwe8qmNOi6jxUMD4deI4.## 修改权限
[root@front conf.d]# chmod 600 /etc/nginx/user
[root@front conf.d]# chown nginx.nginx /etc/nginx/user# 语法检查并重启
[root@front conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@front conf.d]# systemctl reload nginx

状态stub_status模块

显示nginx当前状态,信息。显示nginx服务的状态,用户访问的状态.
stub_status; #显示nginx
在这里插入图片描述

# 编写子配置文件
[root@front conf.d]# cat v.test.com.conf
server {listen 80;server_name v.test.com;root /app/code/v;error_log /var/log/nginx/v.test.com-error.log notice;access_log /var/log/nginx/v.test.com-access.log main;autoindex on;charset utf8;autoindex_localtime on;autoindex_exact_size off;location / {index index.html;}location /auth/ {auth_basic "提示-请输入密码:";auth_basic_user_file /etc/nginx/user;}location /status/ { # 新增此部分,注意,此部分是uri,而不是一个文件夹,所以可以不用新建该路径文件夹stub_status; #启用统计功能,注意,显示所有站点,而非仅当前虚拟主机}
}# 语法检查并重启
[root@front conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@front conf.d]# systemctl reload nginx# 内容解析
## 压测
[root@front conf.d]# ab -n 999999 -c 3 -H Host:v.test.com http://192.168.100.148/
# ab是Apache Bench的缩写,它是一个用于测试Web服务器性能的工具。ab可以发送多个HTTP请求到服务器,并报告服务器的响应时间、传输速度等性能指标。命令行中的参数含义如下:
# -n 999999:指定总共发送的请求次数为999999次。
# -c 3:指定并发连接数为3,即同时有3个请求发送到服务器。
# -H Host:v.test.com:添加一个HTTP请求头,设置Host头的值为v.test.com。这通常用于测试虚拟主机的性能,或者当服务器根据Host头来处理请求时。
# http://192.168.100.148/:指定要测试的服务器的URL。这里是一个本地网络中的IP地址,表示ab将向该地址发送请求。## status下内容
Active connections: 3 
server accepts handled requests61576 61576 61579 
Reading: 0 Writing: 1 Waiting: 2 
# Active connections: 当前活动状态的连接数。这是当前Nginx正在处理的连接数量,包括正在读取请求、正在写入响应或正在等待客户端发送下一个请求的连接。
# server accepts handled requests下的三个参数:
#  accepts: 总共接受的连接数。这是自从Nginx启动以来接受的连接总数。
#  handled: 总共处理的连接数。通常这个数字和accepts相同,因为Nginx能够处理所有接受的连接。
#  requests: 总共处理的请求数。这是自从Nginx启动以来处理的总请求数量。这个数字可能会比accepts大,因为同一个连接可能会发送多个请求(例如,在一个Keep-Alive连接中)。
# Reading: 当前正在读取请求头的连接数。这是Nginx正在从客户端读取请求头的连接数量。
# Writing: 当前正在写入响应的连接数。这是Nginx正在向客户端发送响应的连接数量。
# Waiting: 当前等待请求的空闲连接数。这是打开着但是目前没有读取或写入活动的连接数量。这些连接可能处于Keep-Alive状态,等待客户端发送下一个请求。
  • 状态模块中的指标:
指标说明
Active connections当前已经建立的连接数(est)和等待数量,体现Nginx并发能力
server accepts已经接收到客户端的连接总数
handled服务端已经处理的连接
requests客户端发出请求的总数
reading正在读取的请求头连接数量
writing正在进行的响应的连接数量
waiting排队数量,反映排队情况

模块小结

  • nginx模块就是nginx指令的集合
模块模块中的核心指令
目录索引模块autoindex on;
认证功能模块auth_basic_user_file;
访问控制模块allow,deny
状态模块stub_status
nginx 核心模块root,location,error_log,server_name,listen
nginx 日志模块access_log,log_format,error_log

案例2 动态网站(部署php代码)

概述

网站架构说明与特点性能1句话说明
静态网站网站仅仅包含HTML、CSS样式、JS脚本、图片、视频等静态资源。只需要web服务器即可:nginx,可以承受较高的访问量。不支持动态的功能,如注册、评论,功能单一。浏览器端解析(客户端解析),服务端仅仅负责发送.
动态网站动态网站一般是通过开发语言实现:Java、PHP、Python、Golang等。动态资源页面需要服务器进行处理:nginx+php/tomcat+数据库。一般动态请求需要服务端进行处理与解析,把结果给用户.
  • 区分静态/动态资源:
  • url中包含&?一般都是动态资源

常见的动态网站的架构

L: Linux, N: Nginx, M: Mysql, A: Apache, W: Windows

  • PHP:LNMP(LEMP), LAMP, WNMP/WAMP
  • Java: LNMT(Tomcat,Jetty,Weblogic,Jboss)
  • Python: LNMP(Python,uwsgi)
  • Golang: LNMG(Golang)
  • C/C++

LNMP

架构流程
  • 用户通过http协议发送请求
  • Nginx分流动/静态资源,静态自己处理,动态请求丢给PHP
    - Nginx通过fastcgi协议把动态请求丢给PHP
    - PHP处理动态请求,若需要数据,则连接数据库Mysql
数据库Mariadb
安装
yum install -y mariadb-server
# mariadb-server 服务端
# mariadb 客户端systemctl start mariadb
systemctl enable mariadb# 验证
[root@db01 ~]# ss -tunlp | grep mysql
tcp   LISTEN 0      80                 *:3306            *:*    users:(("mysqld",pid=14433,fd=21))
[root@db01 ~]# ps -ef | grep mysql
mysql      14433       1  0 20:35 ?        00:00:00 /usr/libexec/mysqld --basedir=/usr
root       14974   14928  0 20:39 pts/0    00:00:00 grep --color=auto mysql
安全配置
mysql_secure_installation  #仅仅刚安装的时候运行.仅首次运行即可.
#用于设置root密码,清理用户和清理临时库.Enter current password for root (enter for none): #回车即可
OK, successfully used password, moving on...Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.You already have a root password set, so you can safely answer 'n'.Change the root password? [Y/n] y #输入y
New password: #输入密码
Re-enter new password: #再次输入密码
Password updated successfully!
Reloading privilege tables..... Success!Remove anonymous users? [Y/n] y #y删除数据库中的匿名用户... Success!Disallow root login remotely? [Y/n] y #y禁止root远程登陆... Success!Remove test database and access to it? [Y/n] y #y删除test测试用数据库Reload privilege tables now? [Y/n] y #y更新权限信息表... Success!
基本操作
  • 进入数据库
mysql -uroot -p密码 [-h IP]
#不要有空格,也可以不输入密码,等交互式时输入

数据库基本概念请自行了解,库->表->字段(属性/投影/列)->记录(元组/行)

  • 查看
# 查看数据库
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.001 sec)# 查看表
MariaDB [(none)]> show tables from mysql;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| column_stats              |
| columns_priv              |
| db                        |
| event                     |
...#查看某些字段(列),筛选记录(行)
## 筛选mysql数据库中user表的user和host列的记录
## -G行的内容以列显示
MariaDB [(none)]> select user,host from mysql.user ;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1       |
| root | localhost |
+------+-----------+
3 rows in set (0.000 sec)
  • 创建
# 创建数据库
MariaDB [(none)]> create database test;
Query OK, 1 row affected (0.000 sec)MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.001 sec)# 创建用户,进行授权
MariaDB [(none)]> grant all on test.* to 'test'@'%' identified by 'test';
Query OK, 0 rows affected (0.000 sec)
## grant 权限 on 数据库.表 to '用户'@'登录白名单' identified by '密码';
## 一般localhost表示只能在数据库本地使用.
## 可以通过192.168.100.% 进行授权局域网访问. 其他局域网机器可以访问数据库.
## 只给个 % 表示所有人可以访问(不安全). %不包含localhost.
### ALL: 所有可用的权限
### CREATE: 创建库、表和索引
### LOCK_TABLES: 锁定表
### ALTER: 修改表
### DELETE: 删除表
### UPDATE: 更新数据
### INSERT: 插入表或列
### SELECT: 检索表或列的数据
### CREATE_VIEW: 创建视图
### SHOW_DATABASES: 列出数据库
### DROP: 删除库、表和视图
  • 删除
# 删除数据库
MariaDB [(none)]> drop database test;
Query OK, 0 rows affected (0.001 sec)MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.000 sec)# 删除用户(revoke删除授权)
MariaDB [(none)]> drop user 'test'@'%';
Query OK, 0 rows affected (0.001 sec)MariaDB [(none)]> select user,host from mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1       |
| root | localhost |
+------+-----------+
3 rows in set (0.001 sec)
PHP

选择php 7.x

安装php
# 安装php
## 若是centos7,可以输入以下yum源和安装命令
[root@front conf.d]# cat /etc/yum.repos.d/php.repo
[webtatic-php]
name = php Repository
baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64
enabled = 1
gpgcheck = 0[root@front conf.d]# yum install -y php72w php72w-cli php72w-common  php72w-devel php72w-embedded php72w-gd php72w-mcrypt  php72w-mbstring php72w-pdo php72w-xml php72w-fpm  php72w-mysqlnd php72w-opcache php72w-pecl-memcached  php72w-pecl-redis php72w-pecl-mongodb## centos8可以直接使用默认的yum源安装
[root@front conf.d]# yum install -y php*
[root@front conf.d]# php -v
PHP 7.2.24 (cli) (built: Oct 22 2019 08:28:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologieswith Zend OPcache v7.2.24, Copyright (c) 1999-2018, by Zend Technologies# 启动php
[root@front conf.d]# systemctl enable php-fpm --now
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.
修改配置文件

php默认使用的时apache,但要求用nginx,所以修改配置文件,使其使用nginx
yum安装的php,默认listen监听的是socket,要修改成127.0.0.1:9000

[root@front conf.d]# egrep -n "^user|^group" /etc/php-fpm.d/www.conf
24:user = apache
26:group = apache
[root@front conf.d]# egrep -n "^listen" /etc/php-fpm.d/www.conf
38:listen = /run/php-fpm/www.sock# 修改配置文件
[root@front conf.d]# sed -i 's/user = apache/user = nginx/g' /etc/php-fpm.d/www.conf
[root@front conf.d]# sed -i 's/group = apache/group = nginx/g' /etc/php-fpm.d/www.conf
[root@front conf.d]# egrep -n "^user|^group" /etc/php-fpm.d/www.conf
24:user = nginx
26:group = nginx[root@front conf.d]# sed -i 's/listen = /run/php-fpm/www.sock/listen = 127.0.0.1:9000/g' /etc/php-fpm.d/www.conf
sed: -e expression #1, char 18: unknown option to `s'
[root@front conf.d]# sed -i 's|listen = /run/php-fpm/www.sock|listen = 127.0.0.1:9000|g' /etc/php-fpm.d/www.conf
[root@front conf.d]# egrep -n "^listen" /etc/php-fpm.d/www.conf
38:listen = 127.0.0.1:9000
Nginx+Wordpress
编辑Nginx
# 编写子配置文件
[root@front conf.d]# cat blog.test.com.conf
server {listen 80;server_name blog.test.com;root /app/code/blog;error_log /var/log/nginx/blog.test.com-error.log notice;access_log /var/log/nginx/blog.test.com-access.log main;location / {index index.php;}location ~* \.php$ {# foward to phpfastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;# 修改以下fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}# 
安装wordpress

官方下载链接:https://wordpress.org/download/releases/#branch-61
我选用的是6.1.1

# 解压并移动到对应站点目录
unzip wordpress-6.1.1.zip
mv wordpress/* /app/code/blog/# 修改权限
[root@front conf.d]# chown -R nginx.nginx /app/code/blog
访问主页

在这里插入图片描述
在这里插入图片描述
wordpress的教程网上特别多,这里不赘述,只是作为动态资源的演示

相关文章:

Nginx03-动态资源和LNMP介绍与实验、自动索引模块、基础认证模块、状态模块

目录 写在前面Nginx03案例1 模拟视频下载网站自动索引autoindex基础认证auth_basic模块状态stub_status模块模块小结 案例2 动态网站(部署php代码)概述常见的动态网站的架构LNMP架构流程数据库Mariadb安装安全配置基本操作 PHP安装php修改配置文件 Nginx…...

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十九)- 微服务(9)

目录 12. ElastisSearch 12.1 安装es 12.2 部署kibana 12.2.1 部署 12.2. 2 DevTools 12.3 索引库操作 12.3.1 mapping映射 12.3.2 创建索引库 12.3.3 查询索引库 12.3.4 删除索引库 12.3.5 修改索引库 12.4 文档操作 12.4.1 新增文档 12.4.2 查询文档 12.4.3 删…...

Matplotlib常见图汇总

Matplotlib是python的一个画图库,便于数据可视化。 安装命令 pip install matplotlib 常用命令: 绘制直线,连接两个点 import matplotlib.pyplot as plt plt.plot([0,5],[2,4]) plt.show() 运行结果如下: 多条线:…...

MTK联发科MT6897(天玑8300)5G智能移动处理器规格参数

天玑 8300 采用台积电第二代 4nm 制程,基于 Armv9 CPU 架构,八核 CPU 包含 4 个 Cortex-A715 性能核心和 4 个 Cortex-A510 能效核心,CPU 峰值性能较上一代提升 20%,功耗节省 30%。 此外,天玑 8300 搭载 6 核 GPU Mal…...

【AIoT-Robot】3d hand pose

手语是聋哑人士的主要沟通工具,它是利用手部和身体的动作来传达意义。虽然手语帮助它的使用者之间互相沟通,但聋哑人士与一般人的沟通却十分困难,这个沟通障碍是源于大部分人不懂得手语。 1. 手势&&手语 手势:手的姿势 ,通常称作手势。它指的是人在运用手臂时,所…...

使用 tc (Traffic Control)控制网络延时

设置网络延时 1500ms 800ms tc qdisc add dev eth0 root netem delay 1500ms 800msping 测试 ping www.baidu.com取消设置网络延时 sudo tc qdisc del dev eth0 root...

android原生TabLayout之自定义指示器效果

“com.google.android.material.tabs.TabLayout” 这个玩意说起来大家都不陌生。结合viewPager或者单独使用。场景非常多。当然市面上的三方也数不胜数。但是毕竟是亲儿子。用起来终归是顺手一些。下面说一下TabLayout的具体用法细节: 首先,xml布局引入…...

最新 HUAWEI DevEco Studio 使用技巧

最新 HUAWEI DevEco Studio 使用技巧 HUAWEI DevEco Studio 作为我们 harmonyos 应用的开发工具,有必要好好打磨一下。 Chinese(Simplified) 中文汉化插件 GitToolBox 编辑器中显示git历史 保存时自动格式化 写了一堆代码,当保存时,自动帮…...

开源大模型与闭源大模型浅析

引言 技术发展背景 早期语言模型 预训练与微调的范式 开源与闭源模型的兴起 当前的技术前沿 未来发展趋势 开源大模型的特点与优势 技术共享与创新加速 成本效益 社区驱动的发展 透明度和可审计性 促进教育与人才培养 灵活性和自定义 闭源大模型的特点与优势 商…...

docker 命令 ps,inspect,top,logs详解

docker常用命令教程-4 docker ps docker ps 命令用于列出当前正在运行的容器。默认情况下,它只显示正在运行的容器,但你可以使用 -a 或 --all 选项来显示所有容器(包括已停止的容器)。 常用的选项和示例: -a 或 --…...

Windows 找不到文件‘shell:sendto‘。请确定文件名是否正确后,再试一次

执行“shell:sendto”命令的时候,报错:Windows 找不到文件’shell:sendto’。请确定文件名是否正确后,再试一次 解决办法: 在桌面新建一个记事本文件命名为fix.reg,注意后缀是reg,文件中填写以下内容&…...

【算法】模拟算法——外观数组(medium)

题解:模拟算法——外观数组(medium) 目录 1.题目2.题解3.参考代码4.总结 1.题目 题目链接:LINK 2.题解 首先应该理解题意: 就是开始给你一个字符串,然后你对其进行描述。 描述规则是:连续的数字为一组,…...

2024年会计、金融与工商管理国际会议(ICAFBA 2024)

2024年会计、金融与工商管理国际会议 2024 International Conference on Accounting, Finance, and Business Administration 【1】会议简介 2024年会计、金融与工商管理国际会议是一场集合了全球会计、金融与工商管理领域专家学者的学术盛会。此次会议旨在深入探讨会计、金融与…...

关于 spring boot 的 目录详解 和 配置文件 以及 日志

目录 配置文件 spring boot 的配置文件有两种格式,分别是 properties 和 yml(yaml)。这两种格式的配置文件是可以同时存在的,此时会以 properties 的文件为主,但一般都是使用同一种格式的。 格式 properties 语法格…...

如何删除电脑端口映射?

在使用电脑进行网络连接时,有时需要进行端口映射以实现不同设备之间的信息远程通信。当这些端口映射不再需要时,我们需要及时删除它们以确保网络的安全和稳定。本文将介绍如何删除电脑端口映射的方法。 操作系统自带的工具 大多数操作系统都提供了自带…...

xiaolingcoding 图解网络笔记——基础篇

文章目录 参考一、网络模型有哪几层DMANAPI 机制二、键入网址到网页显示,期间发生了什么?1. HTTP2. DNS3. 协议栈4. TCP5. IP6. MAC7. 网卡8. 交换机9. 路由器10. 服务器 与 客户端的互相扒皮(添加、删除头部信息)参考图HTTP 请求…...

Docker 容器 mysql 配置主从

1、前提条件 集群的条件下 服务器 172.16.11.195 13316:3306 服务器 172.16.11.196 13317:3306 配置好主数据库和从数据 2、配置主从数据库 2.1使用portainer 来管理容器 建立数据库密码 新增配置文件 # mysql-master.cnf [mysqld] server_id110 log-binmysql-binrela…...

64. UE5 RPG 创建新的双手攻击怪物

在上一篇文章中,我们实现了新的功能,现在可以创建多个普通攻击动画,并且可以根据你所使用的普通攻击动画,设置不同的攻击位置。比如,你使用武器,那么攻击位置需要从武器上获取,如果你没有持有武…...

(求一个整数各位数的和)编写程序,读取一个在0和1000之间的整数,并将该整数的各位数字相加。例如:整数是 932,各位数字之和为14。

(求一个整数各位数的和)编写程序,读取一个在0和1000之间的整数,并将该整数 的各位数字相加。例如:整数是 932,各位数字之和为14。 提示:利用操作符%分解数字,然后使用操作符/去掉分解出来的数字。例如: 932%10-2 932/10-93。下面是一个运行示…...

大模型参加高考,同写2024年高考作文,及格分(通义千问、Kimi、智谱清言、Gemini Advanced、Claude-3-Sonnet、GPT-4o)

大家好,我是章北海 今天高考,上午的语文结束,市面上又要来一场大模型参考的文章了。 我也凑凑热闹,让通义千问、Kimi、智谱清言一起来写一下高考作文。 公平起见,不加任何其他prompt,直接把题目甩过去。…...

知识付费浪潮下的技术学习:是捷径,还是新的信息茧房?

当“知识”成为一种商品打开手机,各类技术公众号、知识星球、极客时间专栏、慕课网实战课、B站充电视频……铺天盖地的“测试开发进阶”“性能测试大师班”“自动化测试框架实战”正以9.9元、199元、3999元的价格被明码标价。作为一名软件测试工程师,我们…...

多品牌技高速存储卡术拆解分析实测:如何同时满足企业级监控与创作两不误?

一、开篇:当监控连续记录与影视创作相遇——存储卡的双重使命在企业级安防监控与专业影像创作的交汇点上,存储卡不再仅仅是数据的载体,而是工作流中不可绕过的风险控制节点。安防监控要求724小时不间断写入,对持续写入稳定性和数据…...

硬件工程师显示器选购指南:从垂直分辨率到IPS面板的实战经验

1. 从“够用”到“爽用”:一个硬件工程师的显示器升级心路作为一名整天和代码、电路图、数据手册打交道的硬件工程师,我的工作台就是我的战场。而这块战场上最核心的装备,除了键盘鼠标,就是那块每天要盯着看至少八小时的显示器。几…...

TinyRedis随笔

在TinyRedis的内存与AOF之间的关系中,AOF接入点在命令层中,因为只有在执行写命令,修改DB内存之后,再对AOF文件进行写入。但是这里也存在一个问题,如果对aof文件写入失败了呢,那就会造成内存与aof文件数据不…...

别再只点CubeMX的SDRAM选项了!STM32F429IGT6外扩W9825G6KH内存的完整驱动与读写测试指南

STM32F429IGT6外扩W9825G6KH内存实战:从CubeMX配置到完整驱动开发的深度解析 如果你正在使用STM32F429IGT6开发板,并且需要扩展大容量内存,W9825G6KH-6I这颗32MB的SDRAM芯片可能已经在你的硬件清单上。许多开发者习惯性地依赖STM32CubeMX生成…...

WarcraftHelper:3步解决魔兽争霸3卡顿与兼容性问题终极指南

WarcraftHelper:3步解决魔兽争霸3卡顿与兼容性问题终极指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还在为魔兽争霸3在现代电…...

AI写作净化器:识别与消除AI文本痕迹的实用指南

1. 项目概述:为什么我们需要一个“AI写作净化器”? 如果你和我一样,每天都要和AI助手打交道,无论是用它写邮件、生成报告,还是草拟技术文档,那你一定对那种“AI味儿”深有体会。那种感觉就像喝了一杯过度调…...

lsyncd rsyncssh同步中断:Broken pipe (32) 深度诊断与流量整形方案

1. 问题现象与初步诊断 最近在帮客户部署lsyncdrsyncssh方案时,遇到了一个典型问题:同步25GB目录时,总是在传输4GB左右中断。日志里反复出现"Broken pipe (32)"错误,就像下面这样: packet_write_wait: Conne…...

如何在10分钟内完成1小时视频硬字幕提取:望言OCR完整指南

如何在10分钟内完成1小时视频硬字幕提取:望言OCR完整指南 【免费下载链接】SubtitleOCR 快如闪电的硬字幕提取工具。仅需苹果M1芯片或英伟达3060显卡即可达到10倍速提取。A very fast tool for video hardcode subtitle extraction 项目地址: https://gitcode.com…...

从平面到立体:基于OpenLayers与Cesium的无缝地图维度切换实践

1. 二维与三维地图融合的必要性 在现代WebGIS开发中,单纯依赖二维地图已经难以满足用户对空间数据展示的需求。想象一下,当你查看一个城市规划系统时,平面地图能告诉你道路走向,但只有切换到三维视图才能直观看到建筑高度、地形起…...