Java EE

springMVC简单程序流程分析

两盒软妹~` 提交于 2020-08-16 14:01:11
springMVC简单程序流程分析 第一部分 1.启动服务器,加载web.xml 当启动服务器的时候,就会加载web.xml文件,载入下面这段代码 < servlet > < servlet - name > dispatcherServlet < / servlet - name > < servlet - class > org . springframework . web . servlet . DispatcherServlet < / servlet - class > < init - param > < param - name > contextConfigLocation < / param - name > < param - value > classpath : applicationContext . xml < / param - value > < / init - param > < load - on - startup > 1 < / load - on - startup > < / servlet > < servlet - mapping > < servlet - name > dispatcherServlet < / servlet - name > < url - pattern > * . do < / url -

spring-boot学习:十九、spring-boot集成activemq

故事扮演 提交于 2020-08-16 14:00:53
一、安装activemq(windows) 下载后解压到指定目录 http://activemq.apache.org/components/classic/download/ 配置文件D:\software\apache-activemq-5.15.9\conf 1)jetty.xml 配置控制台地址和端口: <bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start"> <!-- the default port number for the web console --> <property name="host" value="0.0.0.0"/> <property name="port" value="8161"/> </bean> 角色: <bean id="securityConstraint" class="org.eclipse.jetty.util.security.Constraint"> <property name="name" value="BASIC" /> <property name="roles" value="user,admin" /> <!-- set authenticate=false to disable login -

开源HTTP解析器---http-parser和fast-http

本秂侑毒 提交于 2020-08-16 12:26:34
由于项目中遇到需要发送http请求,然后再解析接收到的响应。大概在网上搜索了一下,有两个比较不错,分别是 http-parser 和 fast-http 。 http-parser是由C编写的工具;fast-http是大部分移植自http-parser,用lisp语言编写的,不太适合目前的项目。fast-http介绍文档《 fast-http 》。 有一篇文章《 HTTP 协议解析库:fast-http 》介绍了fast-http,并且和http-parser进行了简单比较,结论是fast-http更快,快一倍。 另一个关于HTTP请求的简单介绍《 为你详细解读HTTP请求头的具体含意 》,可以作为背景知识简要阅读。 关于http-parser有一篇不错的实战文档《 【slighttpd】基于lighttpd架构的Server项目实战(7)—http-parser 》。 HTTP请求和响应格式 关于HTTP请求和响应的科普文档:《 HTTP请求和响应格式 》、《 HTTP请求格式和http响应格式 》、《 #HTTP协议学习# (一)request 和response 解析 》、《 HTTP协议详解 》。 Request格式 先看看请求纤细的结构,request消息分为3部分:Request line、Request header、Body。Request

【JVM之内存与垃圾回收篇】JVM与Java体系结构

大兔子大兔子 提交于 2020-08-16 12:18:52
JVM与Java体系结构 前言 作为 Java 工程师的你曾被伤害过吗?你是否也遇到过这些问题? 运行着的线上系统突然卡死,系统无法访问,甚至直接 OOM(out of memory)! 想解决线上 JVM GC 问题,但却无从下手。 新项目上线,对各种 JVM 参数设置一脸茫然,直接默认吧然后就 GG 了 每次面试之前都要重新背一遍 JVM 的一些原理概念性的东西,然而面试官却经常问你在实际项目中如何调优 VM 参数,如何解决 GC、OOM 等问题,一脸懵逼。 大部分 Java 开发人员,除会在项目中使用到与 Java 平台相关的各种高精尖技术,对于 Java 技术的核心 Java 虚拟机了解甚少。 一些有一定工作经验的开发人员,打心眼儿里觉得 SSM、微服务等上层技术才是重点,基础技术并不重要,这其实是一种本末倒置的“病态”。如果我们把核心类库的 API 比做数学公式的话,那么 Java 虚拟机的知识就好比公式的推导过程。 计算机系统体系对我们来说越来越远,在不了解底层实现方式的前提下,通过高级语言很容易编写程序代码。但事实上计算机并不认识高级语言 架构师每天都在思考什么? 应该如何让我的系统更快? 如何避免系统出现瓶颈? 知乎上有条帖子:应该如何看招聘信息,直通年薪 50万+? 参与现有系统的性能优化,重构,保证平台性能和稳定性 根据业务场景和需求,决定技术方向,做技术选型

【赵强老师】大数据工作流引擎Oozie

两盒软妹~` 提交于 2020-08-16 11:32:29
一、什么是工作流? 工作流(WorkFlow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递。下面我们以“员工请假的流程”为例,来为大家介绍什么是工作流。 这个例子包含了一个完整的员工请假流程。从“请假流程开始”,到“员工填写请假条”,再到“部门经理审批”,如果审批不通过,流程回到“员工填写请假条”;如果部门经理审批通过,则流程进入下一个节点;直到最后的流程结束。在Java中,我们可以使用一些框架帮助我们来实现这样的过程。Java的三大主流工作流引擎分别是:Shark,osworkflow,JBPM 二、什么是Oozie? 关于什么是Oozie,其实Oozie是服务于Hadoop生态系统的工作流调度工具,Job运行平台是区别于其他调度工具的最大的不同。但其实现的思路跟一般调度工具几乎完全相同。Oozie工作流通过HPDL(一种通过XML自定义处理的语言,类似JBOSS JBPM的JPDL)来构造。Oozie工作流中的Action在运程系统运行如(Hadoop,Pig服务器上)。一旦Action完成,远程服务器将回调Oozie的接口 并通知Action已经完成

2020年的秋招已经开始了!最新Java面试题大全(文末附参考答案)送给大家

我与影子孤独终老i 提交于 2020-08-16 11:27:09
包含的模块 本文分为十九个模块,分别是:Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM 共包含 208 道面试题,本文的宗旨是为读者朋友们整理一份详实而又权威的面试清单,下面一起进入主题吧。 一. Java 基础模块 1.JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。 具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具。简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。 2.== 和 equals 的区别是什么? == 解读: 对于基本类型和引用类型 == 的作用效果是不同的,如下所示: 基本类型:比较的是值是否相同; 引用类型:比较的是引用是否相同; 代码示例

手写Spring框架,加深对Spring工作机制的理解!

回眸只為那壹抹淺笑 提交于 2020-08-16 11:02:18
关注: Java提升营 ,最新文章第一时间送达, 10T 免费学习资料 随时领取!!! 在我们的日常工作中,经常会用到Spring、Spring Boot、Spring Cloud、Struts、Mybatis、Hibernate等开源框架,有了这些框架的诞生,平时的开发工作量也是变得越来越轻松,我们用 Spring Boot 分分钟可以新建一个Web项目。 记得自己刚开始工作的时候还是在用 Servlet 写 Web 项目,自己写 数据库连接池 ,用原生 JDBC 操作数据库,好了不发散了。回到这篇文章的主题,今天通过手写Spring框架,帮大家深入了解一下Spring的工作机制,文中涉及的代码只用来帮助大家理解Spring,不会在线上使用,有不严谨的地方还请大家掠过。 项目结构 框架部分实现 为了区分框架部分代码和业务部分代码,我们将这两部分分别划分在不同的包内 com.mars.demo 和 com.mars.framework ,以便随后只扫描业务代码。 这里是自己手写Spring框架,所以不会引入任何Spring项目相关的包。 由于是一个Web项目,所有我们需要引入 servlet-api 包,仅供编译器使用,所有配置 scope 为 provided 。 新建一个Servlet 首先新建一个 HttpServlet 的实现类 MarsDispatcherServlet

一文读懂「分布式架构」

ⅰ亾dé卋堺 提交于 2020-08-16 10:11:08
什么是分布式架构? 分布式架构是分布式计算技术的应用和工具,其中J2EE技术应用较为广泛,它简化和规范多层分布式企业应用系统的开发和部署,它可以给分布式应用软件提供在各种技术间共享资源的平台 分布式架构发展 众所周知,传统架构单一无分层,模块之间耦合性过高导致稳定性和扩展性较差,无法满足互联网高速迭代变化的脚步,技术架构也会发生很大变化。传统架构逐渐分化为分布式架构。提供更稳定、容错、高可用的特质。演变过程如下图所示 阶段1 阶段2 阶段3 阶段4 阶段5 分布式架构设计理念和目标 设计理念: 分布式架构的核心理念按照一定维度(功能、业务、领域)等,对系统进行拆分,通过合理的拆分结构,实现各业务模块解耦,同时通过系统级容错设计,在廉价硬件基础设施上构建起高可用、可扩展的开放技术体系。 目标: 设计目标可以明确方向,通过设计驱动和方向的把控,朝着既定方向前行并最终实现目标。设计目标分为以下方面: • 系统拆分 a.以业务为导向,充分了解系统业务模型,按不同层面的业务模型上可以划分为主模型、次模型。业务模型在一定的比例上能够凸显出系统的业务领域及边界 b.业务依赖范围,由于业务存在重复依赖,从业务边界中按照业务功能去细分 c.把拆分结构图梳理出来,按照系统周边影响从小到大逐渐切换 d.拆分过程中尽量不要引入新的技术或者方案,如需讨论评估后再实施 • 业务模块解耦

Spring注解@Resource和@Autowired区别对比

一笑奈何 提交于 2020-08-16 09:59:58
@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。 1、共同点 两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。 2、不同点 (1)@Autowired @Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired;只按照byType注入。 public class TestServiceImpl { // 下面两种@Autowired只要使用一种即可 @Autowired private UserDao userDao; // 用于字段上 @Autowired public void setUserDao(UserDao userDao) { // 用于属性的方法上 this .userDao = userDao; } } @Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果我们想使用按照名称(byName)来装配,可以结合

搞定JVM基本原理和面试题,看看这几本书妥妥够了!

我的梦境 提交于 2020-08-16 09:28:28
点击蓝色“程序员书单”关注我哟 加个“星标”,每天带你读好书,看好文! ​ 在介绍本书单之前,我想先问一下各位读者,你们之前了解过JVM么,如果有了解过,那么了解的程度又如何呢。经过了10多年的发展,Java Web从开发框架到社区都已经非常成熟,很多程序员都可以通过使用框架很快速地搭建起一个Java Web应用,特别是近几年springboot大热,干脆连配置都不需要了解了,直接一键式编译部署运行,让Java工程师的学习成本变得越来越低。 但于此同时,互联网公司对于Java的应用场景也在不断地升级换代,从单机部署再到分布式,从SOA再到微服务,Java后端技术栈变得更加庞大,对于工程师的要求也越来越高,特别是对于大公司来说更是如此,也正因为如此,对Java工程师的考察已经不限于Java Web的那套东西了,企业往往会提出更高的要求,比如熟悉Java并发编程和JVM调优,了解分布式技术、微服务以及中间件等等。 而今天的这份书单就会来推荐一些JVM虚拟机方面的好书,对于一个Java工程师来说,只有了解了JVM虚拟机之后,你才能够理解很多JDK中的设计和实现,同时也能够为你做JVM调优,问题排查等工作时提供理论基础。 Java虚拟机系列书单 ​ 深入理解Java虚拟机 这本书在Java圈内基本可以算是前无古人后无来者的一本书了,它在13年首次出版