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

  1. <?php 
  2. $mysqli = new mysqli(“localhost”, “root”, “password”, “testgame”); 
  3. if(!$mysqli)  { 
  4. echo”database error”; 
  5.     }else{ 
  6. echo”php env successful”; 
  7.     } 
  8. $mysqli->close(); 
  9. ?> 

mysql 57 + apache 24+php7 环境搭建 windwos server 2008

php 手动搭建环境

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

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()

ElementTree

#!/usr/bin/env python
#-*-coding:utf-8-*-
from xml.etree import ElementTree as ET
#第一种创建ElementTree的方法
root1=ET.Element("family",{'age':'18'})
root1.text="hello"
element1 = ET.Element("family",{'age':"1"})
root1.append(element1)

tree1 = ET.ElementTree(root1)
tree1.write("out.xml")


#第二种创建ElementTree的方法
#创建根结点
root2 = ET.Element("family",{'age':'2333'})

#
son1 = root2.makeelement("family",{'age':'111'})
son2 = root2.makeelement("family",{'age':'222'})

root2.append(son1)
root2.append(son2)

gson1 = son1.makeelement("familygson111111111",{"age":"2333"})

tree2 = ET.ElementTree(root2)
son1.append(gson1)
tree2.write("out2.xml")



#tree2.write("out2.xml")

#第三种创建ElementTree的方法
root3 = ET.Element("family",{'age':'333'})

son1 = ET.SubElement(root3,"family",{'age':"333"})
son2 = ET.SubElement(son1,"familyson2",{'age':'33333'})

tree3 = ET.ElementTree(root3)
tree3.write("out3.xml")