IT生涯
文章平均质量分 75
挨踢小明
以不加班为目的的程序员。具有部分完美主义,爱生活,爱工作,爱做饭,爱旅游。
展开
-
c++开发之编译curl(安卓版本)
为了在 Android 上编译支持OpenSSL的libcurl,你需要手动编译libcurl和OpenSSL,并确保它们能够在 Android 的交叉编译环境中正常工作。以下是详细的步骤说明。原创 2024-09-28 22:32:53 · 796 阅读 · 0 评论 -
c++开发之编译curl(windows版本)
在 Windows 上编译支持 OpenSSL 的 cURL 库并不简单,因为涉及到多个库的依赖关系以及工具链的配置。原创 2024-09-27 23:07:19 · 913 阅读 · 0 评论 -
c++开发进阶之内存差异
内存对齐是为了提高CPU的内存访问效率。编译器会自动进行内存对齐,但可以使用alignasalignof等方式手动控制。理解内存对齐和填充对编写高效的C++代码非常重要,特别是在设计复杂的数据结构时。原创 2024-09-25 09:42:58 · 855 阅读 · 0 评论 -
c++开发实战之嵌入式
C++在嵌入式开发中的应用带来了面向对象编程的优势,增强了代码的模块化和可维护性。然而,由于嵌入式系统的资源限制,使用C++时需要谨慎,尽量避免复杂的特性,如异常处理、RTTI和动态内存分配等。同时,通过合理使用C++的模板、命名空间和内联函数,可以在保持高效的基础上提升代码的可读性和可维护性。C++的使用在嵌入式开发中有着巨大的潜力,只要适当优化和配置,它能够在保证系统性能的同时提升代码质量。原创 2024-09-25 09:23:36 · 784 阅读 · 0 评论 -
c++开发进阶之大小端问题
高位字节存储在低地址,低位字节存储在高地址。原创 2024-09-24 23:39:05 · 920 阅读 · 0 评论 -
c++开发实战之栈溢出
栈溢出通常由递归过深、局部变量占用过多或无限递归引发。为避免栈溢出,可以优化递归算法、使用堆代替栈、减少局部变量的大小以及增加合理的终止条件。通过合理设计程序结构和优化算法,可以有效避免栈溢出的风险。原创 2024-09-23 23:30:19 · 1309 阅读 · 0 评论 -
c++开发实战之网络编程(四 服务端多线程)
selectpoll和epoll都可以与pthread结合使用,以实现高并发的网络服务器。通过为每个连接创建一个新的线程,处理与客户端的交互逻辑。使用使线程自动释放资源,无需主线程显式调用。selectpoll和epoll的选择可以基于应用场景的需求,epoll通常在处理大量连接时性能最佳。原创 2024-09-22 00:00:00 · 463 阅读 · 0 评论 -
c++开发实战之网络编程(三 N个终端)
select:适合少量文件描述符,兼容性好,但性能有限。poll:相比select有一定改进,没有文件描述符限制,但性能仍会随文件描述符数量增加而下降。epoll:Linux 平台上高效的多路复用机制,适合处理大量连接。原创 2024-09-21 00:30:00 · 696 阅读 · 0 评论 -
c++开发实战之网络编程(二 TCP/IP协议)
在C++中使用TCP/IP协议,通常通过操作系统提供的套接字(Socket)接口来实现。套接字是一种用于网络通信的编程接口,它支持通过TCP/IP协议进行通信。在Linux上,通常使用BSD套接字API,而在Windows上,使用的是WinSock API。以下是C++中实现TCP/IP协议的步骤详解,并以客户端和服务器代码为例说明。原创 2024-09-21 00:00:00 · 491 阅读 · 0 评论 -
c++开发进阶之广度优先搜索(BFS)
BFS 是一种非常重要的图遍历算法,适用于寻找无权图的最短路径、层次遍历等应用。通过队列的机制,它能够高效地按层次逐步遍历图中的所有节点,是解决多种问题的基础算法之一。原创 2024-09-20 00:06:58 · 754 阅读 · 0 评论 -
c++开发进阶深度优先搜索(DFS)
DFS 是一种强大的遍历算法,广泛应用于图和树的遍历中。通过递归或栈的方式,它能够高效地遍历整个图,同时也为许多复杂问题提供了基础。DFS 算法通常是图论中很多高级算法的基础。原创 2024-09-19 21:38:38 · 572 阅读 · 0 评论 -
c++设计模式
提供一个创建一系列相关或依赖对象的接口,而无需指定它们的具体类。原创 2024-09-19 21:34:32 · 1352 阅读 · 0 评论 -
C++开发必备之stl进阶(八 unordered_map)
假设我们有一个自定义类型作为键,需要自定义哈希函数。int x;int y;// 自定义哈希函数return 0;如果需要不同的键比较逻辑,可以通过提供自定义比较函数来实现。然而,对于,键比较函数需要用于处理哈希冲突时键的相等性判断,通常不需要修改,除非有特殊需求。当使用自定义类型作为键时,需要自定义哈希函数和键比较函数。// 自定义键类型int age;// 自定义哈希函数return 0;有时需要对数据进行分区或分组,可以结合使用和算法。原创 2024-09-18 14:51:06 · 833 阅读 · 0 评论 -
C++开发必备之stl进阶(七 队列)
是标准模板库(STL)中的容器适配器,遵循**先进先出(FIFO,First In First Out)**的原则。是 C++ 标准模板库中的容器适配器,旨在实现先进先出(FIFO,First In First Out)的队列数据结构。返回队列头部元素的引用(不删除该元素),可以通过它来访问或修改头部的元素。本身并不是一个独立的容器,它是一种容器适配器,基于底层容器来实现其功能。)包装成队列的形式,提供了头部出队、尾部入队的接口。相似,但它返回的是队列中的最后一个元素。返回队列尾部元素的引用,和。原创 2024-09-18 14:50:54 · 251 阅读 · 0 评论 -
C++开发必备之stl进阶(六 栈)
是标准模板库(STL)中的容器适配器,遵循**后进先出(LIFO,Last In First Out)**的原则。是一个容器适配器,它限制了底层容器的操作,仅提供对栈的基本操作接口。移除栈顶元素,注意此操作并不会返回被移除的元素,若需要访问栈顶元素可以先调用。我们可以使用栈将整数中的每一位压入栈中,然后按顺序弹出,以实现整数反转。本质上是一个容器适配器,它封装了一个底层容器,默认情况下底层容器是。返回栈顶元素的引用(不删除),可以通过它来访问或修改栈顶的元素。的一个完整示例,它展示了栈的基本操作。原创 2024-09-18 14:50:42 · 261 阅读 · 0 评论 -
C++开发必备之stl进阶(五 优先队列)
可以通过自定义比较函数来定义复杂类型的优先级队列。例如,假设我们有一个。原创 2024-09-18 14:50:26 · 301 阅读 · 0 评论 -
C++开发必备之stl进阶(四deque)
(双端队列,Double-ended Queue)是 C++ 标准模板库(STL)中的一种序列容器,允许在两端(前端和后端)高效地插入和删除元素。支持在容器的头部和尾部同时进行高效的插入和删除操作,而。在头部插入元素时效率较低,因为它需要移动所有元素。提供了多种操作来支持在头部和尾部插入和删除元素。提供了一些方法来检查容器的大小、是否为空等。支持迭代器,可以使用标准的迭代器操作来遍历。也支持常数时间的随机访问,使用下标运算符。允许在任意位置插入或删除元素,使用。来访问特定位置的元素。原创 2024-09-18 01:00:00 · 750 阅读 · 0 评论 -
C++开发必备之stl进阶(三高级操作)
std::set// 按绝对值降序排序});// 输出: 5 4 3 2 1return 0;示例:使用 Lambda 表达式查找特定元素// 查找第一个大于 3 的元素});if (it!// 输出: 4return 0;原创 2024-09-18 00:15:00 · 2000 阅读 · 0 评论 -
C++开发必备之stl(二迭代器)
等)提供了一种统一的遍历机制。迭代器类似于指针,可以用来指向容器中的元素,并通过递增或递减操作来遍历容器。迭代器是一个可以指向容器中元素的对象,类似于指针。它可以被用于遍历容器的元素,而无需关心容器的底层实现。迭代器失效通常发生在容器结构改变时,比如删除、插入操作。C++ 迭代器(Iterator)是标准模板库(STL)中的重要概念,它为容器(如。)只能读取容器中的元素,不能修改元素的值。返回指向“末尾”之后位置的迭代器。迭代器通常通过 STL 容器的。返回指向第一个元素的迭代器,原创 2024-09-17 12:37:09 · 600 阅读 · 0 评论 -
C++开发必备之stl(一概述)
C++ STL(Standard Template Library,标准模板库)是C++中一个强大且广泛使用的库,包含了大量可复用的模板类和函数。这些工具为程序员提供了非常高效的容器、算法和迭代器,能够帮助开发者快速完成各种常见的编程任务。容器(Containers)算法(Algorithms)迭代器(Iterators)原创 2024-09-17 12:29:56 · 837 阅读 · 0 评论 -
c++面试八股文(大公司通用)
在C++面试中,常见的问题通常会围绕C++的基础知识、数据结构与算法、系统设计、编程技巧、以及实际应用中的场景。以下是华为C++面试中常见的“八股文”问题及其简要回答思路。C++中的用法有哪些? 回答:C++中构造函数和析构函数的执行顺序? 回答:C++中指针的作用是什么? 回答:C++中的深拷贝与浅拷贝区别? 回答:C++的多态性是如何实现的? 回答:什么是虚析构函数,为什么需要它? 回答:接口类和抽象类的区别是什么? 回答:C++中内存分配方式有哪些? 回答:智能指针的作用和类型? 回答:C++中的RA原创 2024-09-13 17:27:05 · 1531 阅读 · 0 评论 -
零基础用python开发区块链(五web3进阶)
web3.py是一个功能强大的 Python 库,用于与以太坊区块链进行交互。它提供了一系列功能,使得开发者可以轻松地与以太坊网络进行交易、查询数据、调用智能合约、管理账户、监听事件等。下面是web3.py。原创 2024-09-09 23:20:01 · 1122 阅读 · 0 评论 -
零基础用python开发区块链(四ABI详解)
在以太坊中,是智能合约与外部世界(如 Web3 应用或 DApp)进行交互的接口。它定义了智能合约的函数、事件、数据结构的编码规则,并且通过 ABI,你可以从外部调用合约的函数,或监听合约事件。一个智能合约的 ABI 通常是一个 JSON 文件,包含了合约中所有可调用的函数、可监听的事件及其参数的描述。了解 ABI 对于与智能合约交互非常重要,下面详细解释 ABI 的各个部分。原创 2024-09-10 03:00:00 · 710 阅读 · 0 评论 -
零基础用python开发区块链(三web3.py)
web3.py是一个 Python 库,用于与以太坊区块链进行交互。它支持以太坊的各种功能,例如查询区块、发送交易、调用智能合约、与钱包交互等。web3.py是基于 JavaScript 库web3.js的 Python 版本,广泛应用于构建以太坊 DApps 和与区块链交互的脚本。原创 2024-09-09 22:39:31 · 1121 阅读 · 0 评论 -
零基础用python开发btc(二bitcoinlib详解)
bitcoinlib是一个用于 Python 的比特币库,支持比特币和其他加密货币的生成、交易和管理。以下是如何在 Windows、macOS 或 Linux 上安装和使用bitcoinlib的详细教程。原创 2024-09-09 22:21:05 · 753 阅读 · 0 评论 -
零基础用python开发btc(一开源库)
Python不能直接链接btc网络或通过私钥操作查询/转账等各种操作,但是个子不够梯子来凑。对于开发者来说,选择适当的开源库或者第三方api就是架梯子。在 Python 中,有多个支持比特币(BTC)网络的开源库,可以用于与比特币网络交互、创建钱包、签署交易等。原创 2024-09-08 23:53:34 · 1133 阅读 · 0 评论 -
开发实战进阶之多线程/多进程c++
使用pthread库进行多线程编程为C和C++开发者提供了强大的控制能力。尽管C++11及更高版本提供了更为现代的pthread在处理更底层的操作时仍然有其用武之地。通过正确使用线程同步机制,可以有效地避免数据竞争等常见的多线程问题。原创 2024-09-03 14:41:53 · 1205 阅读 · 0 评论 -
华为OD机试题:亲子游戏C++ 非递归解法
宝宝和妈妈参加亲子游戏,在一个二维矩阵(N*N)的格子地图上,宝宝和妈妈抽签决定各自的位置,地图上每个格子有不同的糖果数量,部分格子有障碍物。游戏规则是妈妈必须在最短的时间(每个单位时间只能走一步)到达宝宝的位置,路上的所有糖果都可以拿走,不能走障碍物的格子,只能上下左右走。第一行输入为N(N原创 2024-08-21 21:21:00 · 159 阅读 · 0 评论 -
华为OD机试统一考试D卷C卷 -求满足条件的最长子串的长度
注:实际工作过程中,满足条件的字串可能会有多个,以下代码已经额外关注。如果找不到满足要求的子串,如全是字母或全是数字,则返回-1。1、 只包含1个字母(a~z, A~Z),其余必须是数字;2、 字母可以在子串中的任意位置;原创 2024-08-21 21:41:50 · 133 阅读 · 0 评论 -
华为机试:最大社交距离C++
每当一个员工进入时,需要坐到最大社交距离的座位(例如:位置A与左右有员工落座的位置距离分别为2和2,位置B与左右有员工落座的位置距离分别为2和3,影响因素都为2个位置,则认为座位A和B与左右位置的社交距离是一样的);疫情期间,需要大家保证一定的社交距离,公司组织开交流会议,座位有一排共N个座位,编号分别为[0..N-1],要求员工一个接着一个进入会议室,并且可以在任何时候离开会议室。最后进来员工,他会坐在第几个位置,如果位置已满,则输出 - 1。如果有多个这样的座位,则坐到 索引最小 的那个座位。原创 2024-08-21 22:07:26 · 198 阅读 · 0 评论 -
华为OD机试 火星文计算【C++】
用例保证字符串中操作数与操作符之间没有任何分隔符,用例保证操作数取值范围为 32 位无符号整数,保证输入以及计算结果不会出现整型溢出,保证输入的字符串为合法的求值报文。地球人公式按照 C 语言规则进行计算,火星人公式中。输入的字符串说明是字符串为仅有无符号整数和操作符组成的计算表达式。根据火星人字符串输出计算结果,结尾不带回车换行。,相同的运算符按从左到右的顺序运算。火星人字符串表达式结尾不带回车换行。已知火星人使用的运算符号为。原创 2024-08-21 22:48:33 · 318 阅读 · 0 评论 -
跳格子3 - 华为OD C++
从起点score[0]开始,每次最大的步长为k,请你返回小明跳到终点 score[n-1] 时,能得到的最大得分。每个格子上有特定的分数 score = [1, -1, -6, 7, -17, 7],每个格子的分数 score[i] 在 [-10000, 10000] 区间中。格子的总长度 n 和步长 k 的区间在 [1, 100000]第二行输入每个格子的分数 score[i]小明和朋友们一起玩跳格子游戏,第一行输入总的格子数量 n。第三行输入最大跳的步长 k。原创 2024-08-21 22:58:57 · 135 阅读 · 0 评论 -
华为OD机试真题-路口最短时间问题【C++】
题目假定街道是棋盘型的,每格距离相等,车辆通过每格街道需要时间均为 timePerRoad;街道的街口(交叉点)有交通灯,灯的周期T(=lights[row][col])各不相同;车辆可直行、左转和右转,其中直行和左转需要等相应T时间的交通灯才可通行,右转无需等待。现给出 n*m 个街口的交通灯周期,以及起止街口的坐标,计算车辆经过两个街口的最短时间。其中:1)起点和终点的交通灯不计入时间,且可以任意方向经过街口。原创 2024-08-21 21:09:19 · 301 阅读 · 0 评论 -
华为OD机试 - 找数字【C++】
小扇和小船今天又玩起来了数字游戏,小船给小扇一个正整数n (1原创 2024-08-21 23:05:26 · 166 阅读 · 0 评论 -
华为OD机试- 可以处理的最大任务数【C++】
在某个项目中有多个任务(用 tasks 数组表示)需要您进行处理,其中 tasks[i] = [si, ei],你可以在 si原创 2024-08-21 23:17:22 · 119 阅读 · 0 评论 -
华为OD机试 - 部门人力分配[C++]
注意:输入数据两行, 第一行输入数据3表示开发时间要求, 第二行输入数据表示需求工作量大小, 输出数据一行,表示部门人力需求。当选择人力为6时,2个需求量为3的工作可以在1个月里完成,其他2个工作各需要1个月完成。当选择人力为5时,4个工作各需要1个月完成,一共需要4个月才能完成所有需求。当前部门需要完成N个需求,需求用requirements[]表示,requirements[i]表示第i个需求的工作量大小,单位:人月。这部分需求需要在M个月内完成开发,进行人力安排后每个月的人力是固定的。原创 2024-08-21 23:31:51 · 288 阅读 · 0 评论 -
华为OD-会议室占用时间段【C++】
之后输入n行,每行两个整数,以空格分隔,分别表示会议开始时间,会议结束时间。输出多行,每个两个整数,以空格分隔,分别表示会议室占用时间段开始和结束。输入:[[1,4],[2,5],[7,9],[14,18]]说明:时间段[1,4]和[2,5]重叠,合并为[1,5]输出:[[1,5],[7,9],[14,18]]第一行输入一个整数n,表示会议数量。原创 2024-08-21 23:37:31 · 20 阅读 · 0 评论 -
华为OD-二叉树生成【C++】
有一棵二叉树,每个节点由一个大写字母标识(最多26个节点)。现有两组字母,分别表示后序遍历(左孩子->右孩子->父节点)和中序遍历(左孩子->父节点->右孩子)的结果,请输出层次遍历的结果。输入为两个字符串,分别是二叉树的后续遍历和中序遍历结果。输出二叉树的层次遍历结果。原创 2024-08-21 23:44:18 · 20 阅读 · 0 评论 -
华为OD机试 - 可以组成网络的服务器【C++】
在一个机房中,服务器的位置标识在 n*m 的整数矩阵网格中,1 表示单元格上有服务器,0 表示没有。如果两台服务器位于同一行或者同一列中紧邻的位置,则认为它们之间可以组成一个局域网。第一行输入两个正整数,n和m,0原创 2024-08-21 23:52:22 · 22 阅读 · 0 评论 -
华为OD统一考试-结队编程 【C++】
结队小组需满足: level [i] < level [j] < level [k] 或者 level [i] > level [j] > level [k] ,从部门中选出序号分别为 i、j、k 的 3 名员工,他们的职级分别为 level[i]、level [j]、level [k]第二行输入:按序号依次排列的员工的职级 level,中间用空格隔开。请你按上述条件计算可能组合的小组数量。同一员工可以参加多个小组。第一行输入:员工总数 n。原创 2024-08-21 23:58:18 · 102 阅读 · 0 评论