自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】Linux中的调度和切换

在任何的分时操作系统中,其调度都是较为公平的调度。在来回顾一下关于优先级为什么会被限制的问题:Linux为什么调整优先级是要受到限制的呢??如果不加限制,将自己进程的优先级调整到非常高,别人的优先级调整的非常低,优先级高的进程优先得到资源,常规进程很难获得CPU资源,会造成进程饥饿问题。基本概念:进程在运行的时候,放在CPU中,直接必须要把代码跑完吗??不是,在现代的操作系统中,都是基于时间片进行轮转操作执行的。

2025-05-06 22:42:04 428

原创 【Linux】进程状态

进程在运行过程中,由于等待某些事件(如 I/O 操作完成、等待信号量、等待其他进程的资源释放等)而无法继续执行,此时进程会进入阻塞状态。而 “阻塞挂起” 可以理解为进程不仅处于阻塞状态,还被操作系统挂起,即暂时将进程从内存中移到外存(如磁盘)的对换区中,以腾出内存空间给其他更需要的进程使用。当引起阻塞的事件发生后,进程不会立即恢复到运行状态,而是先从挂起状态转换到就绪挂起状态,等待被调度到内存中后才进入就绪状态,进而有可能被调度执行。

2025-05-06 21:11:06 658

原创 【Linux】环境基础开发工具使用

这个工具是用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件的,安装完毕之后可以通过拖拽的方式将我呢见上传过去,但是我一般是用 xfit 来进行传输文件。

2025-05-01 17:17:07 210

原创 【Lua语言】Lua语言快速入门

Lua是一种,他使用标准C语言编写并以源代码形式开放。这意味着Lua虚拟机可以很方便的嵌入别的程序中,从而为应用程序提供灵活的扩展和定制功能。同时,在目前脚本引擎中,。

2025-04-19 13:47:54 818

原创 【Redis】Redis中的渐进式遍历和数据库的知识点

Redis使用scan命令进行渐进式遍历键,进而解决直接使用keys获取键时可能出现的阻塞问题。每次scan命令的时间复杂度是O(1),但是要完整地完成所有键的遍历,需要执行多次scan。scan返回值:下一次scan的游标(cursor)以及本次得到的键。注意:渐进式遍历scan虽然解决了阻塞的问题,但是如果在遍历期间有所变化(增加、修改、删除),可能导致遍历时键的重复遍历或者遗漏。这点务必要在实际开发中考虑。

2025-04-17 23:20:09 408

原创 【Redis】数据结构和内部编码

Java中的一个char == 2字节,Java中的char基于unicode这样的编码方式能够表示中文等符号~~Java中的char是用的unicode,一个汉字使用两个字节,Java中的String则是使用的utf8,一个汉字就是3个字节了,Java的标准库内部,在进行上述的操作过程中,程序员一般是感知不到编码方式的变换的。如果对应的值是负数,则视为减去对应的值。MySQL的时候,varchar(N)此处的N的单位就是字符,MySQL中的字符也是完整的汉字,这样的一个字符,也可能是多个字节。

2025-04-14 22:13:22 685

原创 【Redis】Redis C++使用

为什么我们可以编写出一个自定义的Redis客户端?因为Redis公开了自己的自定义协议。而对于一些其他软件的客户端,我们无法编写出一个自定义的Redis客户端,因为他们没有公开自己的自定义协议,但是我们可以通过一些抓包/逆向的手段猜测其应用层协议是什么样子的!!在网络通信过程中,会用到很多的“协议”,比如数据链路层的以太网协议,网络层的IP协议,传输层的TCP/UDP协议,应用层的协议更多!!

2025-04-13 14:38:07 1150

原创 【Redis】通用命令

办公环境:入职公司之后,公司会给你发一个电脑(8C16G512G)开发环境:有的时候,开发环境和办公环境是一个;有的时候,开发环境是单独的服务器(28C128G4T),做前端和客户端,一般来说,开发环境就是办公环境,后端来说,很可能是单独的服务器。有的后端程序会比较复杂:编译一次时间特别久,使用高性能服务器进行编译;有的程序一启动要消耗很多的CPU和内存资源,办公电脑难以支撑;有的程序比较依赖linux,在windows环境中搭不起来。测试环境:测试工程师使用的(28C128G4T)

2025-04-05 22:38:13 1332

原创 【Redis】背景知识

Redis是一个客户端-服务器结构的程序!!!

2025-04-05 17:51:22 826

原创 【Redis】服务端高并发分布式结构

Redis是开源的,用于存储数据的,在内存中存储数据。Redis被用作数据库,缓存,消息队列等一些作用。在数据库的学习中,我们学习了MySQL,但是MySQL有一些大问题:其访问速度比较慢。在互联网产品中,对于性能要求是很高的。因为Redis是存储在内存中,其速度比较快,也是可以作为数据库来进行使用的,但是其最大的劣势是:存储空间是有限的!因此,为了达到即快又大的要求,我们需要将Redis和MySQL结合使用。Redis可以作为缓存,存储一些热点数据,可以满足大部分的访问需求。

2025-04-05 14:23:49 878

原创 【python脚本】基于pyautogui的python脚本

自动化是指使用技术手段模拟人工,执行重复性任务。准确率100%,高于人工。

2025-04-04 20:56:33 1005

原创 【C++语言】unordered 系列关联式容器

unordered_map 是存储 <key,value> 键值对的关联式容器,其允许通过 keys 快速的索引到与其对应的 value。在 unordered_map 中,键值通常用于唯一地标识元素,而映射值是一个对象,其内容与此键关联。键和映射值的类型可能不同。在内部,unordered_map没有对 <key,value> 按照任何特定的顺序排序,为了能在常数范围内找到 key 所对应的 value,unordered_map 将相同哈希值的键值对放在相同的桶中。

2025-03-21 15:24:48 658

原创 【C++语言】继承和多态常见的面试问题

重载(Overloading)定义:在同一个作用域中,允许定义多个同名函数或方法,只要它们的参数列表不同(参数类型、参数个数或参数顺序不同)。特点重载发生在同一个类中或同一命名空间中。编译器根据参数列表来区分不同的重载版本。什么是抽象类?抽象类(Abstract Class)是一个不能被实例化的类,它通常包含一个或多个纯虚函数(Pure Virtual Function)。纯虚函数是一个没有实现的虚函数,其作用是为派生类提供一个接口规范。

2025-03-20 21:59:23 590

原创 【C语言】实用调试技巧

Debug通常称为调试版本,他包含调试信息,并且不作任何优化,便于程序员调试程序Release称为发布版本,他往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好的使用最常用的几个快捷键:F5:启动调试,经常用来直接跳到下一个断点处F9:创建断点和取消断点断点的重要作用:可以在程序的任意位置设置断点。这样就可以使得程序在想要的位置随意停止执行,继而一步步执行下去F10:逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句。

2025-03-20 20:10:42 844

原创 【C++知识点】知识点

D:错误,map中key是唯一的,每个key都有与之对应的value,经常需要通过key获取value,因此 map为了形象简 单重载了[]运算符, multimap中key是可以重复的,如果重载了[]运算符,给定 一个key时,就没有办法返回 value了,因此,multimap中没有重载[]运算符。this指针在非静态的成员函数里面,对象不存在。A.栈区主要存在局部变量和函数参数,其空间的管理由编译器自动完成,无需手动控制,堆区是自己申请的空间,在不需 要时需要手动释放。

2025-03-19 21:10:46 827

原创 【数据结构】栈和队列

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出,入队列:进行插入操作的一端称为队尾,出队列:进行删除操作的一端称为队头。栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素的操作,进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更加优一些,因为数组在尾上插入数据的代价比较小。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈,出数据在栈顶。

2025-03-15 22:03:14 354

原创 【数据结构】顺序表和链表

线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表有:顺序表,链表,栈,队列,字符串线性表在逻辑上是线性结构,也就是说是连续的一条直线。但是在物理结构中并一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。

2025-03-15 21:47:38 496

原创 【C++语言】特殊类设计

C++11扩展delete的用法,delete除了释放new申请的资源外,如果在默认成员函数后跟上=delete,表示让编译器除掉该默认成员函数。只声明不定义:不定义是因为该函数根本不会调用,定义了其实也没有什么意义,不写反而还简单了,而且如果定义了就不会防止成员函数内部拷贝了。一个类只能创建一个对象,即单例模式,该模式可以保证系统中该类只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。设置成私有:如果只声明没有设置成private,用户自己如果在类外定义了,就介意不能禁止拷贝了。

2025-03-15 20:39:49 323

原创 【C++语言】二叉树进阶

对有n个节点的二叉搜索树,若每一个元素查找的概率相等,则二叉搜索树平均查找长度是节点在二叉搜索树的深度的函数,即节点越深,则比较的次数越多。情况d:在他的右子树中寻找中序下的第一个节点(关键码最小),用他的值填补到被删除节点中,再来处理该节点的删除问题——替换法删除。情况b:删除该节点且使被删除节点的双亲节点指向被删除节点的左孩子节点——直接删除。情况c:删除该节点且使被删除节点的双亲节点指向被删除节点的右孩子节点——直接删除。树不为空,则先按二叉搜索树性质查找插入位置,插入新节点。

2025-03-15 15:57:11 249

原创 【C++语言】继承

{};一般不使用多继承继承和组合继承是一种 is-a 的关系,也就是说每一个派生类对象都有一基类对象组合是一种 has-a 的关系,假设B组合A,每一个B对象中都有一个A对象优先使用组合,而不是类继承继承允许你根据基类的实现来定义派生类的实现。这种通过生成派生类的复用通常被称为白箱复用,在继承方式中,基类的内部细节对子类可见,继承一定程度破坏了基类的封装,基类的改变对派生类有很大的影响,派生类和基类间的依赖关系很强,耦合度高。

2025-03-15 15:11:31 694

原创 【C++语言】stack和queue

队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一段插入元素,另一端提取元素队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供了一组特定的成员函数来访问其元素,元素从队尾入队列,从队头出队列底层容器可以是标准容器类模版之一,也可以是其他专门设计的容器类。该底层容器应该至少支持以下操作:empty:检查队列是否为空size:返回队列中有效元素的个数front:返回队头元素的引用back:返回队尾元素的引用。

2025-03-15 12:47:16 949

原创 【C++语言】list

1.1 list的介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每一个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list和forward_list非常相似:最主要的不同在于forward_list是单链表,只能超前迭代,其更简单高效。与其他的序列式容器相比,list通常在任意位置进行插入,移除元素的执行效率更好。

2025-03-14 11:38:54 266

原创 【C++语言】vector

reserve只负责开辟空间,如何确定知道需要使用多少空间,reserve可以缓解vector增容的代价缺陷问题resize在开空间的同时还会进行初始化,影响size。

2025-03-13 20:46:13 651

原创 【C++面经】

在C++中,set是一个基于红黑树的有序容器,存储唯一的元素,并且默认情况下按照元素的 < 运算符来进行排序。自定义类型的比较函数:由于set需要知道如何比较元素以保持有序,你需要提供一个比较函数或者重载 < 运算符来决定元素的排序。保证元素的唯一性:set会确保所有元素是唯一的,因此你需要确保元素的相等性(==运算符)是正确实现的。构造函数委托是C++11引入的一项特性,允许一个构造函数调用另一个构造函数来简化代码,避免重复代码。在构造函数委托中,一个构造函数可以直接调用同一个类中的另一个构造函数。

2025-03-11 21:05:07 647

原创 【实习面试】处女面

入度和出度是图论中的两个基本概念,用来描述途中节点和其他节点的关系,特别是在有向图中,入度和出度用来表示节点的连接情况。进程:进程是操作系统分配资源的基本单位,他是正在运行的程序实。每一个进程有自己的独立内存空间、数据、堆栈等资源。线程:线程是进程中的执行单元,也叫做轻量级进程。线程共享进程的资源(比如内存空间),但是每一个线程有自己的堆栈和寄存器。:按钮控件,通常用于触发事件。QLabel:标签控件,通常用于显示文本或图像。QLineEdit:单行文本框,允许用户输入一行文本。QTextEdit。

2025-03-10 19:58:47 689 2

原创 C++方向的面经

信号和槽的参数个数必须一致。如果信号有多个参数,槽也必须有相同的参数个数。如果参数个数不匹配,Qt 会发出警告并且不会成功连接信号与槽。可以通过默认参数、QVariant或者 Lambda 函数来处理不同数量的参数。参数的类型必须匹配,或者能够进行隐式转换。分包和粘包问题是由于 TCP 的字节流特性导致的,可以通过数据包头部长度字段、分隔符等方式来解决。丢包可能是由于网络拥堵或设备故障引起的,但 TCP 提供了重传机制来确保数据的可靠性。抓包。

2025-03-05 21:22:41 928

原创 【Redis】Redis 入门

借鉴枫枫知道。

2025-02-28 18:23:49 1410

原创 【C++语言】string 类

C语言中,字符串是以 “\0” 结尾的一些字符的集合,为了操作方便,C标准库中提供了一些 str 系列的库函数,但是这些库函数与字符串是分离开的,不太符合 OOP 的思想,而且底层空间需要用户自己管理,有可能会发生越界访问。

2025-02-20 21:49:14 707

原创 【C++语言】初识模版

class 类模板名// 类内成员定义// 动态顺序表// 注意:Vector不是具体的类,是编译器根据被实例化的类型生成具体类的模具public :, _size(0){}// 使用析构函数演示:在类中声明,在类外定义。~Vector();// 注意:类模板中函数放在类外进行定义时,需要加模板参数列表if(_pData)

2025-02-11 10:27:02 429

原创 【C++语言】类和对象(下)

定义时不添加static关键字,类中只是声明类静态成员即可用。

2025-02-10 21:22:34 864

原创 【C++语言】类和对象(中)

默认的拷贝构造函数对象按内存存储按字节序完成拷贝,这种拷贝称为。

2025-02-10 16:50:59 588

原创 【C++语言】C++入门

定义命名空间,需要使用到 namespace 关键字,后面跟着命名空间的名字,然后接一对 { } 即可,{ } 中即为命名空间的成员。// 1. 正常的命名空间定义// 命名空间中可以定义变量/函数/类型int val;//2. 命名空间可以嵌套int a;int b;int c;int d;//3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。// ps:一个工程中的test.h和上面test.cpp中两个N1会被合并成一个。

2025-02-10 14:22:01 1113

原创 【go语言】protobuf 和 grpc

这对 Go 开发者来说是非常重要的,因为它确保了生成的 Go 代码能够正确地与其他 Go 代码进行集成。在进行编写 proto 文件的时候,我们需要将编号和变量一一对应,不能出现在不同目录下的同一个proto 文件出现不对等的情况,否则会出现一些错误。生成 go 代码时,protoc 会根据 go_package 选项来决定生成的 go 文件的路径。:Go 代码会根据这个选项来决定生成的 Go 文件放置的路径和包名,确保代码结构符合 Go 项目的标准结构。文件中指定生成的 Go 代码的包路径。

2025-02-03 10:25:21 1011 1

原创 【go语言】grpc 快速入门

gRPC 是由 Google 开发的一个高效、开源的远程过程调用(RPC)框架,用于在分布式系统中进行通信。它是基于 HTTP/2 协议,支持多种语言,能够让不同的系统或应用程序(即使使用不同的编程语言)进行高效的通信。

2025-02-02 11:52:17 1347 1

原创 【go语言】接口

在Go语言中,接口(interface)是一个非常重要的概念,它定义了一组方法的集合。实现一个接口的类型,只需要提供该接口中所有方法的实现,无需显式声明“实现了某接口”,Go会自动推断。Method1() // 方法1的签名Method2() // 方法2的签名// 可以有多个方法type关键字用于定义类型;是接口的名称;interface是Go的关键字,用于定义接口;接口中的方法签名不包含实现,只有方法的名称和参数/返回值列表。

2025-01-30 13:45:20 1338

原创 【go语言】gorm 快速入门

ORM(,Object-Relational Mapping)是一种程序设计技术,用于在关系型数据库和面向对象编程语言之间进行转换和映射。ORM 允许开发者通过面向对象的方式与数据库交互,而无需直接编写复杂的 SQL 查询语句。

2025-01-30 10:36:18 848

原创 【go语言】指针

在 Go 中,指针通过来声明,它指向某种类型的变量。用于声明指针类型。用于取变量的地址(即获取指针)。var ptr *int = &a // ptr 是指向 a 的指针fmt.Println("a 的值:", a)fmt.Println("ptr 指向的地址:", ptr) // 输出 a 的地址fmt.Println("ptr 指向的值:", *ptr) // 输出 a 的值:声明一个ptr变量,类型为指向int的指针。&a:取a的地址,并将其赋值给指针ptr。*ptr:解引用,获取。

2025-01-29 21:40:50 1442 1

原创 【go语言】结构体

type也可以用来定义结构体类型,这种类型用于存储多个字段(数据)。// 定义一个结构体类型Age int// 创建一个 Person 类型的实例fmt.Println(p) // 输出 {Alice 30}type还可以用来定义函数类型,特别是在回调函数或接口方法中非常有用。// 定义一个函数类型// 使用函数类型fmt.Println(add(3, 5)) // 输出 8在这个例子中,AddFunc是一个函数类型,它定义了一个接收两个int参数并返回一个int类型结果的函数。type。

2025-01-29 21:19:55 1069

原创 【go语言】函数

在 go 语言中,函数是代码块的集合,用于执行特定任务或者计算。函数接受输入(成为参数),执行操作并返回输出(称为返回值)。go 语言中的函数定义非常简单且灵活。在 go 语言中,函数通过 func 关键字定义。func:用于声明函数。:函数的名字,通常首字母大写表示公开(exported)函数,首字母小写表示私有(unexported)函数。:参数列表(可选),参数使用name type的格式。多个参数之间用逗号分隔。returnType:返回值类型(可选)。如果函数没有返回值,则省略。

2025-01-29 10:55:36 1368

原创 【go语言】并发编程

是一个用于描述程序中操作之间因果顺序的规则。在并发编程中,happen-before 机制定义了如何确保一个操作在另一个操作之前发生,并且保证一个操作的结果能够对其他操作可见。具体而言,程序顺序规则(Program Order Rule):在同一个 goroutine 内,代码的执行顺序是保证的,即一个操作发生在前一个操作之后。同步规则(Synchronization Rule):一个 goroutine 对 channel 的发送操作(ch <- x。

2025-01-27 18:52:03 1356

C语言的超级马里奥代码,希望大家可以喜欢

C语言的超级马里奥代码,希望大家可以喜欢

2023-08-04

shell脚本的基础用法

shell脚本的基础用法

2023-08-03

飞机大战的代码,希望大家可以喜欢

飞机大战的代码,希望大家可以喜欢

2023-08-03

空空如也

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

TA关注的人

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