![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
布谷2015
东方欲晓
展开
-
Spring获取单例bean方法的思考
Spring获取单例bean方法的思考使用的SpringMVC版本是5.1.8.RELEASE下面是DefaultSingletonBeanRegistry类中通过类名获取单例的源码/** 单例对象的缓存:从bean名称到bean实例 */private final Map<String, Object> singletonObjects = new ConcurrentHa...原创 2019-07-26 14:02:36 · 336 阅读 · 0 评论 -
Spring 三种依赖注入方式详解
-- pom.xml<!-- https://mvnrepository.com/artifact/org.springframework/spring-context --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-w...原创 2019-07-26 17:38:13 · 123 阅读 · 0 评论 -
Java一次性唤醒所有wait中的线程
启动N个线程并使之进入wait()状态,然后同时notifyAll()所有线程执行任务注意:wait()和notifyAll()需要使用synchronized块包裹,防止被线程并发调用需要一个全局锁来控制等待和唤醒notify()只唤醒wait()中的一个线程,notifyAll()一次性唤醒所有线程package cywen.demo;public class Demo{...原创 2019-07-31 18:46:21 · 765 阅读 · 0 评论 -
架构师的抽象能力及抽象跳跃
拍拍贷的资深架构师杨波老师就讲到:架构的本质是管理复杂性,抽象、分层、分治和演化思维是工程师 / 架构师应对和管理复杂性的四种最基本武器。后来与其他几位专家沟通,他们也一致认为“抽象能力”是架构师最关键的核心能力。如何理解这样的抽象能力,举个简单的例子,在设计一个电商网站在处理订单时,一般流程包括:更新库存、打折计算、支付卡校验、支付、送货。整个流程中的抽象是在同一个层次上的,比较清晰易于理解...原创 2019-08-01 01:19:27 · 598 阅读 · 0 评论 -
Spring ServletContextListener源码解析
web项目的核心技术是javax.servlet记录一下探索spring framework的源码分析我使用IDEA,搭建一个webapp的maven项目,在pom.xml中只添加以下依赖:<dependencies> <!-- https://mvnrepository.com/artifact/org.springframework/spring-context...原创 2019-07-24 21:45:25 · 525 阅读 · 1 评论 -
设计模式之模板方法的使用
设计模式 之 模板方法模板方法设计模式的定义:在操作中定义算法的框架,将某些步骤推迟到子类。模板方法允许子类重新定义算法的某些步骤,而不更改算法的结构。说人话,我的理解是,子类的父级抽象类完成行为的实现,同时将各子类差异性的一小部分实现交给子类完成。下面是我在项目中实际用到的一段程序,一开始就这样写了,却不知道这种写法就是模板方法的设计模式,也是呵呵呵了。package com.*.base....原创 2019-07-20 13:33:02 · 110 阅读 · 0 评论 -
Spring Framework的指导原则
以下是Spring Framework的指导原则:提供各个层面的选择。Spring允许您尽可能晚地推迟设计决策。例如,您可以通过配置切换持久性提供程序,而无需更改代码。许多其他基础架构问题以及与第三方API的集成也是如此。适应不同的观点。Spring拥抱灵活性,并不认为应该如何做。它以不同的视角支持广泛的应用需求。保持强大的向后兼容性。Spring的演变经过精心设计,可以在版本之...原创 2019-07-18 19:09:31 · 70 阅读 · 0 评论 -
Eureka下线延迟
Spring-Cloud项目调用优雅关机时销毁Beans导致服务掉线不及时,请求仍然从网关转发进来并报出BeanCreationNotAllowedException异常!原创 2019-07-04 21:35:17 · 815 阅读 · 7 评论 -
重试,限流与服务降级
spring-cloud架构的几个概念理解ribbon的重试功能当A服务部署在N台服务器上,ribbon路由到A(n1)…的过程中,如果A(n1)实例异常关闭,则通过配置重试机制可以向后搜索可用的实例,配置项如下:zuul.retryable=trueribbon.eager-load.enabled=trueribbon.restclient.enabled=trueribbon....原创 2019-07-15 15:30:14 · 202 阅读 · 0 评论 -
服务主动下线offline
服务部署时,调用shutdown接口实例状态为Down,通过delete请求可以让注册中心即刻下线服务,减少服务部署时的请求异常情况。package lewis.demo1.controller;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import lewis.demo1.common...原创 2019-07-15 16:28:59 · 296 阅读 · 0 评论 -
两种HttpUtils的比较
两种HttpUtils的比较No2. 代码更简洁,同样的功效不一样的优雅~No1. 使用java.net包package com.*.common.utils;import com.alibaba.fastjson.JSONObject;import com.google.common.collect.Maps;import lombok.extern.slf4j.Slf4j;im...原创 2019-07-16 14:25:15 · 399 阅读 · 0 评论 -
记一次数据库锁超时故障排除
记一次数据库锁超时故障排除登陆服务查看日志信息如下:org.springframework.dao.CannotAcquireLockException: ### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeo...原创 2019-07-17 11:25:43 · 667 阅读 · 0 评论 -
一个算法题实现回旋转圈矩阵
实现回旋转圈矩阵,比如输入3,从中心开始转圈输出如下图所示int i=3;7 8 96 1 25 4 3思路方案一:先确定起始点位,然后顺时针按步走,如果下一步的点位有值就保持原来的前进方向走一步。方案二:先确定最终点位,然后逆时针按步走,如果到达边界就转换方向。public class CircleMatrix { // 回旋转圈矩阵 ...原创 2019-07-29 10:38:14 · 374 阅读 · 0 评论 -
Spring框架之WebApplicationInitializer的源码总结
spring为什么能成为如此广为接受的web应用框架首选?借助于javax.servlet提供出来的强大接口,spring可以接管整个web应用。下面的源码介绍了spring-web是如何基于代码而不是xml来完成应用上下文的创建和实例化的。从这一步开始,前面的jvm+tomcat+servlet被完美的封装起来而不需要我们操心,我们可以开心的创建自己的web应用,并想出各种模式让编程变得更加...原创 2019-07-29 16:19:38 · 398 阅读 · 0 评论 -
spring各个项目的特性
这里将Spring官网上的各个项目特性汇总一下Spring Boot直接嵌入Tomcat,Jetty或Undertow(无需部署WAR文件)提供-starter依赖项以简化构建配置尽可能自动配置Spring和第三方库提供生产就绪功能,例如指标,运行状况检查和外部化配置绝对没有代码生成,也不需要XML配置Spring Framework核心技术:依赖注入,事件,资源,i18n,...原创 2019-07-18 16:29:58 · 260 阅读 · 0 评论