乐观锁什么是乐观锁:是针对一些特定问题的解决方案,主要解决丢失更新问题假如有一条数据同时被两个及以上的人进行修改,这个时候就会产生丢失更新问题。譬如:小明想修改一条数据的money字段,他看到的money是500,他应该500太少想多加一点,改变成1000,但是小红也想改变money,她因为500太少想少加一点,改成600。小明的修改先发生,他们都是由500进行修改的,按理来说,小红应该是根据小明
转载
2023-07-16 09:45:40
41阅读
一、什么是悲观锁?什么是乐观锁?1)锁(Lock)在介绍乐观锁和悲观锁之前,我们先介绍下锁。在日常生活中,我们经常接触到锁这个东西,比如家里门上的锁,自行车上的锁,保险柜上的锁等,这些都是为了保障我们的财产安全而上的锁。而在程序中,锁是一种保障数据安全的机制和手段。在多并发的情况,当同时多个请求修改相同的数据时,为了保障这种修改是安全的,会给这些数据加上锁,来控制并发下的多个操作的执行顺序。本篇介
在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务、分布式锁等。那具体什么是分布式锁,分布式锁应用在哪些业务场景、如何来实现分布式锁呢?一 为什么要使用分布式锁我们在开发应用的时候,如果需要对某一个共享变量进行多线程同步访问的时候,可以使用我们学到的锁进行处理,并且可以完美的运行,毫无Bug!注意这是单机应用,后来业务发展,需要做集群,一个应用需要部署到几台机器上
转载
2024-09-16 11:10:06
30阅读
# Java 中的读写锁与分布式锁的使用场景
在并发编程中,锁是不可或缺的工具。在 Java 中,锁主要有两种类型:读写锁和分布式锁。本文将讨论它们各自的特点、适用场景以及如何在 Java 中实现它们的使用。
## 读写锁
### 定义
读写锁是一种特殊的锁,允许多个线程同时读取资源,但在写入时会阻塞所有读取和其他写入操作。使用读写锁可以提高读操作频繁的情况下的性能。
### 使用场景
-
1.锁为什么需要锁? 在实际中,比如在淘票票抢电影票,A用户和B用户都想要要2排2座,那么它们必然只有一个人能抢到。在这个过程中,使用锁可以对有效的资源在并发的环境下进行保护,解决隔离和并发的矛盾。什么是锁? 锁是计算机协调进程和线程在并发情况下访问某一资源的协调机制 在数据库中,数据是提供给多用户的共享资源,锁是用来保证资源的有效性和一致性 2.Mysql锁(MyISAM引擎)MySql锁机制的
转载
2023-10-08 07:05:37
150阅读
关于MySQL中的锁介绍,参考文章MySQL锁总结,介绍的非常清楚 MyISAM只支持表锁,但网上文章却说,在并发插入量比较大的时候,比较适合使用MyISAM,这矛盾吗? 这个问题,涉及MySQL表锁的一些细节,借着这个问题,系统性说下表锁的“所以然”。 MySQL表锁知识系统性梳理。 哪些存储引擎使用表锁?MySQL,除InnoDB支持行锁外,MySQL的
转载
2024-01-13 20:49:32
78阅读
MySQL高级学习之表锁参考文章:MySQL高级知识(十三)——表锁1.概述锁是计算机协调多个进程或线程并发访问某一资源的机制(避免争抢)。在数据库中,除传统的计算资源(如 CPU、RAM、I/O 等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤
转载
2024-04-13 17:29:54
184阅读
一:生活中的线程在生活中,我们总是追求时间的最大利用效率,因此我们会在一个时间段内做几件不同的事情,例如我们在用全自动洗衣机洗衣服的同时去烧水,烧水的同时我们去扫地,扫地的同时我们再听着音乐。 像这样一连串同时发生的事情,我们将这其中每一件事情都叫做一个线程。 再拿电脑举例子,我们打开电脑的任务管理器之后能看到有很多程序正在后台运行,他们并没有说是在运行其中一个应用的时候其他应用就没有运行,而是一
转载
2023-12-25 14:56:51
35阅读
在某峰培训机构不知不觉已经一个半月了,飞快的时间里还有瀑布般下落的知识...能够从这里面接收到多少也是因人而遇。今天是2016/8/20,星期六,打算这两天把java阶段里认为比较重要的知识点总结一下。这就是第一篇--集合。ok,进入正题:集合:1.集合与数组在使用的意义可以说是一样的,都是为了存储一种数据而这种数据可以是基本数据类型,也可以是引用类型。(基本数据类型(8种):byte,short
转载
2023-09-28 09:54:05
100阅读
访问权限修饰符决定了紧跟其后被定义的东西可以被谁访问。 Java里有4种情况:public 公共的:关键字应用于类、方法、变量的访问控制修饰。public修饰的类,方法,变量在整个项目的所有类都可以被访问使用。protected 受保护的:关键字应用于类、方法、变量的访问控制修饰。只有本类和同一包里的其他类还有不同包里的子类可以使用。default 默认的:关键字应用于类、方法、变量的访问控制修饰
转载
2023-08-02 13:25:15
184阅读
前言相信大家对mysql 语法有个简单的运用了,知道了事务特性ACID,知道事务隔离级别,知道MVVC,知道了索引结构。但是知道了这些应该还是不知道为什么查询这么慢,为什么产生了死锁,为什么索引没有起作用吧。介绍锁关于锁,其实有好多,不同存储引擎支持的锁还不一样。MyISAM:注:不支持事务操作、不支持外键1)表级别:MySQL表级锁有两种模式:表共享读锁(Table Read Lock)和表独占
转载
2023-08-08 11:03:57
131阅读
GC的基础知识1.什么是垃圾C语言申请内存:malloc freeC++: new deletec/C++ 手动回收内存Java: new ?自动内存回收,编程上简单,系统不容易出错,手动释放内存,容易出两种类型的问题:忘记回收多次回收没有任何引用指向的一个对象或者多个对象(循环引用)2.如何定位垃圾引用计数(ReferenceCount)根可达算法(RootSearching)3.常见的垃圾回收
转载
2024-08-28 16:33:56
84阅读
首先,类只能使用public修饰是一个伪命题,应该说我们只见到过使用public修饰的类,还有一些类没有访问修饰符,此时访问权限为default。其次,类实际上分为外部类和内部类(inner class),一般的类都是外部类,内部类需要依赖外部类生成,内部类可以用各种访问修饰符修饰。所以问题转化成,为什么不能使用private和protected修饰外部类?我们知道,在Java中,访问修饰符可以修
转载
2023-09-11 15:50:36
117阅读
一 继承的好处: 1.提高代码复用性 2.类与类之间产生了关系,为第三个特性多态产生提供了前提。二 什么时候继承? 类与类之间有所属关系时。三 ①当本类的成员和局部变量同名 用this区分 ②当子父类的成员变量同名 用super区分 this:代表本类对象的引用 super:代表一个父类空间 当子父类出现成员函数一模一样 会运行子类函数称为覆盖四:覆盖注意事项 子类重写(覆盖)父类的方法必须满足的
转载
2024-09-29 18:34:44
36阅读
# java 什么时候用int什么时候用Integer
在Java编程中,我们经常会遇到处理整数的情况。在选择使用`int`还是`Integer`时,我们需要考虑一些因素,比如数据类型的范围、是否需要使用对象的方法等等。本文将详细讨论在什么情况下应该使用`int`,以及在什么情况下应该使用`Integer`。
## 使用`int`
`int`是Java中的基本数据类型之一,用于表示整数值。它
原创
2023-11-04 13:19:50
1557阅读
# Java中boolean和Boolean的使用
在Java编程中,我们经常会使用到boolean和Boolean这两种数据类型。它们虽然在名称上很相似,但在实际使用中有着不同的场景和特点。本文将介绍何时使用boolean和何时使用Boolean,并通过代码示例进行说明。
## boolean vs Boolean
在Java中,boolean是基本数据类型,只能取两个值:true和fal
原创
2024-05-16 04:58:14
421阅读
ava super的定义 本章节目标:掌握super都可以用在哪里?理解super在内存方面的存储位置。掌握怎么通过子类的构造方法调用父类的构造方法。super什么时候可以省略,什么时候不能省略知识框架:super和this可以对比着学习: this● this是一个引用,保存内存地址指向自己。● this出现在实例方法中,谁调用这个实例方法,this就代表谁,this代表当前
## Mysql 行锁与表锁的实现方式
### 1. 概述
在Mysql中,行锁和表锁是用来控制并发访问数据库的机制。行锁是指对某一行进行加锁,而其他事务在访问该行时需要等待锁的释放。表锁是指对整个数据表进行加锁,其他事务在访问该表时需要等待锁的释放。行锁和表锁的选择在于对并发性和数据一致性的要求。
### 2. 行锁和表锁的选择
在选择行锁和表锁之前,首先要了解事务的隔离级别。Mysql
原创
2023-12-16 09:27:11
89阅读
当一个类中多个方法有相同编码,或该部分编码可以作为一个整体,适合抽取出一个方法时,要注意这个抽取的方法的返回值,什么时候可以用void,什么时候不能用void?先看代码:import lombok.Data;
import org.junit.Test;
public class MyTest {
@Test
public void test(){
Student student = n
转载
2023-07-26 21:33:43
73阅读
原文(问答):https://stackoverflow.com/questions/4984600/when-do-i-use-a-dot-arrow-or-double-colon-to-refer-to-members-of-a-class-in-cC++提供了三种访问类或者类对象的操作符,他们是“双冒号::”,“点.”,"箭头->", 这三种操作符有着各自的使用场景和定义。...
原创
2021-06-04 10:49:53
1769阅读