- 博客(31)
- 收藏
- 关注
原创 MySQL面试题(updating)
MVCC,多版本并发控制,MySQL会对每一个事务创建一个数据快照,当数据被修改时不会立即覆盖旧数据,而是会创建新的版本,多个版本间形成版本链,当进行普通读时,会通过MVCC版本访问规则进行读取版本链中的数据,不影响写操作,提高了数据库的并发性能。首先从根节点出发,根据数据大小自上而下找到数据所在的根节点,根节点上有一个数据页,默认大小为16kb,一个数据页上能存储很多行数据,这些数据会被分成多个组,查找数据时会根据页目录进行二分查找找到数据所在的组,然后组内通过链表的遍历找到指定数据。
2024-12-29 11:04:53
812
原创 定时任务,@Scheduled的使用
注解,可以很容易地在Spring管理的Bean中创建一个简单的定时任务,而无需深入了解底层的定时任务实现细节。常用的属性有:cron(设置固定时间执行),fixedRate(每隔多久执行一次)。在业务中cron的使用场景较多,比如每日签到(即每天凌晨刷新一次状态),Spring框架的@Scheduled。代码示例如下:任务每隔秒执行一次。注解是一种用于简化定时任务实现的机制。
2024-04-22 11:21:24
602
原创 开发SDK(Starter)
在使用SpringBoot项目时,在Maven依赖中我们常常会引入很多Starter,这些Starter可以帮助我们简化配置,我们可以直接在文件中进行简单配置即可,以knife4j为例maven 中引入依赖application.yml中完成配置。
2024-04-08 10:16:23
1475
原创 解决主机通ping通虚拟机,但无法访问虚拟机服务
环境:CentOS7,在虚拟机上部署服务后,我发现在主机浏览器上输入虚拟机IP以及对应的端口后无法访问服务,但是主机ping虚拟机时却能够ping通。
2024-01-30 10:35:08
1793
原创 CentOS配置SSH
远程登录时需要用户名、密码(登录虚拟机的密码),虚拟机IP、端口(配置SSH时设置的端口)。虚拟机IP可以通过ifconfig命令查看,找到ens33中的IP即可。虚拟机配置好SSH服务后即可使用XShell、Xftp等软件进行远程登录。在捣鼓虚拟机时突然发现无法远程登录了,所以重新配置了下SSH。找到配置文件,/etc/ssh/sshd_config。打开端口与监听地址,默认为端口22,按自己要求修改。允许root进行远程登录。
2024-01-29 22:39:35
739
原创 Stream流
Stream.of()方法如下,其可以传一个可变长类型的参数,数组的底层本质也是一个可变长的数据,这就意味着我们也可以用Stream.of()来创建数组的stream流对象,
2024-01-29 22:03:18
350
原创 算法通关村-双指针的妙用
这次主要针对的问题是数组中的删除元素问题,这类题目一般有两种方向,一是删除值为val的元素,而是删除重复元素,使得每个元素只有一个。
2023-08-03 14:35:27
107
原创 算法通关村-不简单的数组增删改查
数组问题最重要的就是要注意在进行数组操作时可能会发生的数组下标问题,下面是给出的对数组进行插入和删除元素操作的java实现。
2023-07-27 16:44:37
73
原创 算法通关村第二关-两两交换反转问题解析
问题要求:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。这个问题的实质其实还是给定一段区间,然后把区间之内的节点进行反转,只不过这个区间的长度为两个节点。
2023-07-26 15:36:41
192
1
原创 算法通关村第一关-链表经典问题之双指针专题
寻找倒数第k个节点:使用快慢双指针,先让快指针fast前进到第k个位置,此时满指针slow依然在第一个节点,从fast反着数,slow正好是倒数第k个,所以此时只要把fast和slow做相对平移,使得fast移动到最后一个节点,此时slow也就到了倒数第k个节点。下面依次针对上面两个问题进行分析。寻找中间结点,我们可以让快指针fast每次走两次,慢指针slow每次走一次,当fast走到最后一个节点时,slow会走到中间的节点(链表的长度奇数时为正中间的节点,链表长度为偶数时为链表中心偏右的节点)。
2023-07-22 15:50:56
408
原创 算法通关村第一关-链表青铜挑战笔记
首先我们需要明白的是链表时由一个个节点Node串连起来的,每一个Node都包含着两个部分:数据域和指针域。数据域用来保存Node的信息,指针域则保存下一个节点的地址,即指向下一个节点。int val;//数据域 Node next;//指针域 public Node(int val) {} }int val;} }//第一个节点 DoubleNode last;//最后一个节点 public DoubleLinkList() {} }
2023-07-17 19:54:09
1020
1
原创 洛谷P1161 开灯 (利用异或)
在一条无限长的路上,有一排无限长的路灯,编号为1,2,3,4,…。每一盏灯只有两种可能的状态,开或者关。如果按一下某一盏灯的开关,那么这盏灯的状态将发生改变。如果原来是开,将变成关。如果原来是关,将变成开。在刚开始的时候,所有的灯都是关的。小明每次可以进行如下的操作:指定两个数,a,t(a为实数,t为正整数)。将编号为⌊a⌋,⌊2×a⌋,⌊3×a⌋,…,⌊t×a⌋的灯的开关各按一次。其中⌊k⌋表示实数k的整数部分。
2022-11-13 20:38:24
266
原创 面向对象笔记(尚硅谷)
相同点:不同点:在类中声明的位置不同:关于权限修饰符的不同常用的权限修饰符:public、private、缺省、protected默认初始化情况在内存中加载的位置两个步骤:(注:引用数据类型有数组、类、接口,引用数据类型的变量只有两种值:null和包含类的地址)高内聚、低耦合this 可以使用在属性、方法、构造器上在类的方法或者构造器中,我们可以使用的方式,调用当前对象(或者正在创建的对象)的属性或方法。但是通常情况下都选择省略。特殊情况,如果方法或构造器中的形参和类的属性同名时,必须显式的使用,标明此变量
2022-06-19 20:21:26
888
原创 Java中的String
String的构造方式通过字面量定义String s1="hello world";通过new 关键字调用构造方法定义String s2=new String("hello world"); s1!=s2String具有不可变型,因此需注意:常量与常量拼接的结果在常量池中,且常量池中不会存放相同内容的常量定义一个字符串时,只要右边有一个是变量(如果用final修饰,则它就是常量,放在常量池中),则该字符串结果在堆中,例如:String s3=s1+s2;如果拼接时调用intern()方法,
2022-01-25 14:50:25
203
1
原创 Java中的Math类
Math类在Math类中,方法都被定义成了static形式,因此我们在调用Math类当中的方法时,可以直接通过类名.方法的形式调用MAth.方法取最大值、最小值、绝对值的函数方法方法(以int类型为例)功能描述max(int a,int b)取a,b之间的最大值min(int a,int b)取a,b之间的最小值abs(int a)返回参数的绝对值取整函数方法方法功能描述ceil(double a)返回double类型,返回大于
2022-01-22 15:20:04
176
原创 面向对象核心(精简)
本质:以类的形式组织代码,以对象的形式封装数据。通过分类,将复杂问题简单化(重点在于抽象)(对象和类的理解:从代码运行的角度:先有类再有对象,类是对象的模板;从认识论的角度:先有对象再有类,类是对对象的抽象)三大特性:继承、封装、多态方法 静态方法(有static关键字),调用:类名.方法 非静态方法(没有static关键字),调用:先实例化,再对象.方法 (静态方法和类一起诞生,而非静态方法实例化后才存在) new关键字使用new关键字创建对象时,除了会分配内存
2022-01-22 14:32:55
255
原创 java中的抽象类
抽象类关键字:abstract用abstract修饰类名或者方法。修饰方法时,此方法不能有函数体要用抽象的方法时,必须要子类才能执行,且执行前需要给它重写(因为它本来函数体是空的),注意:这个抽象类它的子类也需要为抽象类你要用的话就先new子类,再通过子类对象调用函数就行了注意:如果你想写抽象的方法,那么它必须放在抽象的类里面才行;但是在抽象的类里面你同样可以写抽象的方法。...
2021-11-05 17:18:59
186
2
原创 super详解
1 super与this: 1.由输出结果可知:this调用的是所在类的属性,而super调用的是所在类的父类的属性。 2.this没有继承也可以使用;super必须在继承的前提下使用。2 super();与this(); 1.super()调用父类的构造方法,必须在构造方法的第一行 2.super()只能出现在子类的方法或者构造方法中 3.super()与this()不能同时调用构造方法,因为他俩都得放在结构体的第一行3 在子类的无参构造体中,隐藏了调用父类...
2021-10-07 20:56:20
185
原创 java构造器
构造器详解构造器的作用1.new的本质在调用构造方法2.初始化变量的值构造器的主要特点1. 必须和类的名字相同2. 没有返回值注意事项在定义了有参构造器之后,必须显示无参构造器快捷键alt+insert可以快速完成有参或无参构造器的创建1在创建了一个类的同时,会自动生成一个无参构造器如上图即使Person类中并没有进行操作,但它已经自动帮你生成了一个无参构造器,可以参看class文件获知2 new的本质就是调用构造器,一旦定义了有参构造..
2021-10-03 18:51:56
120
原创 java中方法的调用
方法的调用所写的方法分为两种 静态方法(有static) 可以直接调用,输入方法所在包的类以及1方法名即可 非静态方法(即没有static) 不可直接调用,需要先实例化 new +所在类 然后按alt+enter进行实例化,然后再进行调用 如果两者都是非静态方法或者都是静态方法,则这两者间可以互相调用。 但是如果用静态方法直接调用非静态方法则不行,会出现报错。但是非静态方法可以调用静态方法。 原因是stat...
2021-09-29 19:41:42
2307
1
原创 java中数组的定义与初始化
数组定义的格式:数组类型[] 数组名;例如以下代码int[] nums;nums=new int[10];或者可以把两者结合int[] nums=new int[10];初始化分为两种类型:静态初始化静态初始化,最大的特点就是在定义的同时为数组赋值。例如以下代码int[] nums={1,2,3,4};在定义数组时就决定了数组中各元素的值与数组大小。动态初始化(包含默认初始赋值)例如以下代码:int[] nums=new int[10];定义完数组
2021-09-26 19:57:29
1167
原创 用IDEA反编码文件,查看源代码
用IDEA查看java源码 shift+ctrl+alt+s打开project struction 在文件查看器中复制路径查找 找到你想反编译的文件,复制或者移动到相应的代码文件夹 此时打开IDEA,会看到对应包中会出现class文件,打开即可 ...
2021-09-19 12:08:23
679
原创 运算符+运用
""+ 与+""30+20+"" 结果是50""+20+30 结果是50+如果碰到了字符比如"",那么这个+号后面的全部+都会起到链接的作用而不是运算
2021-09-17 21:26:39
90
原创 java类型转换
类型转换数据类型顺序转换的类型 强制转换(从高转到低) 例如 int a=128; byte b=(byte)a; 从高到低 自动转换(从低转到高) 如char ad=a; int b=ad+1; 结果b=98 注意事项 不能对布尔值进行转换 不能把对象类型转换为不相干的类型 从高容量转换为低容量,进行强制转换 转换的时候可能会出现内存溢出或精度问题 ...
2021-09-16 15:35:46
96
原创 jdk的安装与卸载
jdk卸载 删除jdk安装包 删除环境变量 删除path下有关于JAVA_HOME的内容 查看java -version jdk安装 官网搜索jdk 同意协议 找到自己计算机相应的版本 下载安装 记住安装路径 配置环境变量 打开设置 搜索编辑环境变量 添加 JAVA_HOME 在path中添加%JAVA_HOME%\bin 继续添加 %JAVA_HOM..
2021-09-10 20:37:14
71
原创 dos命令学习
打开CMD的方式 开始+系统+命令提示符 win+R 输入CMD 在任意文件下,按住shift+右键然后打开命令行窗口 资源管理器的地址栏前加上CMD 管理员方式运行:选择管理员方式运行 常用的dos命令 盘符切换 例如要到f盘 输入f: 查看当前目录下的所有文件 dir 切换目录 cd+跳转位置 退出 cd.. 清理屏幕 cls( clear screen) 退出终端 exit 查看电脑的ip
2021-09-10 13:42:54
79
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人