文章851
标签121
分类10

php 字符串是否是 科学记数法

在 PHP 中,可以使用正则表达式来检查一个字符串是否表示科学记数法。以下是一个示例:

function isScientificNotation($string)
{
    return preg_match('/^[-+]?[0-9]+(\.[0-9]+)?[eE][-+]?[0-9]+$/', $string);
}

$string1 = '1.23e+6'; // 科学记数法表示的字符串
$string2 = '1230000'; // 非科学记数法表示的字符串

if (isScientificNotation($string1)) {
    echo "$string1 是科学记数法";
} else {
    echo "$string1 不是科学记数法";
}

echo "\n";

if (isScientificNotation($string2)) {
    echo "$string2 是科学记数法";
} else {
    echo "$string2 不是科学记数法";
}

在上述示例中,我们定义了一个名为 isScientificNotation() 的函数,该函数使用 preg_match() 函数和正则表达式来检查一个字符串是否符合科学记数法的格式。如果字符串表示科学记数法,则函数返回 true,否则返回 false

通过调用 isScientificNotation() 函数并传入需要检查的字符串,您可以确定该字符串是否是科学记数法表示。

注意,上述示例中的正则表达式仅适用于常见的科学记数法表示形式,如 1.23e+6。如果您需要处理更多变体或其他格式,可能需要修改正则表达式以适应您的需求。

Centos 查看用户组

要查看CentOS中的用户组,可以使用以下命令:

cat /etc/group

该命令将显示系统中所有用户组的列表,包括每个用户组的名称、组ID(GID)以及所属的用户列表。您可以在终端中运行此命令并查看输出以获取所需的用户组信息。

TCP、UDP、HTTP和WebSocket 之间的区别

TCP(Transmission Control Protocol):

  • TCP是一种可靠的、面向连接的传输层协议。
  • TCP提供数据传输的可靠性保证,通过序列号、确认应答、重传等机制来确保数据的可靠性和顺序性。
  • TCP适用于对数据传输可靠性要求较高的场景,如文件传输、电子邮件等。

UDP(User Datagram Protocol):

  • UDP是一种不可靠的、面向无连接的传输层协议。
  • UDP不提供数据传输的可靠性保证,数据包可能会丢失、乱序或重复。
  • UDP适用于对实时性要求较高、数据传输速度更重要的场景,如音视频传输、实时游戏等。

HTTP(Hypertext Transfer Protocol):

  • HTTP是基于TCP协议的应用层协议,用于在客户端和服务器之间传输超文本数据。
  • HTTP是一种无状态的请求-响应协议,每个请求和响应之间是相互独立的。
  • HTTP适用于传输网页、图片、文本等静态资源,以及进行简单的数据交互。

WebSocket:

  • WebSocket是一种全双工通信协议,建立在HTTP协议之上。
  • WebSocket允许客户端和服务器之间进行双向实时通信,相比于HTTP,减少了通信的延迟和网络流量。
  • WebSocket适用于实时性要求较高、双向通信的场景,如实时聊天、实时数据更新等。

区别:

  • TCP是面向连接的,提供可靠性保证;UDP是面向无连接的,不提供可靠性保证。
  • HTTP是基于TCP的应用层协议,用于传输超文本数据;WebSocket建立在HTTP之上,提供双向实时通信。
  • TCPUDP适用于不同的场景,TCP适用于对可靠性要求高的应用,UDP适用于实时性要求高的应用。
  • HTTP适用于传输静态资源和简单的数据交互,WebSocket适用于实时双向通信。

常见的容器技术有哪些

常见的容器技术主要有以下几种:

  1. DockerDocker是目前最为流行的容器技术之一。它使用了轻量级的虚拟化技术,可以将应用程序及其依赖项打包成一个独立的可移植的容器,使得应用程序的部署、运行和管理变得更加简单和高效。
  2. KubernetesKubernetes是一种用于容器编排和管理的开源平台,可以帮助用户自动化部署、扩展和管理容器化应用程序。它提供了一套完整的容器编排和管理工具,可以轻松地管理大规模的容器化应用程序。
  3. Apache MesosApache Mesos是一个开源的集群管理系统,可以提供高效的资源管理和任务调度。它支持多种应用程序框架,包括DockerHadoopSpark等,可以帮助用户轻松地管理和调度容器化应用程序。
  4. LXC/LXDLXCLinux Containers)是一种轻量级的虚拟化技术,它可以在一个Linux系统上运行多个独立的容器。LXDLXC的管理工具,可以帮助用户轻松地管理和部署LXC容器。

除了以上几种常见的容器技术,还有一些其他的容器技术,比如rktOpenVZLinux-VServer等,但它们的使用率相对较低。在实际应用中,需要根据具体的场景和需求选择适合自己的容器技术。

PHP 获取客户端ip地址

PHP 获取客户端ip地址

一、如果没有使用代理服务器,

REMOTE_ADDR = 客户端IP
HTTP_X_FORWARDED_FOR = 没数值或不显示

$ip = $_SERVER['REMOTE_ADDR'];

二、使用透明代理,

REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_X_FORWARDED_FOR = 客户端真实 IP (经过多个代理服务器时,这个值类似:221.5.252.160, 203.98.182.163, 203.129.72.215)

 这类代理还会将客户真实ip发送到请求对象,无法隐藏真实ip。

  $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

三、使用普通匿名代理服务器,

REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_X_FORWARDED_FOR = 代理服务器 IP (经过多个代理服务器时,这个值类似:203.98.182.163, 203.98.182.163, 203.129.72.215)

  这样就隐藏了客户端的真实ip,但服务器会知道客户端是通过代理服务器去访问的。

四、使用欺骗性代理服务器,

REMOTE_ADDR = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 随机的 IP(经过多个代理服务器时,这个值类似:220.4.251.159, 203.98.182.163, 203.129.72.215)

  服务器可以识别到时通过代理服务器访问的,但发送给目标服务器的是虚假ip。

五、使用高匿名代理,

REMOTE_ADDR = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 没数值或不显示

  使用这种代理时,不同浏览器不同设备会返回不同的ip头信息,因此PHP使用 $_SERVER["REMOTE_ADDR"]$_SERVER["HTTP_X_FORWARDED_FOR"] 获取的值可能是空值也可能是“unknown”值。

PHP获取ip代码如下:

public function ip() {
    //strcasecmp 比较两个字符,不区分大小写。返回0,>0,<0。
    if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
        $ip = getenv('HTTP_CLIENT_IP');
    } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
        $ip = getenv('HTTP_X_FORWARDED_FOR');
    } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
        $ip = getenv('REMOTE_ADDR');
    } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    $res =  preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : '';
    echo $res;
    //dump(phpinfo());//所有PHP配置信息
}
">