自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (3)
  • 收藏
  • 关注

原创 MySQL锁

MySQL锁的定义根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类全局锁顾名思义,全局锁就是对整个数据库实例加锁。MySQL提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。**全局锁的典型使用场景是,做全库逻辑备份。**也就是把整库每个表都se

2022-01-09 19:43:37 1010

原创 MySQL索引

索引索引的出现其实就是为了提高数据查询的效率,就像书的目录一样索引常见的模型哈希表,这种结构适用于只有等值查询的场景有序数组,等值查询和范围查询场景中的性能就都非常优秀,但更新比较慢。有序数组索引只适用于静态存储引擎树。树可以有二叉,也可以有多叉。多叉树就是每个节点有多个儿子,儿子之间的大小保证从左到右递增。二叉树是搜索效率最高的,但是实际上大多数的数据库存储却并不使用二叉树。其原因是,索引不止存在内存中,还要写到磁盘上。你可以想象一下一棵100万节点的平衡二叉树,树高20。一次查询可能需要

2022-01-09 15:52:08 1296

原创 MySQL事务隔离

事务隔离隔离性与隔离级别ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性)当数据库上有多个事务同时执行的时候,就可能出现脏读(dirty read)、不可重复读(non-repeatable read)、幻读(phantom read)的问题,为了解决这些问题,就有了“隔离级别”的概念。在谈隔离级别之前,你首先要知道,你隔离得越严实,效率就会越低。因此很多时候,我们都要在二者之间寻找一个平衡点。SQL标准的事务隔离级别包

2022-01-09 15:51:13 1025

原创 MySQL日志系统

日志系统日志系统主要有redo log(重做日志)和binlog(归档日志)。redo log是InnoDB存储引擎层的日志,binlog是MySQL Server层记录的日志, 两者都是记录了某些操作的日志(不是所有)自然有些重复(但两者记录的格式不同)。redo logredo log是InnoDB存储引擎层的日志,又称重做日志文件,用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来。在实例和介质失败(media failure)时,redo log文件就能派上用场,如

2022-01-09 15:50:01 147

原创 MySQL 基本架构图

MySQL 基本架构图MySQL 主要分为两层Server层与存储引擎层(innodb)两部分Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、Memory等多个存储引擎。现在最常用的存储引擎是InnoDB,它从MySQL 5.5.5版本开始成为

2022-01-09 15:46:32 890

原创 Sprring Security 认证

核心类SecurityContext(存储用户认证的上下文信息)SecurityContextHolder(工具类,使用ThreadLocal保存上下文信息,线程安全,使用它来获取SecurityContext)Authentication(用户的基本认证信息接口)认证接口public interface Authentication extends Principal, Serializable { Collection<? extends GrantedAuthority&g

2021-05-15 12:04:51 100

原创 Hzero 任务调度分析

1.@JobHandler注解 实现IJobHandler接口 定义一个接口2. ExecutorInit这个类实现了CommandLineRunner接口会在springboot启动后收集@JobHandler注解,将其注册到JobRegistry这个类中。 public void run(String... args) throws Exception { this.scanJobHandler(); ThreadFactory threadFactory = (n

2021-03-26 15:23:11 363

原创 Hzero @Permission注解解析

//// Source code recreated from a .class file by IntelliJ IDEA// (powered by FernFlower decompiler)//package io.choerodon.swagger.annotation;import io.choerodon.core.iam.ResourceLevel;import java.lang.annotation.ElementType;import java.lang.annota

2021-03-25 14:09:51 8630 1

原创 Hzero 关于myabtis组件中的后缀为optional的方法

<bind name="id_cache" value="id"/><bind name="audit" value="@io.choerodon.mybatis.helper.AuditHelper@audit()" /><bind name="optional" value="@io.choerodon.mybatis.helper.OptionalHelper@optional()" />INSERT INTO my_hzero <trim prefix="(

2021-03-24 16:59:45 478

原创 Hzero 验证码组件的分析

1.首先自动配置类:CaptchaAutoConfiguration2.验证码配置类:CaptchaConfiguration//// Source code recreated from a .class file by IntelliJ IDEA// (powered by FernFlower decompiler)//package org.hzero.starter.captcha.config;import com.fasterxml.jackson.databind.Obje

2021-03-23 16:01:58 226

原创 Hzero 主键加密组件解析

1.自动配置类//// Source code recreated from a .class file by IntelliJ IDEA// (powered by FernFlower decompiler)//package org.hzero.starter.keyencrypt;import com.fasterxml.jackson.databind.ObjectMapper;import feign.codec.Decoder;import feign.optionals.

2021-03-23 15:01:16 429

原创 Hzero Feign调用客户端支持组件解析

1.主要是一个切面FeignClientAspect,三个拦截器:JwtRequestInterceptorAccessTokenInterceptorCompositeRequestInterceptor(实现fegin拦截器接口,用于调用前面自己定义的拦截器)//// Source code recreated from a .class file by IntelliJ IDEA// (powered by FernFlower decompiler)//package org.

2021-03-23 11:49:41 187

原创 Hzero 服务注册监听组件的分析

有三种事件的类型:InstanceAddedEventInstanceRemovedEventServiceChangedEvent一个事件发布器:AbstractEventListener它实现了ApplicationEventPublisherAware接口会注入进一个事件发布器,同时启动一个定时任务,每十秒执行一次,主要是通过连接注册中心去监听服务的上下线和改变,然后发布相应的事件,去触发监听该事件的的事件监听器。//// Source code recreated from a .

2021-03-23 11:30:14 217

原创 Hzero增强mybatis组件解析

1.使用@Provider注解会生成一个ProviderSqlSource的实体类,但是通过MybatisMapperAutoConfiguration类中的mapperScannerConfigurer的方法实例化了一个定制的CommonMapperScanConfigurer,并设置了扫描包的路径,在这个类下的postProcessBeanDefinitionRegistry方法,会不断遍历容器中的类,直到发现了MapeerFactoryBean类,会将其替换为CustomMapperFactoryBe

2021-03-23 10:22:57 1432 2

原创 分布式系统的入口

参考主要的视频文档

2021-01-04 15:12:59 142

原创 总体路线

路线单体架构分布式系统微服务架构云原生扩展

2021-01-04 15:10:16 83

原创 java线程知识学习小记

1.每个Thread类运行完run方法后会自动调用notify方法,因此不推荐使用Thread对象作为锁对象,join方法的底层也是这样,它的底层会调用wait等待。而线程执行完毕会调用notify方法,所以会接触阻塞。...

2020-11-17 15:30:38 98

原创 Springboot aop源码解析

1.spring.factories中有AopAutoConfiguration类@Configuration@ConditionalOnClass({ EnableAspectJAutoProxy.class, Aspect.class, Advice.class })@ConditionalOnProperty(prefix = "spring.aop", name = "auto", havingValue = "true", matchIfMissing = true)public clas

2020-10-04 16:13:12 270

原创 spring boot整体架构解析

1.SpringApplication.run()启动的入口方法2. new SpringApplication(source).run()方法3. 进入构造方法内解析它会调用initialize()方法 private void initialize(Object[] sources) { if (sources != null && sources.length > 0) { this.sources.addAll(Arrays.asList(sources));

2020-10-01 19:11:57 915

原创 springboot自动配置原理解析

@SpringBootApplication注解中引入了@EnableAutoConfiguration注解。@EnableAutoConfiguration注解通过@Import导入了EnableAutoConfigurationImportSelector类tips: @Import 通常用来导入外部配置,导入实现ImportSelector,ImportBeanDefinitionRegistrar,pojo(4.2之后),@Configuration修饰的配置类如果需要在所有的@Config.

2020-09-29 16:14:37 85

原创 栈经典例题

一个栈的入栈序列是 a,b,c,d,e,则栈的不可能的输出序列是( )a) edcbab) decbac) dceabd) abcde堆栈讲究先进后出,后进先出选项1是abcde先入栈,然后依次出栈,正好是edcba选项2是abcd先依次入栈,然后d出栈,e再入栈,e出栈选项3是错误的,不可能a先出栈选项4是a入栈,然后a出栈;b再入栈,b出栈。。。。。。依此类推所以选3思考:只要保证栈的入栈顺序就行了,可能是进着出着....

2020-09-14 11:32:15 3274 2

原创 mysql常见错误解决方案

ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’; //解决本地连不上dokcer mysql的方法。

2020-08-11 12:37:33 152

原创 java常见输入输出流

JDK所提供的所有流类位于java.io包中,都分别继承自以下四种抽象流类:InputStream:继承自InputStream的流都是用于向程序中输入数据的,且数据单位都是字节(8位)。OutputSteam:继承自OutputStream的流都是程序用于向外输出数据的,且数据单位都是字节(8位)。Reader:继承自Reader的流都是用于向程序中输入数据的,且数据单位都是字符(16位)。Writer:继承自Writer的流都是程序用于向外输出数据的,且数据单位都是字符(16位)。Java流的

2020-07-18 09:37:31 1864

原创 常用的排序算法

选择排序package Sort;/** * 选择排序 */public class SelectSort { public static void main(String[] args) { int a [] = new int[]{5,8,3,9,4,23}; select_sort(a); for (int z:a ) { System.out.println(z); }

2020-06-13 17:18:28 116

原创 数据结构和算法之队列

队列的定义队列是线性表的一部分,底层可以用属数组和链表,这里采用数组。主要要用两个变量front和rear来记录位置,采用循环数组的形式,减少空间的浪费。<?php/* * @Author: your name * @Date: 2020-05-03 10:39:32 * @LastEditTime: 2020-05-03 11:18:56 * @LastEditors: P...

2020-05-03 11:26:24 94

原创 数据结构和算法之php栈的实现

栈的基本介绍栈的基础数据结构可以使用链表或者数组来进行实现,核心就是需要两个变量,一个变量来记录栈的长度,一个变量进行记录栈顶的位置,执行push操作时top要进行++,执行pop操作时top要进行–.栈的基本实现基于php<?php/* * @Author: your name * @Date: 2020-05-03 09:43:20 * @LastEditTime: 202...

2020-05-03 10:19:56 176

原创 redis基础命令

redis数据结构常用的基本操作keys *根据格式列出建dbsize 计算key的数量exists key 检查key是否存在del key 删除 key-valueexpire key seconds 设置key在seconds秒后过期ttl key查看key的过期时间(-2 已经不存在了)persist key 去掉key的过期时间type key 返回key的类型in...

2020-04-07 13:40:53 94

原创 php深入剖析01

一php整体架构二php生命周期

2020-03-28 12:50:52 92

原创 BeanPostProcessor详解

1.BeanPostProcessor简介BeanPostProcessor是Spring IOC容器给我们提供的一个扩展接口。接口声明如下public interface BeanPostProcessor { //bean初始化方法调用前被调用 Object postProcessBeforeInitialization(Object bean, String beanNa...

2020-02-28 16:47:35 1486

原创 spring生命周期之lifecycle

实现spring框架的IntializingBean和DisposableBean接口前者调用afterPropertiesset()方法,后者调用destory方法自定义初始化和摧毁方法通过在bean上配置init-method,detroy-method实现使用JSR-250 @PostConstruct和PreDestory注释在方法上实现初始化和摧毁方法//student类p...

2020-02-28 16:01:17 362

原创 epoll

epoll中的data联合体ptr和fd不能一起使用

2020-02-22 19:28:08 55

原创 02基于xmlBeanFactory解析spring源码

加载配置文件 xmlBeanFactory(new ClassPathResource(“文件名”))。分析:private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);public XmlBeanFactory(Resource resource) throws BeansExcept...

2020-02-09 15:20:24 92

原创 Java通过Class类型将Object转换为相应类型

Object c = new Cat();Cat z = Cat.class.cast(c);

2020-02-09 13:04:48 11826 5

原创 04进程的创建和销毁

1 进程创建通过fork()创建进程,通过返回的的pid进行区别父子进程,系统会拷贝父进程的堆栈到子进程中。getpid()获取进程IDgetppid()获取父进程ID2 进程的销毁通过exit(),_exit()这两个函数去结束进程,还有执行到函数最后一行,return 结束进程。状态标志位 EXIT_SUCCESSEXIT_FAILURE通常父进程使用exit,子进程使用_ex...

2020-02-03 12:54:04 676

原创 03整合内存池和线程池测试

测试结果开始进行内存操作开始进行内存操作开始进行内存操作开始进行内存操作开始进行内存操作开始进行内存操作25116075522520000256job will be done in5sec…job will be done in4sec…2511607552job done开始进行内存操作2511607552job will be done in6sec…25200002...

2020-02-02 17:08:14 99

原创 02基于linux的线程池设计

1.ThreadPool头文件/* * @Author: power * @Date: 2020-02-02 13:43:24 * @LastEditTime : 2020-02-02 15:48:31 * @LastEditors : Please set LastEditors * @Description: In User Settings Edit * @FilePath:...

2020-02-02 16:35:02 130

原创 设计模式学习03

4.1 行为型模式4.1.1 责任链模式顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。实际就是一个...

2020-01-31 11:54:32 80

原创 设计模式学习02

3.1 结构型模式3.1.1 适配器模式适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。实际就是解...

2020-01-30 12:02:09 198

原创 设计模式学习01

1 GOF设计原则1.1对接口编程而不是对实现编程 面向接口编程:不需要知道特定的实现类,低耦合。1.2 优先使用对象组合而不是继承继承是is-a,组合是has-a.2设计模式类型...

2020-01-29 11:56:57 176

原创 spring源码分析01

1.spring核心模块1.1 核心容器核心容器由以下模块组成,spring-core, spring-beans,spring-context,spring-context-support,和spring-expression (Spring表达式语言)。spring-core和spring-beans模块提供了框架的基础功能,包括IOC和依赖注入功能。 BeanFactory是一个成熟...

2020-01-28 18:08:03 288

ThreadPool.zip

整合前面两部分写的基于linux的线程池技术,内存池技术。能够成功测试,结果正确。代码都是基于LINUx平台的,不兼容windows,后期会更新使用c11的技术。

2020-02-02

memroy.zip

内存池设计源码基于linux.有时需要实现内存池的时候需要重载它们。频繁的new和delete对象,会造成内存碎片,内存不足等问题,影响程序的正常执行,所以一次开辟一个适当大的空间,每次需要对象的时候,不再需要去开辟内存空间,只需要调用构造函数(使用placement new)即可。 new,delete的重载函数,可以是全局函数,也可以是类内部的公有重载函数;当既有全局的重载函数,也有类内部的公有重载函数时,实际调用的是类内部的公有重载函数。 new,delete可以有多种重载方式,但是,new函数的第一个参数一定要是size_t类型

2020-01-28

空空如也

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

TA关注的人

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