自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 Error creating bean with name ‘javaConfig‘: BeanPostProcessor before instantiation of bean failed

一开始以为又是Calculator对象注入的依赖是空的,但是后续修改了@Autowired()注解,增加了requried = false 参数以后,还是有问题。总结:JavaSpring可以通过注解实现依赖注入,还可以使用AOP来进行切片管理。又绕了一大圈,其实问题不在这个实体类,因为Service注解已经加好了的。注意最后一个@AfterThrowing注解的方法,必须要制定注解里面的参数才可以使用这个注解。总结一下:配置类初始化的问题不一定都是实体类对象的问题,还可能是注解参数的问题。

2025-12-04 16:06:05 235

原创 《从根上理解MySQL是怎样运行的》第二十五章笔记

新插入的记录由INSERT操作提供隐式锁的保护。后续其他事务也想对着一条记录进行操作,但是发现这个记录已经被其他的事务加锁了,于是自己的is-waiting状态为true:意思是需要排队,等前面之前的事务提交以后再轮到自己。在聚簇索引记录中自带有事务id的隐藏列,其他事务对记录操作的时候首先先看看该事务隐藏列对应的事务是否处于活跃事务,是的话就帮助它创建一个X锁。个人思考:其实隐式锁是通过隐藏列的事务id,通过其他事务发现该记录已经被占据的被动上锁的方式——由其他事务帮忙上锁,事务id只是告知一个状态。

2025-12-03 15:09:53 292

原创 《从根上理解MySQL是怎样运行的》第二十四章笔记

并且每个版本都会有对应的事务id。MVCC就是多版本并发控制的意思,READ-COMMITTD、REPERATBLE READ两种隔离级别的事务在执行普通的查询操作时访问版本链的全过程,可以支持不同事务的并发执行从而提高了性能。只是两种级别的生成ReadView的时机不同,前者每次查询都生成一个,后者只会第一次的时候生成一个,后续每次查询都使用第一次产生的ReadView即可。(3)不可重复读取:每次读取都是一个新的被修改后的值,那么这就是不可重复读取,字面意思很直接,就是之前的数据只能读取一次了。

2025-12-03 14:59:02 792

原创 《从根上理解MySQL是怎样运行的》第二十三章笔记

回滚段一开始就是创建在表空间中的,分配Undo页面链表的时候先看看undo slot,也就是回滚槽位是否为空:是否为FIL-NULL,是否已经指向了一个新的Undo页面了。对于insert类型的undo页面来说:直接将之前旧的undo日志页面覆盖掉,从头开始写新的事务的undo日志,并且调整相关的统计数据。一个事务就要分配不同的独立的undo页面链表,如果存储的记录很少的话,还是挺浪费的。是写在Undo页面中的,对于单个事务来说不同的Undo页面形成不同的链表,这些链表统一放到回滚段中的槽位中管理的。

2025-12-03 14:52:16 367

原创 《从根上理解MySQL是怎样运行的》第二十二章学习笔记

针对主键值更新的情况会记录一条类型为:TRX-UNDO-DEL-MARK-REC的undo日志,插入的时候也会记录一条INSERT类型的undo日志,也就是每次对一条记录的主键值做修改的时候需要写两条undo日志。包括该列在记录中的位置,占用的空间大小,该列的实际值。聚簇索引中的记录都是按照主键值进行排序的,如果更新了某条记录的主键值,那么意味着它在聚簇索引中的位置将会发生变化。事务保持原子性——一不做二不休。如果更新的列空间发生变化:直接就地更新,在原来的基础上修改对应列的值,一个普通的更新类型的日志。

2025-12-01 17:45:13 347

原创 《从根上理解MySQL是怎样运行的》第二十一章笔记

对于checkpoint-lsn之前的redo日志都可以覆盖,因为它们的日志已经刷盘了,所以不用管他们了,主要是内存中不确定没有刷盘的页,于是可以从checkpoint-lsn来开始读取redo日志恢复。Redo主要是针对内存做的方案,如果页面已经刷新到磁盘里了,那你的redo也没有存在的必要了,这种情况就可以覆盖这个redo记录,将空间留给下一个redo记录。Redo日志文件的容量是有限的,没办法只好循环使用这个文件了,但是最后写的redo日志容易和一开始的redo日志追尾。

2025-12-01 17:40:09 274

原创 《从根上理解MySQL是怎样运行的》第二十章笔记

这样系统从日志中恢复的时候,只有解析到有这个类型的日志的时候才认为是一组完整的redo日志操作,才会进行恢复,否则会放弃掉该组所有的日志。也就是一条语句的完成是多个原子性操作的实现,然后一个操作又可能导致很多修改,于是需要成组的redo日志来记录这一次的原子操作。也就是整个插入的过程是很多操作一起进行的,如果你只记录了一部分过程,那么如果后续需要恢复的实际就会恢复成不正确的状态。并且针对一个组的记录,在恢复的时候,要么所有的操作都恢复原样,要么就一条也不恢复,这就是一个整体思想的运用。

2025-12-01 17:35:52 531

原创 《从根上理解MySQL是怎样运行的》第十九章笔记

可以说原子性和隔离性都是保证一致性的两种手段,但是这两种都是在逻辑上的角度来的:比如狗哥本身没有钱,但是转了10元给猫爷,那么狗哥的账户不就是负数了嘛,这样也不行,因为不符合现实要求。事务执行了一半但是变成失败的了,这就是中止的。比如对银行账户中的钱进行修改,修改一次就需要更新一次状态,现实生活中是自动随着行动的发生更新的,但是数据库中就不一样了,必须满足规则更新状态才行。状态转换的结果,如果没有再修改那么就是永久保留的,比如转账转成功了那么金额就一直是转账成功的那个状态的金额,除非你再次转账之类的。

2025-12-01 11:03:07 745

原创 《从根上理解MySQL是怎样运行的》第十四章学习笔记

MySQL的设计师考虑到了这一点,设计出了一些规则,可以尽力将糟糕的语句转为一些可以高效执行的形式,这个过程称之为查询重写:就是将性能不高的语句重新写一遍。外连接中不符合连接条件的记录的某些列值是以NULL的形式出现的,如果你使用WHERE过滤掉它们,那么这个时候外连接和内连接就没有差别了!A = b and b = c and c = 5 等价于: a = 5 and b = 5 and c = 5。内连接的驱动表和被驱动表是可以互相换位的,可以通过优化连接顺序来优化查询,但是外连接不行。

2025-12-01 10:58:27 319

原创 《从根上理解MySQL是怎样运行的》第十三章笔记

N-rows是估计值:InnoDB中按照一定的算法选取几个叶子节点页面,计算该节点中页中的记录数,然后这几个页记录数的平均数乘以所有叶子节点的数量就是该表的n-rows的值。小总结:字典数据 -》 两种节点对应段的信息 -〉 然后再从这些字段中找到对应的段结构 -》 最后得到主要的从属于段段三个链表的位置 -〉 数据统计。其实统计的着手点还是从管理页面的链表开始的,这下就好理解了:统计的过程主要就是重新寻找管理页面的链表的过程 + 统计。查询成本的时候经常使用一些统计数据,统计数据是以什么方式收集来的呢?

2025-11-29 21:36:14 373

原创 《从根上理解MySQL是怎样运行的》第十二章学习笔记

对于InnoDB存储引擎来说,页是磁盘和内存的交互的基本单位,固定一个页面花费的成本是1,查询一条符合要求的记录是0.2。MySQL使用index dive的方式来计算记录数:通过访问索引对应的B+树来计算记录的条数:获取最左边和最右边的记录,然后数个数即可。总之就是分别单独分析不同的索引的查询成本。查询记录都是将数据或者索引加载到内存中进行的操作,这个加载的时间损耗称之为I/O成本,也就是时间成本。执行查询之前优化器会找到所有可能实现的方案,然后选择一个最优的方案——成本最低的选择。

2025-11-29 21:35:09 401

原创 《从根上理解MySQL是怎样运行的》第十一章学习笔记

(2)然后从第一个查询得到的结果集去t2表中查找匹配的记录。它比较简单,因此不管谁是驱动表结果集都是一样的,只是驱动表只单表查询一次,被驱动表可以查询多次(在驱动表的结果集的“驱动下”的筛选)MySQL中连接的本质具体就是嵌套循环的筛选驱动:上一个单表的结果集作为下一个表的“驱动”,也就是每筛选一次都会更新一次驱动集来驱动下一个被驱动表。所以这个join buffer越大越好,这样一次性能使用更多的驱动表的结果集的记录,最好是能将整个驱动表的结果集放到这个buffer中,这样只需要访问一次被驱动表就行了。

2025-11-29 21:33:56 346

原创 《从根上理解MySQL是怎样运行的》第十章学习笔记

于是这就是最终的筛选条件。(1)二级索引列值为NULL的情况,不管是普通的二级索引还是唯一二级索引,都不限制NULL的记录的数量,因此查询NULL记录最多是ref级别的访问方法。也就是之前说过的二分法快速查询的办法,内节点 -》 叶节点 -〉 具体的页 -》 页中的槽 -〉定位到页中的组 -》 遍历该组的到具体的数据。查询索引的时候可以将索引合并,交集合并和并集合并,本质还是通过二级索引得到的结果集中对id主键值进行的交集和并集的操作,然后再回表,节约性能。因为索引中的全部列都是直接进行值的等值比较的。

2025-11-29 21:32:23 326

原创 《从根上理解MySQL是怎样运行的》第八章学习笔记

一个表空间可以划分成很多很多的页,于是我们的表数据就存储在这些表空间的页里面。MySQL服务器启动的时候会到文件系统中的某个目录下加载一些文件,之后运行中产生的文件都会存储到这个目录下的某些文件中。表中的数据是存储在和表同名的.ibd文件中的,这些文件会随着记录的增多而占用越来越多的空间。用户数据加上运行时的一些信息一起存储在数据目录中,这个数据目录就是操作系统中真实的一个文件目录,也就是我们常说的“数据库”安装目录是安装的时候默认的路径或者指定的目录,安装目录的重点是bin目录中的可执行文件。

2025-11-29 21:30:38 750

原创 java.lang.NullPointerException: Cannot invoke “com.atguigu.ioc_02.UserService.sayHello()“

(1)注册问题:NoSuchBeanDefinitionException,启动时报错。一定要注意区分到底是依赖注册有问题,还是依赖已经注册了但是状态为空的问题!(2)依赖状态问题:NullPointerException,运行时报错。其实是构造器注入的时候注入的字段是空值:(Autowired省略了)(2)状态问题:空依赖状态测试即可,测试到底是不是为null。测试的结果没有问题, 确实是注册成功的。(1)注册问题:使用getBean进行测试。这里看到其实已经注册成功的。

2025-11-22 20:48:21 282

原创 《从根上理解MySQL是怎样运行的》第九章学习笔记

这样每次想找一个FREE-FRAG状态的区的时候,就直接将FREE-FRAG链表的头节点拿出来,从该链表头区中取出一些零碎的页来插入数据,用完一个节点的区就将该节点移动到FULL-FRAG链表中,并修改成对应的状态即可。每一组的开头存放着改组对应的区的管理单位:XDES管理的是不同的区,INODE则是存放管理XDES位置的一个单位。INODE结构是存放段内零散页的地址以及附属于该段的FREE、NOT-FULL、FULL链表的基节点(也就是完整区的链表的基节点的位置):段就是管理完整区的。

2025-11-21 20:09:27 898

原创 《从根上理解MySQL是怎样运行的》第七章学习笔记

如果建立了很多索引。需要回表的记录越多,那么使用二级索引的性能就越低,甚至有些时候比全盘扫描还慢:比如刚开始name查询的范围太大了,中间的用户记录太多有90%的记录需要回表。MySQL有一个叫做查询优化器的东西,自动根据搜索条件匹配索引联合索引列的顺序,也就是全值查询的时候将列值自动按照B+树索引建立的列值顺序重新排序,然后再进行查询。同理,如果你想用到phone-number进行B+树索引进行查询的话,可以先锁定两个确定的列值,这样再前两者都相同的情况下,后续的第三个列值排列都是按照顺序进行排列的了。

2025-11-21 09:56:02 291

原创 《从根上理解MySQL是怎样运行的》第六章学习笔记

接下来就好搞了,原来InnoDB是使用的B+树作为基本的数据结构存储数据的,之前我搞博客系统的时候就深学过这种数据结构,有点意思嘞,当时是用的queue来遍历的,那个思路真的不错,是每次剥去一级子树(节点子树)来遍历所有的节点,然后还原回去的时候是使用了一个嵌套的循环搞定的,哈哈哈,略显粗糙了,但是可读性很好。这就导致了另一个问题,如果存储目录项的页面也太多了,又回到了之前的定位页的问题,这个时候为这些存储目录项记录的页再生成一个新的更高级的目录,这样就相当于是嵌套存储操作了。(目录项作为页面的替身!

2025-11-20 22:06:07 365 3

原创 《从根上理解MySQL是怎样运行的》第五章学习笔记

(2)每次插入一条记录,都会从页目录中(也就是那些槽中)找到主键值比本记录大并且差值最小的槽,然后增加该槽对应的n-owned值加1(也就是分组末尾的记录的属性加一),表示组内有添加了一条记录,知道该组的记录数为8。有几个槽就代表有几个分组,最小记录的n-owned属性为1,也就是以最小记录结尾的分组中只有一条记录,最大记录的n-onwed值为5,说明该组中只有5条记录,包括最大记录本身和插入的记录。但是我们插入的记录是从2开始的。Trailer也就是尾部,尾部的校验和是和头部的校验和对应的。

2025-11-20 22:01:55 435

原创 《从根上理解MySQL是怎样运行的》第四章学习笔记

InnoDB存储引擎是以页为单位进行存储的,一页是16kb,也就是16384个字节,但是VARCHAR(M)是最多可以存储65532个字节的,所以可能一页都存不下一条记录。这里我们来探索最常用的存储引擎——InnoDB。(4)一页一般是16kb,当记录中的数据太多的时候,就将多出的数据存放到其他页中,这种现象就是行溢出现象。请求的处理是交给存储引擎来落地实现的,真实数据在不同的存储引擎中存储的格式一般都是不同的。用于描述记录,它是由固定的5个字节组成的,一共40个二进制位,不同的位表示不同的意思。

2025-11-20 22:00:06 350

原创 《从根上理解MySQL是怎样运行的》第三章学习笔记

请求的字符 -》 对应的字节串 -〉 中途网络运输的01串 -》 服务器端 -〉 按照规则还原为对应的字节串 -》 再解码得到字符 -〉按照服务器的变量进行编码得到相应的字节串 -》 根据这个字节串进行查找 -〉 得到字节串 -》 再解码这个字节串得到字符 -〉 依据客户端编码为新的字节串 -》 发送回客户端。将刚刚的“我”的utf8编码先按照原先的规则解码一次,得到原字符,再找gbk的字符集进行编码,这样得到的为0xCED2,这就是一次字符集的转换:将“我”从utf8转换到了gbk字符集。

2025-11-20 21:59:05 410

原创 《从根上理解MySQL是怎样运行的》第二张学习笔记

启动服务器的时候全局变量会初始化一个默认值,然后客户端连接的时候会分配不同的会话变量值,连接的时候默认会话变量值就是全局变量的值:用全局变量的值初始化会话变量的值:也就是全局变量是包含局部变量的。顾名思义:表示服务器运行时状态的变量,反应服务器的运行情况——因此我们不能手动设置,这是服务器自动生成的,相当于每天的天气,打游戏时电脑的温度。注意:某次连接的时候客户端修改了全局变量的值,那么这个值只会在后续的其他的新连接中生效,本次的值还是当前的SESSION的值。SET 和 SET SESSION是等价的。

2025-11-20 21:56:50 297

原创 《从根上理解MySQL》第一章学习笔记

Cos60°是多少?客户端发起连接的时候需要携带主机信息,用户名等相关参数,服务器端会检查认证,没有问题才会连接,还可以使用SSL网络通信来确保数据传输安全(客户端和服务器端在不同的主机的时候)为了方便起见,人们将连接管理,查询缓存,语法解析,查询优化,这些不涉及真实数据存储的功能划分为MySQL server的功能,将真实存储的功能划分为存储引擎的功能。MySQL程序处理查询请求也是这样,之前处理过的请求和结果放到缓存中,如果下次有一样的请求过来那么直接走这个缓存即可,就不用再一遍遍的去数据库中找了。

2025-11-13 19:40:33 428

原创 《网络是怎样连接的》第六章学习笔记

也就是预备连接的待机状态,当客户端发起连接时,这个模块会恢复运行并接收连接,然后启动通信模块(b),并移交完成的套接字给(b),然后通信模块就可以使用这个套接字和客户端进行通信,通信结束后(b)模块就退出了。如果服务器返回的信息比较复杂,那么浏览器就会调用相应的程序,比如浏览器的插件,或者一个独立的程序。1.是的:路由器和交换机并不考虑请求包和响应包之间的关联,而是作为独立的包对待,请求和响应是可以通过不同的路由来传输的,具体走哪条路由,是由路由器的路由表和交换机的地址表中的配置来决定的。

2025-11-04 20:17:20 317

原创 《网络是怎样连接的》第三章学习笔记

那么就将服务器划分成两个类型,一类是和外界联系的,分配公有地址。PHY接收信号转换通用类型给MAC模块,然后MAC模块将其转换为数字类型,通过FCS校验,和MAC地址校验(看看是不是给自己的包)以后,就放到缓冲区,不然就丢弃这包。第一种是新建:收到陌生的发送方的MAC地址,将其登记在表中,这样下次如果有包需要发送到这个地址,那么就直接使用这个MAC地址即可。具体发送要通过交换电路,交换电路可以同时传输多路信号,最终网络包到达发送端,端口的MAC模块和PHY模块会执行发送操作,这部分和网卡的发送是一样的。

2025-11-04 20:16:30 414

原创 《网络是怎样连接的》第二章学习笔记

然后有了这个必要的参数,协议栈开始建立试通信,用现在流行的说法来说就是“TCP的三次握手”。找到对应的套接字之后,套接字中就会写入相关的信息,并且将状态改为正在连接,上述操作完成以后,服务器的TCP模块会返回响应,这个和客户端的发送一样需要设置双方的端口号和SYN比特,然后将ACK设置为1,这表示已经接收到请求的网络包了(火车已经到达了目的地,这里就是请求已经到达服务器了)设置ACK是为了确认网络包已经送达了,然后服务器的TCP模块再将TCP头部传递给IP模块,并委托IP模块向客户端返回响应。

2025-10-20 14:48:46 381

原创 《网络是怎样连接的》第一章学习笔记

(哈哈哈哈哈哈💦,试了一下,我直接找到谷歌浏览器的IP地址然后输入到浏览器中,safari浏览器一直卡着没有反应,估计这个方法早就被想到了,我猜测估计是故意延迟谷歌服务器的响应时间,直接拉到远超出浏览器的最大延迟时间,这样浏览器就会不得已返回超过延迟这种报错,但是safari一直没有报错,到是我手机上的谷歌浏览器提示没有响应,暂时无法连接)如果最近的一台DNS服务器没有,那么就直接转发给根域名服务器,根域名服务器并没有具体的Web服务器的信息,但是它通过这个域名知道应该是给com域DNS服务器保管的。

2025-10-15 09:51:05 443

原创 个人博客后端系统(JavaSpringBoot + MybatisPlus + Redis)的建立记录

系统: MacOs 15IDEA版本:社区版 2025.3Mysql版本:8+redis:版本postman:苹果m芯片最新版Mysql工具:workbench:最新版本redis可视化工具:Another Redis Desktop Manager 最新版本SpringBoot版本: 2.7JDK版本:17MybatisPlus依赖版本:3.5.9。

2025-10-12 16:40:31 422

原创 基于mac系统下的51单片机开发环境搭建过程记录

(2)然后是stcgal的安装,安装stcgal之前需要python3,但是mac自带的python版本是2.7。安装好以后我到网上下载了 stcgal到本地中,一句stcgal的文件说明进行安装,然后发现使用终端安装。51c的文件路径到这里,我是使用homebrew安装的sdcc,于是需要找到homebrew的安装路径,(4)接着是驱动的安装,这个安装在网上找了很多驱动,全都下载下来进行安装,但是。——————————软件安装部分已经结束,后面可以开始到vscode搭建环境了——————

2025-09-09 20:21:54 861

原创 SSM整合实战程序实例:实现CRUD的网页版学生管理系统2025

本文详细介绍了基于SSM框架(SpringMVC+Spring 6.0+MyBatis)开发的学生管理系统实现过程。项目在MacOS 12.6.7环境下使用IDEA社区版2025.1和JDK 23构建,重点阐述了Maven项目结构配置、SSM框架整合、数据库连接(Druid连接池)以及功能模块实现的完整流程。系统实现了学生信息的增删查改功能,通过JSP视图层展示数据,采用分层架构(Controller-Service-Dao-Mapper)处理业务逻辑,并详细说明了各层之间的交互关系。

2025-06-04 17:31:02 652

原创 运行SpringMVC项目出现:No endpoint GET /xxx

很多新手学习SpringMVC可能会碰到这个错误,好不容易找对了有用的教程。比如这个标题中的问题,很有可能就是xml文件配置的时候直接复制别人的配置。回到你的SpringMVC配置文件中:看看你的包扫描语句。但是跟着教程一步一步走的时候总是会出各种bug。注意这里一定要是你自己的包才行,不能是其他人的。这样就一定会导致包扫描出问题。否则运行tomcat就会报错404。到自己的配置文件中去了。

2025-04-22 20:48:11 1188

原创 Mac 上的社区版IDEA项目中如何运行tomcat

在mac最上面的边栏中找到运行,然后你配置运行(编辑配置)是一个很简单的操作,但是网上说的都不是很清楚,没有具体到边栏的选项。这里默认你已经下载好了插件并且配置好了各种配置文件和tomcat。这个时候就可以添加服务器了,💦。

2025-04-14 20:52:00 214

原创 有关于javaSpring全注解开发中数据库.properties配置文件读取的问题

在test目录中新建一个这样的文件目录,然后将配置文件放到这个目录即可。提示我这个文件不存在,原因是我没有填写出正确的文件路径。后面发现最根本的原因在于我的配置文件读取语句的格式不对!根源在于我之前的注解的参数 : ${url} 是不对的!(没事我有耐心,于是我又去看那一堆shi一样的报错)我本来因为这样就行了的,但是一旦运行起来,,,,正确的读取格式应该是 ${配置文件名.url}但是就是这样的小问题的话至于还发一个博客嘛💦。默认Maven项目中的POM文件配置正确。我以为已经解决了但是又有新的问题!

2025-04-13 16:06:24 343

原创 Spring使用扫描组件注意事项(in XML document from class path resource [applicationContext.xml] is invalid)

在Spring使用扫描组件的时候。这个时候就是头文件的问题。

2025-04-12 15:19:41 212

原创 从一个简单程序中感受java语法的规整性

在这个接口中:因为每次都是提示用户输入两个数据,所以这个时候就把这个操作放到接口中的默认方法去,而且其中有个巧妙的地方就是:java中不好一次性返回多个值,索性就创建一个结果集的class对象,将不同的值打包到这个对象中然后返回这个对象就行了(这里的left和right属性就是不同的值)最后是将功能进行了一个汇总,得到了一个完整的简单计算器,每个部分都很清晰,这样就便于后期的维护和调整了,如果还是想以前那样将所有功能都放到一个文件中进行,那样的话代码看起来是很多很麻烦的,不好维护和更新。

2025-03-27 12:39:06 202

原创 在java文件中操作MySQL数据库

【代码】在java文件中操作MySQL数据库。

2025-03-25 11:22:43 134

原创 社区版IDEA连接到数据库MySQL

在设置中的插件选项中搜索 Database Negativor(拼写可能有误,反之翻译过来就是数据库导航)我在IDEA中自带的帮助中查找操作,又搜索database,数据库等一系列关键词,结果发现了这个。然后我又在网上查了好久,都是一个流程,我就怀疑是不是我IDEA版本和他们不一样。最后就可以正常进行添加了(nice,不用购买Ultimate版本了!在网上找了很久的资料,都是从侧边有一个边栏中进行数据库的添加,于是我改变了网上查找的关键词:社区版,IDEA如何添加数据库?结果是显而易见的,我这个是社区版!

2025-03-25 10:44:24 611

原创 在MySQL的workBench中添加函数

选择Schemas项,然后选择你希望添加函数的目标数据库,然后在函数一栏中新建一个新的Funcion(Create new Functions)耐心一点,这个时候根据报错的提示可以发现,你需要use the less safe log_bin_trust_function_creators variable。原因在于你必须得去掉函数名和括号中间的空格,否则apply这个函数到数据库的时候会有ERROR。函数应用完成以后就可以在数据库的表中调用这个函数了,这就是设置函数的全过程~

2025-03-22 16:23:11 287

原创 在workbench中完成删除操作

workbench是用于适配MySQL的编译器,通过workbench可以完成指令书写和指令注释的添加。这个代码的意思就是删除在表:first_table 中 列:first_column > 4 的记录。原来workbench自动开启了safe updata的模式,在这个模式下删除操作是禁止的。但是这个时候你仍然可能无法执行删除操作:你害得重启workbench。所以你最好保存每一个*文件,虽然和之前保存的文件可能有重复的内容。多了没关系,但是少了就麻烦了💦💦。只是有可能你的SQL文件名变成了一个*

2025-03-21 16:52:18 828

原创 java:一个较完整的二叉树结构

【代码】java:一个较完整的二叉树结构。

2025-03-09 17:47:14 117

空空如也

空空如也

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

TA关注的人

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