自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RabbitMQ

作用:消费端把消息处理结果ACK,NACK,Reject等返回给Broker之后,Broker需要对对应的消息执行后续操作,例如删除消息、重新排队或标记为死信等等。那么Broker就必须知道它现在要操作的消息具体是哪一条。而deliverTag作为消息的唯一标识就很好的满足了这个需求。并且deliverTag在Borker范围内是唯一的。

2024-07-04 20:03:02 225

原创 RabbitMQ数据丢失问题以及解决方案

使用手动应答机制,当开启手动应答开启后,如果消费者服务端消费消息失败,给rabbitMQ返回一个nack信息,同时将消息恢复为待消费状态,消息会重新入队,等待消费端消费。:因为使用默认的自动应答机制,会导致消费者在接收到消息后返回给rabbitMQ一个ack信息,消息队列接收到ack信息后,会在队列中删除消息。:如果使用了默认的自动应答机制,当消费者服务器堆积了大量的未消费的数据的时候,可能会造成消费者服务器宕机,导致消息没有被成功消费。:当RabbitMQ宕机时,队列和队列中的数据都会丢失。

2024-07-04 19:07:09 322

原创 Redis数据类型底层结构

redis中的shting是由三种编码类型组成。在不同情况下会进行自动切换。string的底层结构是一个动态字符串(SDS),在数据编码是embstr和raw的时候底层使用的都是SDS。当存储的字符串的为纯整数是采用int,当存储的字符串的长度小于44时采用embstr,大于44采用raw。Redis为什么重新设计一个SDS数据结构?C语言没有Java里面的String类型,只能是靠自己的char[]来实现,字符串在C语言中的存储方式,想要获取字符串的长度,需要从头开始遍历,直到遇到'\0'为止。

2024-06-27 22:06:50 622

原创 Redis中常用的数据类型及常用指令

string是redis最基本的类型,一个key对应一个 value。string类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象,但是储存有最大的限制,最大单元是512MB.常用指令:set :添加一组kv数据(如果key已经存在则是覆盖)get :获取key对应的valueappend :在value原有的基础上进行追加操作。

2024-06-25 20:57:39 485

原创 数据库——事务

事务是数据库中一组最小的运行单元。其他不管包含了多少SQL语句都具备要么一起成功,要么一起失败的特点。

2024-03-27 19:01:17 166

原创 Java反射详解

JVM在该阶段的主要目的是将字节码从不同的数据源(可能是class文件、也可能是jar包甚至是网络)转化为二进制字节流加载到内存中,并生成一个代表该类的java.lang.Class对象。3.参数值为true表示反射的对象在使用时取消访问检查,提高反射的效率。优点:可以动态的创建和使用对象(也是框架底层核心),使用灵活,没有反射机制,框架技术就失去底层支撑。2.动态加载:运行时加载需要的类,如果运行时不用该类,即使不存在该类也不会报错,降低了依赖性。2.当子类被加载时,父类也加载--静态加载。

2024-03-09 19:57:18 779

原创 hashcode

注意:此代码中一共存在6中生成策略。以IDEA为例在安装包的bin目录下的idea64.exe.vmoptions文件。此种策略底层使用的是Park-Miller RNG随机生成策略。在JDK的cpp文件中存在一个get_next_hash()函数用于生成Java中所有对象的hashCode值。把此对象的内存地址赋值给hashcode。但是可以修改JDK默认的配置使hashcode等于内存地址(但是没必要)hashcode是为了快速找到此对象的一个标识。内存地址是对象在堆空间中的位置。

2024-03-08 20:53:28 384

原创 Java实例化对象的内存使用情况

类的各种信息(类中的方法)都存储在方法区中。7.如果还是没有判断老年代中的老年区是否有空间,有把存活区中的活跃对象转移到老年代中,将Eden区的活跃对象转移到存活区。5.如果gc清理后判断内存依然不足,那就判断存活区是否有内存,把Eden中活跃对象转移到存活区中。创建多个对象会在堆中产生多个对象的内存空间,但是多个对象指向的方法是同一个(就是方法区中的方法)静态变量,常量,类信息(构造方法,接口定义)存放在方法区中。每个线程都包含了一个栈区,栈区中只保存基本数据类型的值和对象的引用以及基本数据类型的引用。

2024-03-08 20:52:08 409

原创 JDBC技术statement和preparedstament的使用

获取列的信息:getMetadata():ResultsetMetaData对象 包含的就是列的信息。获取列的数据:get类型(int 列的下角标 从1开始 | int 列的label(别名或列名)④创建preparedstatement语句并且传入sql语句结构。2.preparedstatement使用步骤。方案一:调用静态方法,但是会注册两次。1.statement使用步骤。⑥发送sql语句,并且获取结果。④发送sql语句,并返回结果。5.发送sql语句获取结果。③创建发送sql语句对象。

2024-03-03 16:00:05 487

原创 MySQL约束

给某个字段/某列指定默认值,一旦设置默认值,在插入数据时,如果此字段没有显式赋值,则赋值 为默认值。说明:删除主键约束,不需要指定主键名,因为一个表只有一个主键,删除主键约束后,非空还存在。注意:可以通过 show index from 表名称;比如:员工表的员工所在部门的选择,必须在部门表能找到对应的部分。作用:检查某个字段的值是否符号xx要求,一般指的是值的范围。:用来限制某个字段/某列的值不能重复。:限定某个字段/某列的值不允许为空。限定某个表的某个字段的引用完整性。用来唯一标识表中的一行记录。

2024-01-28 09:45:00 779

原创 MySQL创建表和管理表

加上了IF NOT EXISTS关键字,则表示:如果当前数据库中不存在要创建的数据表,则创建数据表;IF EXISTS 的含义为:如果当前数据库中存在相应的数据表,则删除数据表;如果当前数据库中不存。如果当前数据库中已经存在要创建的数据表,则忽略建表语句,不再创建数据表。如果MySQL中已经存在相关的数据库,则忽略创建语句,不再创建数据库。方式三:判断数据库是否已经存在,不存在则创建数据库(推荐)在相应的数据表,则忽略删除语句,不再执行删除数据表的操作。修改表指的是修改数据库中已经存在的数据表的结构。

2024-01-27 22:51:45 843

原创 SQL的执行原理

首先在 SELECT 阶段会提取想要的字段,然后在 DISTINCT 阶段过滤掉重复的行,分别得到中间的虚拟表。最后在 vt6 的基础上,取出指定行的记录,也就是 LIMIT 阶段 ,得到最终的结果,对应的是虚拟表。2. 通过 ON 进行筛选,在虚拟表 vt1-1 的基础上进行筛选,得到虚拟表 vt1-2;当然如果我们操作的是两张以上的表,还会重复上面的步骤,直到所有表都被处理完为止。当然我们在写 SELECT 语句的时候,不一定存在所有的关键字,相应的阶段就会省略。到是我们的原始数据。

2024-01-27 22:50:58 328

原创 MySQL5.7版本命令行操作sql出现乱码报错

如果是以上配置就说明对了。接着我们就可以新创建数据库、新创建数据表,接着添加包含中文的。如果遗忘修改默认的编码,就会出现乱码的问题。等高级文本编辑器,使用记事本等软件打开修改后可能会。,从而避免了上述的乱码问题。的编码,从而服务重启失败。网站开发人员在数据库设计。开始,数据库的默认编码改为。注意:建议修改配置文件使用。的时候往往会将编码修改为。版本之前,默认字符集为。

2023-12-26 21:11:02 75

原创 安装MySQL8.2版本详细步骤

在mysql官网上下载mysql8.2安装包。下载完成之后解压,打开安装程序。选择Custom自定义安装。设置root账号密码。

2023-12-26 19:51:24 590

原创 File类和IO流

对象的序列化机制允许把内存中的java对象转换成与平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点。public File[ ] listFiles():返回一个File数组,表示该File目录中的所有子文件或目录。public String[ ] list():返回一个String数组,表示该File目录中的所有子文件或目录。DataInputStream:可以将文件中保存的数据还原为内存中的基本数据类型的变量、String类型的变量。

2023-12-21 21:46:05 24

原创 Java集合超详解

Java集合可以分为Collection和Map两种体系java.util.Collection:单列数据,定义了存取一组对象的方法的集合------------子接口:List:存储有序的、可重复的数据--------------ArrayList(主要实现类)、LinkedList、Voctor------------子接口:Set:存储无序的、不可重复的数据--------------HashSet(主要实现类)、LinkedHashSet、TreeSet。

2023-12-20 21:17:42 61

原创 Java的多态性

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法,使程序有良好的拓展,并可以所有的类的对象进行通用处理。多态是同一个行为具有多个不同表现形式或形态的能力。多态的优点: 1.消除类型之间的耦合性。以上代码输出结果为;

2023-12-10 18:33:42 25

原创 JAVA中abstract关键字用法

3.子类必须重写父类的所有抽象方法之后方可实例化,否则,此子类仍为抽象。3.抽象类中是包含构造器的,因为子类对象实例化时,需要直接或间接地调用。4.抽象类中可以没有抽象方法,反之,抽象方法所在的类一定是抽象类。2.抽象方法只有方法的声明,没有方法体。abstract修饰方法:1.此方法为抽象方法。1.私有方法private,私有方法不能被重写。abstract修饰类:1.此类为抽象类。2.静态方法,避免静态方法使用类进行调用。3.final的方法,不能被重写。4.final的类,不能有子类。

2023-12-08 19:28:58 25

原创 文档注释(利用javadoc工具)

Java程序员在开发中都会有查阅 API(Application Programming Interface)文档的需求,那么你是否也想给自己的代码生成一份“说明书呢”文档注释内容可以被JDK提供的工具javadoc所解析,是java特有的,生成一套以网页文件形式体现的该程序的说明文档。在D:\javaTest\javaDemo\javaDemo01\src\com\tedu路径下新建一个txt文档,将会在当前文件夹中生成一个myDoc文件夹,打开后找到index.html。

2023-12-05 17:49:05 51

原创 通过反射调用指定的结构:指定的属性、方法、构造器

invoke()的返回值即为Method对应的方法的返回值,如果Method对应的方法的返回值为void,则invoke()返回值为null。步骤3:通过Method实例调用invoke(Object obj,Object ... objs),即为对Method对应的方法的调用。步骤1:通过Class的实例调用getDeclaredConstructor(Class .. args),获取指定参数类型的构造器。步骤2:setAccessible(true),确保此属性是可以访问的。

2023-11-30 17:15:03 33

原创 获取运行时类的父类的泛型

【代码】获取运行时类的父类的泛型。

2023-11-30 17:14:27 64

空空如也

空空如也

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

TA关注的人

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