自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(185)
  • 资源 (1)
  • 收藏
  • 关注

原创 Oracle-匿名块调用存储过程

匿名块-控制台输出语法

2023-09-10 21:00:50 250

原创 项目中如何保证MQ【消息队列】的不重不漏

消息队列中主要涉及三方:生产者 消息队列 消费者对于消息的不重不漏需要分别从这三方面进行消息的不漏:生产者:同步等待队列落盘结果,异步等待落盘结果,保证消息正常推送到消息队列中。消息队列:通过多副本,多机器,多地域,保证数据的不丢失消费者:...

2021-06-17 00:14:42 458

原创 秒杀场景实践

目录一、场景分析:1、业务特点2、多环节(秒啥前商品信息读取,秒杀进行中 读取并减少库存,秒杀结束后 订单处理)3、场景的负载特征(高并发,读多写少)二、秒杀基本三阶段分析1、秒杀前,用户读取商品详情 缓存具体信息,无需服务端支持2、秒杀活动开始,获取库存并扣减Redis提供高并发和读取扣减的原子性控制3、下单成功相关操作较多,设计多表,有数据库完成为什么需要必须在Redis中完成库存的扣减:数据库更新速度慢于Redis,造成额外开销的同时,还可能出现超售...

2021-06-09 22:49:42 515

原创 线程池提交任务的方式

Java中的线程池在进行任务提交时,有两种方式:execute和submit方法。一、execute和submit的区别execute只能提交Runnable类型的任务,无返回值。submit既可以提交Runnable类型的任务,也可以提交Callable类型的任务,会有一个类型为Future的返回值,但当任务类型为Runnable时,返回值为null。 execute在执行任务时,如果遇到异常会直接抛出,而submit不会直接抛出,只有在使用Future的get方法获取返回值时,才会抛出异常。

2021-05-28 11:04:18 1292

原创 数据结构和算法之美 —— 哈希算法

数据结构和算法之美 - 21哈希算法的定义:将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值。常用哈希算法:比如 MD5、SHA 等哈希算法几点要求:从哈希值不能反向推导出原始数据(所以哈希算法也叫单向哈希算法); 对输入数据非常敏感,哪怕原始数据只修改了一个 Bit,最后得到的哈希值也大不相同; 散列冲突的概率要很小,对于不同的原始数据,哈希值相同的概率非常小; 哈希算法的执行效率要尽量高效,针对较长的文本

2021-05-11 20:11:16 172

原创 数据结构和算法之美 —— 散列表

数据结构和算法之美 - 18一、散列思想:散列表的英文叫“Hash Table”,我们平时也叫它“哈希表”或者“Hash 表”。散列表 :用的是数组支持按照下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。可以说,如果没有数组,就没有散列表。二、散列函数:key 表示元素的键值,hash(key) 的值表示经过散列函数计算得到的散列值(数组的小标)散列函数的基本要求:散列函数计算得到的散列值是一个非负整数; 如果 key1 = key2,那 hash(k

2021-05-11 14:56:24 69

原创 数据结构与算法之美 —— 二分查找

对有序数据集合的查找算法:二分查找数据结构与算法之美 - 15

2021-05-10 14:13:56 567

原创 快速排序的优化

由于归并排序的空间复杂度问题,快速排序比较适合来实现排序函数,但是,我们也知道,快速排序在最坏情况下的时间复杂度是 O(n2),如何来解决这个“复杂度恶化”的问题呢?

2021-05-10 11:05:27 703

原创 数据结构与算法之美 —— 跳表

数据结构与算法之美 - 17二分查找底层依赖的是数组随机访问的特性,所以只能用数组来实现。如果数据存储在链表中,就真的没法用二分查找算法了吗?实际上,我们只需要对链表稍加改造,就可以支持类似“二分”的查找算法。我们把改造之后的数据结构叫做跳表。目录一、跳表(对链表建立多级索引)概念:时间复杂度:空间复杂度:插入删除操作:跳表索引动态更新:为什么 Redis 要用跳表来实现有序集合,而不是红黑树?(提供区间查询的优势)一、跳表(对链表建立多级索引)概念:对于一个

2021-05-07 18:15:26 105

原创 简单动态字符串

什么是简单动态字符串,和常用的字符串的区别?

2021-04-08 19:28:04 175

原创 Java - 重写(override)和重载(overload)

Java基础 - 13重写(override)和重载(overload):重写是父子类中相同名字和参数的方法,不同的实现;重载则是相同名字的方法,但是不同的参数,本质上这些方法签名是不一样的;方法名称和参数一致,但是返回值不同,这种情况在 Java 代码中不属于重载,编译都会出错的。public int doSomething() { return 0;}// 输入参数不同,意味着方法签名不同,重载的体现public int doSomething(List<Strin

2021-03-24 00:18:41 103

原创 ConcurrentHashMap 分析

目录早期 ConcurrentHashMap:Java 8 和之后的版本的ConcurrentHashMap:Java基础-10早期 ConcurrentHashMap:其实现是基于:分离锁,也就是将内部进行分段(Segment),里面则是 HashEntry 的数组,和 HashMap 类似,哈希相同的条目也是以链表形式存放。HashEntry 内部使用 volatile(禁用缓存) 的 value 字段来保证可见性,也利用了不可变对象的机制以改进利用 Unsafe 提供的底层能力

2021-03-23 23:59:05 119

原创 HashMap 树化的原因

为什么 HashMap 要树化呢?本质上这是个安全问题。因为在元素放置过程中,如果一个对象哈希冲突,都被放置到同一个桶里,则会形成一个链表,我们知道链表查询是线性的,会严重影响存取的性能。而在现实世界,构造哈希冲突的数据并不是非常复杂的事情,恶意代码就可以利用这些数据大量与服务器端交互,导致服务器端 CPU 大量占用,这就构成了哈希碰撞拒绝服务攻击,国内一线互联网公司就发生过类似攻击事件。...

2021-03-23 23:42:11 334

原创 Java默认的排序算法

Java基础-08 【08:11】Java默认的排序算法:需要区分:是 Arrays.sort() 还是 Collections.sort() (底层是调用 Arrays.sort()); 什么数据类型; 多大的数据集(太小的数据集,复杂排序是没必要的,Java 会直接进行二分插入排序)等。对于原始数据类型,目前使用的是所谓双轴快速排序(Dual-Pivot QuickSort),是一种改进的快速排序算法,早期版本是相对传统的快速排序。而对于对象数据类型,目前则是使用TimSort,思

2021-03-23 11:13:18 1301

原创 Java8 - 流排序

https://blog.csdn.net/qq_32091599/article/details/103137681

2021-03-23 10:29:26 90

原创 数据结构与算法之美 - 排序算法

数据结构与算法之美 - 11数据结构与算法之美 - 12

2021-03-22 15:13:01 394

原创 数据结构与算法之美笔记 - 动态规划

数据结构与算法之美 - 40

2021-03-18 20:33:30 87

原创 数据结构与算法之美笔记 - 递归

数据结构与算法之美 - 10目录一、递归二、使用递归需要满足的条件1. 一个问题的解可以分解为几个子问题的解2. 这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样3. 存在递归终止条件三、编写递归代码 【写出递推公式,找到终止条件】四、递归代码可能存在的问题1、警惕堆栈溢出2、警惕重复计算递归利弊:五、将递归代码改成非递归代码一、递归递归实现的常见算法:DFS 深度优先搜索、前中后序二叉树遍历等等二、使用递归需要满足的条件1. 一

2021-03-18 20:21:55 124

原创 数据结构 —— 数组,栈,链表,队列

时间复杂度:非多项式复杂度,随着n的增长,时间复杂度激增 最好时间复杂度,最坏时间复杂度,平均时间复杂度空间复杂度:空间复杂度是指除了原本的数据存储空间外,算法运行还需要额外的存储空间数组:线性表,利用连续内存存放相同类型数据。依据该原理可以根据脚标计算出数据位置,连续内存可以利用cpu缓存的预读 插入删除,引起大量的数据迁移,效率低。对于无需数组可以通过交换位置来避免插叙和删除的的数据迁移,从而提高效率 ArrayList和数组的区别?(动态扩容,存储内容,封装了基本...

2021-03-18 19:51:55 133

原创 知识点记录

数据结构与算法 (目的就是达到 速度快和空间省)时间复杂度:细致分析每一行代码执行的次数,核心代码执行次数的 n 的量级,就是整段要分析代码的时间复杂度加法法则:乘法法则:嵌套循环复杂度量级,我们可以粗略地分为两类,多项式量级和非多项式量级。其中,非多项式量级只有两个:O(2n) 和 O(n!)。当数据规模 n 越来越大时,非多项式量级算法的执行时间会急剧增加;...

2021-03-18 00:16:08 65

原创 MySQL-join语句

MySQL 执行 join 语句的两种可能算法,这两种算法是由能否使用被驱动表的索引决定的。而能否用上被驱动表的索引,对 join 语句的性能影响很大。一、指定驱动表直接使用 join 语句,MySQL 优化器可能会选择表 t1 或 t2 作为驱动表,用 straight_join 让 MySQL 使用固定的连接方式执行查询,来指定join顺序。以下sql,指定了t1来做驱动表,t2是被驱动表select * from t1 straight_join t2 on (t1.a=t2..

2021-03-16 00:17:25 357

原创 MySQL-慢查询的性能问题

MySQL实战-22【5525】- 06:45

2021-03-15 15:34:09 125

原创 MySQL-order by 是怎么工作的?

在开发系统的时候,你总是不可避免地会使用到 order by 语句。你心里要清楚每个语句的排序逻辑是怎么实现的,还要能够分析出在最坏情况下,每个语句的执行对系统资源的消耗,这样才能做到下笔如有神,不犯低级错误。MySQL实战-16【5525】...

2021-03-12 15:47:33 136

原创 MySQL-幻读

可重复读的事务隔离级别下出现的问题 ——幻读。MySQL实战-20【5525】

2021-03-12 14:10:36 154

原创 MySQL- 索引字段的函数使用

目录条件字段函数操作:对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树搜索功能。进行全表扫描。隐式类型转换:字符串和数字做比较的话,是将字符串转换成数字。隐式字符编码转换:比较字段使用不同的字符集,utf8和utf8mb4 。解决办法:对于需要进行转换后进行比较的字段,可以选择将函数是加在输入参数上的,这样可以使用索引。条件字段函数操作:Mysql中规定,如果对字段做了函数计算,就用不上索引了。索引的B+Tree提供快速定位能力,来源于同一层兄弟节...

2021-03-11 20:20:27 1127

原创 行测题

律师 【执业】证书

2021-03-11 17:58:22 106

原创 MySQL-为字符串增加索引的方式

目录一、前缀索引降低字符串长度,降低内存占用,从而提高搜索效率。截取前缀索引需要注意:区分度和内存占用间取得平衡前缀索引对覆盖索引的影响:无法使用覆盖索引的优化二、其他索引方式1、使用倒序存储,再创建前缀索引 解决区分度问题2、使用hash字段增加额外字段3、倒叙存储和hash字段的比较(空间占用,cpu消耗,查询效率)倒叙存储和hash字段,都无法支持范围查询,只可以进行等值查询。一、前缀索引现在,几乎所有的系统都支持邮箱登录,如何在邮箱这样的字段上建立合理...

2021-03-10 23:56:07 195

原创 MySQL-普通索引和唯一索引应该如何选择?

MySQL实战-09【5525】

2021-03-10 17:35:28 85 1

原创 MySQL-索引

一、常见的索引模型:索引的出现是为了提高查询效率,但是实现索引的方式却有很多种MySQL实战-04【5525】

2021-03-10 10:53:11 152

原创 MySQL-概述

一、MySQL的架构:MySQL实战-01【5525】MySQL 可以分为 Server 层和存储引擎层两部分。Server 层:包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。查询缓存:MySQL 拿到一个查询请求后,会先到查询缓存看看,之前是不是执行过这条语句。但是大多数情况下我会建议你不要使用查询缓存,查询缓存的失效非常

2021-03-10 01:02:19 178 1

原创 Vector、ArrayList、LinkedList 有何区别?

三者都是实现集合框架中的 List,也就是所谓的有序集合。Vector 是 Java 早期提供的线程安全的动态数组,如果不需要线程安全,并不建议选择,毕竟同步是有额外开销的。Vector 内部是使用对象数组来保存数据,可以根据需要自动的增加容量,当数组已满时,会创建新的数组,并拷贝原有数组数据。 ArrayList 是应用更加广泛的动态数组实现,它本身不是线程安全的,所以性能要好很多。与 Vector 近似,ArrayList 也是可以根据需要调整容量,不过两者的调整逻辑有所区别,Vector 在扩容

2021-03-09 11:55:46 59

原创 访问控制功能 —— Servlet Filter、Spring Interceptor、AOP的区别?

在项目开发中,类似权限这样的访问控制功能,我们该选择三者(AOP、Servlet Filter、Spring Interceptor)中的哪个来实现呢?

2021-03-04 19:59:22 330 1

原创 int 和 Integer 有什么区别?

int 和 Integer 有什么区别?谈谈 Integer 的值缓存范围。int 是我们常说的整形数字,是 Java 的 8 个原始数据类型(Primitive Types,boolean、byte 、short、char、int、float、double、long)之一。Integer 是 int 对应的包装类,它有一个 int 类型的字段存储数据,并且提供了基本操作,比如数学运算、int 和字符串之间转换等。在 Java 5 中,引入了自动装箱和自动拆箱功能(boxing/unboxing),

2021-03-04 11:35:40 181 1

原创 String、StringBuffer、StringBuilder 有什么区别?

目录StringStringBufferStringBuilder扩展StringString被声明成为 final class,所有属性也都是 final 的。也由于它的不可变性,类似拼接、裁剪字符串等动作,都会产生新的 String 对象。由于字符串操作的普遍性,所以相关操作的效率往往对应用性能有明显影响。String 是 Immutable 类的典型实现,原生的保证了基础线程安全,因为你无法对它内部数据进行任何修改,这种便利甚至体现在拷贝构造函数中,由于不可变,Immutabl

2021-03-03 18:13:27 123 1

原创 强引用、软引用、弱引用、幻象引用有什么区别?

在 Java 语言中,除了原始数据类型的变量,其他所有都是所谓的引用类型,指向各种不同的对象,不同的引用类型,主要体现的是对象不同的可达性(reachable)状态和 对垃圾收集的影响。充分理解这些引用,对于我们设计可靠的缓存等框架,或者诊断应用 OOM 等问题。目录强引用(“Strong” Reference)软引用(SoftReference)弱引用(WeakReference)幻象引用强引用(“Strong” Reference)就是我们最常见的普通对象引用,只要还有强..

2021-03-03 17:17:21 146 2

原创 final、finally、 finalize的区别?

目录finalfinallyfinalizefinalfinal可以修饰变量,方法,类,标识变量不可以修改,方法不可以重写,类不可以被继承。final 只能约束 strList 这个引用不可以被赋值,但是 strList 对象行为不被 final 影响,添加元素等操作是完全正常的。String类型就是final修饰final List<String> strList = new ArrayList<>();strList.add("Hello");..

2021-03-03 16:54:08 115 1

原创 Exception 和 Error 有什么区别?

基本概念理解:问题:请对比 Exception 和 Error? 运行时异常与一般异常有什么区别?Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。Exception 又分为可检查(checked)异常和不检查(unchecked)异常,可检查异常在源代码里必须显式地进行捕获处理,这是编译期检查的一部分。如何处理好异常:了解.

2021-03-03 11:57:21 80

原创 行测题汇总

鸽巢定理:n个鸽子巢,若有n+1只鸽子在里面,则必有一个巢里至少有2只鸽子。鸽巢定理的推广:设k和n都是任意的正整数,若至少有kn+1只鸽子分配在n个鸽巢里,则至少存在一个鸽巢中有不少于k+1只鸽子。(1)4项培训任选2项的组合数有4*3/2=6,即n=6,(2)无论如何安排,都至少有 5 名党员参加的培训完全相同,即k+1=5,k=4(3)所以kn+1=25...

2021-03-02 14:59:06 298

原创 MySQL——基础架构:一条SQL查询语句是如何执行的?

MySQL实战45讲-02

2021-02-23 15:27:54 67

原创 Idea-字体配置

2021-02-19 11:32:27 158

MemoryAnalyzer-1.12.0.20210602-win32.win32.x86_64.zip

当有OutOfMemory异常出现的时候,JVM就会将当前的虚拟机的堆等信息放入hprof文件中

2021-06-29

空空如也

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

TA关注的人

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