- 博客(46)
- 收藏
- 关注
原创 WEB面试题
行内元素和块级元素行内元素不会独占一行,高度和宽度由内容决定,不能单独设置宽高,不能设置上下的margin和padding,只能设置左右的margin和padding;行内元素:a、span、sub、sup、br、strong、b、em、i、label块级元素会独占一行,高度和宽度可以单独设置,可以设置上下左右的margin和padding;块级元素:div、ul、dl、ol、li、table、h1-h6、p、form、hr行内块元素: 、、
2024-03-04 21:06:53 679
原创 二叉树,二叉搜索树
二叉搜索树(Binary Search Tree,BST)是一种特殊的二叉树数据结构,其设计目的是为了支持高效的查找、插入和删除操作。在二叉搜索树中,每个节点都具有以下性质:节点值的排序性:节点的左子树(如果存在)包含的所有节点的值都小于该节点的值。节点的右子树(如果存在)包含的所有节点的值都大于该节点的值。递归定义:一个空树是二叉搜索树。如果一个非空树的根节点满足上述排序性,并且它的左子树和右子树分别都是二叉搜索树,则这个树整体上也是一个二叉搜索树。
2024-03-01 15:37:32 337
原创 堆和树的相关问题
删除前K-1个元素:由于我们要找的是第K大的元素,因此我们从堆顶开始,连续删除(交换堆顶元素与最后一个元素并缩小堆大小)K-1次最小元素。这样,在删除了K-1个最小元素后,堆顶的元素就是原数组中的第K大元素。这种方法的时间复杂度主要取决于堆的构造和K-1次删除操作,总体时间复杂度为O(n + klogk),其中n是数组长度,当k相对于n较小的时候,这种方法效率较高。将堆外的下一个元素(即当前堆大小位置的数组元素)入堆,并重新调整堆。初始化一个大小为k的小顶堆,并从数组中选取前k个元素放入堆中。
2024-03-01 11:23:28 435
原创 7.(数据结构)堆
堆序性质:对于任意节点i,其值(或关键字)满足与它的子节点的关系——在最大堆(大根堆)中,节点i的值大于或等于其两个子节点的值;在最小堆(小根堆)中,节点i的值小于或等于其两个子节点的值。删除:通常从堆顶(根节点)删除元素(即最大堆中的最大元素或最小堆中的最小元素),然后将堆尾元素移动到堆顶,再自上而下调整堆。查找:堆常用于快速找到最大或最小元素,但查找特定值的时间复杂度通常不优于线性时间,因为堆本身不具备随机访问的能力。插入:新元素添加到堆中时,需要自下而上调整堆,以确保新的元素不会破坏堆的性质。
2024-02-23 11:42:36 461
原创 数组和链表部分例题(力扣)
如果不在,则计算后将结果存入缓存,然后再返回。在尾递归优化中,如果递归调用是函数体中的最后一句,并且返回值直接是该递归调用的结果,编译器或解释器可以避免创建新的栈帧,从而减少栈空间的使用。如果要计算环的大小,可以通过让其中一个指针停留在相遇点,另一个指针重置回头结点,然后两个指针以相同速度前进再次相遇的方式来实现,此时两者共同走过的额外距离就是环的长度。(方法2)与方法1类似,构建新的链表,从头部移除节点,添加至新链表头部,完成后新链表既是倒序的,需要构建一个容器类,但是不去创建新的节点,更加偏面向对象。
2024-01-17 16:03:01 897
原创 2. 基础数据结构-数组
数组是一种数据结构,它是一个由相同类型元素组成的有序集合。在编程中,数组的定义是创建一个具有特定大小和类型的存储区域来存放多个值。数组可以是一维、二维或多维的。每个元素至少有一个索引或键来标识。
2023-12-12 10:42:34 470
原创 1.了解数据结构和算法
二分查找(Binary Search)是一种在有序数组中查找特定元素的搜索算法。它的基本思想是将数组分成两半,然后比较目标值与中间元素的大小关系,从而确定应该在左半部分还是右半部分继续查找。这个过程不断重复,直到找到目标值或确定它不存在于数组中。
2023-12-12 10:38:24 1127
原创 uniapp-hubildx配置
(1)运行==》运行到浏览器配置==》配置web服务器(2)选择浏览器安装路径浏览器安装路径:右键点击图标==》属性选择目标(安装目录)配置完成,点击运行==》运行到浏览器==》选择相应浏览器默认为pc模式,按f12打开开发者工具进行相应配置:A:选择手机型号B:自定义长宽C:打开手机模式a。
2023-12-04 10:12:41 711
原创 Proxy和Reflect
Proxy的底层实现主要依赖于JavaScript引擎(如V8)和宿主环境(如浏览器或Node.js)。具体实现方式可能会因引擎和版本的不同而有所不同。不过,我们可以从设计原理上探讨一下可能的实现机制。目标对象与代理对象:在创建Proxy时,会创建一个新的对象作为代理对象,并将其内部的[[Target]]属性指向目标对象。这意味着所有的操作实际上都是对目标对象进行的,只是通过代理对象来间接访问。
2023-12-01 10:48:46 393
原创 兰陵OA强制监听、发送通知、后台参数配置
1.2配置类1.2.1注册bean1.2.2 配置监听 1.3 创建结束2.后台配置2.1新建配置对象2.2 新建jsp页面2.3 添加配置页面显示2.4 配置3.2 拼接发送对象 3.3发送3.4 发送完成
2023-11-24 11:49:34 919 1
原创 4.Vue中的AJAX
在vue.config.js中添加配置优点:配置简单,请求资源是直接发给前端(8080)即可。缺点:不能配置多个单例,不能灵活的控制请求是否走代理。工作方式:若按照上述配置代理,当请求了前端不存在的资源时,那么请求会自动转发,但是若前端有那么就不会转发。
2023-11-23 10:38:59 320
原创 5.RabbitMQ发布确认高级
生产环境由于某些不明原因,导致rabbitMQ重启,在RabbitMQ重启期间生产者投递消息失败,导致消息丢失,需要手动处理和回复。于是我们考试思考,如何才能进行RabbitMQ的可靠投递。特别是在极端的情况下。RabbitMQ集群不可用的时候,无法投递的消息该如何处理呢。
2023-11-08 22:00:00 30 1
原创 6.RabbitMQ其他概念
用户对于同一操作发起的一次货多次请求的结果是一致的,不会因为多次点击而产生副作用。例如支付,用户购买商品后支付,支付扣款成功,但是返回结果的时网络异常,此时钱已经扣了,用户再次点击,此时会第二次扣款,返回结果成功,此时用户被扣款两次,流水记录也是两次,在以前的系统中,我们只需要把数据操作放入事物中即可,发生错误立即回滚,但是响应客户端的时候也可能出现某些问题。
2023-11-08 22:00:00 34 1
原创 4.RabbitMQ交换机
延时队列在需要延时处理的情况下非常有用,使用RabbitMQ来实现延迟队列可以很好的利用RabbitMQ的特性,如:消息可靠发送,消息可靠投递,死信队列来保障消息至少被消费一次,以及未被正确处理的消息不会被丢弃,另外通过RabbitMQ的集群特性,可以很好的解决单点故障问题,不会因为单节点挂掉导致延时队列不可用或者消息丢失。当然延时队列还有其他很多西安则,例如JAVA的DelayQueue,利用Redis的zset利用Quartz或者kafka的时间轮,这些方式各有特点,具体要看使用的场景。
2023-11-08 20:45:00 52 1
原创 3.RabbitMQ和JAVA集成
成功的不做处理,未收到的重新发送。MQ默认情况下才从轮训分发,但是在某种业务场景下,这种策略并非很好,比如两个消费者在处理任务,一个非常快,一个非常慢,这个时候继续采用轮训分发就会导致快的大部分时间都处于空闲状态,而慢的一直都在处理任务,这种情况下轮训分发其实并不太好,但是MQ并不知道会出现这种情况,在我们不指定的情况下,他依旧轮讯分发。生产者发送消息之后,MQ将信息保存到磁盘上之后,MQ会向生产者发送一个信息,消息已经被保存在磁盘上,这样可以完全保证,消息已经被MQ保存在磁盘上,消息完全不会丢失。
2023-11-08 16:24:04 44 1
原创 2.RabbitMQ概念及安装管理
RabbitMQ是一个消息中间件;他接受并转发消息,可以把他当做一个快递站点,当你发送一个包裹时,你把你的包裹放到快递点,快递员会把你的快递送到收件人那里,他和快递站最大的区别在于,他不处理快件,而是接收,存储,转发消息数据。
2023-11-08 16:23:29 26 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人