- 博客(46)
- 资源 (3)
- 收藏
- 关注
原创 MySQL锁
MySQL锁的定义根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类全局锁顾名思义,全局锁就是对整个数据库实例加锁。MySQL提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。**全局锁的典型使用场景是,做全库逻辑备份。**也就是把整库每个表都se
2022-01-09 19:43:37 1035
原创 MySQL索引
索引索引的出现其实就是为了提高数据查询的效率,就像书的目录一样索引常见的模型哈希表,这种结构适用于只有等值查询的场景有序数组,等值查询和范围查询场景中的性能就都非常优秀,但更新比较慢。有序数组索引只适用于静态存储引擎树。树可以有二叉,也可以有多叉。多叉树就是每个节点有多个儿子,儿子之间的大小保证从左到右递增。二叉树是搜索效率最高的,但是实际上大多数的数据库存储却并不使用二叉树。其原因是,索引不止存在内存中,还要写到磁盘上。你可以想象一下一棵100万节点的平衡二叉树,树高20。一次查询可能需要
2022-01-09 15:52:08 1328
原创 MySQL事务隔离
事务隔离隔离性与隔离级别ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性)当数据库上有多个事务同时执行的时候,就可能出现脏读(dirty read)、不可重复读(non-repeatable read)、幻读(phantom read)的问题,为了解决这些问题,就有了“隔离级别”的概念。在谈隔离级别之前,你首先要知道,你隔离得越严实,效率就会越低。因此很多时候,我们都要在二者之间寻找一个平衡点。SQL标准的事务隔离级别包
2022-01-09 15:51:13 1048
原创 MySQL日志系统
日志系统日志系统主要有redo log(重做日志)和binlog(归档日志)。redo log是InnoDB存储引擎层的日志,binlog是MySQL Server层记录的日志, 两者都是记录了某些操作的日志(不是所有)自然有些重复(但两者记录的格式不同)。redo logredo log是InnoDB存储引擎层的日志,又称重做日志文件,用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来。在实例和介质失败(media failure)时,redo log文件就能派上用场,如
2022-01-09 15:50:01 179
原创 MySQL 基本架构图
MySQL 基本架构图MySQL 主要分为两层Server层与存储引擎层(innodb)两部分Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、Memory等多个存储引擎。现在最常用的存储引擎是InnoDB,它从MySQL 5.5.5版本开始成为
2022-01-09 15:46:32 912
原创 Sprring Security 认证
核心类SecurityContext(存储用户认证的上下文信息)SecurityContextHolder(工具类,使用ThreadLocal保存上下文信息,线程安全,使用它来获取SecurityContext)Authentication(用户的基本认证信息接口)认证接口public interface Authentication extends Principal, Serializable { Collection<? extends GrantedAuthority&g
2021-05-15 12:04:51 130
原创 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 384
原创 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 8750 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 508
原创 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 258
原创 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 467
原创 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 199
原创 Hzero 服务注册监听组件的分析
有三种事件的类型:InstanceAddedEventInstanceRemovedEventServiceChangedEvent一个事件发布器:AbstractEventListener它实现了ApplicationEventPublisherAware接口会注入进一个事件发布器,同时启动一个定时任务,每十秒执行一次,主要是通过连接注册中心去监听服务的上下线和改变,然后发布相应的事件,去触发监听该事件的的事件监听器。//// Source code recreated from a .
2021-03-23 11:30:14 245
原创 Hzero增强mybatis组件解析
1.使用@Provider注解会生成一个ProviderSqlSource的实体类,但是通过MybatisMapperAutoConfiguration类中的mapperScannerConfigurer的方法实例化了一个定制的CommonMapperScanConfigurer,并设置了扫描包的路径,在这个类下的postProcessBeanDefinitionRegistry方法,会不断遍历容器中的类,直到发现了MapeerFactoryBean类,会将其替换为CustomMapperFactoryBe
2021-03-23 10:22:57 1494 2
原创 java线程知识学习小记
1.每个Thread类运行完run方法后会自动调用notify方法,因此不推荐使用Thread对象作为锁对象,join方法的底层也是这样,它的底层会调用wait等待。而线程执行完毕会调用notify方法,所以会接触阻塞。...
2020-11-17 15:30:38 131
原创 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 281
原创 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 927
原创 springboot自动配置原理解析
@SpringBootApplication注解中引入了@EnableAutoConfiguration注解。@EnableAutoConfiguration注解通过@Import导入了EnableAutoConfigurationImportSelector类tips: @Import 通常用来导入外部配置,导入实现ImportSelector,ImportBeanDefinitionRegistrar,pojo(4.2之后),@Configuration修饰的配置类如果需要在所有的@Config.
2020-09-29 16:14:37 93
原创 栈经典例题
一个栈的入栈序列是 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 3360 2
原创 mysql常见错误解决方案
ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’; //解决本地连不上dokcer mysql的方法。
2020-08-11 12:37:33 178
原创 java常见输入输出流
JDK所提供的所有流类位于java.io包中,都分别继承自以下四种抽象流类:InputStream:继承自InputStream的流都是用于向程序中输入数据的,且数据单位都是字节(8位)。OutputSteam:继承自OutputStream的流都是程序用于向外输出数据的,且数据单位都是字节(8位)。Reader:继承自Reader的流都是用于向程序中输入数据的,且数据单位都是字符(16位)。Writer:继承自Writer的流都是程序用于向外输出数据的,且数据单位都是字符(16位)。Java流的
2020-07-18 09:37:31 1894
原创 常用的排序算法
选择排序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 144
原创 数据结构和算法之队列
队列的定义队列是线性表的一部分,底层可以用属数组和链表,这里采用数组。主要要用两个变量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 105
原创 数据结构和算法之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 204
原创 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 124
原创 BeanPostProcessor详解
1.BeanPostProcessor简介BeanPostProcessor是Spring IOC容器给我们提供的一个扩展接口。接口声明如下public interface BeanPostProcessor { //bean初始化方法调用前被调用 Object postProcessBeforeInitialization(Object bean, String beanNa...
2020-02-28 16:47:35 1536
原创 spring生命周期之lifecycle
实现spring框架的IntializingBean和DisposableBean接口前者调用afterPropertiesset()方法,后者调用destory方法自定义初始化和摧毁方法通过在bean上配置init-method,detroy-method实现使用JSR-250 @PostConstruct和PreDestory注释在方法上实现初始化和摧毁方法//student类p...
2020-02-28 16:01:17 379
原创 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 98
原创 Java通过Class类型将Object转换为相应类型
Object c = new Cat();Cat z = Cat.class.cast(c);
2020-02-09 13:04:48 11961 5
原创 04进程的创建和销毁
1 进程创建通过fork()创建进程,通过返回的的pid进行区别父子进程,系统会拷贝父进程的堆栈到子进程中。getpid()获取进程IDgetppid()获取父进程ID2 进程的销毁通过exit(),_exit()这两个函数去结束进程,还有执行到函数最后一行,return 结束进程。状态标志位 EXIT_SUCCESSEXIT_FAILURE通常父进程使用exit,子进程使用_ex...
2020-02-03 12:54:04 706
原创 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 124
原创 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 140
原创 设计模式学习03
4.1 行为型模式4.1.1 责任链模式顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。实际就是一个...
2020-01-31 11:54:32 89
原创 设计模式学习02
3.1 结构型模式3.1.1 适配器模式适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。实际就是解...
2020-01-30 12:02:09 203
原创 设计模式学习01
1 GOF设计原则1.1对接口编程而不是对实现编程 面向接口编程:不需要知道特定的实现类,低耦合。1.2 优先使用对象组合而不是继承继承是is-a,组合是has-a.2设计模式类型...
2020-01-29 11:56:57 188
原创 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 297
ThreadPool.zip
2020-02-02
memroy.zip
2020-01-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人