自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【kafka】消息模型与工作原理详解

Kafka 是由 Apache 软件基金会开发的一个开源流处理平台,最初由 LinkedIn 公司开发,并于 2011 年开源。它以高吞吐量、可扩展性、持久性和容错性著称,被广泛应用于日志收集、消息系统、用户活动跟踪、运营指标监控、流式处理等场景。Kafka 能够处理海量数据,并使数据能够被多个消费者同时读取,在大数据生态系统中占据着重要地位。

2025-06-11 15:34:19 518

原创 【kafka】rebalance机制详解

Kafka的Rebalance机制是消费者组实现负载均衡和容错的重要手段,但也会带来消息处理延迟和性能开销。通过合理设置消费者数量、选择合适的分区分配策略、调整消费者参数以及避免频繁的订阅变更,可以减少Rebalance的负面影响,提高Kafka消费者组的稳定性和性能。当消费者组内的消费者数量、订阅的主题分区数量或消费者的订阅关系发生变化时,Kafka会触发Rebalance,重新分配消费者与分区之间的对应关系,确保每个分区都能被一个消费者消费,且消费者之间的负载尽量均衡。

2025-06-11 14:22:39 522

原创 【kafka】Golang实现分布式Masscan任务调度系统

摘要: 本文实现了一个基于Kafka的分布式端口扫描系统,包含命令行客户端和服务端程序。系统采用生产者-消费者模式,客户端通过命令行参数配置扫描任务并发送到Kafka,两个服务端实例作为消费者从Kafka获取任务执行。关键技术点包括: 使用Kafka实现任务分发和负载均衡 通过Redis记录任务进度 Masscan集成实现高效端口扫描 完善的错误处理和日志记录 系统架构清晰,包含Kafka生产者/消费者封装、任务管理、进度跟踪和扫描执行等模块。测试验证表明系统能正确分配任务给两个服务端实例,实现了预期的负载

2025-06-10 20:00:00 1193

原创 【docker】安装和使用

简而言之,Docker 是一个可供开发者通过容器(container)来构建,运行和共享应用(application)的平台。用容器来部署应用被称为集装箱化docker简介镜像是一种轻量级、 可执行的独立软件包,来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。容器是打包代码及其所有依赖项的软件的标准单元,因此应用程序可以从一个计算环境快速可靠地运行到另一个计算环境。

2025-06-09 17:38:43 774

原创 【masscan】端口扫描工具masscan常用方法和参数

Masscan是Robert David Graham开发的高性能开源端口扫描工具,采用异步I/O模型,理论扫描速度可达每秒1000万包,远胜传统工具。支持TCP/UDP/ICMP协议,可在几分钟完成全网扫描。特点包括:极速扫描、灵活配置(自定义端口/IP段/速率)、轻量高效。

2025-06-09 16:36:44 125

原创 【docker】Windows安装docker

【代码】【docker】Windows安装docker。

2025-06-04 15:22:16 1066

原创 【docker】容器技术如何改变软件开发与部署格局

Docker作为现代化容器技术,显著提升了软件开发和部署效率。本文探讨了Docker的起源、用途和优势:1)起源上,Docker受标准化集装箱启发,通过容器化解决了环境差异问题;2)用途方面,它提供统一运行环境、便捷迁移、加速开发测试流程及支持CI/CD;3)优势包括便携性、轻量级灵活性、良好扩展性、高效资源利用及丰富的镜像资源。Docker改变了传统应用部署方式,通过容器化技术实现"一次构建,随处运行",成为现代软件开发的重要工具。

2025-06-04 14:38:45 822

原创 【golang】能否在遍历map的同时删除元素

Go语言允许在迭代时删除当前元素,但不建议直接使用for k, v := range m进行删除。主要原因包括:1. 迭代变量重用问题,可能导致访问已删除数据或意外行为;2. 值拷贝的潜在问题,特别是当v是大型结构体时,会导致不必要的拷贝;3. 与map迭代器内部状态的交互,可能干扰迭代器的内部计数和状态;4. 代码可读性和维护性,使用for k := range m形式更清晰。安全实践建议:如果只需要键,使用for k := range m形式;如果需要值,先通过键访问;复杂条件考虑先收集键再批量删除。

2025-05-23 11:06:39 482

原创 【Kafka】编写消费者开发模式时遇到‘未解析的引用‘SIGUSR1’’

在编写消费者开发模式时,使用简单的consumer可能导致数据消费不全,建议使用ConsumerGroup。官方实例可参考Shopify/sarama。若遇到未解析的引用SIGUSR1,可在Go安装目录下的Go\src\syscall\types_windows.go文件中添加相关代码,定义SIGUSR1、SIGUSR2和SIGTSTP信号,并在signals数组中添加对应字符串。此外,需实现Kill函数以兼容Windows系统,类似于Linux的kill指令。

2025-05-23 10:41:10 604

原创 【golang】为什么协程开销小于线程

免去内核介入:用户态调度无特权级切换。轻量级上下文:仅保存必要寄存器,不涉及内存管理等内核状态。协作式调度:减少不必要的抢占和缓存失效。

2025-04-09 09:20:23 534

原创 【golang】逃逸分析

在 Go 语言中,逃逸分析是编译器的一种优化技术,用于决定变量是分配在栈上还是堆上。通过逃逸分析,Go 编译器可以减少不必要的堆分配,从而提高程序的性能。go buildGo 编译器提供了-gcflags标志,可以输出逃逸分析的结果。sgo run如果只想运行程序并查看逃逸分析结果,可以直接使用go runGo 提供了工具,可以更详细地分析编译过程。

2025-04-09 09:18:05 1048

原创 【golang】堆和栈的区别

堆和栈是两种不同的内存分配区域,它们在内存分配、生命周期、性能等方面存在显著差异。通过理解堆和栈的区别,开发者可以编写出更高效的 Go 程序。

2025-04-09 09:04:39 474

原创 【golang】单元测试,以及出现undefined时的解决方案

单元测试 要对某一方法进行测试时,例如如下这一简单减法函数,选中函数名后右键->转到->测试1)Empty test file就是一个空文件,我们可以自己写测试的逻辑但是直接点绿色箭头运行会出问题:找不到包。我们要在终端打开此目录,带上此次测试所包含的包。这样便可正常测试。go test -v [文件名]2).Test for function就会生成模板,他会自己定义一个test的结构体切片,然后我们在add test case

2024-12-02 20:09:16 746

原创 【Linux】设计文件系统(C实现)

定义结构体//最大文件数//权限int size;//大小//内容//创建时间//修改时间//最后一次访问时间} File;获取当前时间(在显示创建时间,修改时间和访问时间时使用,用于记录当前时间)//获取当前时间创建文件(创建时注意要赋权)printf("文件数量已达上限,无法创建新文件。\n");return;printf("请输入文件名: ");printf("请输入文件权限(八进制): ");i++) {printf("文件已存在。\n");return;

2024-12-02 14:30:50 902

原创 【linux】shell编程

系统变量:如$HOME$PWD$USER等,由系统定义。自定义变量$$:当前进程PID:最近一个后台进程PID:上一个命令的退出状态。

2024-09-21 22:31:18 1609 1

原创 【linux】nice命令

nice命令是Linux系统中用于调整进程优先级的工具,通过调整进程的优先级,可以影响进程在CPU上的资源分配和执行顺序。在使用nice命令时,应谨慎考虑系统的负载情况和进程的实际需求,以合理利用系统资源并优化系统性能。

2024-09-21 22:14:09 889

原创 【linux】kill命令

kill命令在 Linux 和类 Unix 系统中用于向进程发送信号,默认情况下是发送 SIGTERM(信号 15),请求程序终止运行。如果程序没有响应 SIGTERM 信号,可以使用 SIGKILL(信号 9)强制终止进程,但这种方式不会给进程提供清理资源的机会。

2024-09-21 22:09:17 899

原创 【linux】file命令

在Linux和Unix系统中,file命令是一个非常实用的工具,用于识别文件类型。它通过分析文件的内容或文件的元数据(如文件头信息),来猜测文件是什么类型的。这对于处理未知文件或验证文件类型非常有帮助。

2024-09-19 19:50:58 520

原创 【linux】df命令

df命令在 Linux 系统中用于显示磁盘空间的使用情况。它提供了文件系统中各个分区或挂载点的总空间、已用空间、剩余空间以及挂载点等信息。这对于监控和管理磁盘空间非常有用。

2024-09-19 19:45:49 464

原创 【linux】 date命令

date命令在 Linux 和类 Unix 系统中用于显示和设置系统的日期和时间。这个命令非常灵活,允许用户以不同的格式查看日期和时间,也可以用来设置新的日期和时间(虽然这需要管理员权限,通常是通过 sudo 或以 root 用户身份执行)。

2024-09-18 12:30:37 1455

原创 【linux】pwd命令

pwd命令在 Linux 和类 Unix 系统中用于显示当前工作目录的完整路径。它是 "print working directory" 的缩写。当你在终端或命令行界面中工作时,你可能会在不同的目录(或文件夹)之间切换。pwd命令帮助你确定你当前位于哪个目录。

2024-09-18 12:27:20 530

原创 【linux】 ls命令

ls命令是 Linux 和 Unix 系统中用于列出目录内容的命令。它显示指定目录下的文件和子目录列表。如果不指定目录,ls默认显示当前目录下的内容。

2024-09-17 12:02:49 795

原创 【linux】ln 命令

硬链接和软链接都是文件系统中的引用,但它们的工作方式和对文件系统的影响不同。硬链接直接指向文件的 inode,而软链接则包含另一个文件的路径。硬链接不能跨文件系统,不能链接目录,且删除最后一个硬链接会删除文件内容。软链接可以跨文件系统,可以链接目录,但如果目标文件或目录被移动或删除,软链接就会断开。

2024-09-17 12:00:25 496

原创 【linux】cp命令

cp命令在 Linux 系统中用于复制文件或目录。它是非常基础且常用的命令之一,允许用户将文件从一个位置复制到另一个位置,或者将目录及其内容复制到另一个位置。

2024-09-15 15:47:24 691

原创 【linux】chmod命令

chmod命令用于改变文件或目录的权限。权限定义了谁可以读取、写入或执行文件或目录。chmod命令通过修改文件或目录的权限位来工作,这些权限位定义了文件或目录的拥有者、组和其他用户的访问权限。

2024-09-15 15:44:18 572

原创 【linux】 cd命令

cd命令在 Linux 和 Unix 系统中用于改变当前工作目录(Current Directory)。它是命令行界面中非常基础且常用的命令之一,允许用户快速地在文件系统中导航。

2024-09-14 14:36:23 555

原创 【linux】cat 命令

cat命令是 Linux 和 Unix 系统中非常基础且常用的一个命令,它的全称是 "concatenate" 的缩写,意为“连接”或“串联”。尽管名字听起来像是专门用于连接文件的,但cat命令的用途远不止于此。它主要用于查看、创建、合并文件内容,以及将文件内容输出到标准输出设备(通常是屏幕)或另一个文件中。

2024-09-14 14:30:05 837

原创 【C#】字符串处理器

3.查找字符串中最长的单词,并显示其长度。1.定义StringProcessor类。4.将字符串中的所有单词首字母大写。5. 将字符串中的所有单词反转。2.统计字符串中单词的数量。

2024-06-19 15:52:03 835

原创 【C#】汽车租赁系统设计与实现

通过设计和实现一个简单的汽车租赁系统,掌握C#面向对象编程的基本知识,熟悉类和对象的使用、列表数据结构的操作,以及简单的命令行界面设计。以上就是完整的代码及实现。汽车租赁系统设计与实现。

2024-06-18 12:06:36 2240

原创 【C#项目】使用百度ai人脸库实现人脸识别

本项目利用百度AI的人脸识别技术,开发了一个可以进行人脸识别的应用程序。项目涉及网络连接、文件处理、图像处理、数据库管理及音视频处理等多个技术领域。本文将详细介绍项目的整体架构和实现过程。

2024-06-17 15:20:08 2362

原创 【C#】图形图像编程

关键点在于使用Bitmap对象作为绘图表面,从而保留之前的绘图内容。通过调用panel1.Invalidate方法触发重绘,并在Paint事件中绘制Bitmap对象,这样可以确保每次绘制新内容时,之前的内容不会被清除。在Panel的Paint事件中使用Graphics.DrawImage方法将Bitmap绘制到Panel上,以实现内容的保留和更新。2 .在设计界面中拉取两个button,一个textbox(用于输出自己想输出的内容(艺术字))以及一个panel(输出在panel上显示)

2024-06-15 21:31:38 2013 4

原创 【C#】线程设计3:threadpool

将任务排队到线程池中执行。这种方法可以有效利用系统资源,提高并发性能,但需要注意线程安全。: Windows Forms 控件不是线程安全的,因此在非UI线程上操作UI控件需要通过。: 为了实现按字符换行输出,需要遍历输入的字符串,逐个处理每个字符并添加到。中,同时每个字符后面加上换行符。方法,可以在需要时安全地更新。(1).控件:group。方法来切换到UI线程。: 封装一个线程安全的。

2024-06-06 14:51:50 532

原创 【C#】线程设计2:backgroundWorker

来处理后台操作,可以防止UI线程阻塞,并且能够安全地更新UI控件。事件处理程序中,将文本逐个字符添加到一个。中获取字符列表,并将每个字符逐个添加到。中,每个字符后面都添加换行符。(1).控件:group。

2024-06-06 14:47:20 469

原创 demo,bug,程序员口中的“常驻客”到底是什么意思

"demo"通常指的是"demonstration",即演示或展示的意思。在软件开发中,一个"demo"通常是指一个简单的、可展示的版本或样本,用来展示软件产品的某些特性或功能。这可以是一个演示性的原型、一个演示用的应用程序,或者一个演示性的功能模块。"demo"通常用于展示给客户、用户或其他利益相关者,以便演示软件的潜力和功能。如果你有做程序员的朋友,肯定能常听到他说demo和bug,到底是什么意思呢?bug一般是指程序的漏洞,而相应的debug就是找到漏洞。

2024-06-05 20:35:06 1138

原创 【算法】找到范围内素数:埃拉托斯特尼筛法(Sieve of Eratosthenes)

埃拉托斯特尼筛法(Sieve of Eratosthenes)用于找到小于n的所有素数(质数)

2024-06-05 12:39:43 392

原创 将某xlsx文件转为UTF-8编码格式

在使用jupyter对数据进行处理时,导入的文件可能不是UTF-8编码格式,这时就要将文件转为UTF-8。(3)选择其他格式,将文件类型选为csv UTF-8格式。(4)再次将文件导入jupyter,便可正常访问。(1)将文件使用excel打开。(2)点击左上角文件。

2024-06-04 16:26:01 2877

原创 【C#】线程设计1:ThreadStart

线程解释见。

2024-06-03 11:16:49 1249

原创 线程,线程池及线程安全

在多线程编程中,多个线程可能同时访问和修改共享数据,如果没有合适的同步机制来保护共享数据,就会导致数据竞争、数据损坏和不确定的行为。: 线程池是一种管理和复用线程的机制,它在程序启动时创建一定数量的线程,并且维护一个任务队列。当有任务需要执行时,线程池会从空闲线程中选择一个来执行任务,执行完任务后线程会返回到线程池中等待下一个任务。线程池可以有效地减少线程的创建和销毁开销,并且可以控制并发线程的数量,防止系统资源被耗尽。在多线程编程中,一个进程可以包含多个线程,这些线程可以并行或者并发地执行不同的任务。

2024-06-03 11:05:38 777

原创 【2023蓝桥杯c++A组】【启发式合并】颜色平衡树

重儿子是指子树大小最大的儿子,通过优先遍历重儿子可以减少递归的深度,从而提高算法的效率。:DFS遍历本身是一个递归过程,对于树的算法来说,递归实现是常见的。但是,在本算法中,由于需要处理重儿子和轻儿子的不同情况,并且需要在遍历过程中维护多个数组,因此递归实现的细节较多,容易出错。算法的核心在于通过重儿子的概念来减少不必要的重复计算,同时利用颜色计数数组来快速判断当前子树是否满足条件(即所有颜色的数量都相等)。)遍历中,利用了重儿子的性质来优化计算过程,同时通过维护一个颜色的计数数组()、颜色计数的和数组(

2024-05-31 20:30:14 661

原创 【C#】如何使用C#与SQL Server数据库进行交互

(1)在工具箱中拖出dataGridView控件和botton控件(可以改名是其功能明确)(3)创建成功后会有源数据库以及其镜像(我们后续操作都在镜像完成就好)(5)在设计界面再拖入botton以及一个textbox(用于根据姓名查询)()(3)双击双击botton2,进入代码编写(插入数据)(4)双击双击botton3,进入代码编写(查询数据)(2)双击botton1,进入代码编写(检查链接)(4)新建数据库XSCJDB(学生成绩数据库)(6)编写botton5代码(按名字查询)

2024-05-31 14:10:21 1866

空空如也

空空如也

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

TA关注的人

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