魔戒机场2024年最新专属优惠注册通道:https://mojie.me/#/register?code=VRpfGIYU

魔戒机场2024年最新专属优惠注册通道:
https://mojie.me/#/register?code=VRpfGIYU,此链接注册直接享受优惠冲值优惠!
特点:
1、1元=10G,10元=130G,30元=420G,50元=750G,流量永不过期,永不清零,不限设备数量
2、速度快,节点非常稳定,不会出现IP满地球飘的情况,海外账号没有被拉黑的风险
3、节点支持ChatGPT

(2024年更新)白嫖3个月,200G流量!okgg 邀请码:T6N2,平价机场注册领取,注册即可翻墙,节点支持ChatGPT

魔戒VPN最新注册地址:https://mojie.me/#/register?code=VRpfGIYU

流量永不过期、速度快、不限速、不限设备数量

性价比高机场okgg注册链接:https://okgg.top/auth/register?code=T6N2

邀请码:T6N2   (长期有效)

内部优惠码:

666summer(优惠20%)

8years(优惠15%)

7天只要3分钱,注册送0.99元,可以白嫖3个月

OKGG机场套餐/白菜机场

PHP获得用户真实IP

REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP。如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP。
HTTP_CLIENT_IP 是代理服务器发送的HTTP头。如果是“超级匿名代理”,则返回none值。同样,REMOTE_ADDR也会被替换为这个代理服务器的IP。
$_SERVER[‘REMOTE_ADDR’]; //访问端(有可能是用户,有可能是代理的)IP
$_SERVER[‘HTTP_CLIENT_IP’]; //代理端的(有可能存在,可伪造)
$_SERVER[‘HTTP_X_FORWARDED_FOR’]; //用户是在哪个IP使用的代理(有可能存在,也可以伪造)

三个值区别如下:

一、没有使用代理服务器的情况:

REMOTE_ADDR = 您的 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示

二、使用透明代理服务器的情况:Transparent Proxies

REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。

三、使用普通匿名代理服务器的情况:Anonymous Proxies

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

隐藏了您的真实IP,但是向访问对象透露了您是使用代理服务器访问他们的。

四、使用欺骗性代理服务器的情况:Distorting Proxies

REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 随机的 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。

五、使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies)

REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示 ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

完全用代理服务器的信息替代了您的所有信息,就象您就是完全使用那台代理服务器直接访问对象。

HTTP请求头和响应头

1,HTTP请求的基本概念    TCP/UPD/HTTP  *2,

HTTP请求头和响应头的含义 请求头: 

Accept: text/html,image/*(浏览器可以接收的类型) 

Accept-Charset: ISO-8859-1(浏览器可以接收的编码类型) 

Accept-Encoding: gzip,compress(浏览器可以接收压缩编码类型) 

Accept-Language: en-us,zh-cn(浏览器可以接收的语言和国家类型) 

Host: www.it315.org:80(浏览器请求的主机和端口)

 If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT(某个页面缓存时间) 

Referer: http://www.it315.org/index.jsp(请求来自于哪个页面) 

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)(浏览器相关信息) 

Cookie:(浏览器暂存服务器发送的信息) 

Connection: close(1.0)/Keep-Alive(1.1)(HTTP请求的版本的特点) 

Date: Tue, 11 Jul 2000 18:23:51 GMT(请求网站的时间)  

响应头: 

Location: http://www.it315.org/index.jsp(控制浏览器显示哪个页面) 

Server:apache tomcat(服务器的类型) 

Content-Encoding: gzip(服务器发送的压缩编码方式)

 Content-Length: 80(服务器发送显示的字节码长度) 

Content-Language: zh-cn(服务器发送内容的语言和国家名) 

Content-Type: image/jpeg; charset=UTF-8(服务器发送内容的类型和编码类型)

 Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT(服务器最后一次修改的时间) 

Refresh: 1;url=http://www.it315.org(控制浏览器1秒钟后转发URL所指向的页面) 

Content-Disposition: attachment; filename=aaa.jpg(服务器控制浏览器发下载方式打开文件)

 Transfer-Encoding: chunked(服务器分块传递数据到客户端)

 Set-Cookie:SS=Q0=5Lb_nQ; path=/search(服务器发送Cookie相关的信息) 

Expires: -1(服务器控制浏览器不要缓存网页,默认是缓存) 

Cache-Control: no-cache(服务器控制浏览器不要缓存网页)

 Pragma: no-cache(服务器控制浏览器不要缓存网页)   

Connection: close/Keep-Alive(HTTP请求的版本的特点)  

 Date: Tue, 11 Jul 2000 18:23:51 GMT(响应网站的时间) 

Centos7下添加开机自启动服务和脚本

添加开机自启脚本

在centos7中增加脚本有两种常用的方法,以脚本StartTomcat.sh为例:

#!/bin/bash
# description:开机自启脚本
/usr/local/tomcat/bin/startup.sh  #启动tomcat

方法一:

1、赋予脚本可执行权限(/opt/script/StartTomcat.sh是你的脚本路径)

# chmod +x /opt/script/StartTomcat.sh

2、打开/etc/rc.d/rc.local文件,在末尾增加如下内容

echo "/opt/script/StartTomcat.sh" >> /etc/rc.d/rc.local

3、在centos7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限

chmod +x /etc/rc.d/rc.local

方法二:

1、将脚本移动到/etc/rc.d/init.d目录下

# mv  /opt/script/StartTomcat.sh /etc/rc.d/init.d

2、增加脚本的可执行权限

chmod +x  /etc/rc.d/init.d/StartTomcat.sh

3、添加脚本到开机自动启动项目中

cd /etc/rc.d/init.d
chkconfig --add StartTomcat.sh
chkconfig StartTomcat.sh on

Specified key was too long; max key length is 1000 bytes

--
-- 表的结构 `ecs_goods_activity`
--

DROP TABLE IF EXISTS `ecs_goods_activity`;
CREATE TABLE `ecs_goods_activity` (
`act_id` mediumint(8) unsigned NOT NULL auto_increment,
`act_name` varchar(255) NOT NULL,
`act_desc` text NOT NULL,
`act_type` tinyint(3) unsigned NOT NULL,
`goods_id` mediumint(8) unsigned NOT NULL,
`product_id` mediumint(8) unsigned NOT NULL default '0',
`goods_name` varchar(255) NOT NULL,
`start_time` int(10) unsigned NOT NULL,
`end_time` int(10) unsigned NOT NULL,
`is_finished` tinyint(3) unsigned NOT NULL,
`ext_info` text NOT NULL,
PRIMARY KEY (`act_id`),
KEY `act_name` (`act_name`,`act_type`,`goods_id`)
) ENGINE=MyISAM;

关于FLUSH PRIVILEGES的使用

很多人在MySQL里面乱用FLUSH PRIVILEGES,你知道吗?包括从前的我,但是FLUSH PRIVILEGES你真的知道应该在什么场合使用么?

根据官方文档的如下链接内容可知:
https://dev.mysql.com/doc/refman/5.6/en/privilege-changes.html

当mysqld启动时,所有的权限都会被加载到内存中。
如果使用GRANT/REVOKE/SET PASSWORD/RENAME USER命令来更改数据库中的权限表,mysqld服务器将会注意到这些变化并立即加载更新后的权限表至内存中,即权限生效;
如果使用INSERT/UPDATE/DELETE语句更新权限表,则内存中的权限表不会感知到数据库中权限的更新,必须重启服务器或者使用FLUSH PRIVILEGES命令使更新的权限表加载到内存中,即权限需在重启服务器或者FLUSH PRIVILEGES之后方可生效。

权限生效的含义:
1、表级别/列级别的权限,当更新后的权限加载至内存表中,已存在的会话下一次请求时可使用该权限,在修改权限后的建立的会话则立即生效;
2、数据库级别的权限,当更新后的权限加载至内存表中,已存在会话下一次使用USE db_name后,可使用该权限,在修改权限后的建立的会话则立即生效;
3、全局权限或者修改密码,当更新后的权限加载至内存表中,需要在下一次登录mysqld后,可使用该权限或密码,对已存在会话不起作用。

MySQL复制表结构和内容到另一张表

复制表结构及数据到新表 

create table 新表 select * from 旧表

只复制表结构到新表

select table 新表
select * from 旧表 where 1=2

即:让where条件不成立.

方法二:(低版本的MySQL不支持,MySQL 4.0.25不支持,MySQL 5已经支持了)

create table 新表
like 旧表 

复制旧表的数据到新表(假设两个表结构一样)

insert into 新表
select * from 旧表 

复制旧表的数据到新表(假设两个表结构不一样)

insert into 新表(字段1,字段2,…….)
select 字段1,字段2,…… from 旧表