看问题要看到本质:从Web服务器说起
这是个很长的故事, 让我们从Web服务器来开始。
Web服务器是个挺简单的东西,工作很简单,在80端口上监听,解析客户端发过来的HTTP的请求, 然后把相对应的HTML文件、Image等返回给客户端就可以了。像这样:
可是,如果svr端采用了其它复杂的容灾策略,那么基于静态配置的框架就很难去确定svr端的服务状态:svr发生状态变更,client端无法确定应该向哪台svr发起请求。serveraddr.txt改成本机ip地址步骤五:rungate下面的rungate.ini 改server1=本机ip地址 listenaddr=本机ip地址 其他别改步骤六:selgate下面的config.ini 改所有ip地址为本机ip地址.ok ip地址大功高成,出现任何黑屏和进不了创建人物界面,绝对不是ip地址设置问题,不要考虑ip问题现在把mirserver\loginsrv目录下面logsrv.ini文件,打开,找到dynamicipmode=0把它设置成dynamicipmode=1即可 大部分人进内网传奇开不了门就是这个原因好了现在还是运行传奇服务端文件首先把验证开起,然后把传奇七个服务端文件程序全部开启,一定是全部哦,在验证文件架里面还有个网关验证文件架,里面那个验证也要开 验证开启为了菜鸟明白,我解释验证开启:就是先开验证器验证ip修改器.exe 然后再开m2验证.exe 这个时候在验证器验证ip修改器.exe 把ip写为61.128.194.170 后在m2验证那里点启动就ok 验证完成ok 传奇服务端已经运行了, 现在我们另外随便找一台电脑来试试内网是不是能行(内网就是局域网)呵呵肯定不行 虽然我们配置都正确了,有个东西忘记了,那就是要用1.85的登陆器也就是翎风登陆器.exe 具体为什么 我也不知道,反正不用这个登陆,是进不了传奇的 记得还要把传奇服务端的map文件复制到你那台电脑上的map文件夹下如何做传奇私服。 因 为 脚 本 在 服 务 器 端 执 行 , 就 不 需 要 象 使 用 客 户 端 脚 本 时 那 样 为 不 支 持 脚 本 的 浏 览 器 用 html 注 释 标 记 将 脚 本 隐 藏 起 来 .。
实现这样一个“玩具Web服务器”并不难,只要能了解服务器端Socket编程就可以了, 主要工作是编程处理HTTP协议的细节。
但是如果想再往前走一步,让Web服务器能产生动态内容,那就难了。
比如说来了一个HTTP请求,在其中携带者用户名和密码,要求你去数据库做一个查询e-mail的本质,看看用户是否存在。
POST /login
user=xxxx&pwd=xxx
这个静态的Web服务器就搞不定了,它根本,也不应该去查询数据库。
怎么办呢?你可以用某种语言(比如C语言)写个程序, 来查询数据库,假设这个程序的名字叫db-query。
可是你将面对非常棘手的问题:Web服务器是个进程,db-query也是个进程,这俩货之间怎么通信呢?
(友情提示,下面内容略显枯燥,可跳过)
首先是参数的传递,一种办法是这样:对于每个动态请求,Web服务器进程创建一个db-query的子进程,然后通过环境变量把参数传递过去。
web服务器:
setenv("QUERY_STRING","user=xxxx&pwd=xxx")
db-query子进程 :
param = getenv("QUERY_STRING")。
下一个问题:db-query这个子进程获得了用户名和密码,查询了数据库,怎么把查询结果返回给浏览器?
有个很巧妙的办法!
每个程序都有所谓的标准输出(STDOUT),db-query只要调用printf这个函数,数据就会输出到STDOUT,我们就可以在黑乎乎的控制台上看到了数据输出了。
但是输出到控制台是万万不行的,我们得输出到socket才可以发回浏览器。
每个浏览器和服务器的连接都是一个Socket, 每个socket都有一个文件描述符fd, 如果把查询数据库程序db-query的STDOUT重定向到那个fd,会发生什么?
没错!db-query的所有输出都直接发送的客户端的socket了,Web服务器可以撒手不管了!
当然,如果浏览器要看到的是HTML页面, 那db-query这个程序就需要输出HTML了。
动态网站大多数需要数据库(即使是文本文件“数据库”),如果你的网站用php语言,那么mysql就是绝配了。定时运行任务对于一个网站来说,是一个比较重要的任务,比如定时发布文档,定时清理垃圾信息等,现在的网站大多数都是采用php动态语言开发的,而对于php的实现决定了它没有java和.net这种appserver的概念,而http协议是一个无状态的协议,php只能被用户触发,被调用,调用后会自动退出内存,没有常驻内存。这样就可以使用任意的语言来编写程序,最后大家都编译成统一规则的字节码,由于大家的字节码都遵循相同的规则,所以在字节码之间的相互调用就可以十分平滑的实现,这样不论用何种语言编写的程序,就可以很容易的互相使用(这种技术就是jit技术,just in time)。
网络上的社交,比现实中的自由很多,就好像现实中的见个面,要约个时间,因为事情耽搁,要告知,否则就是不守信,网络上的,随时随地,聊天,自由度很大,对于不愿受拘束的人来说,会感觉网络上的朋友,更让自己舒服一点。育米嗨购购物模式打破了传统的购物消费,让购物变成一场更多人可以参与的社交活动,让购物更有趣,开启由消费者主导的移动社交购物新模式。各社交平台将加速社交相关生态的整合,以社交为基础打造沟通、娱乐、生活、购物和学习的在线一站式服务平台。
但是,CGI是非常复杂和笨拙的, 主要体现在:
第一,对每个请求,都得创建一个子进程去执行,这是个非常大的开销。
第二,对程序员来说,编程极为痛苦,要操作环境变量,还需要直接在编程语言中输出HTML!
麻烦不麻烦,难受不难受,上个世纪的程序员苦逼不苦逼?
怎么才能跳出苦海?必须得做到关注点的分离!
程序员的关注点是:拿到Http 请求中的数据,执行业务, 然后输出Http 响应。别的什么环境变量,重定向,别来烦我!
那就简单了,让程序员写个类,里边是业务逻辑, 然后我们想办法构建一个HttpRequest对象和HttpResponse对象,传递给程序员的类让他使用不就行了?
谁来创建这个HttpRequest和Response 对象, 然后调用程序员写的类?
静态Web服务器表示我不愿意,我就想管好我这一亩三分地,把静态内容给大家服务好。
如果你在dos时代编写过程序,那么你也许知道在dos下为了编写一个常驻内存的程序我们要编写多少代码了.相反如果在linux下编写一个\"常驻内存\"的程序却是很容易的.我们只要几行代码就可以做到. 实际上由于linux是多任务操作系统,我们就是不编写代码也可以把一个程序放到后台去执行的.我们只要在命令后面加上&符号shell就会把我们的程序放到后台去运行的. 这里我们\"开发\"一个后台检查邮件的程序.这个程序每个一个指定的时间回去检查我们的邮箱,如果发现我们有邮件了,会不断的报警(通过机箱上的小喇叭来发出声音). 后面有这个函数的加强版本加强版本。自从操作系统升级到64位以后,就要不断的需要面对32位.64位的问题.相信有很多人并不是很清楚32位程序与64位程序的区别,以及program files (x86),program files的区别.同时,对于程序的dll文件应该放到system32文件夹,还是syswow64,大部分人做的决定是,32位程序放到system32,64位程序放到syswow64.是不是这样呢,那么今天就由我身边发生的一个案例来详细的说明一下. dll文件不匹配导致数据库无法启动 前段时间,数据库做了一些功能上的。很多网卡上还有bootrom这个东西.它是用于无盘工作站引导操作系统的.既然无盘,一些引导用必需用到的程序和协议栈就放到里面了,例如rpl,pxe等.实际上它就是一个标准的pci rom.所以才会有一些硬盘写保护卡可以通过烧写网卡的bootrom来实现.其实pci设备的rom是可以放到主板bios里面的.启动电脑的时候一样可以检测到这个rom并且正确识别它是什么设备的.agp在配置上和pci很多地方一样,所以很多显卡的bios也可以放到主板bios里面.这就是为什么板载的网卡我们从来没有看到过bootrom的原因.。
javascript和css轻松进行非常棒的firefox扩展开发.firefox5.0扩展sdk可以让扩展在windows,mac和 linux多平台环境下进行本地开发,firefox扩展创建器提供了一种基于web的在线编译环境来创建和编译火狐扩展.开发者可以在所有平台上创建火狐扩展,并在进行安装和更新时不需重启浏览器或是中断网络浏览体验.l全部改进多达1000多处,性能更出色最新版的firefox包含了1000余处改进和性能上的提升,以便让用户更容易的发现和使用firefox的创新特性.mozilla基金会是一个非营利性开源软件机构,旗下谋智网络是mozilla的中国子公司,目前负责在中国运营 firefox 火狐浏览器以及 firefox mobile 移动浏览器产品.。exif信息查看器(jpeg lossless rotator)是一款简单小巧的图片浏览和处理软件,它可以直接浏览界面上显示数码照片的exif信息,为用户提供最直接最直白的信息查看,方便你进行修改。 容器 函数对象 算法 迭代器 泛型程序设计 stl的组成部分 stl是泛型程序设计的一个范例 容器(container) 迭代器(iterator) 算法(algorithms) 函数对象(function object) * 泛型程序设计 容器 container 算法 algorithm 容器 container 迭代器 iterator 函数对象 function object 迭代器 iterator 输入流迭代器和输出流迭代器 输入流迭代器 istream_iterator 以输入流(如cin)为参数构造 可用* p++ 获得下一个输入的元素 输出流迭代器 ostream_iterator 构造时需要提供输出流(如cout) 可用 *p++ x将x输出到输出流 二者都属于适配器 适配器是用来为已有对象提供新的接口的对象 输入流适配器和输出流适配器为流对象提供了迭代器的接口 * 迭代器 例10-2 * //包含的头文件略去…… using namespace std。
Tomcat还郑重向大家声明:对于每个请求,我只会用一个线程来出来,线程的开销可比进程小多了。
对于那个在代码中混杂HTML的问题怎么处理?
Tomcat也有办法, 可以在HTML混杂代码!这就是JSP。执行期其实会被编译成Servlet。
(码农翻身注:请移步《》)
你看,责任分离了,每个人只要办好自己的事情就好。
(注:实际上,我们不会在Servlet中写业务逻辑, Servlet现在通常是一个通往框架的入口。)
CGI表示不服:遵循我的协议,任何语言都可以来实现动态网站,你Servlet只是Java规范,不管别的语言了?
Servlet规范确实没法跨语言实现,那要是Python也想做动态Web网站,该怎么办?
既然已经认识到动态网站的本质了, 可以采用类似的思想来处理嘛!我们为Python也定义一个规范,叫做WSGI(Web Service Gateway Interface)。
让程序员写个类或者函数(称为wsgi application),在其中实现逻辑。让某个动态服务器(称为wsgi server)把Http Request和Response传递给它,就可以执行了。
但是Python表示:我不喜欢你们Java 那一套啰里啰嗦的类,HttpRequest 不就是一些key value吗?放到我钟爱的dict中多好 !我把它叫做enviroment, HttpResponse也没必要,直接用函数的返回值(确切说是一个可迭代对象)就好。
看看,是不是和Java 的Servlet 很像?(当然,忽略了很多细节。)
从本质上来说,都是为了关注点的分离:
纵观互联网,90%以上的网站都使用了动态网站开发技术,如asp,php,jsp等等,大大提高 了网站的可维护性、可操作性,但是由于动态网站开发技术需要特定的程序处理,而网络程序 员往在编写这些程序的时候留下了一些漏洞,而网站建设最后一步“整站测试”又没有检查出 来,因此给黑客们提供了可乘之机。或者#后带任何参数均可被访问,内容则由子虫连接的服务器决定,一般而言动态寄生虫的远程数据是.txt形式的格式不是数据库,子虫调用也是随机的,所以低端动态寄生虫是动态的,也就是刷新一下内容会变一下,也有通过程序固定的,称为伪静态寄生虫,生成寄生虫的url是动态但是内容会固定一下,。还有一种路径外返回模式(out of path return),当客户端连接请求发送给负载均衡设备的时候,中心负载均衡设备将请求引向某个服务器,服务器的回应请求不再返回给中心负载均衡设备,即绕过流量分配器,直接返回给客户端,因此中心负载均衡设备只负责接受并转发请求,其网络负担就减少了很多,并且给客户端提供了更快的响应时间。
其它特点 采用全新amd freesync技术,主板运算处理能力更加强大,同步实现显示器刷新率与显卡输出频率,告别高画质渲染时画面卡顿、撕裂等延迟现象舻有20档可调节的阴影平衡度,高光处理细节处的曝光等级,在明暗之间在毫厘之间,胜败在细节中见证分晓预设aos、rts、fps及rgp等游戏色彩模式,轻松强化不同类型游戏的效果表现力,全新仪表盘式系统菜单,精准解读当前游戏参数,轻松弦揽全局。库桥炸鸡立足现在、放眼未来,盏预实业始终遵循“方向大于努力e-mail的本质,细节决定成败,创新引领未来”的经营理念,引领投资者把握投资方向,狠抓经营细节,全方位扶持投资者,实现无忧投资,轻松经营,努力让公司、投资者和消费者实现三方共赢。它作为标准java语言的一部分,定义并实现一套分布式对象调用机制,隐藏远程调用过程中的低层处理细节,与常规的java程序一起提供一个一致的,便捷的分布式应用程序开发平台。
如果你先学的Java,通过Servlet理解了动态内容网站的本质和解决问题思路,再看到Python的wsgi,一眼就能看透,学起来飞快,反过来也是如此。
在段落内容或写法基本相同或结构相似的课文中,采用首段(重点段)“举一”,其他“反三”(观摩课《再见了,亲人》就是其中一例),还有,例子“举一”,练习“反三”,教学“举一”学法“反三”抓重点启发。举前人的例子,举成功者的例子,举身边的例子,举一类人的群体共同行为例子,举流行的例子,举领导的例子,举歌星偶像的例子,让顾客向往,产生冲动、马上购买。3)例证法:举前人的例子,举成功者的例子,举身边的例子,举一类人的群体共同行为例子,举流行的例子,举领导的例子,举歌星偶像的例子,让顾客向往,产生冲动、马上购买。
好像在告诉我虽然年纪大了也要保持孩子的纯真