- 博客(30)
- 收藏
- 关注
原创 Mysql(三)事务是什么
事务200的视图是[100,200],id=1记录的trx_id=400,按照上边的规则,对于事务200来说事务400属于未开启的事务,所以不可见,接着找到trx_id=100,比400小并且不在数组中,说明属于已提交的事务可见,所以查询结果仍然是1。数据库在事务开启的那一时刻,会为当前事务构造一个数组,这个数组里存的就是当前时间所有活跃(活跃就是开启了事务但是还未提交)的事务id,然后数组里最小的事务id记录为低位,系统里最大的事务id记录为高位,这样就有了下面展示的样子。
2024-10-20 08:40:54
950
原创 Mysql(二)修改SQL在Mysql内部是如何执行的
Mysql在一开始默认的存储引擎是MySAM,但是MySAM是不支持事务的,而binlog作为服务层的日志也仅仅有归档的作用,说白了就是将你的修改简单做个备份,等Mysql服务突然崩了或者需要建新库时可以通过binlog记录回放某个表历史上所有的操作记录,但是binlog并不能保证强事务,也就是说存在物理页已经修改了,但是binlog还没写入就崩了,那么这个数据是无法恢复的。redo log存储的是物理页的变更记录,需要注意的是redo log记录的是对物理页做了什么改动,并不是改动之后的物理页。
2024-10-20 08:38:31
835
原创 Mysql(一)查询Sql是如何执行的
我们知道Mysql是一个数据库系统,提供了对数据的增删改查API,我们通过一条条简单的SQL就可以实现对系统的各种操作,为了更容易理解,我们按照从整体到局部的思路,先鸟瞰Mysql整体的架构,然后再对每个细节深入研究,所以今天我们通过一条查询SQL的执行流程,看一看Mysql的应用架构是如何组成的。今天主要讲解了Mysql的应用架构,并通过查询SQL为例,对Mysql的每个组件及其作用都进行了描述,相信大家对Mysql整个运行流程有了一个大概的了解,下边给大家留了一些问题加深大家的印象😄。
2024-06-01 15:00:42
1153
原创 解决Spring Gateway配置单个路由超时时间不生效的问题
前期业务发展也比较缓慢,新增路由的场景频率不是很高,最近业务越来越广,新增项目频率明显升高,所以想着把路由配置提到apollo中,本想着很简单的一个事情,结果谁知坑一个比一个深,接下来讲一讲都有啥坑,又该如何填这些坑。完成上述步骤,路由配置还是静态的,我们修改完apollo后,除非再次从apollo获取配置文件,这时候才能获取到最新的值,但是无法同步更新运行中的springboot项目中的上下文配置数据,所以我们需要监听apollo中配置的变化,然后手动更新springboot和getaway的配置数据。
2024-03-26 09:30:40
2386
2
原创 Java中的代理模式(二)JDK动态代理
因为JDK动态代理生成的代理对象默认继承了Proxy类,又因为Java中是单继承多实现,所以导致了JDK动态代理无法代理实现类,只能代理接口;而且我们通过观察Proxy类,维护了成员变量并提供了相应的方法,然后通过子类对InvocationHandler进行透传,Proxy对其进行方法执行。其实理论上只要我们把InvocationHandler提出来,不由Proxy进行维护,也就不需要继承Proxy类,就可以对实现类进行代理,可能作者基于面向接口开发的实际场景,以及抽象思维才这么进行设计的吧。
2024-01-21 15:49:10
1227
原创 Java中的代理模式(一)
代理模式的核心就是对被代理对象的能力拓展静态代理适合简单业务,不经常变动,因为实现逻辑简单,开发成本低动态代理适合变动可能性较大的业务。
2024-01-21 15:46:56
693
原创 手把手教你如何搭建Spring本地编译环境
大家好,我是极客涛,不知道小伙伴有没有和我一样的情况,在阅读Spring源码时,只通过静态的代码阅读很难有更深刻的理解,所以建议通过写测试类进行debug的方式,对核心的代码进行运行时的状态调试,这样可以更容易理解,本文介绍了如何搭建Spring的本地编译环境。笔者亲试,只要按照步骤来一定可以顺利搭建完成。
2024-01-15 21:20:31
1226
1
原创 cookie和session的区别-重新认识session
上篇提到了cookie的由来及使用场景,因为HTTP是一种无状态协议,服务器不会存储任何关于用户的信息。为了给用户更好的使用体验,我们可以将这些信息通过cookie保存在用户的终端上,以便于下次用户再次打开网站时以cookie方式带给服务器。cookie已经实现了我们想要的功能,那么为什么还会有session呢,session到底是什么呢,本篇将谈一谈何为session。more。
2023-02-15 13:48:49
143
原创 cookie和session的区别-重新认识Cookie
本来想整理一下单点登录系统的设计,但是想了想,单点登录系统出现的意义也是为了解决不同域下共享用户登录状态(session共享)的问题。那么从源头开始,浏览器和服务器到底是如何来维护同一个用户的状态呢,老生常谈的问题,cookie和session的区别到底是什么?,由此决定从cookie开始,逐步整理关于用户登录这些事。
2023-02-15 13:46:45
232
原创 一键重置git分支脚本
脚本备份,写了一个一键重置某分支的脚本,提高工作效率,V1版本,目前使用未有问题#!/usr/bin/env bashif [ $# -le 3 ] then echo "参数有误({源分支},{重置分支},{本地项目根目录},{项目名称(api/www)}) 举例:" echo "8.29.1.0 qa D:/wangxt-git api" exitfiif [ -z $2 ] then LIST=(qa,develop) else LIST=($.
2021-08-17 10:20:04
318
原创 【踩坑系列】Arrays$asList()抛UnsupportedOperationException异常
今天写代码时遇到一个很奇怪的问题,我很主观的利用Arrays,asList()方法返回一个List,然后对该List进行了add()方法的调用,结果竟然抛了异常。示例代码:@org.junit.Testpublic void test(){ List<String> list = Arrays.asList("aa","bb"); boolean cc = list.add("cc"); System.out.println(list);}报错如下:j.
2021-08-16 14:23:34
182
原创 SpringBoot整合Swagger(spring-boot-starter-swagger)
我们在使用swagger时,需要配置config配置类,spring-boot-starter-swagger则利用Spring Boot的自动化配置特性来实现快速的将swagger2引入spring boot应用来生成API文档,简化原生使用swagger2的整合代码。GitHub地址一、引入pom<dependency> <groupId>com.spring4all</groupId> <artifactId>swagger-sprin.
2021-07-30 14:38:09
1901
原创 InnoDB几个索引数据结构的区别
索引的本质索引是帮助Mysql高效获取数据的排好序的数据结构索引数据结构假如有如上一张表,如果想要查询col2=23的那行数据,如果没有索引或者不走索引的话,那么将要查询7次才会查询到,并且这7行数据在磁盘里并不是挨着存储的,查询效率会非常低。二叉树如上图,我们可以考虑将col2列放在一个二叉树的数据结构中,同样还是查询col2=23的记录,则只需要查询3次就可以查询到,效率要比没有索引的高得多。但是二叉树也有弊端,如col1,如果我们把一个按照大小顺序排序的列数据存入二叉树中,我们发现,
2021-06-28 17:36:38
125
原创 使用ssh登录远程服务器报错 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
今天使用ssh远程链接远程服务器时,突然报错了,报错如下图原因是我的远程服务器进行了重置,导致本地记录的验证信息过时了。有两个办法可以解决:1.删除本地验证信息,看图我们可以知道验证信息就是/Users/wangxiaotao/.ssh/known_hosts 的known_hosts文件;执行命令 rm -rf ./known_hosts将验证信息删除,或者将远程服务器对应的配置信息删除;2.不想改动known_hosts文件的话,可以利用 ssh-keygen -R [远程机器ip]:por
2021-06-05 09:44:20
538
原创 为什么图片会旋转,旋转角是什么
前几天,我在工作中遇到了一个奇怪的问题。某张用苹果手机拍摄的图片在浏览器中使用时是正着的,但是当下载生成图片后图片便横了过来。同样的照片,我使用小米手机拍摄则可以正常使用,很好奇这是为什么,因为这确实影响到了我的正常使用,于是研究了一下其中的原因。在浏览器中使用时生成图片时什么是ExifExif(可交换图像文件格式)是一种协议,用于存储有关数码相机拍摄的图像的各种元信息。Exif与实际图像数据一起存储。Exif中的某些元信息包括相机制造商,快门速度,焦距,方向,拍摄时间等。这些元信.
2020-06-30 20:27:36
3989
原创 maven引入外部jar包的方式
一、dependency 本地jar包<dependency> <groupId>com.im</groupId> <!--自定义--> <artifactId>sdk</artifactId> <!--自定义--> <version>1.0</version> <!--自定义--> <scope>system</scope&
2020-06-10 08:48:26
264
原创 Java面对对象概念,什么是面向对象
我们都知道Java是一门面向对象的语言。什么是面向对象,它有什么特性呢,今天我们就来说一下这个"面向对象"到底是什么意思。面向对象简称 OO(Object Oriented),20 世纪 80 年代以后,其实就有了面向对象分析(OOA)、 面向对象设计(OOD)、面向对象程序设计(OOP)等新的系统开发方式模型的研究。对面对对象设计的语言来说,一切皆是对象。把现实世界中的对象抽象地体现在编程世界中,比如一个苹果我们可以new Apple(),一个小狗我们可以new Dog(),一个对象代表了某个具体.
2020-06-07 16:27:10
407
原创 Java中的数据类型--基本数据类型
Java中对于数据类型,可以分别两大数据类型:基本数据类型和引用数据类型。基本数据类型Java中内置了8种基本数据类型,其中包括6种数字类型(4个整数型,2个浮点型)、1种字符型、1种布尔型。再说数据类型之前,先说一下计算中最小的信息存储单位:bit,二进制数的一位包含的信息或2个选项中特别指定1个的需要信息量称为一比特,是表示信息的最小单位,只有两种状态:0和1。基本数据类型组成byte型:byte 数据类型是8位(bit)、有符号的,以二进制补码表示的整数; 最小值是 -128.
2020-05-31 18:56:35
559
原创 JDK和JRE到底是什么,JDK和JRE的区别,JAVA EE 和 JAVA SE的区别
干了这么久的后端开发程序员,回首想想当初为什么选择了Java,还真说不上来原因,好像顺其自然的上学学到了,好像顺其自然毕业找到了一份Java开发的工作,一干就到现在,Java这门经久不衰的语言到底何去何来,我自己也没有什么123可说的,于是还是加班之余(此处应有滑稽表情)做了一些了解和总结。一、Java是什么Java是什么,大家好像觉得这不是一个问题,Java就是一门面向对象的编程语言呗。Java是一门编译语言不假,但实际上它的价值早已超过作为一门语言那么简单了,客观上说,它已经逐渐演变成了一个
2020-05-10 17:47:21
1374
原创 自用的几款非常方便开发的实用IDEA插件
俗话说:工欲善其事,必先利其器。确实是这样,当我们有了一个好方法,有了一个好工具,再去干一件事情时,真的会方便顺畅的多。所以,今天整理了一些日常开发中自用的并且感觉非常实用的Idea插件,做个分享。日后如果有了新的好用的插件也会进行更新。
2020-04-27 10:47:07
1287
1
原创 如何将excel表的sheet拆成单独的文件表
创建一个测试表格,3个sheet,内容分别为"aaa","bbb","ccc"。使用office打开,右击某个sheet弹出操作栏,选择"查看代码"。然后在弹框里输入下面代码:代码:Private Sub 分拆工作表() Dim sht As Worksheet Dim MyBook As Workbook Set MyBoo...
2020-04-20 10:29:25
5811
原创 浅谈分库分表(mysql)
啥叫分库分表? 简单点说就是当我们遇到访问极为频繁且数据量巨大的库表的时候,我们首先想到的就是减少单库单表的数据量,以便减少数据查询所需要的时间,提高数据库的吞吐,这就是所谓的分表为什么要都开始考虑起来分库分表? 当我们在开发一些用户量小的系统时,比如公司自用的后台系统,相对是比较轻松的,因为你无需特别专注的考虑高并发,高访问,大数据量等问题,所以...
2020-04-11 16:54:23
346
原创 Java如何使用IText向PDF中插入SVG
前边了解到可以使用IText生成PDF文件,但是IText本身不直接支持插入SVG,所以我们要进行一次格式准换,现将SVG文件转换成Image,然后插入Image,达到插入SVG的效果。 将SVG转换成Image我使用的是batik 官网:https://xmlgraphics.apache.org/batik/ Maven包:https://mvnrepos...
2020-04-02 19:43:59
1961
1
原创 如何使用JAVA生成自定义格式的pdf文件(IText)
最近接手一个生成PDF授权书的需求,公司使用JDK8,于是还是先搜了搜使用JAVA语言如何操作授权书,经过筛选最终选择了IText,因为api比较通俗,并且社区还算活跃,下面则是对一些常用到的方法做了个总结(使用的是itext5的api)Itext官方网址:https://itextpdf.com/en准备工作:加依赖,我使用的是Itext5,推荐使用最新的itext7,新的功能...
2020-03-28 12:11:24
2406
1
原创 填上IntegerCache的坑
初入职场时,确实被IntegerCache坑过一次,本地跑程序都没问题,一到线上就不行,原因就是IntegerCache的问题,比较两个Integer时,本地数据少,数值也小,正好都是true,正式数据多,可能就因为IntegerCache的问题导致该是true的为false了,导致程序的执行出错。
2018-07-30 12:02:02
908
1
原创 请求调试神器PostMan
Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。下载地址:点我下载安装方法:双击软件,自动安装下面是我模拟预检请求的例子:...
2018-07-26 19:38:53
186
原创 泛型(Generic)到底是什么,泛型总结
前阵子公司技术分享,学习到了java8的一些新特性,给我感觉是编码变得越来越“简单”,并不是思想简单,而是实现上,像lambda,stream,编码变得越来越简单明了,的确,回想接口,继承,简单点说都是为了复用代码,泛型也一样,可能一段逻辑并不在乎你是什么类,我只在乎功能上是否满足,你来了只要符合我的规定,我就可以让你执行。
2018-07-25 19:49:05
624
原创 跨域问题的解决办法(针对服务器)
什么是跨域?见名知义,跨域就是在一个域下去请求别的域下的资源。那么为什么两个不同域之间访问就有问题呢?因为浏览器的同源策略。同源策略:同源策略就像一个规定一样,所有支持js的浏览器都会使用这个策略,同源指的是那些要相同呢?域名,协议,端口相同就是同源,所以说即使是localhost去访问127.0.0.1也是跨域。如果js去请求不同域的资源,浏览器会报错,不允许js去访问,有了同源策略,we...
2018-07-25 18:28:14
2628
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人