后端开发

JAVA系列课程

Hollis,阿里巴巴技术专家《Java工程师成神之路》系列文章作者,热衷于分享计算机编程相关技术,博文全网阅读量上千万。

了解更多
Spring中的FactoryBean详细解析
在Spring框架中,FactoryBean是一个特殊的Bean,它的主要目的是产生其他Bean。本文将深入探讨FactoryBean的工作原理,结合源码分析,并提供三个具体的使用场景和示例。 一、...
Spring Bean 作用域深度解析
在Spring框架中,Bean的作用域决定了其生命周期和可见性。本文将深入探讨Spring支持的各种作用域,其属性,如何创建,以及与之相关的Spring源代码。 一、单例作用域...
Spring事件驱动编程:原理与实践
Spring框架的事件驱动编程模型为组件间的松耦合通信提供了强大的支持。本文将深入探讨其实现原理,核心源码,并结合具体例子进行说明。 一、Spring事件的核心组件 Spring的事件模型基于以下几个核心组件: ApplicationEvent:...
深入Spring框架:Bean的生命周期与管理
Spring框架是Java开发领域中广泛使用的框架,主要负责简化企业级应用程序的开发。Spring框架的核心是Bean容器,它负责管理应用程序的对象。在本文中,我们将深入探讨Spring中Bean的生命周期、类型,以及如何被创建、管理和销毁。 一、Bean的定义与类型 定义:在Spring中,Bean是由Spring...
关于Zuul文件上传
Zuul官网关于文件上传的说明 小文件可以正常工作,大文件需要通过/zuul/*这个替代路径来绕过spring(避免进行多部分处理)。另外大文件上传需要提高超时设置。 关于zuul的dispatcherServlet和zuulServlet,一般情况下zuulServlet被嵌入到Dispatch机制中,由DispatcherServlet分派处理,这样可以控制路由,并缓冲请求。如果需要绕过multipart处理,在不缓冲请求的情况下通过zuul,zuulServlet也可以装载在DIspatcher之外,让请求绕过DispatcherServlet。 DispatcherServlet为了方便后续处理流程使用,会将multipart/form请求根据RFC1867规则进行统一分析处理,并且返回MultipartHttpServletRequest实例,通过它可获取file和其他参数,这个过程会影响性能。 处理multipart/form请求的核心代码: 具体配置 一、zuul路由配置 serviceId映射: zuul:...
服务间调用hystrix连接池队列配置
一、服务间调用流程 微服务互相调用过程中,为了防止某个微服务的故障消耗掉整个系统的连接资源,在服务调用过程中在调用方增加对被调用微服务的熔断逻辑——通过hystrix框架来实现。 二、Hystrix线程池相关配置 默认配置: #核心线程数 hystrix.threadpool.default.coreSize:10 #最大队列长度,-1表示hystrix不会向队列中存放任务 hystrix.threadpool.default.maxQueueSize:-1 #排队线程数量阈值,超过将会拒绝请求 hystrix.threadpool.default.queueSizeRejectionThreshold:5 如果maxQueueSize为-1,则该选项不起作用 三、测试默认配置下的并发情况 调用方代码(消费者服务): 创建100个线程,通过channelFeignClient调用服务提供方,看是否回提示异常。 服务提供方代码(生产者服务): 测试结果: 100个线程,成功10次,其余抛出异常 结果分析:核心线程数的大小为10个,队列最大值为-1,因此,超多10个请求的其他90个请求全部被拒绝,走hystrix的回退逻辑。 四、测试修改配置后的并发情况 增大队列数和队列拒绝阈值 测试结果: 结果分析:全部成功
Mybatis框架及原理分析
一、什么是MybatisMybatis是一个对象关系映射持久型框架,mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射以java对象返回。 二、Mybatis工作流程 mybatis工作流程:加载mybatis全局配置,解析配置文件,基于xml配置生成Configuration和一个个MapperStatement(对应crud标签),SqlSessionFactoryBuilder通过Configuration生成SqlSessionFatory对象,SqlSessionFactory生成SqlSeesion对象,SqlSession对象完成和数据的交互 程序通过SqlSession调用找到对应MapperStatement对象,然后通过Executor将MapperStatement对象进行解析,sql参数转化、sql动态拼接、生成jdbc...
位运算使用案例
Java位运算是一种高效的运算方式,无论是在嵌入式编程还是在底层代码中应用非常广泛。Java位运算有7个,分别是~(取反)、&(与)、|(或)、^(异或)、>>(右移)、<<(左移)、>>>(无符号右移) ~(取反)取反运算位运算 int...