自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 哈希、散列表和Rabin-Karp算法

而运行时间为Ο(1 + |chain|) = Ο(1 + α), 其中1指计算hash的时间,|chain|是指形成chain的时间等于它的长度。h(k) = [(a * k + b) mod p] mod m (a和b为从{0,...,p-1}中抽取的随机数,p为大于|u|的质数,质数是只能被1和自身整除的数,u为key space的大小)时间复杂度为O(|s| * (|t| - |s|)) = O(|s|*|t|)- r.h() : 返回h(x)的值,h(x)为计算x哈希值的函数。

2024-03-22 14:23:37 957 1

原创 并查集丨链式+顺序丨含例题

使用树的双亲表示法(链式)。//数据//指向父节点。

2024-03-16 16:47:07 370

转载 The idea of Hashing

Think!Think!Think!i < size;i = i + 1)i < size;i = i + 1)

2024-03-16 10:08:21 36

原创 二分搜索树和AVL树

飞机预订的着陆时间为t,假如没有其他的计划在(t-k,t+k)的时间内着陆的飞机,则将t加入集合R。如果时间集合R是个已排序的数组或链表,我们可以尝试用二分查找来做,查找的时间复杂度为O(logn),但如果是数组,则插入时需要移动大量元素,时间复杂度为O(n),总时间复杂度为O(logn+n)。,其中Fh是斐波那契数列(数字1,1,2,3,5,8-构成了一个序列。则插入需花费O(1)的时间,但插入前需要依次和集合中的所有元素进行比较,花费的时间是O(n)。最差的情况是每一个结点的左右孩子结点的高度差为1.

2024-03-13 11:36:43 995

原创 堆和堆排序

堆排序是一种与插入排序和并归排序十分不同的算法。

2024-03-07 21:42:53 449

原创 插入排序和归并排序

对于如何找到正确的位置the correct position,由于A[0:i-1]是已经排序的数组,因此可以对A[0:i-1]进行二分搜索,找到刚好小于A[i]的元素A[j],暂存给一个变量num,再将A[j+1:i-1]整体后移一位,最后将num赋值给A[j]。算法思路:将一个未排序的大小为n的数组A,分为两个大小相似(n/2)的数组L和R;分别对这两个数组进行排序,排序后的数组分别为L'和R';但是使用二分插入排序的平均时间复杂度依然是O(n^2),因为每次找到正确的位置,可能需要移动许多的元素。

2024-03-06 21:51:09 421

原创 利用主定理求分治算法的渐进时间复杂度

peak的定义为当(i!= n-1)时,a[i] >= a[i-1] && a[i] >= a[i+1];当i == 0时a[i] >= a[i+1];当i==n-1时,a[i] >= a[i-1]。其中T(n)表示问题规模为n的分治算法所需的运行时间。n/b表示一个规模为n的主问题被分解为规模为n/b的子问题。当a[n/2] < a[n/2-1]时,找a[0:n/2-1];当a[n/2] < a[n/2+1]时,找a[n/2+1:n-1];当以上两个条件都不满足时,说明a[n/2]这个元素为peak。

2024-03-05 20:30:50 347

原创 PAT甲级刷题日记(1月27日,1011)

【代码】PAT甲级刷题日记。

2024-01-18 00:43:13 416

原创 编译原理课程CS143----P1 Introduction

语义分析是编译的第三阶段。同时解释器占用了较大的内存空间,达300字节,虽然在今天看来,300字节是非常微小的空间占用,但是却是704机器的30%内存空间。而现代的编译器几乎看不到词法分析和解析阶段,因为现在有着很好的工具来帮助我们编写这两个阶段,现在的编译器有着相当复杂的语义分析阶段和非常大的优化阶段还有很小的代码生成阶段。优化是第四个阶段,它的主要目标是修改程序,使其占用更少的资源,也许是用更少的时间执行程序,也许是使程序占用更少的空间,也许是使得它消耗更少的电量,也许是占用更少的网络带宽等等。

2023-08-28 21:16:03 147

原创 wireshark lab DNSv8.1

对于windows系统的电脑,输入命令ipconfig /flushdns清理DNS缓存。我的答案并不完善,欢迎纠正。

2023-03-26 17:20:59 1714

原创 HTTP计算机网络自顶向下+wireshark lab

HTTP(HyperText Transfer Protocol),一个应用层协议,是Web的核心。在RFC文档中有相关定义[RFC 1945]和[RFC 2616]。HTTP包括两个程序:客户端程序和服务端程序,它们执行不同的终端系统,通过交换HTTP消息进行交流。HTTP协议定义了这些消息的结构以及客户端和服务端如何交换这些消息。回顾一些Web专用术语。Web page(也被称作document)包括了若干个对象。

2023-03-23 22:58:25 642

原创 Socket编程(UDP和TCP)学习(自顶向下计网)

socket:套接字是作为端点在服务器端和客户端程序之间建立双向网络通信链路的软件对象。在 UNIX 中,套接字也可以被称为操作系统(OS)中进程间通信(IPC)的端点。可以把进程比作房子,而socket就是房门。应用相当于房子内的一侧,而传输层协议相当于房门外的一侧。包括两种传输层服务的socket类型:TCP:可靠的、字节流的服务、面向连接(connection-oriented)UDP:不可靠(对数据的递送无保证)服务、无连接、发送独立的数据报什么是可靠?

2023-03-18 17:55:54 1044

原创 用C语言写一个自己的shell-Part Ⅲ--built-in commands

Just as we have mentioned in part Ⅱ,the family of functions can’t perform built-in commands like .It’s likeThe reason for this is that is not a system command like or .We need to write and invoke functions to realize commands such as .Imagine that if

2023-03-03 17:56:34 375

原创 用C语言写一个自己的shell-Part Ⅱ--execute commands

This brings us to the family of functions. Namely, it has the following functions:For our needs,we will use whose signature looks like thisexecvp function indicates that,it accepts the name of a file,for which it will search for variable of the system

2023-03-02 22:37:42 341

原创 用C语言写一个自己的shell-Part Ⅰ

【代码】用C语言写一个自己的shell-Part Ⅰ。

2023-03-02 22:27:59 345

原创 PriorityQueues优先队列

每个病人依据他们的病情,都会有一个看病的优先级。抽象出一个队列,当病人进入队列时,代表需要等待医生空闲;出队列时,病人接受治疗。一个病人患了感冒,优先级较低,让他在队列中等待,待医生空闲时再为他治疗;接下来,另一位病人前来看病,病人头上还插着斧头,优先级较高,会让他先出队列进行治疗。优先队列中的每个元素都有各自的优先级,优先级最高的元素最先得到服务;优先级相同的元素按照其在优先队列中的顺序得到服务。在java中的优先队列是一个最小堆,我们可以通过comparator将其变成最大堆。调整一个元素的优先级。

2023-03-02 13:13:07 298

转载 一些常见shell命令的快速索引表

CommandExamplels &&&||Logical OR!= "bar" ]$$ls;$0$1$9$@$*-eq-ne-ltLess Than-le-gt-ge-z-n-ntNewer Than-d-fIs a File-r-w-x( ... )

2023-02-28 21:14:32 74

原创 【Shell笔记】 backtick(`) 和 (:-)

假如没有给myname设置值,那myname就是默认的 Elon Musk,就会默认输出Your name is : Elon Musk。将/usr/bin 目录中的所有文件以长格式提取到/tmp/log.$today文件中。在shell中,backtick可以将shell命令的输出分配给一个变量。其中+%y%m%d指示date命令将日期显示为两位数的年、月和日。通过这样的操作,就可以生成以当前时间为文件名的日志文件。假如一个变量没有被分配值,它会获得一个默认值。

2023-02-27 22:19:25 245

原创 一些好用的shell tools

Didn't Read,它简化了烦琐的man指令帮助文档,仅列出常用的该指令的使用方法。相比较man给出完整的帮助文档而言,大多数情况下,给出几个指令的使用demo可能正是我们想要的。ell)是一款用于交互式使用的shell,也可以作为脚本解释器来使用。其包含了 bash,ksh,tcsh 等其他shell中许多优秀功能,也拥有诸多自身特色。

2023-02-17 14:28:24 137

原创 随便看看01-the shell

shell是一种命令解析器,接收用户输入的文本命令,调用相应的应用程序,调用参数。在shell中,我们可以将文本命令用大量不同的方式进行组合,或者用它来编程实现自动化,从而充分使用计算机,完成许多GUI图形界面完成不了的功能,可视化界面在功能上有一定的局限性。数据默认从键盘流向程序,如果改变了它的方向,数据就从其它地方流入,这就是输入重定向。数据默认从程序流向显示器,如果改变了它的方向,数据就流向其它地方,这就是输出重定向。所谓的input和output,也就是输入输出,代表了数据的流动方向。

2023-02-07 15:27:44 68

原创 动态规划问题--算法讲解(每日更新 1/29)完全背包问题理论基础以及零钱兑换II

dp数组以及下标的含义- 递推公式- DP数组初始化- DP数组遍历顺序 - 从前往后/从后往前 - 多层循环中先遍历谁,后遍历谁- 打印DP数组,用于测试在思考的过程中,往往先确定递推公式,再考虑初始化。因为递推公式会影响初始化。

2023-01-18 20:07:15 359

原创 重返Java面向对象(超详细)(初级+高级)以及单例设计模式和抽象模板模式

Java向上转型的作用(有详细代码介绍)细节一final修饰类的某个属性时,必须赋值1.定义时:如 public final double TAX_RATE=0.08;2.在构造器中3.在代码块中如果final修饰的属性是静态的,则初始化的位置只能是1.定义时和2.在静态代码块中细节二关于第7点Java编程语言中的接口是一种抽象类型,用于描述类必须实现的行为。它们类似于协议。接口使用interface关键字声明,并且只能包含方法签名和常量声明(变量声明被声明为静态和final)。

2023-01-01 13:42:13 253

原创 Elasticsearch分布式搜索笔记

elasticsearch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域。In [computer science](https://en.wikipedia.org/wiki/Computer_science), an **inverted index** (also referred to as a

2022-11-27 19:05:17 901

原创 Feign远程调用+Gateway网关

- PredicateFactory的作用是什么? 读取用户定义的断言条件,对请求做出判断- Path=/user/**是什么含义? 路径是以/user开头的就认为是符合的网关的跨域问题跨域:域名不一致就是跨域- 域名不同- 域名相同,端口不同- 跨域问题:浏览器禁止请求的发起者与服务端发生跨域ajax请求,请求被浏览器拦截问题- 解决方案:CORS

2022-11-23 18:46:43 3947

原创 Nacos配置中心

在没有配置中心之前,传统应用配置的存在以下痛点:(1)采用本地静态配置,无法保证实时性:修改配置不灵活且需要经过较长的测试发布周期,无法尽快通知到客户端,还有些配置对实时性要求很高,比方说主备切换配置或者碰上故障需要修改配置,这时通过传统的静态配置或者重新发布的方式去配置,那么响应速度是非常慢的,业务风险非常大(2)易引发生产事故:比如在发布的时候,容易将测试环境的配置带到生产上,引发生产事故。

2022-11-23 18:36:59 5714

原创 注册中心Eureka-Nacos

- 服务提供者 如图,在Nacos中,服务提供者有了临时实例和非临时实例之分。 对于临时实例,与eureca相同,采用心跳监测方式,服务提供者每隔一段时间向nacosserver发送心跳监测数据,报告健康状况,一旦不健康了,就让它从服务列表消失; 对于非临时实例,nacos会主动询问它的健康状况,当它不健康了,只要不手动关闭它,并不会将它从列表中剔除,而是等待它恢复健康。 配置一个服务实例为非临时实例

2022-11-23 18:31:16 155

原创 RabbitMQ-笔记

AMQP,即 Advanced Message Queuin Protocol (高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言的限制。Broker:接收和分发消息的应用,RabbitMQ Server就是 Message Broker。包括Exchanger 和 Queue。

2022-11-20 20:25:34 463

原创 Zookeeper笔记

Curator 是 Apache ZooKeeper 的Java客户端库。常见的ZooKeeper Java API :原生Java APIZkClientCuratorCurator 项目的目标是简化 ZooKeeper 客户端的使用。Curator 最初是 Netfix 研发的,后来捐献了 Apache 基金会,目前是 Apache 的顶级项目。官网:http://curator.apache.org/

2022-11-13 19:56:04 596

原创 SpringBoot-学习笔记

pringBoot 是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。大家已经感受了 SpringBoot 程序,回过头看看 SpringBoot 主要作用是什么,就是简化 Spring 的搭建过程和开发过程。原始 Spring 环境搭建和开发存在以下问题:配置繁琐依赖设置繁琐SpringBoot 程序优点恰巧就是针对 Spring 的缺点自动配置。这个是用来解决 Spring 程序配置繁琐的问题起步依赖。

2022-11-12 16:51:46 995

原创 SpringMVC笔记

阅读资料JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)Servlet(Server Applet),全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型

2022-11-12 16:47:45 220

原创 Dubbo-相关概念+zookeeper安装+高级特性简介

Dubbo相关概念+zookeeper安装+高级特性

2022-11-06 18:45:03 809

原创 Docker入门笔记

开发运维合二为一更快速的应用交付和部署更便捷的升级和扩缩容更简单的系统运维更高效的计算资源利用打印当前系统相关信息查看内核版本uname -rDocker Compose 是一个编排多容器分布式部署的工具,提供命令集管理器化应用的完整开发期,包括服务构建,启动和停止。利用 Dockerfile 定义运行环境镜像使用 docker-compose.yml 定义组成应用的各服务运行 docker-compose up 启动应用。

2022-11-06 17:41:17 327

原创 Nginx笔记-相关概念+linux部署+nginx原理

官方介绍百度百科fr=aladdinnginx [engine x] 是 HTTP 和反向代理服务器、邮件代理服务器和通用 TCP/UDP 代理服务器,最初由编写。很长一段时间以来,它一直在许多负载重的俄罗斯网站上运行,包括Yandex、Mail.Ru、VK和Rambler。根据 Netcraft 的数据,2022 年 9 月,nginx 服务或代理了 21.48% 最繁忙的站点。以下是一些成功案例:Dropbox、Netflix、、。

2022-11-06 17:31:49 285

原创 Linux笔记

计算机最底层是硬件(cpu、内存、io设备等)我们进行编程进行操作的过程本质上都要翻译成对硬件的操作指令真正能对硬件操作的是操作系统Linux内核是Linux操作系统最核心的部分(对用户不友好)一般用户使用的是外层应用程序Linux内核和外层应用程序的操作语言不通,需要Shell来解释外层应用程序的操作命令,来调用操作系统内核。Shell还是一个功能强大的编程语言,易编写、易调试、灵活性强。

2022-11-06 17:22:14 252

原创 尚硅谷redis笔记

Redis(Remote Dictionary Server ),即远程字典服务。是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。免费和开源!是当下最热门的NoSQL技术之一,也被人们称之为结构化数据库。Redis是一个开源的key-value存储系统。

2022-11-01 17:19:16 1587

原创 Spring03-AOP与Spring事务

Spring为了管理事务,提供了一个平台事务管理器commit是用来提交事务,rollback是用来回滚事务。

2022-11-01 17:08:16 133

原创 计算机网络unit 2

如图中电话线能通过的最高信号带宽为3300HZ,最低为300HZ,那么它的信道带宽就是3000HZ。带宽:表示在单位时间内从网络中的某一点到另一点所能通过的“最高数据率”,常用来表示网络的通信线路所能传输数据的能力。关系:一个码元携带n bit的信息量,则M Baud的码元传输速率所对应的信息传输速率为M*n bit/s。发送信号经过信道的传输,受到有限带宽、噪声(即不规则的信号)等干扰因素而导致接收信号偏差的现象。无线电波的穿透能力是衍射能力,频率低,波长长,衍射能力强,容易越过障碍物。

2022-10-28 19:41:51 397

原创 Mybatis-详细笔记

在resources中新建文件夹,名称为Mapper接口所在的包名称,将.改为\例:UserMapper接口位于org.example.mapper包中,那么在resources中新建的文件名为org\example\mapper,将SQL映射文件拖入mapper中由于查询出的是多个User记录,所以类型为集合List。selectAll()与sql语句的id相同。

2022-10-28 19:28:04 628

原创 主从复制概览

当一台从服务器连接到主服务器时,从服务器会通知主服务器从服务器的日志文件中读取最后一次成功更新的位置。反之对从操作,主不会同步数据,还有可能造成数据紊乱,导致主从失效。主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库。在赋值过程中,一个服务器充当主服务器,而另外一台服务器充当从服务器。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的评率,提高单个机器的I/O性能。作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。

2022-10-27 16:01:33 374

原创 MongoDB基础-快速入门

索引支持在MongoDB中高效地执行查询。如果没有索引,MongoDB必须执行全集合扫描,即扫描集合中的每个文档,以选择与查询语句匹配的文档。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。如果查询存在适当的索引,MongoDB可以使用该索引限制必须检查的文档数。索引是特殊的数据结构,它以易于遍历的形式存储集合数据集的一小部分。索引存储特定字段或一组字段的值,按字段值排序。索引项的排 序支持有效的相等匹配和基于范围的查询操作。

2022-10-27 15:56:24 606

空空如也

空空如也

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

TA关注的人

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