??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美大片黄色,69久久夜色精品国产7777,成人三级在线http://www.aygfsteel.com/jeffy/zh-cnTue, 17 Jun 2025 01:47:30 GMTTue, 17 Jun 2025 01:47:30 GMT60Struts + tomcat5.0.28 启动出现错误" 严重: Error filterStart"http://www.aygfsteel.com/jeffy/archive/2008/08/28/225425.htmlLive-in JavaLive-in JavaThu, 28 Aug 2008 14:22:00 GMThttp://www.aygfsteel.com/jeffy/archive/2008/08/28/225425.htmlhttp://www.aygfsteel.com/jeffy/comments/225425.htmlhttp://www.aygfsteel.com/jeffy/archive/2008/08/28/225425.html#Feedback0http://www.aygfsteel.com/jeffy/comments/commentRss/225425.htmlhttp://www.aygfsteel.com/jeffy/services/trackbacks/225425.html 查看tomcat的错误日志, 错误原因是:javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found

是由于jdk1.5 ?tomcat5.0之间的关?TransformerFactoryImpl cȝ冲突造成的?br />
用高版本的tomcat可以解冟?br />


Live-in Java 2008-08-28 22:22 发表评论
]]>
outlook最化到托盘设|?/title><link>http://www.aygfsteel.com/jeffy/archive/2008/08/21/223546.html</link><dc:creator>Live-in Java</dc:creator><author>Live-in Java</author><pubDate>Thu, 21 Aug 2008 08:35:00 GMT</pubDate><guid>http://www.aygfsteel.com/jeffy/archive/2008/08/21/223546.html</guid><wfw:comment>http://www.aygfsteel.com/jeffy/comments/223546.html</wfw:comment><comments>http://www.aygfsteel.com/jeffy/archive/2008/08/21/223546.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jeffy/comments/commentRss/223546.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jeffy/services/trackbacks/223546.html</trackback:ping><description><![CDATA[ 1.  打开HKEY_CURRENT_USER\Software\Microsoft\Office\11.0Q如果是Outlook XPQ此处ؓ10.0Q\Outlook\Preferences目<br />   2.  建立一个DWord的?双字节?,名称?MinToTray", 取值改?1 <img src ="http://www.aygfsteel.com/jeffy/aggbug/223546.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jeffy/" target="_blank">Live-in Java</a> 2008-08-21 16:35 <a href="http://www.aygfsteel.com/jeffy/archive/2008/08/21/223546.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle SQLPLUS 创徏用户表空间脚?/title><link>http://www.aygfsteel.com/jeffy/archive/2008/08/15/222186.html</link><dc:creator>Live-in Java</dc:creator><author>Live-in Java</author><pubDate>Fri, 15 Aug 2008 03:11:00 GMT</pubDate><guid>http://www.aygfsteel.com/jeffy/archive/2008/08/15/222186.html</guid><wfw:comment>http://www.aygfsteel.com/jeffy/comments/222186.html</wfw:comment><comments>http://www.aygfsteel.com/jeffy/archive/2008/08/15/222186.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jeffy/comments/commentRss/222186.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jeffy/services/trackbacks/222186.html</trackback:ping><description><![CDATA[<p>---删除用户及其用户下面的所有对?br /> drop user ca cascade;(删除用户下面的所有对象,注意关键字cascade)<br /> ---删除表空间及其表I间里的所有内?br /> drop tablespace ATMV INCLUDING CONTENTS;(删除表空_<br /> drop tablespace INDX INCLUDING CONTENTS;(删除表空_<br /> ----创徏表空_指定数据文gQ初始化100M 自增?0M<br /> create tablespace ATMV datafile 'D:/oracle/product/10.2.0/oradata/orcl/ATMV.dat' size 100m autoextend on next 50m maxsize unlimited; <br /> create tablespace INDX datafile 'D:/oracle/product/10.2.0/oradata/orcl/INDX.dat' size 100m autoextend on next 50m maxsize unlimited; <br /> -----创徏用户Q指定表I间<br /> create user ca identified by atm123 default tablespace ATMV ; <br /> ---l用h?br /> grant dba to ca; </p> <p>---q行SQL文g<br /> @D:\workspace\JATMP\ChannelAge.sql</p> <img src ="http://www.aygfsteel.com/jeffy/aggbug/222186.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jeffy/" target="_blank">Live-in Java</a> 2008-08-15 11:11 <a href="http://www.aygfsteel.com/jeffy/archive/2008/08/15/222186.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>webservice 参数传递相?/title><link>http://www.aygfsteel.com/jeffy/archive/2008/04/10/191849.html</link><dc:creator>Live-in Java</dc:creator><author>Live-in Java</author><pubDate>Thu, 10 Apr 2008 06:14:00 GMT</pubDate><guid>http://www.aygfsteel.com/jeffy/archive/2008/04/10/191849.html</guid><wfw:comment>http://www.aygfsteel.com/jeffy/comments/191849.html</wfw:comment><comments>http://www.aygfsteel.com/jeffy/archive/2008/04/10/191849.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jeffy/comments/commentRss/191849.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jeffy/services/trackbacks/191849.html</trackback:ping><description><![CDATA[<strong>关于axis1.2中对象的序列化和发序列化</strong>                             <p> <p>我从开始用wtp来开发web service开始, 在思考一个问题:<br /> 那些java的对象是可以序列化ؓxml的, q且可以从xml反序列化为java对象的?<br /> 那些对象与xml之间不能够序列化和反序列化?<br /> 在开发的时候应该注意哪些问题?<br /> <br /> Ҏ(gu)我的理解Q?有如下几U对象:<br /> 1Qaxis1.2内在支持的几U对象类型?br />           q几U内在支持的对象包括Q?br />           java基本cd : int, float,,,,<br />           基本cd包装c?: Integer, Float, Long...<br />           q有String, Date, Calendar, BigDecimal, BigInteger, List, Map.<br />     凡是q些内在支持的对象, 不管他们作ؓ某个Service的input q是 output, 我们在服务端的axis1.2的WEB-INF/server-config.wsdd的该Service的定义中都不需要加?lt;beanMapping>或者是<typeMapping>的声明?br /> <br /> 2Q简单的javabean对象cd?br />        对于单的javabean对象Q?比如对象中所有的field都是上面提到的基本类型?nbsp;axis1.2也提供了很好的支持?br />        比如Q?br />        public class JavaBeanInputService { <br />            public void testJavaBeanInput(MyBean bean) {<br />                ......<br />           }<br />        }<br />         ׃MyBean是一个自定义的JavaBean对象Q?所以在server-config.wsdd中就必须加上<beanMapping ...../>的声明, 让axis知道怎么把request中xml数据deserialize为MyBean对象Q?又如何把MyBean对象serialize为xml数据作ؓresponse.用wtp自动为JavaInputService生成的wsdl中, MyBean是作Z个complexType在wsdl中定义的?br /> <br /> 3Q复杂一点的JavaBean对象?br />         比如JavaBean对象中的一些field又是自定义的JavaBean,  q种情况下, wsdl中生成的complextype会有多个Q?而在wsdd定义?lt;beanMapping .../>也会有多个, axis1.2支持h都是易如反掌?br /> <br /> 4Q普通的非javabean对象?br />       对于一些不是javaBean的对象, wtp也会替你生成对应的wsdl的ComplexType, 依据的是对象的getterҎ(gu)。但是显然这是不够的?比如说有些对象的数据l构比较复杂Q?像java.util.HashMap(虽然q个已经被axis内在支持了?q些对象如果惌把自q状态进行serialization和deserializationQ?得自己~写serializer和deserializer,  而且q必M证wsdl中的该complexType的描q是正确的?br /> <br /> 5Qjava中的List, Map问题?br />        试想一下如果一个service的样子是q样子的?br />        public class ListService{<br />              public List listTest(List list) {<br />                     for(Iterator iter = list.iterator(); iter.hasNext(); ) {<br />                            (MyBean)list.next();//q行{?br />                     }<br />               }<br />        }<br />         用wtp个service生成的wsdl中把list映射Z个type为xsd:anyType的maxOccurs="unbound"的complexType。这L话客L生成的Stub中的接口中类g:<br />         public interface ListService{<br />              public Object[] listTest(Object[] list) ;<br />         }<br />         如果Client端用户传递的入口参数是String[]Q那么在服务端执行的必然会发生{型错误?br />         <strong><font color="#ff0000">因此Q在webservice中把List, Map作ؓservice的input, output的做法都是不可行的。至在jdk1.4的版本中是这L?br />         </font></strong>一个更好的Ҏ(gu)是:<br /> <br /> 6Qjava中的数组?br />       上例中的ListService如果攚wؓ下面q样Q基本上没有上面提到的问题了?br />       public class ListService{<br />              public MyBean[] listTest(MyBean[] list) {<br />                    ...<br />              }<br />        }<br />        q样在wsdl中, MyBean被映ؓ一UComplexTypeQMyBean[]为映ؓComplexType为映ؓ可以重复出现的MyBeancd。在客户端的Stub的接口跟q个也是cM的。从而也成功地避免了List, Map中型别问题?br />        要注意的是,在server-config.wsdd中需要配|?lt;arrayMapping.../><br />        gList, Map的问题用数组可以解决了。事实上是如此。但是还得注意的是:<br />    javabean里边也不能含有List. 如果MyBean跟其它某个对象是1Qn的关p,那么也只能写成数l的形式Q而不能是List的Ş式?br /> <br /> 7Q特D对象java.lang.Object<br />        如果一个service写成了下面的形式Q?br />        public class ObjectService{<br />              public Object objInvoke(Object obj) {<br />                    ...<br />              }<br />        }<br />         x它发布ؓweb service, 那么几乎是不太可能的。遇到objcdQwsdl里边只能定义为xsd:anyTypecdQ而这U类型如果给客户端返回一个比如MyBeancdQ那么必然会Dxml的serialization的失败。结论就是:<br />         <font color="#ff0000"><strong>web service中如果input 或者是output是java.lang.ObjectcdQ那么将会导致严重问题?br /> <br />         <br /> </strong>        </font><font color="#000000">上面的几U对象类型基本上能够늛java class发布为web service旉要考虑的对象类型。可以看到开发web service的时候,q不是所有的java都能够轻而易丑֜发布为web service, 一些复杂的cȝ对象cdQ还有一些特D的对象cd都是要考虑的。最后一个问题是Q子cL否也很容易的得到序列化和反序列化Q?br />          {案是肯定的。如下的Service:<br />           public class PolymorphicService{<br />              public MyBean objInvoke(MyBean obj) {<br />                    ...<br />              }<br />          }<br />           客户端的Stub如下:<br />           public class PolymorphicServiceStub{<br />              public MyBean objInvoke(MyBean obj) {<br />                    ...<br />              }<br />          }<br />          如果在客L调用stub时传入的不是MyBeancȝ对象Q而是它的子类的一个对象,那么也可以被序列化而传到服务端。同P如果服务端返回的对象是MyBeancȝ字类的一个对象,也可以成功的被序列化到客L?/font></p> <img src ="http://www.aygfsteel.com/jeffy/aggbug/191849.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jeffy/" target="_blank">Live-in Java</a> 2008-04-10 14:14 <a href="http://www.aygfsteel.com/jeffy/archive/2008/04/10/191849.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Axis2 复合cd的定义与调用http://www.aygfsteel.com/jeffy/archive/2008/04/01/190113.htmlLive-in JavaLive-in JavaTue, 01 Apr 2008 08:07:00 GMThttp://www.aygfsteel.com/jeffy/archive/2008/04/01/190113.htmlhttp://www.aygfsteel.com/jeffy/comments/190113.htmlhttp://www.aygfsteel.com/jeffy/archive/2008/04/01/190113.html#Feedback0http://www.aygfsteel.com/jeffy/comments/commentRss/190113.htmlhttp://www.aygfsteel.com/jeffy/services/trackbacks/190113.html

public class TestService {
 
 public String getStr(String input) {
  return "Input string:"+input;
 }
 
 public Bean getBean(Bean bean) {
  System.out.println("Bean Name:"+bean.getName());
  bean.setName(bean.getName()+"OK");
  
  Bean bb = new Bean();
  bb.setName("haha");
  return bb;
 }
 
 public Bean[] getBeans(String str) {
  Bean[] rets = new  Bean[2];
  Bean bean1 = new Bean();
  bean1.setName("name 1");
  Bean bean2 = new Bean();
  bean2.setName("name 2");
  
  rets[0] = bean1;
  rets[1] = bean2;
  return rets;
 }

}





server-config.wsdd中的配置Q?br />
自定义类
<typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" encodingStyle="" qname="ns6:Bean" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" type="java:com.test.bean.Bean" xmlns:ns6="http://bean.test.com"/>

数组
<typeMapping xmlns:ns7="http://bean.test.com" qname="ns7:ArrayOf_Bean" type="java:com.test.bean.Bean[]" serializer="org.apache.axis.encoding.ser.ArraySerializerFactory" deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory" encodingStyle="" /> 

客户端调用:
          String endpoint = "http://localhost:8081/axistest/services/TestService";

            Service service3 = new Service();
            Call call3 = (Call) service3.createCall();
            QName qn3 = new QName("http://bean.test.com","ArrayOf_Bean");
            //注册 bean
            call3.registerTypeMapping(Bean.class,qn,new BeanSerializerFactory(Bean.class, qn),new BeanDeserializerFactory(Bean.class, qn));
            call3.registerTypeMapping(Bean[].class,qn3,new BeanSerializerFactory(Bean[].class, qn3),new BeanDeserializerFactory(Bean[].class, qn3));
            call3.setTargetEndpointAddress(new java.net.URL(endpoint));
            call3.setOperationName(new QName("getBeans"));
            call3.addParameter("arg1", qn, ParameterMode.IN);
   call3.setReturnType(qn,Bean.class);

   java.util.ArrayList ret3 = (java.util.ArrayList) call3.invoke(new Object[] {"test--"});
            System.out.println((ret3==null)?"null":(""+ret3.size())); 


 

Live-in Java 2008-04-01 16:07 发表评论
]]>
Web2.0 技术瓶颈篇 Q{载)http://www.aygfsteel.com/jeffy/archive/2008/01/03/172447.htmlLive-in JavaLive-in JavaThu, 03 Jan 2008 05:30:00 GMThttp://www.aygfsteel.com/jeffy/archive/2008/01/03/172447.htmlhttp://www.aygfsteel.com/jeffy/comments/172447.htmlhttp://www.aygfsteel.com/jeffy/archive/2008/01/03/172447.html#Feedback0http://www.aygfsteel.com/jeffy/comments/commentRss/172447.htmlhttp://www.aygfsteel.com/jeffy/services/trackbacks/172447.html

当互联网吵吵嚷嚷的进?.0时代Q当互联|的技术不再是那么高不可攀Q当复制变成家常侉KQ互联网热闹h?/p>

     myspace火了Q中国冒出更多的myspace

     youtube刚刚hQ中国的视频|站遍地开?/p>

     51拔地而vQ中国出了无数的SNS

     facebook则改变了中国站长的抄袭方式,不再学chianren了,校内火了
     ..........

     当抄袭变成习惯,我想说的是,模仿Q站长,你准备好了吗Q?/p>

     如果你打做垃圾站,或者赚点广告费的网站,请不要点击这文章,我从技术角度方面谈谈WEB2.0|站的模仉K题?/p>

     当投资和量都不是问题的时候,我想说的是,(zhn)真的一帆风吗Q?/p>

     拿SNS|站来说Q当匆匆上线?.0Q当一W笔投资砸进ȝ时候,当流量上ȝ时候,(zhn)的困惑在什么地方?

     我做q多?.0公司的技术顾问,单的谈谈2.0公司遇到的问?涉及隐私Q我用A B C D代替)Q这里就不再赘述大家众所周知的页面静态化Q缓存和代码安全{问题了Q有Ҏ(gu)术的2.0公司的CTO都知道这些东西,我们谈点发展之后的问?/p>

A公司

     A公司做的是SNS|站Q程序是两个毛头伙子做的,目标直指51Q程序开发是一帆风,功能也比51牛多了,推广也是一帆风(A公司有自q到的推广 方式。但是当ALEXA?W的时候问题出来了Q每天下?点左叻I|站速度慢的惊hQ基本上打不开Q公怸台服务器CPU100%Q让人郁L是公司的 |络配置方式Q居然是双WEB的集,而单独一台DB数据库。整个瓶颈在数据库,于是我徏议做DB的集,分析了一下数据结构,MDQ典型的WEBE序?的作品,没有一Ҏ(gu)据库设计规范Q功能实现是可以Q如果要扩展Q不可能Q集基本上是不可能的,怎么办?不能办,于是Q一个月的时间修改程序,数据l构?本上换了一?前期砸进ȝ几十万打了水飘,用户走光了?/p>

     l论QWEB2.0前期设计的时候不应该只考虑功能Q应该认真考虑一下底层和数据l构了?/p>

B公司

     B公司也是做的SNS|站Q程序是3个h开发的QCEO是某名牌大学的经学士Q有点知q的味道,又有一些特色出来,说实话,公司的潜力不错,CEO 有很强的q作能力Q感觉前景不错。系l架构还行,但是---但是pȝ崩溃了,why?pȝ没有考虑到用h个v量的说法Q文件也有个量的说法,用户的相 册,囄全部存贮在WEB服务器的一个分ZQ每个用户一个目录,而打开性能监视器,盘的IO高的惊hQ基本上无暇响应。众所周知Q文件系l也是一个数 据库Q单独大文g无所谓,关键是整个是300多个G的零文Ӟ大量的读写操作,pȝ崩溃Q数据丢失,文gpȝ的一个链断了Q用h据全部丢失!Q!q是 一个非常沉重的问题Q系l整整停了一个月来做数据恢复Q单独文件很Ҏ(gu)Q但是v量文件目前还没有一个Y件能l织h软g架构Q。解x案:修改E序架构Q?做分布式文g存贮Q程序修改用?天,但是文g转移却又用去了将q一个月Q,20万用h失殆?/p>

     l论QWEB2.0前期的设计应该有应付量存贮的考虑Q整个涉及了E序架构的修改,前期规划不好的话基本上思\一条?/p>

C公司

     C公司是一个值得敬的公司,CEO技术出w,和比盖茨一P大学未毕业出来做|络Q?1?3q做短信狠赚了一W,后来做的项目也有所成,说实 话,我很佩服。公司做的是校友斚wQ但是更偏重myspace风格Q注重个Z,推广斚w也下了大手笔。系l崩溃的原因其实很简单,׃采用的是微Y?SqlServerQ而微软直接就告诉了我们,SQLSERVER不支持集,他们的数据库负载,100%没有下去过Q只能横向增加配|,采用??4核CPUpȝQ但是系l还是崩溃了... 高互动注定了高负载。解x案: C基本入手Q解x几个E序耗能大户Q对数据库采用横向切Ԍ用h10万进行分l,同时Ҏ(gu)据库pȝq行散列Q将多个表垂直分Ԍ同时q行文g分组 Q解决问? 因ؓ修改了数据结构,E序也基本上大动了一下?好在pȝ没有出大错,损失不算很大Q不q对用户体验造成了很坏的影响?/p>

     l论QWEB2.0前期设计应该有良好的散列考虑Q程序应该能有配合的扩充性,W合数据库的扩充

D公司

     D公司是一个各个方面做的比较好的公司,做了CDN加速,囄也独立分ZN个服务器Q数据库不错的一个,(CTO是个数据库专ӞQ系l崩溃的原因在于 WEBQ按道理说WEB很容易做集群的,但是发现集群q解决不掉问题,他们的集只允许?台的WEB集群Q但?台都当掉了。仔l分析,扑ֈ原因Q我?计整个也是大部分CTO最Ҏ(gu)犯的一个错误,或者说他们Ҏ(gu)想不到的问题,是WEB上传的问题,上传的时候由于时间的原因Q线E是保持链接的,300 个线E就可以把一个WEB Server当掉了。解x案:q个最单,把上传和其他耗能大户分离出独立出来。程序改动不是很大,但是之前半个月速度满对用户体验的损׃不可视?/p>

     l论Q没有什么结ZQ毕竟有量讉Kl验的CTO不多Q也是那几个大站的?/p>

     ȝQ不是泼hQ模仿其实是很容易的Q随便找几个WEBE序员就能做刎ͼq且很简单,速度可能q很高效Q因为WEB2.0无非是跟数据库打交道,会操 作数据库׃做。但是真正做大ƈ不容易,因ؓ能应付v量访问的E序q不单,现在的程序员都太自命不凡Q其实真正有l验的ƈ不多Q不要相信一个月?K- -10K的程序员能给你多大的惊喜Q能应付量讉K的程序员不是那个h。如果?zhn)惛_2.0Q想做大Q有几个个徏议:

     一.找DBMS的专家设计好数据库,大部分程序员都不知道分区视图Q数据散列,数据l的概念

     ?设计好程序架构(q个其实不难Q有个高人指导就行了Q,保持良好的扩展性,成本考虑可以扑օ职的pȝ架构设计师做好系l架构,定来的发展瓶颈?/p>

     ?考虑好文件存贮的问题。文件存贮的技术含量看h很低Q其实是很高的,可以考虑反向代理的方案。文件存贮出问题了,站点基本上就完蛋了,不仅仅是RAID的问题和存贮服务器的问题Q不q道理倒是一点就破的

     ?中国国情考虑Q这个最致命Q需要考虑?sh)信和网通的问题QCDNq不能解x有问题。互动性的东西qCDNq不是很有效。最关键的是Q现有的双线机房?到DDOSd基本上都会当掉,原因很简单,双线机房都是Uh机房Q本w就不会有太高的带宽Q随便攻M下就可以D掉(带提一个笑话,我知道一个双U机 房的老Ld1G的带宽却C4G的金监֢Q很?00M的攻d可以搞定Q?/p>

     ?|络延迟的问题,q是分布式系l必要考虑的,E序要能容忍0?00U的数据延迟的功能,也就是同步的问题。不要小看这几十U,问题很大的,如果?的站Ҏ(gu)交互式功能,比如x聊天Q你可以惌一下是个什么结果。对于即时聊天的东西Q可以用反向代理来解冻I成本较高Q。但是对于留a和评论的影响?大,但是如果pȝZ健壮做了~存和静态化的时候,q个东西可能是N性的了?/p>

     ?分散你的E序Q如果你没有太多的资金构{动辄百万的服务器,把功能分散开来,比如相册一台服务器Q留a一台服务器

     ?看好你的E序员,如果没有很好的激励措施的话你的程序员很容易写出敷衍性的代码Q而这个可能就是将来的大?zhn)Q程序架构定下来后要修改可能p费牛劲了。最好你的CTO能对?00%的衷心,100%的负责?/p>

     ?文g同步的问题,q个问题可能你觉得没有必要,如果你看一下网通和?sh)信的TTL明白了Q同步要支持l传Qƈ且不能是持箋的,否则你的成本会高出N倍,不要期望能通过你的软g实现Q交l你的程序员吧,把上面的话告诉他他就知道怎么做了?/p>

     ?最狠的一个问题了Q也是吃亏最大的问题Q不?zhn)跟网警的关系多好Q看好你的用P审核好你的东西,一被停机可能就致命Q本人就吃过Nơ亏?/p>




一个小型的|站Q比如个人网站,可以使用最单的html静态页面就实现了,配合一些图片达到美化效果,所有的面均存攑֜一个目录下Q这L|站对系l架构、性能的要求都很简单,随着互联|业务的不断丰富Q网站相关的技术经q这些年的发展,已经l分到很l的Ҏ(gu)面面Q尤其对于大型网站来_所采用的技术更是涉及面非常q,从硬件到软g、编E语a、数据库、WebServer、防火墙{各个领域都有了很高的要求,已经不是原来单的html静态网站所能比拟的?

大型|站Q比如门L站。在面对大量用户讉K、高q发h斚wQ基本的解决Ҏ(gu)集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编E语a、还有高性能的Web容器。但是除了这几个斚wQ还没法Ҏ(gu)解决大型|站面的高负蝲和高q发问题?

上面提供的几个解x\在一定程度上也意味着更大的投入,q且q样的解x\具备瓉Q没有很好的扩展性,下面我从低成本、高性能和高扩张性的角度来说说我的一些经验?

1、HTML静态化

其实大家都知道,效率最高、消耗最的是U静态化的html面Q所以我们尽可能使我们的|站上的面采用静态页面来实现Q这个最单的Ҏ(gu)其实也是最有效的方法。但是对于大量内容ƈ且频J更新的|站Q我们无法全部手动去挨个实现Q于是出C我们常见的信息发布系lCMSQ像我们常访问的各个门户站点的新闻频道,甚至他们的其他频道,都是通过信息发布pȝ来管理和实现的,信息发布pȝ可以实现最单的信息录入自动生成静态页面,q能具备频道理、权限管理、自动抓取等功能Q对于一个大型网站来_拥有一套高效、可理的CMS是必不可的?

除了门户和信息发布类型的|站Q对于交互性要求很高的C֌cd|站来说Q尽可能的静态化也是提高性能的必要手D,社区内的帖子、文章进行实时的静态化Q有更新的时候再重新静态化也是大量使用的策略,像Mop的大杂烩是使用了这L{略Q网易社区等也是如此?

同时Qhtml静态化也是某些~存{略使用的手D,对于pȝ中频J用数据库查询但是内容更新很小的应用,可以考虑使用html静态化来实玎ͼ比如论坛中论坛的公用讄信息Q这些信息目前的L论坛都可以进行后台管理ƈ且存储再数据库中Q这些信息其实大量被前台E序调用Q但是更新频率很,可以考虑这部分内容q行后台更新的时候进行静态化Q这样避免了大量的数据库讉Kh?

2、图片服务器分离

大家知道Q对于Web服务器来_不管是Apache、IISq是其他容器Q图片是最消耗资源的Q于是我们有必要图片与面q行分离Q这是基本上大型|站都会采用的策略,他们都有独立的图片服务器Q甚臛_多台囄服务器。这L架构可以降低提供面讉Kh的服务器pȝ压力Qƈ且可以保证系l不会因为图片问题而崩溃,在应用服务器和图片服务器上,可以q行不同的配|优化,比如apache在配|ContentType的时候可以尽量少支持Q尽可能的LoadModuleQ保证更高的pȝ消耗和执行效率?

3、数据库集群和库表散?

大型|站都有复杂的应用,q些应用必须使用数据库,那么在面对大量访问的时候,数据库的瓉很快p昄出来Q这时一台数据库很快无法满_用,于是我们需要用数据库集群或者库表散列?

在数据库集群斚wQ很多数据库都有自己的解x案,Oracle、Sybase{都有很好的Ҏ(gu)Q常用的MySQL提供的Master/Slave也是cM的方案,(zhn)用了什么样的DBQ就参考相应的解决Ҏ(gu)来实施即可?

上面提到的数据库集群׃在架构、成本、扩张性方面都会受到所采用DBcd的限Ӟ于是我们需要从应用E序的角度来考虑改善pȝ架构Q库表散列是常用q且最有效的解x案。我们在应用E序中安装业务和应用或者功能模块将数据库进行分,不同的模块对应不同的数据库或者表Q再按照一定的{略Ҏ(gu)个页面或者功能进行更的数据库散列,比如用户表,按照用户IDq行表散列,q样p够低成本的提升系l的性能q且有很好的扩展性。sohu的论坛就是采用了q样的架构,论坛的用户、设|、帖子等信息q行数据库分,然后对帖子、用h照板块和IDq行散列数据库和表,最l可以在配置文g中进行简单的配置便能让系l随时增加一C成本的数据库q来补充pȝ性能?

4、缓?

~存一词搞技术的都接触过Q很多地方用到缓存。网站架构和|站开发中的缓存也是非帔R要。这里先讲述最基本的两U缓存。高U和分布式的~存在后面讲q?
架构斚w的缓存,对Apache比较熟?zhn)的h都能知道Apache提供了自q~存模块Q也可以使用外加的Squid模块q行~存Q这两种方式均可以有效的提高Apache的访问响应能力?
|站E序开发方面的~存QLinux上提供的Memory Cache是常用的~存接口Q可以在web开发中使用Q比如用Java开发的时候就可以调用MemoryCache对一些数据进行缓存和通讯׃nQ一些大型社Z用了q样的架构。另外,在用web语言开发的时候,各种语言基本都有自己的缓存模块和Ҏ(gu)QPHP有Pear的Cache模块QJava更多了Q?net不是很熟(zhn),怿也肯定有?

5、镜?

镜像是大型网站常采用的提高性能和数据安全性的方式Q镜像的技术可以解决不同网l接入商和地域带来的用户讉K速度差异Q比如ChinaNet和EduNet之间的差异就促了很多网站在教育|内搭徏镜像站点Q数据进行定时更新或者实时更新。在镜像的细节技术方面,q里不阐q太深,有很多专业的现成的解x构和产品可选。也有廉L通过软g实现的思\Q比如Linux上的rsync{工兗?

6、负载均?

负蝲均衡是大型|站解决高负药问和大量q发h采用的终极解军_法?
负蝲均衡技术发展了多年Q有很多专业的服务提供商和品可以选择Q我个h接触q一些解x法,其中有两个架构可以给大家做参考?
g四层交换
W四层交换用第三层和第四层信息包的报头信息Q根据应用区间识别业务流Q将整个区间D늚业务分配到合适的应用服务器进行处理。 W四层交换功能就象是虚IPQ指向物理服务器。它传输的业务服从的协议多种多样Q有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理服务器基上,需要复杂的载量q法。在IP世界Q业务类型由l端TCP或UDP端口地址来决定,在第四层交换中的应用区间则由源端和终端IP地址、TCP和UDP端口共同军_?
在硬件四层交换品领域,有一些知名的产品可以选择Q比如Alteon、F5{,q些产品很昂贵,但是物有所|能够提供非常优秀的性能和很灉|的管理能力。Yahoo中国当初接近2000台服务器使用了三四台Alteon搞定了?

软g四层交换

大家知道了硬件四层交换机的原理后Q基于OSI模型来实现的软g四层交换也就应运而生Q这L解决Ҏ(gu)实现的原理一_不过性能E差。但是满一定量的压力还是游刃有余的Q有软g实现方式其实更灵z,处理能力完全看你配置的熟(zhn)能力?
软g四层交换我们可以使用Linux上常用的LVS来解冻ILVS是Linux Virtual ServerQ他提供了基于心跳线heartbeat的实时灾隑ֺ对解x案,提高pȝ的鲁性,同时可供了灵zȝ虚拟VIP配置和管理功能,可以同时满多种应用需求,q对于分布式的系l来说必不可?

一个典型的使用负蝲均衡的策略就是,在Y件或者硬件四层交换的基础上搭建squid集群Q这U思\在很多大型网站包括搜索引擎上被采用,q样的架构低成本、高性能q有很强的扩张性,随时往架构里面增减节点都非常容易。这L架构我准备空了专门详l整理一下和大家探讨?

对于大型|站来说Q前面提到的每个Ҏ(gu)可能都会被同时用到Q我q里介绍得比较浅显,具体实现q程中很多细节还需要大家慢慢熟(zhn)和体会Q有时一个很的squid参数或者apache参数讄Q对于系l性能的媄响就会很大,希望大家一赯论,辑ֈ抛砖引玉之效?br />



Live-in Java 2008-01-03 13:30 发表评论
]]>
找投?/title><link>http://www.aygfsteel.com/jeffy/archive/2007/12/15/167930.html</link><dc:creator>Live-in Java</dc:creator><author>Live-in Java</author><pubDate>Sat, 15 Dec 2007 04:35:00 GMT</pubDate><guid>http://www.aygfsteel.com/jeffy/archive/2007/12/15/167930.html</guid><wfw:comment>http://www.aygfsteel.com/jeffy/comments/167930.html</wfw:comment><comments>http://www.aygfsteel.com/jeffy/archive/2007/12/15/167930.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jeffy/comments/commentRss/167930.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jeffy/services/trackbacks/167930.html</trackback:ping><description><![CDATA[<h1>扑ֈ投资人的几种途径和方?nbsp;  http://zz.itjj.net/yingli/20071122/265135.html</h1> <img src ="http://www.aygfsteel.com/jeffy/aggbug/167930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jeffy/" target="_blank">Live-in Java</a> 2007-12-15 12:35 <a href="http://www.aygfsteel.com/jeffy/archive/2007/12/15/167930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>创业团队相关http://www.aygfsteel.com/jeffy/archive/2007/12/15/167924.htmlLive-in JavaLive-in JavaSat, 15 Dec 2007 04:07:00 GMThttp://www.aygfsteel.com/jeffy/archive/2007/12/15/167924.htmlhttp://www.aygfsteel.com/jeffy/comments/167924.htmlhttp://www.aygfsteel.com/jeffy/archive/2007/12/15/167924.html#Feedback1http://www.aygfsteel.com/jeffy/comments/commentRss/167924.htmlhttp://www.aygfsteel.com/jeffy/services/trackbacks/167924.html 

对创业团队的成员的要求:

         W一Q团队成员是否是创业型的人才。创业考验的不是你的技术,而是你承受压力的能力Q你忍受寂寞的能力,你放弃原有的L生活的牺牲精,你以目为核心的凝聚?#8230;…有很多h一时冲动加入进来,实际上,Ȁ情很快散去,觉得苦,觉得压力太大Q觉得时间不自由Q因占用你很多的业余旉Q?#8230;…如果大家都是吃苦耐劳、乐于牺牲的人,那这个团队无论结构是否完善,已经是一个好的团队;
    W二Q在l徏团队以前Q一定要弄清楚,成员加入q来是ؓ了什么?一个成员要加入创业团队Q一定要有至?0Q的因素是来自于认可q个目。如果不是对事情不利?

Live-in Java 2007-12-15 12:07 发表评论
]]>
spring环境配置Quartz方式的时间调度Q? 抛出例外http://www.aygfsteel.com/jeffy/archive/2007/11/26/163150.htmlLive-in JavaLive-in JavaMon, 26 Nov 2007 06:23:00 GMThttp://www.aygfsteel.com/jeffy/archive/2007/11/26/163150.htmlhttp://www.aygfsteel.com/jeffy/comments/163150.htmlhttp://www.aygfsteel.com/jeffy/archive/2007/11/26/163150.html#Feedback0http://www.aygfsteel.com/jeffy/comments/commentRss/163150.htmlhttp://www.aygfsteel.com/jeffy/services/trackbacks/163150.html   错误原因,使用?nbsp;default-autowire="byName" 方式 , 而配|文件中又有一个dataSource配置,它自动设|到Quartz的相关类里面,D出错, 解决办法,要么不用 autowire="byName" 方式,要么修改spring配置文g中的dataSource的bean,如改成dataSource1.

字段   允许?/th>   允许的特D字W?/th>
U?/code>   0-59   , - * /
?/code>   0-59   , - * /
  0-23   , - * /
日期   1-31   , - * ? / L W C
月䆾   1-12 或?JAN-DEC   , - * /
星期   1-7 或?SUN-SAT   , - * ? / L C #
q_可选)   留空, 1970-2099   , - * /


Live-in Java 2007-11-26 14:23 发表评论
]]>
Lucene 数据?全文搜烦 相关http://www.aygfsteel.com/jeffy/archive/2007/08/31/141798.htmlLive-in JavaLive-in JavaFri, 31 Aug 2007 09:34:00 GMThttp://www.aygfsteel.com/jeffy/archive/2007/08/31/141798.htmlhttp://www.aygfsteel.com/jeffy/comments/141798.htmlhttp://www.aygfsteel.com/jeffy/archive/2007/08/31/141798.html#Feedback1http://www.aygfsteel.com/jeffy/comments/commentRss/141798.htmlhttp://www.aygfsteel.com/jeffy/services/trackbacks/141798.html 用Lucene做搜索碰到的问题  http://www.javaeye.com/topic/82686?page=1
http://www.javaeye.com/topic/70305



Live-in Java 2007-08-31 17:34 发表评论
]]>
վ֩ģ壺 | | | ƽ| ƶ| | | | | | | ³| | | ̨| | ̨| ƺ| ʤ| | Ű| | | | ɽ| ɽ| Ƹ| Ϊ| | | | Ժ| | ԭ| ī| | ˮ| | ױ| Ƹ| ̨|