后台开发
文章平均质量分 79
yuna~^_-☆~
这个作者很懒,什么都没留下…
展开
-
C++ 必须用宏定义而不能用内联函数或普通函数的场合
展开之前首先提一下C++编译的五个步骤(以g++编译器为例):(1)预处理(-E),将代码中的#开头的语句预处理展开,如预处理#include会将#include的内容展开到自身(如果里面还有#include,就递归展开)。#define有有参定义和无参定义两种,无参定义一般就是告诉编译器我定义了这个标志,一般用于条件编译,还有一种我在实际工作中遇到的情况是提取工程代码用于写工具的时候,一般来说工程代码编译会带上很多的静态库动态库,提取工具所需的代码的时候往往不需要这些东西,但是由于线上业务的需要,用到这原创 2021-10-17 16:24:05 · 161 阅读 · 0 评论 -
C++ libcurl:关于curl_easy_perform的一些使用注意点
这个是在近日工作中涉及到libcurl的使用时,得出的一些思考。关于curl_easy_perform的官方文档,见这里主要背景是这样的:在写完了一个需要用libcurl提出HTTP请求的功能,自测一下假设发生某些异常,会对系统带来什么影响。结果测到以下条件的时候:第1次调用curl_easy_perform的参数中,CURLOPT_URL是一个无效域名(注意是域名、也就是网址,不是某个IP地址)在第1个curl_easy_perform发出去后的20秒内,尝试发送第2个curl_easy_per原创 2021-09-25 01:05:15 · 4436 阅读 · 0 评论 -
【回溯法的应用】leetcode37 - 解数独
leetcode传送门关于回溯法参考这里计算机解数独的一种思路计算机有着高速运算能力,因此不用像人解数独一样讲究技巧(每次随机瞄一个位置,能用排除法得到唯一结果的直填,或者有配对数一定填在特定的相同数量格子里时其他格子可直接排除这些数,等)。计算机可以在每个空格子里试填1-9的数,填好之后往后继续填,填到填不了的时候,表明之前填的是有错误的,需要回溯。比如说,下面就是leetcode该...原创 2019-11-07 19:19:00 · 362 阅读 · 0 评论 -
【C++ STL设计思路与实际源代码挖掘①】vector(1)
前言:使用vector,需要添加头文件#include<vector>vector算是本人用C++最常用的一个STL容器了。主要是替代new数组,实现未知容量数据的随机存取(并且不需要记得写delete)。在C++中,需要在运行时确定数组容量可以这么操作:int count;cin>>count;int *arr = new int[count];//......原创 2019-11-04 17:28:20 · 338 阅读 · 0 评论 -
C++ 类的内存分布学习笔记(含多态原理分析)
前几天bigo面试,面试官写了个有纯虚函数的类,问了我sizeof是多少……吃了没用过的亏,特开起了linux虚拟机耍起了sizeof以下总结前置知识 基本数据、指针类型大小(单位字节)char 1short 2int 4float 4double 8long long 8long 等于机器位数(32位机器为4,64位机器为8)指针 等于机器位数引用 等于所引用数据类型类...原创 2019-10-30 12:02:35 · 228 阅读 · 0 评论 -
关于fork() 简单易懂的总结笔记
fork目录fork()笔试题fork()的作用fork()执行原理剖析fork延伸fork()笔试题笔试选择题冒出来一个五连fork()是真的头大,比如说#include<stdio.h>#include<stdlib.h>#include<unistd.h>int main(){ fork(); fork() |...原创 2019-08-27 12:08:33 · 366 阅读 · 0 评论 -
C++ STL的array vs 普通数组
array是C++11的新特性之一,用来创建一个数组……C++原始的定义数组的方式如下int a[3];当然了这样子定义后根据编译器不同,定义完里面的值是没被初始化的随机数。如果要手工初始化,可以这样int a[3]={1,2}; //第3个元素会初始化为0int b[3]={1,2,3};还可以动态生成数组int *a=new int[5];delete []a;不过一...原创 2019-09-03 21:50:38 · 1415 阅读 · 3 评论