如何把电脑设置成用于数据处理的dhcp服务器设置?

经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
请扫描分享到朋友圈[分享]C#串口接收数据,数据接受的处置代码_[转]ant脚本组成_在自己的电脑下搭建服务器,发布自己的网站(学习之用)__脚本百事通
稍等,加载中……
^_^请注意,有可能下面的2篇文章才是您想要的内容:
[分享]C#串口接收数据,数据接受的处置代码
[转]ant脚本组成
在自己的电脑下搭建服务器,发布自己的网站(学习之用)
[分享]C#串口接收数据,数据接受的处置代码
[分享]C#串口接收数据,数据接受的处理代码最近看到很多人在问串口的数据处理,尽管已经有人在BLOG中写的很好,但是还是看到很多人在问,所以我把我自己改的一段串口接收的代码发出来供大家参考。可能有很多不好之处,大家见谅,毕竟不是做c#的。主业是做液晶电视和显示器的开发(C语言)。
private List&byte& buffer = new List&byte&(256);//默认分配1/16页内存,并始终限制不允许超过
private byte[] binary_data_1 = new byte[12];//
private byte[] sendbuff = new byte[4];
int timeoutCount=0;
bool timeoutFlag =
private void SerialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)//Getting data from Comm Port
if (IClosing)
timeoutFlag =
Listening =//设置标记,说明我已经开始处理数据,一会儿要使用系统UI的。
int n = SerialPort1.BytesToR
byte[] buf = new byte[n];
SerialPort1.Read(buf, 0, n);//读取缓冲数据
bool data_1_catched =//缓存记录数据是否捕获到
buffer.AddRange(buf);
while (buffer.Count &= 12)
byte CRCH, CRCL;
byte[] crcTemp = new byte[10];
buffer.CopyTo(0, crcTemp, 0, 10);
CRCData.CalculateCrc16(crcTemp, out CRCH, out CRCL);
if (buffer[10] != CRCH && buffer[11] != CRCL)
buffer.RemoveAt(0);
//继续下一次循环
buffer.CopyTo(0, binary_data_1, 0, 12);//复制一条完整数据到具体的数据缓存
data_1_catched =
buffer.RemoveRange(0, 12);//正确分析一条数据,从缓存中移除数据。
if (data_1_catched)
foreach (byte data in binary_data_1)
RecText = RecText + data.ToString();
byte[] dataTemp = new byte[2];// for Hex to singal.
int rowNo=binary_data_1[1];
this.Invoke((EventHandler)(delegate
for (int i = 0; i & 4; i++)
dataTemp[0]=binary_data_1[i*2+3];
dataTemp[1]=binary_data_1[i*2+2];
xx=dataTemp[0]*256+dataTemp[1];
this.dataViewMain[i+1, rowNo].Value = xx.ToString();
Listening =
timeoutFlag =
timeoutCount = 0;
还有一段查表法的CRC16的代码
class CRC16
public CRC16()
private readonly byte[] _auchCRCHi = new byte[]//crc高位表
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40
private readonly byte[] _auchCRCLo = new byte[]//crc低位表
0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,
0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,
0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,
0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,
0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,
0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,
0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,
0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,
0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,
0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,
0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,
0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,
0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,
0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,
[转]ant脚本组成
[转]ant脚本构成
Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能。在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作。
安装与配置
下载地址:http://ant.apache.org/,在本文中下载的是1.7.0版本。解压到某个目录(例如E:"apache-ant-1.7.0),即可使用。
添加系统环境变量:ANT_HOME,该变量指向Ant解压后的根目录,在此为E:"apache-ant-1.7.0。
安装与配置完毕后,读者可以测试一下Ant是否可用,首先进入Ant的bin目录,运行命令ant –version,若安装和配置成功,则会显示Ant版本信息,如下图所示:
由上可以看出,读者运行Ant的命令时,需要进入到Ant的bin目录,如何才能让系统自动找到Ant呢?这时需要读者在系统环境变量path中添加Ant的bin目录。设置完成后,我们就可以在任何目录(例如C:"Documents and Settings"AmigoXie目录)输入Ant的命令,来获得命令的运行结果。
Ant的关键元素
Ant的构件文件是基于XML编写的,默认名称为build.xml。为了更清楚的了解Ant,在这里编写一个简单的Ant程序,用来展现Ant的功能,让读者对Ant有一个初步的了解。首先在E盘下建立一个build.xml文件,内容如下:
&?xml version="1.0"?&&project name="helloWorld"&
&target name="sayHelloWorld"&
&echo message="Hello,Amigo"/&
&/target&&/project&
读者可以进入E盘,然后运行ant sayHelloWorld,可以看到如下的运行结果:
其中sayHelloWorld为需要执行的任务的名称。如果文件名不为build.xml,而为hello.xml时,读者运行同样的命令时,命令窗口会出现如下错误:
Buildfile: build.xml does not exist!
Build failed
由上面的命令的错误提示可以看出,ant命令默认寻找build.xml文件。若文件名为hello.xml时,读者还需要对命令做少许改变,改为:ant –f hello.xml sayHelloWorld、ant –buildfile hello.xml sayHelloWorld或ant –file hello.xml sayHelloWorld。
接下来开始向读者讲解本节的重点:Ant的关键元素project、target、property和task。
project元素
project元素是Ant构件文件的根元素,Ant构件文件至少应该包含一个project元素,否则会发生错误。在每个project元素下,可包含多个target元素。接下来向读者展示一下project元素的各属性。
1)name属性
用于指定project元素的名称。
2)default属性
用于指定project默认执行时所执行的target的名称。
3)basedir属性
用于指定基路径的位置。该属性没有指定时,使用Ant的构件文件的附目录作为基准目录。
下面给读者一个简单的例子来展示project的各元素的使用。修改E:"build.xml文件,修改后的内容如下:
&?xml version="1.0"?&&project name="projectStudy" default="sayBaseDir" basedir="E:"apache-ant-1.7.0"&
&target name="sayBaseDir"&
&echo message="The base dir is: ${basedir}"/&
&/target&&/project&
从上面的内容我们可以看出,在这里定义了default属性的值为sayBaseDir,即当运行ant命令时,若未指明执行的target时,默认执行的target的sayBaseDir,同时还定义了basedir属性的值为E:"apache-ant-1.7.0,进入E盘后运行ant命令,可看到运行的结果,如下图所示:
因为设定了basedir的值,所以basedir属性的值变成了读者设置的值。读者可以自行将project元素的basedir属性去掉后运行ant看看运行结果,此时basedir的值变成了E:",即为Ant构件文件的父目录。
有的时候,读者可能有这种需求,即想得到某个project下所有的target的名称,读者可以通过在ant命令里加上-proecthelp来达到该目的。例如针对上述的例子我们运行ant –projecthelp,输出结果如下:
Buildfile: build.xml
Main targets:
Other targets:
sayBaseDir
Default target: sayBaseDir
target元素
它为Ant的基本执行单元,它可以包含一个或多个具体的任务。多个target可以存在相互依赖关系。它有如下属性:
1)name属性
指定target元素的名称,这个属性在一个project元素中是唯一的。我们可以通过指定target元素的名称来指定某个target。
2)depends属性
用于描述target之间的依赖关系,若与多个target存在依赖关系时,需要以“,”间隔。Ant会依照depends属性中target出现的顺序依次执行每个target。被依赖的target会先执行。
用于验证指定的属性是否存在,若不存在,所在target将不会被执行。
4)unless属性
该属性的功能与if属性的功能正好相反,它也用于验证指定的属性是否存在,若不存在,所在target将会被执行。
5)description属性
该属性是关于target功能的简短描述和说明。
下面带领读者来看一个各属性综合使用的例子。修改E:"build.xml文件,修改后的内容如下:
&?xml version="1.0"?&&project name="targetStudy"&
&target name="targetA" if="ant.java.version"&
&echo message="Java Version: ${ant.java.version}"/&
&target name="targetB" depends="targetA" unless="amigo"&
&description&
a depend example!
&/description&
&echo message="The base dir is: ${basedir}"/&
&/target&&/project&
进入E盘后运行ant targetB,可看到如下图所示的运行结果:
读者分析结果后可以看到,我们运行的是名为targetB的target,因该target依赖于targetA,所以targetA将首先被执行,同时因为系统安装了java环境,所以ant.java.version属性存在,执行了targetA这个target,输出信息:[echo] Java Version: 1.5,targetA执行完毕后,接着执行targetB,因为amigo不存在,而unless属性是在不存在时进入所在的target的,由此可知targetB得以执行,输出信息:The base dir is: E:"。
property元素
该元素可看作参量或者参数的定义,project的属性可以通过property元素来设定,也可在Ant之外设定。若要在外部引入某文件,例如build.properties文件,可以通过如下内容将其引入:&property file=” build.properties”/&
property元素可用作task的属性值。在task中是通过将属性名放在“${”和“}”之间,并放在task属性值的位置来实现的。
Ant提供了一些内置的属性,它能得到的系统属性的列表与Java文档中System.getPropertis()方法得到的属性一致,这些系统属性可参考sun网站的说明。
同时,Ant还提供了一些它自己的内置属性,如下:
basedir:project基目录的绝对路径,该属性在讲解project元素时有详细说明,不再赘述;
ant.file:buildfile的绝对路径,如上面的各例子中,ant.file的值为E:"build.xml;
ant.version:Ant的版本,在本文中,值为1.7.0;
ant.project.name:当前指定的project的名字,即前文说到的project的name属性的值;
ant.java.version:Ant检测到的JDK的版本,在上例运行结果中可看到为1.5。
下面让读者来看一个property元素使用的简单例子。修改E:"build.xml文件,内容如下:
&?xml version="1.0"?&&project name="propertyStudy" default="example"&&property name="name" value="amigo"/&&property name="age" value="25"/&&target name="example"&
&echo message="name: ${name}, age: ${age}"/&&/target&&/project&
该例的运行结果如下图所示:
由此读者可以看出,通过如下两个语句:
&property name="name" value="amigo"/&
&property name="age" value="25"/&
我们设置了名为name和age的两个属性,这两个属性设置后,读者在下文中可以通过${name}和${age}分别取得这两个属性的值。
Ant的常用任务
在Ant工具中每一个任务封装了具体要执行的功能,是Ant工具的基本执行单位。在本小节中,主要引导读者来看下Ant的常用任务及其使用举例。
该任务主要用来对文件和目录的复制功能。举例如下:
Eg1.复制单个文件:&copy file="file.txt" tofile="copy.txt"/&
Eg2.对文件目录进行复制:
&copy todir="../newdir/dest_dir"&
&fileset dir="src_dir"/&
Eg3. 将文件复制到另外的目录:
&copy file="file.txt" todir="../other/dir"/&
delete任务
对文件或目录进行删除,举例如下:
Eg1. 删除某个文件:&delete file="photo/amigo.jpg"/&
Eg2. 删除某个目录:&delete dir="photo"/&
Eg3. 删除所有的备份目录或空目录:
&delete includeEmptyDirs="true"&
&fileset dir="." includes="**/*.bak"/&
创建目录。eg:&mkdir dir="build"/&
移动文件或目录,举例如下:
Eg1. 移动单个文件:&move file="fromfile" tofile=”tofile”/&
Eg2. 移动单个文件到另一个目录:&move file="fromfile" todir=”movedir”/&
Eg3. 移动某个目录到另一个目录:
&move todir="newdir"&
&fileset dir="olddir"/&
该任务的作用是根据日志或监控器的级别输出信息。它包括message、file、append和level四个属性,举例如下:
&echo message="Hello,Amigo" file="logs/system.log" append="true"&
利用Ant构建和部署Java工程
Ant可以代替使用javac、java和jar等命令来执行java操作,从而达到轻松的构建和部署Java工程的目的。下面来看几个知识点。
利用Ant的javac任务来编译java程序
Ant的javac任务用于实现编译Java程序的功能。下面来看一个简单的例子:
首先我们建立名为antstudy的Java工程,建立src目录为源代码目录,在src目录下建立HelloWorld.java这个类文件。该类文件的内容如下:
public class HelloWorld
public static void main(String[] args)
System.out.println("Hello,Amigo");
同时在antstudy工程的根目录下建立build.xml文件,在该文件中编译src目录下的java文件,并将编译后的class文件放入build/classes目录中,在编译前,需清除classes目录,该文件的内容如下:
&?xml version="1.0"?&&project name="javacTest"default="compile" basedir="."&
&target name="clean"&
&delete dir="build"/&
&target name="compile" depends="clean"&
&mkdir dir="build/classes"/&
&javac srcdir="src" destdir="build/classes"/&
&/target&&/project&
运行该build.xml文件,可在工程中看到新增了build/classes目录,并在该目录中生成了编译后的HelloWorld.class文件。
使用Ant的java任务运行Java程序
Ant中可以使用java任务实现运行Java程序的功能。下面在1的例子中进行如下的修改,修改后的build.xml文件的内容如下:
&?xml version="1.0"?&&project name="javaTest" default="jar" basedir="."&
&target name="clean"&
&delete dir="build"/&
&target name="compile" depends="clean"&
&mkdir dir="build/classes"/&
&javac srcdir="src" destdir="build/classes"/&
&target name="run" depends="compile"&
&java classname="HelloWorld"&
&classpath&
&pathelement path="build/classes"/&
&/classpath&
&/target&&/project&
运行该build.xml文件,可在控制台看到HelloWorld的main方法的输出。
使用Ant的jar任务生成jar文件
读者可以在上例的基础上更进一步,来生成jar包,可在run这个target下再加上如下target:
&target name="jar" depends="run"&&jar destfile="helloworld.jar" basedir="build/classes"&
&manifest&
&attribute name="Main-class" value="HelloWorld"/&
&/manifest&
&/jar&&/target&
此时将ant的project的default属性设置为jar,同时运行该build.xml文件,运行完毕后,可看到在工程目录下生成了一个jar包HelloWorld.jar。
使用Ant的war任务打包J2EE Web项目
建立一个J2EE Web工程,其目录结构如下图所示:
其中src为源代码目录,WebRoot为各jsp存放目录,lib为工程的包目录。在antwebproject工程目录下建立了build.xml文件,该文件为该工程的Ant构件文件。读者可以src目录下放入在前续例子中开发的HelloWorld.java文件,并在WebRoot下建立index.jsp文件,其内容很简单,就是输出Hello信息,代码如下所示:
&% @ page language="java" contentType="text/ charset="UTF-8" pageEncoding="UTF-8"%&&!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&&html&
&meta http-equiv="Content-Type" content="text/ charset=ISO-8859-1"&
&title&ant打包测试&/title&
&/body&&/html&
接下来编写build.xml文件,其内容如下:
&?xml version="1.0"?&&project name="antwebproject"
default="war"basedir="."& &property name="classes" value="build/classes"/&
&property name="build"value="build"/&
&property name="lib"value="WebRoot/WEB-INF/lib"/&
&!-- 删除build路径--&
&target name="clean"&
&delete dir="build"/&
&!-- 建立build/classes路径,并编译class文件到build/classes路径下--&
&target name="compile" depends="clean"&
&mkdir dir="${classes}"/&
&javac srcdir="src" destdir="${classes}"/&
&!-- 打war包--&
&target name="war" depends="compile"&&war destfile="${build}/antwebproject.war" webxml="WebRoot/WEB-INF/web.xml"&
&!-- 拷贝WebRoot下除了WEB-INF和META-INF的两个文件夹--&
&fileset dir="WebRoot" includes="**/*.jsp"/&
&!-- 拷贝lib目录下的jar包--&
&lib dir="${lib}"/&
&!-- 拷贝build/classes下的class文件--&
&classesdir="${classes}"/&
&/target&&/project&
各target的作用在内容中已经进行说明,在此不再赘述。运行该build文件,更新目录后,可看到在build目录下生成了antwebproject.war文件,解开后可看到其目录结构如下:
--META-INF
--MANIFEST.MF
--index.jsp
--log4j-1.2.9.jar
--HelloWorld.class
读者可以将该war包拷贝到Tomcat的目录下看一下运行结果。
在本文中,笔者由浅至深详细描述了Ant的安装与配置、关键元素和常用任务。并通过实例讲述了Ant在我们Java项目中的应用,讲述了编译、运行java程序,以及打jar包、war包等知识,引领读者进入Ant的奇妙世界。在本文中可以看到,Ant在自动构建和部署Java程序方面方便易用,而且非常灵活,不失为我们Java开发者的绝佳帮手
在自己的电脑下搭建服务器,发布自己的网站(学习之用)
在自己的电脑上搭建服务器,发布自己的网站(学习之用)我们平常学习时经常会写一下程序,我们为了更能逼近现实,就想着自己的程序发布后,外网的同学能够访问我们的网站,难道我们去买空间,去买域名嘛,其实也没必要,我们只是学习,测试之用,在自己的电脑上搭建一个服务器完全可以满足要求。上次写的一篇博客,服务端与客户端实现网络通信,就是利用这个原理。
我们分为三步走来实现:我这里用的示例程序是我自己简单写的一个小程序
我们用服务器,如果我们的程序已经部署到了服务器,一般我们在本地访问的地址为,指本机,即,端口号,你部署的项目名称,但太过繁琐,我们只想通过地址来访问我们的项目,即或者,我们只需修改一下的配置即可,打开所在的目录,打开文件夹,打开文件,所要修改的部分如下:
&Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" /&
&Context path="" docBase="shop1" reloadable="true" /&
即将从原先的修改成,因为协议的默认端口是,这样你就可以不用再输端口号了,把的值修改成你所部属的项目的名称,默认指向你的项目,这样你就可以不输项目的名称了。
还得注意一点的版本的文件中居然没有
&Context path="" docBase="shop1" reloadable="true" /&
这一条,又下载了一个版本的居然有,如果你的没有,复制加进去就可以了。
,这样的话,你在浏览器里输入就可以访问你的项目了!
为了下来的工作中不出现什么问题,我并没有将端口改成,据说端口被电信封掉了,我让我用电信上网的同学访问的同学访问我的网站,果然不行,这里我们明白道理就可以了,只是学习测试之用,所以我们就用端口。
上一步我们只实现了自己访问,但如何让外网的同学访问,这里可能涉及了简单的网络知识,我网络学的也不是很好。就说的比较通俗一点。有两种情况()你上网没有用路由,运营商单独分给你一个地址,那你直接可以用你的让外网的同学来访问你的网站,我们这里用的是端口,所以形式为:。为了让多的同学了解,我在啰嗦一下,怎么知道自己的地址,你不必用在命令行输入这种略显专业的方法去获取,其实只要在百度搜索“查询”,第一个就是。
()用了路由器,一个路由器带了好几台电脑,比如说跟室友,这就需要你去路由管理页面去设置一下,端口映射,让别人访问你们的地址时,映射到你的电脑,在浏览器中输入(以你的路由为准),进入路由管理页面,操作如下图:
转发规则虚拟服务器添加新条目
端口我们没改,所以填,地址为你的电脑在局域网中的地址,怎么样知道自己的局域网中的地址,很简单自己百度一下,只要局域网里的电脑不是太多,一般为,我这里为,然后点击保存,然后外网就可以用你们去访问你的网站了!
我的效果图如下:
这时可以把这个网址发给你的同学,试一下,他能不能访问你的网站,答案是肯定的!
但是又有新问题了,你第二天打开路由,或者再次上网时,运营商会重新分配给你一个新的地址,难道你让你同学访问时,再次把这个地址发给他吗?显然这是不合理了。
此时,我们就想有一个动态域名多好。这里给大家介绍一款软件“花生壳”,下载安装,然后注册后,你就会获得一个免费的二级域名,每次开机自启后,就会将花生壳服务端中的数据更新成你新的地址,然后你每次用你固定的域名来访问时,就会解析到你新的地址。
双击你的域名,看有没有显示出“经检测,您的域名已激活并指向正确”!
,到这里,没有路由的同学,就可以直接用你的域名访问了!
有路由的同学,还得多操作一步:
再次进入路由管理页面,操作如下图:
点击“动态”这时如果你的上述操作都没问题的话,服务提供者那一栏已经自动填充成花生壳的网址了,然后输入用户名,密码,点击登录,如果显示为“连接成功”,那点击“保存”。
到这里,终于大功告成,看一下最终效果图:
可以看到,我用我的域名成功的访问到了我的网站。
有时显示“验证成功”时也是个假象,一点击“保存”时,又显示为“验证失败”,再点击“登录”,多点击几次“保存”,直到它一直显示为“验证成功”即可,反正就是多试几次。
祝君好运!
如果您想提高自己的技术水平,欢迎加入本站官方1号QQ群:&&,&&2号QQ群:,在群里结识技术精英和交流技术^_^
本站联系邮箱:如何更好的管理一台服务器上的多个数据库?-mssql-电脑编程网如何更好的管理一台服务器上的多个数据库?作者:佚名 和相关&&
&&& 每一个实例或者每一个设置一个单一的能够使管理更方便。然而,这样做很快将增加你的数据库解决方案的成本,因为你要对你希望托管的每一个数据库购买一台新的或者新的SQL服务器许可证。
  为了应对这种价格昂贵的设置,人们一般在一个服务器或者实例上托管多个数据库(也就是多个应用程序)。虽然这将减少托管所有这些数据库的成本,但是,这增加了管理这些系统的复杂性,因为你现在要处理多个服务级协议和维护窗口。
  当你决定在同一台服务器上托管多个数据库的时候,你要考虑的第一件事是这些系统是否有互补的维护窗口。如果一个系统不能在夜间放慢速度或者离线,另一个系统不能在白天放慢速度或者离线,这些系统就不适合共享一个服务器,因为你在需要为系统使用补丁或者处于其它原因要让系统离线的时候,你没有有效的维护时间窗。
  你需要考察的下一个决定因素是这些系统的服务级协议。需要99%的开机时间的系统能够安排在一起,因为你可能会为这些系统(也许是集群解决方案)建立一个比非重要任务系统更强大的环境。这可以为你节省额外的成本,因为你现在不需要采购任何高端系统。具有更高的服务级协议的系统也可能会有同样的维护时间窗。因此,这些系统在一开始就是互补的。
  承担工作量
  对托管多个数据库的SQL服务器进行维护的最大难题是时机。
  当然,当把多个数据库集中在一个SQL服务器的时候需要考虑的最重要的问题是,是否有足够的CPU和内存资源处理这些客户程序添加到这个数据库服务器的工作量。如果单个服务器不能提供需要的CPU和内存资源,那么,把这些数据库都集中在那台服务器上就不是一个好的选择。
  当你经过这个整个决策过程并且把这些数据库都放在同一台服务器上之后,你如何保持这些系统的健康和在高峰期仍能运行?与其它任何数据库解决方案一样,你仍需要处理自己的备份、索引碎片整理和重建、以及为操作系统和SQL服务器使用补丁。
  处理托管多个数据库的SQL服务器的维护的最大难题是时机。你需要保证你的维护任务能够在这个SQL服务器托管的全部数据库计划的维护时间窗内完成。在任何数据库的维护时间窗之外进行维护工作都将引起数据库运行缓慢,因为硬盘和CPU资源现在被维护活动占用了,而不是处理正常的数据库查询。
相关资料:|||||||如何更好的管理一台服务器上的多个数据库?来源网络,如有侵权请告知,即处理!编程Tags:                &                    }

我要回帖

更多关于 dhcp服务器设置 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信