- 博客(20)
- 收藏
- 关注
原创 第06章_索引的数据结构
数据库在磁盘中以页为单位进行存储,一页的默认大小是从MysQL的角度讲,数据库数据都是存放在磁盘中的,读取数据库数据就是要去磁盘中读取(为什么不全部存放在内存中?查找都是索引操作,一般来说索引非常大,尤其是关系型数据库,当数据量比较大的时候,索引的大小有可能几个G甚至更多,为了减少索引在内存的占用,数据库索引是存储在外部磁盘上的。当我们利用索引查询的时候,不可能把整个索引全部加载到内存,只能逐一加载,那么MysQL衡量查询效率的标准就是磁盘l0次数),不得不考虑一个现实问题就是磁盘IO。
2022-11-08 16:03:20
231
原创 第05章_存储引擎
MySQL从3.23.34a开始就包含InnoDB存储引擎。大于等于5.5之后,默认采用InnoDB引擎;InnoDB支持事务;InnoDB支持外键;除了增加和查询外,还需要更新、删除操作,就优先选择InnoDB存储引擎;InnoDB支持行级锁,适合数据量大、高并发的数据库;.frm存储表结构,.ibd存储数据和索引;缺点:对比MyISAM的存储引擎,InnoDB写的处理效率差一些;InnoDB不仅缓存索引还要缓存真实数据,对内存要求较高。
2022-11-07 19:35:26
157
原创 面经-mysql
Mysql使用的是什么索引?为什么?从MysQL的角度讲,数据库数据都是存放在磁盘中的,读取数据库数据就是要去磁盘中读取(为什么不全部存放在内存中?查找都是索引操作,一般来说索引非常大,尤其是关系型数据库,当数据量比较大的时候,索引的大小有可能几个G甚至更多,为了减少索引在内存的占用,数据库索引是存储在外部磁盘上的。当我们利用索引查询的时候,不可能把整个索引全部加载到内存,只能逐一加载,那么MysQL衡量查询效率的标准就是磁盘l0次数),不得不考虑一个现实问题就是磁盘IO。...
2022-08-18 15:45:49
497
原创 面经-多线程
当线程池的线程数达到最大线程数时,需要执行拒绝策略。如果核心线程只剩下一个,A,B同时进行if (workerCountOf(c) < corePoolSize),但是A执行的快,创建了核心线程,但是B没来得及,线程数已经达到了corePoolSize。else if (workerCountOf(recheck) == 0)//如果线程池处在RUNNING状态,但是工作线程数为0。没有加锁,一定要考虑并发情况!//// 拿到全局锁,避免我在添加任务时,其他线程干掉线程池,因为干掉线程池需要获取到这个锁。.
2022-08-16 13:01:17
348
原创 面试-JVM
对象的实例以及数组的内存都是要在堆上进行分配的,堆是线程共享的一块区域,用来存放对象实例,也是垃圾回收(GC)的主要区域;开启逃逸分析后,某些未逃逸的对象可以通过标量替换的方式在栈中分配堆细分:新生代、老年代,对于新生代又分为:伊甸园区(、幸存一区()和幸存二区(;当虚拟机要使用一个类时,它需要读取并解析 Class 文件获取相关信息,再将信息存入到方法区。方法区会存储已被虚拟机加载的。...
2022-08-16 11:26:30
437
原创 面经-网络+操作系统
👨💻面试官你知道什么是死锁吗?🙋我:死锁描述的是这样一种情况:多个进程/线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于进程/线程被无限期地阻塞,因此程序不可能正常终止。#.........
2022-08-12 16:11:24
549
原创 shopping高级篇-1
但是依旧存在问题,假如我们设置过期时间为20s,但是查询数据库用了30s.线程A开始查询数据库,20s过去了,锁自动释放,线程B拿到锁开始查询数据库,过了10s后线程A的查询结束,redisTemplate.delete("lock");这样就会删除线程B的锁,然后线程C就会拿到锁。信号量为存储在redis中的一个数字,当这个数字大于0时,即可以调用acquire()方法增加数量,也可以调用release()方法减少数量,但是当调用release()之后小于0的话方法就会阻塞,直到数字大于0。......
2022-08-07 22:21:11
686
原创 shopping
从前慢-谷粒商城篇章1_unique_perfect的博客-优快云博客_从前慢 谷粒商城2.1安装docker(CentOS)3.2 安装mysql如何查看容器名称方式一:使用docker ps 查看方式二:在启动时我们命名的名字关于启动容器的命令说明视频链接 --name指定容器名字-v目录挂载-p指定端口映射 -e设置mysql参数-d后台运行图中的示例跟我的不一样,具体是按照上面的文本挂载的1.使用git导入项目到idea中2.到仓库中复制地址 3.粘贴 4.这样
2022-07-13 16:25:00
531
原创 RabbitMQ
在介绍RabbitMQ之前,我们先来看下面一个电商项目的场景:商品的原始数据保存在数据库中,增删改查都在数据库中完成。搜索服务数据来源是索引库(Elasticsearch),如果数据库商品发生变化,索引库数据不能及时更新。商品详情做了页面静态化处理,静态页面数据也不会随着数据库商品更新而变化。如果我们在后台修改了商品的价格,搜索页面和商品详情页显示的依然是旧的价格,这样显然不对。该如何解决? 我们可能会想到这么做:方案1:每当后台对商品做增删改操作,同时修改索引库数据及更新静态页面。方案2:搜索服务和商品
2022-06-18 21:14:58
515
原创 Nignx
Nignx的文件存放在 /usr/local/ nginxnginx 重启操作 systemctl reload nginx.service 一、Nginx的大概流程二、Nginx的配置文件worker_processes 1; 默认为1,表示开启一个业务进程worker_connections 1024; 单个业务进程可接受连接数include mime.types; 引入http mime类型,其中的mime.types文件 default_type application/octet-stream;
2022-06-05 21:53:24
179
原创 JAVA8新特性-方法引用与构造器引用
1.使用情境:当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用!2.方法引用,本质上就是Lambda表达式,而Lambda表达式作为函数式接口的实例。所以方法引用,也是函数式接口的实例。3. 使用格式: 类(或对象) :: 方法名4. 具体分为如下的三种情况:情况1 对象 :: 非静态方法情况2 类 :: 静态方法情况3 类 :: 非静态方法5. 方法引用使用的要求:要求接口中的抽象方法的形参列表和返回值类型与方法引用的方法的
2022-06-01 14:29:55
274
原创 java8新特性-lambda Expression
1.什么情况下使用 lambda表达式(或者说lambda表达式优化了之前的什么操作)——优化了匿名实现类表示2.lambda表达式的本质(或者说是使用条件 service condition)那么是什么是函数式接口呢?如果一个接口中,只声明了一个抽象方法,则此接口就称为函数式接口。我们可以在一个接口上使用 @FunctionalInterface 注解, 这样做可以检查它是否是一个函数式接口3.lambda表达式的格式lambda操作符 或 箭头操作符->左边:lambda形参列表 (其实就是接口中
2022-06-01 14:14:52
271
原创 MyBatis
MyBatis特性MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集 MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录 MyBatis 是一个 半自动的ORM(Object Relation Mapping)框架-下面有解释搭建MyBatis1.在pom.xml种将
2022-04-08 21:28:21
550
原创 SpringMVC(精简版)
一、配置文件1.引入依赖 <dependencies> <!-- SpringMVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5
2022-04-06 21:19:41
301
原创 SpringMVC(未完)
一、SpringMVC简介1、什么是MVCM:模型层(model)包括service,dao,pojoV:视图层 (view) 包括html,js等C:控制层(controller) 就是controller2、什么是SpringMVCSpringMVC 是 Spring 为表述层开发提供的一整套完备的解决方案三层架构分为表述层(或表示层)业务逻辑层...
2022-03-31 14:44:03
1868
原创 Spring5(二)AOP及其他
@Configuration//标志该文件将代替xml作为配置文件@ComponentScan(basePackages = {"com.atguigu"})//开启扫描@EnableAspectJAutoProxy(proxyTargetClass = true)//开启事务public class SpringConfig { ///创建数据库连接池 @Bean public DruidDataSource getDruidDataSource() { D.
2022-03-28 21:17:00
410
原创 关于HashMap源码
一些参数的意义:DEFAULT_INITIAL_CAPACITY : HashMap的默认容量,16DEFAULT_LOAD_FACTOR:HashMap的默认加载因子:0.75threshold:扩容的临界值 = 容量*加载因子:16 * 0.75 => 12TREEIFY_THRESHOLD:Bucket中链表长度大于该默认值,转化为红黑树:8MIN_TREEIFY_CAPACITY:桶中的Node被树化时最小的hash表容量:64TREEIFY_THRESHOLD:Bucket.
2021-11-09 21:51:49
500
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人