初始化

Servlet 工作原理解析【转】

旧巷老猫 提交于 2020-03-20 01:06:04
3 月,跳不动了?>>> 简介: Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础。因而掌握 Servlet 的工作原理是成为一名合格的 Java Web 技术开发人员的基本要求。本文将带你认识 Java Web 技术是如何基于 Servlet 工作,你将知道:以 Tomcat 为例了解 Servlet 容器是如何工作的?一个 Web 工程在 Servlet 容器中是如何启动的? Servlet 容器如何解析你在 web.xml 中定义的 Servlet ?用户的请求是如何被分配给指定的 Servlet 的? Servlet 容器如何管理 Servlet 生命周期?你还将了解到最新的 Servlet 的 API 的类层次结构,以及 Servlet 中一些难点问题的分析。 从 Servlet 容器说起 要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 Servlet 容器的关系有点像枪和子弹的关系,枪是为子弹而生,而子弹又让枪有了杀伤力。虽然它们是彼此依存的,但是又相互独立发展,这一切都是为了适应工业化生产的结果。从技术角度来说是为了解耦,通过标准化接口来相互协作。既然接口是连接 Servlet 与 Servlet 容器的关键,那我们就从它们的接口说起。 前面说了 Servlet

实验6:Problem F: 时间和日期类(IV)

≯℡__Kan透↙ 提交于 2020-03-19 13:59:05
Description 设计一个日期时间类,用于读取输入的数据,按格式输出日期和时间。 设计日期时间类DateTime由2个成员组成,分别是一个Date类对象和一个Time类对象; 设计DateTime类需支持以下操作: DateTime::DateTime()无参构造方法:初始化为1年1月1日、0时0分0秒; DateTime::DateTime(int,int,int,int,int,int)构造方法:依照参数(顺序为年月日、时分秒)初始化对象; 在上述两个DateTime类的构造函数中输出:“CREATE DateTime : (y, m, d, hh, mm, ss)”,其中y、m、d为初始化对象时的年月日值,h、m、s为初始化对象时的时分秒值。参见输出。 DateTime::DateTime(const Date&,const Time&)构造方法:依照参数传入的日期和时间初始化对象; 在这个DateTime类的构造函数中输出:“CREATE DateTime : (y, m, d) (hh, mm, ss)”,其中y、m、d为初始化对象时的年月日值,h、m、s为初始化对象时的时分秒值。参见输出。 DateTime:DateTime(const DateTime&)构造方法:拷贝构造函数,初始化对象。 在拷贝构造函数中输出:“COPY DateTime : (y, m,

servlet生命周期

做~自己de王妃 提交于 2020-03-19 13:56:36
1. 生命周期 我们之前使用的都是javax.servlet.http.HttpServlet,这个类实现了javax.servlet.Servlet接口,而这个接口中定义的三个方法是所有servlet都必须实现的。 package javax.servlet; public interface Servlet { void init(ServletConfig config); void service(ServletRequest request, ServletResponse response); void destroy(); } 如图所示,tomcat之类的服务器首先根据web.xml中的定义实例化servlet,然后调用它的init()方法进行初始化,init()方法的ServletConfig参数是服务器传递进servlet的,其中包含web.xml配置的初始化信息和ServletContext对象等共享内容。 初始化后的servlet实例便进入等待请求的状态,当有与servlet-mapping匹配的请求进入时,服务器会调用servlet实例的service方法,传入ServletRequest与ServletResponse两个参数等待servlet处理完毕。 注意一点,对于每个web应用,内存中只存在一个servlet实例

[C#详解] (1) 自动属性、初始化器、扩展方法

我的梦境 提交于 2020-03-19 12:48:36
文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/CSharp-focus-1.html 代码下载: 点我下载 目录 前言 属性与自动属性 属性 自动属性 初始化器 对象初始化器 集合初始化器 扩展方法 无参数扩展方法 带参数扩展方法 结尾 前言 首先祝大家2015新年快乐! 新的一年,新的开始。来博客园安家已经快两个月了。每天看博客、写博客、评论、回答博问已经渐渐养成了一种习惯。可以很明显的感觉到泡在博客园里真的可以学到很多,不论是技术文章的还是一些记叙经历、抒发感想的随笔,都让我从各个方面受益良多。不知道大家是否和我一样,就是感觉博客园有一种特殊的魔力,让你没事就想上去看一眼,看上面是不是又有人发了新文章,而且累了的时候在上面看看非技术的东西也能放松自己。 有时会问自己:在博客园上花了这些时间和精力,是否值得?毕竟这也算是"义务劳动",不为自己创造任何价值,通俗点说就是不挣钱。但是每想一次这个问题我都会更加坚定自己的选择。坚持博客园的理由有三: 不断地利用博客园中的技术知识提高自己的技术水平,这无疑是在增加自身的价值。我觉得要想拿高工资,最本质的问题就是提高自身价值。对于我们技术人员来讲,就是知识面越广、掌握的技术越深入、编码的速度越快、质量越高、解决难题的问题越强,我们的价值就越高。博客园在这些方面对我们都是有帮助的。

Thinking in Java -- 类型信息RTTI

喜夏-厌秋 提交于 2020-03-19 00:14:26
Thinking in Java – 类型信息 个人感觉 java 中的比較难的部分了,在看了些netty源代码发现事实上这块很实用。 这章重点是RTTI和反射。先说下自己的理解 RTTI是执行时识别。在c++中是用virtual来实现的,在编译期会忽略对象的详细类型信息,假定我们已经知道,并在执行时详细识别。 Java反射机制实在执行状态中,对于随意一个类,都能够知道这个类的全部属性和方法。对于随意一个对象。都能够调用它的随意一个方法和属性,这样的动态获取的信息以及动态调用对 象的方法的功能称为Java的反射机制 Class对象 Class对象就是用来创建类的全部的“常规”对象的。Java使用Class对象来执行其RTTI. Class对象是什么 Java是一门纯面向对象的语言。在Java中,一切都是对象,也就是class,对于每一个类文件(每一个对象)编译后我们都会生成一个.class文件(javac hello.java —> hello.class)。*.class文件就是Class对象,在我们要第一次使用hello这个类文件时。JVM的类载入器会来载入hello.class文件,感觉Class对象就是一个模具。用来生产对象的。 注意:构造器也是静态方法 样例: package onefour_chapter; /** * Created by wwh on 15-8-7.

读书笔记之多线程——System.Thread.Timer

时间秒杀一切 提交于 2020-03-18 21:55:06
--居然工作很久都没有用过System.Thread.Timer。下面是在MSDN上的一些学习笔记。 首选是构造函数 : Timer(TimerCallback) //使用新创建的 Timer 对象作为状态对象,用一个无限周期和一个无限到期时间初始化 Timer 类的新实例。 Timer(TimerCallback, Object, Int32, Int32) //使用 32 位的有符号整数指定时间间隔,初始化 Timer 类的新实例。 Timer(TimerCallback, Object, Int64, Int64) //用 64 位有符号整数来度量时间间隔,以初始化 Timer 类的新实例。 Timer(TimerCallback, Object, TimeSpan, TimeSpan)//初始化 Timer 类的新实例,使用 TimeSpan 值来度量时间间隔。 Timer(TimerCallback, Object, UInt32, UInt32) //用 32 位无符号整数来度量时间间隔,以初始化 Timer 类的新实例。 备注: 使用 TimerCallback 委托指定希望 Timer 执行的方法。计时器委托在构造计时器时指定,并且不能更改。 此方法不在创建计时器的线程上执行,而是在系统提供的 ThreadPool 线程上执行。 创建计时器时

默认初始化、值初始化

橙三吉。 提交于 2020-03-18 21:52:47
默认初始化 1)当一个变量定义时没有指定初始值,将执行默认初始化(有一种特殊情况在值初始化的第2点) 2)默认初始化的初始值规则:对于内置类型:如果是全局变量的,则初始化为0,如果是局部变量的,则不被初始化;对于类,执行默认构造函数 值初始化 1)值初始化的初始值规则:与默认初始化规则一致 2)容器或数组定义时只给部分元素提供了初始值,则剩余部分元素将执行值初始化   如:int a[10]={0};  //只提供了一个0,剩余9个元素值初始化为0 3)容器初始化时只提供了数量没有提供初始值,则容器内元素将执行值初始化   如:vector<int> vec(10);  //vec中含有10个0     vector<string> vec(10);  //vec中含有10个空string     vector<bool> choose(10);  //vec中含有10个false 4) 静态局部变量 没有指定初始值,则执行值初始化( 不是默认初始化 ) 来源: https://www.cnblogs.com/Joezzz/p/9683161.html

Spring注解

徘徊边缘 提交于 2020-03-18 19:47:06
3 月,跳不动了?>>> 一、Bean的生命周期 流程 Bean创建 —— 初始化 —— 销毁 创建: 单实例:在容器启动时创建对象 多实例:每次调用时创建对象 初始化: 都是在对象创建完成后,调用初始化方法 销毁: 单实例:容器关闭时,调用销毁方法 多实例:容器不会管理这个bean,只能手动调用销毁方法 实现方式 在 @Bean 注解上指定初始化( initMethod )、销毁方法( destroyMethod ) @Bean(initMethod = "init", destroyMethod = "destroy") public Car car(){ return new Car(); } 让Bean实现 InitializingBean 和 DisposableBean 接口,重写它们的方法 public class Cat implements InitializingBean, DisposableBean { public Cat() { System.out.println("Cat...Construct..."); } @Override public void afterPropertiesSet() throws Exception { System.out.println("Cat...init..."); } @Override public

集合框架系列 Map(十):HashMap

柔情痞子 提交于 2020-03-18 18:17:13
目录 1 概述 2 原理 3 源码分析  3.1 构造方法   3.1.1 构造方法分析   3.1.2 初始容量、负载因子、阈值  3.2 查找  3.3 遍历  3.4 插入   3.4.1 插入逻辑分析   3.4.2 扩容机制   3.4.3 链表树化、红黑树链化与拆分  3.5 删除  3.6 其他细节  3.7 总结 1. 概述 本篇文章我们来聊聊大家日常开发中常用的一个集合类 - HashMap 。HashMap 最早出现在 JDK 1.2中,底层基于散列算法实现。HashMap 允许 null 键和 null 值,在计算哈键的哈希值时,null 键哈希值为 0。HashMap 并不保证键值对的顺序,这意味着在进行某些操作后,键值对的顺序可能会发生变化。另外,需要注意的是,HashMap 是非线程安全类,在多线程环境下可能会存在问题。 在本篇文章中,我将会对 HashMap 中常用方法、重要属性及相关方法进行分析。需要说明的是,HashMap 源码中可分析的点很多,本文很难一一覆盖,请见谅。 2. 原理 上一节说到 HashMap 底层是基于散列算法实现,散列算法分为散列再探测和拉链式。HashMap 则使用了拉链式的散列算法,并在 JDK 1.8 中引入了红黑树优化过长的链表。数据结构示意图如下: 对于拉链式的散列算法,其数据结构是由数组和链表(或树形结构)组成

react native初始化项目

落花浮王杯 提交于 2020-03-18 17:06:12
某厂面试归来,发现自己落伍了!>>> 打开命令行窗口,进入我们想要创建项目的父目录,输入命令: react-native init 项目名 进入新建的项目目录,执行升级命令: cd 项目名 react-native upgrade 提示:对于Windows,如果初始化项目出错,则可以尝试删除“系统安装盘符:\Users\用户名\.node-gyp”目录,然后在执行初始化命令;如果还有错,则可以尝试删除“系统安装盘符:\Users\用户名\AppData\Roaming\npm-cache”目录,这个目录是加速缓存目录,删了不会引起任何错误,然后再重新尝试。 使用Android手机进行调试 在命令行窗口输入:"adb devices"命令,如果手机打开了调试模式,则会看到类似于如下的内容: List of devices attached xxxx device 如果手机是android5.0或者以上操作系统,那么在命令行输入"adb reverse tcp:8081 tcp:8081"执行这条命令,若手机连接正常,则不会有任何显示。这条命令通过adb反向代理端口,将调试电脑的8081端口反向代理到测试机上。 若是5.0以下版本,则不需要执行上面的命令,现在需要保证手机与电脑使用同一个无线网络,在命令行窗口输入ipconfig,查看为电脑分配的网络地址并记下来。 在安装目录输入