Linux服务 Nginx(二)

2023-10-30

Linux服务 Nginx(二)
    最权威的资料:官方文档http://nginx.org/en/docs/
    
    主配置段的指令:
        正常运行的必备配置;
            1.user USERNAME [GROUPNAME]    指定运行worker进程的用户和组;
                Syntax:    user user [group];
                Default:    user nobody nobody;
                Context:    main
            2.pid /path/to/pid_file        指定nginx守护进程的pid文件;
                Syntax:    pid file;
                Default:    pid logs/nginx.pid;
                Context:    main
            3.worker_rlimit_nofile #        指定所有worker进程多能够打开的最大文件句柄数;
                Syntax:    worker_rlimit_nofile number;
                Default:    —
                Context:    main
                linux系统中用户默认能打开的最大文件数为1024;对于任何一个服务器软件来讲,如果它要监听在某个套接字上,那么任何一个客户端来连接之后,它都会提供一个套接字文件来维持这个连接,linux就是靠这种特性来维持一切皆文件的思想;所以nginx要是同时支持一万个连接连进来,就要创建一万个套接字文件,所以我们要给运行woeker程序的用户身份赋予可以打开更多文件的权限;
        性能优化相关的配置;
            1.worker_processes #        所能够打开的worker进程的个数,通常应该少于CPU物理核心数,至少留一个核心给系统自己使用;支持自动设定;
                Syntax:    worker_processes number | auto;
                Default:    worker_processes 1;
                Context:    main
            2.worker_cpu_affinity cpumask    进行进程与cpu的绑定,可以提高缓存的命中率;但是无法避免context switch(进程的切换会产生CPU不必要消耗);    
                Syntax:    worker_cpu_affinity cpumask ...;
                        worker_cpu_affinity auto [cpumask];
                Default:    —
                Context:    main
            cpumask:
                比如有四个cpu可以这样表示:
                    0001
                    0010
                    0100
                    1000
                例子:
                    worker_processes    4;
                    worker_cpu_affinity 0001 0010 0100 1000;
                    
                    worker_processes    2;
                    worker_cpu_affinity 0101 1010;
                
            3.timer_resolution interval    减少worker进程中的计时器解析度,也就是减少gettimeofday()这个系统调用执行的次数;解析次数越多消耗cpu越多,精准度越高,解析次数越少,消耗cpu越少,精准度越低;
                Syntax:    timer_resolution interval;
                Default:    —
                Context:    main
            4.worker_priority number        指明worker进程优先级;通过设置nice值来调整优先级;
                Syntax:    worker_priority number;
                Default:    worker_priority 0;
                Context:    main
                    nice: -20  -  20,数字越小优先级越高;
        事件相关的配置;
            1.accept_mutex on|off    master调度用户请求至各worker进程时使用的负载均衡锁;on表示让多个worker轮流地去响应新请求;
                Syntax:    accept_mutex on | off;
                Default:    accept_mutex off;
                Context:    evens
            2.lock_file file    accept_mutex用到的锁文件路径;
                Syntax:    lock_file file;
                Default:    lock_file logs/nginx.lock;
                Context:    main
            3.use method    指定使用的事件模型,建议让nginx自动选择;
                method:selece,poll,kqueue,epoll,/dev/poll,eventpoll;
                Syntax:    use method;
                Default:    —
                Context:    events
            4.worker_connections number        单个worker所能够接受的做大并发连接数;
                Syntax:    worker_connections number;
                Default:    worker_connections 512;
                Context:    events
                总共的最大请求并发数=worker_connections * worker_processes    
        用于调试,定位问题的配置;    编译安装是需要开--with-debug,否则设置了这些选项也没用;
            1.daemon on|off        是否以守护进程的方式运行nginx;
                Syntax:    daemon on | off;
                Default:    daemon on;
                Context:    main
            2.master_process on|off    是否以master/worker模型来运行nginx;
                Syntax:    master_process on | off;
                Default:    master_process on;
                Context:    main
            3.error_log 位置 级别        指明错误日志的记录位置;
                    位置:file,stderr,syslog:server=address,memory:size.
                    级别:debug, info, notice, warn, error, crit, alert, or emerg.
                Syntax:    error_log file [level];
                Default:    error_log logs/error.log error;
                Context:    main, http, mail, stream, server, location
        Note:经常需要进程调整的参数:
            worker_processes,worker_connections,worker_cpu_affinity,worker_priority.
        nginx命令:
            -s [stop|quit|reopen|reload]:向nginx传递一个参数;
            
        Nginx作为web服务器时使用的配置;
            http {
            …
            }    :由ngx_http_core_module模块引入,可以实现静态的web服务器功能,就像httpd一样;
             配置框架:
                http {
                    upstream {
                        …
                    }
                    server {
                        location URL {
                            root “/path/to/somedir”;
                            …
                        }    :类似于httpd中的<Location>,用于定义URL与本地文件系统的映射关系;
                        location URL {
                            if … {
                                ...
                            }
                        …
                    }    :这里的server类似于httpd中的<VirtualHost>;
                    server {
                        …
                    }
                    
                Note:与http相关的指令,必须放在server{},location{},if{},upstream{}中,但有些指令只能应用于这五种上下文中的某些种;
            配置指令:
                1.server{}:定义一个虚拟主机;
                例子:
                 mkdir -pv /vhosts/web1
                vim /vhosts/web1/index.html
                    <h1>web1</h1>
                server {
                    listen 8080;
                    server_name www.guowei.com;
                    root "/vhosts/web1";
                }
                然后重启nginx服务,如果显示:nginx: [error] invalid PID number "" in "/var/run/nginx/nginx.pid"的话;执行nginx -c /etc/nginx/nginx.conf即可,次条命令是重新指定nginx的配置文件;
                netstat -nultp | grep 80
                tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN      2932/nginx          
                tcp        0      0 0.0.0.0:80                    0.0.0.0:*                   LISTEN      2932/nginx  
                浏览器键入:http://192.168.102.128:8080
                2.listen :指定监听的地址以及接口;
                    Syntax:    listen address[:port] ;
                            listen port ;
                            listen unix:path ;→指定其监听在unix的sock上,如果设置此项则客户端只能是本机;
                    Default:    listen *:80 | *:8000;
                    Context:    server
                    例子:
                        listen 0.0.0.0:80;
                        listen 8080;
                        listen unix:/var/run/nginx.sock;
                3.server_name name […] :指定主机名,后可跟多个主机名,名称还可以使用正则表达式(使用正则时用”~”开头)或通配符;
                    Syntax:    server_name name ...;
                    Default:    server_name "";
                    Context:    server
                    例子:
                        server {
                            server_name example.com *.example.com www.example.*;
                        }
                    当有多个server{}时,就会有多个server_name且其中有几个都符合匹配条件时,这时会按照一定的规则进行先后匹配:精确匹配(www.google.com)→ 左侧通配符匹配(*.google.com)→ 右侧通配符匹配(mail.*)→ 正则表达式匹配(~^.*\.google\.com$)→ 默认服务器(default_server).
                4.root path :设置资源路径映射关系,用于指明请求的URL所对应的资源所在的文件系统上的起始路径;
                    Syntax:    root path;
                    Default:    root html;
                    Context:    http, server, location, if in location
                5.location {} :允许根据用户请求的URI来匹配定义的各location;匹配到时,此请求将被相应的location配置块中的配置所处理,例如:做访问控制等功能;一个server{}中可以有多个location{};
                    Syntax:    location [ = | ~ | ~* | ^~ ] uri { ... }
                            location @name { ... }
                    Default:    —
                    Context:    server, location
                        = :精确匹配;
                        ~ :正则表达式模式匹配,区分字符大小写;
                        ~* :正则表达式模式匹配,不区分字符大小写;
                        ^~ :URI的前半部分匹配,不支持正则表达式;
                        匹配优先级:=→ ^~→ ~→ ~*→ 无特殊符号的路径;
                    例子:
                        server {
                            listen 80;
                            server_name www.guowei.com;
                            location / {
                                root “/vhosts/web1”;
                            }    :表示当访问www.guowei.com时,其实访问的是www.guowei.com/vhosts/web1/
                            location /images/ {
                                root “/vhosts/”;
                            }    :表示当访问www.guoei.com/images时,其实访问的是www.guowei.com/vhosts/images/
                            location ^~ /images/ {
                                [ configuration D ]
                            }
                            location ~* \.(gif|jpg|jpeg)$ {
                                [ configuration E ]
                            }
                        }    例子:当访问/images/1.gif时,就会优先匹配第三个;
                6.alias path :定义路径别名;
                    Syntax:    alias path;
                    Default:    —
                    Context:    location
                    Note:root表示指明路径为对应的location “/”URL也就是说location后面的路径是直接接在root路径后的;ailas表示路径映射,即location指令后定义的URL是相对alias所指明的路径而言,也就是直接使用alias后面的路径取代location后面的路径;注意:如果location中的路径以”/”结尾,则alias中的路径也要以”/”结尾;
                7.index file :  设置主页面格式;由ngx_http_index_module提供;
                    Syntax:    index file ...;
                    Default:    index index.html;
                    Context:    http, server, location
                8.error_page :根据http的响应状态码为其提供专门的信息提示页面(200,404等);
                    = :表示将一种响应状态码改变成另一种状态码
                    例子:error_page 404 =200 /empty.gif;   将404变成200,然后显示/empty.gif这个图片;
                    Syntax:    error_page code ... [=[response]] uri;
                    Default:    —
                    Context:    http, server, location, if in location
                9.基于IP的访问控制:由ngx_http_access_module提供;
                    allow
                        Syntax:    allow address | CIDR | unix: | all;
                        Default:    —
                        Context:    http, server, location, limit_except
                    deny
                        Syntax:    deny address | CIDR | unix: | all;
                        Default:    —
                        Context:    http, server, location, limit_except
                    例子:
                        location / {
                            deny  192.168.1.1;
                            allow 192.168.1.0/24;
                            allow 10.1.1.0/16;
                            allow 2001:0db8::/32;
                            deny  all;
                        }
                10.基于用户的访问控制:由ngx_http_auth_basic_module提供;
                    auth_basic string :展示一些提示信息;
                        Syntax:    auth_basic string | off;
                        Default:    auth_basic off;
                        Context:    http, server, location, limit_except
                    auth_basic_user_file file :提供帐号密码文件;
                        Syntax:    auth_basic_user_file file;
                        Default:    —
                        Context:    http, server, location, limit_except
                    Note:建议使用
                        例子:
                            location / {
                                    root "/vhosts/web1/";
                                 auth_basic "Only VIP do it!";
                                    auth_basic_user_file /etc/nginx/users/.htpasswd;
                               }
                            mkdir /etc/nginx/users
                            htpasswd -c -m /etc/nginx/users/.htpasswd guowei
                            浏览器键入:http://192.168.102.128:8080
                11.https服务: 由ngx_http_ssl_module提供;
                    生成私钥,生成证书签署请求,并获得证书;
                        server {
                            listen       443 ssl;
                            server_name  localhost;

                            ssl_certificate      cert.pem;  证书文件位置;
                            ssl_certificate_key  cert.key; 私钥文件位置;

                            ssl_session_cache    shared:SSL:1m;
                            ssl_session_timeout  5m;

                            ssl_ciphers  HIGH:!aNULL:!MD5;
                            ssl_prefer_server_ciphers  on;

                            location / {
                                root   html;
                                index  index.html index.htm;
                            }
                        }
                12.stub_status on|off: 状态页;
                    Syntax:    status;
                    Default:    —
                    Context:    location
                    例子:
                        location /status {
                                    stub_status on;
                                    allow 192.168.102.0/24;
                                    deny all;
                            }
                        浏览器键入:http://192.168.102.128:8080/status
                        Active connections: 2      活动连接数;
                        server accepts handled requests    
                         12 12 23     已经接受的连接    已经处理的连接    处理的请求
                        Note:在保持连接模式下,请求数量可能会多于连接数量;
                        Reading: 0 Writing: 1 Waiting: 1     
                        Reading:正处于接收状态的的连接数;
                        Writing: 请求已经接收完成,正处于处理请求或发送响应的过程中的连接数;
                        Waiting:保持连接模式,且处于活动状态的连接数;
                13.rewrite regex replacement [flag] :实现URL重写;
                    Syntax:    rewrite regex replacement [flag];
                    Default:    —
                    Context:    server, location, if
                    flag:
                        last :重新匹配被重写的URL;URL被重写后,浏览器会使用新的URL重新向服务器发起请求,这个新的URL还会经过rewrite匹配;所以编写rewrite时注意不要形成循环;
                        break :一旦URL重写后,不会再匹配本location中的任何其他规则;
                        redirect :以302响应码(临时重定向),返回新的URL; replacrmen为http://XXXXXX
                        permanent :以301响应码(永久重定向),返回新的URL;
                    例子:rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra  last;
                        http://www.guowei.com/download/audio/file → http://www.guowei.com/download/mp3/file.ra  
                14.if :条件判断;
                    Syntax:    if (condition) { ... }
                    Default:    —
                    Context:    server, location
                    condition:
                        1.变量名:如果变量值为空字符串或者为0,则为false,否则为true;
                        2.以变量为操作数,构成的比较表达式;
                            =,!=等;
                        3.正则表达式的模式匹配操作;
                            ~ :区分字符大小写的匹配检查;
                            ~* :不区分字符大小写的匹配检查;
                            !~和!~*:对上面两种规取反;
                        4.测试文件的存在性;
                            -f , !-f;
                        5.测试指定路径是否为目录;
                            -d , !-d;
                        6.测试文件的存在与否;
                            -e , !-e;
                        7.检查文件是否有执行权限;
                            -x , !-x;
                        例子:
                            if ($http_user_agent ~ MSIE) {
                                rewrite ^(.*)$ /msie/$1 break;
                            }
                                Note:MSIE为客户端的浏览器类型;
                            if ($http_cookie ~* "id=([^;]+)(?:;|$)") {
                                set $id $1;
                            }
                15.防盗链;
                    location ~* \.(jpg|gif|jpeg|png)& {
                        vaild_referer none blocked www.guowei.com;   指定授权网址;
                        if ($invalid_referer) {
                            rewrite ^/ http://www.guowei.com/403.html;
                        }
                    }
                16.定制访问日志格式:
                    Syntax:    log_format name [escape=default|json|none] string ...;
                    Default:    log_format combined "...";
                    Context:    http
                    例子:
                    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;
                    Note:此处可用变量为nginx各模块内置变量;
        网络连接相关的配置;
            1.keepalive_timeout number :长连接的超时时长;
            2.keepalive_requests number :在一个长连接上所能够允许请求的最大资源数;
            3.keepalive_disable [msie6|safari|none] :为指定类型的user_agent禁用长连接;
            4.tcp_nodelay on|off :
                tcp相对来说是一种开销比较大的连接类型,因为任何一个连接建立拆除,都要经过三次握手建立连接和四次挥手断开连接,如果我们要请求很多小的数据,那么我们付出的代价就会很大,有大量的资源被浪费掉,所以tcp在其拥塞避免算法中提供可一个机制:将小的数据合并成一个大的数据再发送;但是有的时候我们又不能等待这中延时,所以是否使用要根据情况确定,on表示不合并,off表示合并;
            5.client_header_timeout number :指定读取http请求报文首部的超时时长;
            6.client_body_timeout number :指定读取http请求报文的body部分的超时时长;
            7.send_timeout number :指定发送响应报文的超时时长;
            

            注:根据马哥视频做的学习笔记,如有错误,欢迎指正;侵删;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux服务 Nginx(二) 的相关文章

  • Linux内核如何阻止BIOS系统调用?

    BIOS 调用在 Linux 操作系统中不可用 我想知道内核如何阻止执行包含对 BIOS 子例程的调用的指令 The BIOS http en wikipedia org wiki Basic Input Output System主要在
  • Nginx - 重定向域名尾随点

    我怎样才能重定向 http domain com http domain com to http domain com http domain com 与 Nginx 推荐的方法是什么 正则表达式还是还有其他选择 以下代码片段以通用方式执行
  • Symfony 权限被拒绝

    谁能帮我解决我收到的以下错误消息 我终于在虚拟机上安装了 Symfony 它似乎工作正常 除了我偶尔收到这样的消息 1 2 ContextErrorException Warning SessionHandler read open var
  • WSL gprof 报告零次

    我正在尝试在 Windows 10 上的 WSL 中使用 gprof 我没有预料到会遇到任何困难 因为上次我在 Windows 7 上的 Ubuntu 虚拟盒中使用它时它工作得很好 与以前一样遵循来自https www thegeekstu
  • 如何从子进程为父进程设置环境变量?

    如何从子进程为父进程设置环境变量 例如 我有父进程和子进程 子进程继承自父进程环境变量 TMP VARIABLE 777 如何将子进程中 TMP VARIABLE 的值更改为 999 使其值对父进程可见 因为 TMP VARIABLE 99
  • 在linux中将数据“广播”到多个进程的规范方法?

    我有一个应用程序需要将数据流从一个进程发送到多个读取器 每个读取器都需要查看自己的流副本 这是相当高的速率 100MB s 并不罕见 因此我希望尽可能避免重复 在我的理想世界中 Linux 应该有支持多个读取器的命名管道 并为常见的单读取器
  • Linux 上共享内存的生命周期是多长

    我正在使用 ftok shmget shmat shmdt 函数在 Linux 上创建 写入和读取共享段 如果我写入一个程序中的段 然后退出 然后稍后从另一个程序中读取该段 我会惊讶地发现数据仍然存在 我预计当共享一个段的最后一个进程执行
  • 移动除一个文件之外的所有文件

    如何移动除一个文件之外的所有文件 我正在寻找类似的东西 mv Linux Old Tux png Linux New 我将旧的东西移动到新的东西文件夹中 除了Tux png 符号代表否定 有一些工具可以完成这项工作吗 如果您使用 bash
  • 我应该如何从非 root Debian Linux 守护进程登录?

    我正在编写一个新的守护进程 它将托管在 Debian Linux 上 我发现 var log 具有仅 root 写入权限 因此我的守护进程无法在那里写入日志文件 但是 如果它写入那里 它似乎将获得自动日志轮转 并且也按照用户期望的方式工作
  • 参数无效”设置键“net.core.somaxconn”

    我尝试设置Linux内核 编辑后 etc sysctl conf并执行sysctl p它显示错误 Invalid argument setting key net core somaxconn Linux 发行版 Ubuntu 12 04
  • Python select() 行为很奇怪

    我在理解 select select 的行为时遇到一些困难 请考虑以下 Python 程序 def str to hex s def dig n if n gt 9 return chr 65 10 n else return chr 48
  • c - 后台运行的程序的退出状态

    我有一个任务 其中我必须创建一个迷你 shell 它能够执行很多操作 包括作业控制 我设法使用 fork 和 execvp 创建新的工作 但我还想获取 execvp 运行的程序的退出代码 根据我从其他帖子中查找到的内容 我可以使用以下方法来
  • 当我执行 pip --version 时,它显示错误为 ImportError:没有名为 pyparsing 的模块

    我尝试安装 卸载py解析以及它不起作用 我被这个问题困住了 我还必须安装额外的库 这是错误消息 Traceback most recent call last File usr bin pip line 5 in
  • 使用 sysfs 的 Linux 用户空间 GPIO 中断

    我想使用 sysfs 在用户空间上使用 GPIO 中断 我使用这些命令 root at91 gpio109 gt echo 109 gt export root at91 gpio109 gt cd gpio109 root at91 gp
  • Zip 实用程序在 Linux 中每次都给我不同的 md5sum

    当我在 Linux 中压缩 Zip 2 31 同一个文件时 每次都会得到不同的校验和 如何保持上次的 md5sum 相同 我正在使用 yum 提供的最新 zip 更新 生成的存档不仅包含压缩文件数据 还包含 额外的文件属性 如参考zip 文
  • 如何在多行而不是单行输出上打印 Linux 组名称

    我尝试过 getent group 命令 id Gn user 和一些 sed 组合 但我认为我无法实现 因此向其他程序员伸出援手 我希望能够打印此 groups abc123输出 abc123 devops 构建测试设计 预期输出 gro
  • 无法声明接口:资源繁忙

    我正在使用 USB4Java 低级版本 并且基本上是根据这段代码工作的here http www mets blog com java usb communication usb4java 我在 Ubuntu 中工作 遇到了有关权限的问题
  • 如何安装 Node 和 NPM 以便不必使用 sudo?

    我正在尝试在 Ubuntu 14 04 计算机上设置 Node js 和 NPM 但遇到了一些问题 在我的第一次尝试中 我不断得到EACCES尝试安装软件包时出错 有时甚至使用sudo 所以我彻底卸载了node和npm 现在我正在尝试找出如
  • Linux 堆栈大小

    我正在寻找 Linux 内核中堆栈的良好描述 但我发现找到任何有用的东西出奇地困难 我知道大多数系统的堆栈限制为 4k 而其他系统则限制为 8k 我假设每个内核线程 下半部分都有自己的堆栈 我还听说 如果中断发生 它会使用当前线程的堆栈 但
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也

随机推荐

  • 电脑键盘指法的正确练习步骤

    电脑键盘指法的正确练习步骤 转载 http www jb51 net softjc 39858 html 如果您觉得不合适请联系QQ 2453419889 我会及时删除本博文 电脑键盘指法练习学习目的 一 正确的指法 二 熟悉字母位置 电脑
  • base64、utf-8、二进制有什么关系?

    一 引言 在开发过程中我们经常会用到GBK utf 8等编码规范 本文为大家介绍了他们的起源 差别以及应用 二 ASCII GBK Unicode Utf 8编码区别 1 文本编码的诞生背景 计算机只能处理数字 如果要处理文本文件就必须先把
  • React Native Map遍历问题

    code for let room of rooms values console log room error TypeError undefined is not a function evaluating iterator typeo
  • 【100%通过率 】【华为OD机试真题c++/java/python】开心消消乐【2022 Q4

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 给定一个N行M列的二维矩阵 矩阵中每个位置的数字取值为0或1 矩阵示例如 1100 0001 0011 1111 现需要将矩阵中所有的1进行反转
  • Linux线程学习(三):pthread常见线程函数

    在任何一个时间点上 线程是可结合的 joinable 或者是分离的 detached 一个可结合的线程能够被其他线程收回其资源和杀死 在被其他线程回收之前 它的存储器资源 例如栈 是不释放的 相反 一个分离的线程是不能被其他线程回收或杀死的
  • 如何使用FastReport .NET 从 JetBrains Rider 中创建PDF报告?

    Fastreport是目前世界上主流的图表控件 具有超高性价比 以更具成本优势的价格 便能提供功能齐全的报表解决方案 连续三年蝉联全球文档创建组件和库的 Top 50 Publishers 奖 FastReport NET官方版下载 qun
  • android开发系列:Android Studio项目添加依赖时下载的jar包在哪

    参考 参考 https blog csdn net wudinaniya article details 75258077 结论 c盘 用户 用户名 gradle caches modules 2 files 2 1
  • python模拟登录网站_Python模拟登录的几种方法

    目录 正文 方法一 直接使用已知的cookie访问 特点 简单 但需要先在浏览器登录 原理 简单地说 cookie保存在发起请求的客户端中 服务器利用cookie来区分不同的客户端 因为http是一种无状态的连接 当服务器一下子收到好几个请
  • 【error】Doubbo 服务启动异常:java.lang.RuntimeException: [source error] getPropertyValue,问题分析,解决方案

    目录 1 报错信息 2 原因分析 3 解决方案 4 提示 1 报错信息 java lang RuntimeException source error getPropertyValue Ljava lang Object Ljava lan
  • R语言—向量

    向量 vector R 语言最基本的数据结构是向量 类似于数学上的集合的概念 由一个或多个元素构成 向量其实是用于存储数值型 字符型 或逻辑型数据的一维数组 创建向量 c 函数 gt a lt 1 给a赋值1 gt a 显示a的值 1 1
  • 解密企业级PPPoE:部署、配置和管理的最佳实践

    亲爱的读者朋友们 今天 我将带你一起探索企业级PPPoE 这个让你畅快玩转互联网的神奇协议 首先 让我们来了解一下什么是PPPoE 它代表着 点对点协议以太网 是一种强大而灵活的网络连接协议 对于企业来说 部署PPPoE意味着你可以轻松实现
  • Java实现实现简单算法之最长对称字符串

    题目 已知一字符串 求其内包含的最长对称字符串 例 已知字符串 google 输出最长对称字符串 goog 已知abada 输出aba 已知sdghjdgzzgdah 输出 dgzzgd 看到题目时 大家第一反应都是模棱两可的 好像可以这样
  • Selenium+Python3之:多线程进行跨浏览器测试

    python多线程跨浏览器测试 1 引言 2 跨浏览器操作及定义 2 1 啥是跨浏览器测试 2 2 为啥要进行跨浏览器测试 2 3 跨浏览器测试执行 3 代码编写实战 1 引言 在WebUI自动化方面的博文 我也是有好一段时间没有更新了 这
  • 什么是期货交易的技术分析(期货交易市场技术分析)

    什么是期货买卖的本领领会 拓展材料 1 期货本领领会规则 期货本领领会的规则是伴随趋向 期货本领领会的表面普通 期货本领领会的表面普通是创造在三个有理的假如之上的 商场动作具备容纳性和容纳性 价钱以一种趋向的办法兴盛 汗青将重演 在这三个假
  • 如何利用Python爬虫在网上接单,一周赚7800元,一天只要两小时 !

    1 兼职处理数据 互联网时代下 越来越多的人离不开电脑办公 而与电脑办公分隔不开的 就是处理电脑上保存的数据 虽然说Excel整理数据功能很强大 但在Python面前 曾经统治职场的它也得败下阵来 因为Python在搜集整理分析数据的过程中
  • ConstraintLayout 高级特性,工具总结

    layout constraintWidth 用法 xml中 app layout constrainedWidth true 作用 使得该view的宽受限于他的约束 app layout constrainedHeight true 同理
  • ChatGPT专业应用:基于关键词撰写原创文章

    正文共 485 字 阅读大约需要 2 分钟 内容运营 SEO投放必备技巧 您将在2分钟后获得以下超能力 基于关键词撰写原创文章 Beezy评级 B级 经过简单的寻找 大部分人能立刻掌握 主要节省时间 推荐人 Kim 编辑者 Linda 此图
  • QT CREATOR 插件开发:添加新的工程类型(上)

    Qt Creator 中 新的工程类型将出现在 文件 gt 新建 菜单项中 我们可以通过打开的选择工程类型的对话框来找到所需要的工程 在本章中 我们将学习如何向上面所示的对话框中添加新的工程类型 Core IWizard接口 Qt Crea
  • 基于富芮坤fr8016 蓝牙5.0 芯片设计的BLE HID Joystick 游戏摇杆设备

    文章目录 ble hid 学习笔记 HID报告描述符与BLE HID profile之间关系 1 HID报告描述符 富芮坤fr8016 设计Joystick例子 1 描述X轴Y轴Z轴 2 描述按钮 3 Joystick 报告描述符 4 程序
  • Linux服务 Nginx(二)

    Linux服务 Nginx 二 最权威的资料 官方文档http nginx org en docs 主配置段的指令 正常运行的必备配置 1 user USERNAME GROUPNAME 指定运行worker进程的用户和组 Syntax u