摘要:
一、自定义函数 自定义函数(user-defined function简称UDF)是一种对MySQL扩展的途径,其用法和内置函数相同。 自定义函数的两个必要条件: 参数 返回值(必须有)。函数可以返回任意类型的值。 1.1 创建 DELIMITER $$ --将语句的结束符号从分号;临时改为两个$$ 阅读全文
摘要:
什么是Seata AT模式 AT模式是Seata主推的分布式事务解决方案,最早来源于阿里中间件团队发布的TXC服务,后来成功上云改名GTS。Seata官方文档中有关于AT模式的详细介绍——AT Mode[1],它使得应用代码可以像使用本地事务一样使用分布式事务,完全屏蔽了底层细节,它和笔者之前介绍过 阅读全文
摘要:
一、概述 在学习ConcurrentSkipListMap之前,我们需要来了解一种随机化的数据结构:跳跃表(skip list)。 ConcurrentSkipListMap是一个基于skip list实现的线程安全的有序存储的Map,默认情况下根据key的自然顺序进行排序,或者根据在Map进行创建 阅读全文
摘要:
一、简介和性能 G1的目标是在可控的停顿时间内完成垃圾回收,所以进行了分区设计,在回收时采用部分内存回收(在YGC时会回收所有新生代分区,在混合回收时会回收所有的新生代分区和部分老生代分区),支持的内存也可以达到几十个GB或者上百个GB。为了进行部分回收,G1实现了RSet管理对象的引用关系。基于G 阅读全文
摘要:
虽然目前大部分系统使用的是JDK8,使用的垃圾回收器也大概率为G1或者更古老的垃圾回收器,但是截止到目前为止,JDK已经更新到JDK16了,垃圾回收器也几乎在每一次迭代中被更新,目前最前沿的垃圾回收器为Shenandoah和ZGC,这两款垃圾回收器都是以低延时为主要目的。 一、概述 Shenando 阅读全文
摘要:
一、概述 G1(Garbage First)垃圾回收器是在Java7 update 4之后引入的一个新的垃圾回收器。HotSpot为解决CMS算法产生空间碎片和其它一系列的问题缺陷,而提供了另外一种垃圾回收策略。G1是一个分代的,增量的,并行与并发的标记-复制垃圾回收器。它的设计目标是为了适应现在不 阅读全文
摘要:
一、概述 什么是Redis Redis(Remote Dictionary Server) 是一个使用C语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。 Redis可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串(String)、列 阅读全文
摘要:
在Spring中进行事务管理非常简单,只需要在方法上加上注解@Transactional,Spring就可以自动帮我们进行事务的开启、提交、回滚操作。甚至很多人心里已经将Spring事务与@Transactional划上了等号,只要有数据库相关操作就直接给方法加上@Transactional注解。 阅读全文
摘要:
线上故障主要会包括cpu、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的,基本上出问题就是df、free、top三连,然后依次jstack、jmap伺候,具体问题具体分析即可。 阅读全文
摘要:
一、概述 MySQL日志主要包括错误日志、查询日志、慢查询日志、重做日志、归档日志几大类。其中比较重要的归档日志(binlog)和重做日志(redo log)和回滚日志(undo log)。 二、undo log日志 2.1 概念 顾名思义,回滚日志(undo log)的字面意思就是撤销操作的日志, 阅读全文
摘要:
一、前言 数据的校验是交互式网站一个不可或缺的功能,前端的js校验可以涵盖大部分的校验职责,如用户名唯一性,生日格式,邮箱格式校验等等常用的校验。但是为了避免用户绕过浏览器,使用http工具直接向后端请求一些违法数据,服务端的数据校验也是必要的,可以防止脏数据落到数据库中,如果数据库中出现一个非法的 阅读全文
摘要:
在项目中,往往需要执行数据库操作后,发送消息或事件来异步调用其他组件执行相应的操作,例如: 用户注册后发送激活码; 配置修改后发送更新事件等。 但是,数据库的操作如果还未完成,此时异步调用的方法查询数据库发现没有数据,这就会出现问题。 为了解决上述问题,Spring为我们提供了以下两种方式,以便我们 阅读全文
摘要:
一、引言 Spring Bean的生命周期流程图 其实要记忆该过程,还是需要我们先去理解,本文将从以下两方面去帮助理解Bean的生命周期: 生命周期的概要流程:对Bean的生命周期进行概括,并且结合代码来理解; 扩展点的作用:详细介绍Bean生命周期中所涉及到的扩展点的作用。 二、生命周期的概要流程 阅读全文
摘要:
## OSI与TCP/IP各层的结构与功能,都有哪些协议? 学习计算机网络时我们一般采用折中的办法,也就是中和`OSI`和`TCP/IP`的优点,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚。 ![五层体系结构.png](https://img2022.cnblogs.com/blo 阅读全文
摘要:
一、CommandLineRunner和ApplicationRunner 1.1 应用及场景 SpringBoot中提供了两个接口可以在SpringBoot启动的过程中进行一些额外的操作,比如读取配置文件、数据库操作等自定义的内容。而这些功能的实现也非常简单,直接实现这两个接口并实现其run方法, 阅读全文
摘要:
问题一:死锁 记录一次分布式事务seata遇到的巨坑报错,开发环境没有问题,但是测试环境频繁出现事务报错。 报错提示: org.springframework.orm.jpa.JpaSystemException: Unable to commit JDBC Connection; nested e 阅读全文
摘要:
一、前言 我现在需要实现一个关于交易的功能,这个功能大致用到的参数都一样,但是在交易类型上分为充值、转账、消费、退款和提现等。不同的交易申请流程都属于交易功能的一部分,但是结合业务后,逻辑算法都是基本独立的。 按照往常的写法,可能会出现如下的代码写法: public String createOrd 阅读全文
摘要:
锁是计算机协调多个进程或线程并发访问某一资源的机制。锁保证数据并发访问的一致性、有效性;锁冲突也是影响数据库并发访问性能的一个重要因素。锁是MySQL在服务器层和存储引擎层的的并发控制。 加锁是消耗资源的,锁的各种操作,包括获得锁、检测锁是否是否已解除、释放锁等。 锁机制 共享锁与排他锁 共享锁(读 阅读全文
摘要:
Seata是什么 Seata是阿里近期开源的分布式事务框架。框架包括了集团的TXC(云版本叫GTS)和蚂蚁金服的TCC两种模式,短短数月Github上的star数已经接近一万,算是目前唯一有大厂背书的分布式事务解决方案。 TXC在Seata中又叫AT模式,意为补偿方法是框架自动生成的,对用户完全屏蔽 阅读全文
摘要:
一、简介 Future实际采用FutureTask实现,该对象相当于是消费者和生产者的桥梁,消费者通过FutureTask存储任务的处理结果,更新任务的状态:未开始、正在处理、已完成等。而生产者拿到的FutureTask被转型为Future接口,可以阻塞式获取任务的处理结果,非阻塞式获取任务处理状态 阅读全文