- 博客(147)
- 资源 (2)
- 收藏
- 关注
原创 面向对象思想理论
抽象类:(is-a)抽象类不允许被实例化,只能被继承抽象类可以包含属性和方法,且可以包含代码实现,也可以不包含代码实现,不包含代码实现的方法叫做抽象方法子类继承抽象类,必须实现抽象类中的所有抽象方法。接口类:(has-a)接口不能包含属性(也就是成员变量)接口只能声明方法,方法不能包含代码实现类实现接口的时候,必须实现接口中声明的所有方法。
2022-12-02 16:30:06
915
原创 RabbitMQ高级特性
但是,使用自动确认时,根据定义没有这样的限制。如果设置了手动确认方式,则需要在业务处理成功后,调用channel.basicAck(),手动签收,如果出现异常,则调用channel.basicNack()方法,让其自动重新发送消息。根据所使用的确认模式,RabbitMQ 可以认为消息在发送出去(写入 TCP 套接字)或收到显式(“手动”)客户端确认后立即成功传递。其中自动确认是指,当消息一旦被Consumer接收到,则自动确认收到,并将相应 message 从 RabbitMQ 的消息缓存中移除。...
2022-08-28 18:43:29
763
原创 RabbitMQ-个人笔记
RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用非常广泛
2022-08-27 21:21:20
878
原创 IO模型个人理解
IO模型五种: 同步阻塞 I/O、同步非阻塞 I/O、I/O 多路复用、信号驱动 I/O 和异步 I/O。阻塞和非阻塞区别、同步和异步区间。零拷贝
2022-08-12 20:17:49
594
原创 对象内存布局和synchronized锁升级
偏向锁适用于单线程适用的情况,在不存在锁竞争的时候进入同步方法/代码块则使用偏向锁。轻量级锁适用于竞争较不激烈的情况(这和乐观锁的使用范围类似),存在竞争时升级为轻量级锁,轻量级锁采用的是自旋锁,如果同步方法/代码块执行时间很短的话,采用轻量级锁虽然会占用cpu资源但是相对比使用重量级锁还是更高效。重量级锁适用于竞争激烈的情况,如果同步方法/代码块执行时间很长,那么使用轻量级锁自旋带来的性能消耗就比使用重量级锁更严重,这时候就需要升级为重量级锁。...
2022-07-16 22:37:15
182
原创 lambda表达式和Stream
Lambda是JDK8中一个语法糖。他可以对某些匿名内部类的写法进行简化。它是函数式编程思想的一个重要体现。让我们不用关注是什么对象。而是更关注我们对数据进行了什么操作。例一:在创建线程并启动时可以使用匿名内部类的写法:可以将其转换为Lambda格式例二:现有方法定义如下,其中IntPredicate是一个接口。先使用匿名内部类的写法调用该方法。lambda写法:1.3 省略规则参数类型可以省略方法体只有一句代码时大括号return和唯一一句代码的分号可以省略方法只有一个参数时小括号可
2022-07-08 23:54:53
622
原创 ThreadLocal原理
一个ThreadLocal对象只属于一个Thread,创建的变量也就是在本线程内,所以这个添加的变量只有自己才可以访问到。
2022-06-26 18:36:33
844
原创 雪花算法简介
雪花算法生成ID长度为64bit第1 位 为0第2- 42 位 时间戳第43 - 47 机器ID第48 - 52 服务id第 53 - 64位 序号
2022-06-22 19:54:13
2207
原创 垃圾回收器
经典垃圾回收器:SerialGC、Serial Old GC、ParNew GC、 Parallel scavenge GC、Parallerl Old GC、CMS、G1
2022-06-20 11:24:45
1487
原创 StringTable
String字符串,不可变,无论是拼接还是改变,都会重新new一个String对象。String对象存在缓冲池,叫做字符串常量池,jdk6以前在元空间,jdk7后在堆空间。
2022-06-13 11:40:11
411
原创 执行引擎-(编译器、JIT)
执行引擎是JVM核心组成之一,由于操作系统只能识别机器指令,想要在机器上执行程序,不管什么语言最终都需要转换成机器指令。JVM中的执行引擎主要将字节码指令转换为机器指令并执行执行引擎的工作流程:Java代码的编译器有两种,一种是前端编译器,一种是后端编译器前端编译器,如javac,即将java文件编译成class文件:后端编译器,即将class文件中的字节码指令编译成本地机器指令:默认情况下,HotSpot VM采用解释器与JIT编译器并存的架构,开发者可以通过参数设置完全使用解释器,还是完全使用JIT
2022-06-08 21:59:14
948
原创 对象的实例化和访问
对象实例化的步骤1.判断对象对应的类是否加载、链接、初始化 2.为对象分配内存 3.处理并发安全问题 4.默认初始化 5.设置对象的对象头 6.显式初始化对象的内存布局:堆中的对象由对象头+实例数据+对齐填充 组成对象头由类型指针和运行时元数据(哈希值 + GC分代年龄 + 锁状态标志 + 线程持有锁 + 偏向线程ID + 偏向时间戳)组成...
2022-06-08 13:10:41
297
原创 运行时常量区-方法区
《Java虚拟机规范》明确提出:尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择实现。对HotSpotJVM而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是要和堆分开,为此方法区可以看成一块独立的内存。方法区包含了类型信息,常量,静态变量,JIT代码缓存。...
2022-06-07 17:10:55
769
原创 运行时数据区-堆
堆分为年轻代、老年代、(永久代或元空间)。年轻代和老年代的大小默认是1:2年轻代又分为(Eden区,s0区、s1区),这三个的大小默认是8:1:1在HotSpot中,对象只会在堆中分配,并未实现真正的栈上分配,而是默认是标量替换。...
2022-06-06 18:57:09
243
1
原创 运行时数据区-本地方法栈
本地方法就是一个Java调用非Java代码的接口。且本地方法和本地方法接口都不在运行时数据区。使用native修饰的方法就称为本地方法。
2022-06-05 09:31:42
135
原创 运行时数据区-虚拟机栈
由于JVM的跨平台的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。JVM中栈管运行,堆管存储每个线程在创建时都会创建一个虚拟机栈,该虚拟机栈是线程私有的,生命周期和线程一致, 其内部保存一个个的栈帧(Stack Frame),对应一次次的Java方法调用...
2022-06-04 21:43:19
154
原创 运行时数据区——程序计数器
JVM中的程序计数寄存器是线程私有的,它的生命周期伴随着整个线程PC寄存器用来存储指向下一条指令的地址,即将要执行的指令代码。由存储引擎读取下一条指令。
2022-06-04 19:39:28
321
原创 关于DataOutputStream类的writeUTF的异常
对于字符串的发送,就是一个切分思想,先发头部,再发真正的数据。我们既然把消息已经发过去了,那么也就需要完整的将数据接收过来分片发送,自然就要接收片段,将其整合到一起。
2022-06-01 20:24:36
1039
原创 SpringBoot——3.web开发
1.静态资源在SpringBoot的官方文档中,默认的静态资源存放路径为:/static 、 /public 、 /resources /META-INF/resources,这些文件路径都存在与类路径下,即classpath.并且,默认情况下,资源的映射路径为/**,但我们可以通过application.yaml或application.properties文件设置spring.mvc.static-path-pattern的值,如/res/**来访问静态资源。1.1 使用springBoot的
2022-05-19 09:56:14
340
原创 SpringBoot——2.自动装配&&实用工具&&yaml
文章目录1.自动装配1.1 @Configuration、@Bean1.2 @ComponentScan、@import1.3 @Conditional1.4 @ImportResource1.5 @ConfigurationProperties1.6 配置小结2.实用工具2.1 Lombok2.2 Developer-Tools2.3 Spring Initializr3. yaml配置文件4.1 yaml使用4.2 数据类型4.3 yaml文件自动提示1.自动装配1.1 @Configuration
2022-05-14 12:31:00
640
原创 SpringBoot——1.Hello Boot
文章目录1.SpringBoot简介2.如何学习SpringBoot3.Hello,Spring-boot3.1 环境设置3.2 搭建Maven工程3.3 创建SpringBoot启动类3.4 创建SpringBoot业务代码3.6 启动Spring—Boot4.补充4.1 包扫描4.2 配置文件4.3 简化部署1.SpringBoot简介SpringBoot是一项整合Spring生态圈所有的一套框架,通过SpringBoot可以快速搭建web项目,微服务项目,分布式项目等,并且SpringBoot解决
2022-05-13 20:04:14
452
原创 MySQL-高级-13MVCC-多版本并发控制
文章目录1.什么是MVCC2.快照读与当前读2.1 快照读2.2 当前读3.复习3.1 再谈隔离级别3.2 隐藏字段、Undo Log版本链4. MVCC实现原理之ReadView4.1 什么是ReadView4.2 设计思路4.3 ReadView的规则4.4 MVCC整体操作流程5. 举例说明5.1 READ COMMITTED隔离级别下5.2 REPEATABLE READ隔离级别下5.3 如何解决幻读6.总结1.什么是MVCCMVCC (Multiversion Concurrency Cont
2022-05-12 11:14:28
461
原创 二叉树的层序遍历
感谢carl,感谢代码随想录对于二叉树来说,有深度遍历优先和广度遍历优先,深度遍历可以使用栈的方式进行,而广度优先遍历更符合队列。1.题目引出力扣题目链接给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。层序遍历二叉树,就是从左到右一层层的去遍历二叉树。我们可以使用一个辅助队列来完成。队列先进先出,符合一层一层遍历的逻辑,而是用栈先进后出适合模拟深度优先遍历也就是递归的逻辑。public void doQueue(List<List&.
2022-05-09 21:22:50
303
原创 MySQL-高级-11 mysql事务日志
文章目录1.redo日志1.1为什么需要REDO日志1.2 REDO日志的好处、特点1.3 redo的组成1.4 redo的整体流程1.5 redo log的刷盘策略1.6 不同刷盘策略演示1.7 写入redo log buffer过程1.7.1 补充概念:Mini—Transaction1.7.2 redo日志写入log buffer1.7.3 redo log block的结构图1.8 redo log file1.8.1 相关参数设置1.8.2 日志文件组1.8.3 checkPoint1.8 red
2022-05-09 21:07:00
542
原创 二叉树——二叉树的递归和非递归遍历方法
文章目录1.递归遍历2.非迭代遍历3.二叉树的统一迭代法二叉树的遍历方法分为前序遍历,中序遍历,后续遍历,层序遍历。1.递归遍历对于递归,就不得不说递归三要素:以前序遍历为例递归入参参数和返回值因为要打印出前序遍历节点的数值,所以参数里需要传入List在放节点的数值,除了这一点就不需要在处理什么数据了也不需要有返回值,所以递归函数返回类型就是void,代码如下:public void preorder(TreeNode root, List<Integer> result)
2022-05-08 23:20:24
102
原创 MySQL-高级-10 数据库的设计规范
文章目录1.为什么需要数据库设计2.范式2.1 范式简介2.2 范式都包括哪些2.3 键和相关属性的概念2.4 第一范式(1st NF)2.5 第二范式(2st NF)2.6 第三范式(3st NF)2.7 小结3.反范式化3.1 概述3.2 应用举例3.3 反范式的新问题3.4 反范式的适用场景4.BCNF(巴斯范式)5.实战案例5.1 迭代1次:考虑1NF5.2 迭代2次:考虑2NF5.3 迭代3次:考虑3NF6.ER模型6.1 ER 模型包括那些要素?6.2 关系的类型7. 数据库表的设计原则8. 数
2022-05-07 22:50:42
839
原创 MySQL-高级-9 索引优化及查询优化
文章目录1.索引失效案例1.1 全值匹配我最爱1.2 最佳左前缀法则1.3 主键插入顺序1.4 计算、函数、类型转换(自动或手动)导致索引失效1.5 范围条件右边的列索引失效1.6 不等于(!= 或者 <>)失效1.7 is null可以使用索引,is not null 无法使用索引1.8 like以通配符%开头索引失效1.9 OR前后存在非索引的列,索引失效1.10 数据库和表的字符集统一使用utf8mb42.关联查询优化2.1 Index Nested-Loop Join(索引嵌套循环连接)
2022-05-06 20:54:10
1169
原创 MySQL-高级-8 性能工具的使用
文章目录1. 数据库服务器的优化步骤2.查看系统性能参数3.统计SQL的查询成本:last_query_cost4.定位执行慢的SQL:慢查询日志4.1 开启慢查询日志参数4.2 查看慢查询数目4.3 慢查询日志分析工具:mysqldumpslow4.4 关闭慢查询日志5.查看SQL执行成本:SHOW PROFILE6.分析查询语句:EXPLAIN6.1 基本语法6.2 EXPLAIN各列作用6.2.1 table6.2.2 id6.2.3 select_type6.2.4 partitions6.2.5
2022-05-05 23:26:18
1087
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人