![](https://img-blog.csdnimg.cn/d0ebd823c9704e09bcc1d67569d2628e.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++基础
文章平均质量分 80
基础知识
Mr.liang呀
分享知识 探讨技术
展开
-
Android系统架构开发流程(摘要)
Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。也就是说,把对硬件的支持分成了两层,一层放在用户空间(User Space),一层放在内核空间(Kernel Space),其中,硬件抽象层运行在用户空间,而Linux内核驱动程序运行在内核空间。为什么要这样安排呢?把硬件抽象层和内核驱动整合在一起放在内核空间不可行吗?从技术实现的角度来看,是可以的,然而从商业的角度来看,把对硬件的支持逻辑都放在内核空间,可能会损害厂家的利益。原创 2022-10-01 09:50:19 · 674 阅读 · 1 评论 -
qi_an_xin
奇安信一面:先介绍项目迭代器++it和++it哪个好?前置迭代返回一个引用 后置的返回一个对象。临时对象会导致效率降低。网络字节序TCPdump抓包IP地址转网络字节序 pton:将用字符串表示的IP地址转换成用网络字节序表示的整数IP头部中校验和校验的内容Main函数执行之前的过程(一些系统调用库函数类似的)全双工通信 和半双工通信涉及到的协议 通信速率问题网络路由协议IP协议的一个核心任务就是数据报的路由。即决定发送数据报到目标机器的路径。IP数据报应该发送至哪个下一跳路由,以及原创 2022-05-26 10:25:11 · 262 阅读 · 0 评论 -
2022 5 字节实习一面--- Pico
文章目录第一部分 自我介绍+项目第二部分 基础知识第三部分 代码题第一部分 自我介绍+项目10min自我介绍和项目介绍(项目没怎么深挖,大概了解了一下)第二部分 基础知识20min左右;面试官是根据简历上的内容有针对性的提问的,有些知识在问你之前还会先问问你掌握的怎么样,平时自己做项目接触到的多嘛。挺人性化的哈哈哈哈 不会也没啥关系具体如下:ISO七层网络模型 每一层的作用以及每一层有哪些协议;Http状态码 直接问的503 这个好像很特别 ;TCP UDP的异同;三次握手 四次挥手原创 2022-05-13 13:17:54 · 1020 阅读 · 0 评论 -
2022 05 字节题
文章目录leetcode 424 替换后的最长重复字符leetcode 424 替换后的最长重复字符给你一个字符串 s 和一个整数 k 。你可以选择字符串中的任一字符,并将其更改为任何其他大写英文字符。该操作最多可执行 k 次。在执行上述操作后,返回包含相同字母的最长子字符串的长度。输入:s = "AABABBA", k = 1输出:4解释:将中间的一个’A’替换为’B’,字符串变为 “AABBBBA”。子串 “BBBB” 有最长重复字母, 答案为 4。滑动窗口+双指针解法//双指针原创 2022-05-03 19:41:06 · 409 阅读 · 0 评论 -
基础 (2022春)
文章目录【C++内存管理】【C++内存管理】参考原创 2022-04-21 10:10:44 · 695 阅读 · 0 评论 -
2022 春 字节题(六)
文章目录leetcode 210 课程表 IIleetcode 210 课程表 II现在你总共有 numCourses 门课需要选,记为 0 到 numCourses - 1。给你一个数组 prerequisites ,其中 prerequisites[i] = [ai, bi] ,表示在选修课程 ai 前 必须 先选修 bi 。例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示:[0,1] 。返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回 任意原创 2022-04-10 22:28:16 · 283 阅读 · 0 评论 -
春 字节题(五)
文章目录leetcode 55 跳跃游戏 && leetcode 45 跳跃游戏IIleetcode 55 跳跃游戏 && leetcode 45 跳跃游戏II55给定一个非负整数数组nums,你最初位于数组的第一个下标,数组中的每个元素代表你在该位置可以跳跃的最大长度;判断是否能够到达最后一个下标;例如:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。原创 2022-03-26 12:27:44 · 2822 阅读 · 0 评论 -
排序算法 &&LRU缓存算法
leetcode 912 排序数组给定一个整数数组nums,请你将该数组升序排列;方法一:优化后的快排解法//快排用三数取中进行优化class Solution{public: //三数取中进行优化 void GetMid(vector<int>& nums, int left, int right) { int mid = left + (right - left) / 2; //中间元素下标 if (nums[left原创 2022-03-25 10:59:41 · 690 阅读 · 0 评论 -
春 字节题(四)
文章目录leetcode 198 打家劫舍leetcode 414 第三大的数leetcode 198 打家劫舍leetcode 414 第三大的数原创 2022-03-17 11:28:58 · 552 阅读 · 0 评论 -
2022春刷题---字节题(三)
回文链表题目要求:给定一个链表的头节点head,请你返回是否为回文链表;例如:输入:head=[1,2,3,3,2,1]输出:trueC++实现://回文链表class Solution{public: bool isPalindrome(ListNode* head) { stack<int>s; ListNode* p = head; while (p) { s.push(p->val); p = p->next;//将所有的原创 2022-03-11 10:45:11 · 1783 阅读 · 0 评论 -
基础知识(2022 春)
文章目录【C++ string和C中的Char*】【C++ string和C中的Char*】string是c++里的,不是c里的。用string存储字符串时,不用设定字符串的长度,而char要设定,string也不必担心内存是否足够等。还有就是,string有很强很方便的功能,比如可以方便的赋值,方便的比较大小。具体内容可以看看C++ primer......原创 2022-03-08 11:13:11 · 483 阅读 · 0 评论 -
笔记本题目 复习(一)
反转链表原创 2022-03-07 13:48:25 · 731 阅读 · 0 评论 -
字节题 春(二)
文章目录剑指offer 连续子数组的最大和leetcode 2 无重复字符的最长子串leetcode 11 盛最多水的容器leetcode 160 相交链表leetcode 1884 鸡蛋掉落剑指offer 连续子数组的最大和leetcode 2 无重复字符的最长子串leetcode 11 盛最多水的容器leetcode 160 相交链表leetcode 1884 鸡蛋掉落...原创 2022-03-03 17:05:47 · 462 阅读 · 0 评论 -
2022 春 刷题(一)
文章目录leetcode 209 长度最小的子数组leetcode 209 长度最小的子数组算法要求:给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。例如:输入 target=7 nums=[2.3.1.2.4.3]输出:2 [4,3]是符合要求的最短数组用滑动窗口解法:算法实现:原创 2022-02-23 10:10:09 · 940 阅读 · 0 评论 -
muduo---C++网络编程库
陈硕 muduo参考资料muduo源码剖析muduo基于Reactor模式实现Reactor模式也是目前大多数Linux端高性能网络编程框架和网络应用所选择的主要架构,例如内存数据库Redis和Java的Netty库等。muduo 架构整个架构依照reactor模式,如如下图:所谓的reactor模型,是有一个循环的过程,监听对应事件是否触发,触发时调用对应的callback函数进行处理;这里的事件在muduo中包括socket可读写事件、定时器事件。在其他网络库中如libevent也包原创 2022-01-16 15:21:10 · 3547 阅读 · 0 评论 -
深入了解 Reactor 网络编程架构模型
Reactor网络编程架构模型常见的网络编程模型有:Reactor Proactor Asynchronous Completion Token and Acceptor_Connector这里介绍最主流的reactor模型:通常网络编程模型处理的主要流程如下: initiate => receive => demultiplex => dispatch => process eventsI/O多路复用可以用作并发事件驱动(event-driven)程序的基础,即整个事件驱动原创 2022-01-16 14:32:28 · 2069 阅读 · 0 评论 -
leetcode 8 将字符串转换成整数atoi(有限状态机解法)中等
针对本题引入自动机:字符串处理的题目往往涉及复杂的流程以及条件情况,如果直接上手写程序,一不小心就会写出极其臃肿的代码。因此,为了有条理地分析每个输入字符的处理方法,我们可以使用自动机这个概念:我们的程序在每个时刻有一个状态 s,每次从序列中输入一个字符 c,并根据字符 c 转移到下一个状态 s’。这样,我们只需要建立一个覆盖所有情况的从 s 与 c 映射到 s’ 的表格即可解决题目中的问题代码实现:#include<iostream>using namespace std;#原创 2022-01-12 12:35:52 · 2545 阅读 · 0 评论 -
准备的基础知识 (五)
文章目录操作系统中的内存结构操作系统中的缺页中断操作系统中的内存结构一个程序本质上是由未初始化数据区BSS段、数据data段、代码text段组成的。一个可执行程序在存储(没有调入内存)时分为代码段、数据区和未初始化数据区三部分。BSS (未初始化数据区):通常用来存放程序中未初始化的全局变量和静态变量的一块内存区域。BSS段属于静态分配,程序结束后静态变量资源由系统自动释放。data 数据段:存放程序中已初始化的全局变量的一块内存区域。数据段也属于静态内存分配text 代码段:存放程序执行代码原创 2022-01-09 16:55:43 · 550 阅读 · 0 评论 -
链表相关(一)
大师傅敢死队风格原创 2022-01-07 11:38:51 · 317 阅读 · 0 评论 -
动态规划相关
文章目录理论基础什么是动态规划动态规划的解题步骤动态规划如何debug以斐波那契数列 (leetcode509)为例说明理论基础什么是动态规划动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的例如:有N件物品和一个最多能背重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品原创 2022-01-06 12:47:06 · 509 阅读 · 0 评论 -
排列组合问题
提出需求:从 n 个人里面,选出 k 个人,有多少中选法。解题思路:这个问题用递归求解,要从 n 个里面选 k 个,首先要判断,n 和 k 的关系,如果n小于k;则没有选法,如果等于,则只有一种选法;如果大于,我们可以分成,选中当前的这个和不选中当前这个来进行递归,每一次选择总量都减一;选中当前这个的话,要从剩下的 n-1 个中选择 k-1个;不选中的话,要从剩下的 n-1 中选择 k 个,如果要选择的数量变成0的话,标识着找到一种选法,返回1。代码实现:#include<iostrea原创 2022-01-05 22:59:45 · 394 阅读 · 0 评论 -
二叉树相关(一)
提出需求:用哈希实现:#include<iostream>using namespace std;#include<vector>#include<unordered_map>#include<string>#include<algorithm>class Solution{public: vector<vector<string>>groupAnagrams(vector<string&原创 2022-01-05 22:37:39 · 773 阅读 · 0 评论 -
设计模式之 外观模式 && 模板方法模式
**外观模式**为子系统的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。设计分为三个阶段:首先,设计初期,应该要有意识的将不同的两个层分离,比如经典的三层架构,就需要考虑在数据访问层和业务逻辑层和表示层的层与层之间建立外观Facade,这样可以为复杂的子系统提供一个简单的接口,使得耦合大大降低,其次,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,大多数的模式使用也都会产生很多很小的类,这本是好事,但也给外部调用他们的用户程序带来了使用上的困难原创 2022-01-05 21:38:51 · 277 阅读 · 0 评论 -
QT学习笔记 (四)
文章目录QT消息机制事件event()事件过滤器绘图和绘图设备Qpainter绘图设备文件系统基本文件操作二进制文件读写文本文件读写QT消息机制事件event()事件过滤器绘图和绘图设备Qpainter绘图设备文件系统基本文件操作二进制文件读写文本文件读写...原创 2022-01-03 17:58:57 · 342 阅读 · 0 评论 -
QT学习笔记(三)
文章目录布局管理器系统提供的布局控件利用widget做布局常用控件QLabel控件使用显示文字显示图片显示动画QLineEdit设置获取内容设置显示模式其他控件自定义控件布局管理器所谓 GUI 界面,归根结底,就是一堆组件的叠加。我们创建一个窗口,把按钮放上面,把图标放上面,这样就成了一个界面。在放置时,组件的位置尤其重要。我们必须要指定组件放在哪里,以便窗口能够按照我们需要的方式进行渲染。这就涉及到组件定位的机制。Qt 提供了两种组件定位机制:绝对定位和布局定位。绝对定位就是一种最原始的定位方法:原创 2022-01-02 15:09:03 · 328 阅读 · 0 评论 -
QT学习笔记(二)
文章目录QMainWindow菜单栏工具栏状态栏铆接部件核心部件(中心部件)实现菜单栏和状态栏以及工具栏的相关设置QMainWindowQMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。菜单栏一个主窗口最多只有一个菜单栏。位于主窗口顶部、主窗口标题栏下面原创 2021-12-31 15:24:44 · 698 阅读 · 0 评论 -
QT学习笔记(一)
文章目录一、在pro文件里一些命名规范一、在pro文件里pro文件里注释是用 #QT += core gui #包含的模块QT += core gui networkgreaterThan(QT_MAJOR_VERSION, 4): QT += widgets#大于4版本以上的 包含widget模块TARGET = tcpTestServer #目标 生成的.exe程序的名称TEMPLATE = app # 模板 应用程序模板 Application原创 2021-12-30 20:26:37 · 818 阅读 · 0 评论 -
滴滴实习面经
滴滴出行 工程框架与算法 秋储实习生面试2121.6.22 一面 至今没有二面的通知 凉凉!自我介绍 没问C++基础 没问数据库聊项目(以下都是项目里的内容 大概40min 全程1h进程 线程 的区别 优缺点 TCP/IP UDP各自的优缺点 可靠传输 流量控制 拥塞控制 三次握手 四次挥手 为什么不两次握手 time_wait过多会对系统有什么影响为什么都用进程 不考虑在一个进程下开辟三个线程?网络通信模型 7层 socket通信信号量机制的原子性 信号量加 减 恢复 三个过程是如何原创 2021-12-29 16:28:18 · 513 阅读 · 0 评论 -
设计模式之 建造者模式 &&观察者模式
建造者模式:将一个复杂对象的构建和他的表示分离,使得同样的构建过程可以创建不同的表示;建造者模式的使用情况:主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。建造模式ide好处:使得建造代码与表示代码分离,由于建造隐藏了该产品是如何组装的,所以若需改变一个产品的内部表示,只需在定义一个具体的建造者就可以了。示例一://建造者模式// 示例一://建造胖人和瘦人。先弄一个构建人的抽象基类。//然后创建胖人和兽人类,由基类继承而来原创 2021-12-29 15:11:42 · 642 阅读 · 0 评论 -
设计模式之 装饰模式&&原型模式
一、装饰模式:1 基础理论:装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活装饰模式总结:为已有功能动态地添加更多功能的一种方式。当系统需要新功能时,是向旧的类中添加新的代码。这些新加的代码通常装饰了原有类的核心职责和主要行为,但这种做法的问题是在主类中加入了新的字段、新的方法、和新的逻辑,从而增加了主类的复杂度,而这些新加入的东西仅仅是为了满足一些只在某种特定条件下才会执行的特殊行为的需要。装饰模式提供了一种很好的解决方案,他把每个要装饰的功能放在单独原创 2021-12-28 14:24:52 · 273 阅读 · 0 评论 -
常见的排序算法总结【重点】
**排序算法总结(重点)**记住最常用的几个排序的时间复杂度:插入排序O(n^2) 选择排序O(n^2) 冒泡排序O(n^2)堆排序 O(nlogn) 快排 O(nlogn)稳定的排序有:基数排序 冒泡排序 直接插入排序 折半插入排序 归并排序介绍几个最常用的排序算法:1、 插入排序 稳定 O(n^2):对于一个待排序数组来说,其初始有序数组元素个数为1,然后从第二个元素,插入到有序数组中。对于每一次插入操作,从后往前遍历当前有序数组,如果当前元素大于要插入的元素,则后移一位原创 2021-12-26 21:51:56 · 1450 阅读 · 0 评论 -
准备的基础知识(三)
文章目录【抓包】【智能指针】【move函数】【 explicit关键字】【Effective C++】【纯虚函数】【vector list】【struct class】【http https session cookie】【函数指针】【空类占位】【C++递归】【extern关键字】【move移动构造函数】【系统调用】【段页式】【多进程 多线程】【僵尸进程 孤儿进程】【IPC】【内核】【GCC】【C++ 函数相关】【函数调用】【vector底层和const】【TCP拥塞控制】【一些知识】【OSI 模型】【域名原创 2021-12-26 14:17:11 · 2100 阅读 · 0 评论 -
C++虚函数表剖析(知乎明澈讲解)
C++虚函数机制概述:为了实现C++的多态,C++使用了一种动态绑定的技术。这个技术的核心是虚函数表(下文简称虚表)。本文介绍虚函数表是如何实现动态绑定的。类的虚表:每个包含了虚函数的类都包含一个虚表。我们知道,当一个类(A)继承另一个类(B)时,类A会继承类B的函数的调用权。所以如果一个基类包含了虚函数,那么其继承类也可调用这些虚函数,换句话说,一个类继承了包含虚函数的基类,那么这个类也拥有自己的虚表。我们来看以下的代码。类A包含虚函数vfunc1,vfunc2,由于类A包含虚函数,故类A原创 2021-12-25 14:06:12 · 527 阅读 · 1 评论 -
准备的基础知识 (一)
这里是总结了20年五月份为了实习二准备的一些基础知识,之前的版本比较乱,现在趁着有时间好好整理一下。内容涵盖:计网 计原 OS 数据结构和算法 Linux基础 C++基础 设计模式等面试常考问题文章目录const 和 #define的区别【进程与线程】【C++内存】【死锁相关】【TCP机制】TCP实现可靠传输的机制TCP协议的特点【static关键字】【C++强转】【C++面向对象】封装,继承,多态重载、重写【C语言与C++的区别】【数组和指针】【指针和引用】【C++11新特性】【STL】【vect原创 2021-12-23 13:22:05 · 1226 阅读 · 0 评论 -
准备的题目(一)
Leetcode 24 两两交换链表中的节点题目背景:示例:输入:1->2->3->4输出:2->1->4->3实现代码:struct ListNode{ int val; ListNode* next; ListNode(int x) :val(x), next(NULL) {};};class Solution{public: ListNode* swapPairs(ListNode* head) { ListNode* dum原创 2021-12-23 12:00:46 · 366 阅读 · 0 评论 -
理解C中的结构体
结构体结构体的声明:“结构体是一些值的集合,这些值称为成员变量。结构体的每个成员可以是不同类型的变量”。例如下面这俩:struct tag{ member_list;}variable_list;在这里插入代码片ttypedef struct Stu{ char name[20]; int age; char sex[5]; char id[20];}Stu;//创建一个对象Stu,同时给这个Stu的name age sex id赋值初始化 在这里插入代码片结构原创 2021-12-18 22:39:27 · 153 阅读 · 0 评论 -
实现一个医院排版系统(小item)&& 对getline()函数的深入理解
(学习)用C++实现一个小型的排班系统:话不多说 直接上代码:#include<isotream>#include<string>#include<vector>#include<stdlib.h>#include<fstream> //设置流操作符#include<istream> //getline用到#include<string>using namespace std;class ABC{p原创 2021-12-18 22:16:28 · 493 阅读 · 0 评论 -
设计模式之 工厂方法模式&&抽象工厂模式
简单工厂模式的优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择动态的实例化相关类,对于客客户端来说是去除了对产品的依赖。但是就是因为这样,每次添加一个新的选择,就要修改工厂类中的switch逻辑分支,这显然违背了开放-封闭原则;工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪个类,工厂方法使一个类的实例化延迟到其子类。工厂方法实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题依然存在,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端进行,如果想要加功能。则.原创 2021-12-18 16:20:59 · 424 阅读 · 0 评论 -
系统设计循环队列
**系统设计循环队列**一 题目来源:循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出),有一定容量原则并且队尾被连接在队首之后以形成一个循环支持任意类型数据获取 第一大 第二大 avg 等操作二 代码实现#include <iostream>using namespace std;//单链表 template <class T>struct Node{ T data; //why 这里为什么不用基本类型指针呢 T* ?使原创 2021-12-17 23:09:44 · 452 阅读 · 0 评论 -
leetcode 22 括号生成
题目背景:中等给定数字n,n代表生成的括号的对数,设计函数实现生成所有可能的并且有效的额括号组合输入:n=3输出:["((()))","(()())","(())()","()(())","()()()"]输入:n=1输出:["()"]在这里插入代码片算法思想:DFS:深度搜索代码实现://深度搜索 DFS + 剪枝 //剪枝条件:左括号的数目小于右括号的数目 以及左括号和右括号的数目均大于nclass Solution{public: vector<strin原创 2021-12-16 14:48:38 · 139 阅读 · 0 评论