- 博客(99)
- 收藏
- 关注
原创 计算机网络Day03----数据链路层
数据链路层在物理层提供服务的基础上为网络层提供服务,其主要作用是,将物理层提供的可能出错的物理连接改造为,使之对网络层表现为一条无差错的链路。
2024-02-25 19:19:27
751
原创 计算机网络---物理层疑难点总结
在计算机内部或在相邻设备之间近距离传输时,可以不经过调制就在信道上直接进行的传输方式称为基带传输。它通常用于局域网。数字基带传输就是在信道中直接传输数字信号,且传输媒体的整个带宽都被基带信号占用,双向地传输信息。最简单的方法是用两个高低电平来表示二进制数字,常用的编码方法有不归零编码和曼彻斯特编码。例如,要传输1010,低电平代表0,高电平代表1,那么在基带传输下,1010需要向通信线路传输(高、低、高、低电平)。
2024-02-22 15:16:31
1364
2
原创 计算机网络--物理层练习题
QAM是一种用模拟信号传输数字数据的编码方式,曼彻斯特编码和差分曼彻斯特编码都是用数字信号传输数字数据的方式。信道不等于通信电路,一条可双向通信的电路往往包含两个信道:一个是发送信道,一条是接收信道。依据香农定理,最大数据率=Wlog2(1+S/N )=28000b/s,根据奈氏定理,最大数据传输速率=2Wlog2N=8000b/s。属于同一条虚电路的分组,根据该分组的相同虚电路标识,按照同一路由转发,保证分组的有序到达。,分组交换中要将传送的长报文分割为多个固定的有限长度的分组,因此传输时延小。
2024-02-21 23:02:09
706
原创 计算机网络Day02--物理层(一)
物理层考虑的是怎么才能在连接各种计算机的传输媒体上传输比特流,而不是具体的传输媒体作用:尽可能屏蔽掉不同传输媒体和通信手段的差异用于物流层的协议也称为物流层规程:解决计算机比特传输的问题,即透明的传输比特流,关心的是点到点的问题透明传输:指不管所传输的数据是怎么样的比特组合,都能在链路上传输要尽可能屏蔽掉不同的传输媒体和通信手段的差异铜缆:基于电平光纤:基于光脉冲无线:基于微波。
2024-02-21 18:32:29
1776
原创 第一章计算机网络体系结构疑难点总结
虽然汽车在高速公路上行驶的速率无变化, 但在同样的时间内,进入高速公路的汽车总数却增多了(每隔1 分钟进入高速公路的汽车现在增加到10辆), 因而吞吐量也就增大了。端到端通信建立在点到点通信的基础上, 它是由一段段的点到点通信信道构成的,是比点到点通信更高一级的通信方式, 以完成应用程序(进程) 之间的通信。计算机网络则与之不同,用户必须先登录欲运行程序的计算机,然后按照计算机的地址,将程序通过计算机网络传送到该计算机中运行,最后根据用户的命令将结果传送到指定的计算机中。二者的区别主要是软件的不同。
2024-02-20 21:51:11
539
原创 计算机网络Day1--计算机网络体系
采用存储转发,但解决了报文交换中大报文传输的问题,分组交换限制了每一次传送的数据块大小的上限,把大的数据块划分为合理的小数据块,再加上一些必要的控制信息构成分组。:存在一个能为用户自动管理资源的网络操作系统,它能调用用户所需要的资源,而整个网络就像一个大的计算机系统一样对用户是透明的,描述了一个分布式系统,它是未来网络发展。服务是指下层为紧密的上层提供的功能调用,它是垂直的。换言之,计算机网络的体系结构就是这个计算机网络及其所完成的功能的精确定义,它是计算机网络中的层次、各层协议及层间接口的集合。
2024-02-20 21:36:40
1633
原创 ConcurrentHashMap详解
Java 7 中的存储结构如上图,由很多个Segment组合,而每一个Segment是一个类似于HashMap的结构,所以每一个HashMap的内部可以进行扩容。但是Segment的个数一旦,默认Segment的个数是 16 个,你也可以认为默认支持最多 16 个线程并发。不难看出,ConcurrentHashMap采用了的方式,,而。为什么要用二次hash,主要原因是为了构造分离锁,使得对于map的修改不会锁住整个容器,提高并发能力。
2024-02-16 18:22:08
1244
原创 SpringBoot之delete语句的优化
当我们需要进行批量删除的时候,可以通过遍历方式执行多条SQL逐一进行删除也可以选择批量删除只进行一条SQL。
2024-01-29 23:21:42
635
原创 SpringBoot之@RequestParam注解
RequestParam (org.springframework.web.bind.annotation.RequestParam)用于将指定的请求参数赋值给方法中的形参。有三个属性:(1)value:请求参数名(必须配置)(2)required:是否必需,默认为 true,即 请求中必须包含该参数,如果没有包含,将会抛出异常(可选配置)(3)defaultValue:默认值,如果设置了该值,required 将自动设为。
2024-01-29 23:14:08
1679
原创 SpringBoot之二维码登录实现
二维码登录本质上也是一种登录认证方式。既然是登录认证,要做的也就两件事情!比如账号密码登录,账号就是告诉系统我是谁, 密码就是向系统证明我是谁;比如手机验证码登录,手机号就是告诉系统我是谁,验证码就是向系统证明我是谁;那么扫码登录是怎么做到这两件事情的呢?我们一起来考虑一下手机端应用扫 PC 端二维码,手机端确认后,账号就在 PC 端登录成功了!这里,PC 端登录的账号肯定与手机端是同一个账号。不可能手机端登录的是账号 A,而扫码登录以后,PC 端登录的是账号 B。
2024-01-28 22:33:59
1048
原创 SpringBoot中实现阿里云OSS对象存储
在业务中我们往往需要上传文件如图片,文件上传,是指将本地图片、视频、音频等文件上传到服务器上,可以供其他用户浏览或下载的过程。文件上传在项目中应用非常广泛,我们经常发抖音、发朋友圈都用到了文件上传功能。实现文件上传服务,需要有存储的支持,那么我们的解决方案将以下几种:1).定义OSS相关配置application-dev.ymlapplication.yml2). 读取OSS配置在sky-common模块中,已定义3). 生成OSS工具类对象在sky-server模块其中,AliOssUtil
2024-01-27 22:48:03
561
原创 SpringBoot AOP应用(公共字段填充)
在很多场景下,我们对需要对一些公共字段进行赋值操作,如果我们每一个公共字段都进行代码赋值那无疑会增加很多重复无用代码,都会导致我们的 代码臃肿,所以我们使用AOP切面编程,实现功能增强,来完成公共字段自动填充功能。1). 在新增数据时, 将createTime、updateTime 设置为当前时间, createUser、updateUser设置为当前登录用户ID。2). 在更新数据时, 将updateTime 设置为当前时间, updateUser设置为当前登录用户ID。
2024-01-27 22:42:35
592
原创 SpringBoot之时间数据前端显示格式化
在WebMvcConfiguration中扩展SpringMVC的消息转换器,统一对日期类型进行格式处理。在实际我们通常需要在前端显示对数据操作的时间或者最近的更新时间,如果我们只是简单的使用。但这种方式,需要在每个时间属性上都要加上该注解,使用较麻烦,不能全局处理。来传入数据不进行任何处理那么我们就会得到非常难看的数据。在属性上加上注解,对日期进行格式化。
2024-01-26 22:56:07
560
原创 SpringBoot之分页查询的使用
在业务中我们在前端总是需要展示数据,将后端得到的数据进行分页处理,通过pagehelper实现动态的分页查询,将查询页数和分页数通过前端发送到后端,后端使用pagehelper,底层是封装threadlocal得到页数和分页数并动态的拼接到sql中完成分页的查询。将封装好的需要查询的页面和页面大小传给PageHelper,由它为我们动态的拼接到SQL语句中实现分页查询的效果。controller层。
2024-01-26 22:45:54
697
原创 SpringBoot之ThreadLocal使用
在用户每一次发起请求都会在tomcat服务器请求一个新的线程,我们在生成JWT token的时候将登录的用户信息注入到threadlocal中,那么这个线程进行其他请求都会携带着用户信息,我们可以在其他功能中得到当前的登录的用户信息,比如得到当前登录的用户信息。3.在进行数据修改时需要提供当前进行修改的用户ID,使用存放在ThreadLocal中的ID,这里使用AOP完成对公共字段的填充。2.在生成JWT令牌时将登录的用户信息使用工具类存放在当前线程的ThreadLocal中。
2024-01-25 15:06:31
1556
原创 SpringBoot之JWT登录
是一个开放标准(rfc7519),它定义了一种紧凑的、自包含的方式,用于在各方之间以JSON对象安全地传输信息。3.前端接收到返回结果进行响应并将JWT保存,前端可以将返回的结果保存在localStorage(浏览器本地缓存)或sessionStorage(session缓存)上,退出登录时前端删除保存的JWT即可。4.后续前端每次请求携带JWT进行,后端检查JWT 的合法性存在验证JWT的有效性。5.验证通过后后端使用JWT中包含的用户信息进行其他逻辑操作,返回相应结果。2.登录成功后,生成jwt令牌。
2024-01-25 14:59:54
1218
原创 SpringBoot之二维码登录实现流程
二维码登录本质上也是一种登录认证方式。既然是登录认证,要做的也就两件事情!比如账号密码登录,账号就是告诉系统我是谁, 密码就是向系统证明我是谁;比如手机验证码登录,手机号就是告诉系统我是谁,验证码就是向系统证明我是谁;那么扫码登录是怎么做到这两件事情的呢?我们一起来考虑一下手机端应用扫 PC 端二维码,手机端确认后,账号就在 PC 端登录成功了!这里,PC 端登录的账号肯定与手机端是同一个账号。不可能手机端登录的是账号 A,而扫码登录以后,PC 端登录的是账号 B。
2024-01-24 10:52:10
603
原创 Java序列化
比较常用的序列化协议有 Hessian、Kryo、Protobuf、ProtoStuff,这些都是基于二进制的序列化协议。另外,Kryo 已经是一种非常成熟的序列化实现了,已经在 Twitter、Groupon、Yahoo 以及多个著名开源项目(如 Hive、Storm)中广泛的使用。Kryo 是一个高性能的序列化/反序列化工具,由于其变长存储特性并使用了字节码生成机制,拥有较高的运行速度和较小的字节码体积。Java对象是运行在JVM的堆内存中的,如果JVM停止后,它的生命也就戛然而止。
2024-01-24 10:50:46
486
原创 Java NIO
在传统的 Java I/O 模型(BIO)中,I/O 操作是以阻塞的方式进行的。也就是说,当一个线程执行一个 I/O 操作时,它会被阻塞直到操作完成。这种阻塞模型在处理多个并发连接时可能会导致性能瓶颈,因为需要为每个连接创建一个线程,而线程的创建和切换都是有开销的。为了解决这个问题,在 Java1.4 版本引入了一种新的 I/O 模型 —NIO(New IO,也称为 Non-blocking IO)。NIO 弥补了同步阻塞 I/O 的不足,它在标准 Java 代码中提供了。
2024-01-23 09:31:54
1050
原创 Java反射机制
• 在 Java 的日常应用程序开发中,类的加载几乎是由上述 3 种类加载器相互配合执行的。在必要时,我们还可以自定义类加载器,来定制类的加载方式。• 体现 Java 语言强大生命力和巨大魅力的关键因素之一便是,Java 开发者可以自定义类加载器来实现类库的动态加载,加载源可以是本地的 JAR 包,也可以是网络上的远程资源。• 同时,自定义加载器能够实现应用隔离,例如 Tomcat,Spring 等中间件和组件框架都在内部实现了自定义的加载器,并通过自定义加载器隔离不同的组件模块。
2024-01-22 15:10:36
482
原创 ZooKeeper介绍
ZAB(ZooKeeper Atomic Broadcast 原子广播) 协议是为分布式协调服务 ZooKeeper 专门设计的一种支持崩溃恢复的原子广播协议。在 ZooKeeper 中,主要依赖 ZAB 协议来实现分布式数据一致性,基于该协议,ZooKeeper 实现了一种主备模式的系统架构来保持集群中各个副本之间的数据一致性。
2024-01-22 11:03:24
1378
原创 RPC框架简介
远程过程调用(Remote Procedure Call)。RPC的目的就是让构建分布式计算(应用)更加简单,在提供强大的调用远程调用的同时不失去简单的本地调用的语义简洁性。
2024-01-21 21:31:11
764
原创 操作系统期末复习 (南昌大学)
本人一名大三学生,最近要期末考试了自己整理一下操作系统需要复习的重点希望对大家的期末复习有帮助带!!的是老师着重强调的。
2024-01-09 18:19:12
521
原创 操作系统期末重点复习 (南昌大学)
1.线代操作系统的特点和主要功能并发:指两个或多个事件在同一时间间隔内发生共享:指系统中的资源可供多个并发执行的进程使用虚拟:虚拟是指把物理上的实体变为若干逻辑上的对应物异步:多道程序环境下由于资源有限,进程的执行并不是贯彻到底的,而是走走停停,以不可预知的速度向前执行功能:a.操作系统作为计算机资源的管理者:处理机管理、存储器管理、文件管理、设备管理b.操作系统作为用户和计算机硬件系统之间的接口:命令接口(联机命令和脱机命令)、程序接口c.操作系统实现了对计算机资源的扩充a.批处理。
2024-01-08 18:23:25
980
原创 分布式数据之复制(Replication)
此外,在书中将要结束《复制》这一章时,也详细介绍了如何进行冲突的处理,这里也简单进行介绍。这里我们可以思考一个问题,为什么会发生冲突?通过阅读具体的处理手段后,我们可以尝试这样理解,
2024-01-05 16:16:32
1796
原创 MySQL之基于代价的慢查询优化建议
一条 SQL 在 MySQL 服务器中执行流程主要包含:SQL 解析、基于语法树的准备工作、优化器的逻辑变化、优化器的代价准备工作、基于代价模型的优化、进行额外的优化和运行执行计划等部分。而对于优化器来说,执行一条 SQL 有各种各样的方案可供选择,如表是否用索引、选择哪个索引、是否使用范围扫描、多表 Join 的连接顺序和子查询的执行方式等。如何从这些可选方案中选出耗时最短的方案呢?这就需要定义一个量化数值指标,这个指标就是代价 (Cost),我们分别计算出可选方案的操作耗时,从中选出最小值。
2024-01-04 21:17:07
923
原创 CompletableFuture超详解与实践
Future类是异步思想的典型运用,主要用在一些需要执行耗时任务的场景避免程序一直原地等待耗时任务执行完成,执行效率太低。具体来说是这样的:当我们执行某一耗时的任务时,可以将这个耗时任务交给一个子线程去异步执行,同时我们可以干点其他事情,不用傻傻等待耗时任务执行完成。等我们的事情干完后,我们再通过Future类获取到耗时任务的执行结果。这样一来,程序的执行效率就明显提高了。这其实就是多线程中经典的Future 模式,你可以将其看作是一种设计模式,核心思想是异步调用。
2024-01-04 18:52:38
1774
原创 Redis哨兵sentinel
哨兵巡查监控后台master主机是否故障,如果故障根据投票数自动将某一个slave库变为master,就行对外服务,称为无人值守运维。
2023-12-28 22:24:09
1173
原创 Redis管道
Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。一个请求会遵循以下步骤:1 客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果),并监听Socket返回,通常以阻塞模式等待服务端响应。2 服务端处理命令,并将结果返回给客户端。上述两步称为:Round Trip Time(简称RTT,数据包往返于两端的时间)
2023-12-28 22:22:57
610
原创 Redis事务
开启:redis以MULTI开启一个事务入队:将多个命令入队,接到这些命令并不会立刻执行,而是将它们加入到等待队列当中触发:exec命令触发事务。
2023-12-27 22:35:08
407
Javaweb+mybatis学生信息管理系统实验报告
2023-09-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人