Linux服务之nginx中http设置及虚拟主机搭建
目录
一.http相关概述
1.mime
2.server下的listen及root
2.1 listen
2.2 root
3.alias别名
4.location相关概述
4.1 语法规则初步解释
5.access模块
6.验证模块
6.1 htpasswd
7.自定义错误页面
8.虚拟主机搭建 (yum安装)
一.http相关概述
http 是一个大的语句块,包含若干个小的语句块(比如server语句块)。
http {
expires 1d;
include mime.types; #导入支持的文件类型,是相对于/apps/nginx/conf的目录
default_type application/octet-stream; #除mime.types中文件类型外,设置其它文件默认类型,访问其它类型时会提示下载不匹配的类型文件
#日志配置部分
#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 logs/access.log main;
#自定义优化参数
sendfile on;
#tcp_nopush on; #在开启了sendfile的情况下,合并请求后统一发送给客户端。
#tcp_nodelay off; #在开启了keepalived模式下的连接是否启用TCP_NODELAY选项,当为off时,延迟0.2s发送,默认On时,不延迟发送,立即发送用户响应报文。
#keepalive_timeout 0;
keepalive_timeout 65 65; #设置会话保持时间,第二个值为响应首部:keepAlived:timeout=65,可以和第一个值不同
#gzip on; #开启文件压缩
server {
listen 80; #设置监听地址和端口
server_name localhost ; #设置server name,可以以空格隔开写多个并支持正则表达式,如:*.kgc.com www.kgc.* ~^www\d+\.kgc\.com$ default_server
1.mime
此项为支持的 文件格式,如果不支持的格式 会自动帮你下载,如果支持 就会显示在网页上
范例:
text/plain
text/html
text/css
image/jpeg jpg jpeg
image/png
video/mp4
application/javascript
2.server下的listen及root
2.1 listen
语法结构:
listen address[:port] [default_server] [ssl] [http2 | quic] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
例子:
listen 127.0.0.1:8000;
listen 127.0.0.1;
listen 8000;
listen *:8000;
listen localhost:8000 bind;
2.2 root
指定主页文件的位置
Syntax: root path;
Default:
root html;
Context: http, server, location,
root 指明根目录的位置
location 根据 用户访问地址的不同, 指定访问的目录
例子: 用户默认访问的主站点文件夹是 /data/nginx/html/pc/
server {
listen 80;
server_name localhost;
root /data/nginx/html/pc/;
}
3.alias别名
例子:别名设置
server {
listen 80;
server_name www.kgc.com;
location /nwes {
root /data/nginx/html/pc/;
#相当于追加 将 文件夹news追加到/data/nginx/html/pc/news
}
location /study{
alias /mnt/nginx/sports/;
#相当于替换 你访问 study 就是访问/mnt/nginx/sports
}
}
4.location相关概述
4.1 语法规则初步解释
#语法规则:
location [ = | ~ | ~* | ^~ ] uri { ... }
= #用于标准url前,需要请求字串与uri精确匹配,大小敏感,如果匹配成功就停止向下匹配并立即处理请求
^~ #用于标准url前,表示包含正则表达式,并且匹配以指定的正则表达式开头,对URI的最左边部分做匹配检查,不区分字符大小写
~ #用于标准url前,表示包含正则表达式,并且区分大小写
~* #用于标准url前,表示包含正则表达式,并且不区分大写
不带符号 #匹配起始于此uri的所有的uri
#\ #用于标准url前,表示包含正则表达式并且转义字符。可以将 . * ?等转义为普通符号
#匹配优先级从高到低:
=, ^~, ~/~*, 不带符号
表格归纳
符号 | 作用 |
---|---|
= | 用于标准uri前,需要请求字串与uri精确匹配,大小敏感,如果匹配成功就停止向下匹配并立即处理请求 |
^~ | 用于标准uri前,表示包含正则表达式,并且匹配以指定的正则表达式开头,对URI的最左边部分做匹配检查,不区分字符大小写 |
~ | 用于标准uri前,表示包含正则表达式,并且区分大小写 |
~* | 用于标准uri前,表示包含正则表达式,并且不区分大写 |
不带符号 | 匹配起始于此uri的所有的uri |
例子:请解答以下题目选择匹配的 location
location ~ /Test1/$ {
return 200 'A位置最前的正则表达式匹配';
}
location ~* /Test1/(\w+)$ {
return 200 'B长正则表达式匹配';
}
location ^~ /Test1/ {
return 200 'C 停止正则表达式匹配';
}
location /Test1/Test2 {
return 200 'D 无符号最长的前缀匹配';
}
location /Test1 {
return 200 'E 无符号短前缀匹配';
}
location = /Test1 {
return 200 'F =精确匹配!';
}
/Test1
/Test1/
/Test1/Test2
/Test1/Test2/
/test1/Test2
详细解释
url 192.168.91.100/Test1
优先遍历 筛选出符合条件的前缀匹配
因为F精确匹配 E无符号短前缀匹配
由于优先级的关系所以
优先匹配F F =精确匹配!
url 192.168.91.100/Test1/
优先遍历 筛选出符合条件的前缀匹配
C 停止正则表达式匹配 ^~ /Test1/
E 无符号短前缀匹配 /Test1
nginx 会优先遍历CE
CE 优先匹配 C 比 E长 所以选C
E 又会停止匹配正则的location 所以A B出局
优先匹配 C 停止正则表达式匹配
url 192.168.91.100/Test1/Test2
优先遍历 筛选出符合条件的前缀匹配
C 停止正则表达式匹配 ^~ /Test1/
D 无符号最长的前缀匹配 /Test1/Test2
E 无符号短前缀匹配 /Test1
此时 D 由于最长胜出 但是 由于没有 ^~ 前缀 所以会继续按配置文件的顺序去找正则匹配
A ~ /Test1/$ 已Test1 结尾显然不符合
B ~* /Test1/(\w+)$ TEST1后面有1个以上 字母或数字或下划线或汉字 符合要求所以选择 B
优先匹配 B长正则表达式匹配
url 192.168.91.100/Test1/Test2/
优先遍历符合条件的前缀匹配
C 停止正则表达式匹配 ^~ /Test1
D 无符号最长的前缀匹配 /Test1/Test2
E 无符号短前缀匹配 /Test1
先记住 D 无符号最长的前缀匹配
然后去匹配正则
A ~ /Test1/$ 已Test1 结尾显然不符合
B ~* /Test1/(\w+)$ TEST1后面有1个以上字符 \w #匹配字母或数字或下划线或汉字 而/ 不在w中不符合要求
所以返回优先使用D 无符号最长的前缀匹配
url 192.168.91.100/test1/Test2
优先遍历符合条件的匹配
无前缀符号
直接去匹配正则
只有 B 不区分大小写的正则可以匹配
B ~* /Test1/(\w+)$ TEST1后面有1个以上字符 \w #匹配字母或数字或下划线或汉字 而/ 不在w中不符合要求
优先匹配B
5.access模块
格式:
Syntax: allow address | CIDR | unix: | all;
Default: —
Context: http, server, location, limit_except
Syntax: deny address | CIDR | unix: | all;
Default: —
Context: http, server, location, limit_except (限制 用户的访问方式)
官方例子:
Example Configuration
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
}
实际例子:
配置文件修改
server {
listen 80;
server_name www.kgc.com;
allow 192.168.91.0/24;
deny 192.168.91.101;
location / {
root /data/nginx/html/pc;
}
}
匹配了之后就不往下匹配了
所以范围小的往上
当访问 有问题时 默认站点 是按 文件的名字首字母开头排序
实际例子:禁止 用户访问 url 192.168.91.100/test
server{
listen 192.168.91.100:80;
server_name www.lucky.com;
root /data/html;
location /test {
deny 192.168.91.101;
}
}
6.验证模块
模块名称:ngx_http_auth_basic_module
语法:
Syntax: auth_basic string | off;
Default:
auth_basic off;
Context: http, server, location, limit_except
Syntax: auth_basic_user_file file;
Default: —
Context: http, server, location, limit_except
配置例子:
配置
server {
listen 80;
server_name www.kgc.com;
location / {
root /data/nginx/html/pc;
}
location /admin{
root /data/;
auth_basic "welcome"; #提示信息
auth_basic_user_file /data/.httpuser; #用户名密码文件,需要用htpasswd 命令生成
}
}
6.1 htpasswd
要实现验证需要用户名和密码,htpasswd 命令可以建立 虚拟用户名和密码,此命令来自于 httpd-tools 包,如果没有安装 一下即可。
使用方法:
第一次生成文件
htpasswd -c 文件路径 姓名 交互式生成密码
htpasswd -bc 文件路径 姓名 密码 直接将密码跟在后面
-c 代表新建用户名和密码对应的文件
-b 将密码跟在用户名后
非第一次
htpasswd 文件路径 姓名 交互式生成密码
htpasswd -b 文件路径 姓名 密码 直接将密码跟在后面
生成用户名密码案例:
第一次
[root@localhost conf.d]#htpasswd -bc /apps/nginx/conf.d/.httpuser kgc 123456
#没有 yum install httpd-tools -b 将名字密码跟在后面 -c 新建文件
Adding password for user kgc
[root@localhost conf.d]#cat /apps/nginx/conf.d/.httpuser
kgc:$apr1$RtjFE23R$lf2n.YpdssSf1EYJbIDqT0
非第一次
[root@localhost error]#htpasswd /apps/nginx/conf.d/.httpuser xiaoming
New password:
Re-type new password:
Adding password for user xiaoming
htpasswd -bc /data/.httpuser kgc 123456
7.自定义错误页面
格式:
Syntax: error_page code ... [=[response]] url;
Default: —
Context: http, server, location, if in location
error_page 404 /index.html
error_page 固定关键字
code 错误响应码(404 403 500 501 502 504等)
= 可以将响应码转换
response code 状态 666
uri 访问连接
例子:自定义错误页面
www.pc.com/xxxxxxxx 404
www.pc.com/40x.html
server {
listen 80;
server_name www.kgc.com;
root /data/nginx/html/pc;
error_page 404 /40x.html;
#当出现404 错误 就去 root /data/nginx/html/pc/error/ 这个文件夹找40x.html 这个文件
location = /40x.html {
root /data/nginx/html/pc/error/;
}
}
[root@localhost nginx]#mkdir /data/nginx/html/pc/error/
#建立目录
[root@localhost nginx]#cd /data/nginx/html/pc/error/
#切换目录
[root@localhost nginx]#vim 40x.html
#新建页面,此处页面名字需要和 配置文件中的一致
例子:自定义错误代码
自定义 错误码
server {
listen 80;
server_name www.kgc.com;
root /data/nginx/html/pc;
error_page 404 =302 /40x.html;
#把错误码 404 指定成302 注意此处的 40x.html 需要真实存在建立的页面必须一致
location = /40x.html {
root /data/nginx/html/pc/error/;
}
location / {
root /data/nginx/html/pc;
}
location /admin{
auth_basic "admin site";
auth_basic_user_file /apps/nginx/conf.d/.httpuser;
}
}
例子:错误了直接跳转到主页面
#出了错 直接跳转到显示主站点
server {
listen 80;
server_name www.kgc.com;
root /data/nginx/html/pc/index.html;
error_page 404 =302 /index.html;
#把错误码 404 指定成302 并跳到主页面:/index.html
error_page 404 = /index.html;
#也可以不更改状态码直接跳转
8.虚拟主机搭建 (yum安装)
1.修改配置文件
[root@localhost ~]#vim /etc/nginx/nginx.conf
#修改配置文件 要放在 http 模块里
include /etc/nginx/mime.types;
include /apps/nginx/conf.d/*.conf;
2.建立子配置文件
[root@localhost ~]#mkdir -p /apps/nginx/conf.d/
#建立子配置文件
3.分别编写子配置文件
基于域名
[root@localhost conf.d]#vim pc.conf
#分别编写配置文件
server {
listen 80;
server_name www.pc.com;
root /data/nginx/html/pc/;
}
[root@localhost conf.d]#vim mobile.conf
#分别编写配置文件
server {
listen 80;
server_name www.mobile.com;
root /data/nginx/html/mobile/;
}
基于端口
[root@localhost conf.d]#vim pc.conf
#分别编写配置文件
server {
listen 192.168.91.100:80;
server_name www.pc.com;
root /data/nginx/html/pc/;
}
[root@localhost conf.d]#vim mobile.conf
#分别编写配置文件
server {
listen 192.168.91.100:8080;
server_name www.mobile.com;
root /data/nginx/html/mobile/;
}
4.构建数据文件夹和相应的数据文件
[root@localhost ~]#mkdir /data/nginx/html/pc -pv
[root@localhost ~]#mkdir /data/nginx/html/mobile -pv
#构建数据文件夹
[root@localhost ~]#echo pc > /data/nginx/html/pc/index.html
[root@localhost ~]#echo moblie > /data/nginx/html/mobile/index.html
#构建数据文件
5.去另一台机器修改/etc/hosts文件
[root@localhost ~]#vim /etc/hosts
192.168.91.100 www.pc.com
192.168.91.100 www.mobile.com
基于域名
[root@localhost ~]#curl www.mobile.com
moblie
[root@localhost ~]#curl www.pc.com
pc
基于端口
[root@localhost ~]#curl 192.168.91.100:8080
moblie
[root@localhost ~]#curl 192.168.91.100:80
pc
相关文章:
Linux服务之nginx中http设置及虚拟主机搭建
目录 一.http相关概述 1.mime 2.server下的listen及root 2.1 listen 2.2 root 3.alias别名 4.location相关概述 4.1 语法规则初步解释 5.access模块 6.验证模块 6.1 htpasswd 7.自定义错误页面 8.虚拟主机搭建 (yum安装) 一.http相关概述 h…...
android-ndk开发(7): 从库文件反推ndk版本
android-ndk开发(7): 从库文件反推ndk版本 2025/05/06 1. 概要 对于动态库, 有些能用 parse_elfnote.py 提取,有些不能。 对于静态库, 不能用 parse_elfnote.py 提取; 对于 libopencv_core.a, 可以搜索关键字 General configu…...
MySQL8查询某个JSON类型的字段中出现过的所有键名(json key name)并去重返回
假设我有一张表叫 t1, 其中有一个字段 info 是 JSON类型,现在我想查询 t1.info 字段中出现过的所有键名,MySQL提供了一个函数 JSON_KEYS(column) 来返回单条数据单个JSON字段中的所有键名组成的集合,那我想查询整个表所有记录中某个JSON字段出…...
【AI】基于生活案例的LLM强化学习(入门帖)
一、从“教小孩说话”到“教模型说话”:LLM 训练全貌 1. 先打个比方 第一阶段:预训练 就好比教一个小孩先“读很多书”,让他获得基本的语言能力。对 LLM 来说,就是在海量文本上进行“预测下一个词”的训练,从而学到“…...
如何通过代理 IP 实现异地直播推流
在直播行业日益火爆的今天,许多主播希望突破地域限制,实现异地直播推流,以获得更广泛的观众群体和更好的直播效果。代理 IP 作为一种有效的网络工具,能够帮助主播轻松达成这一目标。本文将详细介绍如何通过代理 IP 实现异地直播推…...
Linux 网络编程 day5 多路IO转接之改进select and poll
三种多路IO转接方法:select , poll , epoll 改进select多路IO转接,使用数组来保存含有需要连接的套接字cfd,不用循环至1024,节约时间提高效率。 #include<stdio.h> #include<stdlib.h> #in…...
【iOS】源码阅读(二)——NSObject的alloc源码
文章目录 前言问题发现探索NSObject的alloc源码实现流程探索NSObject为什么直接走objc_alloc,而GGObject先走alloc总结 前言 前面笔者已经学习了alloc相关源码,之前的alloc底层源码实现步骤是以GGObject为基础的,今天我们来探索一下NSObject中…...
如何在短时间内高效复习食品安全员考试?
以下是一些在短时间内高效复习食品安全员考试的方法: 制定科学计划:根据剩余时间和考试内容,将备考时间划分为基础学习、强化巩固和模拟冲刺三个阶段。如基础学习阶段可安排每天学习 2-3 小时,梳理教材知识;强化巩固阶…...
Kotlin空安全解决Android NPE问题
在 Android 开发中,NullPointerException(NPE)一直是最常见的崩溃类型之一。Kotlin 通过创新的空安全机制,在语言层面彻底解决了这一问题。以下是 Kotlin 空安全的核心要点和实战指南: 一、Kotlin 空安全设计哲学 编译期防御:通过类型系统强制区分可空(?)与非空类型显…...
PrimExpr 与 RelayExpr 的区别
PrimExpr 与 RelayExpr 的区别解析 在 TVM 的表达式系统中,PrimExpr 和 RelayExpr 是两种不同层级的表达式类型,分别服务于 TVM 的不同编译阶段和目标场景。以下是它们的核心区别和关联: 1. 设计目标与层级 特性PrimExprRelayExpr所属层级TV…...
R语言助力森林生态研究:从数据处理到群落稳定性分析的完整流程,结合机器学习与案例写作
在生态学研究中,森林生态系统的结构、功能与稳定性是核心研究内容之一。这些方面不仅关系到森林动态变化和物种多样性,还直接影响森林提供的生态服务功能及其应对环境变化的能力。 👉 森林生态系统的结构、功能与稳定性是生态学研究的核心。…...
android-ndk开发(8): ndk 和 clang 版本对照表
android-ndk开发(8): ndk 和 clang 版本对照表 2025/05/06 1. 概要 android-ndk 是基于 clang 的编译工具链。 当 clang 自身的版本变更导致了普通用户的编译、链接报错时, 用户可能只关注到了 ndk 版本, 导致问题的分析浮于表面。 android-ndk 官方…...
《AI大模型应知应会100篇》第50篇:大模型应用的持续集成与部署(CI/CD)实践
第50篇:大模型应用的持续集成与部署(CI/CD)实践 🧾 摘要 在AI大模型开发中,随着模型版本迭代频繁、依赖复杂、部署环境多样,构建一套高效可靠的持续集成与持续交付(CI/CD)流程显得尤…...
Python基于Django的在线考试系统【附源码、文档说明】
博主介绍:✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&…...
windows操作系统开机自启(自动启动) 运行窗口 shell:startup 指令调出开机自启文件夹
打开 “运行” 窗口,输入 shell:startup 把需要开机自启程序的快捷启动方式复制到启动文件夹 (注意:一定要复制快捷启动方式,可以右键启动的文件,发送到桌面快捷方式,如果直接把启动的文件放进去ÿ…...
笔记本外接显示器检测不到hdmi信号
原因:AMD显卡驱动挂了。 其他 异常特征:显示亮度被禁用,无法调整。 修复步骤: ① ②点击更新驱动程序...
论软件的可靠性设计
目录 摘要(300~330字) 正文(2000~2500字,2200字为宜) 背景介绍(500字做左右) 论点论据(1500字做左右)...
【Linux】基础开发工具
L i n u x Linux Linux 环境下的开发工具非常丰富,是程序员和开发人员进行高效开发的必备基础。 L i n u x Linux Linux 环境下的开发工具主要包括 y u m yum yum 软件包管理器、 v i m vim vim 文本编辑器、 g c c / g gcc/g gcc/g 编译器、 g d b gdb gdb 调试工…...
【编程干货】本地用 Ollama + LLaMA 3 实现 Model Context Protocol(MCP)对话服务
模型上下文协议(MCP)本身提供的是一套标准化的通信规则和接口,简化了客户端应用的开发。 MCP 实际上是一套规范,官方把整套协议分成「传输层 协议层 功能层」三大块,并对初始化握手、能力协商、数据/工具暴露、安全…...
华为策略路由
路由策略:是对路由条目进行控制,通告控制路由条目影响报文的转发路径。路由策略为控制平面。 策略路由:是根据报文特征,认为的控制报文从某个即可转发出去,不修改路由表。即策略路由为在转发平面。 路由策略 策略路由…...
Spring Boot3 实现定时任务 每10分钟执行一次,同时要解决分布式的问题 区分不同场景
在Spring Boot 3中实现分布式定时任务,确保多实例环境下任务仅执行一次,可以采用以下方案: 方案一:Redis分布式锁(推荐) import org.springframework.data.redis.core.StringRedisTemplate; import org.sp…...
山东大学项目实训-创新实训-法律文书专家系统-项目报告(四)
项目简介 法律文书专家系统是一个 Web 应用,提供法律文书摘要提取、法律预测报告生成和法律考试问题答疑三大核心功能。用户需要登录或注册后,进入主页面选择所需功能,进行相应的操作。 用户群体 律师:需要快速提取法律文书摘要…...
sqli-labs靶场通关保姆级教学(Get传输篇)Less-1Less-10
sqli-labs靶场通关保姆级教学(Get传输篇)Less-1~Less-10(纯手注) sqli - labs 靶场是一个专门用于网络安全学习和测试 SQL 注入漏洞的开源靶场。包含报错盲注、布尔盲注、基于联合查询的 SQL 注入等多种类型的 SQL 注入漏洞&…...
Day17 聚类算法(K-Means、DBSCAN、层次聚类)
一、聚类算法 1. K-Means 聚类 原理:K-Means 是一种基于划分的聚类算法,目标是将 n n n 个样本划分到 k k k 个簇中,使得簇内样本的相似度尽可能高,簇间样本的相似度尽可能低。算法通过迭代的方式,不断更新簇的质心…...
构建 Web 浏览 AI Agent:Pydantic + MCP 实现指南
在当今快节奏的数字世界中,高效地从网站提取和总结信息可以成为改变游戏规则的利器。大型语言模型(LLM)提供了令人难以置信的能力,但它们本身并不知道如何浏览网络或获取实时内容。 本文演示如何创建一个由Python驱动的AI Agent,它能够阅读和总结网站内容,使其成为研究人员…...
解决 pnpm dev 运行报错的坎坷历程
解决 pnpm dev 运行报错的坎坷历程 在项目开发过程中, 在clone完别人的代码后启动项目时:nodejs 和 pnpm版本都没问题 ,但是 无法运行 pnpm dev 命令启动项目时,往往会遇到各种各样的报错问题。最近在处理 yudao-ui-admin-vue3 项…...
从贴牌到品牌:出海官网如何让中国制造“贵”起来?
在全球经济一体化的当下,中美关税战如同一记重锤,给国际贸易格局带来了巨大震荡。自贸易摩擦爆发以来,双方多次调整关税政策,涉及的商品种类不断增多,税率持续攀升,众多中国企业的出口业务遭受重创…...
ultralytics框架进行RT-DETR目标检测训练
自DETR提出以来,其采用匈牙利匹配方式真正的实现了端到端检测效果,避免了NMS等后处理过程,同时,相较CNN的局部特征提取,其凭借着Transformer强大的全局特征提取能力,在目标检测领域可谓大杀四方,…...
SQLite基本函数
目录 1 核心函数和聚合函数 1.1 核心函数 1.2 聚合函数 2 字符串函数 3 日期和时间函数 4 数学函数 5 JSON函数 (SQLite 3.9.0) 6 窗口函数 (SQLite 3.25.0) 7 加密和安全函数 8 其他实用函数 9 C#代码示例:使用SQLite函数 9.1 准备工作 9.2 代码实现…...
使用Java和LangChain4j实现人工智能:从分类到生成式AI
人工智能(AI)从科幻小说中的梦想逐步演变为现实,驱动了从语音助手到自动驾驶汽车的各种应用。AI 的发展主要基于两种方法:基于编码的传统方法和基于机器学习的现代方法。机器学习通过神经网络和大量训练数据实现分类、生成等任务&…...
数据分析指标体系
目录 1. 构建业务公式,用量化逻辑串联业务 1.1 明确公式结果 1.2 拆解业务过程 1.3 构建计算关系(yaxb) 经典的成交额业务公式 小疑问: 如何让自己的指标看起来更专业? 量化业务过程的量化,到底是什…...
分布式、高并发-Day04
以下是 Day 4 详细学习内容(CAS 与原子操作实战,30 分钟完整计划),包含原理解析、分步代码实战和性能对比: 📖 今日学习目标 掌握 CAS(Compare-And-Swap)无锁算法的核心原理学会使…...
计算机中的逻辑运算
目录 一、总览 二、详情 1. 基本逻辑运算(与、或、非): 2. 其他常用的逻辑运算(异或、同或、与非、或非): 在计算机中,逻辑运算是构成数字电路和计算机程序基础的关键操作。它们处理的是真值…...
Dify - Stable Diffusion
Stable Diffusion 是一种基于文本提示生成图像的工具,Dify 已经实现了访问 Stable Diffusion WebUI API 的接口,因此你可以直接在 Dify 中使用它。以下是在 Dify 中集成 Stable Diffusion 的步骤。 1. 初始化本地环境 推荐使用装有较强 GPU 的机器来安…...
weapp-vite - 微信小程序工具链的另一种选择
weapp-vite - 微信小程序工具链的另一种选择 前言 weapp-vite 是由 笔者 icebreaker 开发的一个基于 vite 的现代化微信小程序开发工具链。我给它设定的目标初心是: 为小程序开发者带来笑容。 自从在 2024 年的 8 月正式发布之后,到现在也过了将近 9 个月的时间。…...
图形化编程重塑 IoT 边缘开发:技术革新与生态竞合新范式
本文以图形化编程技术为核心,深度剖析其在 IoT 边缘开发中的创新应用与行业变革。通过对传统开发困局的系统解构,结合 iVX 项目等典型案例,揭示图形化编程如何通过可视化逻辑设计、自动代码生成及 AI 驱动架构,实现开发效率与应用…...
node-sass安装失败解决方案
1、python环境问题 Error: Cant find Python executable "python", you can set the PYTHON env variable. 提示找不到python2.7版本, 方法一:可安装一个python2.7或引用其他已安装的python2.7 通过设置环境变量可以解决; 方法二&…...
PDF内容搜索--支持跨文件夹多文件、组合词搜索
平时我们接触到的PDF文档特别多,需要对PDF文档做一些处理,那么今天给大家带来的这两个软件非常的棒,可以帮你提升处理文档的效率。 PDF内容搜索 快速检索 我用夸克网盘分享了「PDF搜索PDF 转长图.zip」,点击链接即可保存。打开「…...
我用cursor 搭建了临时邮箱服务-Temp Mail 365
用业余时间搭建了一个临时邮箱,对于后端程序员出身的我,对前端了解的不太多,有了cursor的帮助,补齐了自己的短板,搭建了这个服务,下面对临时邮箱架构设计与安全性做一个分析。 https://temp-mail-365.com 临…...
RN学习笔记 ✅
太无聊了最近,找点事做,学一下RN丰富一下技术栈🫡。但是开发APP除了RN,还有一种选择就是WebView,但是基于WebView的APP的性能被普遍认为不如RN,因为WebView本质上是一个容器,用于在应用中嵌入网…...
使用原生 CSS 实现轮播
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、核心新特性1. ::scroll-button()2. ::scroll-marker()二、基础实现步骤1. 创建滚动容器2. 添加滚动按钮3. 集成滚动标记三、高级功能1. 滚动驱动动画2. 状态查询3. 响应式布局四、展示前言 最新!原生CSS也可以实现轮播…...
C语言进阶—函数(static,递归,回调,指针,内联,变参,结构体尺寸)
目录 一 static函数 1. static变量 1.静态局部变量 2.静态全局变量 2. static函数 二 递归函数 三 指针函数&函数指针 1. 指针函数 2. 函数指针 四 回调函数 五 内联函数 1. 核心特性表 2. 优缺点分析表 3. 用场景建议 3.1 推荐使用场景 3.2 应避免场景 六…...
碰一碰发视频源码搭建的定制化开发实践
在数字化营销与信息交互的浪潮中,碰一碰发视频技术以其便捷性和高效性,成为吸引用户的重要手段。然而,通用的碰一碰发视频系统往往难以满足企业多样化的业务需求。通过对源码进行定制化开发,可以打造出契合特定场景的专属系统。本…...
代码mark:脚本获取包含全角字符的字符串的长度
脚本获取包含全角字符的字符串的长度 function myLen(s) { var r 0; for (var i 0; i < s.length; i) { var c s.charCodeAt(i); // Shift_JIS: 0x0 ~ 0x80, 0xa0 , 0xa1 ~ 0xdf , 0xfd ~ 0xff // Unicode : 0x0 &…...
FPGA----基于ZYNQ 7020实现petalinux并运行一个程序
引言:上一节我们讲到了使用Alinx 7020b自带的sd卡中的petalinux进行epics的编译,但此种方案个性化程度不足。如:我们项目需要FPGA侧的配合,那么我们需要重新编译petalinx。 注意:本文的知识点来自下面两篇文章&#x…...
微服务架构详解
微服务架构的思想本质 我们为什么需要微服务架构,它一定是为了解决我们某些问题才出现了。这篇文章我们讨论下微服务架构模式所解决的问题,带来的挑战,以及他的核心思想本质。 1 早期的服务架构 上图是一个典型的服务分层架构:…...
error:0308010C:digital envelope routines::unsupported
npm run dev 报错: \node_modules\webpack\hot\dev-server.jsnode:internal/crypto/hash:71 this[kHandle] new _Hash(algorithm, xofLen); Error: error:0308010C:digital envelope routines::unsupported opensslErrorStack: [ error:03000086:digital env…...
Blender 初学者指南 以及模型格式怎么下载
glbxz.com glbxz.com 可以直接下载Blender格式模型 第 1 步:打开 这就是 blender 打开时的样子。 您面对的是左侧和右侧的工具栏,顶部是文件作,底部是时间轴,中间是 3D 视图。 Blender 的默认起始网格是一个立方体,…...
开个帖子记录一下自己学spring源码的过程
一、写在开头 简单记录下来时路,以后也能回头看看鼓励下自己。我以前不喜欢拍照,觉得没什么意思,有一天百度云盘给我推不知道什么时候从相册推到百度云相册的照片,那是我口罩时期在家上体育课的照片,我现在回头望过去…...
【coze】工作流(B站视频总结改写)
【coze】工作流(B站视频总结改写) 1.创建智能体2.工作流2.1 获取视频文案2.2 串联试运行2.3 二次创作(大模型)2.4 MD格式2.5 输出2.6 发布并调用 关于工作流: 简单业务, 如果智能体的逻辑比较简单…...