自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (3)
  • 收藏
  • 关注

原创 主键冲突,失败的insert变成共享锁,导致死锁,经典案例随时复现

具体来说,当我们使用INSERT语句插入数据时,MySQL会根据数据表的唯一索引来创建一条排他锁,这样可以确保其他事务不能同时修改该数据。在MySQL中,当我们使用INSERT语句向表中插入数据时,如果插入的数据与已有的数据主键或唯一索引发生冲突,就会产生唯一键冲突错误(Duplicate Key Error)。总之,当INSERT语句产生唯一键冲突时,MySQL会将产生的排他锁转换为共享锁,以避免出现死锁等问题,保证数据的隔离性和一致性。需要注意的是,该操作只是在发生唯一键冲突时才会执行。

2023-06-09 23:02:53 2568

原创 Thread.yield 详解和一个在自旋锁中使用案例

yield cas 自旋

2022-10-18 13:33:04 332 1

原创 解决ios中alert显示ip问题(亲测有效)

解决ios中alert显示ip问题

2022-06-15 17:07:55 635

原创 缓存的优点和缺点

概念:缓存一般是为了应对高并发场景、缓解数据库读写压力,而将数据存储在读写更快的某种存储介质中(如内存),以加快读取数据的速度。先查询缓存中有没有要的数据,如果有,就直接返回缓存中的数据。优点1.提升了用户体验:用户在使用产品过程中建立起来的一种纯主观感受。缓存的使用可以提升系统的响应能力,大大提升了用户体验。2.减轻了服务器压力。客户端缓存、网络端缓存减轻应用服务器压力。服务端缓存减轻数据库服务器的压力。缺点:1.额外的硬件支出。缓存是一种软件系统中以空间换时间的技术需要额外

2022-05-30 00:00:51 2826

原创 堆排序(java完整代码)

这里的堆并不是JVM中堆栈的堆,而是一种特殊的二叉树,通常也叫作二叉堆。它具有以下特点:1)它是完全二叉树2)每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆。每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。代码中只体现大顶堆。堆排序的基本思想是:.1)将待排序序列构造成一个大顶堆2)此时,整个序列的最大值就是堆顶的根节点。3)将其与末尾元素进行交换,此时末尾就为最大值。4)然后将剩余n-1 个元素重新构造成-一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序

2022-05-18 02:56:38 1903

原创 哈希表介绍,冲突解决办法,java版HashTableDemo

定义哈希表(Hash table,也叫散列表),是根据关键值key而直接进行访问记录(数据)的数据结构。散列表本质就是一个数组,数据存入到数组中,数据的索引是通过散列函数以key为入参计算出来的返回值(散列函数内部已经对数组长度取模防止数组越界),有的是拿到返回值再取模。关键字:key,散列函数(func),散列表=数组伪代码助理解index = func(key) 或index=func(key)%table.lengthdata = table[index]上面一个简单的

2022-05-16 21:28:53 161

原创 递归解决迷宫问题(java完整代码)

整体思路:1.创建一个10*10的二维数组迷宫。当前迷宫中二维数组的值为0代表从未走过,1,代表障碍物2,代表已经走过,该点只能走一次,不能返回重走,3代表死路(上下左右试探的时候,遇到障碍物或者其他死路点或者已经走过的点,判断该点为死路)。2.设置障碍物3.开始递归尝试路线。按照一个设定的下,右,上,左方向递归测试路线,直到找到最终路线。下面是代码。public static void main(String[] args) { //创建一个10*10的迷宫 int[][

2022-05-14 01:43:22 996

原创 头插法反转整个单链表(java完整代码)

头插法:节点插入到链表的头部,也就是addFirst()方法。单链表:一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置)。参照代码中的Node内部类。代码中方法介绍:add():插入到链表尾部。addFirst():头插法插入到链表头部。reverseAll():头插法反转整个链表。public class SingleLinkedList { //头结点

2022-05-12 14:17:11 973

原创 通俗理解垂直扩展和水平扩展

垂直的意思就是专注,扎根某个领域,深入发展。举个例子,比如专门的卖书的当当网,专门互联网招聘的拉勾网等就是垂直领域。比如蜘蛛侠,能力越大责任越大。水平可以跟复制,多等概念挂钩,1个10个不行,100个呢,1000个呢?比如成千上万的蚂蚁完成一项搬运工作。举几个对立的例子:服务器垂直(纵向)扩展,增加单台服务器性能。服务器水平(横向)扩展,多个服务器一起服务。垂直分库...

2022-05-11 10:34:15 1841

原创 java中Queue接口方法介绍

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除(remove或poll)操作,而在表的后端(rear)进行插入(add或offer)操作。可以类比生活中的排队。入队列的时候要排到队伍的最后面(队尾),最前面的人(队头)先出列。先入先出,队伍中前面的人先排队的,而且最先出队。 /** *继承集合接口,所以Queue包含Collection的方法 */public interface Queue<E> extends Collect

2022-05-07 22:20:20 479

原创 1个小例子解释wait()和notify()方法

1个小例子解释wait()和notify()方法

2022-04-12 15:56:53 592

原创 弹窗万能居中办法

css 弹窗万能居中

2022-04-01 10:33:00 650 1

原创 java get,post请求带多个header参数,亲测有效

废话不多说,看代码/** * get请求(用于key-value格式的参数,且带有header请求头) * * @param url * @param paramMap 请求的参数map<key,value>键值对 * @param headerMap 请求的参数map<key,value>键值对 * @return */ public static JSONObject doGet(St...

2021-05-26 09:47:56 7153

Unsafe.java

JDK8中sun.misc下UnSafe类源代码 UnSafe.java

2021-12-23

c3p0源码包

c3p源码包

2016-02-18

json-lib-2.4-jdk15-sources.jar

json-lib-2.4-jdk15-sources.jar jsonlib源码包

2016-01-11

空空如也

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

TA关注的人

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