$content="\r\n".$tireqty.' ' .$oilqty.' '.$sparkqty.' '.$address." \r\n ";
作者归档:aichiao
win7 反应v
一.搞清楚概念
所谓的映射、转发是针对接收数据的端口而言的,一般用作服务端,要侦听的
应用场景如:原本有个服务程序在PC2上运行,侦听着PC2上的B端口,现在希望在不动PC2及服务程序的前提下,外界能通过PC1的A端口与PC2上服务程序通信,这时就需要用端口映射(端口转发)来解决。
将PC1的A端口映射到PC2的B端口,是指将PC1的A端口收到的数据转发到PC2的B端口。外界都来连PC1的A端口,PC1的A端口只做受理窗口,具体业务处理放在PC2的B端口。其实,PC2的B端仍然能用,就是多了一个受理窗口(PC1的A端口)。
所以端口映射体现的是横向扩展,不是移花接木
二.实现
1.用windows的netsh实现
优点:
(1)部署简单。Windows自带,支持IPv4和IPv6
(2)不用重启机器,还长记性。命令即时生效,重启系统后配置仍然存在. 缺点:
(1)不支持UDP (2)XP/2003需要先安裝IPV6,Win7以上系统自带.
用法:
下面都是命令行
(1)安装环境支持 netsh interface ipv6 install (2)查看已配置的“端口映射”清单 netsh interface portproxy show v4tov4 (3)添加“端口映射” netsh interface portproxy add v4tov4 listenaddress=192.168.222.145 listenport=15001 connectaddress=192.168.222.63 connectport=81
将本机(192.168.222.145)的15001端口映射到192.168.222.63的81端口 (4)删除“端口映射” netsh interface portproxy delete v4tov4 listenaddress=192.168.222.145 listenport=15001
2.用SSH端口转发实现
好贴:https://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/
好例:https://koumm.blog.51cto.com/703525/1318975
IP HELP SERVICE
K2p panduola
这个问题有大神说过了,忘了名字,是无线更新续约的什么问题了,WinSCP登陆找到config下面的wireless.在后面加入下面,我同样的问题是这样解决的.希望你也能解决,现在一直使用L大的这个固件.单线双拨非常稳定.百兆带宽,刚自己换了千兆光猫,
option wmm ‘0’
option wpa_group_rekey ‘0’
option wpa_pair_rekey ‘0’
option wpa_master_rekey ‘0’
mysql 57.php7
- <?php
- $mysqli = new mysqli(“localhost”, “root”, “password”, “testgame”);
- if(!$mysqli) {
- echo”database error”;
- }else{
- echo”php env successful”;
- }
- $mysqli->close();
- ?>
mysql 57 + apache 24+php7 环境搭建 windwos server 2008
php手动搭建环境有好多种组合,版本号不一致,会导致搭建失败。
我搭建的组合是: php7+MySQL5.7+Apache2.4的组合。
一、PHP语言包下载
首先从官网上下载php5.6 https://windows.php.net/download#php-5.7
选择完整版下载:

二、 Apache服务器下载
首先从官网上下载Apache2.4 https://httpd.apache.org/download.cgi

进入第二个界面,选择第二个选项:

根据电脑的不同,选择相应的位数:

注意有句话:

大体意思是,配置好Apache之后,要运行ApacheMonitor.exe,可能会报缺少dll文件,如果报缺少文件,需要下载这个软件。
下载好Apache2.4之后继续下载MySQL 5.7。
三、MySQL 5.7服务的下载。
我使用的是mysql5.6.17这个版本 官网下载地址: https://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-17.html
可能官网下载会比较慢,也可以直接网上找。
这个文件有两种,一种是安装版(msi结尾的文件),还有一种是免安装版(zip结尾的文件)

两种都可以。
注意:之前数据库里有东西最好备份一下
我使用的是免安装版,自己觉得这个版本产生的错误比较少。下面介绍免安装版的配制方法:
解压到自定义目录,我解压的目录是D:\mysql-5.6.17-winx64
将根目录下的my-default.ini,改名为my.ini,my.ini用下面内容替换全部内容。
[client]
port=3306
default-character-set=utf8
#客户端字符类型,与服务端一致就行,建议utf8
[mysqld]
port=3306
character_set_server=utf8
#服务端字符类型,建议utf8
basedir=D:\LAMP\mysql-5.6.17-winx64
#解压根目录
datadir=D:\LAMP\mysql-5.6.17-winx64\data
#解压根目录\data
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[WinMySQLAdmin]
D:\LAMP\mysql-5.6.17-winx64\bin\mysqld.exe
#解压根目录\bin\mysqld.exe
注意这句话:
1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
这里设置的是,如果要在表里面的某一列添加空数据,不能使用 ” 的方式,必须要写入 NULL 不能加引号。
如果想用 ” 的方式,就把这句话改成:
1
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
环境变量配置
我的电脑-属性-高级-环境变量-新建
变量MYSQL_HOME 值D:\LAMP\mysql-5.6.17-winx64
找到变量path 编辑,在后面加上 ;%MYSQL_HOME%\bin
运行中输入cmd ,或找到C:\Windows\System32\cmd.exe,进入mysql解压目录bin子目录下
1
2
3
4
5
6
7
8
9
C:\Documents and Settings\Administrator>cd\
C:\>d:
D:\>cd LAMP
D:\LAMP>cd mysql-5.6.17-winx64
D:\LAMP\mysql-5.6.17-winx64>cd bin
D:\LAMP\mysql-5.6.17-winx64\bin>
D:\LAMP\mysql-5.6.17-winx64\bin>mysqld -install
提示:Service successfully installed.及即安装成功。
(CMD命令:CD\ 返回根目录 D: 进入D盘 cd LAMP 进入LAMP文件夹)
1
2
3
4
5
启动、停止、移出MYSQL服务
启动MYSQL服务:net start mysql
停止MYSQL服务:net stop mysql
移出mysql服务:mysqld -remove
这里启动服务,方便下一步操作。
这样就配置完了。
如果是msi结尾的文件,安装过程为:
进入这个界面,选择第二个custom设置路径


一路选择默认选项,

这里设置密码。

MySQL安装好后就可以开始配置开发环境了
Apache安装配置
1、将下载的Apache2.4 解压到自定义目录,我这里选择的目录是D盘的AMP目录。
2、打开apache解压目录conf文件夹下的httpd.conf文件:
查找所有的c:Apache24 将其修改为你自己解压的目录,应该有好几个地方需要改,直接使用记事本的替换功能。
替换后再打开cmd命令行,输入httpd -k install再检查一下语法,如下:

如图红色文字显示,则成功。
3、接下来启动apache服务,测试一下是否安装成功,打开apache bin目录下的ApacheMonitor.exe(如果打开提示缺少dll文件,那么就需要安装上面说的VC了,安装后就可以打开这个monitor了),打开后如下:

4、测试
在浏览器中输入localhost回车,看到如下图说明apache安装成功了。

其实浏览器显示的it works是apache默认站点htdocs(其实就位于apache目录下的htdocs文件夹)下的默认主页index.html的内容。自此,apache安装成功,接下来需要配置php,让apache和php一起工作(将php作为apache的一个模块)。
这个文件夹 htdocs 就是作为php文件运行的根目录, 所有php文件都要放在这里面才可以运行。
配置php模块到apache服务器
1、在Apache24/conf/httpd.conf中做如下配置:
在文件最后加入以下代码(注意修改路径):
1
2
3
4
LoadModule php7_module D:\AMP\php-5.6.30-Win32-VC11-x64\php7apache2_4.dll
AddType application/x-httpd-php .php
#LoadModule php5_module modules/libphp5.so
PHPIniDir D:\AMP\php-5.6.30-Win32-VC11-x64
完了后重启apache服务器(修改了配置文件都要重启)。
2、在apache 的htdocs目录建一个php文件,这里叫index.php,在这个文件中写入如下内容:
1
2
3
<?php
echo "hello php world!";
?>
在浏览器中输入localhost/index.php可以看到:

apache配置php成功,然后需要配置做一些php的相关配置及将MySQL配置到php中。
php配置
配置时区:
打开php解压目录,找到php.ini-development文件,将其改名为php.ini,用记事本打开。
找到(带分号) ;date.timezone =
去掉前面的分好,修改为 date.timezone = Asia/Shanghai
测试:在根目录下的index.php 文件夹中写入以下代码
1
2
3
4
<?php
echo date("Y:m:d H:i:s");
?>
浏览器运行如果显示了当前时间,则配置时区成功。
配置mysql
1、打开php.ini文件,查找extension_dir关键字
去掉前面的注释并将ext文件路径改成我们自己的ext路径,即修改为:
1
extension_dir = "D:\AMP\php-5.6.30-Win32-VC11-x64\ext"
2、在php.int中继续查找php_mysql关键字

将图中两项前面的分号去掉。如果之后在php运行中,缺少扩展,可将相应的内容之前的分号去掉。
3、设置编码:
查找 default_charset =
将其改为:
default_charset = “UTF-8”
至此php环境搭建完成,可以将php文件放入htdocs文件夹中运行了。
MSR路由器双wan线路接入主备自动切换
对于MSR网关,可以使用策略路由和自动侦测实现负载分担和链路备份功能。同样以其中一条WAN连接地址为142.1.1.2/24,网关为142.1.1.1,另外一条WAN连接地址为162.1.1.2/24,网关为162.1.1.1,使用MSR2010做为网关设备为例,配置方法如下:
1、配置自动侦测组,对WAN连接状态进行侦测:
[H3C]nqa agent enable
[H3C]nqa entry wan1 1
[H3C-nqa-wan1-1]type icmp-echo
[H3C-nqa-wan1-1-icmp-echo]destination ip 142.1.1.1
[H3C-nqa-wan1-1-icmp-echo]next-hop 142.1.1.1
[H3C-nqa-wan1-1-icmp-echo]probe count 3
[H3C-nqa-wan1-1-icmp-echo]probe timeout 1000
[H3C-nqa-wan1-1-icmp-echo]frequency 10000
[H3C-nqa-wan1-1-icmp-echo]reaction 1 checked-element probe-fail threshold-type consecutive 6 action-type trigger-only
[H3C]nqa entry wan2 1
[H3C-nqa-wan2-1]type icmp-echo
[H3C-nqa-wan2-1-icmp-echo]destination ip 162.1.1.1
[H3C-nqa-wan2-1-icmp-echo]next-hop 162.1.1.1
[H3C-nqa-wan2-1-icmp-echo]frequency 10000
[H3C-nqa-wan2-1-icmp-echo]probe count 3
[H3C-nqa-wan2-1-icmp-echo]probe timeout 1000
[H3C-nqa-wan2-1-icmp-echo]reaction 1 checked-element probe-fail threshold-type consecutive 6 action-type trigger-only
[H3C]nqa schedule wan1 1 start-time now lifetime forever
[H3C]nqa schedule wan2 1 start-time now lifetime forever
[H3C]track 1 nqa entry wan1 1 reaction 1
[H3C]track 2 nqa entry wan2 1 reaction 1
2、配置默认路由,当任意WAN链路出现故障时,流量可以在另外一条链路上进行转发
[H3C]ip route-static 0.0.0.0 0.0.0.0 142.1.1.1 track 1 preference 60
[H3C]ip route-static 0.0.0.0 0.0.0.0 162.1.1.1 track 2 preference 100
2018年3月7日
- best day
linux
20171227
package main
import “fmt”
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap(“hello”, “world”)
fmt.Println(a, b)
}
ElementTree
方式 一:
from xml.etree import ElementTree as ET
# 创建根节点
root = ET.Element("famliy")
# 创建节点大儿子
son1 = ET.Element('son', {'name': '儿1'})
# 创建小儿子
son2 = ET.Element('son', {"name": '儿2'})
# 在大儿子中创建两个孙子
grandson1 = ET.Element('grandson', {'name': '儿11'})
grandson2 = ET.Element('grandson', {'name': '儿12'})
son1.append(grandson1)
son1.append(grandson2)
# 把儿子添加到根节点中
root.append(son1)
root.append(son1)
tree = ET.ElementTree(root)
tree.write('oooo.xml',encoding='utf-8', short_empty_elements=False)
方式二:
from xml.etree import ElementTree as ET
# 创建根节点
root = ET.Element(“famliy”)
# 创建大儿子
# son1 = ET.Element(‘son’, {‘name’: ‘儿1’})
son1 = root.makeelement(‘son’, {‘name’: ‘儿1’})
# 创建小儿子
# son2 = ET.Element(‘son’, {“name”: ‘儿2’})
son2 = root.makeelement(‘son’, {“name”: ‘儿2’})
# 在大儿子中创建两个孙子
# grandson1 = ET.Element(‘grandson’, {‘name’: ‘儿11’})
grandson1 = son1.makeelement(‘grandson’, {‘name’: ‘儿11’})
# grandson2 = ET.Element(‘grandson’, {‘name’: ‘儿12’})
grandson2 = son1.makeelement(‘grandson’, {‘name’: ‘儿12’})
son1.append(grandson1)
son1.append(grandson2)
# 把儿子添加到根节点中
root.append(son1)
root.append(son1)
tree = ET.ElementTree(root)
tree.write(‘oooo.xml’,encoding=’utf-8′, short_empty_elements=False)
方式三:
from xml.etree import ElementTree as ET
# 创建根节点
root = ET.Element("famliy")
# 创建节点大儿子
son1 = ET.SubElement(root, "son", attrib={'name': '儿1'})
# 创建小儿子
son2 = ET.SubElement(root, "son", attrib={"name": "儿2"})
# 在大儿子中创建一个孙子
grandson1 = ET.SubElement(son1, "age", attrib={'name': '儿11'})
grandson1.text = '孙子'
et = ET.ElementTree(root) #生成文档对象
et.write("test.xml", encoding="utf-8", xml_declaration=True, short_empty_elements=False)
由于原生保存的XML时默认无缩进,如果想要设置缩进的话, 需要修改保存方式:

from xml.etree import ElementTree as ET
from xml.dom import minidom
def prettify(elem):
"""将节点转换成字符串,并添加缩进。
"""
rough_string = ET.tostring(elem, 'utf-8')
reparsed = minidom.parseString(rough_string)
return reparsed.toprettyxml(indent="\t")
# 创建根节点
root = ET.Element("famliy")
# 创建大儿子
# son1 = ET.Element('son', {'name': '儿1'})
son1 = root.makeelement('son', {'name': '儿1'})
# 创建小儿子
# son2 = ET.Element('son', {"name": '儿2'})
son2 = root.makeelement('son', {"name": '儿2'})
# 在大儿子中创建两个孙子
# grandson1 = ET.Element('grandson', {'name': '儿11'})
grandson1 = son1.makeelement('grandson', {'name': '儿11'})
# grandson2 = ET.Element('grandson', {'name': '儿12'})
grandson2 = son1.makeelement('grandson', {'name': '儿12'})
son1.append(grandson1)
son1.append(grandson2)
# 把儿子添加到根节点中
root.append(son1)
root.append(son1)
raw_str = prettify(root)
f = open("xxxoo.xml",'w',encoding='utf-8')
f.write(raw_str)
f.close()
