自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(119)
  • 资源 (1)
  • 收藏
  • 关注

原创 Mysql InnoDB存储引擎【三】Change Buffer

mysql innodb change buffer

2022-08-19 16:38:59 478 1

原创 Mysql InnoDB存储引擎【二】InnoDB Buffer Pool 缓存池

mysql innodb 缓存池

2022-08-19 16:28:18 284

原创 Mysql InnoDB存储引擎【一】InnoDB Multi-Versioning 多版本

InnoDB Multi-Versioning

2022-08-19 16:12:17 357

原创 了解阿里RocketMq消息队列

消息队列 - 阿里RocketMq阿里RocketMq是基于Apache RocketMQ构建的低延迟、高并发、高可用、高可靠的分布式消息中间件。可以基于tcp协议和http协议。公司采用tcp协议。tcp协议的有地域限制。TCP协议客户端接入点仅在公网地域有公网接入点,其余地域只提供内网接入点,HTTP协议在各地域均提供公网和内网接入点。一、核心概念topic: 消息主题,一级消息类型,生产者向其发送消息。生产者:消息发布者。消费者:消息消费者。消息:生产者 向 topic

2021-12-30 15:34:38 1618

原创 Spring 监听器实现及源码解读

Spring 监听器实现及源码解读一、自定义Spring监听器实现1. 定义事件/** * 订单微信推送事件 * * @author: mao-tao * @Date: 2021-12-29 13:18 * @Version: 1.0 **/public class OrderEvent extends ApplicationEvent { private String orderName; private String openId; /** * Create

2021-12-29 17:11:26 564

原创 事务和@Transactional的理解

事务和@Transactional的理解@Transactional注解实现和编码实现的选择。二者控制的粒度不同,@Transactional的粒度是类或者方法级别。编码实现可以控制到更细粒度级别。一、使用方式@Transactional注解可以使用在接口、类、类方法上。作用于类:该类及其子类下的所有public 方法都配置了相同的事务属性信息。**作用于类方法:**当类配置了@Transactional,方法上配置的@Transactional注解覆盖类上注解属性信息。作用于接口: 不推荐

2021-11-22 15:34:35 878

原创 一、mysql笔记

mysql 笔记一、mysql锁(一)全局锁对整个数据库实例加锁。MySQL提供加全局读锁的方法:Flush tables with read lock(FTWRL)这个命令可以使整个库处于只读状态。使用该命令之后,数据更新语句、数据定义语句和更新类事务的提交语句等操作都会被阻塞。使用场景:全库逻辑备份。风险:1.如果在主库备份,在备份期间不能更新,业务停摆2.如果在从库备份,备份期间不能执行主库同步的binlog,导致主从延迟官方自带的逻辑备份工具mysqldump,当mysqldum

2021-11-22 15:32:23 899

原创 Spring启动流程

spring 启动流程一、核心步骤fresh方法// 启动方法// 启动完,所有的单例都要实例化,对于已经创建的单例对象先销毁,在创建public void refresh() throws BeansException, IllegalStateException { synchronized(this.startupShutdownMonitor) { // 1.启动前的准备工组,准备一些启动开始时间,激活标志、开关标识等。 this

2021-11-20 11:15:11 1423

原创 java8 stream 分批处理大数据集

public static void testHandler分批处理集合() { //业务数据 List<String> dataList=new ArrayList<>(); for (int i = 0; i < 100000; i++) { dataList.add(i+""); } int total = dataList.size(); // 每次分批处理个数 int num=500; ...

2021-10-21 10:03:20 1862

原创 @Transactional事务失效的6种场景

@Transactional 注解只能应用到 public 可见度的方法上。如果应用在protected、private或者 package可见度的方法上,也不会报错,不过事务设置不会起作用。默认情况下,Spring会对Error或者RuntimeException异常进行事务回滚,其他继承自java.lang.Exception的异常:如IOException、TimeoutException等,不会回滚。解决方案:Transactional注解加 rollbackFor 属性,指定java.l.

2021-09-28 17:58:56 2346 2

原创 过滤器Filter

过滤器Filter一、Filer简介​ Filter过滤是作用于客户端和服务端资源文件(servlet、jsp、html等)之间的一道过滤网,可以对不符合规则的客户端请求和服务端响应进行拦截和修改。二、应用场景过滤器一般用于登录权限验证、资源访问权限控制、敏感词汇过滤、字符编码转换等等操作,便于代码重用,不必每个servlet中还要进行相应的操作。三、执行流程过滤链代码执行流程如上图:客户端从浏览器发起请求,request先进入第一个Filter进行过滤,符合条件则进入下一个Filter进行

2021-09-09 13:31:46 200

原创 FeignClient RPC使用

FeignClient RPC使用一、创建FeignClient// 创建Feign客户端@FeignClient(contextId = "myClient", name = "mt-prject-name:student",url = "http://localhost:8080/")public interface ReportApiClient { // 对应服务的接口(controller层的接口一致) @GetMapping("/v2/student") StudyRepo

2021-09-08 18:16:56 948

原创 Java中的引用Reference下篇(实践)

一、Reference类解析(一)Reference 类1.1 重要属性private T referent; volatile ReferenceQueue<? super T> queue;volatile Reference next;transient private Reference<T> discovered;private static Reference<Object> pending = null;1.1.1属性作用先看一下 Ref

2021-08-29 21:13:00 391

原创 Java中的引用Reference上篇(理论)

2021-08-29 18:49:16 91

转载 springboot使用hibernate validator校验

:原文地址

2021-08-15 10:04:30 86

原创 jdk环境变量配置 - 关键解读

一、JDK和JRE1.jdk;是java开发工具,自带了运行环境jre。开发工具:(javac.exe编译工具,java.exe执行工具,jar.exe打包工具)2. jre 是java运行环境,不开发,只运行java项目就可以只安装配置jre.3. jdk包含jre,jre包含jvm。java_home :是一个约定,jdk安装路径,tomcat/Eclipse等软件都是通过java_home变量来找jdk路径;好处,可以配置多个版本的jdk,一旦修改版本或者地址,只修改此变量就可以。pat

2021-07-05 08:51:05 211

原创 Redis原理深入理解

Redis原理深入理解一、Redis的特点K-V键值对模型,(为什么设计成非关系型数据库,因为redis一般用来做缓存,数据不是全量的,不完整的数据是很难建立关系)Redis快:基于内存,在内存中操作数据速度非常快。采用IO多路复用技术,减少网络IO的时间消耗。单线程(work单线程,I/O多线程)支持并发,连接多(采用连接池 :I/O多路复用 epoll)何为IO多路复用:多路指多个网络请求,复用是指复用同一个线程。让单线程高效处理多个连接请求,尽量减少网络IO的时间消耗。IO

2021-05-20 20:47:39 357

原创 虚拟机空间分配担保(深入理解Java虚拟机)

虚拟机空间分配担保通过读深入理解Java虚拟机的空间分配担保策略,此处何时触发FullGC让我觉得需要记录一下。jdk 6 Update 24之后,-XX:HandlePromtionFailure 参数不会在影响虚拟机的分配担保策略,默认会开启分配担保策略。触发分配担保策略的时机:当出现大量对象在MinorGC后仍存活的情况(极端情况MinorGC后所有新生代对象都存活)需要老年代分配担保,把Survivor放不下的对象送入老年代。只要老年代的剩余连续空间大于新生代对象总大小或者历次晋升的平均大

2021-04-24 22:36:12 227

原创 java中的锁

Java中的锁一、公平锁和非公平锁公平锁:在多线程情况下,根据申请锁的顺序获取锁的策略成为公平锁。就是先进先出的等待队列。非公平锁:在多线程情况下,先抢夺锁,抢不到,根据公平锁方式获取锁。二、可重入锁(递归锁)同一线程外层函数获取锁之后,内层递归函数仍能获取该锁的代码,在同一线程在外层获取锁的时候,在进入内层方法会自动获取锁。即线程可以进入任意一个它已经拥有的锁所同步代码块。作用:可重入锁可以避免死锁。三、自旋锁尝试获取锁的线程不会立即阻塞,而是采用循环的方式尝试去获取锁。优点:减少上下文

2021-02-17 13:40:04 173

原创 java容器

java中的容器一、HashMap源码理解HashMap底层采用数组链表的方式实现。jdk1.7之前以k-v键值对方式封装在Map的内部接口Entry对象,1.8 封装在Entry实现类Node对象中,jdk1.7数组就是Entry[],1.8就是Node[]中。数据结构:索引key、值value、指向下一个对象的指针next。new一个HashMap默认容量未1<<4 = 16.最大容量为2的30次方。为什么HashMap的最大容量为1<<30?(左移)因为hashM

2021-02-17 12:12:53 164 2

原创 cpu实现原子性-总线锁和缓存锁

处理器如何实现原子操作1.总线锁2.缓存锁3.两种情况下处理器不会使用缓存锁定随着多核时代的到来,并发操作已经成了很正常的现象,cpu处理器实现原子操作有两种方式:(1)使用总线锁保证原子性。(2)使用缓存锁保证原子性。1.总线锁总线锁就是将cpu和内存之间的通信锁住,使得在锁定期间,其他cpu处理器不能操作其他内存中数据,故总线锁开销比较大。总线锁的实现是采用cpu提供的LOCK# 信号,当一个cpu在总线上输出此信号时,其他cpu的请求将被阻塞,那么该cpu则独占共享内存。何为总线?CPU总

2021-02-17 12:06:24 4731 7

原创 SQL中escape关键字的使用

escape关键字的使用该关键字是用来定义一个转义符。将定义的该转义符后面的这一个字符作为普通字符使用。eg:slect * from table1 t where t.name like ‘g_’如果没有使用escape关键字,则会匹配 name 为 ga、gb、gc等,会把_作为通配符使用。slect * from table1 t where t.name like ‘g_’ escape ’\‘escape将\定义为转义字符,将其后面的_定义为普通字符。则

2021-01-12 16:15:22 1090

原创 Synchronize和ReentrantLock的比较

Synchronize和Lock的区别?用新的lock有什么好处?举例说明。1. 原始构成Synchronize是Java的关键字,属于JVM层面的锁。底层采用(monitorenter和 monitorexit)monitor对象完成同步,其实wait和notify等方法 也是依赖monitor对象,故只能在同步代码块或方法中才能调用wait和notify等方法 。Lock是在java.util.concurrent.locks.lock,属于Java api层面的锁。2. 使用方法synch

2020-12-25 12:50:39 248

原创 git常见问题整理

Git的命令使用及遇到的问题一、常用命令二、遇到的问题git push rejected问题解决方法方法一:执行git命令:git pull origin master --allow-unrelated-histories方法二:git pull --rebase origin mastergit push origin master...

2020-11-18 10:18:59 74

原创 FileBeat

一、fileBeat安装https://blog.csdn.net/jeikerxiao/article/details/848417921.linux安装部署启动: ./filebeat -e -c mytest.ymlfilebeat 5.5配置:filebeat.prospectors:- input_type: log enabled: true paths: - /mtlog/beats/logs/*.logoutput.console: pretty: tru

2020-10-31 13:54:31 149

原创 Logstash使用

一、简单启动logstashLinux安装https://www.jianshu.com/p/9da5cd68a6111. logstash -f test.conftest.conf是下面自己写的配置文件2.启动出现错误:os::commit_memory(0x00000000c5330000, 986513408, 0) failed; error=‘Cannot allocate memory’ (errno=12)参考文章:https://www.cnblogs.com/wang-

2020-10-31 13:52:52 250

原创 elasticsearch-2-search

Search参考文章:https://www.cnblogs.com/shoufeng/p/10648835.html映射一旦创建完成, 就不允许修改:—— Elasticsearch对文档的分析、存储、检索等过程, 都是严格按照mapping中的配置进行的. 如果允许后期修改mapping, 在检索时对索引的处理将存在不一致的情况, 导致数据检索行为不准确.只能在创建index的时候手动配置mapping, 或者新增field mapping, 但是不能update field mappi

2020-10-31 13:40:48 81

原创 elasticsearch-1-基本操作

Elasticsearch基本操作添加索引库并设置mappersPUT http://localhost:9200/blog{ "mappings": { "book":{ "properties": { "id":{ "type": "long", "store": "yes" },

2020-10-31 13:33:32 75

原创 elasticsearch-1-安装

一、Elasticsearch安装linux环境下下设置启动出错解决:https://blog.csdn.net/jiahao1186/article/details/90235771查看Elasticsearch进程jps后台启动: ./elasticsearch -d二、图形界面Elasticsearch-head安装需要有node.js的环境,先安装,安装完成进行下面。命令安装- git clone git://github.com/mobz/elasticsearch-h

2020-10-31 13:33:09 66 1

原创 shiro-redis-jwt整合

一、整合流程逻辑二、整合步骤1. 导入shiro-redis的starter包:还有jwt的工具包,以及为了简化开发,我引入了hutool工具包。<!--shiro-redis整合--> <dependency> <groupId>org.crazycake</groupId> <artifactId>shiro-redis-spring-boot-starter</artifactId> <ver

2020-10-31 13:28:30 932 3

原创 elasticsearch-1-java操作

JAVA操作Elasticsearch一、java客户端可以对Es进行的操作:在现有的集群上执行标准的索引、获取、删除、搜索功能。在运行的集群上执行管理任务。二、操作步骤创建索引库创建一个java工程添加jar包,添加maven编写测试服方法实现创建索引库创建一个Setting对象,相当于一个配置信息,主要配置集群名称。创建一个客户端Client对象使用client对象创建一个索引库关闭对象三、javaAPI学习1.getget API允许根据i

2020-10-27 22:52:14 128

原创 Docker --- 使用

一、为什么使用Docker1)、更轻量级:基于容器的虚拟化,仅包含业务运行所需要的runtime时的环境,CentOS/Ubuntu基础镜像仅170M;宿主机可以部署100~1000个容器2)、更高效 :无操作系统虚拟化开销 - 计算 : - 存储 - 网络3)、更敏捷、更灵活分层存储和包管理,devops理念支持多种网络配置二、容器虚拟化技术:Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离。将软件运行所需要的所有资源打包到一个隔离的容器中。容器不同与虚拟机的

2020-10-27 22:51:09 56

原创 Docker --- 介绍及安装

Docker1.简介:Docker是一个开源的应用容器引擎;docker支持将软件编译成一个镜像;然后在镜像中给各种软件做好配置,将镜像发布出去,其他是使用者就可以直接使用这个镜像。运行中的这个镜像成为容器,容器的启动是非常快的,(ms级别)2.核心概念:docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统上);docker客户端(Client):连接Docker主机进行操作;客户端通过命令行或者其他图形化界面的工具;docker仓库(Regis

2020-10-27 22:50:30 131

原创 Spring源码解读 --- 笔记整理

sSpring源码解读文章目录Spring源码解读一、Spring 以XML方式加载bean的过程1. 代码入口2. 封装配置文件3. 初始化XmlBeanFactory4. 加载操作的切入点5. doLoadBeanDefinitions方法的加载分析(加载XML文件的核心)(1)获取验证模式,并封装返回Doc(2)注册bean[1]解析bean[2] 封装BeanDefinition对象[3] 将BeanDefinition装入Spring的beanDefinitionMap容器中。6 总结二、Sp

2020-10-27 20:57:21 282

原创 JVM --- 笔记

虚拟机java8API地址https://docs.oracle.com/javase/8/docs/api/jvm8 地址https://docs.oracle.com/javase/specs/jvms/se8/html/一、类加载子系统(一)类的加载过程1.加载阶段(将类以二进制流形式加载到JVM方法区中生成Class对象。)(1)通过一个类的全限定名获取定义此类的二进制字节流。(2)将字节流所代表的静态存储结构转为方法区的运行时数据结构。(3)在内存中生成代表此类的java.la

2020-10-23 21:37:22 142

原创 Spring源码解读 --- 后置处理器

后置处理器 BeanPostProcessor定义:bean初始化前后需要处理的操作。eg:可以实现该接口,在bean初始化前后添加自己的业务逻辑。@Componentpublic class MyPostProcessor implements BeanPostProcessor { /** * 在bean初始化之前执行 * @param bean * @param beanName * @return * @throws BeansExc

2020-10-22 20:16:20 126

原创 Spring源码解读 --- 重要注解/组件

(一)@Conditional- 用在方法上:按照一定的条件进行判断,满足条件给容器中注册bean。- 用在类上:按照一定的条件进行判断,满足条件才会加载这个类中的所有信息。@Conditional(WindowCondition.class)@Bean("maotao")public Person test01() { return new Person("毛涛",21);}// 判断条件public class WindowCondition implements Condi

2020-10-22 20:07:53 77

原创 三、Spring源码解读 --- IOC容器解析

三、Spring IOC 解析在准备阶段做的操作,是为了提高框架的可扩展性。Spring提供的框架可扩展性?在对象创建之前添加某些功能。在容器初始化之前添加某些功能。通过监听器。在不同的阶段发生不同的事件,完成一些功能。(观察者模式)抽象出一堆接口,进行扩展。面向接口编程。IOC与DI的关系IOC (Inversion Of Control)是控制反转,也被称为DI(Dependency Injection)依赖注入。他是对象定义其依赖关系的过程。对象只和构造参数,工厂方

2020-10-22 20:05:28 109

原创 Spring源码解读 --- 通过注解加载bean

二、Spring 通过注解加载bean1.加载注解标注的类。MainConfig是通过注解注册在IOC容器中。ApplicationContext context = new AnnotationConfigApplicationContext(MainConfig.class);2. 注册到BeanDefinitionRegistry。后续对MainConfig的注册处理都是由AnnotatedBeanDefinitionReader类进行处理。最终注册到BeanDefinitionRegist

2020-10-22 20:03:54 382

原创 设计模式 - 建造者模式

设计模式 - 建造者模式一、定义:将对象的构建过程和其表示分离开,将构建过程抽象出来,使得同一个构建过程可以有多个表示。二、类型: 创建类模式三、类图四、 4个要素产品类 : 具体的实体类。抽象建造者:操作创建产品对象的行为抽象出来。使应用更容易扩展。建造者:抽象建造这的具体实现类,是真正操作创建产品对象的类。导演类:即调用相应的创建者来构成产品。导演类不依赖产品类,直接操作对象是建造者。五、关系流导演类 (业务需求类) -----------> 建造者(产品类操作过程的

2020-10-16 18:04:35 85

SpringCloud.pdf

Springcoud微服务从0搭建学习笔记,相关组件EureKa、Hystrix、Bus等组件的使用记录。

2020-12-08

空空如也

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

TA关注的人

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