自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 产品研发流程(方法)

IPD(Integrated Product Development,集成产品开发)和敏捷开发是现代软件开发中常见的两种方法论。

2024-05-24 06:30:00 344

原创 顺时针旋转矩阵算法

顺时针旋转矩阵是计算机科学和图像处理中的一个经典问题。这个操作意味着将矩阵的每个元素移动到它在顺时针旋转后应该处于的位置。

2024-05-23 06:00:00 579

原创 Redis知识点学习(二)

当哈希表中的**元素太多(负载因子过高)或太少(负载因子过低)**时,为了保持操作的效率,需要对哈希表的大小进行调整。,而不会被其他线程或处理器核心中断。不过,由于ziplist是连续存储的,这种顺序扫描的速度相比于链式结构会有所提高,特别是在数据量较小的情况下。锁的实现和应用跨越了软件和硬件的多个层面,包括应用程序中的同步机制、操作系统的调度策略,以及硬件支持的原子操作。优先级继承是指,当高优先级线程等待由低优先级线程持有的锁时,低优先级线程临时继承高优先级线程的优先级,以减少高优先级线程的等待时间。

2024-05-22 06:15:00 1201

原创 Redis知识点学习(一)

CAUTION]造成阻塞的主要原因是KEYS命令需要扫描整个数据库来查找匹配特定模式的所有key。如果数据库中的key数量非常多,而且使用的模式比较宽泛(例如*匹配所有key),那么KEYS命令就需要遍历数据库中的每一个key来检查是否匹配,这会消耗大量的时间和计算资源。在这个过程中,Redis是单线程的,意味着在执行KEYS命令期间,Redis无法执行其他任何命令。因此,如果KEYS命令执行时间过长,就会导致Redis服务器在这段时间内无法响应其他客户端的请求,造成阻塞。

2024-05-21 06:00:00 1465 1

原创 大、小顶堆学习

删除操作(通常指删除最大元素):根节点被删除(从堆中移除最大元素),最后一个元素被移动到根节点位置,然后向下调整其位置,以满足大顶堆的性质。删除操作(通常指删除最小元素):根节点被删除(从堆中移除最小元素),最后一个元素被移动到根节点位置,然后向下调整其位置,以满足小顶堆的性质。大顶堆适用于需要快速访问最大元素的场景,如实现优先队列,其中优先级最高的元素(即值最大的元素)需要被首先处理。小顶堆适用于需要快速访问最小元素的场景,如实现优先队列,其中优先级最低的元素(即值最小的元素)需要被首先处理。

2024-05-20 00:13:36 1045

原创 设计模式学习(九)——《大话设计模式》

装饰模式(Decorator Pattern)是一种设计模式,用于向对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它通过创建一个装饰类包装原有的类,提供更强的扩展功能,这样做既保持了类的核心职责,又允许了向对象动态地添加职责。

2024-05-17 04:15:00 1497

原创 linux程序分析命令(三)

跟踪程序的库调用最基本的用法是直接运行ltrace后跟你想要跟踪的程序名高级用法过滤特定的函数调用使用-e 选项可以指定只跟踪的函数调用。跟踪子进程使用-f选项可以跟踪程序产生的所有子进程。设置断点ltrace允许你在特定的函数调用时暂停程序执行。条件过滤可以结合使用-e选项和正则表达式来过滤只有在特定条件下才会出现的调用。gdbgdb基本用法gdb高级用法valgrindValgrind 基本用法安装 Valgrind在大多数Linux发行版中,可以通过包管理器安装Valgrin

2024-05-14 05:30:00 1034

原创 linux程序分析命令(二)

objdump 是一个非常强大的程序分析工具,广泛用于显示二进制文件的信息。它主要用于调试程序和分析性能问题。通过 strace,你可以了解程序是如何与操作系统交云的,包括文件操作、内存分配、网络通信等。要反汇编特定函数,你可以先使用 -t 选项查找函数的地址,然后使用 --start-address 和 --stop-address 选项来限定反汇编的范围。由于 objdump 的输出可能非常庞大,使用Unix管道和文本处理工具(如 grep, awk, sed)可以帮助你过滤和查找感兴趣的信息。

2024-05-13 06:00:00 624

原创 linux程序分析命令(一)

虽然不是ldd的直接用法,但结合使用strace可以帮助你深入了解程序在运行时的行为,包括它如何加载共享库。-C 或 --demangle 选项用于显示C++程序中更易读的符号名称,因为C++编译器通常会改变函数名(名字修饰)以支持重载等特性。nm命令支持使用正则表达式来过滤显示的符号,这在你想要查找符合特定模式的符号时非常有用。通过 --defined-only 选项,可以只列出已定义的符号,忽略未定义的符号。例如,使用grep '^T’可以过滤出所有类型为T(即在文本段中的符号)的符号。

2024-05-12 22:38:23 917

原创 限流算法学习

计数器算法计数器算法是最简单的限流算法,它在一个时间窗口内统计请求次数,如果请求次数超过了设定的阈值,则拒绝服务。这种方法实现简单,但存在时间窗口切换时的瞬间流量突增问题。滑动窗口算法滑动窗口算法是对计数器算法的改进,它将时间窗口分成多个小的窗口,通过维护这些小窗口的计数,可以更平滑地控制流量。这种算法可以较好地解决计数器算法中存在的突增问题。令牌桶算法令牌桶算法通过一个固定容量的令牌桶来控制流量,系统以恒定速率往桶中添加令牌,处理请求时需要从桶中取出令牌,如果桶中没有令牌,则拒绝服务。

2024-05-09 14:13:30 770 1

原创 时间轮算法

时间轮由固定数量的槽组成,形成一个圆环结构。每个定时任务被分配到其超时时间对应的槽中。随着时间的推进,指针每移动到一个新的槽,就检查并执行该槽中所有到期的定时任务。如果任务的超时时间超过了一个轮周期,可以通过多层时间轮结构来管理。较高层次的时间轮管理更长的超时时间,当低层时间轮转满一圈时,会触发上一层时间轮前进。时间轮算法广泛应用于各种系统中进行定时任务调度,如网络服务器中管理连接超时、操作系统中的定时器服务、数据库中的定期任务调度等。考虑一个简单的例子,一个有60个槽的时间轮,每个槽代表1秒。一个定

2024-05-08 22:01:47 821

原创 linux之NAMP

Nmap提供了灵活的扫描选项,允许用户根据需要自定义扫描类型。

2024-05-06 22:44:44 1539 1

原创 设计模式学习(八)——《大话设计模式》

单一职责原则(Single Responsibility Principle, SRP)是软件开发中 SOLID 原则之一,由罗伯特·C·马丁(Robert C. Martin)提出。它指的是一个类应该仅有一个引起它变化的原因,或者更简单地说,一个类应该只负责一项职责。

2024-05-05 22:29:30 982

原创 rust 实现GUI页面方法

Egui 是一个用 Rust 编写的即时模式 GUI 库,它旨在为游戏和交互式应用提供简单、快速且可移植的图形用户界面。与传统的保留模式 GUI 库不同,即时模式 GUI(Immediate Mode GUI,简称 IMGUI)不需要开发者维护一个单独的应用程序状态和界面状态,界面元素(如按钮、滑块等)是在每一帧绘制时即时创建和处理的。FLTK 是一个跨平台的轻量级 GUI(图形用户界面)库,它以其简洁和高效而闻名,特别适合用于开发需要快速启动和低资源消耗的桌面应用程序。

2024-05-04 20:56:07 1424 1

原创 学习选择排序的可视化实现(一)

开始:从数组的第一个元素开始,假设最小(或最大)元素就是第一个元素。比较:遍历未排序的部分,找到实际的最小(或最大)元素。交换:将找到的最小(或最大)元素与未排序部分的第一个元素交换位置。重复:移动到下一个元素,重复步骤2和3,直到数组完全排序。

2024-05-03 15:31:29 510

原创 学习冒泡排序的可视化实现(一)

调整排序逻辑以响应状态变量:在绘制循环中,根据is_sorting和is_paused变量的值来决定是否执行排序步骤。例如,您可以使用一个全局变量来记录当前排序的进度,并在每次窗口绘制事件中只执行一次或几次元素比较和交换。定义控制状态变量:在main函数中,定义几个变量来表示排序的状态(是否正在排序、是否暂停等)和一个变量来存储原始数组以方便重置。处理输入事件:监听键盘或鼠标事件来控制排序的开始、暂停和重置。绘制控制按钮:在窗口中绘制表示开始、暂停和重置操作的按钮,并处理点击这些按钮的事件。

2024-05-02 22:19:37 815

原创 PROXY代理学习

在计算机领域中,代理(Proxy)是一种特殊的网络服务,它充当客户端和服务器之间的中介,使得客户端能够通过代理与另一台服务器进行通信。代理服务可以用于多种目的,包括提高安全性、管理网络流量、缓存数据以提高访问速度等。

2024-05-01 21:05:50 1139

原创 数字证书简记

数字证书和数字证书链是网络安全和身份验证的重要组成部分,它们在保障网络交易的安全性和可信度方面发挥着至关重要的作用。

2024-04-29 23:15:56 454

原创 使用rust学习基本算法(四)

对于一个包含n个顶点的图,其邻接矩阵是一个n×n的矩阵,记为A。如果顶点i和顶点j之间存在一条边,则矩阵中的元素A[i][j]表示这条边的权重;如果不存在边,则A[i][j]的值通常设为0(对于无权图)或某个特定的非负值,如无穷大(对于有权图),表示两个顶点之间没有直接的连接。

2024-04-27 19:43:42 1166

原创 使用rust学习基本算法(三)

回溯算法通过试错来找到所有可能的解决方案,它在遇到“死路”时回退到上一个步骤,然后尝试其他可能的路径。这种方法虽然在某些情况下效率不高(比如解空间非常大时),但对于很多问题来说是一种简单而有效的解决方法。对于一个包含 V 个顶点和 E 条边的图,邻接链表由一个数组或者哈希表组成,数组或哈希表的大小为 V。数组或哈希表的每个索引位置 i 都存储一个链表,这个链表包含了所有从顶点 i 出发的边所连接到的其他顶点。这样,图中的每条边都会在某个链表中以节点的形式出现。

2024-04-26 06:00:00 1665

原创 双机部署学习

双机部署是一种常见的高可用性解决方案,旨在通过两台服务器的协作来提高系统的稳定性和可靠性。这种部署方式能够确保当一台服务器发生故障时,另一台服务器能够接管服务,从而最大限度地减少系统的停机时间。

2024-04-25 06:00:00 729

原创 StorCli工具学习记录

StorCLI(Storage Command Line Interface)是一款强大的命令行管理工具,用于管理和配置存储控制器。这一工具主要适用于Broadcom(原LSI)及Intel RAID控制器。下面将详细介绍StorCLI的安装、特点、操作说明、常用场景、适用场景及具体应用。

2024-04-24 06:00:00 1411

原创 使用rust学习基本算法(二)

贪心算法是一种在每一步选择中都采取当前状态下最优的选择,以期望通过一系列的局部最优解来达到全局最优解的算法策略。它的主要特点是局部最优解的选择,希望通过这种方式来解决某些优化问题。但需要注意的是,贪心算法并不保证能够得到全局最优解,它的正确性需要根据具体问题来分析。

2024-04-23 06:00:00 1227

原创 使用rust学习基本算法(一)

这个算法可以找到从图中一个指定的源节点到所有其他节点的最短路径。算法从源节点开始,逐步将距离源节点最近的节点加入到已找到最短路径的节点集合中,并更新其他节点到源节点的距离,直到所有节点都被处理过。在这里,我们创建了一个Edge结构体来表示边,它包含目标节点的索引node和从源节点到该节点的成本cost。此函数接受一个邻接列表表示的图和一个起始节点索引,返回一个包含从起始节点到所有其他节点的最短路径成本的向量。节点0有两条边,一条到节点1(成本为2),另一条到节点2(成本为4)。定义边和优先队列中的元素。

2024-04-22 06:00:00 1104

原创 设计模式学习(七)——《大话设计模式》

策略模式可以将每种支付方式实现为一个具体的策略类,支付系统的上下文(Context)根据用户的选择动态切换支付策略。客户端使用环境类:最后,客户端创建一个环境类的实例,并选择一个具体策略类传递给环境类。客户端通过环境类调用算法,而具体的算法则由具体策略类实现。简而言之,策略模式关注于算法和行为的多样性及其可替换性,而简单工厂模式关注于创建具体对象,隐藏创建细节,减少客户端与具体类之间的依赖。:通常通过定义一个公共接口来实现,各个策略类实现这个接口,客户端通过持有一个对这个接口的引用来使用不同的策略。

2024-04-21 06:30:00 897

原创 linux对网络的监控操作学习--端口、流量、IP

用户空间是指非内核代码运行的内存区域,即普通的应用程序运行的地方。用户空间提供了一个相对安全的环境,因为即使用户空间的程序崩溃,也不会直接影响到系统的稳定性。Linux系统中的用户空间程序指的是运行在用户空间的软件应用程序,与运行在内核空间的内核程序相对。总之,用户空间程序包括几乎所有普通用户直接使用的软件应用程序,而这些程序通过与内核空间进行交互,来实现对硬件资源的访问和管理。auditd是Linux系统的审计守护进程,可以记录系统上的所有活动,包括网络活动,提供详细的审计功能。

2024-04-20 06:00:00 1424 5

原创 linux基本问题处理记录

objdump是一个显示二进制文件信息的程序,它可以用来显示一个可执行文件、一个对象文件、或一个库中定义的符号信息。虽然strace不直接显示库依赖,但它是一个强大的工具,用于跟踪程序运行时的系统调用和接收到的信号。在Linux系统中,.lock文件通常用于表示某个程序或进程正在使用特定的资源或文件,以防止其他程序在未完成操作前对其进行修改或删除。对于静态链接的程序,它们不依赖于外部的共享库文件,因此ldd将不会显示任何输出。对于静态链接的程序,它们不依赖于外部的共享库文件,因此ldd将不会显示任何输出。

2024-04-19 06:30:00 1938

原创 设计模式学习(六)——《大话设计模式》

当需要根据输入或条件创建多个类的实例时,而这些类又有共同的父类或接口。当创建对象的逻辑比较复杂,但又希望对客户端隐藏这些复杂性时。当系统需要灵活地添加新产品时,而不希望对现有代码造成太大影响。

2024-04-18 07:00:00 2271

原创 设计模式学习(五)——《大话设计模式》

关联:确定类之间的关系。如果两个类需要直接交互或一个类中包含另一个类的引用,则它们之间存在关联关系。继承:识别是否有类似但更具体的实体应该继承自一个更通用的类。实现:如果你的系统使用了接口,确定哪些类将实现这些接口。聚合与组合:确定类之间是否存在‘拥有’关系。聚合表示一种弱‘拥有’关系,而组合则表示一种强‘拥有’关系。

2024-04-17 06:45:00 760

原创 iptables 学习

为了更好地组织和管理规则,你可以创建自定义链。例如,创建一个专门用于日志记录的链:这里创建了一个名为LOGGING的自定义链,所有输入链的数据包都会被转发到这个自定义链。在LOGGING链中,我们限制了日志记录的频率,并在日志消息中添加了前缀,最后丢弃了这些数据包。组织性:自定义链可以帮助您将规则按功能、服务或任何其他逻辑方式分组。易于管理:更新、删除或临时禁用一组规则变得更加简单。性能:通过将检查过程分解到不同的链中,可以提高处理效率,尤其是对于复杂的规则集合。

2024-04-16 14:01:17 1381

原创 linux监控文件操作行为

关键词(key)在这个上下文中是完全自定义的。当你使用 -k 参数在 auditd 规则中指定一个关键词时,这个关键词用于标记和识别与该规则相关的审计事件。这意味着你可以使用任何有意义的字符串作为关键词,以便于后续在审计日志中快速过滤和查找相关事件。-k auth-change 中的 auth-change 是一个自定义关键词,用于标识和过滤与 /etc/pam.d/common-auth 文件更改相关的审计事件。

2024-04-15 22:44:29 1426 2

原创 密码知识汇总

加密是一种安全技术,用于保护信息免受未经授权的访问或篡改。它通过将信息(明文)转换成只有拥有特定密钥的人才能解读的格式(密文)来实现这一点。加密的目的是确保数据的机密性、完整性和可验证性,即使数据在传输过程中被截获,没有相应的密钥也无法读取或理解数据内容。密码学中的加密方法主要可以分为两大类:对称加密和非对称加密。每种方法都有其独特的应用场景和优缺点。摘要,通常在计算机科学中称为哈希(Hash)或哈希函数,是一种将任意长度的数据映射到固定长度的数据的算法。这个过程产生的固定长度的数据称为哈希值或摘要。

2024-04-14 16:09:45 1128 1

原创 密码学:古老艺术与现代科学的交汇

从古代的简单隐秘通信到现代社会中不可或缺的安全技术,密码学经历了长期而复杂的发展历程。未来,随着新技术的不断涌现和新威胁的出现,密码学将继续演进,并在数字化时代中发挥越来越关键的作用。

2024-04-13 18:09:25 557 1

原创 电子邮件协议学习

电子邮件服务器的核心功能是发送、接收和存储电子邮件;依赖于一系列协议,SMTP,IAMP,POP3,SMTPS ,IAMPS等协议。

2024-04-12 16:23:56 574

原创 linux磁盘知识学习

这里,/dev/md0是新创建的RAID设备,level=1指定了RAID级别为1,raid-devices=2表示有两个设备参与RAID,最后/dev/sda1和/dev/sdb1是参与RAID的两个分区。下面的列表提供了每个参与RAID的设备的状态和位置信息,例如/dev/sda1和/dev/sdb1都处于“active sync”状态,意味着它们正在同步数据。这些命令会显示当前配置的RAID阵列的详细信息,包括它的级别(例如,RAID 0、RAID 1、RAID 5等)。

2024-04-11 21:06:38 2149 3

原创 RAID知识总结

RAID 0又称为Stripe或Striping,它代表了所有RAID级别中最高的存储性能。RAID 0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。[说明]: 来自AI创作的概念图磁盘空间使用率:100%,故成本最低。读性能:N*单块磁盘的读性能写性能:N*单块磁盘的写性能冗余:无,任何一块磁盘损坏都将导致数据不可用。

2024-04-10 22:38:28 677 1

原创 netstat工具学习记录

Netstat(网络统计)是一个非常强大的命令行工具,它用于显示网络连接、路由表、接口统计、伪装连接和多播成员资格等信息。与其他网络监控工具相比,Netstat的主要优势在于其广泛的可用性(大多数Unix-like系统和Windows上都可用)以及它提供的详细网络连接和统计信息。​ 通过分析日志文件,提取出对应域名的IP地址,然后使用sort和uniq等命令来统计C段IP地址(即IP地址的前三个部分)的请求数,并使用head命令获取前10名。简介:nmap 是一个网络探测和安全审核的工具。

2024-04-10 17:04:20 525 1

原创 设计模式学习(四)——《大话设计模式》

允许在编码时使用类型参数,从而使得代码更加灵活、可重用。泛型可以应用于类、接口、方法中,通过这种方式,可以编写出适用于多种数据类型的通用代码,而不是针对每种数据类型编写重复的代码。

2024-04-09 19:42:16 931 1

原创 Bonnie++ 工具学习记录

Bonnie++ 的测试结果有助于理解硬盘或文件系统在不同工作负载下的表现,从而为系统优化和硬件选择提供数据支持。较高的K/sec值表示更好的I/O性能,较低的延迟和较低的CPU使用率表示系统在处理I/O操作时更有效率。实际测试时,测试环境的具体情况,例如硬盘类型(SSD或HDD)、文件系统类型、系统内存等因素,它们都会影响测试结果。性能评估: 在购买新硬件前评估其性能,或比较不同硬件配置下的性能差异。性能评估: 在购买新硬件前评估其性能,或比较不同硬件配置下的性能差异。下载最新的源代码包:访问。

2024-04-09 15:03:45 1306 1

原创 容器化部署--知识点标记

容器化部署提供了显著的优势,特别是在需要跨多个环境一致性部署、未来有扩展需求、或者想要利用微服务架构的优势时。容器化技术已经成为现代软件开发和部署不可或缺的一部分,它通过提供一种轻量级、可移植的方式来打包和运行应用,极大地提高了应用部署的速度、可靠性和可伸缩性。本文将探讨容器化部署的优势、劣势以及在不同场景下的应用,特别是在Windows环境下的实践。这些工具和平台支持从开发、测试到生产环境中的应用容器化,特别适合微服务架构、多语言应用开发以及需要在多个环境中保持一致性的场景。

2024-04-08 14:40:43 1190

FIO测试安装包文件,可用于源码下载在linux本地进行编译

FIO测试安装包文件,可用于源码下载在linux本地进行编译;使用FIO在linux设备上进行存储的性能测试,主要是进行压力和稳定性的测试,一方面FIO命令可以很好的设置性能测试参数,便于维护测试数据;另一方面,FIO命令的测试结果较为直观清晰,能够很好的展示存储的测试结果,能够满足多种测试场景,对存储的测试场景进行充分的覆盖。

2024-04-01

空空如也

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

TA关注的人

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