- 博客(86)
- 资源 (18)
- 收藏
- 关注

原创 Spring注解驱动开发
文章目录组件注册@Configuration@ComponentScanFilterTypeFilterType.CUSTOM@Scope@Lazy==@Conditional====@import==FactoryBeanBean生命周期@Bean指定初始化和销毁InitializingBean和DisposableBean@PostConstruct和@PreDestory@BeanPostProcessor@BeanPostProcessor原理@BeanPostProcessor在Spring底层使
2020-07-05 20:37:24
588
原创 Spring源码系列
文章目录IOC问题解答AOP入口代理对象生产代理对象执行方法aop流程总结问题解答注解事务IOCpublic void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // Prepare this context for refreshing. prepareRefresh(); // Tell the subclass t
2021-06-06 20:56:36
496
3
原创 AQS详解
文章目录学习前提什么是AQSCLH队列加锁过程acquire()终于还是对AQS下手了,学习Java并发这是必须要学习的知识。看了好多视频以及博客,以下是想以自己的思路去整理AQS的学习思路。学习前提了解Java中的锁:公平锁和非公平锁、共享锁和独占锁等(传送门:)知道CAS原理知道volatile原理了解链表数据结构对多线程有一定的了解什么是AQS并发使计算机得以充分利用计算能力,有效率地完成各类程序任务。当深入地学习Java中的并发,不可避免地将学习到锁 —— 使并发的资源能被正确
2021-05-12 15:55:08
424
原创 2021-05-11
内容大块 问题 要点Java基础 Object类都有哪些方法? 谈一下==和equals的区别? 基本类型比较值,引用类型没有重写equals的比较JVM中的地址重写(Override)和重载的区别? 两个对象的 hashCode() 相同,那么 equals() 也一定为 true吗? 为什么重写equals方法就要重写hashCode方法? (答出notify和notifyAll)notify和notifyAll有什么区别? (答出wait的)wait和Thread.sleep方法由和异同
2021-05-11 09:45:47
169
原创 Netty
文章目录Netty介绍Netty应用场景I/O模型基本说明同步 vs. 异步阻塞 vs. 非阻塞BIOBIO问题分析NIONIO和BIO的比较三大核心组件关系BufferBuffer基本属性参考文章http://www.jasongj.com/java/nio_reactor/Netty介绍是由JBOSS提供的一个Java开源框架是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络IO程序。(目前是同步非阻塞)主要针对在TCP协议下,面向Clients端的高并发应用
2021-04-07 16:55:06
642
原创 Spring Boot启动原理
文章目录1.Spring Boot启动原理源码分析jar为spring Boot 2.3.11.Spring Boot启动原理创建SpringApplication保存信息判断应用类型 是webflux还是servletApplicationContextInitializer:去spring.factories找 ApplicationContextInitializerApplicationListener:应用监听器 去spring.factories找 ApplicationCon
2021-01-20 14:37:32
106
原创 Spring Boot+Atomikos+Mybatis+多数据源
[TOC]背景介绍因业务需求,需要使用多数据源,无法避免带来了多数据源事务的问题,经过选型,决定使用Atomikos数据源配置package com.sf.ares.service.web.config;import com.alibaba.druid.pool.xa.DruidXADataSource;import com.atomikos.jdbc.AtomikosDataSourceBean;import com.sf.erui.mybatis.SqlSessionFactoryBe
2020-11-30 17:13:51
471
原创 Idea使用Gradle项目总结
文章目录建议使用自定义GRADLE仓库解决main方法编译整个项目的问题解决jsp等静态文件不能更新问题解决每次打开项目,都会Bulid Task问题建议使用自定义GRADLE仓库解决main方法编译整个项目的问题解决jsp等静态文件不能更新问题使用jrebel如果有好的方式,请指出。解决每次打开项目,都会Bulid Task问题未解决!...
2020-10-12 09:44:45
291
原创 Mysql
文章目录Sql性能下降原因join查询sql执行顺序7 种join索引简介优势和劣势索引分类检索原理建立索引的情况建立索引不能建立性能分析Mysql自带优化器Mysql常见瓶颈Explain能干吗具体字段解释idselect_type和tabletypepossible_key 和keykey_lenrefrowsextra索引优化索引失效查询截取分析Sql性能下降原因执行时间长 等待时间长查询语句烂索引失效关联太多服务器调优以及各个参数设置join查询sql执行顺序FROMON
2020-09-15 08:17:38
97
原创 线程池
文章目录为什么使用线程池线程池如何使用newFixedThreadPoolnewSingleThreadExecutornewCachedThreadPoolnewScheduleThreadPool线程池的7大重要参数corePoolSizemaximumPoolSizeworkQueuekeepAliveTimeunitthreadFactoryhandler拒绝策略线程池底层工作原理工作中你用到哪个?手写线程池线程池配置合理参数CPU密集型IO密集型死锁编码及定位分析死锁原因死锁代码以及分析解决方案
2020-08-23 11:10:01
632
原创 Semaphore
文章目录Semaphore基础知识使用Semaphore加锁的几种常用方式Synchronizedlock实现类semaphore基础知识信号量主要用于多个共享资源的互斥使用并发线程数的控制使用public static void main(String[] args) { Semaphore semaphore = new Semaphore(3); for(int i=0;i<=6;i++ ){ new T
2020-08-22 20:33:16
180
原创 CyclicBarrier
文章目录CyclicBarrier基本理念用法Barrier被破坏CountDownLatch和CyclicBarrierCyclicBarrier基本理念构造方法CyclicBarrier(int parties)创建一个新的 CyclicBarrier,它将在给定数量的参与者(线程)处于等待状态时启动,但它不会在启动 barrier 时执行预定义的操作。CyclicBarrier(int parties, Runnable barrierAction)创建一个新的 CyclicBarrie
2020-08-22 20:32:32
143
原创 CountDownLatch
CountDownLatch基本知识CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成一些任务,然后在CountDownLatch上等待的线程就可以恢复执行接下来的任务。用法static Cou
2020-08-16 20:50:20
158
原创 Java锁
文章目录基础知识乐观锁和悲观锁自旋锁 VS 适应性自旋锁无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁公平锁和非公平锁可重入锁和递归锁独享锁和共享锁文章来源https://mp.weixin.qq.com/s/sA01gxC4EbgypCsQt5pVoghttps://mp.weixin.qq.com/s/E2fOUHOabm10k_EVugX08ghttps://www.bilibili.com/video/BV18b411M7xz?p=26基础知识乐观锁和悲观锁乐观锁:认为自己在使
2020-08-14 07:31:55
299
原创 CAS
文章目录CAS是什么?CAS原理AtomicInteger方法调用缺点ABA问题解决ABA原子引用AtomicMarkableReference文章来源于:https://www.bilibili.com/video/BV18b411M7xz?p=12CAS是什么?Compare Ana Swap一条CPU的原子指令,不会造成数据不一致问题是乐观锁的一种实现 public static void main(String[] args) { AtomicInteger
2020-08-06 10:01:48
288
原创 Sentinel
文章目录Sentinel基本知识下载安装初始化监控流控规则流控模式流控效果降级热点参数例外项系统自适应限流(全局)SentinelResource熔断(重点)持久化(重点)git地址:https://github.com/sunuanwuhou/SpringCloud2020.gitSentinel基本知识git: https://github.com/alibaba/Sentinel和Hystrix: https://www.jianshu.com/p/d85c0ed44235Sentinel
2020-08-05 14:25:36
454
原创 Nacos
文章目录Nacos基本知识是什么?Nacos注册中心服务注册中心对比提升Nacos服务配置中心基础配置分类配置git地址:https://github.com/sunuanwuhou/SpringCloud2020.gitNacos基本知识git: https://github.com/alibaba/nacosNacos官网: https://nacos.io/zh-cn/Spring Cloud Alibba: https://github.com/alibaba/spring-cl
2020-08-05 14:24:47
302
原创 GateWay
文章目录GateWay基础知识为什么不用Zuul特性三大核心介绍实战git地址:https://github.com/sunuanwuhou/SpringCloud2020.gitGateWay基础知识官网:https://spring.io/projects/spring-cloud-gatewayGateWay是 zuul1.x的替代是基于WebFlux框架(异步非阻塞)实现的,底层是Reactor模式通信框架Netty这里留一个疑问,为什么网关前面还有一个Nginx?为什么不用Zuu
2020-08-05 14:23:48
428
原创 Hystrix
文章目录Hystrix基础知识降级实战客户端解决服务端解决熔断实战Dashboardgit地址:https://github.com/sunuanwuhou/SpringCloud2020.gitHystrix基础知识Hystrix设计目标:对来自依赖的延迟和故障进行防护和控制——这些依赖通常都是通过网络访问的阻止故障的连锁反应快速失败并迅速恢复回退并优雅降级提供近实时的监控与告警Hystrix遵循的设计原则:防止任何单独的依赖耗尽资源(线程)过载立即切断并快速失败,防
2020-08-05 14:23:08
255
原创 OpenFeign
文章目录FeignFeign和OpenFeign区别实战超时设置日志打印自定义配置修改为okhttp原理git地址:https://github.com/sunuanwuhou/SpringCloud2020.gitFeignFeign是一个声明式Web Service客户端,使用Feign让编写Web Service更加简单使用方法是:定义一个服务接口,然后在上面添加注解Feign与Eureke和Ribbon组合使用实现负载均衡git地址:https://github.com/spring-c
2020-08-05 14:22:31
475
原创 Ribbon
文章目录Ribbon负载均衡算法轮训原理源码手写git地址:https://github.com/sunuanwuhou/SpringCloud2020.gitRibbon定义:负载均衡+RestTemplateribbon :客户端 负载均衡调用工具nginx :是服务端区别在于:客户端是在发送请求之前,进行负载均衡算法负载均衡算法IRule默认为轮训替换负载均衡规则自定义配置类不能放在@componentScan所扫描的当前包以及子包下,会被适用于全局ribbon规则@Co
2020-08-05 14:21:17
170
原创 注册中心
文章目录项目搭建父工程项目搭建支付模块搭建热部署消费者订单模块Eureka服务治理服务注册2个组件集群原理信息完善Discovery自我保护zookeeperconsul三种注册中心git地址:https://github.com/sunuanwuhou/SpringCloud2020.git项目搭建父工程项目搭建dependencyManagement只是申明依赖了,不引入依赖子类不指定使用父类依赖,指定使用指定的。mvn install支付模块搭建payment8081模块建
2020-08-05 14:20:28
259
原创 注册中心
文章目录项目搭建父工程项目搭建支付模块搭建热部署消费者订单模块Eureka服务治理服务注册2个组件集群原理信息完善Discovery自我保护zookeeperconsul三种注册中心git地址:https://github.com/sunuanwuhou/SpringCloud2020.git项目搭建父工程项目搭建dependencyManagement只是申明依赖了,不引入依赖子类不指定使用父类依赖,指定使用指定的。mvn install支付模块搭建payment8081模块建
2020-07-29 16:58:02
405
原创 基础知识
文章目录什么是微服务Boot和Cloud版本选型Spring BootSpring CloudSpringBoot和SrpingCloud版本依赖详细版本依赖本次版本选择什么是微服务https://www.cnblogs.com/xiao2shiqi/p/11298663.htmlBoot和Cloud版本选型SpringBoot 一般是以数字作为版本选型 SpringBoot2.X版SpringCloud 一般是以字母作为版本选型 SpringCloud H版Spring Bootgit
2020-07-28 10:08:24
239
原创 Aop源码分析
文章目录基础知识重要的BeanPostProcessoraop如何进行动态创建代理对象拦截AOP基础知识== 前提:需要了解Spring的IOC容器初始化过程==疑问:我们都知道aop是基于动态代理来实现aop的,那么aop的动态代理是在什么时候进行创建的?在使用aop进行切面编程的时候,又是怎么运行的? 参考视频:https://www.bilibili.com/video/BV1ME411o7Uu?p=29重要的BeanPostProcessorpublic interf
2020-07-19 21:25:28
276
原创 IOC容器初始化分析
[IOC]Spring容器创建过程Spring容器的refresh()prepareRefresh():刷新前预处理initPropertySources()初始化属性设置,需要继承applicationContext()重写此方法getEnvironment().validateRequiredProperties();校验属性的合法性earlyApplicationEvents = new LinkedHashSet();初始化事件容器,保存容器中的事件beanFacto
2020-07-19 20:23:26
107
原创 Spring mvc在Spring boot下的流程
文章目录请求流程Spring boot加载Spring mvc组件过程DispatcherServletgetHandler()getHandlerAdapter()==ha.handle()==请求流程标记了@controller和@RequestMapping会在容器初始化的时候被扫描注册当前端请求过来时 会解析url,先找到对应的@controllerSpring boot加载Spring mvc组件过程传统的我们实在web.xml中配置相关,那么Spring boot是怎么实现的呢?我们
2020-07-17 09:39:00
640
原创 Mybatis
文章目录MyBatis基本概念什么是mybatis工作原理工作原理详细流程如下配置文件mybatis-config.xmlXMLConfigBuilderMyBatis基本概念什么是mybatis2001年,Clinton Begin发起了一个名为iBATIS的开源项目,最初侧重于密码软件的研发,后来发展成为一款基于Java的持久层框架。 2004年,Clinton将iBATIS的名字和源码捐赠给了Apache软件基金会。 2010年,核心开发团队决定离开Apache软件基金会,并且将iBA
2020-07-04 19:02:44
115
翻译 SpringBoot
文章目录springboot的产生背景?spring boot pom依赖jar包的==@SpringBootApplication==Spring Boot 启动注解思维图**@SpringBootConfiguration**:**@EnableAutoConfiguration**:快速创建SpringBoot工程配置文件YML语法配置文件值获取@PropertySource&@ImportResource配置文件占位符Profile配置文件加载位置外部配置加载顺序(不太重要 略过)==自动配
2020-07-01 17:17:53
187
原创 sharding jdbc单库分表事物问题
技术使用mysqlSpring Data Jpasharding jdbcSpring boot项目没有拆分,因为是收费相关的。采用的是单体服务。问题复现 在进行某笔账单进行红冲调整后,遇到了锁等待的问题。一下是自己的排查路径数据库查明是哪个表被锁住,导致锁等待-- 查询是否锁表show OPEN TABLES where In_use > 0;-- 查询...
2020-04-26 10:00:52
707
原创 发送带图片的邮件
文章目录背景实现过程使用JavaMail定义你所需要的发票模板将图片转为二维码发送Service调用背景开完发票后需要发送邮件信息到客户邮箱中,此时的邮件是带有图片的,为此记录下本次开发过程实现过程使用JavaMail配置文件<dependency><groupId>javax.mail</groupId><artifactId>...
2020-04-13 15:28:40
726
翻译 消息队列
为什么要使用消息队列我们从以下三个方面去回答:解耦、异步、削峰解耦传统模式下的系统架构由于系统耦合性太强,如果后续有其他系统接入,需要修改代码。使用中间件:将消息写入消息队列,需要消息的系统自己从消息队列中订阅,原始系统不需要做任何修改。异步传统模式下:以同步方式运行程序,如果在高并发的情况下,会出现信息阻塞。使用中间件:将消息写入消息队列,业务逻辑以异步方式运行,加快响应速度...
2019-12-11 10:59:37
138
原创 Maven
第一章 前言在目前的项目构建中,可以说不使用maven的情况基本不存在。今天把maven的基本概念以及使用总结了下,供大家以后作为入门和查询使用。第二章 正文2.1.Maven概念Maven作为一个构建工具:帮助我们自动化构建,我们只需关注命令即可。抽象构建过程,提供构建任务实现。跨平台,提供对外一致的操作接口。Maven作为一个依赖管理工具和项目管理工具:借助坐标系统准...
2019-07-05 15:05:42
190
原创 jenkins自动化部署war
文章目录系统环境原理使用方法安装jdk mavenjenkins配置全局工具配置安装插件配置系统设置创建maven项目系统环境1.linux:ubuntu2.java83.jenkins 2.138.3 war包4.gitlab5.mavne3.5.4原理配置git服务器,提交代码远程更新至jenkins服务器下配置maven,将之前项目打包编写ssh,运行项目使用方法...
2018-12-04 10:08:01
459
原创 Navicat 将mysql、oracle表导出为数据字典
select column_name,column_type,is_nullable,column_comment from information_schema.columns where table_schema ='yck_bts_db' and table_name = 'da_menu';第一个为数据库名 第二个为表名选择工具导出为excelexcel转word h...
2018-09-12 14:30:29
2262
原创 Ubuntu 16.04.3 安装ORACLE
环境下载oracle环境ubuntu 14.04 LTS amd64位 oracle11 jdk816G下载oracle
2018-09-12 10:50:10
334
原创 Spring REST API异常处理机制
@ControllerAdvice@ExceptionHandler实现方式@ControllerAdvice@ControllerAdvice是一个@Component,用于定义@ExceptionHandler,@InitBinder和@ModelAttribute方法,适用于所有使用@RequestMapping方法。Spring4之前,@Controlle...
2018-08-29 10:34:02
619
原创 Spring Boot RestTemplate
getForObjectgetForEntitypostForObjectHttpEntitypostForEntity配置超时getForObjectgetForObject指get请求,并返回一个Object对象。这里有2个方法参数第1个参数:请求的url地址第2个参数:返回的结果类型,这里String.class表示返回结果是一个字符串。@Re...
2018-06-11 13:43:08
828
原创 Linux下Spring Cloud多项目部署到tomcat下
去除spring boot内置Tomcat修改tomcat内存大小修改Tomcat配置文件,配置多个项目去除spring boot内置Tomcat1.去除jar包依赖<dependency> <groupId>org.springframework.boot</groupId> <artifa...
2018-05-02 21:05:15
3518
http上传文件客户端和服务端代码
2018-01-29
spring roo 生成数据库表
2017-08-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人