当前位置: 首页 > 编程日记 > 正文

ATS程序功能和使用方法详解

转载自https://blog.zymlinux.net/index.php/archives/374

Apache Traffic Server的程序文件,与传统的服务器系统有大不同,这里我们将会对这些文件进行详细的解读,并尽可能的对程序的功能和基本用法、参数等进一步说明,以利于新入门的同学们快速上手。

本文中,我们以Fedora系统的安装结构进行解释,其他系统请参考《ATS安装大全》中介绍的路径做(闹补)变换。

ATS程序综述

ATS是一个服务器系统,相比多数服务器设计的单一程序设计,ATS设计的较为复杂,主要服务器程序可以分为:

· 代理服务器 代理服务器是ATS业务服务器,负载http代理和缓存职能

· 管理服务器 管理服务器包括两部分,分别是server系统管理和服务器控制

· 独立日志服务器 专用的日志收集、中转服务器

另外ATS还附带了其他工具程序:

· 日志查看、分析工具

· 系统配置管理工具

· 模块开发配套工具

· 性能测试工具

典型的ATS安装会包括如下程序,我们将会按照上述的分类对他们进行介绍:

traffic_cop

traffic_line

traffic_logcat

traffic_logstats

traffic_manager

traffic_sac

traffic_server

traffic_shell

trafficserver

tstop

tsxs

ATS主要服务器程序

traffic_server traffic_manager traffic_cop traffic_sacATS的主要服务器程序,是我们日常最常用到的服务器,我们将对他们的功能和使用进行详解的讲解

代理服务器 traffic_server

traffic_serverATS的业务处理服务器,也是最ATS中最复杂的主程序,这个程序可以单独运行,也可以在traffic_manager管理下运行,主要包括服务器、回归测试、初始化cache系统三大功能块,默认功能是服务器。下面是traffic_server可以接受的命令行参数:

Usage: ./traffic_server [--SWITCH [ARG]]

  switch__________________type__default___description

  -l, --lock_memory       int   0         Lock process in memory (must be root)

  -n, --net_threads       int   8         Number of Net Threads

  -Z, --cluster_threads   int   1         Number of Cluster Threads

  -U, --udp_threads       int   0         Number of UDP Threads

  -a, --accept_thread     tog   false     Use an Accept Thread

  -b, --accept_till_done  tog   true      Accept Till Done

  -p, --httpport          str   (null)    Port descriptor for HTTP Accept

  -P, --cluster_port      int   0         Cluster Port Number

  -o, --dprintf_level     int   0         Debug output level

  -V, --version           tog   false     Print Version String

  -R, --regression        int   0         Regression Level (quick:1..long:3)

  -r, --regression_test   str   (null)    Run Specific Regression Test

  -T, --debug_tags        str   (null)    Vertical-bar-separated Debug Tags

  -B, --action_tags       str   (null)    Vertical-bar-separated Behavior Tags

  -i, --interval          int   0         Statistics Interval

  -M, --remote_management tog   false     Remote Management

  -d, --management_dir    str   /opt/at.. Management Directory

  -C, --command           str   (null)    Maintenance Command to Execute

  -k, --clear_hostdb      on    false     Clear HostDB on Startup

  -K, --clear_cache       on    false     Clear Cache on Startup

  -v, --vingid            str   (null)    Vingid Flag

  - , --accept_mss        int   0         MSS for client connections

  -t, --poll_timeout      int   10        poll timeout in milliseconds

  -h, --help                              HELP!

服务器功能:

服务器功能是 traffic_server 默认的功能,即不用任何参数运行 traffic_server 即启动代理/缓存服务器功能。当然,默认的服务器模式有诸多限制,这也是为什么ATS设计了管理服务器的专用程序的原因。我们先介绍ATS的服务器功能,后续的配合在管理服务器阶段介绍。

下面所有这些参数都是 traffic_server 的服务器功能参数:

 -l, --lock_memory       int   0         Lock process in memory (must be root)

  -n, --net_threads       int   8         Number of Net Threads

  -Z, --cluster_threads   int   1         Number of Cluster Threads

  -U, --udp_threads       int   0         Number of UDP Threads

  -a, --accept_thread     tog   false     Use an Accept Thread

  -b, --accept_till_done  tog   true      Accept Till Done

  -p, --httpport          str   (null)    Port descriptor for HTTP Accept

  -P, --cluster_port      int   0         Cluster Port Number

  -o, --dprintf_level     int   0         Debug output level

  -V, --version           tog   false     Print Version String

  -T, --debug_tags        str   (null)    Vertical-bar-separated Debug Tags

  -B, --action_tags       str   (null)    Vertical-bar-separated Behavior Tags

  -i, --interval          int   0         Statistics Interval

  -M, --remote_management tog   false     Remote Management

  -d, --management_dir    str   /opt/at.. Management Directory

  -v, --vingid            str   (null)    Vingid Flag

  - , --accept_mss        int   0         MSS for client connections

  -t, --poll_timeout      int   10        poll timeout in milliseconds

其中 -M -d 参数是与manager配合用的,-v是用来做内存检查工具Vingid配合用的,而其他所有的参数,都是可以在标准的records.config中找到对应的配置项目的。这里提供的参数主要用来覆盖records.config中的参数来的。

traffic_server的默认服务器模式,主要是用来做一些临时测试等工作,由于服务器设计端口绑定,文件打开等,会需要特别权限,这个在 traffic_cop traffic_server的管理下,会有许多特殊设计,因此不建议在生产服务器上手动执行这个默认服务器模式,这会造成很多文件权限等方面的困扰。

回归测试:

回归测试是面向业务的server功能测试,是目前ATS默认编译进二进制代码中的功能,下面这2个参数是跟测试相关的:

 -R, --regression        int   0         Regression Level (quick:1..long:3)

  -r, --regression_test   str   (null)    Run Specific Regression Test

回归测试的执行方法:

traffic_server -R 1

REGRESSION_TEST initialization begun

REGRESSION TEST SSLReverseHostname started

    REGRESSION_RESULT SSLReverseHostname:                       PASSED

REGRESSION TEST SSLWildcardMatch started

    REGRESSION_RESULT SSLWildcardMatch:                         PASSED

REGRESSION TEST DNS started

REGRESSION TEST RegressionSM started

    REGRESSION_RESULT RegressionSM:                             PASSED

REGRESSION TEST SDK_API_ENCODING started

[SDK_API_ENCODING] TSStringPercentEncode : [TestCase1] < <PASS>> { ok }

[SDK_API_ENCODING] TSStringPercentEncode : [TestCase2] < <PASS>> { ok }

[SDK_API_ENCODING] TSStringPercentDecode : [TestCase1] < <PASS>> { ok }

[SDK_API_ENCODING] TSStringPercentDecode : [TestCase1] < <PASS>> { ok }

[SDK_API_ENCODING] TSBase64Encode : [TestCase1] < <PASS>> { ok }

[SDK_API_ENCODING] TSBase64Decode : [TestCase1] < <PASS>> { ok }

    REGRESSION_RESULT SDK_API_ENCODING:                         PASSED

REGRESSION TEST SDK_API_OVERRIDABLE_CONFIGS started

。。。

*** TEST 172 *** STARTING ***

*** TEST 172 *** PASSED ***

Tests Passed: 172

Tests Failed: 0

    REGRESSION_RESULT PARENTSELECTION:                          PASSED

REGRESSION_TEST DONE: PASSED

这是执行一遍快速回归测试的最简单的用法,建议用作开发测试的最基础步骤。现在官网的代码提交,都会直接触发一个build然后跑一遍快速回归,以确保代码不会break基础的功能。这个测试的结果会比较基础,不一定能够涵盖的很周全。如有业务方面的需求,不能作为业务测试的替代。

同时 -r 提供了一个快速执行某一个特定回归测试的选项,如你希望快速运行 Cache_vol 这个测试,只需要用 traffic_server -R 1 -r Cache_vol 就可以了,详细的测试功能列表可以从标准测试里摘取。

回归测试需要注意的事情:

多数情况下,-R 这个回归测试,需要serverroot权限运行

某些版本在回归测试的时候,会过不去,主要是因为目录结构的原因,回归测试推荐的使用默认的目录结构,改变prefixconfigure参数是安全的

cache系统初始化:

Cache的初始化是在 traffic_server 第一次运行的时候自动后台完成的。随着系统的运行,我们的cache系统可能需要从新清理等,如需要测试以及大型配置变化。下面的几个命令参数是可以达成这个任务的:

-C, --command           str   (null)    Maintenance Command to Execute

-k, --clear_hostdb      on    false     Clear HostDB on Startup

-K, --clear_cache       on    false     Clear Cache on Startup

-C 参数是一个子命令:

traffic_server -Chelp

HELP

           list  List cache configuration

          check  Check the cache (do not make any changes)

          clear  Clear the entire cache

    clear_cache  Clear the document cache

   clear_hostdb  Clear the hostdb cache

           help  Obtain a short description of a command (e.g. 'help clear')

其中 -Cclear 的功能等于clear_cacheclear_hostdb的和,即 -k 与 -K 的和

-k 或 -Cclear_hostdb 是清理掉dns的缓存数据。

-K 或 -Cclear_cache 是清理掉http缓存的数据。

通常,-Cclear 是作为还原系统cache状态用,常作为测试中的一个必要步骤。要执行这些参数,需要将正在运行的server进程关闭。

管理服务器 traffic_manager traffic_cop

管理服务器包括两部分,分别是traffic_managertraffic_cop。独立于主业务服务器traffic_server之外。

管理程序traffic_manager

traffic_manager 是负责traffic_server的启动、更新管理等工作的程序,其主要功能包括:

以安全的方式启动traffic_server

ATS是一个服务器,服务器进程的安全性是需要严肃关注的,而traffic_server是一个复杂的http业务服务器,如果以root权限执行是有很大的安全隐患的。在系统上,traffic_manager是以root权限运行的,它会负责打开traffic_server监听的端口,并以普通用户启动traffic_server,这样即使是需要监听80端口等,也能够让traffic_server执行在安全的权限内。

提供管理界面,包括管理APIsocket接口

ATS是一个复杂的服务器,有如traffic_line traffic_shell等管理工具,也有基于unix socket的管理API界面。如traffic_line -s’ 设置参数,就是通过unix socket与配置系统进行通信的。traffic_manager同时也会与traffic_server建立通信机制,确保配置的变化可以对traffic_server生效。

监控配置文件变化、同步集群配置文件

ATS的配置文件更新机制很复杂,在集群中做配置同步的操作更复杂,如何让配置管理做得用户感受很好而且高效?ATS设置了一些复杂的协作机制,traffic_manager是所有这些配置管理的核心。

负责服务器信息统计与汇总展示

ATStraffic_server进程有很多统计数据会在线程内进行统计,如何进行线程间统计汇总?如何让traffic_line等客户端可以查询这些数据?这也是traffic_manager解决的问题。

traffic_manager 包含如下参数,这些参数都是用来调整配置文件参数的。所有参数都有对应的records.config项目。

zymMBPr:bin zym$ sudo /opt/ats/bin/traffic_manager -h

[E. Mgmt] log ==> [TrafficManager] using root directory '/opt/ats'

----------------------------------------------------------------------------

    Traffic Manager Usage: (all args are optional)

    traffic_manager [options]

        -proxyPort     <port>  Port to have proxy listen on, overrides records.config.

        -tsArgs        [...]   Args to proxy, everything till eol is passed.

        -webPort       </port><port>  Port for web interface.

        -clusterPort   </port><port>  Cluster Multicast port

        -groupAddr     <addr>  Cluster Multicast group, example: "225.0.0.37".

        -clusterRSPort <port>  Cluster Multicast port.

        -path          <path>  Root path for config files.

        -recordsConf   <fname> General config file.

        -debug         <tags>  Enable the given debug tags

        -action        </tags><tags>  Enable the given action tags.

        -version or -V         Print version id and exit.

        -vingid        <id>    Vingid Flag

    [...] can be one+ of: [config process node cluster local all]

----------------------------------------------------------------------------

traffic_manager的主要使用方式是由traffic_cop调用,但是也可以单独运行traffic_manager,它也会安全的启动traffic_server。上述所有参数都不是必需的。下面是单独以root权限运行traffic_manager后的结果:

   nobody         14335   2.6  1.3  2627116 112380 s001  S+   10:14下午   0:00.78 /opt/ats/bin/traffic_server -M --httpport 8080:fd=8

    zym            14339   0.0  0.0  2423572     24 s000  S+   10:15下午   0:00.00 grep traffic

    nobody         14333   0.0  0.1  2482036   7320 s001  S+   10:14下午   0:00.10 /opt/ats/bin/traffic_manager

    root           14332   0.0  0.0  2432908    828 s001  S+   10:14下午   0:00.00 sudo /opt/ats/bin/traffic_manager

例子中我们可以看到,traffic_server附带了 -M --httpport 8080:fd=8 的参数,traffic_servertraffic_manager就是通过这样的方式传送监听端口信息的。

值班警察traffic_cop

ATS系统中,traffic_cop占有绝对权威的控制力,traffic_cop是启动traffic_manager的,同时又是负责监控traffic_servertraffic_manager工作情况的。traffic_cop具有如下职能:

负责启动traffic_manager

trafficserver是一个可以用于普通init环境的unix shell脚本,这个脚本就是调用traffic_cop用来启动整个ATS服务。

负责监控traffic_manager的健康心跳

cop进程会通过查询manager接口的方式来判断manager是否健康

负责监控traffic_serfver的健康心跳

如果你去debug ATShttp流程,就会注意到其中有个一个定时的请求在刷,请求的是一个叫synthetic.txt的文件,我们通常叫做synthetic健康检测。这就是traffic_cop检测traffic_server进程心跳情况的请求。这个请求是通过特殊内部端口8083进入,使用的请求是:GET http://127.0.0.1:%d/synthetic.txt HTTP/1.0\r\n\r\n

负责在traffic_manager挂掉的情况下重启

负责在需要的情况下,安全重启traffic_manager

traffic_line -L 最终会重启traffic_server traffic_manager,这其中就是一个典型的主动重启例子。

traffic_cop没有任何参数,所有参数的传递都需要通过ENV环境变量的方式传递给traffic_cop,其中主要的环境变量估计就是TS_ROOT,这个环境变量参数当初设计用作定制配置,目前因为代码都已经开源并且各个目录都可以通过config.layout以及configure命令定制,因此已经基本没有价值。

traffic_cop仍是可以做详细调试的,用的是打trace日志的方式,你需要做一些特殊编译:

--enable-cop-debug      Enable Traffic Cop debugging (for developers)

启动traffic_server进程最安全的方式就是直接运行traffic_cop啦。在你需要手工kill整个ATS服务的时候,先kill traffic_cop是必需的,否则它会一直不断重启traffic_manager来确保服务不会中断。

独立日志服务器 traffic_sac

SAC=Stand Alone Collation,是独立日志收集服务器的意思。为啥叫独立日志收集服务器呢?那是因为traffic_server本身既可以配置为日志发送客户端,也可以配置为日志收集服务器,而此时traffic_server是可以作为多重功能服务的。而独立日志服务器的目标是只提供单一日志收集功能,原先商业产品中,这是作为单独的模块可以卖的,现在开源后,这个独立日志服务器仍可以起到简化部署复杂度等,用作日志中转服务器等。 关于这个服务器,我用的也比较少,欢迎补充。

ATS工具程序

ATS为了配置管理以及开发测试等,均配备了良好的工具程序,这些工具程序的设计,将ATS的产品特性提高到了很高的层面。

日志查看、分析工具

ATS默认的access日志是以二进制的squid日志格式存储的,这个文件默认为squid.blog,因为这个日志是二进制的,因此没法直接用cat tail等文本工具直接看,而需要专用的工具traffic_logcat traffic_logstats

blog查看工具 traffic_logcat

traffic_logcat的工具类似于标准的cat程序,只是这个工具作用于squid.blog文件。使用方法通常是traffic_logcat squid.blog cat模式,或 traffic_logcat -f squid.blog tail模式。

traffic_logcat有如下参数可以使用:

Usage: traffic_logcat [-o output-file | -a] [-CEhSTVw2] [input-file ...]

  switch__________________type__default___description

  -o, --output_file       str   (null)    Specify output file

  -a, --auto_filenames    tog   false     Automatically generate output names

  -f, --follow            tog   false     Follow the log file as it grows

  -C, --clf               tog   false     Convert to Common Logging Format

  -E, --elf               tog   false     Convert to Extended Logging Format

  -h, --help              tog   true      Give this help

  -S, --squid             tog   false     Convert to Squid Logging Format

  -T, --debug_tags        str   (null)    Colon-Separated Debug Tags

  -V, --version           tog   false     Print Version Id

  -w, --overwrite_output  tog   false     Overwrite existing output file(s)

  -2, --elf2              tog   false     Convert to Extended2 Logging Format

blog分析工具 traffic_logstats

traffic_logstats是用来分析squid.blog的,具有高效高速的特性,分析数据包括汇总以及各个域名分拆报告,是快速了解服务器访问情况的一个好工具。

(to be continued)

系统配置管理工具

ATS是一个在产品运维上具有极好的设计的产品,系统的可运维性在它提供的工具上具有非常好的体现。默认的ATS系统提供三个工具可用:

命令行工具 traffic_line traffic_line应该是日常使用的最多的一个ATS命令,是ATS命令行界面的核心,这个命令的主要参数包括:

Usage: traffic_line [--SWITCH [ARG]]

  switch__________________type__default___description

  -q, --query_deadhosts   on    false     Query congested sites

  -r, --read_var          str   (null)    Read Variable

  -s, --set_var           str   (null)    Set Variable (requires -v option)

  -v, --value             str   (null)    Set Value (used with -s option)

  -h, --help                              Help

  -x, --reread_config     on    false     Reread Config Files

  -M, --restart_cluster   on    false     Restart traffic_manager (cluster wide)

  -L, --restart_local     on    false     Restart traffic_manager (local node)

  -S, --shutdown          on    false     Shutdown traffic_server (local node)

  -U, --startup           on    false     Start traffic_server (local node)

  -B, --bounce_cluster    on    false     Bounce traffic_server (cluster wide)

  -b, --bounce_local      on    false     Bounce local traffic_server

  -C, --clear_cluster     on    false     Clear Statistics (cluster wide)

  -c, --clear_node        on    false     Clear Statistics (local node)

  -Z, --zero_cluster      str   (null)    Zero Specific Statistic (cluster wide)

  -z, --zero_node         str   (null)    Zero Specific Statistic (local node)

  -V, --version           tog   false     Print Version Id

这个命令包括:

读写配置选项 -r -s XXX -v YYY

读写配置选项是一个常见的日常任务,ATS的配置方式中,traffic_line可以方便的阅读和调整records.config 中的配置项目,并且如果配置项是动态生效的会即时生效。 如查询配置选项:

zymtest1 trafficserver # traffic_line -r proxy.config.http.negative_caching_enabled

0

如修改配置选项,静悄悄的成功了:

zymtest1 trafficserver # traffic_line -s proxy.config.http.negative_caching_enabled -v 1

zymtest1 trafficserver #

查询系统统计数据 -r

ATS的所有stats统计数据,都是通过标准的接口提供给API的,采用的与records.config一样的接口,因此也可以用 traffic_line -r 来读取:

reload配置文件 -x

ATS的配置文件,包括records.config都是可以直接修改的,多数配置文件是可以在线reload的,修改完成以后,可以运行:traffic_line -x reload相关配置文件。

启动、重启单机以及整个集群 -M -L -S -U

ATS独特的3个程序的服务器设计,使得ATS可以在服务器的起停方面有一些特别的效果,我们可以用traffic_line控制本机的server的启动、停止,重启,甚至整个集群的重启。 -U -S -L分别是用来控制本机server的启动、关闭、重启。 -M 是用来控制集群的所有机器对server重启,非常高效的集群命令。

清零单机及整个集群的统计数据 -C -c -Z -z

-C -c分别用来清理集群和本机的统计系统,所有统计数据清零。 -Z -z分别用来清零集群和本机的特定的统计项目。

ATSrecords.config配置项大约在500个左右,再加上内部的统计数据,以及可以扩展的stats.config.xml中配置的汇总的数据,可以 -r 查询的数据是特别多的,如果希望列出全部的项目,可以参考 http_ui 界面中的 {stat} 列出的数据。

shell界面工具 traffic_shell

******* (to be continued)

服务器状态现实工具 tstop

******* (to be continued)

模块开发配套工具

ATS有很强的扩展API体系,具有非常方便的扩展能力,插件开发也是ATS获得大家认可的关键点,如果提供一个方便易用的业务插件开发环境?ATS学习了Apache Httpd项目的axs命令,提供了一个tsxs脚本,可以帮助大家建立一致的开发环境,并提高开发测试效率。

/opt/ats/bin/tsxs : a tool to compile, link and install trafficserver plugins.

compiling/linking:

-o modulename.so                        ## the name of the module

-I include                              ## add -Iinclude to CFLAGS

-L library path                         ## add -Lpath to LDFLAGS

-l library                              ## add -llib to the LDFLAGS

installing:

-o modulename.so                        ## the name of the module

-i                                      ## install the object

Example:

    /opt/ats/bin/tsxs -I /foo/include -L /foo/lib -l somelib -o tsmodule.so src1.c src2.c ...

tsxs有两个主要功能:

编译

上面的例子中就是一个编译的典型例子,其中 -I -L -l都是可以根据需要放上多个的。

安装

安装就是将编译生成的so文件,安装到系统的ATS插件目录中去。

tsxs命令将会使用与ATS主程序编译一样的cflags等来编译你的模块,在使用tsxs命令中,还需要注意:参数后面尽量跟空格,如 -I /foo/include,不要写成 -I/foo/include

性能测试工具

默认安装中,会有两个proxy性能测试工具安装,为什么要打包进去这两个工具呢,是因为ATS是个高性能的proxy+cache系统,普通的性能测试工具很难压测这个系统,只有使用ATS系统提供的测试工具,才能压的住。

http_load

我们附带的这个http_load程序,是在原http_load的基础上,对性能做了优化以提供更高的压测性能,它会将所有的URL预先加载到内存里,并预先生成相应的http请求,以快速发送请求。当然,副作用就是消耗的内存多了。

jtest

这是ATS系统专用的测试工具,在普通情况下,甚至能达到1:10CPU利用率,即1CPUjtest,可以压测ATS达到10CPU利用率的效果,jtest的用法,请参考专门的jtest手册。

con  new   ops    1byte  lat   bytes/per       svrs  new  ops    total   time  err
100   68  278.0     7     7 3882974/38829    195  195  195  6467784    0.6    0
100  110  502.4    18    19 7653748/76537    339  339  339  12934100   1.6    0

这些参数aaa,能说一下具体的参数详解吗?

con=并发连接数
new=新建连接数
ops=请求数
都是每秒统计平均数

1byte=首字节响应时间
lat=最终请求完成时间
srvs后面是源服务器方面的统计。

性能测试工具并不是默认就一定有的,如http_load是只能在Linux平台上编译的,因此在BSD平台上http_load是不会安装的。

相关文章:

java 读取txt,java读取大文件

java 读取txt,java读取大文件 package com.bbcmart.util; import java.io.File;import java.io.RandomAccessFile;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel; public class Test { public static void main(String[] args) throws Exception …

Spring Boot整合Spring Data JPA操作数据

一、 Sping Data JPA 简介 Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套 JPA 应用框架&#xff0c;底层使用了 Hibernate 的 JPA 技术实现&#xff0c;可使开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增删改查等在内的常用功能&…

常用Linux命令总结

常用Linux命令总结 2013-12-08 压缩为gz格式 gzip error_2018082217.log 解压gz格式 gzip -d error_2018082217.log.gz 不解压来搜索gz格式的文件中的匹配行内容 gunzip -c 不真正解压.gz文件&#xff0c;而是检查该文件&#xff0c;不会生成多余的文件 gunzip -c error_20…

调试uIP出现死机问题

在调试uIP&#xff0c;加入http功能时&#xff0c;调试出现死循环 原因是所加入的http文件中含有printf等输出函数&#xff0c;遇到这种情况&#xff0c;有2种解决方法&#xff1a; 1.Keil中勾选“Use MicroLIB” 2. //加入以下代码&#xff0c;支持printf函数&#xff0c;而…

html+spring boot简单的ajax数据传输实现

本篇讲解在前后端不分离情况下的htmlspring boot的项目数据传输实现 首先&#xff0c;后台我写了三个接口 package com.demo.ajax.controller;import com.demo.ajax.Entity.Person; import lombok.extern.slf4j.Slf4j; import org.jboss.logging.Param; import org.springfram…

Tafficserver旁路接入方案综述

转载自 https://blog.zymlinux.net/index.php/archives/821 随着宽带技术的加速普及&#xff0c;目前&#xff0c;几款高性能开源CDN方案在广大开源爱好团队的充分的测试、企业服务应用验证中破壳而出。实际这个地球的互联网用户都在知情与不知情之间使用了ATS的环保服务。这方…

url中去掉index.php,方便redirect()

01 配置文件 return Array( URL_MODEL > 2,); 02 index.php入口文件下面加入文件 .htaccess -->使用editplus-->另存为 <IfModule mod_rewrite.c>RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ i…

js校验复选框(多选按钮)是否被选中的方法

js校验复选框是否被选中的方法 方法一&#xff1a;&#xff08;使用下标进行标记&#xff09; if ($("#checkbox-id")get(0).checked) {// do something }方法二&#xff1a;&#xff08;对被选中的进行操作&#xff09; if($(#checkbox-id).is(:checked)) {// do…

ATS插件开发基础

转载自 https://blog.zymlinux.net/index.php/archives/540 ATS插件开发需要提前了解ATS的插件的一些设计思想&#xff0c;以及系统提供的一些不同方向。我们将会介绍ATS的基础开发知识&#xff0c;以利于后续的插件开发课程讲解。 ATS的SDK文档&#xff0c;是了解ATS的核心设…

NET基础(3):is 和 as 操作符

在C#语言中进行类型转换的另外一种方式是使用is和as操作符。is检查对象是否兼容于指定类型&#xff0c;返回Boolean值true或false。注意&#xff0c;is操作符永远不抛出异常&#xff0c;例如以下代码&#xff1a; Object o new Object();Boolean b1 (o is Object); //返回…

制作大白菜PE盘

大白菜是一款功能非常强大的U盘启动盘制作工具&#xff0c;通过大白菜我们可以把U盘做成可以引导电脑启动的启动盘&#xff0c;同时可以用于装系统或维护系统&#xff0c;虽然制作方法非常简单&#xff0c;不过还是有很多人不懂如何制作大白菜U盘启动盘&#xff0c;这两天我刚好…

为方便ATS管理建立的一些命令别名

转载自https://blog.zymlinux.net/index.php/archives/129 玩ats经常需要切换目录什么感觉敲得麻烦了就建立了一些命令别名&#xff0c;就方便多了。 在用户目录下的.bashrc文件中加入以下内容&#xff1a; alias alogcd /usr/local/var/log/trafficserver;pwd alias atscd /us…

short s1 = 1; s1 = s1 + 1;有错而short s1 = 1; s1 += 1正确

这个问题以前碰到过&#xff0c;也研究过&#xff0c;发表一下&#xff1a; 如果你认为表达式&#xff08;x i&#xff09;只是表达式&#xff08;x x i&#xff09;的简写方式&#xff0c;这并不准确。这两个表达式都被称为赋值表达式。第二个表达式使用的是简单赋值操作…

pom文件中引入常用的maven仓库

给大家分享几个maven仓库&#xff0c;如果本地总是下载很慢的话可以尝试换一下仓库或者多加几个。可以直接拖放在pom.xml中使用。 阿里云仓库 <mirrors><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.ali…

ats新手学习参考

转载自https://blog.zymlinux.net/index.php/archives/129 首先申明本人是个实实在在的菜鸟&#xff0c;现在也只是搭建起来ats玩玩简单的&#xff0c;写本文只是为了给完全的小白一个参考而已。 本人刚开始接触ats的时候&#xff0c;从ats安装到配置也遇到了很多基本的问题&am…

[svc]磁盘接口与RAID

一 磁盘接口 IDE 传统家用: /dev/hda1 SISC 传统服务器: /dev/sdb1 SATA 现在家用 SAS 现在服务器用 FC(光纤通道) 高级服务器 注意: 分区编号,1-4只能给主分区或扩展分区使用,逻辑分区是基于扩展分区来搞的,编号从5开始. MBR分区参考 现在计算机性能瓶颈往往在硬盘: …

条形码?二维码?生成、解析都在这里!

二维码生成与解析 一、生成二维码 二、解析二维码 三、生成一维码 四、全部的代码 五、pom依赖 直接上代码&#xff1a; 一、生成二维码 public class demo {private static final String path1"D:\\code.jpg";private static void qr(String text,int width,int w…

异步预热在线视频实现

转载自https://blog.zymlinux.net/index.php/archives/100 毕业之际给学校搭建了基于ATS的正向代理缓存服务器&#xff0c;专门用来处理优酷土豆等在线视频流量。通过改写一个浏览器做成在线视频专用浏览器&#xff0c;内置了ATS的代理设置。 用php配合memcacheq和小脚本实现了…

文本输入框、密码输入框

当用户要在表单中键入字母、数字等内容时&#xff0c;就会用到文本输入框。文本框也可以转化为密码输入框。 语法&#xff1a; <form><input type"text/password" name"名称" value"文本" /> </form> 1、type&#xff1a; 当t…

Linux安装mysql,一步到位!

今天在腾讯云上面买了一个服务器&#xff0c;想要把自己的项目部署一下&#xff0c;就要安装mysql&#xff0c;以下是我的安装步骤,在网上有很多人把install敲错了&#xff0c;还有的少-get&#xff0c;种种错误试完之后&#xff0c;我决定发一篇 sudo apt-get install mysql-…

Ubuntu 12.04安装firefox 26中的flash plugin方法

Ubuntu 12.04 64bit中安装firefox 26中的flash player插件的方法昨天, 有最新的firefox 26更新了,可是我在软件更新中无法下载到ubuntu官方源中的flash plugin,详细的情况可以参见如下网页,这个问题我一年前也遇到过,特记录下来,以备后来查阅.http://blog.sina.com.cn/s/blog_9…

内联式css样式,直接写在现有的HTML标签中

CSS样式可以写在哪些地方呢&#xff1f;从CSS 样式代码插入的形式来看基本可以分为以下3种&#xff1a;内联式、嵌入式和外部式三种。这一小节先来讲解内联式。 内联式css样式表就是把css代码直接写在现有的HTML标签中&#xff0c;如下面代码&#xff1a; <p style"col…

Linux下安装Java8

Linux(ubuntu)下Java8安装 1.下载jdk8 这个看大家了&#xff0c;linux版本的就可以 2.创建jvm文件夹 在根目录下创建名为jvm的文件夹&#xff08;在哪里创建看个人&#xff09; $ sudo mkdir jvm3.将下载的包解压到jvm文件夹下 $ sudo tar zxvf 压缩包路径/名字 -C /jvm…

RTMFP协议

RTMFP是Adobe公司开发的一套新的通信协议&#xff0c;该协议可以让使用Adobe Flash Player的终端用户之间进行直接通信。用Adobe AIR框架开发的程序也可以用此协议来发布直播、实时信息。  通过使用RTMFP, 那些原来直播、实时通信的应用&#xff0c;比如社区、音视频聊天和多人…

CodeForces 595A

题目链接&#xff1a; http://codeforces.com/problemset/problem/595/A 题意&#xff1a; 一栋楼&#xff0c;有n层&#xff0c;每层有m户&#xff0c;每户有&#xff12;个窗户&#xff0c;问这栋楼还有多少户没有睡觉&#xff08;只要一个窗户灯亮就代表这户没有睡觉&#x…

将Eclipse中Web项目打成war包

将Eclipse中Web项目打成war包 请按如下操作即可&#xff1a;

测试代码发布到博客效果(Windows Live Writer发布)

测试代码发布到博客效果(Windows Live Writer发布) public class SwitchCase {/*** 1、switch后面的表达式为常量表达式,类型只能是可以转化为int、enum(1.6)、String(1.7)的类型* 2、可以转化为int类型的数据类型有&#xff1a;byte、short、int、char* 3、boolean类型的数据类…

设置腾讯云linux服务器中 MySQL 允许远程访问

申请了一台linux腾讯云服务器&#xff0c;想要把数据库搭建在上面&#xff0c;本地的Windows直接可以访问 以下就是具体的操作流程&#xff0c;首先你需要安装好一个mysql&#xff0c;安装方法–>mysql安装(Linux) 接着就开始操作咯&#xff1a; 一、开启 MySQL 远程访问权…

js 判断js,css是否引入,确保不重复引入

js 判断js,css是否引入&#xff0c;确保不重复引入 (2009-10-31 21:33:44) 转载▼标签&#xff1a; 杂谈 分类&#xff1a; js基本原理&#xff1a;function loadjscssfile(filename, filetype){if (filetype"js"){ //if filename is a external JavaScript filev…

Ubuntu18彻底删除MySQL5.7数据库

首先在终端中查看MySQL的依赖项&#xff1a;dpkg --list|grep mysql (有或者没有都可以继续执行) 移除所有mysql公共依赖&#xff1a;sudo apt-get remove mysql-common 卸载&#xff1a;sudo apt-get autoremove --purge mysql-server-5.7 清除残留数据&#xff1a;dpkg -…