自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 资源 (7)
  • 收藏
  • 关注

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

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 553

原创 《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 615

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

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

2025-03-23 15:16:34 967

原创 手把手教你搭建基于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 842

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

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

2025-03-21 17:51:30 977

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

如果不会,才将资源分配给它,否则让进程等待。③ 系统先假定可为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 879

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

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

2025-03-11 18:02:07 1039

原创 RabbitMQ 从入门到精通

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

2025-03-09 16:00:13 1482

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

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

2025-03-08 00:34:10 944

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

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

2025-03-07 22:12:17 1363

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

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

2025-03-07 15:35:32 1284

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

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

2025-03-04 20:08:12 997

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

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

2025-03-04 12:09:36 1335

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

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

2025-03-03 21:45:02 1155 1

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

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

2025-03-03 16:42:31 1017

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

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

2025-03-02 21:30:03 1305

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

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

2025-03-02 17:35:00 1149

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

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

2025-02-28 19:20:32 793

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

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

2025-02-28 17:31:23 1157

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

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

2025-02-26 12:37:55 847

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

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

2025-02-24 23:35:14 768

原创 Java 代理模式

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

2025-02-24 23:06:48 1046

原创 Java 序列化

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

2025-02-24 20:45:55 912

原创 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 768

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

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

2025-02-21 22:46:04 1039

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

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

2025-02-21 21:28:34 950

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

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

2025-02-21 16:30:06 620

原创 Java 内存区域详解

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

2025-02-21 15:46:40 1247

原创 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 1038

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

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

2025-02-20 18:42:29 662

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

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

2025-02-19 21:36:35 737

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

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

2025-02-19 21:22:28 991

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

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

2025-02-19 20:53:11 1129

原创 手把手教你定位常见Java性能问题

性能优化一向是后端服务优化的重点,但是线上性能故障问题不是经常出现,或者受限于业务产品,根本就没办法出现性能问题,包括笔者自己遇到的性能问题也不多,所以为了提前储备知识,当出现问题的时候不会手忙脚乱,我们本篇文章来模拟下常见的几个Java性能故障,来学习怎么去分析和定位。

2025-02-19 19:31:56 637

原创 Java基础(基础篇)

封装:隐藏对象的内部实现细节,通过对象提供的接口与外界交互。继承:允许新的类从现有的类中派生,继承父类的属性和方法,实现代码的复用和扩展。多态:允许以统一的方式处理不同类型的对象,这些对象可以通过继承关系关联起来,多态性增强了代码的灵活性和可扩展性。抽象:将复杂系统的共性问题抽象出来,形成抽象类或接口,提供统一的操作界面,隐藏具体的实现细节。

2025-02-18 18:21:07 559

原创 多线程:synchronized关键字详解

实际上,在多线程环境中,难免会出现多个线程对一个对象的实例变量进行同时访问和操作,如果编程处理不当,会产生脏读现象。我们先来看一个简单的线程安全问题的例子!count++;@Overridej++) {// 初始化数据实体//使用多线程编程对数据进行计算i < 10;i++) {try {多次运行结果如下:第一次运行:result: 9788554第二次运行:result: 9861461第三次运行:result: 6412249...

2025-02-14 08:53:07 683

原创 课程《创新与企业管理》项目计划书--智亲APP

市场细分是指营销者通过市场调研,依据消费者的需要和欲望、购买行为和购买习惯的差异,把某一产品的市场,整体划分为若干消费者群的市场分类过程。每一个消费者群就是一个细分市场,每个细分市场都是具有类似需求倾向的消费者构成的群体,形象的说市场就像一块蛋糕,某一产品的市场就是这块蛋糕。我们从消费者市场的四个角度分别进行分析:地理细分、人口统计细分、行为细分、心理细分。3.1.1.2地理细分:一、地理区域地理区域可以大致划分为东部、中部和西部。

2025-02-13 04:55:03 929

原创 软件工程完整大型课设--《颐养中心系统》 三级项目报告

前端使用vscode开发。(简称VS Code)是一款免费、跨平台的源代码编辑器,由微软开发。它具有丰富的功能和扩展性,适用于多种编程语言和开发环境。VS Code支持智能代码补全、调试功能、版本控制集成等,提供直观的用户界面和快捷操作,方便开发者进行代码编写和调试工作。其强大的扩展生态系统使开发者能够根据需要自定义编辑器,并与其他工具和服务集成。VS Code因其轻量、高效和可扩展的特性,成为了许多开发者首选的代码编辑器。

2025-02-13 04:40:34 896

原创 JavaWeb 三级项目《成绩管理系统》报告

在开发过程中遇到的最主要的问题还是语言功底和ajax,jquery技术掌握不熟练,但是该项目好就好在,一旦写完了一个代码,另外的功能可以进行仿写,框架不变。学生管理、学生查询、教师管理、课程管理、成绩管理、成绩查询、退出登录等功能按钮放在同一级ul标签下,点击将会跳转到对应的主体部分,写在HTML文件上,对应的样式由css实现,具体代码将会在下一节展示。服务端作为后端,接收客户端发送过来的请求(通过参数),并进行逻辑处理,判断数据库内有没有前端想要的东西,并返回信息, 通过servlet实现。

2025-02-13 04:02:57 774

原创 算法设计与分析三级项目--管道铺设系统

并且在本项目中,我们仅仅应用在了本校西校区的管道铺设上面,未来,我们将考虑将该项目拓展成一个通用的项目,能够处理不同地点的数据,增加项目的可用性。本项目中,我们使用的是C++代码开发以及easyx图形库进行图形展示,相比于成熟的Java以及百度地图api而言太过简陋,有着很大的改进空间,通过改进界面设计、增加交互功能和展示更详细的信息,我们将进一步提升系统的易用性和实用性,使用户能够更直观地理解和操作系统,从而更好地应用于实际工程项目中。系统展示了最佳铺设方案,包括各建筑物之间的连接路径以及管道总长度。

2025-02-06 00:35:23 1389

算法设计与分析三级项目-管道铺设系统 各个点的距离.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关注的人

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