自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 计算机操作系统临考知识点与习题

硬实时任务:系统必须满足任务对截止时间的要求,否则可能出现难以预测的后果;软实时任务:对截止时间有要求,但不严格,若偶尔错过了任务的截止时间对系统产生的影响也不会太大。

2025-05-06 15:12:18 529

原创 鸢尾花数据集K-means聚类实验

通过PySpark实现K-means算法,探索不同聚类数(k=1,2,3)对鸢尾花数据集的聚类效果,验证算法性能与数据分布特性。spark.sparkContext.setLogLevel("ERROR") # 仅显示错误日志。distanceMeasure="cosine", # 改用余弦距离。initMode="random", # 尝试不同初始化策略。k=1时手动生成全0标签(规避Spark限制)科研场景:选择k=3(更符合生物学分类)工程场景:选择k=2(更高的簇内一致性)

2025-04-22 11:07:05 950

原创 燕山大学计算机网络之Java实现TCP数据包结构设计与收发

本项目基于Java语言设计并实现了一套完整的TCP数据包构造、发送与接收系统,旨在深入解析TCP协议的核心机制及其可靠性保障原理。通过模块化开发方法,系统实现了TCP头部结构定义、校验和计算、单向通信等基础功能,并进一步扩展了三次握手连接管理、序列号随机化、动态窗口流量控制等关键协议特性。项目采用Socket编程与自定义协议栈相结合的技术路线,在数据链路层模拟了TCP/IP协议栈的交互流程,并通过Wireshark抓包验证了协议字段的完整性与准确性。

2025-04-17 21:16:17 815

原创 分布式协议:Gossip协议

在分布式系统中,不同节点进行数据&信息共享是一个基本的需求。一种比较简单粗暴的方法就是集中式发散消息,简单点来说就是一个主节点同时共享最新信息给其他所有节点,比较适合中心化系统。这种方法的缺陷也很明显,节点多的时候不光同步消息的效率低,还太依赖中心节点,存在单点风险问题。Gossip直译过来就是闲话、流言蜚语的意思。即容易被传播且传播速度快。Gossip协议也叫Epidemic协议(流行病协议)或者Epidemic propagation算法(疫情传播算法)。

2025-04-06 17:47:36 1000

原创 Linux主要开发工具之gcc、gdb与make

1.4 动态链接库与静态链接库Linux下库文件的命名有一个约定,所有的库名都以lib开头。形如:lib。

2025-04-06 17:21:25 608

原创 Linux文本编辑与shell程序设计

作为命令解释程序一种高级程序设计语言,它有变量,关键字,有各种控制语句,如ifcasewhilefor等语句,支持函数模块,有自己的语法结构shell特点:☆组合新命令 ☆提供了文件名扩展字符☆直接使用shell的内置命令☆灵活地使用数据流☆结构化的程序模块☆在后台执行命令☆可配置的环境☆高级的命令语言shell种类:(简称sh(简称csh(简称ksh即bash)

2025-04-06 15:40:15 827

原创 Linux基础知识详解与命令大全(超详细)

这个启动管理程序的目的是加载(load)操作系统的核心文件,由于启动管理程序是操作系统在安装的时候所提供的,所以他会认识硬盘内的文件系统格式,因此就能够读取核心文件,然后接下来就是核心文件的工作,启动管理程序也功成圆满,之后就是大家所知道的操作系统的任务。命令将会修改指定文件的时间标签,把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来。是很重要的,因为当系统在启动的时候会主动去读取这个区块的内容,这样系统才会知道你的程序放在哪里且该如何进行启动。

2025-04-06 04:41:27 1177

原创 燕山大学计算机网络实验(包括实验指导书)

1.了解网络命令的基本功能2.掌握基本网络命令的使用方法3.掌握使用网络命令观察网络状态的方法1.安装 TCP/IP。2.手动配置TCP/IP参数。3.使用ipconfig命令来测试TCP/IP是否安装成功。4.使用ping命令来验证。5.学习tracert、 netstat、 arp、net等命令的功能及使用方法1.安装 TCP/IP。图1-1TCP/IP。

2025-04-05 22:37:59 1126

原创 《Linux应用技术》实验报告

依赖关系图的理解:假设当前工程目录为prj/,该目录下有6个文件,分别是:main.c、abc.c、xyz.c、abc.h、xyz.h和Makefile。其中main.c包含头文件abc.h和xyz.h,abc.c包含头文件abc.h,xyz.c包含头文件xyz.h,而abc.h又包含了xyz.h。

2025-04-01 10:53:14 658

原创 分布式算法:Paxos & Raft 两种共识算法

Paxos算法是第一个被证明完备的分布式系统共识算法。共识算法的作用是让分布式系统中的多个节点之间对某个提案(Proposal)达成一致的看法。提案的含义在分布式系统中十分宽泛,像哪一个节点是Leader节点、多个事件发生的顺序等等都可以是一个提案。Basic-Paxos算法:描述的是多节点之间如何就某个值(提案Value)达成共识。Multi-Paxos算法:描述的是执行多个Basic Paxos实例,就一系列值达成共识。

2025-03-23 15:16:34 1043

原创 手把手教你搭建基于Hexo+GitHub的个人博客网站

快来搭建属于你自己的博客网站吧。Hexo(外网,架梯子会快些)什么是Hexo?Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用Markdown(或其他标记语言)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。前提要求?Node.js(Node.js 版本需不低于 10.13,建议使用 Node.js 12.0 及以上版本)Git1验证npm与node安装成功:2 验证git安装成功:3注册一个GutHub账号并完成邮箱验证在完成上述内容的安装后安装Hexo。

2025-03-22 22:30:42 912

原创 分布式理论:CAP&BASE理论

CAP也就是Consistency(一致性)、Availability(可用性)、Partition Tolenrance(分区容错性)这三个单词首字母组合。在理论计算机科学中,CAP定理(CAP theorem)指出对于一个分布式系统来说,当涉及读写操作时,只能同时满足C、A、P三点中的两点:(而且一定是CP或者是AP,没有CA情况)一致性(C):所有节点访问同一份最新的数据副本可用性(A):非故障的节点在合理的时间内返回合理的响应(不是错误的或者超时的响应)。

2025-03-21 17:51:30 1009

原创 避免死锁--银行家算法详解

如果不会,才将资源分配给它,否则让进程等待。③ 系统先假定可为P0分配资源,并修改Available,Allocation0,Need0向量,根据公式可得Available=[2,0,5,1,0],Need0=[0,0,2,1,0],Allocation0=[1,2,1,1,2],修改P0的这三个值;我们首先先将表格补充完整,已知各种资源的数量,那只需用[5,6,8,6,4]减去所有对应进程号的Allocation的和[2,6,3,5,3]就可以得到Available的值为[3,0,5,1,1]。

2025-03-11 19:02:04 944

原创 处理机调度算法大全(最详细!含进程、作业、实时调度算法)

在上述三种调度中,进程调度的运行频率最高,在分时系统中通常仅10ms~100ms便进行一次进程调度,因此把它称作为短程调度。为避免调度本身占用太多的CPU时间,不宜使进程调度算法太复杂。作业调度往往是发生在一批作业 已运行完毕并退出系统,又需要重新调入一批作业进入内存时,作业调度的周期较长,大概几分钟一次,因此把它称为长程调度。由于其运行频率较低,故允许作业调度算法花费较多的时间。中级调度的运行频率基本上介于上述两种调度之间,因此把它称为中程调度。

2025-03-11 18:02:07 1275

原创 RabbitMQ 从入门到精通

消息中间件基于队列模型实现异步/同步传输数据作用:可以实现支撑高并发、异步解耦、流量削峰、降低耦合度。

2025-03-09 16:00:13 1548

原创 MyBatis-Plus (超详细 Spring版)

MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。在Spring整合MyBatis中加入了后,我们就可以使用所提供的BaseMapper实现CRUD,并不需要编写映射文件以及SQL语句但是若要自定义SQL语句,仍然可以编写映射文件而不造成任何影响因为只做增强,而不做改变/*** 根据年龄查询用户列表,分页显示。

2025-03-08 00:34:10 1014

原创 MyBatis-Plus (超详细! Spring Boot 版 )

(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。提供了通用的Mapper和Service,可以在不编写任何SQL语句的前提下,快速的实现单表的增删改查(CURD),批量,逻辑删除,分页等操作。只要把MyBatis-Plus的特性到优秀插件,以及多数据源的配置进行详细讲解。/*** 根据年龄查询用户列表,分页显示。

2025-03-07 22:12:17 1857

原创 MySQL 索引 (超详细 面试重点!)

索引是一种用于快速查询和检索数据的数据结构,其本质可以看成是一种排序好的数据结构。索引的作用就相当于书的目录。打个比方:我们在查字典的时候,如果没有目录,那我们就只能一页一页的去查我们需要的那个字,如果有目录就直接按照目录翻到那一页就行。索引的底层数据结构存在很多种类型,常见的有:B树,B+树和Hash、红黑树。在MySQL中,无论是Innodb还是MyIsam,都使用了B+树作为索引结构。BTree索引:MySQL里默认和最常用的索引类型。只有叶子结点存储value,非叶子结点只有指针和Key。

2025-03-07 15:35:32 1324

原创 布隆过滤器(附带位图讲解)

布隆过滤器(Bloom Filter,BF)是Bloom 于 1970 年提出。我们可以把它看作由二进制向量(或者说位数组)和一系列随机映射函数(哈希函数)两部分组成的数据结构。相比于我们平时常用的 List、Map、Set 等数据结构,它占用空间更少并且效率更高,但是缺点是其返回的结果是概率性的,而不是非常准确的。理论情况下添加到集合中的元素越多,误报的可能性就越大。并且,存放在布隆过滤器的数据不容易删除。

2025-03-04 20:08:12 1012

原创 Zookeeper 及 基于ZooKeeper实现的分布式锁

ZooKeeper是一个开源的分布式协调服务,它的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。原语:操作系统或计算机网络用语范畴。是由若干条指令组成的,用于完成一定功能的一个过程。具有不可分割性,即原语的执行必须是连续的,在执行过程中不允许被中断。

2025-03-04 12:09:36 1355

原创 TCP 连接故障排查与 SYN 洪泛攻击防御

从物理层(网卡错误)→ 网络层(路由/防火墙)→ 传输层(TCP参数)→ 应用层(协议设计)逐层排查。

2025-03-03 21:45:02 1252 4

原创 从DNS到TCP:DNS解析流程和浏览器输入域名访问流程

在生活中我们会经常遇到域名,比如说CSDN的域名www.csdn.net,百度的域名www.baidu.com,我们也会碰到IP,现在目前有的是IPV4,IPV6。那这两个有什么区别呢?IP地址是互联网上计算机唯一的逻辑地址,通过IP地址实现不同计算机之间的相互通信,每台联网的计算机都需要通过IP地址来互相联系和分别。但是由于IP地址是由一串容易混淆且很难记忆的数字串构成,这对我我们日常生活访问不同网站是很困难的。

2025-03-03 16:42:31 1097

原创 Java 并发容器(含 ConcurrentHashMap、CopyOnWriteArrayList、ConcurrentLinkedQueue、BlockingQueue等)

JDK提供的这些容器大部分在包中。线程安全的 HashMap线程安全的 List,在读多写少的场合性能非常好,远远好于 Vector.高效的并发队列,使用链表实现。可以看做一个线程安全的 LinkedList,这是一个非阻塞队列。这是一个接口,JDK 内部通过链表、数组等方式实现了这个接口。表示阻塞队列,非常适合用于作为数据共享的通道。跳表的实现。这是一个 Map,使用跳表的数据结构进行快速查找。在很多应用场景中,读操作可能会远远大于写操作。

2025-03-02 21:30:03 1321

原创 数据结构秘籍(四) 堆 (详细包含用途、分类、存储、操作等)

插入元素:先将元素放置到元素末尾,再自底向上堆化,使末尾元素上浮。删除堆顶元素:将末尾元素放置堆顶,再自顶向下堆化,将堆顶元素下沉。也可以自底向上堆化,只是会产生空缺,浪费存储空间。最好采用自顶向下的堆化方式。

2025-03-02 17:35:00 1168

原创 数据结构秘籍(三)树 (含二叉树的分类、存储和定义)

根结点的序号为1,对于每个结点Node,假设它存储在数组中下标为i的位置,那么它的左子结点就存储在2i的位置,它的右子结点就存储在下标为2i+1的位置。二叉树的第i层最多拥有2的(n-1)次方个结点,深度为k的二叉树至多有2^(k+1)-1个结点(满二叉树),至少有2的n次方个结点,这里面的k为深度。二叉树的先序遍历是先输出根结点,再遍历左子树,最后遍历右子树,遍历右子树和左子树的时候同样 遵循先序遍历的规则,也就是说,我们可以递归实现先序遍历。并且,二叉树的分支具有左右次序,不能随意颠倒。

2025-02-28 19:20:32 812

原创 数据结构秘籍(二)图(含图的概念、存储以及图的两大搜索)

对于一个关系,如果我们既关心关系的有无,也关心关系的强度,比如某某某的好感度,你对人家好感度百分百,人家对你好感度百分之零(一个悲伤的故事),那么就可以用带权图来表示,带权图中每一条边用一个数值表示权值,代表关系的强度。边表示的是顶点之间的关系,有的关系是双向的,比如同学,A是B的同学,那么B也肯定是A的同学,那么在表示A和B的关系时,就不用关注方向,用不带箭头的边表示,这样的图就是无向图。在无向图中,邻接表元素个数等于边的条数的两倍,如左图所示的无向图中,边的条数为7,邻接表存储的元素个数为14。

2025-02-28 17:31:23 1169

原创 数据结构秘籍(一)线性数据结构(数组、链表、栈、队列一次看完)

链表(LinkedList)虽然是一种线性表,但是并不会按线性的顺序存储数据,使用的不是连续的内存空间来存储数据。链表的插入和删除操作的复杂度为O(1),只需要知道目标位置元素的上一个元素即可。但是,在查找一个节点或者访问特定位置的节点的时候复杂度为O(n).使用链表结构可以克服数组需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但链表不会节省空间,相比于数组会占用更多的空间,因为链表中每个节点存放的还有指向其他节点的指针。除此之外,链表不具有数组随机读取的优点。

2025-02-26 12:37:55 865

原创 Java并发 乐观锁和悲观锁

悲观锁总是假设最坏的情况,认为共享资源每次被访问的时候就会出现问题(比如共享数据被修改),所以每次在获取资源操作的时候都会上锁,这样其他线程想拿到这个资源就会阻塞直到锁被上一个持有者释放。也就是说,共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程。像Java 中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。// 需要同步的操作try {// 需要同步的操作。

2025-02-24 23:35:14 786

原创 Java 代理模式

在Java 动态代理机制中接口和Proxy类是核心。Proxy,这个方法主要用来生成一个代理对象。Class<?......loader:类加载器,用于加载代理对象。interfaces: 被代理类实现的一些接口;h: 实现了接口的对象;要实现动态代理的话,还必须要实现 InvocationHandler 来自定义处理逻辑。当我们的动态代理对象调用一个方法时,这个方法的调用就会被转发到实现InvocationHandler 接口类的invoke方法来调用。/**

2025-02-24 23:06:48 1050

原创 Java 序列化

如果我们需要持久化Java对象比如说将Java对象保存在文件中,或者在网络传输Java对象,这些场景都需要序列化。简单来说序列化:将数据结构或者对象转换成可以存储或传输的形式,通常是二进制字节流,也可以是JSON,XML等文本格式反序列化:将在序列化过程中所生成的数据转换为原始数据结构或者对象的过程。

2025-02-24 20:45:55 919

原创 Java 值传递

在 swap()方法中,a、b的值进行交换,并不会影响到num1 、num2。因为,a、b的值,只是从num1、num2的复制过来的。也就是说,a、b相当于num1、num2的副本,副本的内容无论怎么修改都不会影响到原件本身。因此,person1和person2的互换只是拷贝的两个地址的互换罢了,并不会影响到实参xiaoZhang和xiaoLi。也就是说change方法的超参数拷贝的是arr(实参)的地址,因此,它和arr指向的是同一个数组对象。这里的传递的还是值,不过,这个值是实参的地址罢了。

2025-02-24 00:02:52 780

原创 深入解析JVM垃圾回收机制

大部分情况,对象都会首先在 Eden 区域分配,在一次新生代垃圾回收后,如果对象还存活,则会进入 s0 或者 s1,并且对象的年龄还会加 1(Eden 区->Survivor 区后对象的初始年龄变为 1),当它的年龄增加到一定程度(默认为 15 岁),就会被晋升到老年代中。):“Hotspot 遍历所有对象时,按照年龄从小到大对其所占用的大小进行累积,当累积的某个年龄大小超过了 survivor 区的一半时,取这个年龄和 MaxTenuringThreshold 中更小的一个值,作为新的晋升年龄阈值”。

2025-02-21 22:46:04 1060

原创 JVM之JDK内置故障排查工具深度解析

VisualVM(All-in-One Java Troubleshooting Tool)是到目前为止随 JDK 发布的功能最强大的运行监视和故障处理程序,官方在 VisualVM 的软件说明中写上了“All-in-One”的描述字样,预示着他除了运行监视、故障处理外,还提供了很多其他方面的功能,如性能分析(Profiling)。生成线程快照的目的主要是定位线程长时间出现停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的原因。:输出对应名称的参数的具体值。

2025-02-21 21:28:34 957

原创 数据库存储时间(虽然短,但内容扎实!)

这样一来,我只需要一个数值,就可以完美地表示时间了,而且这个数值是一个绝对数值,即无论的身处地球的任何角落,这个表示时间的时间戳,都是一样的,生成的数值都是一样的,并且没有时区的概念,所以在系统的中时间的传输中,都不需要进行额外的转换了,只有在显示给用户的时候,才转换为字符串格式的本地时间。这种存储方式的具有 Timestamp 类型的所具有一些优点,并且使用它的进行日期排序以及对比等操作的效率会更高,跨系统也很方便,毕竟只是存放的数值。这种存储日期的方式的优点还是有的,就是简单直白,容易上手。

2025-02-21 16:30:06 656

原创 Java 内存区域详解

对于Java程序员来说,在虚拟自动内存管理机制下,不再需要像C/C++程序开发程序员这样为每一个new操作去写对应的delete/free操作,不容易出现内存泄漏和内存溢出问题。正是因为Java程序员把内存控制的权力交给Java虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会是一个非常艰巨的任务。

2025-02-21 15:46:40 1269

原创 Java 枚举

这篇文章由 JavaGuide 翻译,公众号: JavaGuide,原文地址:https://www.baeldung.com/a-guide-to-java-enums 。在本文中,我们将看到什么是 Java 枚举,它们解决了哪些问题以及如何在实践中使用 Java 枚举实现一些设计模式。enum关键字在 java5 中引入,表示一种特殊类型的类,其总是继承java.lang.Enum类,更多内容可以自行查看其官方文档。枚举在很多时候会和常量拿来对比,可能因为本身我们大量实际使用枚举的地方就是为了替代常量。

2025-02-20 23:24:34 1047

原创 SQL语句大全(超细致 !查这一篇就够了!)

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。视图具有表结构文件,但不存在数据文件。对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。

2025-02-20 18:42:29 724

原创 Java集合之ConcurrentHashMap(含源码 超详细)

Java7 中 ConcruuentHashMap 使用的分段锁,也就是每一个 Segment 上同时只有一个线程可以操作,每一个 Segment 都是一个类似 HashMap 数组的结构,它可以扩容,它的冲突会转化为链表。但是 Segment 的个数一但初始化就不能改变。Java8 中的 ConcruuentHashMap 使用的 Synchronized 锁加 CAS 的机制。结构也由 Java7 中的Segment 数组 + HashEntry 数组 + 链表进化成了。

2025-02-19 21:36:35 875

原创 Java集合之HashMap(含源码解析 超详细)

上文讲解了ArrayList,这次我们来看HashMapHashMap 主要用来存放键值对,它基于哈希表的Map接口实现,是常用的Java集合之一。

2025-02-19 21:22:28 1146

原创 Java集合之ArrayList(含源码解析 超详细)

ArrayList的底层是数组队列,相当于动态数组。与Java中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapacity操作来增加ArrayList实例的容量。这可以减少递增式再分配的数量。ArrayList继承于AbstructList,实现了List,RandomAccess,Cloneable,Java.io.Serializable这些接口。RandomAccess是一个标志接口,表明实现这个接口的List集合是支持快速随机访问的。

2025-02-19 20:53:11 1313

算法设计与分析三级项目-管道铺设系统 各个点的距离.txt 可执行文件.exe

算法设计与分析三级项目-管道铺设系统 各个点的距离.txt

2025-02-06

算法设计与分析三级项目-管道铺设系统 各个点的距离.txt

算法设计与分析三级项目-管道铺设系统 各个点的距离.txt

2025-02-06

最新编译原理课设报告递归下降LL(1)语法分析程序(java完整版)

最新编译原理课设报告递归下降LL(1)语法分析程序(java完整版)

2025-01-19

完整SSM整合项目(含增删改查)详解

完整SSM整合项目(含增删改查)详解

2024-11-15

IntelliJ IDEA不同类型的Java项目创建指南

IntelliJ IDEA不同类型的Java项目创建指南

2024-10-24

IDEA环境中Maven项目的创建与配置方法

IDEA环境中Maven项目的创建与配置方法

2024-10-24

Idea使用教程 和 Idea创建项目的搭建方式

Idea使用教程 和 Idea创建项目的搭建方式

2024-08-21

空空如也

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

TA关注的人

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