- 博客(13)
- 收藏
- 关注
原创 仿RabbitMQ,实现的消息队列 (上)
这个元素,那我们消息数据文件中的无效数据是不进行处理了吗?其实不是,在后续我们会实现一个GC(垃圾回收)的方法,系统的去处理消息文件中的数据那我们"删除"消息数据的操作具体流程就是 先定义一个字节数据(大小就是offsetBeg和offsetEnd的差值),在将光标移动到offetBeg(该数据存储在文件的头),然后直接进行读取,接着解析(反序列化),将isValid的值更改以后重新写入数据文件中去,最后要记得去更新我们统计文件中的数据。
2024-09-08 16:02:27 997
原创 Spring IoC&DI
在Spring的学习中,我们知道了Spring是一个Spring的开源框架,他让我们的开发更加简单. 他支持广泛的应用场景, 有着活跃而庞大的社区, 这也是Spring能够长久不衰的原因,Spring框架中包含了很多"IoC"容器,这些IoC容器也是Spring框架的特色之一,哪么什么是IoC,Spring又使用它们做了什么呢?上面我们通过文字的描述展示了Spring和IoC之间的关系,可能会有点模糊,接下来我们通过代码例子来"深入"的介绍IoC(控制反转)中的作用。
2024-04-05 13:06:00 981 1
原创 Spring事务及其传播机制
在数据库的时候我们就接触过事物这一概念,简单说事务是一组操作的集合, 是一个不可分割的操作.事务会把所有的操作作为一个整体, 一起向数据库提交或者是撤销操作请求. 所以这组操作要么同时成功, 要么同时失败,事物出现的场景一般都为,操作两个或者多个方法是,需要这些方法要么同时进行要么同时失败.例如银行卡存取钱,我通过ATM机存取钱的时候,后端的数据系统肯定是要进行同步操作的,总不能我通过ATM机取或存了钱,但是由于事故我钱存取了,但是后端数据库却没有变化,这个时候就是"事务"的登场了.
2024-01-25 19:25:23 4777 8
原创 IP协议和NAT机制
在前面的TCP/UDP 协议的讲解中,我们是主要针对了传输层比较常用的协议进行了讲解,本章将对网络传输五元组中的网络成进行讲解,在网络层这里主流的协议就是IP协议,下文将对IP协议中的报文结构和部分特性进行讲解。
2023-09-07 16:14:47 492 1
原创 UDP和TCP协议(详解)
在简介UDP协议和TCP协议之前考虑到有些人可能网络这一块基础不是很牢固的铁子们,所以第一部分是先讲解网络编程中一些基础知识,如果有大佬已经提前了解过的话,就请直接滑到第二部分,那废话就不多说开启本篇博客啦。
2023-08-18 13:43:53 13830 14
原创 多线程代码案例(单例,阻塞队列,定时器,线程池)
本篇文章到这就该结束了,以上说明的生产模式都是在我们接下来多线程编码的时候常用的一些模式,可以有时间的话可以慢慢去品味,博主在讲解线程池这一概念的时候可能会有一点模糊,如果有这种感觉的话,随时欢迎私信一下博主(毕竟有些时候博主的表达能力有限,需要一点时间去慢慢的优化一下自身对这一块的了解),随时欢迎大伙在评论区讨论或者提出你对本篇文章的疑惑,886啦。
2023-08-04 22:39:21 333 1
原创 多线程(Java版)
在上一篇文章《进程和线程》中我们已经介绍了进程和线程的相关属性了,我们在这一篇文章进一步对线程进行学习和模拟实现多线程下的一些典型的模型(这里的时候把文章都是采用Java去实现,编译器为IDEA)。
2023-07-30 19:34:35 380 1
原创 进程和线程
每个应用程序运行于现代操作系统之上时,操作系统会提供一种抽象,好像系统上只有这个程序在运行,所有的硬件资源都被这个程序在使用。这种假象是通过抽象了一个进程的概念来完成的,进程可以说是计算机科学中最重要和最成功的概念之一。进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程;同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。
2023-07-26 17:44:24 398 1
原创 手把手带你学会二叉树(Java版)
这里我们先观察一下这个方法给的参数有哪些,一是树的根节点,二是获取点的层树,这边我们要转变一下思路嗷,这里的第k层是对于我root节点的位置来说的,假设这里的k=3,那么是对于根节点来说是在第3层,但是对于root的左右子树来说 是相对于自己是第二层,那么在对于root的左右子树的左右子树来说是不是就相当于对于自己来说是第一层----> 就是自己所在的那一行。对于深度为K的,有n 个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从0至n-1的结点一一对应时称之为完 比特就业课 全二叉树。
2023-05-20 16:49:03 1045 1
原创 搜索二叉树(Java版)
要去实现这种方法的话我们使用到两个指针(t和tp)去完成,t指针是去找到左树的最大值(或者右树的最小值)的节点,tp指针是作为找到的节点的父亲节点,当对t指针的节点进行删除操作是,我父亲节点tp要去接盘的t节点的孩子节点(没有的话就接收null一样的)在实现前我们在观察一下,把上面的两种情况一结合是不是就相当于把我cur的左树的最大值(或者右树的最小值)赋值给cur的val值,然后删除存放左树的最大值(或者右树的最小值)的节点,就完成了我的删除操作了,我们就把这一种方法叫做”替罪羊“方法。
2023-05-18 13:31:57 395
原创 Java中的抽象类和接口
这个就有点点好玩的了,我们前面说过如果一个子类继承了我们的抽象方法就必须在我们的子类里面去重写父类的抽象方法,当有意思的就来了 当我们的子类B也是抽象方法的时候就不用与重写父类中的抽象方法了, 但是但是有句话说的好 “出来混迟早是要还的”-----当我们在拿一个子类去继承C前面那个子类B的话,那么这个子类C既要重写父类的抽象方法也要与重写子类B的抽象方法。这个时候我们就要去认识一个新的语法----抽象类了,抽象类里面的语法是不需要在自己里面实现的,而当子类继承抽象类的话一定要去重写抽象类里面的方法。
2023-03-28 16:33:20 1922 4
原创 代码块,继承和多态
那我们想在子类中使用父类的东西应该怎么做呢,这里就出现了一个新的关键字了super,对我父类的成员进行访问,跟this的功能有点点像的,如果在子类定义了一个成员变量改成员变量的名字跟父类中一个成员变量的名字一样的时候,在引用这个成员变量的时候如果没有使用super.成员名的化,是默认访问的是子类的成员变量的。我们好像又发现当我们传参传不同的子类的时候它运行时绑定的结果好像不同,调用了对应的子类重写的方法-----------------------多态就出来了(多种形态)
2023-03-24 16:03:53 173 1
原创 Java中的类和对象
这里就使用了关键字this的第一个用法,在对象使用类里面定义的方法的时候,如果有关键字this的话会多传一个类似对象地址的常数(编译器在执行的时候会帮我们写),然后只要成员变量前加上this的话它就相当与给这个变量加了一个特殊的标签(就标注这个是我的成员变量) ,再有先前面那种赋值的时候编译器就不会乱了。但这里初始化的时候要注意了静态成员的初始化尽量就地初始化(就是在创建静态成员变量的时候就给他赋值),因为构造方法是属于非静态变量的,静态的东西和非静态的东西不能相互使用。其他类型都初始化为0。
2023-03-22 18:39:14 299 5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人