自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(0)
  • 资源 (5)
  • 收藏
  • 关注

空空如也

Python数据科学手册 pdf版 可复制

本书是对以数据深度需求为中心的科学、研究以及针对计算和统计方法的参考书。本书共五章,每章介绍一到两个Python数据科学中的重点工具包。首先从IPython和Jupyter开始,它们提供了数据科学家需要的计算环境;第2章讲解能提供ndarray对象的NumPy,它可以用Python高效地存储和操作大型数组;第3章主要涉及提供DataFrame对象的Pandas,它可以用Python高效地存储和操作带标签的/列式数据;第4章的主角是Matplotlib,它为Python提供了许多数据可视化功能;第5章以Scikit-Learn为主,这个程序库为最重要的机器学习算法提供了高效整洁的Python版实现。 本书适合有编程背景,并打算将开源Python工具用作分析、操作、可视化以及学习数据的数据科学研究人员。

2019-03-20

How+Tomcat+Works中英版及书中源码

简介 欢迎来到"Tomcat是如何工作的"的世界。这本书将深入剖析Tomcat 4.1.12和Tomcat 5.0.18,阐述其内部被称为Catalina的这一自由开源且最为流行的Servlet容器的的内部工作流程。 Tomcat是一个复杂的系统,包含了许多不同的组件。真正想学习Tomcat的工作原理的,他们往往知道从何处入手。这本书将做的是描绘出Tomcat系统的宏观蓝图,然后通过用代码实现其内部各个组件的精简版本,使读者更方便地理解该组件。在此之后,才会介绍在在用的Tomcat中,这一组件是什么样的。 该篇引言,将帮助你明了本书的结构和大致了解你即将要亲手创建的应用程序。 首先请参阅"准备必备软件"这一节,了解你需要下载的软件和为你的代码创建怎样的目录结构。 这本书针对的读者 本书适合所有工作中涉及到Java方面知识的人。 1.如果你使用servlet、JSP来编程或仅是使用Tomcat,而且你对servlet容器的工作原理感兴趣,那么这本书适合你; 2.如果你想加入围绕Tomcat的开发队伍,这本书将适合你,因为你总得先知道现有的代码能干吗; 3.如果你从未有过web应用的开发经验但你有兴趣,这本书将适合你,因为你可以看到像Tomcat这样的一个大型的应用是如何设计和实现的; 4.如果你要基于Tomcat个性定制或配置,本书也将适合你。 想要理解本书中的讨论,你需要对Java中以及Servlet中的面向对象编程有所了解。如果你对servlet中的不是很熟悉,你可以参考很多相关书籍,比如 Budi的<<为WEB而生的Java——Servlets,JSP,and EJB>> ("Java for the Web with Servlets, JSP, and EJB")。 为方便读者理解,每章从相关背景开始展开,这些信息也是理解本章必须知悉的。 Servlet容器是如何工作的 一个Servlet容器就是一个足够复杂的系统。不过,为了处理一个servlet的请求,它要做的无非三件事: 1.创建一个request对象并用一些值(如参数,头部,cookie,查询串,URI统一资源定位符等)初始化它以供传入的servlet调用。该request对象是一个实现了javax.servlet.ServletRequest 接口或者 javax.servlet.http.ServletRequest接口的实例。 2.创建一个response对象以供传入的servlet用来向web客户端发送回复信息。该response对象是一个实现了javax.servlet.ServletResponse 接口或者 javax.servlet.http.ServletResponse接口的实例。 3.调用该传入的servlet的service方法,将request和response对象传进去。在这里,该servlet读取request对象里的数据和向response对象写数据。 随着你阅读的深入,你将读到更深入细致的讨论Catalina这一Servlet容器的知识。 Catalina框图 Catalina 是一个深奥微妙的软件,兼具优雅的设计和实现,更是模块化的。 从"How A Servlet Container Works"(Servlet容器是如何工作的)这一段, 你可以把Catalina 看做两个主要模块,连接器与容器。图1.1为简单说明:一个Container(容器)接收来自多个(Connector)连接器的请求。在之后的章节里,你将逐个接触每一个更小的组件。 图1.1详细解读:连接器将带着一个request连接到容器。连接器的任务是为每个它所收到的HTTP请求创建一个request对象和response对象。然后,连接器将执行权交给容器,容器从连接器获得了 request 和 response对象,并负责调用创建的Servlet的service方法。 以上描述只是冰山一角。容器能做的事情很多,在请求servlet的service方法前,它必须加载这个servlet,验证用户(如果要求的话),为此用户更新会话等。所以,一个容器调用很多不同模块来处理工作一点儿也不奇怪。例如,管理模块(manager)处理用户会话,装载模块装载servlet类等。 章节概要 本书有20个章节。前两章作为引子。第1章介绍一个HTTP服务器如何工作,第2章我们要写一个简单的servle容器。接下来的两章重点关注连接器;章节5到20围绕容器中的各个组件展开。以下是对各章节的摘要。 注意:在每一个章节讲解组件时,将同时解释一个类似的供参考的应用组件。 第1章以一个简单的HTTP服务器开始本书。要创建一个可以工作的HTTP服务器,你需要知道java.net包里两个类的内部工作机制:Socket 和 ServerSocket;关于这两个类,有足够的背景信息,以让你了解随附的供参考的应用的工作原理。 第2章介绍一个简单的Servlet容器如何工作。本章带有两个servlet容器应用程序,它们可以服务静态资源的请求,也可以对简单的servlet作出响应。特别的,你将学习如何创建request和response对象,并将他们传递给所要求的servlet的service方法。还附带了一个可以在容器内运行的servlet,并且你可以从Web浏览器调用该servlet。 第3章展示了一个简化版本的Tomcat4的默认连接器。在这一章中内置的应用程序作为一个学习工具,以便于理解在第四章中讨论的连接器。 第4章介绍Tomcat4的默认连接器。默认的连接器如今已被更快的被称为Coyote的连接器取代。不过,默认的连接器更简单,更容易理解。 第5章讨论了容器模块。容器的本质是实现org.apache.catalina.Container接口的类。总共有四种类型的容器:engine, host, context, 和 wrapper。本章提供了两个使用contexts和wrappers工作的应用程序。 第6章解释了Lifecycle接口。Lifecycle接口定义了任意一个catalina组件的生命周期,并提供了一个优雅的通知方式将发生在该组件的事情告知其他组件。此外,Lifecycle接口提供了一个使用一个单一的启动/停止指示即可启动和停止Catalina内部所有组件的优雅机制。 第7章讲述loggers,这是记录错误信息和其他信息时使用的组件。 第8章解释loaders。loaders是一种重要的Catalina模块,它负责加载Web应用程序需要使用的servlet和其他类。本章还介绍应用程序重新加载是如何实现的。 第9章讨论了 manager。 manager的组件用来管理session。本章解释了不同类型的managers和managers如何持久化 会话对象并保存为集合。在本章结束时,您将学习如何建立一个实用的应用程序,它使用一个StandardManager实例来运行一个使用session对象来存储值的servlet。 第10章包括Web应用程序的安全方面的机制,用来限制访问某些内容。您将学习 principals, roles, login config, authenticators等有关的安全实体,你也将写两个应用程序,在Standard Context对象安装一个过滤器,并使用基本身份机制验证用户。 第11章中详细解释了org.apache.catalina.core.StandardWrapper类,它代表着Web应用程序里的servlet。特别的,本章解释过滤器(filters)和servlet的service方法是如何被调用的。本章所附的应用实例使用StandardWrapper事例代表Servlet。 第12章中详细解释了org.apache.catalina.core.StandardContext类,它代表着一个Web应用程序。特别的,本章讨论了如何配置一个StandardContext对象,每当HTTP有请求时StandardContext对象内部发生了什么,。本章所附的应用实例使用StandardWrapper事例代表Servlet。 第13章中解释了host和engine两个其他容器。你可以查看这两个容器的标准实现类:org.apache.catalina.core.StandardHost 和 org.apache.catalina.core.StandardEngine. 第14章讲解server和service组件。server组件为整个servlet容器提供一个优雅的启动和停止机制。service组件扮演着一个容器和一个或多个连接器的持有人的角色。 第15章阐述如何通过Digester这个已存在的隶属于Apache软件基金组织的开源项目,配置一个Web应用程序。对于不了解此的读者,本章提供一节,扼要介绍Digester的库,以及如何使用它来转换XML文档中的节点成为一个Java对象。然后,讲述ContextConfig对象如何配置一个StandardContext实例。 第16章解释了Tomcat如何使用一个关闭引擎以便总能有时间做完清理工作,无论用户是如何关闭Tomcat的(即不论是合理地通过发送适当关闭命令或不适当地直接关闭控制台)。 第17章讨论了通过batchfiles和shell脚本来启动和停止Tomcat。 第18章介绍了部署器deployer,该组件负责部署和安装 Web应用程序。 第19章讨论一种特殊的接口,ContainerServlet,它让一个Servlet访问catalina内部对象。特别是,它讨论了Manager application,你可以用以管理已部署的应用程序。 第20章讨论了JMX和Tomcat如何通过为其内部对象创建MBean使之可管理化。 关于每章的应用程序 每一章随附了一个或多个应用程序,它们都围绕Catalina中一个特定的组件。通常你会发现对该组件的最简化版本的解释或通过代码来说明如何使用该catalina组件。每一章的所有的类和应用程序接口在类似于"章节'[章号].pyrmont"的包或子包里。 例如,第1章应用程序的类是在ex01.pyrmont包。 准备必备的应用软件 本书随附的应用可在1.4版J2SE运行。你可以从作者的网站www.brainysoftware.com下载该压缩的源代码文件。其中包含Tomcat 4.1.12和书中所有应用的源代码。假设你已安装J2SE 1.4,而且你的PATH环境变量已包含JDK的位置, 请按照下列步骤: 1。解压缩zip文件。所有提取的文件将驻留在一个新的目录HowTomcatWorks。 HowTomcatWorks是你的工作目录,它还包含了几个子目录,包括lib目录(包含所有需要的库),src(含源文件),Webroot(含一个HTML文件和三个servlet实例),webapps(包含示例应用程序)。 2。改变目录到HowTomcatWorks并编译Java文件。如果你是使用Windows,双击运行 win-compile.bat文件。如果您的计算机是一台Linux机器,键入以下内容:(如果有必要,不要忘记该文件模式为可执行的):./linux-compile.sh 注意,更多的信息可以在zip文件里的Readme.txt文件中找到的。 第一章:一个简单的Web服务器 本章介绍Java的Web服务器如何工作。 Web服务器也被称为超文本传输协议(HTTP)服务器,因为它使用HTTP协议与客户端(通常就是浏览器)沟通。一个基于Java的Web服务器使用两个重要的类:java.net.Socket和java.net.ServerSocket,信息交流是通过HTTP消息来实现的。 所以,自然地,本章从HTTP协议和这两个类的讨论开始。之后的章节将简单介绍随附的一个简单的web server application如何工作。 超文本传输协议(HTTP) HTTP是一种允许Web服务器和浏览器通过Internet来发送和接收数据的协议。这是一个请求和响应协议。 客户端请求一个文件,服务器响应该请求。 HTTP使用可靠的TCP连接,默认在TCP 80端口。 HTTP的第一个版本是HTTP/0.9,这是HTTP/1.0的前版本。代替HTTP/1.0是当前版本HTTP/1.1,其遵从(RFC)2616定义并可从http://www.w3.org/Protocols/HTTP/1.1/rfc2616.pdf下载。 注意:此节只简单介绍HTTP1.1,目的在于帮助你明白网络服务器应用程序(web server application)的消息发送机制。如果你对更多细节感兴趣,请阅读RFC 2616。 在HTTP中,始终是由客户端通过建立一个连接和发起HTTP请求来创建一个HTTP事务。该网站的服务器不会试图联系客户端或向客户端发出任何回调连接。 无论是客户端或服务器可以提前终止连接。例如,当使用一个Web浏览器,您可以点击浏览器上的停止按钮,停止某个文件的下载,有效地关闭与网络服务器的HTTP连接。 HTTP请求 HTTP请求包括三个部分: 1.HTTP的request方式(get/post),统一资源标识符(URI),协议/版本 2.请求头文件 3.实体主体内容 一个HTTP请求的例子是: POST /examples/default.jsp HTTP/1.1 Accept: text/plain; text/html Accept-Language: en-gb Connection: Keep-Alive Host: localhost User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98) Content-Length: 33 Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate lastName=Franks&firstName=Michael URI的协议版本出现在请求的第一行。 POST /examples/default.jsp HTTP/1.1 其中Post是请求方法,/examples/default.jsp代表URI,HTTP/1.1表示协议/版本。 每个HTTP请求可以使用HTTP标准中定义的诸多请求方法之一。 HTTP 1.1支持七种类型的请求GET, POST, HEAD, OPTIONS, PUT, DELETE, 和TRACE. GET和POST是最常用的。 URI能准确唯一定位一个Internet资源。URI通常采用相对于服务器的根目录的方式来表示。因而,它应该总是以"/"开头。URL本身即是一种URI(请参阅(http://www.ietf.org/rfc/rfc2396.txt))。协议版本代表使用了哪个版本的HTTP协议。 请求头文件包含了客户端环境和请求实体主体内容等有用信息。比如,浏览器的语言设置,实体主体的长度等。每个Header由一个回车换行符分隔开。 在header和实体body之间,有一个对HTTP消息请求格式十分重要的回车换行符。它告诉服务器body从哪里开始。在某些网络编程书中,该回车换行符被认为是一个HTTP请求消息的第四组成部分。 在前面的HTTP请求中,实体body就是如下简单的一行: lastName=Franks&firstName=Michael 它当然可以很容易就变得很长,比如在一个典型的HTTP请求里。 HTTP回应消息 与HTTP请求类似,HTTP回应消息也包含三部分: 1. 协议,状态码,描述信息 2. 回应头文件 3. 实体主体内容 如下为一个http回应的例子: HTTP/1.1 200 OK Server: Microsoft-IIS/4.0 Date: Mon, 5 Jan 2004 13:13:33 GMT Content-Type: text/html Last-Modified: Mon, 5 Jan 2004 13:13:12 GMT Content-Length: 112 <html> <head> <title>HTTP Response Example</title> </head> <body> Welcome to Brainy Software </body> </html> 回应消息的第一行和请求消息第一行类似。它表示使用HTTP1.1协议,客户端请求处理成功(200状态吗表示成功),而且一切正常。 回应消息的头文件像请求头文件一样,包含诸多有用信息。 实体body就是该响应消息中包含的HTML内容。 可以看到,请求头文件header和实体body之间用一系列的回车换行符分隔开。 套接字类(Socket) Socket是一个网络连接的终端。它使得网络应用程序可以向网络写入或从中读取数据。处于不同电脑上的两个应用程序通过一个网络连接相互发送/接收字节流,从而实现沟通。 要从你电脑里的应用发送消息到另一台电脑里的应用,你需要直到对方的IP和其应用程序的端口号。 在Java中,Socket是由java.net.Socket类来代表的

2017-09-12

自己动手写Java虚拟机及class文件解析分析工具(java8运行)

用go语言写的java虚拟机,主要是清楚的表达了jvm的原理。不懂go语言的其实也没关系,其中classpy这个可执行的jar文件,可以清楚的展现出class文件的结构

2017-09-12

深入Java虚拟机(原书第2版)及书中源代码

第1章 Java体系结构介绍 第2章 平台无关 第3章 安全 第4章 网络移动性 第5章 Java虚拟机 第6章 Java class文件 第7章 类型的生命周期 第8章 连接模型 第9章 垃圾收集 第10章 栈和局部变量操作 第11章 类型转换 第12章 整数运算 第13章 逻辑运算 第14章 浮点运算 第15章 对象和数组 第16章 控制流 第17章 异常 第18章 finally子句 第19章 方法的调用与返回 第20章 指令invokespecial 第21章 线程同步 附录A 按操作码助记符排列的指令集 附录B 按功能排列的操作码助记符 附录C 按操作码字节值排列的操作码助记符 附录D Java虚拟机的一个模拟:“Slices of Pi” 原码中的小程序是学习jvm非常好的工具

2017-09-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除