- 博客(121)
- 资源 (2)
- 收藏
- 关注
原创 如何查看内存硬中断
Hard Page Fault)是指当程序访问的内存页面不在物理内存中,必须从磁盘(如交换分区或页面文件)加载到内存时发生的中断。这类中断会导致明显的性能下降,尤其是频繁发生时。通过以上方法,可以准确定位内存硬中断的来源,并采取针对性优化措施。对于关键业务系统,建议长期监控内存相关指标,避免突发性能问题。在操作系统中,内存硬中断(通常指。
2025-03-06 09:46:52
794
原创 相机触发模式
主要分为软件触发和硬件触发。手动点击, 展开客户端软件的设备属性列表中的 Acquisition Control,在 Acquisition Mode 选项框 中,若选择 Continuous,相机按照当前设置的帧率持续输出图像, 并给上位机送图像数据,可做实时显示。就是相机有硬件触发出入接口,收到外部现场的触发信号,相机拍照,然后送出图像数据,送出图像数据的反应时间按照帧速计算。至于抓拍张数可以由自己的驱动软件设定,利用软件延时可以抓拍两张,三张,甚至更多,但真正触发相机的信号只能触发一次。
2024-11-21 19:56:12
1675
原创 说下SSL/TLS四次握手过程?
SSL(Secure Socket Layer 安全套接层)是基于 HTTPS 下的一个协议加密层,用于解决 HTTP 在传输数据时使用明文而导致的不安全问题。SSL 是 HTTP 之下,TCP 之上的一个协议层,是基于 HTTP 标准并对 TCP 传输数据时进行加密,所以 HTTPS 可以想成是 HTTP+SSL 的简称。HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信。SSL/TLS四次握手过程。
2024-10-11 17:52:20
1067
原创 C++11中的std::bind的作用
std::bind是 C++ 标准库中的一个函数适配器,位于头文件中。它允许你将一个可调用对象(如函数、成员函数、lambda 表达式等)与其参数绑定,生成一个新的可调用对象。
2024-09-10 11:40:12
399
原创 c++中extern “C“的作用及理解
指令的作用是指示 C++ 编译器使用 C 语言的编译规则来编译特定的代码块。这主要影响函数名的修饰(name mangling),但不会影响 C++ 的其他特性,如类和模板。C 和 C++ 在编译期间生成函数符号的规则不同。C++ 支持函数重载,因此在编译时会将函数的参数类型信息加入到函数名中,形成独特的符号。可以确保 C++ 编译器在编译该函数时不进行名称修饰,从而使得 C++ 代码能够正确链接到 C 代码中定义的函数。是 C++ 特有的指令,用于支持 C++ 与 C 语言的混合编程。
2024-09-10 11:01:27
385
原创 Redis 的初识
在实际开发中,我们一般使用数据库(如 mysql )来存储数据,其有一些致命的缺点:如数据库持久化数据是面向磁盘的,而磁盘的读写较慢,在一般的管理系统上,不存在高并发,没有头瞬间读写大量数据的需求,这时使用传统数据库没有问题。但是如果面对一个高并发的场景,比如抢票、发红包等,或者访问量瞬间很大的一些场景,一瞬间会有成千上万的请求的到来,需要系统在极短的时间内完成成千上万次的读写操作。Redis 基于内存来实现数据的存储,因此其速度非常快。nosql 也是一种数据库,它是基于内存的,并提供一定的持久化功能。
2024-08-27 15:46:27
400
原创 http 状态码主要有哪些?【面试】
HTTP 协议在互联网上用得特别广,在浏览网页的时候经常会碰到它的状态码。这状态码其实就是服务器给客户端请求的一个回应,通过它我们就能知道请求处理得怎么样了。
2024-07-04 14:36:39
708
原创 C++线程安全是如何保证的?线程不安全是如何出现的?有什么处理方案呢
【代码】C++线程安全是如何保证的?线程不安全是如何出现的?有什么处理方案呢。
2024-07-02 20:52:21
647
原创 MVC(Model-View-Controller)模式
模型(Model)负责管理数据,视图(View)负责显示界面并接收用户输入,控制器(Controller)负责协调视图和模型之间的交互。用户通过界面输入数据后,控制器负责更新模型中的数据,并通知视图显示相应的消息。
2024-07-02 14:21:19
642
原创 C++中main函数的参数、返回值分别什么意思?main函数返回值跟普通函数返回值一样吗?
在C++中,main函数是程序的入口点,即程序开始执行的地方。main函数可以有两种形式的签名(signature):标准的main带有参数的main。
2024-06-28 11:16:48
369
原创 C++ 参数传递方式有哪些?它们有什么区别【面试】
在选择传递方式时,需要根据具体情况考虑是否需要修改实参、传递的数据类型和大小以及性能方面等进行考量。
2024-06-27 15:11:20
363
原创 面向对象设计原则(SOLID原则)C++
面向对象设计原则(SOLID原则),每个原则都有其独特的重要性和应用场景。这些原则可以帮助你在写代码时,设计出更加灵活、可维护和可扩展的C++类和系统架构。
2024-06-25 20:17:07
668
原创 C++观察者模式
观察者(Observer)模式 定义如下:是一种对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
2024-06-24 10:59:34
590
原创 C++堆栈的区别?两者大小有限制吗?【面试】
堆和栈在C++中扮演着不同的角色,堆提供了更大的灵活性和空间,但需要程序员更加小心地管理内存。栈则提供了快速的局部变量存储,但空间有限且不可控制。
2024-06-21 14:21:10
582
原创 socket通讯可以直接传地址吗?【面试】
在网络编程中,socket 通信不直接传输内存地址。这是因为网络通信是在不同的内存空间和可能不同的计算机之间进行的,内存地址在不同的进程和机器上没有意义。当你创建一个socket时,你会指定它是一个客户端(主动发起连接)还是服务器(等待连接)。此外,如果你需要在两个进程之间共享内存,你可以考虑使用共享内存或其他进程间通信(IPC)机制,但这些机制与socket通信是不同的概念,并且通常用于同一台机器上的进程间通信。例如,如果你有一个C++对象,你不能直接通过网络发送这个对象的内存地址。
2024-06-17 15:50:32
540
原创 C++ 二叉搜索树【面试】
二叉搜索树是一种非常有效的数据结构,用于快速查找、插入和删除操作。它的核心特点是每个节点的值都大于其左子树上所有节点的值,小于其右子树上所有节点的值。这保证了二叉搜索树可以进行中序遍历,从而获得有序的数据序列。
2024-06-14 17:32:40
644
原创 C++ 二分查找法【面试】
二分查找是一种高效的搜索算法,适用于有序数组。它的基本思想是将目标值与数组中间的元素进行比较。如果目标值大于中间元素,搜索范围缩小至数组的右半部分。二分查找法是一种在有序数组中查找特定元素的算法,其时间复杂度为O(log n)。:解释二分查找的基本原理,包括如何确定中间位置,以及如何根据中间值与目标值的比较结果更新搜索范围。如果数组中有重复元素,二分查找将返回任意一个匹配的索引。:讨论二分查找的时间复杂度为O(log n),其中n是数组的大小。:讨论函数的返回值,即找到目标时返回索引,未找到时返回-1。
2024-06-14 16:53:33
624
原创 HTTP中get与post的区别?在传输数据类型上有什么区别?【面试】
GET和POST是HTTP协议中两种基本的请求方法,它们在数据传输和使用场景上有明显的区别。GET请求通过URL传输数据,适合少量和非敏感信息的传输,且具有幂等性和可缓存性。POST请求则通过请求体传输数据,适合大量数据和敏感信息的传输,但不具有幂等性,且不会被浏览器缓存。GET请求的数据长度受限,通常只传输ASCII字符,而POST请求可以传输包括二进制数据在内的各种数据类型,如表单数据、JSON、XML等。
2024-06-14 15:23:44
661
原创 TCP如何保证数据传输的稳定性和可靠性
发送方为每个字节分配序列号,接收方通过确认号来确认接收到的数据,并指示期望接收的下一个字节。如果接收方收到的数据有缺失,它会发送相同的确认号,请求发送方重传丢失的数据。此外,TCP使用流量控制机制,如滑动窗口,来控制发送方的数据流量,确保接收方不会被大量数据淹没。确认号在这里起到了关键作用,它不仅确认了数据的接收,也隐含了流量控制的信息。确认号不仅用于确认数据的接收,还隐含了流量控制的信息。当接收方返回一个确认号时,它同时也在告知发送方接收窗口的大小,即接收方还能接收多少数据。
2024-06-14 14:47:19
845
原创 QT与VS的区别?使用QT的好处?
总结来说,Qt 是一个强大的跨平台应用程序开发框架,而 Visual Studio 是一个功能丰富的集成开发环境,它们可以结合使用(Qt 可以作为 Visual Studio 的插件),也可以根据项目需求单独使用。
2024-06-13 14:50:21
2280
原创 C++算法-青蛙跳台阶【面试】
对于更高的台阶,到达那里的方法数是到达前一阶和前两阶台阶的方法数之和,因为青蛙可以选择从这两个位置跳过来。我们从第三阶台阶开始,逐步计算直到第。"青蛙跳台阶"问题是一个经典的递归问题,也与斐波那契数列有关。问题是这样的:一只青蛙站在一个n阶台阶上,它每次可以跳1阶或2阶,问青蛙跳到顶端总共有多少种跳法。这种方法避免了递归方法中的重复计算,时间复杂度是O(n),空间复杂度也是O(n)。"青蛙跳台阶问题可以通过动态规划来解决。来存储子问题的解,避免了重复计算。阶台阶的跳法数等于到达。阶台阶的跳法数之和。
2024-06-13 14:38:33
415
原创 什么是僵尸进程,如何回收
当一个子进程终止时,操作系统会保留该进程的一些信息(如进程ID、退出状态等),直到父进程读取这些信息。这段时间内,该子进程处于一个特殊的状态,称为僵尸进程(Zombie Process)。进程已经终止,但仍在进程表中占有一个条目。它的资源(如内存)已被释放,但进程控制块(PCB)等信息仍然保留。等待父进程调用wait()或waitpid()来获取它的终止状态。
2024-06-13 11:20:49
607
原创 SendMessage和PostMessage的区别【面试】
同步与异步: SendMessage 是同步的,调用线程会等待消息被目标窗口处理完毕。而 PostMessage 是异步的,它将消息放入消息队列后立即返回,不等待消息处理。返回值: SendMessage 会返回目标窗口窗口过程处理消息的结果,而 PostMessage 总是返回 TRUE ,仅表示消息已入队列,不保证已被处理。性能影响: SendMessage 可能因为等待消息处理而影响性能,而 PostMessage 由于其非阻塞特性,对性能的影响较小。
2024-06-13 01:06:40
797
原创 C++生产者消费者模型代码【面试】
在C++中,我们可以使用std::mutex和std::condition_variable来实现生产者-消费者模型。std::mutex用于保护共享资源,确保同时只有一个线程可以访问缓冲区。std::condition_variable用于在生产者生产数据后通知消费者,以及在消费者等待数据时挂起。生产者将数据放入缓冲区,并使用notify_one唤醒一个等待的消费者。消费者在缓冲区空时使用wait挂起,直到被生产者通知。这个模型确保了线程安全和有效的线程间通信。
2024-06-12 21:59:22
175
原创 C++:调整数组顺序使奇数位于偶数前面【面试】
要解决这个问题,我们可以使用双指针技术。首先,我们初始化两个指针,一个指向数组的开始,另一个指向数组的末尾。然后,我们分别从数组的两端向中间扫描,左边的指针寻找偶数,右边的指针寻找奇数。一旦找到,我们就交换这两个数的位置。这种方法不需要额外的存储空间,并且时间复杂度为O(n),是一种高效且常用的解决方案。在C++,如果要调整数组顺序使所有奇数位于偶数前面,这里提供一种简单且常用的方法:双指针技术。这种方法保证了所有的奇数在数组的前半部分,偶数在后半部分,满足了题目要求。这段代码中,我们使用了两个指针。
2024-06-12 21:51:21
357
原创 简单说一下STL中的map容器的特点、底层实现和应用场景【面试】
适合用于需要有序数据结构的场景,如实现快速查找、自动排序的数据存储,或者进行范围查询。它的应用场景广泛,包括但不限于唯一键值的快速检索、维护有序数据集合等。是C++ STL中的一个关联容器,它使用红黑树作为底层数据结构来维护元素的有序性。它的主要特点包括自动排序、唯一键值保证、以及对数时间复杂度的主要操作。
2024-06-12 21:34:15
581
原创 C和C++动态分配内存方法是什么,有什么区别?本质区别是什么?【面试】
操作符提供了对动态内存生命周期管理的抽象,与C语言更底层的内存管理方式相比,这种抽象允许开发者关注于对象级别的操作,而不是内存块的管理。这可以看作是C++在动态内存管理方面与C的本质区别。不仅仅是分配和释放内存,它们还负责对象的构造和析构,这是C语言所不具备的。C的内存分配机制与面向对象的特性紧密集成。C和C++在动态内存分配上提供了不同的机制和方法。
2024-06-12 21:28:07
886
原创 Linux内核同步机制有哪些?【面试】
Linux内核提供了多种同步机制来处理并发访问。自旋锁适用于快速持有和释放的情况,而互斥锁适用于可能长时间持有的场景。读写锁允许多个读者同时访问资源,但写者需要独占访问。信号量用于控制对资源的访问数量。完成量和等待队列常用于等待某个条件的发生。屏障用于同步多个线程。顺序锁和RCU是针对特定场景优化的同步机制。此外,还有下推锁、定时锁和Futex等其他同步工具。选择正确的同步机制对于提高系统性能和保证数据一致性至关重要。在Linux内核中,同步机制是确保在多线程或多任务环境中对共享资源正确访问的关键技术。
2024-06-12 21:22:23
486
原创 Release和Debug的区别?Release有什么好处?【面试】
Debug和Release是编译配置的两种模式,主要用于不同的目的。Debug模式主要用于开发过程中,它不包含优化并提供完整的调试信息,方便开发者查找和解决问题。而Release模式则用于最终产品的发布,它经过高度优化,减少了调试信息,以提高程序的性能和减小文件大小。使用Release模式的好处包括更快的运行速度、更高效的资源使用和更好的用户体验,适合生产环境部署。
2024-06-12 21:17:44
4227
原创 C++指针和引用的区别
也可以在运行时改变指向。引用是变量的别名,必须在声明时初始化,并且不能改变所引用的对象。指针需要手动管理内存,而引用则不需要。此外,指针常用于动态内存分配和数组,而引用则常用于函数参数,以提高效率并允许修改原始数据。在C++中,指针和引用是两种不同的特性,它们在程序中扮演不同的角色。: "在C++中,指针是存储变量地址的变量,可以是。
2024-06-12 21:12:30
269
Android垂直滚动广告
2018-05-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人