|  | 
				
					
			  
	2012年2月28日
	
 
			
			     摘要: 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
  冒泡排序算法的运作如下:
 比较相邻的元素。如果第一个比第二个大,就交换他们...  阅读全文 
			
			
基本介绍:showModalDialog()         (IE 4+ 支持)
 showModelessDialog()      (IE 5+ 支持)
 window.showModalDialog()                  方法用来创建一个显示HTML内容的模态对话框。
 window.showModelessDialog()             方法用来创建一个显示HTML内容的非模态对话框。
 使用方法:
 vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures])
 vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures])
 参数说明:
 sURL          --  必选参数,类型:字符串。用来指定对话框要显示的文档的URL。
 vArguments    -- 可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过
                           window.dialogArguments来取得传递进来的参数。sFeatures     -- 可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。
 ----------------
 1.    dialogHeight:    对话框高度,不小于100px
 2.    dialogWidth:    对话框宽度。
 3.    dialogLeft:     离屏幕左的距离。
 4.    dialogTop:     离屏幕上的距离。
 5.    center:          { yes | no | 1 | 0 } :              是否居中,默认yes,但仍可以指定高度和宽度。
 6.    help:             {yes | no | 1 | 0 }:                是否显示帮助按钮,默认yes。
 7.    resizable:       {yes | no | 1 | 0 } [IE5+]:     是否可被改变大小。默认no。
 8.    status:          {yes | no | 1 | 0 } [IE5+]:      是否显示状态栏。默认为yes[ Modeless]或no[Modal]。
 9.    scroll:            { yes | no | 1 | 0 | on | off }:是否显示滚动条。默认为yes。
 
 下面几个属性是用在HTA中的,在一般的网页中一般不使用。
 10.    dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印预览时对话框是否隐藏。默认为no。
 11.    edge:{ sunken | raised }:指明对话框的边框样式。默认为raised。
 12.    unadorned:{ yes | no | 1 | 0 | on | off }:默认为no。
 
 参数传递:
 1. 要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如:
 -------------------------------
 parent.htm
 <script>
 var obj = new Object();
 obj.name="51js";
 window.showModalDialog("modal.htm",obj,"dialogWidth=200px;dialogHeight=100px");
 </script>
 modal.htm
 <script>
 var obj = window.dialogArguments
 alert("您传递的参数为:" + obj.name)
 </script>
 -------------------------------
 2.可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如:
 ------------------------------
 parent.htm
 <script>
 str =window.showModalDialog("modal.htm",,"dialogWidth=200px;dialogHeight=100px");
 alert(str);
 </script>
 modal.htm
 <script>
 window.returnValue="http://homepage.yesky.com";
 </script>
 常见技巧: 一、怎样才让在showModalDialog和showModelessDialog的超连接不弹出新窗口?在被打开的网页里加上<base target="_self">就可以了。这句话一般是放在<head>之间的。
 二、怎样才刷新showModalDialog和showModelessDialog里的内容?在showModalDialog和showModelessDialog里是不能按F5刷新的,又不能弹出菜单。这个只能依靠
 javascript了,以下是相关代码: <body onkeydown="if (event.keyCode==116){reload.click()}"><a id="reload" href="filename.htm" style="display:none">reload...</a>
   将filename.htm替换成网页的名字然后将它放到你打开的网页里,按F5就可以刷新了,注意,这个要 配合<base target="_self">使用,不然你按下F5会弹出新窗口的。 三、如何用javascript关掉showModalDialog(或showModelessDialog)打开的窗口。<input type="button" value="关闭" onclick="window.close()">
 也要配合<base target="_self">,不然会打开一个新的IE窗口,然后再关掉的。
 四、Math.random与showModalDialog。    当你设置的弹出网页固定时(如上面的"modal.htm"页面),ie很可能到临时文件区,下载上次产生的该页面(openPage.html),而没有重新加载,    对于动态加载的页面来说,这样往往产生误会,如没有及时更新数据,也就更不利于开发者测试。所以,你可以采用如下方式:       var strPage = “/medal.htm?random="+Math.random();    这样每次产生的strPage是不一样的,原因也就不言自明了。   下面举两个例子 一、返回一个字符串 首先是父页面有个按钮,用来打开Modal页面userList.aspx 
 function openWin(){
 str =window.showModalDialog("userList.aspx",window,"status:0;help:0;edge:sunken;dialogWidth=700px;dialogHeight=400px");
 
 if(str!=undefined && typeof(str)!=undefined && str!="undefined" && str!="")
 {
 document.getElementById("txtuserid").value=str;
 }else
 {
 document.getElementById("txtuserid").value="";
 }
 }
 str就是子页面返回过来的数据,我们把它添加到父类的一个表单元素中 子页面 
    function getValue(){
          var selectValue=$(":radio:checked").val();window.returnValue=selectValue;
 window.close();
 }
 在这里我们把子页面里的值返回到父页面里就可以了,然后关闭页面就可以了 二、返回一个数据 父页面 
     function openWin(){
 
 array =window.showModalDialog("demo2.aspx",window,"status:0;help:0;edge:sunken;dialogWidth=700px;dialogHeight=400px;scroll:no");
 
 document.getElementById("username").value=array[0];
 document.getElementById("sex").value=array[0];
 
 
 }
 子页面   
   function getValue(){
 var array=new Array();
 
 array[0]=document.getElementById("username").value;
 Array[1]=document.getElementById("sex").value;
 window.returnValue=array;
 window.close();
 }
 返回一个数组就可以了,如果用open打开的话,在搜狗或者360浏览器打开的是一个页面或者阻拦什么的  前段时间在后台使用JS的winodw.showModalDialog来查看静态页面内容,发现不能及时显示更新后的页面内容,用open打开有时也会出现这种问题 解决办法 window.showModalDialog(getUrl+"?Rnd="+Math.random(),"","dialogWidth:600px;dialogHeight:400px;help:no;scroll:yes;center:yes;status:no;");
 这样就不会有缓存了
 
 多思考,多创新,才是正道! 
			
			
1.判断select选项中 是否存在Value="paraValue"的Item $("#selectid option[@value='paraValue']").length>0
 2.向select选项中 加入一个Item
 $("#selectid").append("<option value=''>1111<option>");
 3.从select选项中 删除一个Item
 $("#selectid").remove("<option value=''>1111<option>");
 4.修改select选项中 value="paraValue"的text为"paraText"
 $("#selectid option:selected").attr("value","paraValue").attr("text","paraText");
 5. 设置select中text="paraText"的第一个Item为选中
 $("#selectid option[@text='paraText']").attr("selected","true")
 6.设置select中 value="paraValue"的Item为选中
 $("#selectid option[@value='paraValue']").attr("selected","true")
 7.设置select中第一 个Item为选中 $("#selectid option").eq(0).attr('selected', 'true');
 8. 得到select的当前选中项的value $("#selectid").val();
 9.得到select的当前选中项的text
 $("#selectid").text();
 10. 得到select的当前选中项的Index
 document.getElementById("select1").selectedIndex;
 $("#selectid").get(0).selectedIndex
 11. 清空select的项
 $("#selectid").empty();
 JS版本的://1.判断select选项中 是否存在Value="paraValue"的Item   function jsSelectIsExitItem(objSelect,objItemValue)   {        var isExit = false ;        for ( var i=0;i;I++)        {            if (objSelect.options[i].value == objItemValue)            {                isExit = true ;                break ;            }        }             return isExit;   }     //2.向select选项中 加入一个Item   function jsAddItemToSelect(objSelect,objItemText,objItemValue, objItemPos)   {        //判断是否存在        if (jsSelectIsExitItem(objSelect,objItemValue))        {            alert( "该Item的 Value值已经存在" );        }        else        {            var varItem = new Option(objItemText,objItemValue);   //       objSelect.options[objSelect.options.length] = varItem;            objSelect.options.add(varItem, objItemPos);            alert( "成功加入" );        }      }     //3.从select选项中 删除一个Item   function jsRemoveItemFromSelect(objSelect,objItemValue)   {        //判断是否存在        if (jsSelectIsExitItem(objSelect,objItemValue))        {            for ( var i=0;i;I++)            {                if (objSelect.options[i].value == objItemValue)                {                    objSelect.options.remove(i);                    break ;                }            }                   alert( "成功删除" );                   }        else        {            alert( "该 select中 不存在该项" );        }      }     //4.修改select选项中 value="paraValue"的text为"paraText"   function jsUpdateItemToSelect(objSelect,objItemText,objItemValue)   {        //判断是否存在        if (jsSelectIsExitItem(objSelect,objItemValue))        {            for ( var i=0;i;I++)            {                if (objSelect.options[i].value == objItemValue)                {                    objSelect.options[i].text = objItemText;                    break ;                }            }                   alert( "成功修改" );                   }        else        {            alert( "该 select中 不存在该项" );        }      }             //5.设置select中text="paraText"的第一个 Item为选中   function jsSelectItemByValue(objSelect,objItemText)   {           //判断是否存在        var isExit = false ;        for ( var i=0;i;I++)        {            if (objSelect.options[i].text == objItemText)            {                objSelect.options[i].selected = true ;                isExit = true ;                break ;            }        }             //Show出结果        if (isExit)        {            alert( "成功选中" );                   }        else        {            alert( "该 select中 不存在该项" );        }      }     //6.设置select中value="paraValue"的Item 为选中   document.all.objSelect.value = objItemValue;     //7.得到select的当前选中项的value   var currSelectValue = document.all.objSelect.value;     //8.得到select的当前选中项的text   var currSelectText = document.all.objSelect.options[document.all.objSelect.selectedIndex].text;     //9.得到select的当前选中项的Index   var currSelectIndex = document.all.objSelect.selectedIndex;     //10.清空select的项   document.all.objSelect.options.length = 0; 
			
			封装 继承 多态 
面向对象的三个基本特征是:封装、继承、多态。   封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 继承 面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”。 被继承的类称为“基类”、“父类”或“超类”。 继承的过程,就是从一般到特殊的过程。 要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。 在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。 继承概念的实现方式有三类:实现继承、接口继承和可视继承。 Ø 实现继承是指使用基类的属性和方法而无需额外编码的能力; Ø 接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力; Ø 可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。 在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。例如,Employee 是一个人,Manager 也是一个人,因此这两个类都可以继承 Person 类。但是 Leg 类却不能继承 Person 类,因为腿并不是一个人。 抽象类仅定义将由子类创建的一般属性和方法,创建抽象类时,请使用关键字 Interface 而不是 Class。 OO开发范式大致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成) →用类与实例进行设计和实现几个阶段。 多态 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。 实现多态,有二种方式,覆盖,重载。 覆盖,是指子类重新定义父类的虚函数的做法。 重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。 其实,重载的概念并不属于“面向对象编程”,重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的(记住:是静态)。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!真正和多态相关的是 “覆盖”。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态(记住:是动态!)的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚邦定)。结论就是:重载只是一种语言特性,与多态无关,与面向对象也无关!引用一句Bruce Eckel的话:“不要犯傻,如果它不是晚邦定,它就不是多态。” 那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。 泛化(Generalization)   在上图中,空心的三角表示继承关系(类继承),在UML的术语中,这种关系被称为泛化(Generalization)。Person(人)是基类,Teacher(教师)、Student(学生)、Guest(来宾)是子类。 若在逻辑上B是A的“一种”,并且A的所有功能和属性对B而言都有意义,则允许B继承A的功能和属性。 例如,教师是人,Teacher 是Person的“一种”(a kind of )。那么类Teacher可以从类Person派生(继承)。 如果A是基类,B是A的派生类,那么B将继承A的数据和函数。 如果类A和类B毫不相关,不可以为了使B的功能更多些而让B继承A的功能和属性。 若在逻辑上B是A的“一种”(a kind of ),则允许B继承A的功能和属性。 聚合(组合)   若在逻辑上A是B的“一部分”(a part of),则不允许B从A派生,而是要用A和其它东西组合出B。 例如,眼(Eye)、鼻(Nose)、口(Mouth)、耳(Ear)是头(Head)的一部分,所以类Head应该由类Eye、Nose、Mouth、Ear组合而成,不是派生(继承)而成。 聚合的类型分为无、共享(聚合)、复合(组合)三类。 聚合(aggregation)   上面图中,有一个菱形(空心)表示聚合(aggregation)(聚合类型为共享),聚合的意义表示has-a关系。聚合是一种相对松散的关系,聚合类B不需要对被聚合的类A负责。 组合(composition)   这幅图与上面的唯一区别是菱形为实心的,它代表了一种更为坚固的关系——组合(composition)(聚合类型为复合)。组合表示的关系也是has-a,不过在这里,A的生命期受B控制。即A会随着B的创建而创建,随B的消亡而消亡。 依赖(Dependency)   这里B与A的关系只是一种依赖(Dependency)关系,这种关系表明,如果类A被修改,那么类B会受到影响 
			
			数列6,10,18,32,“?”,问“?”是几?    1。什么是3G,2。3C 融合技术,3。对大唐的认识。3G有三大制式,GSM升级后的WCDMA,CDMA升级后的CDMA2000,以及我国自主开发的TD-SCDMA。
 第三代移动通信技术(3rd-generation,3G),是指支持高速数据传输的蜂窝移动通讯技术。3G服务能够同时传送声音及数据信息,速率一般在几百kbps以上。目前3G存在四种标准:CDMA2000,WCDMA,TD-SCDMA,WiMAX。
 所谓“3C产品”,就是计算机(Computer)、通信(Communication)和消费类电子产品(ConsumerElectronics)三者结合,亦称“信息家电”。由于3C产品的体积一般都不大,所以往往在中间加一个“小”字,故往往统称为“3C小家电”。
 
 3C指的是计算机(Computer)、通讯(Communication)和消费类电子产品(Consumer Electrics)。3C融合即利用数字信息技术激活其中任何一个环节,通过某种协议使3C的三个方面实现信息资源的共享和互联互通,从而满足人们在任何时间、任何地点通过信息关联应用来方便自己的生活。 无线宽带正是实现数字家庭3C融合的首要步骤。
   第一部分:选择题1.相同码元速率下,那种传输方式信息传输速率最高
 QPSK 16QAM BPSK GMSK
 2.下面哪些属于差错控制编码
 3.自由空间传播环境下信号衰减与距离( )次方成比例
 4.下列哪些功能属于网络管理的功能域5a880faf6f?应届生求职网YingJieSheng.COM?c350ade2a4
 故障管理配置管理计费管理性能管理安全管理传输管理路由管理
 5.采用CDMA技术通信系统,扰码的主要作用
 信道估计信道区分信号白化同步
 6.交织的主要作用
 7.数据链路层的协议是
 HDLC ARQ PPP ICMP RTP6fe97759aa?应届生求职网YingJieSheng.COM?b922cfa312
 8.那种ATM协议最适合应用话音业务
 AAL5 AAL4 AAL3 AAL2
 第二部分:填空问答
 1.香农公式表达式
 2.爱尔兰含义
 最大话务量和BHCA分别取决于什么5568161a8c?应届生求职网YingJieSheng.COM?d5792c152c
 3.中继器,网桥.路由器,网关各是两个网络的哪层连接;路由器的功能是( )和( )
 4.解释QPSK调制的原理
 5.简述dB,dBm的概念
 6.画出数字通信系统的模型,简述信源编码和信道编码的区别,及其它们在无线通信系统中的作用
 7.C语言中能否在头文件中定义变量,并说明原因
 8.在Windows系统,能否动态链接库中定义变量,如果可以定义说明有效范围4005f8da13?应届生求职网YingJieSheng.COM?60d149af1f
 9.结构化程序设计中程序=
 面向对象程序设计中程序=
 10.解释return和exit的区别
 11.ATM网络信元长度是( ),所有信息在最底层以( )的方式传送,以保持电路交换适合于传送实时性很强的业务特点.
 12.什么是TDD,什么是FDD,多址方式又指什么?列出你所了解的多址方式
 13.谈谈对OSI或计算机网络中”协议””实体””服务”的理解以及什么是SDU PDU和Primitive?8f07f89ddb?应届生求职网YingJieSheng.COM?4c20a920bf
 14.GSM逻辑信道及分类
 15.谈谈你对移动通信系统组成的理解.
   1.    描述一下public,protected,private,final关键字在Java中的用法?
 public表示公共的,定义类的时候工程下任何包都可以读取到,protected是受保护的,只有在相同包内的类才能读取到,private定义方法时候只能在类内部才能读取到。final表示一个终态,是不可改变的。
 2.    Abstract class 和Interface 有什么区别?
 抽象类和接口的区别如下:
 (1、)抽象类是类,接口是接口;
 (2、)抽象类只能继承一个,接口可以多实现;
 (3、)抽象类定义一些静态变量可以,接口中不行;
 3.    Vector 和 ArrayList 有什么区别? HashTable 和 HashMap有什么区别?
 vector 和 Arraylist都是继承自集合类collection,vector是链表的方式实现的,读取熟读快,添加数据时候慢,Arraylist里面添加数据慢读取数据快。
 Hashtable和HashMap最大的区别是HashTable是同步的,HashMap是非同步的,所以性能上相对快一点,HashTable是继承自Dictionary类,而HashMap是继承自Map接口
 4.    Java集合中的Iterator起什么作用?
 java集合中Iterator主要作用是去除重复;
 5.    Java中创建一个对象有哪几种方法,区别是什么?
 java中创建对象可以实例化new
 6.    多线程有几种表示方法,都是什么?同步有几种实现方法,都是什么?
 多线程可以通过实现runable接口,也可以继承Thread类来实现。
 实现同步也有两种,一种是用同步方法,一种是用同步块.. 同步方法就是在方法返回类型后面加上synchronized, 比如:
 public void synchronized add(){...}
 同步块就是直接写:synchronized (这里写需要同步的对象){...}
 wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
 sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。
 notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。
 Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。
 7.    描述一下Java中的异常机制,什么是Checked Exception, Unchecked Exception?
 java中的异常机制要求你对一些存在的问题进行实现的规划,并对相应的Exception的情况进行设定,当程序捕获类似的情况就会抛出异常,你可以定义异常的处理方法,异常并不是致命的,它与错误有着区别,错误只要发生程序就会终止,但是异常会继续执行下去。
 java中的异常包括受检查的异常和不受检查的异常,(1、)受检查的异常:这种在编译时候被强制检查的异常被称作受检查异常,即在方法中声明的异常。(2、)不受检查的异常:在方法得声明中没有声明,但在方法的运行过程中发生的各种异常叫做不受检查的异常,这种异常是错误,会被自动捕获。一些规模较小的程序中,受检查的异常能够提高开发效率,但随着项目规模的扩大,过的的受检查的异常变得难以管理,其带来的好处也消失殆尽。
 8.    描述一下Java ClassLoader 或者 J2EE ClassLoader的工作原理?(可以画图)
 当运行程序是首先运行java虚拟机(JVM),然后把java class加载到JVM里运行,负责加载java class的这部分就叫做java ClsssLoader,
 JVM本身包含一个ClassLoader成为bootstrap ClassLoader,和JVM一样,BootstrapClassLoader使用本地代码实现的,它负责加载核心javaClass(即所有java.*开头的类)。另外JVM还提供两个ClassLoader,他们都是用java语言实现的,都是由BootstrapClassLoader负责加载,其中Extention ClassLoader负责加载扩展的javaclass(例如所有以javax.*开头的类和存放在JRE的ext目录下的类),ApplicationClassLoader负责加载应用程序自身的类。
 当运行一个程序的时候,JVM启动,运行Bootstrapclassloader,该classloader加载核心API(ExtClassloader和AppClassloader也在此时被加载),然后调用Extclassloader加载扩展API,最后AppClassloader加载CLASSPATH目录下定义的Class,这就是一个程序最基本的加载流程。
 9.    MVC的各个部分都有那些技术来实现?如何实现?MVC主要包括模型层,视图层,控制层。
 模型层主要由javabean实现,视图层是由jsp实现,控制层主要由servlet实现。
 10.    描述一下Struts的工作方式?
 struts1.2的工作方式主要是MVC实现,struts2是拦截器的方式实现。
 11.    JSP中包含哪几个内置对象?
 jsp包括九个内置对象,分别为:request,response,session,cookie,out,application,pageRequest,Exception,
 12.    JSP中两种跳转方式分别是什么?有什么区别?
 jsp两种跳转方式是重定向和页面跳转,其中重定向方式执行,form表单提交数据会失去,网络地址会变化,页面跳转不会;
 13.    描述一下JSP中taglib的用法?
 jsp中标签可以使java代码嵌入到页面上使用
 14.    Javascript中如何校验数字型?
 正则表达式
 15.    EJB2.0中包括哪些内容? 作用分别是什么?
 EJB2.0
 16.    一个SessionBean包含哪几个组件?各个组件作用是什么?
 
 17.    描述一下一个EJB应用中EJB部署文件,以及你所熟悉的App Server的部署文件的作用?
 
 18.    列举一下你所知道的设计模式(包括EJB,J2EE的设计模式),以及他们应用的场合?
 代理模式:把一个对象注入到一个类中通过这个注入的对象来完成一系列方法,
 工厂模式:一个接口下的所有类的实例可以通过专门的工厂类通过传递不同的参数来实现;
 Adapter(适配器)模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式的用意是将接口不同而功能相同或者相近的两个接口加以转换。
 单例模式:单例模式有两种:
 饿汉模式
 public class Singleton
 {
 private Singleton();
 priavate static Singleton singleton = new Singleton();
 public staic Singleton getInstance()
 {
 return instance;
 }
 }
 懒汉模式:
 public class Singleton
 {
 private static Singleton singleton = new Singleton();
 public static synchronize Singleton()
 {
 if(instance == null)
 {
 instance = new singleton();
 }
 return instance;
 }
 }
 19.    解析XML主要方法有哪些? 各有什么区别?
 1、xml有哪些解析技术?区别是什么?
 2、你在项目中用到了xml技术的哪些方面?如何实现的? 3、用jdom解析xml文件时如何解决中文问题?如何解析? 4、编程用JAVA解析XML的方式. 1、xml有哪些解析技术?区别是什么?解析XMl方法主要方法有文件流读取,页面XMLHttp读取。
 DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且dom必须在解析文件之前把整个文档装入内存
 SAX:适合对XML文件的随机访问,不像DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。
 StAX:当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问STAX:Streaming API for XML (StAX)
 2、主要用到了信息存储信息配置两方面,在做数据交换平台时,将不能用数据源的数据组装成xml文件,然后将xml文件压缩打包加密后发给接收者,接受解密解压缩后再同xml文件中还原相关信息进行处理。在做软件配置时候,利用xml文件可以方便的进行,软件的各种配置都存储在xml文件中。
 3、
 20.    您了解Open Source的项目吗? 如果了解请描述几个,并讲述一下他们的作用?
 apchetomcat就是一个比较好的开源项目,主要作为服务器来使用。
 struts是一个主要用于作为控制层的开源框架项目,
 spring是一个轻量级的开源项目,通过控制反转和代理模式实现
 Hibernate是个持久层框架,用来建立与数据库的持久层
 21.    您看过哪些JAVA方面的书籍,能列举一下吗?
 think in java ,core java,jquery in action, struts,spring ,hibernate等等方面的书都有涉猎。
 
			
			 <%@ page pageEncoding="utf-8" %>
<%@ page language="java" contentType="text/html; charset=GBK" %><%@ page import="java.util.*" %>
<%@ page import="java.io.OutputStream" %>
<%@ page import="jxl.Workbook" %>
<%@ page import="jxl.write.WritableCellFormat" %>
<%@ page import="jxl.write.WritableSheet" %>
<%@ page import="jxl.write.WritableWorkbook" %>
<%@ page import="jxl.write.WriteException" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%   
    response.reset();
    response.setContentType("application/vnd.ms-excel");
    response.setHeader("Content-Disposition", "filename=Member.xls");//attachment// WritableWorkbook是JexcelApi的一个类。
// 以下可以理解为创建一个excel文件,然后在excel里面创建一个表
    OutputStream os = response.getOutputStream();//取得输出流
    WritableWorkbook workbook = Workbook.createWorkbook(os);
    WritableSheet sheet = workbook.createSheet("First Sheet", 0);// 组织excel文件的内容
    jxl.write.Label label = null;
    int excelCol = 0;
    int row = 0;
    try {
        label = new jxl.write.Label(excelCol++, row, "帐号");
        sheet.addCell(label);
        label = new jxl.write.Label(excelCol++, row, "姓名");
        sheet.addCell(label);
        label = new jxl.write.Label(excelCol++, row, "身份证");
        sheet.addCell(label);
        label = new jxl.write.Label(excelCol++, row, "联系电话");
        sheet.addCell(label);
        label = new jxl.write.Label(excelCol++, row, "生日");
        sheet.addCell(label);
        label = new jxl.write.Label(excelCol++, row, "城市");
        sheet.addCell(label);
        label = new jxl.write.Label(excelCol++, row, "职业");
        sheet.addCell(label);
        label = new jxl.write.Label(excelCol++, row, "已购音箱型号");
        sheet.addCell(label);
        label = new jxl.write.Label(excelCol++, row, "试听与否");
        sheet.addCell(label);
        label = new jxl.write.Label(excelCol++, row, "邮箱");
        sheet.addCell(label);
        label = new jxl.write.Label(excelCol, row, "注册时间");
        sheet.addCell(label);
        //jxl.write.Number number = null;
        jxl.write.DateTime dateTime;
        jxl.write.DateFormat customDateFormat = new jxl.write.DateFormat("yyyy-MM-dd");//时间格式
        WritableCellFormat dateFormat = new WritableCellFormat(customDateFormat);        for(int i=0;i<10;i++){
            excelCol = 0;
            row = i + 1;            SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd");      
            sheet.addCell(label);            label = new jxl.write.Label(excelCol++, row, "100");
            sheet.addCell(label);            label = new jxl.write.Label(excelCol++, row, "100");
            sheet.addCell(label);            label = new jxl.write.Label(excelCol++, row, "100");
            sheet.addCell(label);            /*字串格式*/
            try{
                label = new jxl.write.Label(excelCol++, row, formatDate.format("100"));
                sheet.addCell(label);
            }catch (Exception e){
                //Maybe somebody fogot to input his birthday ,I need do nothing here!
            }            label = new jxl.write.Label(excelCol++, row, "100");
            sheet.addCell(label);            label = new jxl.write.Label(excelCol++, row, "100");
            sheet.addCell(label);            label = new jxl.write.Label(excelCol++, row, "100");
            sheet.addCell(label);            label = new jxl.write.Label(excelCol++, row, "100");
            sheet.addCell(label);            label = new jxl.write.Label(excelCol++, row, "100");
            sheet.addCell(label);            /*时间格式*/
          
                    //label = new jxl.write.Label(excelCol, row, formatDate.format(rr.getCreateTime()));
            //sheet.addCell(label);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally{
//      生成excel文件
        workbook.write();
        workbook.close();
        os.close();
    }
%>
   
			
			网上的 Jquery ajax Demo 大多都是基于php 很少 有java的 今天就把自己的Demo贴出来 和大家共同学习
 现在就  Jquery ajax 的 $.ajax(),$.post(),$.get();
 首先是  服务端的Servlet 演示这三个函数的用法对都是用的同一个 服务端 Java代码
 package com.june.servlet;
 
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletRequest;
 import java.io.IOException;
 import java.io.PrintWriter;
 import javax.servlet.ServletException;
 
 public class jqueryAjaxServer extends HttpServlet {
 public jqueryAjaxServer(){
 super();
 }
 public void doGet(HttpServletRequest request,HttpServletResponse response)
 throws IOException ,ServletException {
 response.setContentType("text/html;charset=utf-8");
 PrintWriter out=response.getWriter();
 String account=request.getParameter("account");
 if("iamcrzay".equals(account)){
 out.print("Sorry,the user is exist");
 }
 else{
 out.print("Congratulation,this accont you can use!!!!");
 }
 out.close();
 }
 public void doPost(HttpServletRequest request,HttpServletResponse response)
 throws IOException ,ServletException {
 this.doGet(request, response);
 }
 }
 package com.june.servlet; import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletRequest;
 import java.io.IOException;
 import java.io.PrintWriter;
 import javax.servlet.ServletException;
 public class jqueryAjaxServer extends HttpServlet {public jqueryAjaxServer(){
 super();
 }
 public void doGet(HttpServletRequest request,HttpServletResponse response)
 throws IOException ,ServletException {
 response.setContentType("text/html;charset=utf-8");
 PrintWriter out=response.getWriter();
 String account=request.getParameter("account");
 if("iamcrzay".equals(account)){
 out.print("Sorry,the user is exist");
 }
 else{
 out.print("Congratulation,this accont you can use!!!!");
 }
 out.close();
 }
 public void doPost(HttpServletRequest request,HttpServletResponse response)
 throws IOException ,ServletException {
 this.doGet(request, response);
 }
 }
   下面是WEB.XML Xml代码
 <?xml version="1.0" encoding="UTF-8"?>
 <web-app version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <servlet>
 <servlet-name>jqueryAjaxServer</servlet-name>
 <servlet-class>com.june.servlet.jqueryAjaxServer</servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>jqueryAjaxServer</servlet-name>
 <url-pattern>/jqueryAjax</url-pattern>
 </servlet-mapping>
 <welcome-file-list>
 <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
 </web-app>
 <?xml version="1.0" encoding="UTF-8"?><web-app version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <servlet>
 <servlet-name>jqueryAjaxServer</servlet-name>
 <servlet-class>com.june.servlet.jqueryAjaxServer</servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>jqueryAjaxServer</servlet-name>
 <url-pattern>/jqueryAjax</url-pattern>
 </servlet-mapping>
 <welcome-file-list>
 <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
 </web-app>
   下面是Jsp页面 第一个是 jqueryAjax.jsp  本页使用的是$.ajax()
 Html代码
 <%@ page language="java"  pageEncoding="utf-8"%>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <title>jquery ajax</title>
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <script src="js/jquery-1.2.6.js" type="text/javascript"></script>
 <script language="javascript">
 $(function(){
 $('.sumbit').click(function(){
 if($('#account').val().length==0){
 $('.hint').text("用户名不能位空").css({"background-color":"green"});
 }
 else{
 $.ajax({
 url:'jqueryAjax',
 data:{account:$('#account').val()},
 error:function(){
 alert("error occured!!!");
 },
 success:function(data){
 $('body').append("<div>"+data+"</div>").css("color","red");
 
 }
 
 });}
 });
 });
 
 
 
 </script>
 </head>
 
 <body>
 <h3 align="center">jquery AjaX</h3>
 <hr>
 <label>请输入用户名 :</label>
 <input id="account" name="account" type="text">
 <input class="sumbit" type="button" value="检测">
 <div class="hint">
 </div>
 </body>
 </html>
 <%@ page language="java"  pageEncoding="utf-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <title>jquery ajax</title>
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <script src="js/jquery-1.2.6.js" type="text/javascript"></script>
 <script language="javascript">
 $(function(){
 $('.sumbit').click(function(){
 if($('#account').val().length==0){
 $('.hint').text("用户名不能位空").css({"background-color":"green"});
 }
 else{
 $.ajax({
 url:'jqueryAjax',
 data:{account:$('#account').val()},
 error:function(){
 alert("error occured!!!");
 },
 success:function(data){
 $('body').append("<div>"+data+"</div>").css("color","red");
 
 }
 
 });}
 });
 });
 
 
 
 </script>
 </head>
 
 <body>
 <h3 align="center">jquery AjaX</h3>
 <hr>
 <label>请输入用户名 :</label>
 <input id="account" name="account" type="text">
 <input class="sumbit" type="button" value="检测">
 <div class="hint">
 </div>
 </body>
 </html>
   第二个用的是  $.post()  Html代码  <%@ page language="java"  pageEncoding="utf-8"%>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <title>jquery ajax</title>
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <script src="js/jquery-1.2.6.js" type="text/javascript"></script>
 <script language="javascript">
 $(function(){
 $('.sumbit').click(
 function(){
 if($('#account').val().length==0){
 $('.hint').text("The account is cant't be null").css({"color":"red","background-color":"yellow"});
 }
 else{
 $.post("jqueryAjax","account="+$('#account').val(),function(data){
 $('.hint').text(data).css({"color":"red","background-color":"yellow"});
 })
 }
 });
 });
 </script>
 </head>
 
 <body>
 <h3 align="center">jquery Ajax</h3>
 <hr>
 <label>请输入用户名 :</label>
 <input id="account" name="account" type="text">
 <input class="sumbit" type="button" value="检测">
 <div class="hint">
 </div>
 </body>
 </html>
 <%@ page language="java"  pageEncoding="utf-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <title>jquery ajax</title>
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <script src="js/jquery-1.2.6.js" type="text/javascript"></script>
 <script language="javascript">
 $(function(){
 $('.sumbit').click(
 function(){
 if($('#account').val().length==0){
 $('.hint').text("The account is cant't be null").css({"color":"red","background-color":"yellow"});
 }
 else{
 $.post("jqueryAjax","account="+$('#account').val(),function(data){
 $('.hint').text(data).css({"color":"red","background-color":"yellow"});
 })
 }
 });
 });
 </script>
 </head>
 
 <body>
 <h3 align="center">jquery Ajax</h3>
 <hr>
 <label>请输入用户名 :</label>
 <input id="account" name="account" type="text">
 <input class="sumbit" type="button" value="检测">
 <div class="hint">
 </div>
 </body>
 </html>
   第三个是用的$.get()  Html代码  <%@ page  pageEncoding="utf-8"%>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <title>jquery get</title>
 
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <script src="js/jquery-1.2.6.js" type="text/javascript"></script>
 <script type="text/javascript">
 $(function(){
 $('.sumbit').click(function(){
 if($('#account').val().length==0){
 $('.hint').html("用户名不能位空!!!").css({"color":"#ffoo11","background":"blue"});
 }
 else{
 $.get("jqueryAjax","account="+$('#account').val(),
 function(data){
 $('.hint').html(data).css({"color":"#ffoo11","background":"green"});
 });
 }
 });
 });
 </script>
 
 </head>
 
 <body>
 <h3 align="center">jquery AjaX</h3>
 <hr>
 <label>请输入用户名 :</label>
 <input id="account" name="account" type="text">
 <input class="sumbit" type="button" value="检测">
 <div class="hint">
 </div>
 </body>
 </html>
 
 
			
			div#loadPic {width: 10%;
 height:40px;
 position:absolute;
 z-index:4;
 margin-top: 50px;
 margin-bottom: 50px;
 margin-left: auto;
 margin-right: auto;
 padding: 0px;
 top:30%;
 }
 
			
			url=jsp?str="你好!" String areaName=(String)request.getParameter("areaname");
 String dpt=new String(dptName.getBytes("ISO8859-1"),"UTF-8");
 
			
			  apache-comcat配置虚拟主机和虚拟目录  jquery autocomplete 自动填充文本框、文本域JS 导出excel,word实例  2011-10-10 11:55:00|  分类: 默认分类 |  标签:js  excel  word   |字号大
 中
 小 订阅
 用js操作offace中的word,excel 必须首先确保你已经安装office,用js操作word,excel 用到了ActiveXObject类,它是专门用来调用windows操作中的程序的,下面是例子,直接复制到文本文件里,把后缀名改了就可以运行!
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 <title>无标题文档</title>
 <script type="text/javascript" language="javascript">
 function ExcelExport(tableid)
 {
   //检索浏览器   if(navigator.userAgent.indexOf("MSIE")<0){
 alert('请用ie浏览器进行表格导出');
 return ;
 }
 var oXL = null;
 try {
 oXL = GetObject("", "Excel.Application");
 }
 catch (E) {
 try {
 oXL = new ActiveXObject("Excel.Application");
 }
 catch (E2) {
 alert("请确认:\n1.Microsoft Excel已被安装.\n2.工具 => Internet 选项=> 安全 => 设置 \"启用不安全的 ActiveX\"");
 return;
 }
 }
     var table = document.getElementById(tableid);      var workbook = oXL.Workbooks.Add();
 var sheet = workbook.ActiveSheet;
 var sel = document.body.createTextRange();  //激活sheet
 
 //把table中的数据移到sel中
 sel.moveToElementText(table);
 
 sel.select(); //选中sel中所有数据
 sel.execCommand("Copy");//复制sel中的数据
 sheet.Columns("A:Z").ColumnWidth =20;//设置列宽
 // sheet.Columns("B").ColumnWidth =35;
 sheet.Rows(1).RowHeight = 35;//设置表头高
 //将sel中数据拷贝到sheet工作薄中
 sheet.Paste();
 oXL.Visible = true;
 //sheet.Save("F:\\TEST.XLS" );
 //通过打印机直接将Excel数据打印出来
 //sheet.Printout;
 //ax.UserControl = true;
 oXL.Quit();
 oXL=null;
 }
 </script>
 </head>
 <body><table width="100%" border="1" id="mytable">
 <tr>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 </tr>
 <tr>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 </tr>
 <tr>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 </tr>
 <tr>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 </tr>
 <tr>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 <td>nihao</td>
 </tr>
 </table>
 <form id="form1" name="form1" method="post" action="">
 <label>
 <input type="button" name="Submit" value="导出excel" onclick="ExcelExport('mytable')" />
 </label>
 </form>
 <p> </p>
 </body>
 </html>
   |