julyerr Blog

Do one thing , do it well

秋招开始了么

秋招开始了么

一个月左右没有更新blog了,中间经历了很多事。这篇post主要就过去经历事情的一些总结,以及谈谈以后的安排。 感觉还是要坚持写技术blog,一方面需要逼迫自己去学习和总结,另一方面使心平静下来,让深处都市中心灵不会那么浮躁。 过去一个月 春招回顾 4月底收到了tx的春招实习offer,后面也就没有继续面其他公司,算是画上春招的句号吧。从3月中旬开始,陆续面试了10家左右的公司...

tomcat集群配置

tomcat集群配置

web服务器和应用服务器的区别 web服务器是处理HTTP请求的计算机系统,看重系统的吞吐量、并发量的支持,通常提供了反向代理、负载均衡、静态缓存等服务,例如常见的Apache HTTP Server、Nginx等web服务器; 应用服务器则是一个服务层模型,为软件开发人员提供了一套可访问的组件api,让开发人员注重业务逻辑实现,如常见的tomcat web应用服务器。 集成...

Jasper以及tomcat常见应用配置

Jasper以及tomcat常见应用配置

jasper是tomcat中使用的jsp引擎,tomcat采用后台线程的方式定期检测JSP页面是否更新,如果更新,重新编译JSP页面并加载。 JSP编译方式 运行时编译 tomcat在客户端第一次请求时才编译需要访问的JSP文件 获取JSP文件路径有以下几种方式 指定了JSPFile属性,该属性值即为JSP文件路径(除非所有请求均定向单一的JSP页面,否则多数不会...

Coyote

Coyote

Coyote接受来自客户端的请求,按照既定协议(HTTP等)进行解析,然后交由Servlet容器处理。 tomcat链接器基础知识 应用通信协议 HTTP1.1:绝大部分web应用采用的协议 AJP:用于和Web服务器(如Apache HTTP Server)集成,用于静态资源优化和集群部署 HTTP2.0:下一代HTTP协议,tomcat8.5开始支持 IO模型...

多线程下载器

多线程下载器

最近重温《多线程并发编程》一书,收获挺多的。一直想动手写一个多线程工具,本着不能盲目造轮子,参考了 许多大神在github上的多线程实现的各种玩意(参考),最后决定做一个多线程的文件下载器。多线程文件下载器虽然 原理简单,但是把功能完善、各方面考虑周全还是有部分技术含量的。 下面是整个项目的workflow 多线程下载文件工作原理 将整个文件划分为不同段(通常通过设置”Con...

catalina

catalina

下面主要介绍tomcat的servlet容器实现–Catalina。catalina包含所有容器组件,涉及tomcat启动入口、shell程序以及安全、会话、集群等多个方面。 tomcat是servlet容器,catalina是核心,其他模块都是为其提供支撑,Coyote提供链接通信、Jasper提供JSP引擎、Naming提供JNDI服务,Juli提供日志服务。 Digester ...

tomcat总体架构

tomcat总体架构

这一阵子打算好好啃下几本有深度的书籍,同时整理好读书笔记。 tomcat作为一个开源web容器有很多内容值得去学习,例如工作流程、运行维护、整个架构包括设计模式等。虽然以前用过tomcat,但是总是感觉缺少点深度。知乎上推荐相关的资料,准备从《tomcat架构解析》、《深入剖析tomcat》以及部分源码的分析方面研究tomcat。 个人认为《tomcat架构解析》写得非常好,内容...

《java并发编程》AQS、原子变量和非阻塞同步机制

《java并发编程》AQS、原子变量和非阻塞同步机制

状态依赖性管理 类库中包含了许多状态依赖性(一些操作需要依赖具体状态进行的)的类如FutureTask、Semaphore和BlockingQueue等,通常只需要在类库中现有状态依赖类基础上进行构造;如果功能无法满足,可以使用java底层机制构造自己的同步机制,如内置条件队列、显示Condition对象以及AbstractQueuedSynchronizer框架等。 如果没有使用条件队...

面试中常见动态规划题目题解

面试中常见动态规划题目题解

前导 本人不是acmer,牛客网上题目对于acmer而言基本属于easy-mid类型的。问了好几个搞acmer然后拿到亚洲奖杯的大神,基本上只要参加了的公司的在线编程都能AK。幸好国内很多bat级别的公司不像Google、微软(现在景驰等)只考察算法,其他基本不问。 经过一两个月坚持刷题,感觉绝大部分公司的编程题目难度是逐年增加,数据结构和算法不会涉及到特别复杂的(如果存在...

《java并发编程》线程池及锁

《java并发编程》线程池及锁

在前面读书笔记中提及线程池,本文就线程池配置、高级使用和锁的特性总结。 任务与执行策略的隐形耦合 线程池中运行的线程并不是完全分离的,发现线程之间的关联对使用线程池起到至关重要的作用。 线程饥饿死锁 单线程Executor中,如果一个任务将另一个任务提交到同一个Executor中,通常会发生死锁。因为第二个任务等待第一个任务完成,第一个任务等待第二个任务完成,于是发生死锁。如下...