自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

终日思 < 须臾学

路漫漫其修远兮 吾将上下而求索

  • 博客(129)
  • 资源 (4)
  • 收藏
  • 关注

翻译 How tomcat works——引言

排版更好的百度电子书:https://yuedu.baidu.com/ebook/ac92f0d35122aaea998fcc22bcd126fff7055d60概述欢迎阅读《How Tomcat Works》。这本书详细的剖析了Tomcat 4.1和5.0工作原理,并讲解了其代号为“Catalina” 当前免费、开源、最流行的servlet容器的内部运作机制。Tomcat是个复杂的系统,它是由许多

2017-01-04 10:28:12 2519 1

原创 善借ChatGPT提效,Cursor四问答设计业务简一概念模型示例

人人都是程序员,AI神器Cursor辅助,体验自然语言编程

2023-04-12 14:40:10 187

原创 DDD:统一语言

磨刀不误砍柴工,多花一些时间去打磨统一语言,并非时间的浪费,相反还能改进领域模型乃至编码实现的质量

2023-03-02 19:46:47 521

原创 IDEA的Live Templates代码模板

IDEA的Live Templates代码模板一、简介本着“复杂的事情简单化,简单的事情标准化”的做事基本指导原则,我们发现日常编码中,有大量的代码可以提炼出模板进而简单化/自动化。1.可以大大提高编码效率;2.统一了通用代码风格;如果我们想做流程或者自动化,没有一个统一标准的话,我们要考虑的点就会很多:“标准”打磨形成“规范”,“规范”梳理成“流程”,“流程”推演到“自动化”...

2019-01-25 15:38:56 2876 3

原创 Maven项目脚手架

一、背景&目标当前新建项目时,配置文件往往都是从其它项目拷贝过来,拷贝时很容易踩坑,并且不容易定位问题。尤其对新人来说由于在对公司项目结构、基础中间件、配置还不了解的情况下,会浪费很多不必要的时间。故,希望通过脚手架解决此痛点,达到如下几个基本目标:1.统一规范工程项目&代码层次结构——约定大于配置;2.提升工作效率——脚手架&代码生成器&自定义插件;3....

2019-01-23 10:55:16 3647 2

原创 Maven中BOM

一、BOM简介BOM(Bill of Materials)是由Maven提供的功能,它通过定义一整套相互兼容的jar包版本集合,使用时只需要依赖该BOM文件,即可放心的使用需要的依赖jar包,且无需再指定版本号。BOM的维护方负责版本升级,并保证BOM中定义的jar包版本之间的兼容性。1.1、为什么需要BOM使用BOM除了可以方便使用者在声明依赖的客户端时不需要指定版本号外,最主要的原因...

2019-01-22 14:31:46 14268 1

原创 演示springboot + mybatis或springjdbc集成CAT全链路监控

演示springboot + mybatis或springjdbc集成CAT全链路监控一、主要资料参考服务端部署:https://github.com/dianping/cat/blob/master/cat-doc/posts/ch4-server/README.md总文档:https://github.com/dianping/cat/tree/master/cat-doc二、核心...

2019-01-21 14:02:36 3397

原创 Java中Callable和Future——简介

一、Java线程实现基础java中实现一个线程的方法是继承(extends)Thread类或者实现(implements)Runnable接口(我个人认为通过线程池启线程也算是)。继承Thread类:class A extends Thread{ @Override public void run() { //TODO }

2017-07-20 15:24:22 934

原创 Java中Callable和Future——引子

一、场景通常我们在一个事件方法中会去调用另外几个方法,如发用邮件,为了快速响应,一般最简单直接粗暴的是 新启一线程来异步发邮件(使用线程池较好)。这个时候我们不太在意所依赖的方法操作成功与否(即不需要结果)。但,多半我们是需要异步操作结果的。比如在Action层调用多个Service或在Service层方法中调用多个DAO。如下图,假设某Action层方法需要依赖调用a、b、c三个方法,它们三分别

2017-07-17 16:55:00 633

原创 Markdown编辑器editor.md的使用

一、Markdown和editor.md简介:Markdown在技术圈里(估计更多是程序猿吧)越来越流行。简单的语法,统一的格式,使用过程中,手基本上不用从键盘上移到鼠标上去,超级方便。写好了一篇md文档(也就是含Markdown语法格式的普通TXT文件),可以随意放到别的支持Markdown格式的网站上发布。editor.md是国内开源的一款在线Markdown编辑器,单纯基于前端JavaScri

2017-06-24 17:24:19 38593 13

原创 How tomcat works——序言

在路上2006年的暑假,抱着早点接触社会的心态,从合肥坐24小时绿皮车跑到广州打暑假工。当时感触到:学电气自动化的似乎天天要和那些油乎乎的机械打交道;哪一天如果自己想干点什么,初期投入买个设备都要很多钱。 广州回来后,一天下午我在家里菜园马路边的草丛中捡了一部摩托罗拉手机。手机里面的游戏启动屏是冒着热气的茶杯,还有着JAVA4个字母,第一眼就甚是喜欢那个图案——与君初相识,犹如故人归。2007年,

2017-06-15 18:19:38 758 1

原创 使用HttpClient和Jsoup定向抓取数据

1.业务需求:从指定外网抓点货,冷启动2.站点分析:.限制IP… .需要登录…… .对登录账号有抓取频率限制………. .抓取频率过低,直接跳验证码页面………….. .验证码长度、模样(纯数字&字母数字混合)TM不固定………………..“我们能不能不抓了?“ “不行!必须得抓…” “……”这么说,此前写的爬虫,多线程、生产者—>消费者 并发抓取压根行不通。多线程毫无意义。3.使用技术:1

2017-06-07 21:26:11 2189 1

原创 那些年——8 286&586[同步&异步]

所以,后来整理了:http://blog.csdn.net/LoveJavaYDJ/article/details/4645439阿军 说 (9:57):老大:还是说说,同步、异步 吧阿军 说 (9:57):举个例子:普通B/S模式(同步)AJAX技术(异步) 同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事 异步: 请求通过事件触发->服务器处理(这是浏览器仍

2017-06-05 19:32:18 768

原创 那些年——7 286&586

易德军 说 (10:45): 谈2个问题 寒林 说 (10:45): 怎么了? 易德军 说 (10:46): 那 我就可以 用你的账号和密码 登录系统 看你的东西了?! 寒林 说 (10:47): 对的 寒林 说 (10:47): 这是毫无疑问的事情 寒林 说 (10:47): 不过商业系统当然有保密规则在里边 而且还会对一些用户信息进行加密 寒林 说 (10:48): 你

2017-06-01 20:54:00 844

原创 那些年——6 286&586

易德军 说 (14:06): 老大:如何准确的获取客户端IP? request.getRemoteAddr()这个方法,如果别人使用代理服务器,就不准确了 寒林 说 (14:06): 恩 寒林 说 (14:06): 是的 寒林 说 (14:07): 如果有代理的话没有100%的办法 易德军 说 (14:07): 那咋办? 易德军 说 (14:

2017-05-31 20:52:48 668

原创 那些年——5 杜拉拉升职记

事实证明: 1.机会总是给有准备的人 2.实践出真知 3.独行侠时代已过去,受益于开源,理应更多分享

2017-05-29 11:34:44 625

原创 那些年——4 编码感受

编码感受 —2009-3-16 A.山重水复疑无路 B.柳暗花明又一村 这种感觉总在coding中循环.. 这种感觉就像内存指针 目前指针指向->A 有了www 总会指向->B 有追求,又总会指向->A.. 无限循环 最终,习得一身好本领

2017-05-27 18:24:52 542

原创 诡异的异常Cannot retry request with a non-repeatable request entity

越急越乱 越想早走,越让你走不了场景: 昨晚,使用solrj全量同步更新索引数据……生产环境 肚子饿……家里冰箱中还有半个西瓜…异常信息如下:org.apache.solr.client.solrj.SolrServerException: IOException occured when talking to server at: http://localhost:8080/solr/sd

2017-05-26 10:02:42 10330

原创 那些年——3 纯技术只是你手中的剑--而别人遥控着

电脑 胯下的骏马 技术 手里的宝剑 思想 驾驭骏马和宝剑的主人曾唉叹身不逢时、身不由己 如果在古代,也许自己是个劫富救贫、扬善除恶的侠客; 如果在近代,也许自己是个运筹帷幄、决胜千里的副将;(不适合做将军)曾自我安慰、自我激励 如今知识时代,你没有成为学者; 如今商业时代,你没成为经纪人;(不适合做老板) 时光倒流 你也不会是个侠客和副将!!

2017-05-23 20:27:52 574

原创 那些年——2 心声共鸣

刚刚看过CCTV-10一篇关于徽商 胡雪岩 生活启示 这么一个节目 主讲是台湾师范大学一教授,他说:我很庆幸是中国人,因为我们先辈们都把生活中经验教训总结为成语! 呵呵,我想这句话是说到我的心里来了!(为什么?以后慢慢写,现在没有时间) 胡雪岩说:一个人(人生)不能太顺;当你太顺时,一定要小心! 由此,我想到生活中:越是太平的路,骑车会摔的更惨;越是崎岖的路,

2017-05-20 16:43:21 599

翻译 How tomcat works——20 基于JMX的管理

概述第 19 章讨论了 Manger 应用程序,演示了如何使用实现了 ContainerServlet 接口的ManagerServlet 类来访问 Catalina 的内部对象。本章演示了如何使用JMX技术进而更方便、老练地管理 Tomcat。对于不熟悉 JMX 的读者,本章开头先进行了简单的JMX介绍。另外本章介绍了Catalina中使用的“Commons Modeler”建模库,它可以很简单的

2017-05-06 19:05:22 1347

原创 MySQL中删除重复数据只保留一条

使用SQL删除表中重复数据(单字段)You can't specify target table 'message' for update in FROM clause

2017-04-24 20:33:06 3866 1

翻译 How tomcat works——19 管理Servlet

概述Tomcat4/5有一个 Manager 应用程序用于管理部署的应用程序。跟其它应用程序不同,Manager 并不在%CATALINA_HOME%/webapps 目录下而是在%CATALINA_HOME%/server/webapps 下。Manager 有一描述文件 manager.xml在%CATALINA_HOME$/webapps(Tomcat4)或%CATALINA_HOME%/se

2017-04-16 18:57:43 1146

翻译 How tomcat works——18 部署

概述要使得一个 web 应用可以访问,则应用上下文(Context)必须先部署在主机(Host)上。在 Tomcat 中,一个应用上下文可以以 WAR 文件的形式部署,也可以直接将整个应用程序部署在Tomcat 安装目录的 wabapp 目录下面。部署的每个应用,都可以有一个配置描述文件用来配置该上下文,配置文件以 XML 文档的形式存在。注意:在 Tomcat4 和 5 中有两个已经部署好的应用:

2017-04-01 21:24:08 1148

翻译 How tomcat works——17 启动Tomcat

概述本章关注的重点是如何使用 org.apache.catalina.startup下面的Catalina和 Bootstrap 类来启动Tomcat。Catalina类用于解析Tomcat配置文件server.xml以及启动和停止Server。Bootstrap 类创建一Catalina实例并调用它的 process()方法。理论上,这两个类可以合成一个类。但是,为了支持 Tomcat 的多模式启

2017-03-29 21:08:07 1200

原创 《技术管理之巅》书摘笔记

技术团队定位: 技术引领 业务驱动 相互支撑(*)技术团队发展阶段: 1.初创期(首要任务打造产品或原型、技术人才储备、制定中长期技术发展规划) 2.发展期(伴随业务发展,技术团队工作重心是加快产品更新和升级,支持公司业务发展,同时制定技术服务体系) 3.成熟期(追求技术先进性,招募行业一流人才)技术管理目标: 使技术和业务高度融

2017-03-19 20:44:10 722

翻译 How tomcat works——16 关闭钩子

概述在很多环境下,当用户在关闭应用程序时我们需要做一些清理工作。问题在于,用户并不是经常的按照预推荐流程来退出。例如,在 Tomcat 部署中通过初始化一个服务器(Server)并调用它的 start()方法来启动一个 servlet 容器,该方法又调用其它组件的start()方法。正常情况下,可以通过一个关闭命令来让服务器关闭所有组件,犹如第14 章中介绍。如果突发地关闭程序,如在程序还在运行时关

2017-03-15 21:48:07 1335

翻译 How tomcat works——15 Digester

概述在前面章节中已经看到,使用 Bootstrap 类来初始化连接器、上下文、包装器以及其它组件。获得了它们的对象后,就可以使用 setXX()方法来关联它们。例如可以如下初始化连接器和上下文:Connector connector = new HttpConnector();Context context = new StandardContext();将连接器和上下文相关联起来可以如下实现:c

2017-03-14 20:24:08 1117

翻译 How tomcat works——14 Server和 Service

概述在前面的章节中已经看到了如何初始化连接器和容器并将它们关联起来作为Servlet 容器。前面只有一个连接器,通过端口 8080 对 HTTP 请求进行服务。我们不能添加另一个连接器来处理例如 HTTPS 的请求。另外,前面所有的配套Demo程序都缺乏一件事:很好地启动和停止 Servlet 容器的机制。在本章中,我们将提供了该机制以及其它一些附属组件:服务器(server)和服务(service

2017-03-10 21:45:36 708

翻译 How tomcat works——13 Host 和 Engine

概述本章要讨论的2个主题是主机(host)和引擎(Engine)。如果需要在一个 Tomcat部署中部署多个上下文,需要使用一个主机。理论上,当只有一个上下文容器时不需要主机,正如下面 org.apache.catalina.Context 接口中描述:“上下文容器的父容器通常是主机,但是可能有一些其它实现,没有必要的时候也可以忽略”然而在实践中,一个 Tomcat 部署往往需要一个主机。至于为什么

2017-03-08 20:49:59 1073

翻译 How tomcat works——12 StandardContext

概述如前面章节看到,一个上下文容器(Context)代表着一个 web 应用,每一个上下文包括一个或多个包装器(Wrapper),每个包装器代表一个 Servlet。然而,上下文还需要其它的一些组件,如加载器和管理器。本章介绍 Catalina 中Context 接口的标准实现类org.apache.catalina.core.StandardContext 。我们首先介绍 StandardCont

2017-03-07 21:04:20 812

翻译 How tomcat works——11 StandardWrapper

概述我们在第5章中已经学到,一共有4种容器:engine(引擎)、host(主机)、context(上下文)和 wrapper(包装器)。并且在前面的章节里也介绍了如何建立自己的context 和 wrapper。一个上下文一般包括一个或者多个包装器,每一个包装器代表一个 servlet。本章将介绍Catalina 中 Wrapper 接口的标准实现。首先介绍了一个 HTTP 请求会唤醒的一系列方法

2017-02-28 20:46:54 1105

翻译 How tomcat works——10 安全性

概述一些web 应用内容是受限的,只有在有特定权限的用户输入正确的用户名和密码后才能访问。Servlet 通过配置部署文件 web.xml 来对安全性提供技术支持。本章将介绍 container 如何支持安全性控制。servlet 容器通过一个称为 authenticator 的阀门(valve)来支持安全认证。当 container 启动时,authenticator 被添加到container

2017-02-24 20:25:30 1131

翻译 How tomcat works——9 session管理

概述Catalina通过名为manager的组件来完成session管理,该组件由org.apache.catalina.Manager接口表示。 一个manager总是与context相关联。 其中,manager负责创建,更新和销毁(无效)session对象以及可返回有效的session对象给任何请求组件。一个 servlet 可以使用 getSession()方法获得一个 session 对象

2017-02-11 21:31:12 999

翻译 How tomcat works——8 类加载器(Loader)

概述我们在前面的章节中已经实现了一个简单的加载器,用它来加载 servlet 类。本章会介绍标准的web应用加载器,简单地说就是加载器,在Catalina中。servlet容器需要定制加载器,而不能简单地使用系统的类加载器,因为系统类加载器不应该信任正在运行的servlet。如果像前面章节中那样使用系统的加载器来加载 servlet 和其它需要的类,这样 servlet 就可以进入 Java 虚拟机

2017-01-25 16:17:25 1018

翻译 How tomcat works——7 日志记录器

概述日志系统是一个记录信息的组件。在 Catalina 中,日志系统是一个跟容器相关联且相对简单的组件。Tomcat 在 org.apache.catalina.logger 包中提供了多个不同的日志系统。本章的应用程序在 ex07.pyrmont 包中。SimpleContext 和Bootstrap 是从第六章中修改得到。本章有三节组成,第一节介绍了所有日志系统都要实现的 org.apache.

2017-01-18 17:52:01 641

翻译 How tomcat works——6 生命周期

概述Catalina 由多个组件组成,当 Catalina 启动时,这些组件也需要很好地启动。当Catalina 停止时,这些组件也必须有机会被清除。例如,当一个容器停止工作时,它必须调用所有已加载 servlet 的 destroy()方法,而 session 管理器要把session保存到二级存储中。保持组件启动和停止一致的机制是通过实现org.apache.catalina.Lifecycle

2017-01-17 16:26:31 615

翻译 How tomcat works——5 容器

容器(container)是一用来处理 servlet 请求并填充返回对象给 web客户端的模块。接口org.apache.catalina.Container定义了容器的形式,有4种容器:引擎(Engine), 主机(Host), 上下文(Context), 和包装器(Wrapper)。本章将会介绍 context 和 wrapper,而 Engine 和 Host 会留到第13章介绍。本章从介绍

2017-01-15 21:07:46 1245

翻译 How tomcat works——4 Tomcat中默认连接器

概述第 3 章的连接器运行良好,且已获得较好性能。但是,它只是作为一教学工具,被设计用来介绍 Tomcat4 的默认连接器。理解第 3 章中的连接器对于理解 Tomcat4 的默认连接器是至关重要的。现在,我们在第 4 章中将通过剖析 Tomcat4 默认连接器的代码,讨论、创建一个真实的 Tomcat 连接器。注意:本章中提及的“默认连接器”是指 Tomcat4 中的默认连接器。即使默认的连接器已

2017-01-12 19:28:36 1544

翻译 How tomcat works——3 连接器

概述在前言简介中提到,Catalina中含有两个主要模块:连接器(connector)和容器(container)。本章中我们将会写一个可以创建更好的request和response对象的连接器,用来改进第 2 章中的应用Demo。一个符合 Servlet 2.3 和 2.4规范的连接器必须创建 javax.servlet.http.HttpServletRequest 和javax.servlet

2017-01-08 18:42:15 1562

大规模分布式存储系统:原理解析与架构实战

详细介绍分布式系统原理,介绍二阶段提交2pc协议,以及和Paxos协议配合使用;跨数据中心实现方案介绍

2016-12-30

学习Object类——为什么要重写equeals和hashcode方法

个人学习终结成果:为什么要重新equals和hashCode方法?如何重写?站好马步需从j2se基础开始

2010-10-25

CSS2.0参考手册

学习Css的参考手册 CSS 是 Cascading Style Sheet 的缩写。译作「层叠样式表单」。是用于(增强)控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

2010-10-20

深入浅出Android

本书重点讲解最简单,却又最有用的Android学习部分,对于初学者来说是非常好的学习资料...

2010-10-20

空空如也

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

TA关注的人

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