自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MVCC 详解

一个事务对某条记录进行读操作时,会查看这一条记录的一系列事务 id(由 undo log 构成的版本链中的事务 id),并根据事务的隔离级别(“读已提交”、“可重复读”)去选择生成 Read View 的方式,通过比较事务 id 来确定可见的版本。下图记录了某一行数据的变更过程,图中虚线框里是同一行数据的 4 个版本,当前最新版本是 V4,k 的值是 22,它是被 transaction id 为 25 的事务更新的,因此它的 row trx_id 也是 25。用来存储“活跃”的事务的 id。

2024-08-19 21:27:21 1215

原创 全局锁、表级锁、行级锁

WHY:锁的出现是为了解决并发场景下不同用户同时对共享资源进行操作,而可能引发的并发问题。HOW:控制不同线程对资源访问的规则。

2024-08-19 20:51:26 584

原创 MySQL 实战 45 讲(01-05)

本文为笔者学习林晓斌老师《MySQL 实战 45 讲》课程的学习笔记,并进行了一定的知识扩充。

2024-08-05 23:05:34 847

原创 基于 Mockito 框架的 Mock 测试

Mock 通常是指,在测试一个对象 A 时,我们构造一些假的对象(一般是不容易构造或者不容易获取的对象,比如测试类所依赖的实现类、第三方接口、数据库操作对象)来模拟与 A 之间的交互,这些对象被称为 Mock 对象,而 Mock 对象的行为是我们事先设定且符合预期。通过这些 Mock 对象来测试 A 在正常逻辑,异常逻辑或压力情况下工作是否正常。

2024-07-20 22:07:46 746

原创 Spring Boot 单元测试什么时候需要添加 @RunWith

在高版本的 Spring Boot 中,一般默认用的是 JUnit5。此时通过添加 @SpringBootTest 注解,即可成功注入相关的 bean 对象,并进行测试。如果使用的是 JUnit4,则需要额外添加 @Runwith(SpringRunner.class) 注解,用于声明测试的环境为 Spring环境。建立 Spring Boot 单元测试方法一般依赖于 JUnit4 或 JUnit5 框架。

2024-07-20 21:38:28 409 4

原创 Java 构建器模式示例

【代码】Java 构建器模式示例。

2024-01-21 16:59:54 463

原创 StreamAPI 的 Collectors.toMap 方法

由于最终返回的是一个 Map 对象,因此我们需要在 Collectors.toMap() 方法中定义 key、value 的映射关系。(v1, v2) -> v1 表示:如果 key 值相同,则采用前一个 key 对应的 value 值作为最终的 value 值。k -> k.getId() 表示:采用 person 对象的 id 指作为 key 值。v -> v 表示:采用原来的 person 对象作为 value 值。

2024-01-21 12:20:57 450

原创 一个方法重写的小案例

可以发现,虽然子类的 age() 方法的实现是调用了父类 age() 方法,但 say() 方法实际上调用的还是子类重写后的 say()。发现输出结果仍旧是一样的,这说明这里的 this,所指的对象仍旧是子类对象 son,因此调用的还是子类重写后的 say() 方法。此时 this 指代的是父类对象。

2023-11-29 23:13:17 174

原创 map 和 flatMap 的区别

StreamAPI 中的 map 方法,实现是一种映射关系。类似数学中的 x -> f(x)。而 flatMap 方法是在 map 的基础上做了一次 flat。

2023-11-28 22:48:43 359

原创 开发、测试、生产环境

开发环境:开发环境是程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告。简单讲就是项目尚且处于编码阶段,一般这时候会把代码放在开发环境中,不会放在生产环境中。生产环境:是指正式提供对外服务的,一般会关掉错误报告,打开错误日志。简单讲就是所谓的线上,就是正式给用户使用的环境。测试环境:是开发环境到生产环境的一个过渡,配置会参考生产环境,用于测试程序是否有错误,力求在将代码部署到生产环境前对所有问题进行排查解决。

2023-11-26 22:34:36 188

原创 mysql 中 varchar 和 text 的区别

中的 50 在 mysql5.0 及以上默认是存储的字符数,5.0 以下,默认是字节长度。

2023-11-22 21:28:05 453

原创 MySQL 是否大小写敏感

本文未做特别说明的,指同时适用于 MySQL 5.7 和 MySQL 8.x。

2023-11-05 23:43:19 971

原创 如何使用 arrayList.removeAll(Collection<?> c)?

如果原集合对象的元素数量 < c 中元素数量,那么调用原集合对象的迭代器去遍历原集合,检查元素是否包含在 c 中,并调用原集合迭代器的。如果原集合对象的元素数量 > c 中元素数量,那么调用 c 的代器去遍历 c ,查看元素是否包含在原集合中,并使用原集合的。方法,该方法是通过哈希计算的方式去查询的,因此速度十分快。中存在的所有元素的总体时间复杂度为 O( n * m )。方法来判断是否存在相同的元素,效率与 c 的类型有关。中存在的所有元素的总体时间复杂度为 O( n )。方法的时间复杂度为 O(1)。

2023-10-12 23:09:19 313

原创 @PathVariable、@RequestParam、@RequestBody、@ResponseBody、RequestEntity、ResponseEntity

上面这个接口可通过 get 请求 http://xxxxx/1111 来得到想要的数据,1111 既是 getUser 的方法参数又是。修饰的参数最后通过 key=value 的形式放在http请求的Body传过来,对比下上面的。注解是标识在整个控制器方法上面的。格式的数据,接收到数据之后会自动将数据绑定到 Java 对象上去。将请求的 body 中的 json 字符串转换为 java 对象。这样我们的后端就可以直接把 json 格式的数据映射到我们的。用于封装整个请求报文,包括请求体、请求头、请求行。

2023-10-08 23:51:03 143

原创 Bean注入方式:@Autowired、@Resource的区别

这种方式就无法正确注入对象了,因为这个时候 Spring 会同时找到多个满足条件的选择,默认情况下它自己不知道选择哪一个。(根据类型进行匹配),也就是说会优先根据接口类型去匹配并注入 Bean (接口的实现类)。(根据名称进行匹配),这个名称通常就是类名(首字母小写)。如果无法通过名称匹配到对应的 Bean 的话,注入方式会变为。属于 Spring 内置的注解,默认的注入方式为。属于 JDK 提供的注解,默认注入方式为。属性(不建议这么做)则注入方式为。这种情况下,注入方式会变为。就是我这里所说的名称。

2023-10-08 22:52:24 267

原创 Spring Boot、Nacos配置文件的优先级

注意:不能理解为文件级整体覆盖,而仅是同名 key 会被后加载的键值覆盖。

2023-10-08 21:44:40 3180 2

原创 Java泛型理解

我们都知道 Java 中有形参和实参之分,是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数,其本身没有确定的值。在调用函数时,实参将赋值给形参。而泛型是一种参数化的类型(可以理解为类型形参),它允许在定义类、接口时通过一个「标识」表示类中某个属性的类型或者是某个方法的返回值或参数的类型。这个类型参数将在使用时(例如,继承或实现这个接口、创建对象或调用方法时)确定(即实际传入的类型参数,也称为类型实参)。好处是增强代码的安全性。

2023-10-03 23:36:55 848

原创 doris动态分区开启历史分区

doris动态分区创建历史分区

2023-10-03 21:36:07 468 1

原创 hashcode和equals方法的区别与联系

因此,如果我们未进行方法的重写,默认调用的就是 Object 类的 hashCode() 和 equals() 方法,而 Object 类的 hashCode() 是根据当前对象的地址进行计算的,也就是说,我们 new 了两个对象,即使它们的内容是一样的(即我们认为他们逻辑上是相等的),但它们通过 hashCode() 方法计算得到的 hash 值显然是不同的,此时,我们将他们添加到 HashSet 或 HashMap 中就会出现问题。结论 3:hashcode 不相等,equals 一定不相等。

2023-09-06 00:11:35 575

原创 为什么说Java是值传递?

java值传递

2023-08-09 23:03:22 218

原创 避免IDEA新建项目自动纳入git管理

今天遇到了个很头疼的问题:我在 gitee 上创建了新的远程仓库 test1,然后通过 IDEA 拉取到了本地。随后我打算在该目录下新建新的 module,用来做不同的事情。但问题是,我每次新建 module 它都会成为一个独立的仓库(如下图),这就导致我无法 push 到先前创建的远程仓库中。我发现我这边的问题其实就是每次新建项目或者 module 的时候 IDEA 会自动将项目初始化成一个 git 项目(这不是我想要的)。

2023-07-16 22:30:58 1658 3

原创 AutoHotkey配置鼠标光标在双屏幕之间瞬移

快捷键实现鼠标在扩展屏幕之间的快速切换。

2023-07-08 13:36:40 1690

原创 单机多节点 elasticsearch 集群安全认证

es 集群安全认证

2023-06-12 22:34:25 2472

原创 跨域问题解决方案

跨域问题本质上是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。它指的服务A对服务B发起请求时,如果有任意一个不同,就会出现请求不到的问题。下面是几个典型的例子:对于复杂请求,比如PUT、DELETE等,在进行跨域请求时会先发送预检请求OPTIONS,然后根据返回的响应信息判断能否跨域,如果可以跨域,再发送真实请求。

2023-05-01 22:39:13 778 1

原创 常见的函数式接口及其应用场景

函数式接口更普遍的一个应用场景是StreamAPI,如进行过滤时的filter(Predicate p),进行映射时的map(Function f),进行遍历输出时的forEach(Consumer c)。函数式接口(Functional Interface)指的是有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。如果我们要定义的接口只有一个抽象方法,且符合这些函数式接口的特点,那么直接用函数式接口就 ok 了。

2023-04-30 23:04:13 1371

原创 函数式接口、匿名实现类、Lambda表达式之间的关系

通过匿名实现类可以对接口中的抽象方法进行快速实现。进一步地,如果该接口是函数式接口(即只有一个抽象方法,其他方法可以有多个),那么可以用lambda表达式来进一步简化代码。

2023-04-30 22:24:23 594

原创 Linux 查看指定目录下占用磁盘空间最大的文件

由于 sort 命令默认是将文本文件的第一列以 ASCII 码的次序排列,不符合我们的需求,因此这里需要增加 -n 参数。如下图可见,当前目录下最大的目录文件为 rlvs/。

2023-04-06 15:25:51 2120

原创 排序算法稳定性有什么意义

排序算法稳定性的意义

2022-09-23 21:32:11 629

原创 DO、DTO、BO、AO、VO、POJO

常见分层领域模型的区别:如 DTO、VO、POJO 等

2022-08-18 10:06:08 705

原创 Hexo + github搭建个人博客(2022年7月)

本文方案适用时间节点2022年7月16日。容易踩坑的地方是「部署博客到github」。

2022-07-16 12:39:30 1494

原创 什么是光流法

维基百科的定义光流(Optical flow or optic flow)是关于视域中的物体运动检测中的概念。用来描述相对于观察者的运动所造成的观测目标、表面或边缘的运动。光流法在样型识别、计算机视觉以及其他影像处理领域中非常有用,可用于运动检测、物件切割、碰撞时间与物体膨胀的计算、运动补偿编码,或者通过物体表面与边缘进行立体的测量等等。光流法实际上是通过检测图像像素点的强度随时间的变化进而推断出物体移动速度及方向的方法。光流(Optical Flow)光流定义另外两种有趣的说法:1.光流就是你能

2022-01-14 14:32:58 10465 3

原创 固定随机种子是否有必要?

为什么要固定随机种子固定随机性能解决这些问题:实验结果可复现、有效的对比实验为什么需要随机性?If you can’t get same results, it’s ok, it’s not your fault.In fact, it is often a feature, not a bug.In applied machine learning, we run a machine learning “algorithm” on a dataset to get a machine learn

2022-01-14 14:15:13 1879

原创 Pytorch、TensorFlow、Keras如何固定随机种子

1. 可能引入随机性的地方cuDNN中大量nondeterministic的算法GPU多线程多个num_workers带来的随机性来自复杂模型的随机性(比如一些版本的RNN和LSTM、Conv、Dropout、Dense、GRUCell层的初始化)一些第三方库(因此需要固定对应库RNG的种子)优化器(比如Adam)不同的开发环境,比如软件版本、CPU类型2. Pytorch如何固定随机种子在其他模块的导入或者其他代码之前,在文件的顶端部分通过调用seed_torch()函数固定随机种子

2022-01-14 14:05:57 10758 3

原创 为什么要使用 for 循环

为什么要使用 for 循环Java 中有三种主要的循环结构:while 循环、do…while 循环、for 循环。虽然所有循环结构都可以用 while 或者 do…while 表示,但 Java 提供的 for 循环,使一些循环结构变得更加简单。比如我们要实现变量 x 从 0 增加到 10 ,while 循环的实现方式如下:class Test { public static void main(String[] args) { int x = 0; while(x < 10){

2022-01-14 11:44:52 975

原创 JAVA编程中的静态、非静态变量及方法

Java语言支持的变量类型有:局部变量:类的方法中的变量。静态变量:静态变量也称为类变量,是独立于方法之外的变量,用 static 修饰。实例变量:独立于方法之外的变量,不过没有 static 修饰。局部变量只在声明它的方法、构造方法或者语句块中可见,且当它们执行完成后,变量将会被销毁。而类变量和实例变量均可以被类中的方法、构造方法或者语句块引用。Java 中静态变量(类变量)和实例变量区别在变量调用时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,

2022-01-13 17:33:17 1112

原创 Error occurred when finalizing GeneratorDataset iterator: Failed precondition: Python interpreter...

在使用TensorFlow 2.4.0的时候报错:Error occurred when finalizing GeneratorDataset iterator: Failed precondition: Python interpreter state is not initialized在网上查阅资料,大概有以下几种说法:TensorFlow 版本问题,2.3以上版本应该没这问题了tf.distribute + tf.keras产生的问题OOM了,将bs设置小一点几种据说可行的方法:

2021-11-16 20:48:57 8968

原创 Linux下 jupyter notebook 端口被占用解决办法

找到占用端口jupyter notebook list查询端口 PIDlsof -i :端口号杀死程序kill -9 PID

2021-09-01 21:12:19 1918

原创 pycharm远程调试、ubuntu界面在mac os可视化

本文将介绍两种实现pycharm远程调试的方法,方法一需要同步文件,方法二可以实现直接调试。方法一:利用SFTP这种方法网上谈到的人很多写的也很好,就不再赘述了,这里仅提供一个链接:Pycharm远程调试服务器代码。另外,建议将「自动同步」改成「手动同步」。实现方法是进入Tools -> Deployment -> Options选项进行如下设置:方法二:利用X11实现ubuntu中pycharm的可视化该方法的好处在于,直接在本机上就能打开服务器的Pycharm,这样就省去了本地文件

2021-04-18 12:58:00 452

原创 ubuntu界面在mac os可视化、显示ubuntu的GUI到本地

本文提供两种方法实现在MacOS上的Ubuntu GUI(图形界面)显示。方法一功能更加强大,但是界面相对卡顿一些,适合检查性操作,比如刚入门的小白还不太习惯通过命令终端去执行操作,就可以用这种方法作为辅助。方法二更加轻量,可以实现服务器端单个应用的GUI到主机上的映射(比如打开jupyter notebook、pycharm),对GUI界面操作时很流畅。方法一:借助VNC软件可以实现整个Ubuntu系统界面的显示,具体请参考:博客中VNC部分。方法二:借助X11(XQuartz)step1:配

2021-04-18 12:50:03 968

原创 cuda用不了、pycharm中某个环境的cuda用不了但jupyter notebook中可以

cuda用不了可能是因为:pytorch和cuda版本不对应nvidia驱动和cuda版本不对应另外,若pycharm中cuda用不了,而jupyter中可以,那很可能是因为你对应虚拟环境未安装jupyter,导致实际进的是base环境的jupyter(这点巨坑)。...

2021-03-29 18:05:42 2519

druid 和 druid-spring-boot-starter 1.1.13 版本和 1.2.8 版本的 jar 包

本地的电脑一时没法从 maven 仓库直接下下来 druid 的 jar 包,一查全是要积分下载,甚至还有说免费下载结果一进去又要验证码的。。。真恶心人

2023-06-24

空空如也

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

TA关注的人

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