CHAPTER 2 Web Server - apache(httpd)
Web Server - httpd
- 2.1 http
- 2.1.1 协议版本
- 2.1.2 http报文
- 2.1.3 web资源(web resource)
- 2.1.4 一次完整的http请求处理过程
- 2.1.5 接收请求的模型
- 2.2 httpd配置
- 2.2.1 MPM(多进程处理模块)
- 1. 工作模式
- 2. 切换MPM
- 3. MPM参数配置
- 2.2.2 主配置文件
- 1. 基本配置
- 2. 站点访问控制常见机制:
- 3. 命令解析
- 3.1 Options
- 3.2 AllowOverride
- 3.3 Order
- 3.4 DirectoryIndex
- 3.5 Alias
- 3.6 AddDefaultCharset
- 3.7 日志设定
- 4. 配置示例
- 4.1 控制页面资源允许所有来源的主机可访问:
- 4.2 控制页面资源不允许所有来源的主机可访问:
- 4.3 控制页面资源允许部分来源的主机可访问:
在介绍apache(httpd)配置之前,我们先介绍下http
2.1 http
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。
http、httpd和html概念
http/https:hyper text transfer protocol 超文本传输协议,位于传输层,默认端口80/tcp
html:hyper text mark language 超文本标记语言
httpd:c/s架构(client/server),httpd通过http协议通信
并不准确的表达:web服务器通过httpd服务程序,通过http协议,响应给用户html文件。而用户通过浏览器(大多数情况下),向web服务器发送http请求,获取html文件
web服务是一个C/S架构,服务端提供服务,客户端通过http协议或https协议进行访问,拿到服务端对应的资源,这就是web服务;
2.1.1 协议版本
http/0.9 原型版本,功能简陋
http/1.0 引入cache,MIME,method
MIME
:Multipurpose Internet Mail Extesion(多用途互联网邮件扩展,可引入图片,声音等,对不同资源进行编码)``
method:GET,POST,HEAD,PUT,DELETE,TRACE,OPTIONS
http/1.1 增强了缓存功能;主流版本
----谷歌的SPDY方案----
http/2.0 借鉴了spdy,性能提升,可通过RFC了解
详细介绍
2.1.2 http报文
http请求报文:http request
http响应报文:http response
一次http事务:请求<->响应
请求报文首部格式:
<method><URL><VERSION>HEADERS:{name:value}<request body>
2.1.3 web资源(web resource)
静态资源:.jpg,.png,.gif,.html,.avi… 服务器段无需额外处理
动态资源:.php,.jsp… 服务器需要通过执行程序作出处理,发送给客户端的程序运行结果
注意:一个页面中展示的资源有多个;每个资源需要单独请求
URL
: uniform resource locator,统一资源定位符,资源的标识机制,用于描述服务器某特定资源位置
格式:
Scheme://server[:port][path/to/source]
示例:
http://www.sina.com.cn:80/index.html
大部分网站的默认端口都是80,可以省略
2.1.4 一次完整的http请求处理过程
1.建立或处理连接:接收或拒绝请求
2.接收请求:接收来自网络上的主机请求报文中对某特定资源的一次请求的过程;
3.处理请求:对请求报文进行解析,获取客户段请求的资源及请求方法等相关信息;
4.访问资源:获取请求报文中请求的资源;一般到本地磁盘 DocumentRoot
5.构建响应报文
6.发送响应报文
7.记录日志;分析用户访问行为
2.1.5 接收请求的模型
并发访问响应模型:
- 单进程I/O模型:启动一个进程处理用户请求;一次只能处理一个请求,多个请求被串行响应
- 多进程I/O模型:由父进程并行启动多个子进程,每个子进程响应一个请求
- 复用的I/O模型:一个进程响应n个请求;
多线程模式:一个进程生成n个线程,一个线程处理一个请求;(处理能力有限,一个进程内的线程共享资源,当一个线程在处理文件,其他线程等待)
事件驱动(event-driver):一个进程直接处理n个请求
复用的多进程I/O结构:启动多个进程m,每个进程生成n个线程;响应请求数量:m*n
2.2 httpd配置
2.2.1 MPM(多进程处理模块)
前文中提到了httpd的特性,在本节中,将更详细的阐述。在众多特性中,较突出的有三个:
高度模块化:core + modules
DSO:dynamic shared object 模块的动态装/卸载机制
MPM:Multi processing Modules 多进程处理模块,2.4也为动态可装卸
1. 工作模式
MPM定义了httpd的工作模式,包括三种模式:
- prefork(非线程型)
多进程模型,每个进程响应一个请求;两级模型
一个主进程:负责生成子进程及回收子进程;负责创建套结字;负责接收请求,并将其派发给某子进程处理n个子进程:每个子进程处理一个请求
工作模式:会预先生成几个空闲进程,随时等待用于响应用户请求,最大空闲和最小空闲;
(1) 主要工做方式:当Apache服务器启动后,mpm_prefork模块会预先建立多个子进程(默认为5个),每一个子进程只有一个线程,当接收到客户端的请求后,mpm_prefork模块再将请求转交给子进程处理,而且每一个子进程同时只能用于处理单个请求。若是当前的请求数将超过预先建立的子进程数时,mpm_prefork模块就会建立新的子进程来处理额外的请求。Apache老是试图保持一些备用的或者是空闲的子进程用于迎接即将到来的请求,这样客户端的请求就不须要在接收后等候子进程的产生。
(2) prefork在效率上要比worker要高,可是内存使用太多,不擅长处理高并发的场景高并发
-
worker(多线程多进程)
多进程多线程模型,每个线程处理一个用户请求,三级模型
a) 一个主进程:负责生成子进程;负责创建套结字;负责处理请求,并将其派发给某子进程进行处理;
b) 多个子进程:每个子进程负责生成多个线程
c) 每个线程:负责响应用户请求并发响应数量:m*n m:子进程数量 n:每个子进程所能创建的最大线程数量
与prefork的比较:prefork速度要稍高于worker,然而它须要的CPU和memory资源也稍多于worker
- event
事件驱动模型,多进程模型,每个进程响应多个请求;2.4生产环境可用,两级模型
a) 一个主进程:负责生成子进程;负责创建套结字;负责接收请求,并将其派发给某子进程进行处理
b) 多个子进程:基于事件驱动机制直接响应多个请求
2. 切换MPM
如果是yum安装的httpd,可以通过修改配置文件/etc/httpd/conf.modules.d/00-mpm.conf
进行切换
编译安装的需要修改/usr/local/apache/conf/httpd.conf
文件中的
[root@k8s-node-02 apache]# cat conf/httpd.conf |grep mpm
#LoadModule mpm_event_module modules/mod_mpm_event.so
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule mpm_worker_module modules/mod_mpm_worker.so
使用哪个工作模式,则取消注释哪个,修改完成后,需要重新启动httpd
通过httpd -M
可以查看已启动的模块
[root@k8s-node-02 apache]# httpd -M
Loaded Modules:core_module (static)so_module (static)http_module (static)mpm_worker_module (shared)authn_file_module (shared)authn_core_module (shared)authz_host_module (shared)authz_groupfile_module (shared)authz_user_module (shared)authz_core_module (shared)access_compat_module (shared)auth_basic_module (shared)reqtimeout_module (shared)filter_module (shared)mime_module (shared)log_config_module (shared)env_module (shared)headers_module (shared)setenvif_module (shared)version_module (shared)unixd_module (shared)status_module (shared)autoindex_module (shared)dir_module (shared)alias_module (shared)
httpd -M
显示为shared,例如:编辑/etc/httpd/conf.modules.d/00-proxy.conf,注释某个模块,重启服务,实现卸载,模块在:/usr/lib64/httpd/modules/
,第三方模块,后续也配置在此处,使用loadmodule
加载
查看Apache加载的模块:httpd -M 或 apachectl -t -D DUMP_MODULES 或 apachectl -M 或 apachectl -l
查看Apache的工做模式:httpd -v 或 httpd -l
3. MPM参数配置
httpd 2.2版本配置文件httpd.conf
,2.4大同小异。编译安装和yum安装的配置文件路径,可能略有不同,编译安装的配置文件在/usr/local/apache/conf/extra/httpd-mpm.conf
- prefork配置:
<IfModule mpm_prefork_module>StartServers 5MinSpareServers 5MaxSpareServers 10MaxRequestWorkers 250MaxConnectionsPerChild 0
</IfModule>
字段 | 字段含义 |
---|---|
StartServers 5 | httpd服务启动后,创建多少个空闲子进程 |
MinSpareServers 5 | 最少空闲子进程 |
MaxSpareServers 10 | 最大空闲子进程 |
MaxRequestWorkers 250 | 设置了容许同时最大接入的请求数量,任何超过MaxRequestWorkers限制的请求将进入等候队列 |
MaxConnectionsPerChild 0 | 设置的是每一个子进程可处理的请求数。每一个进程在处理了“MaxConnectionsPerChild”请求后将自动销毁。0意味着无限,即子进程永不销毁。设置为1时可防止意外的内存泄漏。设置为2时表示在服务器负载降低的时候会自动减小子进程数。可根据服务器的负载来调整此值 |
ServerLimit 256 | 为生命周期内,最多允许子进程数 |
MaxClients 256 | 最多可创建的子进程数,数值同serverlimit |
MaxRequestPerchild 4000 | 每个子进程最多允许处理4000个请求,之后关闭该进程 |
注:
① MaxRequestWorkers是这些指令中最为重要的一个,设定的是Apache能够同时处理的请求,是对Apache性能影响最大的参数。若是请求总数已经达到这个值(经过ps -ef | grep http | wc -l来确认)那么后面的请求就要排队,直到某个已处理请求完毕。这就是系统资源还剩下不少而http访问却很慢的主要缘由。虽然理论上这个值越大,能够处理的请求就越多,建议将初始值设为以MB为单位的最大物理内存/2,而后根据负载状况进行动态调整。
② prefork控制进程在最初创建“StartServers”子进程后,为了满足MinSpareServers设置的须要建立一个进程,等待一秒钟,继续建立两个,再等待一秒钟,继续建立四个…如此按指数级增长建立的进程数,最多达到每秒32个,直到知足MinSpareServers设置的值为止,这种模式能够没必要在请求到来时再产生新的进程,从而减少了系统开销以增长性能。MaxSpareServers设置了最大的空闲进程数,若是空闲进程数大于这个值,Apache会kill掉一些多余的进程,这个值不要设的过大,但若是设的值比MinSpareServers小,Apache会自动把其调整为MinSpareServers+1。若是站点负载较大,可考虑同时加大MinSpareServers和MaxSpareServers。
③ ServerLimit和MaxClients(MaxRequestWorkers)的区别:在Apache时代,控制最大进程数只有MaxClients这个参数,而且这个参数最大值为256,而且是写死了的,试图设置为超过256是无效的,这是因为Apache1时代的服务器硬件是限制的。可是Apache2时代因为服务器硬件的升级,硬件已经再也不是限制,因此ServerLimit这个参数来控制最大进程数,ServerLimit值>=MaxClient值才有效。ServerLimit要放在MaxClients以前,值不要小于Maxclients。
- worker配置:
<IfModule mpm_worker_module>StartServers 3MinSpareThreads 75MaxSpareThreads 250ThreadsPerChild 25MaxRequestWorkers 400MaxConnectionsPerChild 0
</IfModule>
字段 | 字段含义 |
---|---|
StartServers 4 | httpd服务启动后,创建多少个空闲子进程 |
MaxClients 300 | 最多可创建的线程数,数值同serverlimit |
MinSpareThreads 75 | 最小空闲数量的工作线程 |
MaxSpareThreads 250 | 最大空闲数量的工作线程 |
ThreadPerChild 25 | 每一个子进程产生的线程数量 |
MaxRequestWorkers 400 | MaxRequestWorkers设置了容许同时最大接入的请求数量,任何超过MaxRequestWorkers限制的请求将进入等候队列 |
MaxRequestsPerChild 0 | 无限制 |
注:
① Worker由主控制进程生成“StartServers”子进程,每一个子进程中包含固定的ThreadsPerChild线程数,各个线程独立地处理请求。一样,为了避免在请求到来时再生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数。而MaxRequestWorkers设置了同时连入的clients最大总数,若是现有子进程中的线程总数不能知足负载,控制进程将派生新的子进程。MinSpareThreads和MaxSpareThreads的最大缺省值分别是75和250.这两个参数对Apache的性能影响并不大,能够按照实际状况相应调节
② ThreadsPerChild是worker MPM 中与性能相关最密切的指令,ThreadsPerChild的最大缺省值是64,若是负载较大,64位也是不够的,这时要使用ThreadLimit指令,他的最大缺省值是20000
③ Worker模式下所能同时处理的请求总数是由子进程总数乘以ThreadsPerChild值决定的,应该大于等于MaxRequestWorkers。若是负载很大,现有的子进程数不能知足时,控制进程会派生新的子进程。默认最大的子进程总数是16,加大时也须要显示声明ServerLimit。须要注意的是,若是显示声明了ServerLimit,那么它乘以ThreadsPerChild的值必须大于等于MaxRequestWorkers,并且MaxRequestWorkers必须是ThreadsPerChild的整数倍,不然Apache将会自动调节到一个相应值。
④ 进程与线程的区别(线程是指进程内的一个执行单元,也是进程内的可调度实体)
a、地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有本身独立的地址空间
b、资源拥有:进程是资源分配和拥有的单位,同一进程内的线程共享进程的资源
c、线程是处理器调度的基本单位,但进程不是
d、两者都可并发执行:进程和线程都是由操做 系统所体会的程序运行的基本单元, 系统利用该基本单元实现系统对应用的并发性
e、简单来讲,就是一个程序至少有一个进程,一个进程至少有一个线程。线程的划分尺度小于进程,使得多线程程序的并发性高。进程在执行过程当中拥有独立的内存单元,而多个线程共享内存,从而极大地提升了程序的运行效率
- event模式
<IfModule mpm_event_module>StartServers 3MinSpareThreads 75MaxSpareThreads 250ThreadsPerChild 25MaxRequestWorkers 400MaxConnectionsPerChild 0
</IfModule>
这是Apache最新的工做模式,是worker模式的变种,它把服务进程从链接中分离出来。和worker模式不一样的是在于它解决了keep-alive长链接的时候占用线程资源被浪费的问题。在event工做模式中,会有一些专门的线程用来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务器的线程,执行完毕后,又容许它释放。这加强了在高并发场景下的请求处理。event模式不能很好的支持https的访问。
2.2.2 主配置文件
编译安装主配置文件:/usr/local/apache/conf/httpd.conf
yum安装:/etc/httpd/conf/httpd.conf
1. 基本配置
ServerRoot "/usr/local/apache" #你的apache软件安装的位置。其它指定的目录如果没有指定绝对路径,则目录是相对于该目录。
PidFile logs/httpd.pid #第一个httpd进程(所有其他进程的父进程)的进程号文件位置。
Listen 80 #服务器监听的端口号。
ServerName localhost:80 #主站点名称(网站的主机名)。
ServerAdmin admin@clusting.com #管理员的邮件地址。
DocumentRoot "/usr/local/apache/htdocs" #主站点的网页存储位置。
2. 站点访问控制常见机制:
文件系统路径模板:
<Dierctroy "">...</Directroy><FIle "">...</File><FIleMatch "PATTERN">...</FileMatch>
例如:
<Directory "/mnt/web/clusting"> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>
URL路径:
<Location "">...</Location><LocationMatch "PATTERN">...</LocationMatch>
3. 命令解析
3.1 Options
配置在特定目录使用哪些特性,常用的值和基本含义如下:
ExecCGI: 在该目录下允许执行CGI脚本。FollowSymLinks: 在该目录下允许文件系统使用符号连接。Indexes: 当用户访问该目录时,如果用户找不到DirectoryIndex指定的主页文件(例如index.html),则返回该目录下的文件列表给用户。允许索引 -Indexes强制关掉功能,防止上级目录共享SymLinksIfOwnerMatch: 当使用符号连接时,只有当符号连接的文件拥有者与实际文件的拥有者相同时才可以访问。All:启用除了MultiViews的所有选项
3.2 AllowOverride
允许存在于.htaccess文件中的指令类型(.htaccess文件名是可以改变的,其文件名由AccessFileName指令决定):
None: 当AllowOverride被设置为None时。不搜索该目录下的.htaccess文件(可以减小服务器开销)。All: 在.htaccess文件中可以使用所有的指令。
3.3 Order
控制在访问时Allow和Deny两个访问规则哪个优先:
Allow:允许访问的主机列表(可用域名或子网,例如:Allow from 192.168.0.0/16)。Deny:拒绝访问的主机列表。
3.4 DirectoryIndex
DirectoryIndex index.html index.html.var 目录索引
3.5 Alias
定义路径别名
#格式:Alias /URL/ "/PATH/TO/SOMEDIR/"Alias /images/ "/usr/share/background/"#加显示授权:<DIrectory "/usr/share/background/>AllowOverride NoneOptions Indexes FollowSymLinksRequire all granted<Directory>
3.6 AddDefaultCharset
设定默认字符集
AddDefaultCharset UTF-8
3.7 日志设定
日志类型: 访问日志和错误日志
① 错误日志:
Errorlog /logs/error_log 符号连接,指向/var/log/httpd/error_log
loglevel warn
② 访问日志:
LogFormat "%h %l %u %t ...." combined 日志格式
LogFormat "%h %l %u %t ...." common 日志格式%h:客户端IP地址
%l:Remote User,通常为一个减号
%u:非为登陆访问时,通常为一个减号
%t:服务器收到请求时的时间
%r:first line of request,表示请求报文首行,记录了此次请求的方法,url及协议版本
%>s:响应状态码
%b:响应报文大小,单位字节
%{Referer}:请求报文中首部"referer"的值,即从哪个页面中的超连结调转至当前页面
%{User-Agent}:请求报文中首部“User-Agent"的值,即发出请求的程序,浏览器版本
4. 配置示例
Direcotry中基于源地址实现访问控制:
4.1 控制页面资源允许所有来源的主机可访问:
http2.2
Order定义生效次序;写在后面的表示默认法则
Order,allow,deny
<Dierctroy "">Order allow,denyAllow from all所有人访问</Directroy>
http-2.4
Require<Dierctroy "">Require all granted,允许所有人访问</Directroy>
4.2 控制页面资源不允许所有来源的主机可访问:
http2.2
Order,allow,deny<Dierctroy "">Order allow,denyDeny from all所有人访问</Directroy>
http-2.4
Require<Dierctroy "">Require all denied,允许所有人访问</Directroy>
4.3 控制页面资源允许部分来源的主机可访问:
http2.2
allow from *
deny from *
来源地址:IP,NetAddr:
172.16
172.16.0.0
172.16.0.0/16
172.16.0.0/255.255.255.0
<Dierctroy "">Order allow,denyDeny from 172.16.0.200 拒绝200访问Allow from 172.16,除了16网段的都拒绝访问</Directroy>
http-2.4
基于IP控制
<RequireAll>Require all granted允许所有人访问Require not ip 192.15..,IP地址或网络地址拒绝;<RequireAll>
基于机器名控制:
Require host mageedu,主机名或域名;Require not host mageedeu,主机名或域名;
注意要以上放规则,要置于或配置块中
<RequireAll >Require all denied,拒绝所有人访问Require ip 192.15.,IP地址或网络地址;</ RequireAll >
相关文章:
CHAPTER 2 Web Server - apache(httpd)
Web Server - httpd2.1 http2.1.1 协议版本2.1.2 http报文2.1.3 web资源(web resource)2.1.4 一次完整的http请求处理过程2.1.5 接收请求的模型2.2 httpd配置2.2.1 MPM(多进程处理模块)1. 工作模式2. 切换MPM3. MPM参数配置2.2.2 主配置文件1. 基本配置2. 站点访问控制常见机制…...

【Vagrant】下载安装与基本操作
文章目录概述软件安装安装VirtualBox安装Vagrant配置环境用Vagrant创建一个VMVagrantfile文件配置常用命令概述 Vagrant是一个创建虚拟机的技术,是用来创建和管理虚拟机的工具,本身自己并不能创建管理虚拟机。创建和管理虚拟机必须依赖于其他的虚拟化技…...

常用类(五)System类
(1)System类常见方法和案例: (1)exit:退出当前程序 我们设计的代码如下所示: package com.ypl.System_;public class System_ {public static void main(String[] args) {//exit: 退出当前程序System.out.println("ok1"…...

Navicat Premium 安装 注册
Navicat Premium 一.Navicat Premium的安装 1.暂时关闭windows的病毒与威胁防护弄完再开,之后安装打开过程中弹窗所有警告全部允许,不然会被拦住 2.下载安装包,解压 链接:https://pan.baidu.com/s/1X24VPC4xq586YdsnasE5JA?pwdu4vi 提取码…...

回溯算法总结
首先回溯算法本身还是一个纯暴力的算法,只是回溯过程可能比较抽象,导致大家总是感觉看到的相关题目做的不是很顺畅,回溯算法一般来说解决的题目有以下几类:组合问题:lq77、lq17、lq39、lq40、lq216、切割问题ÿ…...

ccc-pytorch-基础操作(2)
文章目录1.类型判断isinstance2.Dimension实例3.Tensor常用操作4.索引和切片5.Tensor维度变换6.Broadcast自动扩展7.合并与分割8.基本运算9.统计属性10.高阶OP大伙都这么聪明,注释就只写最关键的咯1.类型判断isinstance 常见类型如下: a torch.randn(…...

独居老人一键式报警器
盾王居家养老一键式报警系统,居家养老一键式报警设备 ,一键通紧急呼救设备,一键通紧急呼救系统,一键通紧急呼救器 ,一键通紧急呼救终端,一键通紧急呼救主机终端产品简介: 老人呼叫系统主要应用于…...

软考案例分析题精选
试题一:阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。某公司中标了一个软件开发项目,项目经理根据以往的经验估算了开发过程中各项任务需要的工期及预算成本,如下表所示:任务紧前任务工期PV…...

基于SpringBoot+vue的无偿献血后台管理系统
基于SpringBootvue的无偿献血后台管理系统 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背…...

详解js在事件中,如何传递复杂数据类型(数组,对象,函数)
文章目录 前言一、何谓预编译,变量提升?二、复杂数据类型的传递 1.数组2.对象3.函数总结前言 在JavaScript这门编程语言学习中,如何传参,什么是变量提升,js代码预编译等等。要想成为一名优秀的js高手,这些内…...

高并发架构 第一章大型网站数据演化——核心解释与说明。大型网站技术架构——核心原理与案例分析
大型网站架构烟花发展历程1.1.1初始阶段的网站构架1.1.2应用服务和数据服务分离1.1.3使用缓存改善网络性能1.1.4使用应用服务器集群改善网站的并发处理能力1.1.5数据库读写分离1.1.6使用反向代理和cdn加速网站相应1.1.1初始阶段的网站构架 大型网站都是由小型网站一步步发展而…...
VPP接口INPUT节点运行数据
在设置virtio接口接收/发送队列函数的最后,更新接口的运行数据。 void virtio_vring_set_rx_queues (vlib_main_t *vm, virtio_if_t *vif) { ...vnet_hw_if_update_runtime_data (vnm, vif->hw_if_index); } void virtio_vring_set_tx_queues (vlib_main_t *vm,…...

RabbitMQ学习(九):延迟队列
一、延迟队列概念延时队列中,队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望 在指定时间到了以后或之前取出和处理。简单来说,延时队列就是用来存放需要在指定时间内被处理的 元素的队列。其实延迟…...

TCP并发服务器(多进程与多线程)
欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 TCP并发服务器(多进程与多线程)1. 多进程并发服务器(1)…...
第1章 Memcached 教程
Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。 Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素…...

【2022.12.9】Lammps+Python 在计算g6(r)时遇到的问题
目录写在前面绘制g6( r )执行步骤【updated】如何检查图像的正确性:不是编程问题,而是数学问题的一个小bug废稿2则:写在前面 全部log: 【2022.11.16】LammpsPythonMATLAB在绘制维诺图时遇到的问题 绘制g6( r )执行步骤【updated…...

MySQL使用C语言连接
文章目录MySQL使用C语言连接引入库下载库文件在项目中使用库使用库连接数据库下发SQL请求获取查询结果MySQL使用C语言连接 引入库 要使用C语言连接MySQL,需要使用MySQL官网提供的库。 下载库文件 下载库文件 首先,进入MySQL官网,选择DEVEL…...

JavaScript随手笔记---比较两个数组差异
💌 所属专栏:【JavaScript随手笔记】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &#…...

【C++修炼之路】21.红黑树封装map和set
每一个不曾起舞的日子都是对生命的辜负 红黑树封装map和set前言一.改良红黑树的数据域结构1.1 改良后的结点1.2 改良后的类二. 封装的set和map2.1 set.h2.2 map.h三. 迭代器3.1 迭代器封装3.2 const迭代器四.完整代码实现4.1 RBTree.h4.2 set.h4.3 map.h4.4 Test.cpp前言 上一节…...
下载ojdbc14.jar的10.2.0.1.0版本的包
一、首先要有ojdbc14.jar包 没有的可以去下载一个,我的是从这里下载的ojdbc14.jar下载_ojdbc14.jar最新版下载[驱动包软件]-下载之家, 就是无奈关注了一个公众号,有的就不用下了。 二、找到maven的本地仓库的地址 我的地址在这里D:\apach…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

热烈祝贺埃文科技正式加入可信数据空间发展联盟
2025年4月29日,在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上,可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞,强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...

[拓扑优化] 1.概述
常见的拓扑优化方法有:均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有:有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...

【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架
文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理:检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目:RankRAG:Unifying Context Ranking…...