自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

u010900754的专栏

真心希望国内博客环境 多一些原创 少一些复制

  • 博客(21)
  • 资源 (3)
  • 收藏
  • 关注

原创 【Tomcat】容器 之 Host

tomcat4.0版本。Host容器的职责是根据url的context来匹配特定的context容器处理请求。host在url中就是域名。host的构造方法会加入basic的valve: /** * Create a new StandardHost component with the default basic Valve. */ public S

2018-04-30 18:55:52 277

原创 【Tomcat】容器 之 Engine

连接器会把请求转发给下游的容器来处理,而engine容器就是下游容器体系中的顶层容器。其主要职责是根据请求的url来匹配合适的host容器。engine默认实现是standardEngine类:public class StandardEngine extends ContainerBase implements Engine {在构造方法中设置了该容器的basic valve:...

2018-04-30 18:14:24 252

原创 【Tomcat】容器

tomcat4.0版本。容器指的是实现了一定功能的组件,可以管理其他组件的生命周期。所以一个容器可能管理其他容器,也可能被其他容器管理。所以容器通常会形成一个层级关系。所以在容器接口中会有与子容器相关的接口: /** * Add a new child Container to those associated with this Container, * if supp...

2018-04-30 17:38:28 168

原创 【Tomcat】connector 连接器

tomcat4.0版本。连接器是tomcat组件中的一员,连同engine组件一起为service组件服务。一个service组件可以包含若干个连接器组件和一个engine组件。如果包含了多个连接器,那么应该是对应了多种传输协议,比如: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout=...

2018-04-30 16:04:54 456

原创 【设计】时序类数据 统计

主要用于服务的打点、数值分布以及延时统计。实现分成下面几个部分:1.客户端sdk;2.发送进程;3.接收进程;4.web客户端展示;1.sdk:提供类似如下的接口:log(name, count, value)name是统计名称,与业务相关;count是计数器;value是分布的值,比如延迟;count与value可以不同时存在,看具体使用需求...

2018-04-27 23:07:31 648

原创 【Tomcat】生命周期

tomcat4.0版本。生命周期在tomcat中由lifecycle接口表征,容器需要实现这个生命周期接口,这样每一个容器就可以由父容器来掌管生命周期,由父容器启动和终止。public interface Lifecycle { // ----------------------------------------------------- Manifest Constants ...

2018-04-25 22:10:34 506

原创 【Java】Lombok 插件

这是一个比较奇特的插件。基于注解,使我们的代码更简洁,帮助我们生成一些getter,setter或者tostring之类的代码。使用方式:1.引入maven: org.projectlombok lombok 1.16.10 这个maven的依赖为我们提供了注解的api。常见的注解:@Data,类级别注解,为我们生成

2018-04-24 21:39:30 173

原创 【Tomcat】pipeline valve 设计模式

这里侧重设计模式的角度,具体结合tomcat细节的运行机制,准备在另一篇写。只有先把这个模式抽出来理解清楚,再看tomcat的实现会更简单。pipeline模式并不难理解,类似servlet规范中的filter。指的是一个pipeline,需要多个阀门串行处理,流水线作业。那么很简单,我们可以写出如下的代码:import java.util.ArrayList;import ja

2018-04-22 12:00:39 893

原创 【servlet】获取参数

1.context级别,整个应用共享:在web.xml里定义: <context-param> <param-name>dbname</param-name> <param-value>mysql</param-value> </context-param>2.servlet级别...

2018-04-18 23:49:29 657

原创 【servlet】Servlet url-pattern, /与/*区别

servlet有自己的一套匹配规则。大致分三种,精确,路径和后缀。先说路径:以/开头且以/*结尾的是路径匹配,该路径下的所有url都会被匹配。如果可以匹配多个路径,那么以最长的为结果。后缀:*.xxx。固定写法,*前面不能有东西,不能和路径匹配一起用,比如/abc/*.txt是不允许的。有一种特殊的后缀匹配是“/*”,这个在所有的后缀匹配中优先级最高,可以匹配任何url。但是如果已经有精确匹配或者...

2018-04-18 23:36:32 635

转载 【数据结构与算法】base64 原理(转载)

今天排了一个base64的bug,mark一个不错的博客,之后再整理:https://blog.csdn.net/aozeahj/article/details/52507352

2018-04-18 19:20:46 193

原创 【maven】archetype创建项目 目录丢失

通过maven命令创建的项目总是和别人不一样,少了一些目录。比如:通过这个quick-start生成的目录结构没有resources文件夹:后来知道可以手动添加解决,但是貌似没人探究为什么会这样,忍不住略微查了查。原来每一个archetype的模板也是一个jar文件,里面定义了项目的目录结构,可以从https://mvnrepository.com/artifact/org.apache.mave...

2018-04-17 21:43:48 2100 2

原创 【Java】common-logging 日志解耦

之前介绍了常用的日志组件log4j的使用,如果直接使用log4j会有一个问题,那就是我们的应用会与日志组件耦合太紧,如果想要换一个日志的实现比如log4j2(只是举个例子,没准真的可以无缝升级),可能我们需要把每一个调用了log4j接口的地方全部修改,如果是一个大工程,这个非常头疼也可能出错。所以也就有了common-logging组件的出现,这个组件就是做日志解耦的。大体上,它定义了日志组件的接...

2018-04-15 19:14:03 702

原创 【java】工具类 设计思路

我们经常会写一些工具类,策略类的代码。这些类在功能上类似一个函数,那么最好的办法就是把接口设计成static的,使用方不需要new出来,只需要clazz.method()即可。这样省去了创建对象的空间,不需要gc用过的对象,而且简化了工具类的使用,不用关心new。但是有时候,我们的工具类没有这么简单,它可能需要有属性,或者存一些数据,比如启动时load一些配置,此时可以把这个类的属性方法全搞成st...

2018-04-14 21:55:35 2154

原创 【Java】为什么接口interface里的 变量是 static final 的?

今天突然问自己,接口的变量为什么是static和final的?static:必须。因为接口是可以多继承的。如果一个类实现了两个接口,且两个接口都具有相同名字的变量,此时这个变量可以被实现类使用,那么如果不是static的,这个变量来自哪一个接口就会产生歧义,所以实现类使用接口中的变量必须通过接口名指定,也就只能定为static的。看下面的例子:public interface iface1 { ...

2018-04-10 13:16:37 3732 3

原创 【Java】继承

尽量不要为了复用代码而使用继承。具体指,别人在其他包里开发的类,此时为了复用直接继承。也就是那个类的开发维护并不是由我们来掌控。这是因为由于自用性的存在,我们必须十分了解父类的实现,而且,父类随时可能更改,子类的一些假设会被推翻。什么是自用性?就是父类里面的方法调用了其他父类里面的方法,这个现象在继承的时候会有问题。如果父类的一个方法f使用了一个可以被子类覆盖的方法,那么,父类f方法原本的实现将会...

2018-04-10 11:23:47 154

原创 【Java】log4j 基本配置

为什么需要在项目中导入日志组件?当然,如果我们可以自己完全实现那就不说什么了,但是实际上没有人有时间去实现一个功能强大的日志组件。那么,如果不借助现成的,我们一般就是systemout一些,这种只能应付简单的情况,在大型项目中完全不够用,比如多种输出配置,需要输出到文件,需要输出到数据库等,输出到文件的要按天来划分,定义不同的等级。这些都是我们需要的,而日志组件可以很好地支持这些,我们直接用就行。...

2018-04-05 18:27:08 616

原创 【maven】生命周期和插件

maven生命周期指的是特定的一组有序的阶段。软件构建过程经过多年来的总结和发展,其实总归会有几个阶段,比如编译,测试,打包等,而且内置是有一定的顺序。所以maven所做的就是把这些经验性的总结吸收到自己的理念中,规范出一套通用的流程,这样maven的使用者就不用再重复地关心这个过程。maven最终总结出3个生命周期,每一个对应不同的使用场景,它们是default,clean,site。生命周...

2018-04-04 15:02:21 262

原创 【maven】resources 标签

默认maven只会把src/main/resources目录下的文件拷贝至classes文件夹下,这个其实是在超级pom下定义好的:  <build>    <directory>${project.basedir}/target</directory>    <outputDirectory>${project.build.directory}...

2018-04-02 23:03:20 637

原创 【maven】profile 配置不同环境

profile确实是一项很有用的功能,因为我们的项目的运行环境可以有几种,开发环境,测试环境,线上环境,意味着不同环境许多配置是不同的,比如数据库,缓存之类的。如果不借助一些构建工具,那么我们需要每改变一个运行环境就修改一次项目的配置文件,这在大型项目中很不方便,因为每一次改动都有可能引入错误,众多的配置文件很有可能遗漏。其次开发也不方便,提交代码什么的需要注意配置文件。但是借助了maven的pr...

2018-04-02 22:12:02 588

原创 【maven】helloworld 运行junit

maven安装过程略过。版本3.5.3。说先使用archetype插件生成项目骨架:mvn archetype:generate接着会要求填入一下项目的参数,或者项目坐标之后就可以看到项目目录了。pom.xmlsrc  main  test这是maven“约定优于配置”的体现,默认地,main目录下是源码,test目录是下是测试,最终打包时,测试部分不会进入包中。打开pom,看到junit依赖默认...

2018-04-01 13:26:57 478

设计模式的 课件

主要讲解了 设计模式的相关内容 包括类图等其他

2014-04-15

head first 审计模式

headfirst 一系列书籍中 对设计模式的讲解 很容易理解

2014-04-15

shell编程 详解

主要 讲解了linux中shell编程的相关内容 基础的语法 等

2014-04-15

空空如也

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

TA关注的人

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