- 浏览: 842476 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
renzhengzhi:
请教一下楼主,公有云和私有云的开发,具体要做哪些工作呢?我拿到 ...
4,云的4 种模式 -
SangBillLee:
我用了solr5.5,用SolrQuery查询,没法高亮,不知 ...
solr5.x快速入门 -
lw900925:
这翻译读起来真是别扭。
solr in action翻译-第一章1.1 -
springjpa_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
Spring MVC性能提升 -
h416373073:
正遇到了此问题不知如何解决, 多谢分享
solr错误
一个可以创建更好的请求和响应对象的连接器,
一个符合Servlet 2.3和2.4规范的连接器必须创建javax.servlet.http.HttpServletRequest和javax.servlet.http.HttpServletResponse,并传递给被调用的servlet的service方法
,连接器解析HTTP请求头部并让servlet可以获得头部, cookies, 参数名/值等等
Tomcat所采用的方法是在一个属性文件里边存储错误信息,这样,可以容易的修改这些信息。不过,Tomcat中有数以百计的类。把所有类使用的错误信 息存储到一个大的属性文件里边将会容易产生维护的噩梦。为了避免这一情况,Tomcat为每个包都分配一个属性文件。
例如,在包 org.apache.catalina.connector里边的属性文件包含了该包所有的类抛出的所有错误信息。每个属性文件都会被一个 org.apache.catalina.util.StringManager类的实例所处理。当Tomcat运行时,将会有许多 StringManager实例,每个实例会读取包对应的一个属性文件
StringManager是一个单例 (singleton)类
你通过传递一个包名来调用它的公共静态方法 getManager来获得一个实例。每个实例存储在一个以包名为键(key)的Hashtable中。
private static Hashtable managers = new Hashtable();
public synchronized static StringManager getManager(String packageName) {
StringManager mgr = (StringManager)managers.get(packageName);
if (mgr == null) {
mgr = new StringManager(packageName);
managers.put(packageName, mgr);
}
return mgr;
}
应用程序由三个模块组成
connector, startup和core。
startup模块只有一个类,Bootstrap,用来启动应用的。connector模块的类可以分为五组
连接器和它的支撑类(HttpConnector和HttpProcessor)。
? 指代HTTP请求的类(HttpRequest)和它的辅助类。
? 指代HTTP响应的类(HttpResponse)和它的辅助类。
? Facade类(HttpRequestFacade和HttpResponseFacade)。
? Constant类
core模块由两个类组成:ServletProcessor和StaticResourceProcessor。
Runnable接口详解
在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;
Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的
run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限,
下面看例子:
package org.thread.demo;
class MyThread extends Thread{
private String name;
public MyThread(String name) {
super();
this.name = name;
}
public void run(){
for(int i=0;i<10;i++){
System.out.println("线程开始:"+this.name+",i="+i);
}
}
}
package org.thread.demo;
public class ThreadDemo01 {
public static void main(String[] args) {
MyThread mt1=new MyThread("线程a");
MyThread mt2=new MyThread("线程b");
mt1.run();
mt2.run();
}
}
但是,此时结果很有规律,先第一个对象执行,然后第二个对象执行,并没有相互运行。在JDK的文档中可以发现,一旦调用start()方法,则会通过JVM找到run()方法。下面启动
start()方法启动线程:
package org.thread.demo;
public class ThreadDemo01 {
public static void main(String[] args) {
MyThread mt1=new MyThread("线程a");
MyThread mt2=new MyThread("线程b");
mt1.start();
mt2.start();
}
};这样程序可以正常完成交互式运行。那么为啥非要使用start();方法启动多线程呢?
在JDK的安装路径下,src.zip是全部的java源程序,通过此代码找到Thread中的start()方法的定义,可以发现此方法中使用了private native void start0();其中native关键字表示可以调用操作系统的底层函数,那么这样的技术成为JNI技术(java Native Interface)
·Runnable接口
在实际开发中一个多线程的操作很少使用Thread类,而是通过Runnable接口完成。
public interface Runnable{
public void run();
}
例子:
package org.runnable.demo;
class MyThread implements Runnable{
private String name;
public MyThread(String name) {
this.name = name;
}
public void run(){
for(int i=0;i<100;i++){
System.out.println("线程开始:"+this.name+",i="+i);
}
}
};
但是在使用Runnable定义的子类中没有start()方法,只有Thread类中才有。此时观察Thread类,有一个构造方法:public Thread(Runnable targer)
此构造方法接受Runnable的子类实例,也就是说可以通过Thread类来启动Runnable实现的多
线程。(start()可以协调系统的资源):
package org.runnable.demo;
import org.runnable.demo.MyThread;
public class ThreadDemo01 {
public static void main(String[] args) {
MyThread mt1=new MyThread("线程a");
MyThread mt2=new MyThread("线程b");
new Thread(mt1).start();
new Thread(mt2).start();
}
}
· 两种实现方式的区别和联系:
在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比
继承Thread类有如下好处:
->避免点继承的局限,一个类可以继承多个接口。
->适合于资源的共享
以卖票程序为例,通过Thread类完成:
package org.demo.dff;
class MyThread extends Thread{
private int ticket=10;
public void run(){
for(int i=0;i<20;i++){
if(this.ticket>0){
System.out.println("卖票:ticket"+this.ticket--);
}
}
}
};
下面通过三个线程对象,同时卖票:
package org.demo.dff;
public class ThreadTicket {
public static void main(String[] args) {
MyThread mt1=new MyThread();
MyThread mt2=new MyThread();
MyThread mt3=new MyThread();
mt1.start();//每个线程都各卖了10张,共卖了30张票
mt2.start();//但实际只有10张票,每个线程都卖自己的票
mt3.start();//没有达到资源共享
}
}
如果用Runnable就可以实现资源共享,下面看例子:
package org.demo.runnable;
class MyThread implements Runnable{
private int ticket=10;
public void run(){
for(int i=0;i<20;i++){
if(this.ticket>0){
System.out.println("卖票:ticket"+this.ticket--);
}
}
}
}
package org.demo.runnable;
public class RunnableTicket {
public static void main(String[] args) {
MyThread mt=new MyThread();
new Thread(mt).start();//同一个mt,但是在Thread中就不可以,如果用同一
new Thread(mt).start();//个实例化对象mt,就会出现异常
new Thread(mt).start();
}
};
虽然现在程序中有三个线程,但是一共卖了10张票,也就是说使用Runnable实现多线程可以达到资源共享目的。
Runnable接口和Thread之间的联系:
public class Thread extends Object implements Runnable
发现Thread类也是Runnable接口的子类。
发表评论
-
21,tomcat关闭钩子
2012-11-22 20:35 6646在很多环境下,在关闭应用程序的时候需要做一些清理工作。问题在于 ... -
20,tomcat的XML解析---digester
2012-11-22 20:07 1559tomcat使用server.xml配置属性信息Tomcat使 ... -
19tomcat的服务器和服务
2012-11-20 20:10 1077Server服务器 Server接口表示整个Catalina ... -
18,tomcat的主机(host)和引擎
2012-11-16 09:13 2351如果需要在一个Tomcat部署中部署多个上下文,需要使用一个主 ... -
附,listener、 filter、servlet 加载顺序及其详解
2012-11-15 09:10 985一、 1、启动一个WEB项 ... -
17,tomcat中StandardContext
2012-11-15 08:59 5043一个上下文容器(Context)代表一个web应用,每一个上下 ... -
16,tomcat中StandardWrapper实现
2012-11-14 18:28 3890Wrapper接口在Catalina中的标准实现Standar ... -
15,tomcat安全
2012-11-14 09:02 1201有些web应用程序的内容是有限制的,只允许有权限的用户在提供正 ... -
14,tomcat session管理
2012-11-14 09:01 1104Catalina通过一个叫管理器的组建来完成Session的管 ... -
13.tomcat加载器
2012-11-13 13:21 1376库(repository)和源(res ... -
12,tomcat日志处理
2012-11-13 13:15 1248日志系统是一个记录信息的组件。在Catalina中,日志系统是 ... -
附:JAVA事件处理--观察者模式
2012-11-12 10:33 1001简单地说,观察者模式 ... -
11.tomcat生命周期
2012-11-12 10:26 988Catalina由多个组件组成,当Catalina启动的 ... -
10.容器
2012-11-12 10:12 1351容器是一个处理用户servlet请求并返回对象给we ... -
9.Tomcat的默认连接器
2012-11-12 08:52 1179Tomcat连接器是一个可以插入servlet容器的独立模块, ... -
7,Facade外观模式
2012-11-08 11:28 950外观模式:为子系统中的一组接口提供了一个一致的界面,此模式定义 ... -
6,一个简单的servlet容器
2012-11-08 11:10 855总的来说,一个全功能的servlet容器会为servlet的每 ... -
5.javax.servlet.Servlet接口
2012-11-08 09:18 951javax.servlet.Servlet接口Servlet编 ... -
4,一个简单的tomcat
2012-11-07 18:10 946流程图如下 -
3.ServerSocket 与 Socket的区别
2012-11-07 16:56 11871.1 ServerSocket类创建 ...
相关推荐
穆尔传感器与执行器的连接系统中,M8圆头连接器是一种常见的工业连接解决方案,它在自动化、传感器和执行器技术中扮演着重要角色。M8连接器由于其小型化和易于安装的特性,被广泛应用于控制信号和数据传输,适用于...
在本压缩包“终端连接器终端连接器.rar”中,我们可能找到了关于这一主题的相关资料,包括“终端连接器”这个核心概念的详细信息。 终端连接器,又称为接口或端口,它的作用是在电子设备、电路板或网络之间建立可靠...
航天JVPX系列加固混装型电连接器是VITA 46总线印制电路连接器的升级版本,其设计目标是为了满足在恶劣的力学与电磁环境下,以及对多种信号类型(差分信号、单端信号、光信号、射频信号、低频信号等)和大功率传输...
连接器适配器和附件 #### 概述 TopFlite Components, Inc. 是一家专注于生产高精度连接器适配器与配件的专业制造商。其产品广泛应用于航空、军事及工业领域,满足了客户对于高质量、高性能连接解决方案的需求。该...
《MSSQL连接器V2.0:深入解析与应用》 MSSQL连接器V2.0是一款专为Microsoft SQL Server设计的数据连接工具,它提供了高效、安全且灵活的接口,使得应用程序能够轻松地与SQL Server进行交互。在本文中,我们将详细...
IDC牛角座 PFC KF VH BH CH 连接器各类mm间距 PCB板常用连接器插件3D模型封装库大全(STEP后缀): 1.27mmheader.SLDPRT 1.27mmheader2.SLDPRT 1.27mmheader双弯.SLDPRT 1.27mmSMDheader1.SLDPRT 1.27mmSMDheader2....
连接器手册中文版是一个专业的连接器技术手册,该手册涵盖了连接器技术的总述、接触接口及接触过程、接触镀层、接触弹片材料、连接器用工程热塑性材料、可别离式电连接器、永久性连接概述、电线与线缆、电线与线缆的...
本手册旨在提供电连接器的设计指南,涵盖连接器的总述、接触接口、接触镀层、接触弹片材料、热塑性材料、可别离式电连接器、永久性连接概述、电线与线缆、机械式永久连接、印刷电路板、永久性连接、连接器应用、连接...
森特奈7/8"针式、孔式自由组装连接器是电子工程中常见的接口组件,主要用于电力或信号传输。这种连接器的设计允许用户根据需求灵活地组装和拆卸,适用于各种工业应用场合。以下是对森特奈7/8"连接器的详细解读: 一...
8. 应用:J30JH系列微型矩形电连接器广泛应用于航天器内部的电子设备之间,例如遥测系统、控制系统、数据处理系统等。 在PCB绘制过程中,工程师需要根据电连接器的详细规格书来进行设计。这包括了解连接器的pin脚...
【长江连接器选型目录.zip】是一个包含2018年长江连接器产品目录的压缩文件,主要聚焦在“连接器”这一核心主题上。连接器是电子工程中不可或缺的元件,它在电路中起到桥梁作用,使得电流或信号可以在不同组件之间...
5. 新能源汽车渗透率对市场的驱动作用:据智研咨询数据,2020年中国新能源汽车连接器市场达到47.8亿元,预计未来将继续增长。随着新能源汽车渗透率的提升,预期相关连接器市场也将得到进一步的推动。 6. 通信领域的...
华伦HLE系列连接器是电气工程中广泛应用的一种专业组件,主要用于实现电路之间的安全、可靠连接。这个RAR压缩包文件包含了一份详细的“华伦HLE系列连接器”PDF文档,很可能是该产品线的技术手册或用户指南,为使用者...
8. **定制服务**:为了满足特定应用需求,快可QC提供定制化服务,可以根据客户的要求设计和生产特定规格的连接器。 9. **应用领域**:快可QC的工业连接器广泛应用于能源、自动化、轨道交通、机械工程、航空航天等多...
在描述中提到的"5-8版本的连接器"涵盖了从MySQL 5.0到8.0的主要版本,这些版本的驱动程序支持了不同版本MySQL数据库的特性,包括但不限于新的SQL语法、性能优化以及安全性改进。 JDBC,Java Database Connectivity...
8. 机械性能:为了增加机械强度,连接器采用冲压夹片作为保持器,并在焊后提供额外的机械强度。此外,成型的导向柱有助于确保连接器的两个部分能够通过自对准的方式配合,补偿连接器的不对准。 9. 技术信息:SAS ...
《IEC 61076-8-106-2023:电源连接器的详细解析》 在电气和电子设备的世界里,连接器扮演着至关重要的角色,它们是设备间传递能量和信号的桥梁。国际电工委员会(IEC)制定的标准IEC 61076-8-106-2023,专门针对...
8. 高压连接器的互换性设计要求: * 高压连接器的互换性设计要求:高压连接器的互换性设计应满足相关的设计要求,以确保连接器的互换性和可靠性。 9. 动力电池高压连接器检验标准要求: * 动力电池高压连接器检验...
《连接器设计详解》 连接器作为电子产品中的关键元件,其设计的重要性不言而喻。在电子连接器设计中,有多个核心要点需要考虑,包括正向力设计、最大应力设计、保持力设计、接触电阻设计、金属材料选择以及应力释放...
8. **成本效益**:在满足性能需求的同时,也需要考虑连接器的价格和长期运行的成本。 9. **认证和标准**:连接器应符合相关的行业标准,如IEC、UL、CSA等,确保其质量和安全性。 通过以上这些方面的综合考量,我们...