![](https://img-blog.csdnimg.cn/20200624103610881.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
基础算法
文章平均质量分 82
e
风中的默默
1998年过去了,我们很怀念它
展开
-
MySQL Server运维常用SQL命令
select client_net_address '客户端IP',local_net_address '服务器的IP',* from sys.dm_exec_connections。select client_net_address '客户端IP',local_net_address '服务器的IP',* from sys.dm_exec_connections。logical_reads:逻辑读,衡量语句的执行开销。[blocking_session_id] AS '正在阻塞其他会话的会话ID',原创 2024-07-17 17:59:26 · 900 阅读 · 0 评论 -
安全入门、网络安全入门基础知识
个人计算机是指一种大小、价格和性能适用于个人使用的多用途计算机。它能够处理文档、浏览网页、运行软件应用程序、玩游戏以及进行多媒体娱乐等多种功能。原创 2024-07-17 17:56:41 · 165 阅读 · 0 评论 -
linux从入门到精通、linux常用命令
Linux 是一个基于 UNIX 的开源操作系统内核,由芬兰程序员 Linus Torvalds 在 1991 年创建。开源性:Linux 源代码对所有人开放,用户可以自由地查看、修改和分发。多用户和多任务:支持多用户同时登录,能够同时运行多个进程。稳定性和安全性:Linux 内核经过全球开发者的长期测试和优化,具有高度的稳定性和安全性。原创 2024-07-17 17:55:33 · 897 阅读 · 0 评论 -
堆、栈和队列(数据结构)
堆:用于实现优先队列和动态数据结构,操作复杂,适用于需要优先级排序的场景。队列:用于实现先进先出(FIFO)的数据结构,操作简单,适用于需要顺序处理的场景。栈:用于实现后进先出(LIFO)的数据结构,操作简单,适用于需要后入先出的场景。每种数据结构都有其特定的应用场景和优势。在实际编程中,选择合适的数据结构可以大大提高程序的效率和性能。堆上的内存需要程序员手动管理,容易发生内存泄漏。为了避免内存泄漏,程序员应该在不再需要动态分配的内存时,使用free()函数将其释放。原创 2024-07-17 17:54:01 · 1010 阅读 · 0 评论 -
【B树、B-树、B+、B*树】
B-tree即B树,B是Balanced,平衡的意思,因为B树的原英文名称为B-tree,国内很多人将其译为B-tree,所以B树就是B-树。磁盘管理系统中的目录管理,以及数据库系统中的索引组织多数都采用B树这种数据结构。树中每个结点至多有m棵子树;若根结点不是叶子结点,则至少有两棵子树;除根之外的所有非终端结点至少有[m/2](向上取整)棵子树;原创 2024-07-17 17:47:11 · 575 阅读 · 0 评论 -
详解Java常用排序算法(10种,含演示动画)
这些排序算法都有各自的优缺点,应根据具体情况选择适合的算法。原创 2024-07-17 17:37:59 · 515 阅读 · 0 评论 -
一看就懂的贪心算法
我们先看一个例子假设有一个可以容纳100kg物品的背包,背包可以装各种物品,我们有以下五种豆子,每种豆子的重量和总价值各不相同。为了让背包中所装物品的总价值最大,我们如何选择在背包中装哪些豆子?每种豆子又应该装多少?我们可以这样想,我们只需要计算出每种豆子的单价,按照价格由高到低依次来装豆子,先按单价最高的豆子装,装不满的话,再装价格相对较低的豆子,直到装满为止。:针对一组数据,事先定义了限制值和期望值,希望从中选择几个数据,在满足限制的情况下,期望值最大。原创 2024-07-17 17:33:06 · 766 阅读 · 0 评论 -
Redis-布隆过滤器(Bloom Filter)详解
布隆过滤器(Bloom Filter)是 1970 年由布隆提出的,是一种非常节省空间的概率数据结构,运行速度快,占用内存小,但是有一定的误判率且无法删除元素。它实际上是一个很长的二进制向量和一系列随机映射函数组成,主要用于判断一个元素是否在一个集合中。通常我们都会遇到判断一个元素是否在某个集合中的业务场景,这个时候我们可能都是采用HashMap的Put方法。原创 2024-07-17 17:30:06 · 435 阅读 · 0 评论 -
TCP、UDP、TCP与UDP的区别及联系
TCP协议的这些特性使其成为现代网络通信中不可或缺的一部分,特别是在需要可靠数据传输的应用场景中,如Web浏览(HTTP)、文件传输(FTP)、邮件传输(SMTP)等。然而,TCP的这些特性也带来了一定的开销,因此在某些对实时性要求较高的应用中,可能会选择使用UDP(用户数据报协议)作为替代。TCP报文段包括源端口号、目的端口号、序列号、确认号、数据偏移、控制位(如SYN、ACK、FIN等)、窗口大小、校验和、选项和填充以及数据载荷。UDP提供了一个可选的校验和字段,用于检测数据报在传输过程中的错误。原创 2024-07-15 10:55:00 · 1070 阅读 · 0 评论 -
TCP网络模型
主机 A 中数据被传递给传输层,传输层将数据分割成合适的数据段,带上序号和校验信息等TCP头,形成传输层的数据报。TCP/IP模型与OSI模型的主要区别在于TCP/IP模型将OSI的会话层、表示层和应用层的功能合并为应用层,同时将OSI的数据链路层和物理层合并为链路层。在某些文献中,网络接口层可能被用来指代物理层和数据链路层的结合,即负责实际的网络硬件接口。在网络包传输的过程中,源 IP 和目标 IP 始终是不会变的,一直变化的是 MAC 地址,因为需要 MAC 地址在以太网内进行两个设备之间的包传输。原创 2024-07-15 10:51:56 · 925 阅读 · 0 评论 -
IO多路复用技术、select、poll、epoll联系与区别
epoll 是 Linux 内核提供的一种高效的 I/O 多路复用技术,用于监控大量文件描述符(file descriptors)的 I/O 事件。epoll是Linux下的一种高效的I/O多路复用技术。epoll_ctl:用于添加(EPOLL_CTL_ADD)、修改(EPOLL_CTL_MOD)或删除(EPOLL_CTL_DEL)感兴趣的文件描述符。异步的:epoll 允许应用程序先注册对特定的 I/O 事件,当这些事件发生之后操作系统会自动通知应用程序,这是异步 I/O 的一个关键特征。原创 2024-07-15 10:48:03 · 1009 阅读 · 0 评论 -
TCP重传、滑动窗口、流量控制、拥塞控制机制
比如A给B发了1、2、3、4、5个报文,B收到1后应答2表示希望收到2,但是2丢失了,后面B收到3、4、5时都返回2,A收到了三个 Ack = 2 的确认,知道了 Seq2 还没有收到,就会在定时器过期之前,重传丢失的 Seq2。当网络中的流量过多时,可能会导致数据包丢失和延迟增加,拥塞控制的目的是避免这种情况的发生。在 TCP 头部「选项」字段里加一个 SACK数据,它可以将已收到的数据的信息发送给「发送方」,这样发送方就可以知道哪些数据收到了,哪些数据没收到,知道了这些信息,就可以只重传丢失的数据。原创 2024-07-15 10:43:57 · 543 阅读 · 0 评论 -
MySQL事务、隔离级别、脏读/不可重复读/幻读与解决方法
数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致,因为多个事务同时使用相同的数据时,不会相互干扰,每个事务都有一个完整的数据空间,对其他并发事务是隔离的。针对快照读(普通 select 语句),是通过 MVCC多版本并发控制来解决了幻读的,因为在可重复读隔离级别下,事务执行过程中看到的数据,一直跟这个事务启动时看到的数据保持一致,以此避免幻读问题。不可重复读是由于另一个事务对数据的更改所造成的,而幻读是由于另一个事务插入或删除引起的。原创 2024-07-15 10:32:59 · 481 阅读 · 0 评论 -
RPC实现、RPC与HTTP区别
打个比方:有两台服务器A、B,一个应用在A服务器上部署,其需要调用B服务器上的应用,但是由于不在一个一个服务器(内存空间),不能直接调用,因此需要通过网络来传输调用的语义和数据。目前流行的开源 RPC 框架还是比较多的,有阿里巴巴的 Dubbo、Facebook 的 Thrift、Google 的 gRPC、Twitter 的 Finagle 等。RPC常用于分布式系统中,例如云计算、微服务架构、分布式数据库、消息队列等,它可以让不同的服务之间进行远程调用,从而实现分布式系统的协作。请求头以一个空行结束。原创 2024-07-15 10:28:46 · 938 阅读 · 0 评论 -
java多线程详解(并发,并行,同步)
基本认为一个线程上下文切换的事件时最佳的一个时间,同时JVM还针对当前CPU的负荷情况做了较多的优化,如果平均负载小于CPUs则一直自旋,如果有超过(CPUs/2)个线程正在自旋,则后来线程直接阻塞,如果正在自旋的线程发现Owner发生了变化则延迟自旋时间(自旋计数)或进入阻塞,如果CPU处于节电模式则停止自旋,自旋时间的最坏情况时CPU的存储延迟(CPU A存储了一个数据,到CPU B得知这个数据直接的时间差),自旋时会适当放弃线程优先级之间的差异。在某个线程被显示地关闭之前,池中的线程将一直存在。原创 2024-07-15 10:24:10 · 1006 阅读 · 0 评论 -
《操作系统导论 - 第一版》
因为进程在执行write操作的时候,实际上是将数据写到了内核的 page cache里,page cache是文件系统中用于缓存文件数据的缓冲,由多个 page 构成,那么即使进程崩溃了,文件数据还是保留在内核的 page cache。所以如果有一种编码,能把世界上所有的符号都包括起来,每个符号都有一个独一无二的编码,那么乱码问题就会消失,那这就是Unicode字符集的由来,Unicode 就相当于一张表,表里维护了字符和编号之间的联系。而对换区空间只占磁盘的一小部分空间,被换出的进程数据就存放在对换区。原创 2024-06-26 11:08:18 · 821 阅读 · 0 评论 -
《软件测试精要第二版》
现在app产品的用户都是使用的触摸屏手机,所以测试的时候还要注意手势,横竖屏切换,多点触控,事件触发区域等测试。通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。web 项目 ,一般都是基于浏览器的b/s架构,所以测试的重点在于功能点的正常和响应时间的效率方向,浏览器的兼容则是一般是选择不同的浏览器内核进行测试。系统庞大时,测试开销会非常大。原创 2024-06-26 10:56:30 · 495 阅读 · 0 评论 -
缓存穿透、雪崩与击穿
缓存穿透、雪崩、击穿1、缓存穿透强调都没有数据+并发访问布隆过滤器缓存NULL值2、缓存雪崩强调批量Key过期+并发访问3、缓存击穿强调单个Key过期+并发访问互斥锁逻辑过期分布式并发控制1、缓存穿透缓存穿透是指数据库和缓存都没有的数据,这样缓存永远不会生效,大量的请求有可能导致数据库宕机。强调都没有数据+并发访问一般处理缓存穿透有布隆过滤器 和 缓存null值 两种方式。布隆过滤器布隆过滤器是使用一个初始全部是0的位数组,插入元素时先哈希一下,把哈希计算出的多个值的对应位置设为1,然后下次再有原创 2024-06-26 11:27:19 · 561 阅读 · 0 评论 -
《深入浅出MySQL:数据库开发、优化与管理维护(第3版)》
隔离性Isolation:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致,因为多个事务同时使用相同的数据时,不会相互干扰,每个事务都有一个完整的数据空间,对其他并发事务是隔离的。MySQLInnoDB引擎的行锁是通过索引加载的,也就是说,行锁是加在索引响应的行上的,要是对应的SQL语句没有走索引,则会全表扫描,行锁则无法实现,取而代之的是表锁,此时其它事务无法对当前表进行更新或插入操作。简而言之,第一范式就是无重复的列。原创 2024-06-26 11:12:53 · 727 阅读 · 0 评论 -
HTTPS、对称/非对称加密、SSL/TLS
HTTPS并不是一个单独的协议,是在 TCP 和 HTTP 之间加入了 SSL/TLS 安全协议,使得报文能够加密传输,SSL是TLS的前身,现在使用的大多都是TLS。原创 2024-04-02 22:20:10 · 7630 阅读 · 0 评论 -
TopK问题解决方案
在BFPTR算法中,仅仅是改变了快速排序Partion中的pivot值的选取,在快速排序中,我们始终选择第一个元素或者最后一个元素作为pivot。而在BFPTR算法中,每次选择五分中位数的中位数作为pivot,这样做的目的就是使得划分比较合理,从而避免了最坏情况的发生。:维护K个元素的最大堆,每次和堆顶元素比较,然后堆化,时间复杂度为O(nlogK),时间复杂度比方案1好,毕竟K一般是远远小于n的。(2)将比这个数大的数全部放到它的右边,把小于或者等于它的数全部放到它的左边。一趟快速排序的过程如下。原创 2024-04-01 23:00:37 · 7231 阅读 · 0 评论 -
二叉树的遍历
二叉树的遍历先序遍历:ABCDEFGHK中序遍历:BDCAEHGKF后序遍历:DCBHKGFEA原创 2020-06-29 14:44:15 · 249 阅读 · 0 评论 -
经典排序java版
目录经典排序算法算法总结:I :冒泡排序(Bubble Sort)II :选择排序(Selection Sort)III :插入排序(Insertion Sort)IV :希尔排序(Shell Sort)V :归并排序(Merge Sort)VI :快速排序(Quick Sort)VII :堆排序(Heap Sort)VIII :计数排序(Counting Sort)IX :桶排序(Bucket Sort)X :基数排序(Radix Sort)经典排序算法原文链接:https://www.cnblogs原创 2020-06-23 18:10:04 · 175 阅读 · 0 评论