自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 尚硅谷RabbitMQ教程笔记 二、Hello World

Hello World1 依赖2 消息生产者3 消息消费者 在本教程的这一部分中,我们将用 Java 编写两个程序。发送单个消息的生产者和接收消息并打印出来的消费者。我们将介绍 Java API 中的一些细节。 在下图中,“ P”是我们的生产者,“ C”是我们的消费者。中间的框是一个队列-RabbitMQ 代表使用者保留的消息缓冲区 1 依赖 <!--指定 jdk 编译版本--> <build> <plugins> &

2022-04-04 18:07:31 292

原创 尚硅谷RabbitMQ教程笔记 一、消息队列

消息队列1、MQ的相关概念1.1 什么时MQ1.2 为什么要用MQ1.3 MQ的分类1.4 MQ的选择2、RabbitMQ2.1 RabbitMQ的概念 1、MQ的相关概念 1.1 什么时MQ MQ(message queue),从字面意思上看,本质上是个队列,FIFO先入先出,只不过队列中存放的内容是Messahe而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了MQ之后,消息发送上游只需要依赖MQ,不需要依赖其他服务

2022-04-03 16:36:21 1018

原创 Redis学习(1)Nosql数据库

1.Nosql数据库简介 1.1 技术发展 技术分类: 解决功能性的问题:java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、svn 解决扩展性问题:Struts、Spring、SpringMvc、Hibernate、Mybatis 解决性能问题:NoSQL、Java线程、Hadoop、Nginx、MQ、ElassticSearch 1.1.1 Web1.0时代 web1.0时代,数据访问量很有限,用一夫当关的高性能的单点服务器可以解决大部分问题。 1.1.2 Web2.0时代

2022-03-21 22:20:43 1047

原创 Redis学习大纲

Redis内容大纲

2022-03-21 21:18:50 562

原创 时间复杂度

算法设计是为了解决某个问题而开发的一个数学流程,算法分析是预测算法的一个性能。 1.使用大O标记来衡量算法效率 问题:两个算法执行相同的任务(比如 查找中的线性查找和二分查找),那个算法更好呐? 我们可以实现这两个算法,并运行程序得到执行时间。这种方式存在以下两个问题: ① 首先,计算机上同时运行这许多任务,一个特定的程序的执行时间是依赖于系统负荷的。 ② 其次,执行时间以来与特定的输入。例如:线性查找和二分查找。如果要查找的元素恰好时线性表中的第一个元素,那么线性查找会比二分查找更快地找到改元素。

2021-11-13 13:29:15 60

原创 Java内存区域与内存溢出异常(上)Java内存区域。全是干活,都是重点!!!

Java内存区域与内存溢出异常1 概述2 运行时数据区域2.1 程序计数器 1 概述  对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free,不容易出现内存泄漏和内存溢出问题,看起看来由虚拟机管理内存一切都很美好。  不过,也正是因为Java程序员把控制内存的权力交给了Java虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查问题、修正问题将会成为一项异常艰难的工作。 2 运行时数据区域  根据《Java虚拟机

2021-07-26 13:23:59 80

原创 二、java设计模式之单例模式

单例模式(singleton Pattern)1. 单例模式2. 无锁的线程安全的单例模式3. 1. 单例模式  单例模式是设计设计模式中使用最为普遍的模式之一,它是一种对象创建模式。用于产生一个对象的具体实例,可以确保系统中一个类只产生一个实例。 单例模式的定义 单例模式(Singleton Pattern)是一个比较简单的模式,其定义如下: Ensure a class has only one instance, and provide a globalpoint of access to it

2021-07-05 21:22:58 98

原创 一、Java设计模式之设计原则

设计原则1.单一职责原则2.开闭原则3.里氏替换原则4.接口隔离原则5.依赖倒置原则 这里是引用 1.单一职责原则 2.开闭原则 3.里氏替换原则 4.接口隔离原则 5.依赖倒置原则

2021-06-26 23:09:19 143 2

原创 JVM学习(9)运行时数据区的总结与常见的大厂面试题说明

大厂面试题 百度 三面:说一下JVM内存模型吧,有哪些区?分别干什么的? 字节跳动 二面:Java的内存分区 二面:讲讲vm运行时数据库区 什么时候对象会进入老年代? 蚂蚁金服 Java8的内存分代改进 JVM内存分哪几个区,每个区的作用是什么? 一面:JVM内存分布/内存结构?栈和堆的区别?堆的结构?为什么两个survivor区? 二面:Eden和survior的比例分配 小米 jvm内存分区,为什么要有新生代和老年代 京东 JVM的内存结构,Eden和S..

2021-06-26 19:13:12 106

原创 JVM学习(10)对象实例化内存布局与访问定位

对象实例化内存布局与访问定位1、对象实例化2、对象内存布局3、对象的访问定位 1、对象实例化 2、对象内存布局 3、对象的访问定位

2021-06-26 13:00:13 102

原创 JVM学习(11)直接内存(Direct Memory)

直接内存(Direct Memory)一、直接内存概述 一、直接内存概述

2021-06-25 21:39:37 521

原创 JVM学习(12)执行引擎

执行引擎一、执行引擎概述二、Java代码编译和执行过程三、机器码指令汇编语言四、解释器五、JIT编译器 一、执行引擎概述 二、Java代码编译和执行过程 三、机器码指令汇编语言 四、解释器 五、JIT编译器 ...

2021-06-24 21:08:52 98

原创 Jvm学习(7)堆

堆一、堆的核心概念二、设置堆内存大小与OOM三、年轻代与老年代四、图解对象分配过程五、Minor GC、Major GC、Full GC六、堆空间分代实现七、内存分配策略八、为对象分配内存:TLAB九、小结:堆空间的参数设置十、堆是分配对象的唯一选择吗? 一、堆的核心概念 二、设置堆内存大小与OOM 三、年轻代与老年代 四、图解对象分配过程 五、Minor GC、Major GC、Full GC 六、堆空间分代实现 七、内存分配策略 八、为对象分配内存:TLAB 九、小结:堆空间的参数设置 十、堆是分配对象

2021-05-23 20:23:38 269

原创 SpringBoot2核心技术-基础入门 02、SpringBoot2入门

SpringBoot2入门02、SpringBoot2入门1、系统要求1.1、maven设置2、HelloWorld2.1、 确定idea中配置的是我们配置过的maven2.2、 创建Maven工程2.3、引入依赖2.4、 创建主程序2.5、 编写业务逻辑2.6、 测试2.7、 简化配置2.8、 简化部署 02、SpringBoot2入门 1、系统要求 Java8 & 兼容 Java14 Maven 3.3+ idea 2020.3.4 1.1、maven设置 本地仓库位置修改:在标签内添加自

2021-05-16 00:38:25 169

原创 SpringBoot2核心技术-基础入门 01、Spring与SpringBoot

Spring与SpringBoot01 Spring与SpringBoot1、Spring能做什么1.1、Spring的能力1.2、Spring生态圈:1.3、Spring5重大升级1.3.1、响应式编程1.3.2、内部源码设计2、为什么用SpringBoot2.1、SpringBoot优点2.2、SpringBoot缺点3、时代背景3.1、微服务3.2、分布式3.3、云原生4、如何学习SpringBoot4.1、官方文档架构 环境要求: 01 Spring与SpringBoot 1、Spring能做什么

2021-05-15 22:54:38 334

原创 Jvm学习(6)本地方法栈

本地方法接口

2021-05-06 21:19:44 211 2

原创 Jvm学习(5)Java虚拟机栈

Java虚拟机栈一、虚拟机栈概述二、栈的存储单位三、局部变量表四、操作处栈五、代码追踪六、栈顶缓存技术七、动态链接八、方法的调用:解析和分派九、方法返回地址十、一些附加信息十一、栈的相关面试题 一、虚拟机栈概述 二、栈的存储单位 三、局部变量表 四、操作处栈 五、代码追踪 六、栈顶缓存技术 七、动态链接 八、方法的调用:解析和分派 九、方法返回地址 十、一些附加信息 十一、栈的相关面试题 ...

2021-05-06 19:34:18 85

原创 Redis——七、五大常用数据类型-Zset

Redis中Zset的介绍、常用命令和对应的数据结构

2021-04-29 23:11:39 302

原创 Redis——六、五大常用数据类型-Hash

1 简介 Redis hash 是一个键值对集合。 Redis hash是一个string类型的field和value的映射表, hash特别适合用于存储对象。 类似Java里面的Map<String,Object> 用户ID为查找的key,存储的value用户对象包含姓名,年龄,生日等信息,如果用普通的key/value结构来存储 主要有以下2种存储方式: 每次修改用户的某个属性需要,先反序列化改好后再序列化回去。开销较大。 用户ID数据冗余 通过 key(用户ID) + field(

2021-04-29 22:38:44 244

原创 Redis——五、五大常用数据类型-Set

1 简介   Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。   Redis的Set是string类型的无序集合。它底层其实是一个value为null的hash表,所以添加,删除,查找的复杂度都是O(1)。   一个算法,随着数据的增加,执行时间的长短,如果是O(1),数据增加,查找数据的时

2021-04-29 21:40:43 388

原创 Redis——四、五大常用数据类型-List

Redis列表(List) 1 简介 单键多值 Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。 它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差 2 常用命令 从左边/右边插入一个值或多个值 lpush/rpush <key1><value1> <key2><value2> …… 从左边/右边吐出一个值。值在键在,值光键亡。 lpop/rpop

2021-04-28 22:30:15 315

原创 Redis——三、五大常用数据类型-String

1、Redis介绍相关知识 手机上数字键6379和Merz所在的按键是一致的。 可以使用select 【0~15】来切换数据库。 单线程+多路IO复用

2021-04-28 22:04:04 131

原创 Redis——二、Redis概述和安装

Redis是一个开源的key-value的存储系统。 和Memcached类似,它支持的value类型相对更多:string(字符串)、list(链表)、set(集合)、zset(有序集合)、hash(哈希类型)。 这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作。而且这些操作都是原子性的。 在此基础上,Redis支持各种不同方式的排序。 与Memcached一样,为了保证效率,数据都是缓存在内存中。 Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的.

2021-04-21 23:44:20 96

原创 Redis——一、Nosql数据库简介

1.技术发展 技术的分类: 解决功能性的问题:Java、Jsp、RDBMS 解决扩展性的问题:Spring、SpringMVC、Mybatis 解决性能的问题:NoSQL、Java线程、Hadoop、Nginx、MQ、ES Web1.0时代 单体架构: web2.0 解决CPU和内存压力 解决IO压力 2.NoSQL数据库 3.行式存储数据库 4.图关系型数据库 5.数据库排名 ...

2021-04-20 23:15:13 144

原创 Jvm学习(4)程序计数器(PC寄存器)

程序计数器(PC寄存器)一、PC 寄存器介绍二、举例说明三.两个常见面试题 一、PC 寄存器介绍 JVM中的程序计数寄存器(Program Counter Register),Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。 这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。 它是一块很小的内存

2021-04-06 13:47:59 69

原创 Jvm学习(3)运行时数据区概述及线程

运行时数据区概述及线程一、前言二、运行时数据区结构2.1 运行时数据区与内存2.2 线程的内存空间三、线程3.1 JVM线程3.2 JVM系统线程 一、前言 本节主要讲的是运行时数据区,也就是下图这部分,它是在类加载完成后的阶段 当我们通过前面的:类的加载 --> 验证 --> 准备 --> 解析 -->初始化,这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们的运行时数据区 二、运行时数据区结构 2.1 运行时数据区与内存 内存 内

2021-04-06 11:54:56 55

原创 JVM学习(2)JVM类加载子系统

JVM类加载子系统 一、内存结构概述 Jvm内存结构模型简图 Jvm内存结构模型详细图 假设我们想自己手写一个Java虚拟机的话,必须考虑哪些结构 类加载器 执行引擎 二、类加载器与类加载过程 2.1类加载子系统的作用 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。 ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。 加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,

2021-04-06 04:44:15 64

原创 JVM学习(1)JVM与Java体系结构

尚硅谷牛逼!!! 一、前言 二、面向人群及参考书目 三、Java及JVM简介 Java流行度排名第一的语言。 世界上没有最好的语言,只有最合适的语言。 Java虚拟机是Java平台的基石。 如果说Java是跨平台的语言,那么Jvm是跨语言的平台。 Java不是最好的语言,但是Java 虚拟机是最好的虚拟机。 IT的三大难题 cpu 操作系统 虚拟机 四、Java发展的重大事件 五、虚拟机与Java虚拟机 六、JVM的整体结构 七、Java代码执..

2021-04-05 20:35:28 58

原创 Java多线程

一、基本概念:程序、进程、线程 1、基本概念 程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。 进程(process)是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。——生命周期 如:运行中的QQ,运行中的MP3播放器 程序是静态的,进程是动态的 进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域。 线程(thread),进程可进一步细化为线程,是一个程序内部的一条执行路径。 

2021-03-30 22:34:05 54

空空如也

空空如也

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

TA关注的人

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