自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

apdoer

春蚕

  • 博客(40)
  • 收藏
  • 关注

原创 aop原理解析

文章目录AOP原理解析简单案例源码分析@EnableAspectJAutoProxy注解AspectJAutoProxyRegistrarAnnotationAwareAspectJAutoProxyCreator实现了BeanFactoryAware接口实现InstantiationAwareBeanPostProcessor接口创建代理对象分析包装代理对象是否适合被包装什么是基础class解析@Aspect注解标注的类获取增强器找到候选的增强器获取能够使用的增强器创建代理对象代理对象调用目标方法调用原理

2021-04-20 23:22:33 197

原创 springboot内置tomcat运行原理

文章目录springboot内置tomcat运行原理tomcat组件的装配的EmbeddedWebServerFactoryCustomizerAutoConfigurationServletWebServerApplicationContext获取WebServerFactoryWebServerFactory的自动装配工厂的后置处理器开始定制工厂定制工厂需要的基本属性 ip 端口等定制fatcory tomcat配置,响应式编程等定制更详细的参数,内存,堆等获取WebServer创建tomcat web

2021-04-10 00:36:33 354

原创 Springboot的原理

文章目录springboot自动装配的原理spring条件装配springboot 的自动装配@Springboot 注解AutoConfigurationImportSelector.class自动配置类总结springboot自动装配的原理spring条件装配这里举个例子,我有两个组件 MyLog 和 MyAspect而 MyLog 是依赖于MyAspect的,只有容器中有MyAspect才会加载MyLog创建两个组件public class MyAspect {}public c

2021-04-09 19:15:27 215

原创 手写时间轮算法

文章目录时间轮核心思想代码实现时间轮关于时间轮的介绍,网上有很多,这里就不重复了核心思想一个环形数组存储时间轮的所有槽(看你的手表),每个槽对应当前时间轮的最小精度超过当前时间轮最大表示范围的会被丢到上层时间轮,上层时间轮的最小精度即为下层时间轮能表达的最大时间(时分秒概念)每个槽对应一个环形链表存储该时间应该被执行的任务需要一个线程去驱动指针运转,获取到期任务以下给出java 简单手写版本实现代码实现时间轮主数据结构/** * @author apdoer * @vers

2021-04-05 21:47:14 297

原创 insert duplicate key update 死锁分析

背景线上发现mysql 数据库报错死锁日志,版本为5.7.25,默认隔离级别为rr,具体的错误日志就不贴出来了,原因是有同事使用了insert duplicate key update语法,进行存在就更新的操作那么问题来了,应该从哪入手呢先通过show engine innodb status看看死锁日志吧,我在这都加上注释了,并且去掉了无关信息LATEST DETECTED DEADLOCK------------------------//死锁发生的时间 utc时间2020-12-21 1

2020-12-23 21:13:21 1773 1

原创 解决 No ongoing transaction. Did you forget to call multi?

背景需要使用 setIfAbsent(Object key, Object value, long timeout, TimeUnit unit)方法,然后当前版本不支持,所以自己定义一个这样的方法思路: 使用redis的事务操作,把保存key和设置过期时间放到一个事务执行切换事务模式事务队列执行事务redis客户端执行multi后返回ok,表明redis进入事务状态。进入事...

2019-12-09 17:43:54 2527 2

原创 springboot配置文件详解

springboot配置文件详解Spring Boot弱化配置的特性让属性配置文件的使用也更加便捷,它默认支持对application.properties或application.yml属性配置文件处理,即在application.properties或application.yml文件中添加属性配置,可以使用@Value注解将属性值注入到beans中,或使用@ConfigurationPr...

2019-10-22 20:01:41 315

原创 springboot 整合 mybatis 多数据源,动态多数据源

springboot 整合 mybatis 多数据源场景如果你的项目需要的数据来源于不同的数据库如果你的项目需要动态的指定数据源或者两种情况兼而有之springboot自动化数据源配置是怎么实现的如果你对springboot自动配置比较了解可以不看这段如果你不关心具体实现可以不看这段如果你基础较差看的比较吃力可以不看这段这些都不影响你成功做到多数据源配置我们先说下DataSo...

2019-10-11 14:59:07 873

原创 让你的对象知悉现况——观察者模式

观察者模式让你的对象 知悉现况定义定义了对象之间的一对多依赖,这 样一来,当一个对象改变状态时,它的所有依赖者都 会收到通知并自动更新通俗的理解打个比方 , 你和甲,乙都在找一份java 的工作 , 然后找到了一个猎头那么猎头就是 主题你和 甲, 乙 都是观察者你们找到猎头的过程就是注册观察者/订阅的动作突然你觉得,你想自己去找了,不再委托他了,这就是移除观察者的...

2019-10-10 14:59:59 1169

原创 java设计模式之 策略模式

策略模式这里我们通过一个例子来讲解 策略模式如果有这样一个需求你的公司要求你设计一款鸭子游戏,游戏中鸭子会呈现各种形态,有的会游泳,有的会叫,有的会飞怎么设计 ?你可能这样//使用标准的 oo 设计//1.设计一个鸭子超类 Duck 类,并让各种鸭子继承这个超类class Duck{ quack(); swim(); display(); //鸭...

2019-10-08 17:02:25 1575

原创 解决 Field injection is not recommend

引言今天在写代码时发现注入的时候有个警告 , Field injection is not recommend看一下别的地方 , 也都是报了警告难道大家平时不是这么用的吗 ?难道这样做不对吗?用了这么久居然发现这样用不对,毁三观有木有!!!那么究竟是什么原因spring不推荐我们这样使用为什面试经常问依赖注入的方式呢为什么面试经常问spring中对象的生命周期呢spring ...

2019-10-08 11:26:56 18329 6

原创 报错 BeanCreationNotAllowedException: Error creating bean with name 'eurekaAutoServiceRegistration'

如题BeanCreationNotAllowedException: Error creating bean with name 'eurekaAutoServiceRegistration'这里直接给出解决方案 ,直接添加下面这类就可以了package com.newcoin.broker.web.manager.config;import org.springframework.b...

2019-09-22 10:13:50 2671

原创 纯 java 代码配置 SSM

大家都会使用xml文件配置一个ssm项目 , 那么使用纯java代码怎么配置呢?1.创建一个普通的maven工程pom.xml文件配置如下<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://ww...

2019-09-20 00:10:38 576

原创 学成在线(一)

文章目录1.项目原型2.项目技术架构2.1 技术架构2.2 技术栈2.3 开发步骤3. CMS 需求分析3.1 什么是CMS3.2 静态门户工程搭建3.2.1 导入门户工程3.2.2 配置虚拟主机3.3 SSI服务端包含技术3.4 CMS页面管理需求4. CMS服务端工程搭建4.1 开发工具配置4.2 导入基础工程4.2.1 工程结构4.2.2导入父工程4.2.3 导入其它工程4.3 MongoD...

2019-09-15 22:01:43 7249

原创 并发 , 高并发知多少?

思考这个问题之前 , 我们先来看看什么是并发并发 : 同时拥有两个或者线程 , 如果程序在单核处理器上运行 , 多个线程将会交替的换入或者换出内存 , 这些线程是同时 " 存在 " 的 , 每个线程都处于执行过程中的某个状态 , 如果运行在多核处理器上 , 此时程序中的每个线程都会被分配到一个对应处理核上 , 因此可以同时运行那什么是高并发呢 ?高并发 : 高并发High Concurren...

2019-08-05 01:32:45 909

原创 mysql 表卡死 , 不能删除,更新,一直转圈圈

mysql表锁死 , 无法操作如果频繁的对mysql进行操作 , 可能会导致表卡死 , 锁死 , 如果你是用 navicat 等工具连接mysql 进行操作, 会发现你接下来对这个表的操作都会在转圈圈,就是强制关闭 navicat 也不好使为啥呢?因为根本不是navicat的问题.是mysql 的表锁死了解决方法?我们新建查询 , 查出当前的所有进程,找出那些卡住的进程show ful...

2019-07-09 17:03:23 12723

原创 写了五年web还不懂事件机制?

java中的事件机制发布订阅模式public class Observable { private boolean changed = false; private Vector<Observer> obs; /** Construct an Observable with zero Observers. */ public Observable...

2019-06-15 22:31:11 185

原创 (九)springcloud从入门到放弃--断路器Hystrix

简介Hystrix 是springcloud官方推出的分布式系统容错处理的一个组件那么这个组件有哪些作用呢,官方文档是这样说的 :通过客户端库对延迟和故障进行保护和控制在一个复杂的分布式系统中停止级联故障快速失败和迅速恢复在合理的情况下回退和优雅的降级开启近实时监控报警和操作控制这里举一个很简单的例子来概括一下 Hystrix 的作用比如你的分布式系统中 服务A 因为某种原...

2019-06-15 15:55:26 258

原创 阿里内推面试题:能不能自定义一个类叫java.lang.System

类加载器classloader本文主要讲以下几点什么是类加载,和类加载器java的类加载流程双亲委派机制的原理和作用一个经典的面试题自定义classloader扩展线程上下文加载器什么是类加载类加载指的是将类Class文件读入内存,并为之创建一个java.lang.Class对象java.类加载器是jre的一部分,负责动态加载java类到java虚拟机的内存类加载器...

2019-05-30 21:22:52 1281

原创 (八)springcloud从入门到放弃-Ribbon源码解析

ribbon源码解析在前面的文章中我们了解了ribbon的基本使用和相关的负载均衡策略,但是你是否知道Ribbon 的核心工作原理官方文档提到了Ribbon的核心接口, 他们共同定义了Ribbon的行为特性接口描述默认实现类IClientConfig定义Ribbon中管理配置的接口DefaultClientConfigImplIRule定义Ribbon中负...

2019-05-25 14:51:11 424

原创 (七)springcloud从入门到放弃-Ribbon的负载均衡策略

Ribbon负载均衡策略在上一章中讲到了 springcloud官方提供的负载均衡器Ribbon 是一种客户端负载均衡器,原理是通过注册中心拉去服务实例列表,通过ribbon 提供的负载均衡策略选中特定的实例,进行请求Ribbon默认的负载均衡策略是 轮询, 那么 Ribbon 有哪些负载均衡策略呢Ribbon 的负载均衡策略策略类名称备注RandomRule...

2019-05-24 20:58:01 362

原创 (六)springcloud从入门到放弃-负载均衡器Ribbon

首先,我们来说一个概念,什么叫做负载均衡负载均衡 ,指的是利用特定方式将流量分摊到多个操作单元的一种手段,对整个系统的吞吐量和处理能力有极大的提升目前有软负载与硬负载之分,例如 nginx 和 F5有客户端负载均衡和服务端负载均衡之分, 如 ribbon 和 nginx客户端负载均衡是指,从实例库中选取一个实例进行流量导入在微服务中,实例库一般存储在 Eureka .Consul,...

2019-05-23 00:21:29 147

原创 (五)springcloud从入门到放弃-Feign深入

Feign 的实战运用Feign 默认Client 的替换Feign 在默认情况下使用的是 JDK 原生的 URLConnection 发送 http 请求,没有连接池,但是每个地址会保持一个长连接,即利用 http 的 persistence Connection我们可以使用 Apache 的 HttpClient 替换掉 Feign 原生的 HttpClient,通过设置连接池,超时时...

2019-05-19 00:11:01 464

原创 (四)springcloud从入门到放弃-Feign入门

Springcloud Feign 入门引言1.在使用Spring Cloud进行微服务开发时,各个服务提供者都是以HTTP接口的形式对外提供服务2.所以在服务消费者调用服务提供者时,底层通过HTTPClient的方式访问3.我们可以使用JDK原生的URLConnection, Apache的HTTP Client, Netty的异步HTTP Client,Spring的RestTemp...

2019-05-05 20:35:52 2282

原创 (三)springcloud从入门到放弃-Eureka的高可用与实战

Eureka的高可用与实战Eureka高可用原理由于Eureka是基于部署在Amazon的背景下设计的,因此其原生支持了Amazon的Region和AvailabilityZoneRegion默认情况下资源在Region之间是不会复制的,不过Eureka Client提供了 fetch-remote-regions-registry配置,这个配置在dataCenterInfo是...

2019-04-29 00:25:17 2117

原创 你知道@Transactional和synchronized同时使用并不能保证事务一致性吗

@Transactional和synchronized同时使用并不能保证事务一致性背景任何事情都有一个发生背景最近在公司写代码,有个需求【一个业务里面包含多个事务,而且还需要避免其他线程的影响,所幸的是该服务只需要启动单实例,不然还要考虑分布式的影响】我的思路就是用@Transactional 和 synchronized来保证事务一致性和多线程影响,结果发现并没有如愿分析原因 @...

2019-04-25 16:19:44 5017 3

原创 (二).SpringCloud 从入门到放弃-Eureka注册中心深入

文章目录深入了解EurekaEureka Server的REST API简介REST API 列表REST API 实例Eureka的核心类Eureka 的设计理念服务实例如何注册到注册中心服务实例如何从注册中心剔除分布式系统的CAP特性Peer to Peer架构Eureka参数调优及监控核心参数参数调优深入了解EurekaEureka Server的REST API简介前面介绍了一个最...

2019-04-25 10:29:17 2304

原创 (一).SpringCloud 从入门到放弃Eureka注册中心入门

文章目录初识SpringCloud什么是springcloudspringcloud的项目模块Eureka简介Eureka入门案例创建一个普通的springboot工程,这里就不创建父工程了,我始终觉得这样有违微服务的初衷,选择依赖如下maven依赖如下,cloud版本就选择格林威治(`Greenwich.SR1`)了,springboot我们选择最新版的2.1.4发行版配置我们的启动类配置我们的...

2019-04-23 21:42:25 2256

原创 怎样利用lambda表达式写出简洁,高逼格的代码

文章目录lambda表达式定义遍历集合在使用匿名内部类的时候集合排序stream和lamda的结合使用lambda表达式定义关于lambda表达式,你需要知道以下几点1,虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能2,Lambda表达式是Java SE 8中一个重要的新特性。lambda...

2019-04-19 15:47:04 3142

原创 springboot整合mybatis的方式你知道几种

文章目录全注解方式全注解方式创建一个springboot项目,勾选如下启动器pom.xml 依赖如下<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-...

2019-04-19 11:00:59 3237

原创 BigDecimal的用法

文章目录定义属性(成员变量)常用构造方法常用方法总结定义BigDecimal 代表的值为:unscaledValue×10−scaleunscaledValue × 10^{-scale}unscaledValue×10−scaleBigDecimal 是一个不变的,任意精度的带符号的十进制数字由任意精度整数未缩放值和32位整数级别组成 。 如果为零或正数,则刻度是小数点右侧的位数。 ...

2019-04-16 20:49:15 1309

原创 解决bad format for timestamp问题

解决 mybatis 查询数据时 bad format for timestamp 问题背景po对象中有一个属性 Date类型,该po来源于其他微服务,mysql数据库中存储以bigint类型存储时间戳格式查询的时候再读取为Date类型问题查询的时候抛出异常信息如下org.springframework.dao.TransientDataAccessResourceExcepti...

2019-04-15 16:50:07 20818 7

原创 网络相关(RSA+SSH+DNS+CDN)

rsa非对称加密首先加密和解密过程不是对称的实现非对称加密解密是需要两个秘钥的:公钥和私钥公钥将明文加密后,可以通过私钥将该密文解密成原明文即 rsa_pub 将明文A加密成密文B ,rsa_sec可以将密文B通过跟加密算法不一样的算法将其解释为明文A本部分参考rsa非对称加密详解,该作者讲解的很通俗易懂公钥加密-私钥解密过程私钥加密-公钥解密过程DNS(域名系统)...

2019-04-13 21:21:39 716

原创 反向代理服务器-Nginx(1)

Nginx反向代理服务器(1)关于代理正向代理比如你翻墙看国外的网站,挂vpn,这就是正向代理,代理的是客户端,对于服务器而言,他不知道具体的访问者,只知道代理服务器反向代理当你访问百度,反向代理服务器对请求进行代理,分发到具体的服务,代理的是服务端对客户端而言,不知道具体的服务器,只知道代理服务器常用的web服务器如 apache tomcat weblo...

2019-04-13 19:27:54 363

原创 boostrap.yml和application.yml

关于springcloud中配置文件boostrap.yml和application.yml看到很多小伙伴一开始不知道boostrap.yml和application.yml文件的作用properties和yml原理都差不多,不过yml文件层级简洁,关系清楚,推荐yml配置文件如果你在clone下来的项目里resources目录下只看到boostrap.yml配置文件,不妨去该项目co...

2019-04-13 13:26:30 539

原创 实际开发中git多人协作

git多人协作当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。要查看远程库的信息,用git remote:$ git remoteorigin或者,用git remote -v显示更详细的信息:$ git remote -vorigin [email protected]:michae...

2019-04-09 20:45:54 268

原创 计算机网络面试题

计算机网络面试题持续更新…OSI七层协议物理层 : 以二进制的流在物理媒介上传输数据数据链路层 : 物理寻址,同时将比特流转换成逻辑传输线路网络层 : 为数据包选择路由传输层: OSI协议中最重要的一层,接受上一层的数据,在必要的时候对数据进行分割,交给网络层,保证数据能到到达对端会话层 : 不同机器上的用户之间建立会话和会话管理表示层 : 数据格式化,代码转换,数据加密...

2019-04-06 22:02:48 784

原创 springboot整合thymeleaf进行web开发

springboot整合thymeleaf模板引擎进行web开发在此篇中主要讲解springboot项目中如何整合thymeleaf模板引擎进行web开发暂时不涉及数据库操作,所有数据均为模拟数据如果对构建Springboot工程还不熟悉的可以查看上一篇教程初始springboot项目构建创建一个Springboot项目,在启动器勾选这几项关于这个lombok插件 : 这是...

2019-04-06 19:07:52 2939

原创 初识springboot

Springboot 是什么简介Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是 Spring Boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,Spri...

2019-04-05 19:41:48 2026

原创 java GC相关

java GC相关谈到垃圾回收,我们先来看几个问题问题1在java中什么样的对象会被判别为垃圾1.在java中什么样的对象会被判别为垃圾java中常用的几种垃圾回收算法1引用计数算法2可达性分析算法引用计数算法通过判断对象的引用数量来决定对象是否可以被回收每个对象实例都有一个引用计数器,被引用则+1,完成引用则-1任何...

2019-04-05 17:57:45 259

空空如也

空空如也

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

TA关注的人

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