- 博客(49)
- 收藏
- 关注
原创 Mysql总结
聊到事务隔离级别,我们得先聊下事务。所谓事务,就是工作的原子单元,可以去进行提交、回滚。在数据库中的工作,就是执行的sql语句,这些语句可以是单条语句也可以是多条语句。所以,其实就是去保证单条语句或者多条sql语句作为一个原子操作,要么全部成功,要么全部回滚。事务的四大特性A 原子性:事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。C 一致性:指在事务开始之前和事务结束以后,数据不会被破坏,假如 A 账户给 B账户转 10 块钱,不管成功与否,A 和B 的总金额是不变的。
2024-09-06 17:34:18 914
原创 Redis总结
Redis是一个基于内存实现的Key-Value数据结构的Nosql数据库。指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力。缓存穿透产生的几种情况:不合理的业务设计:比如大多数用户都没开守护,但是每个请求都去查询缓存,用户有没有守护。业务/运维/开发失误的操作:比如缓存和数据库的数据都被误删除了。黑客非法请求攻击:故意捏造大量非法请求,以读取不存在的业务数据。
2024-08-12 13:46:31 681
原创 消息队列面试题
消息队列Message Queue,简称MQ。是一种应用间的通信方式,主要由三个部分组成。Producer:消息的产生者与调用端,主要负责消息所承载的业务信息的实例化,是一个队列的发起方负责,产生和发送消息到 Broker;Broker:消息处理中心,负责消息存储、确认、重试等,一般其中会包含多个 Queue;Consumer:消息消费者,负责从 Broker 中获取消息,并进行相应处理。
2024-07-24 16:01:09 1221
原创 资料总结目录
4期资料总结java基础JUCJVMjava数据结构集合 菜鸟教程参考异常设计模式面试题集合数据库MysqlRedisElasticsearch时序数据库Mybatis面试题集合SpringSpring特点Spring事务SpringmvcSpring配置原理拦截器过滤器面试题集合SpringCloudnacosgetwaydubboSentinel面试题集合K8S基础面试题集合MQRocketMqKafkaRabb
2024-02-23 17:07:54 146
转载 JUC集合
JUC实际上就是我们对于jdk中java.util .concurrent 工具包的简称,这个包下都是Java处理线程相关的类,自jdk1.5后出现。目的就是为了更好的支持高并发任务。让开发者进行多线程编程时减少竞争条件和死锁的问题!进程概述:进程(Process) 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
2024-02-23 17:07:20 67
转载 互联网项目中mysql应该选什么事务隔离级别
引言开始我们的内容,相信大家一定遇到过下面的一个面试场景面试官:“讲讲mysql有几个事务隔离级别?”你:“读未提交,读已提交,可重复读,串行化四个!默认是可重复读”面试官:“为什么mysql选可重复读作为默认的隔离级别?”(你面露苦色,不知如何回答!)面试官:“你们项目中选了哪个隔离级别?为什么?”你:“当然是默认的可重复读,至于原因。。呃。。。”(然后你就可以回去等通知了!)为了避免上述尴尬的场景,请继续往下阅读!Mysql默认的事务隔离级别是可重复读(Repeatable Re
2020-07-21 16:26:40 201
转载 线程创建的四种方式
线程的生命周期在JAVA层面,线程有6个状态:1、NEW(初始状态):高级语言层面的线程创建,操作系统并没有真正创建线程,因此也不会获得CPU的执行权,通过调用start()方法进入RUNNABLE状态;2、RUNNABLE(可运行/运行状态):RUNNABLE状态分可运行和运行两种状态,在java语言中统一叫做RUNNABLE状态,NEW状态的线程通过调用start()方法进入可运行状态,此时操作系统会新建一个线程,当有CPU空闲时,OS会分配CPU执行权,此时进入运行状态。运行时状态也可通过调用
2020-07-20 15:07:52 290
转载 Redis分布式锁的正确实现方式(Java版)
https://wudashan.cn/2017/10/23/Redis-Distributed-Lock-Implement/https://blog.csdn.net/l_bestcoder/article/details/79336986一、什么是分布式锁?要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。线程锁:主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内
2020-07-14 11:53:19 124
转载 Redis事务详解
Redis的事务功能详解MULTI、EXEC、DISCARD和WATCH命令是Redis事务功能的基础。Redis事务允许在一次单独的步骤中执行一组命令,并且可以保证如下两个重要事项:Redis会将一个事务中的所有命令序列化,然后按顺序执行。Redis不可能在一个Redis事务的执行过程中插入执行另一个客户端发出的请求。这样便能保证Redis将这些命令作为一个单独的隔离操作执行。 > 在一个Redis事务中,Redis要么执行其中的所有命令,要么什么都不执行。因此,Redis事务能够保证原子性。
2020-07-14 10:52:46 182
转载 redis的基础知识
redis简介redis是一个key-value存储系统。它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且
2020-07-13 16:47:13 183
原创 数据库索引相关知识
关于索引什么是索引索引与书的目录类似,可以快速定位要查找的数据所有位置,索引使数据库程序无需扫描整个表,就可以在其中找到所需要的数据,索引包含了一个表中包含值的列 表,其中包含了各个值的行所存储的位置,索引可以是单个或一组列,索引提供的表中数据的逻辑位置,合理划分索引能够大大提高数据库性能。 索引需要注意:加索引的列一定要是经常使用来条件筛选的列,并且where中要避免对有索引的列进行计算,索引并不是越多越好,索引会占用更多的存储空间,也会对insert 、update、delete这些操作有一定的性能
2020-07-13 10:34:00 144
转载 SpringMvc的九大组件
SpringMvc的九大组件SpringMVC中的Servlet一共有三个层次,分别是HttpServletBean、FrameworkServlet和 DispatcherServlet。HttpServletBean直接继承自java的HttpServlet,其作用是将Servlet中配置的参数设置到相应的属性;FrameworkServlet初始化了WebApplicationContextDispatcherServlet初始化了自身的9个组件。本篇博客的内容对9个组件做个概览。在学
2020-07-12 23:59:47 296
转载 Spring SmartLifecycle的用法
Spring SmartLifecycle 在容器所有bean加载和初始化完毕执行在使用Spring开发时,我们都知道,所有bean都交给Spring容器来统一管理,其中包括没一个bean的加载和初始化。有时候我们需要在Spring加载和初始化所有bean后,接着执行一些任务或者启动需要的异步服务,这样我们可以使用 SmartLifecycle 来做到。SmartLifecycle 是一个接口。当Spring容器加载所有bean并完成初始化之后,会接着回调实现该接口的类中对应的方法(start()方法
2020-07-12 23:31:59 466
原创 简要几句话说一下看源码的技巧
如何看源码遇到一个不明白的模块,首先去网上查一下这个东西是干什么的,应该怎么用(不懂就问度娘)找到核心类的入口,摸清运行流程举例:假如你要看的是某个注解,注解点进去有import的注解,那么一般来说import引入的类就是关键了,点进去查看看结构(ctrl+h)有父类就一层层看父类,有接口优先看接口,一定要下载源码查看上面的注释(老办法英文不好问度娘),一般来说注释会详细介绍这个接口/类的功能灵活运用alt+f7,就是find usages学会查看引用栈,能掌握每一步代码具体做了什么以及当前引
2020-07-09 09:25:37 457
转载 B树和B+树详解
1 B树在介绍B+树之前, 先简单的介绍一下B树,这两种数据结构既有相似之处,也有他们的区别,最后,我们也会对比一下这两种数据结构的区别。1.1 B树概念B树也称B-树,它是一颗多路平衡查找树。二叉树我想大家都不陌生,其实,B树和后面讲到的B+树也是从最简单的二叉树变换而来的,并没有什么神秘的地方,下面我们来看看B树的定义。每个节点最多有m-1个关键字(可以存有的键值对)。根节点最少可以只有1个关键字。非根节点至少有m/2个关键字。每个节点中的关键字都按照从小到大的顺序排列,每
2020-07-08 16:05:15 703
原创 十大经典排序算法
0、算法概述0.1 分类时钟常见排序算法可以分为两大类比较类排序: 通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O,因此也成为非线性时间比较类排序。非比较类排序: 不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也成为线性时间非比较类排序。0.2 算法复杂度0.3 相关概念稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定: 如果a原本在b的前面,而a=b,排序之后a可能出现在b的后面。时间复杂度:对排序数据的
2020-07-08 13:49:54 174
转载 mysql的分式事务
https://www.jianshu.com/p/7003d58ea182https://www.jianshu.com/p/7003d58ea182
2020-07-06 22:57:47 128
原创 Mysql引擎的知识
什么是引擎存储引擎是数据库的发动机,决定数据库提供的功能和性能。使数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。 存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。引擎的任务...
2020-07-06 22:42:31 297
转载 Java 自带性能监控工具:监视和管理控制台 jconsole 的使用
Java 自带性能监控工具:监视和管理控制台 jconsole 的使用https://blog.csdn.net/defonds/article/details/45064297
2020-07-06 22:08:31 136
转载 HashMap的扩容,HashMap为什么线程不安全?怎样才能让HashMap变的线程安全?
HashMap的扩容了解HashMap的扩容首先要了解HashMap几个非常重要的常量:static final float DEFAULT_LOAD_FACTOR = 0.75f;//负载因子Capactity:HashMap的当前长度(2的n次幂)LoadFActor:负载因子,默认为0.75f;//在每次put之后,会有下面这个判断:if (++size > threshold) resize();threshold = Capactity * LoadFActor,th
2020-07-06 21:51:33 301
转载 解决哈希冲突的四种办法
解决哈希冲突的四种办法哈希冲突的产生原因哈希是通过对数据进行再压缩,提高效率的一种解决方法。但由于通过哈希函数产生的哈希值是有限的,而数据可能比较多,导致经过哈希函数处理后仍然有不同的数据对应相同的哈希值。这时候就产生了哈希冲突。产生哈希冲突的影响因素装填因子(装填因子=数据总数 / 哈希表长)、哈希函数、处理冲突的方法解决哈希冲突的四种方法1.开放地址方法(1)线性探测按顺序决定哈希值时,如果某数据的哈希值已经存在,则在原来哈希值的基础上往后加一个单位,直至不发生哈希冲突。(2)再平
2020-07-06 11:22:53 756
转载 Entity实体类为什么要实现Serializable接口才能被序列化
疯狂面试题Entity实体类为什么要实现Serializable接口才能被序列化ObjectOutputStream 来持久化对象, 对于此处抛出的异常,查看该类中实现如下:private void writeObject0(Object obj, boolean unshared) throws IOException { // ... // remaining cases if (obj instanceof String) {
2020-07-06 09:18:00 433
转载 volatile关键字
【Java 并发笔记】volatile 相关整理内存屏障理解memory barrierJMM和JVM内存模型线程安全(中)–彻底搞懂synchronized(从偏向锁到重量级锁)理解Memory Barrier(内存屏障)...
2019-10-24 15:12:39 118
转载 可见性有序性,Happens-before来搞定
可见性有序性,Happens-before来搞定写在前面上一篇文章并发 Bug 之源有三,请睁大眼睛看清它们 谈到了可见性/原子性/有序性三个问题,这些问题通常违背我们的直觉和思考模式,也就导致了很多并发 Bug为了解决 CPU,内存,IO 的短板,增加了缓存,但这导致了可见性问题编译器/处理器擅自优化 ( Java代码在编译后会变成 Java 字节码, 字节码被类加载器加载到 JVM 里...
2019-09-19 15:36:37 185
转载 mongo
https://www.cnblogs.com/zhoujie/p/mongo1.html 聚合用法、https://www.cnblogs.com/luoaz/p/4691639.html mongo数据库集合的使用方法https://blog.csdn.net/qq_39263663/article/details/80459833 mongodb的$用法https://blog.csd...
2019-07-25 20:33:45 142
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人