自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 问答 (2)
  • 收藏
  • 关注

原创 rocketMq总结

当发送事务消息时会发送消息到一个专门的事务队列中,如果commit了就然后再发送到目标队列中,如果时rollback就直接删除消息,普通队列再发送给消费者,,如果commit或者rollback失败了向程序进行本地事务检查(回调函数),如果成功提交事务,失败回滚。要求发送消息就是有顺序的,通过selector来选择单一队列来接受消息,不然无法实现,消费者需要单一消费者消费,可以通过加锁实现,或者单线程(不推荐)开启ack机制,当出现保存失败的时候,需要返回失败值。使用异步发送需要用回调函数得到结果。

2024-04-26 15:29:05 156

原创 RabbitMq总结

消息的可靠性需要保证开启消息持久化,不然宕机消息就丢失了,首先是生产者发送消息的可靠性,mq要保证每一条消息都进行ack应答,而客户端收到了ack应答才继续发送,否则超时重试,当然需要设计接口的幂等性,对于消费者,要消费消息之后进行反馈,当mq收到反馈之后才删除消息。将消息发送到一个单独的事务队列,再从事务队列发送到消费者可消费的队列,若出现问题则回滚,若没有问题则删除事务队列中的消息。rabbitmq由消费者,生产者,交换机,队列,bindingkey组成,交换机存在三种,分别对应广播,单播,多播。

2024-04-26 14:55:51 434 1

原创 netty使用踩坑

会导致无法写出,并且不会报错,原因不知道,希望有人能解释一下。

2024-04-11 11:45:52 87

原创 netty的使用

netty的使用模型基本上是通过这样的方式来运行,主要操作是在handler加入更加多的handler来处理输入输出的参数。

2024-04-11 10:40:13 149

原创 NIO简介

channel为双向输入输出通道,buffer为缓存,selector为选择器,通过selector来选择线程对出现io操作的channel服务,可有有效的增加线程的工作效率,不用等待某个连接断开才释放线程。可以通过这样的方式填充多个buffer,abc为三个buffer对象。同理也可以使用put和write读出写入channel。buffer读数据有write和get。buffer写入数据可以使用。

2024-04-09 15:15:32 376

原创 java的aop实现方式

这种方法会直接修改编译完成的class文件,不需要依赖springboot。

2024-04-09 11:40:06 369

原创 分代GC算法解读,垃圾回收器

Serial是一种单线程串行回收年轻代的垃圾回收器,单cpu下吞吐量优秀,适用于java编写的客户端(使用复制算法)除了G1其他的需要搭配使用(上下一一对应)其他搭配关系在jdk14后都已废弃,jdk14还废弃了CMS。Serial Old是一种单线程串行回收old区,单cpu下吞吐量优秀,使用标记整理算法。2.可以选择不同的垃圾回收算法,老年代一般选择标记清除算法或标记整理算法。old区:Serial Old,CMC,Parallel Old。3.分代设计允许只回收Young区,可以有效见效stw。

2023-12-18 19:34:30 359

原创 Java垃圾回收算法

1.创建的对象会放在eden区,当新创建的对象无法放入则触发Young GC会将eden中和from(s0)中需要回收的对象清除,把没有回收的对象放入to(s1)(复制算法)将内存分为young和old两部分,old内存放存活时间较长对象,young分为eden区和survivor区,survivor区可分为两块此处代称s0,s1。1.准备from和to两部分空间,每次对象分配阶段只能使用一个(from)缺点:碎片化,分配速度慢(因为碎片多,通过链表维护)1.标记阶段:将所有对象标记(可达性分析可达目标)

2023-12-18 19:32:59 384

原创 垃圾回收机制评价

java的垃圾回收机制通过GC线程实现,无论使用什么算法,都会有部分时间停止用户线程。这个过程为STW,若过长,会影响用户使用。一般堆内存越大,最大暂停时间越长,要降低最多暂停时间,会降低吞吐量。1.吞吐量,用户使用时间占总时间比例。垃圾回收算法的评价标准。

2023-12-18 19:31:01 429

原创 政府信息化与电子政务(2)

政府信息化与电子政务A2B A对B服务(A是发起方)

2023-12-15 19:48:25 346

原创 堆上判断对象能否回收两种方式

2.系统类加载器加载的java.lang.Class对象。1.每次引用都会维护计数器,堆性能有损耗。2.存在循环引用问题(内存泄漏)4.本地方法调用时使用的全局对象。1.线程(thread)对象。gc Root对象分类。

2023-12-15 15:59:24 430

原创 系统分析师企业信息化战略

信息,信息化系统的应用层次分类,数据环境分类企业战略规划 :企业总体和长远目标信息系统战略规划:信息系统支撑业务流程的运作信息技术战略规划:堆支撑信息系统运行的硬件,软件,支撑环境等进行具体的规划信息资源规划:数据需求分析,信息资源标准建立,信息资源整合企业战略(全局规划)–BITA/EITA—>企业信息化战略(具体)

2023-12-14 16:05:16 366

原创 内存自动回收

注:可以通过赋值为null来满足回收条件,System.gc()可以发送垃圾回收请求。内存泄漏:不再使用的变量未回收,积累可能导致内存溢出(最后程序异常终止)c/c++需要手动回收(delete)不再使用变量,优点:降低程序员实现难度,降低对象回收bug的可能,1.所有对象都以回收,堆中不存在实列和子类实列。方法区的回收 :指类的回收,其他的不需要回收。java中存在自动回收,主要负责堆上的回收。缺点:无法控制内存回收的及时性。3.Class字节码不被引用。

2023-12-14 16:00:10 347

原创 简述java方法区和字符串常量池

java中使用+来合成两个变量时,本质上是使用一个空StringBuilder对象通过调用append方法合成,最后通过toString方法,最后转换为String类型。从jdk8开始方法去被拿出,单独分配内存,jdk8相较于7具有更加大的极限容量。存放类的元信息(InstanceKlass对象),类加载阶段完成。jdk8中可以通过-XX:MaxMetaspaceSize设置。运行时的常量池,每一个常量池都可以通过内存访问。字符串常量池 存放常量(如“123")如果是常量则直接从常量池中取出。

2023-12-13 17:16:36 338

原创 jvm的堆栈

jvm的堆栈内存解析

2023-12-13 11:18:02 368 1

原创 mybatis解析原理

mybatis作用原理

2023-12-12 17:19:18 418 1

原创 jvm打破类双亲委派机制

当两个类的全限定名相同时,就不可以同时加载,入tomcat运行两个web服务时就会出现冲突(相同类名),不够tomcat通过为每一个应用分配一个应用类加载器,打破双亲委派机制。自定义实现(1)类继承ClassLoader类,重写loadClass方法(2)loadClass中获取被加载类数据(loadClassData)(3)调用defineClass完成类加载。

2023-12-10 20:58:22 1066 1

原创 jvm类加载器

java实现extension拓展加载器(通过参数配置但会覆盖原目录,两个都要指定,分号分隔(推荐),或放入文件夹拓展(不推荐)),Application应用程序类加载器(maven配置和其余类加载)底层实现bootstrap加载java核心类比如String等(无法获取,只能通过参数配置(推荐),或放入jre/lib拓展(不推荐))1.类加载过程会从右向左委派查找(检查有无加载),再从左向右的尝试加载。classLoader主要使用java编写,部分使用c++编写。类加载要求:1.安全。

2023-12-09 14:43:00 324

原创 类的生命周期

加载:类加载器获取二进制信息(本地,动态代理,网络传输)放入方法区(虚拟概念)生成InstanceKlass对象保存类信息类,同时堆中也会存放一份,并且相互关联,方法区是使用c++处理的结果,堆区是使用java包装后的结果,同时堆区的内容的内容更少(为了安全,减少访问范围),省略一些无法操作的数据,jdk8之后会将静态字段存放入堆区。类加载的生命周期有加载 ->连接->初始化->使用->销毁。

2023-12-08 16:31:52 354

原创 jvm解析i++,++i

i ++ 和 ++i的区别在于把操作数放入局部变量表的时机,++i会立刻把i放入局部变量,i ++会在操作开始取出局部变量到操作数栈,++会将局部变量加一,++ i会先把局部变量加一再取出放入操作数栈,所以从jvm角度可以分析出,i = 0,i= i++结果i = 0,i = 0,i= ++i,结果为1。

2023-12-07 20:04:53 354 1

原创 jvm常量存储

jvm常量存储

2023-12-07 19:52:49 324 1

原创 aop增强匹配方式

aop切面处理

2023-12-06 19:36:16 313 1

原创 spring中的动态代理

spring中的动态代理

2023-12-05 19:45:04 405

原创 关于宿主机无法访问虚拟机的docker

本次为了查看如何访问,在CSDN上看到了许多的使用route的方法,结果没什么用。实际上,使用指令 ip addr查看指令,使用2和3的inet加上端口号即可访问。

2023-10-07 20:55:33 153 1

原创 mybatis-plus踩坑记录

今天在写mybatis-plus的时候发现构造的函数得不到返回值,数据库中间的查询有结果,返回值为null原因是未关闭yml文件中的下划线转驼峰,导致不能正确的映射到实体类中。

2023-10-03 21:05:58 20

原创 两种小数的表示

定点小数的最大值值为1-2^(-n)

2023-09-21 19:26:02 21 1

原创 数据检验码

CRC循环冗余码简介

2023-09-21 19:12:16 27 1

原创 重载和重写

重载要求方法名一样,重写要求都一样

2023-06-14 19:14:54 23

原创 java自定义类创建数组

java自定义类创建数组

2023-06-08 15:26:26 302

原创 字节流FileInputStream和FileOutputStream

【代码】字节流FileInputStream和FileOutputStream。

2023-05-06 22:05:32 56

原创 java中的synchronized用法

synchronized使用

2023-04-25 08:31:31 118 1

原创 java中的多进程的两种实现方式

这是第二种方式,通过对于Runable接口的实现再创建一个变量,最后通过接口的方式来运行(此处可以看接口的相关知识),这种方式最终也是通过run和start0来实现多进程。这是第一种,通过继承的方式实现多线程,start是创建进程的方法,start会调用run方法,再调用start0。两种方式分别是对于Thread的继承和对于Runable接口的实现。下面是相关的两种使用方法。

2023-04-24 20:40:16 674 2

原创 java构造器中的super和this

java中的构造器中super是用来对于父类中的构造器进行调用的,this是对于本类中的其他构造器进行调用,或者调用对应的元素,this调用其他构造器需要放在构造器的第一行,super也需要放在第一行,这也造成super不能和this一起调用构造器。在父类中定义构造器之后,父类中的默认无参构造器将不能使用,此时下图中的cc类中如果将构造器中的super和对应的参数删除,也会报错。在java中,子类的构造器是默认带有一个super()的,所有才会有前面的报错。

2023-04-22 18:05:51 111 1

原创 关于JAVA的List的常规方法

四五六与1,2,3效果相同,不过可以同时操作对个元素,同时在java中,这些操作在许多的地方都有相同的操作。java的list中主要使用的方法有。

2023-04-17 15:13:57 39 1

空空如也

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

TA关注的人

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