自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 redis数据库

redis是一种nosql数据库redis适合做高速缓存redis五种数据结构:字符串底层数据结构:(字符串len、free和char*)应用场景:缓存、图片等列表:有序可重复底层实现:压缩链表、双端链表应用场景:消息队列、散列表底层实现:压缩链表、hashtable应用场景:数据的结构化存储无序集合:无序不重复底层实现:set结合和hashtable应用场景:共同好友有序集合:有序不重复底层实现:跳表、压缩链表应用场景:排名渐进式hash:惰性更新、用到再更新(更新、.

2021-08-14 14:19:02 123

原创 字节 一面

字符串计算器问项目C++3. const define4. virtual关键字 构造函数与虚函数5. 虚函数默认形参6. vector 扩容7. map和unordered_map操作系统8. 编译过程、运行过程9. print怎么调用网络编程10. select epoll11.epoll实现计时器...

2021-03-24 16:58:15 152

原创 腾讯3面

项目什么时候接触的C++C和C++的区别C++多态虚函数的实现C++11新特性100万的数字中找前1000个linux进程和线程的区别new一个2M的空间的过程进程间的通信MySQL数据库的了解反问

2021-03-18 16:59:15 144

原创 操作系统面试

一 操作系统基础1.1 什么是操作系统我通过以下四点向您介绍一下什么是操作系统吧!操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机的基石。操作系统本质上是一个运行在计算机上的软件程序 ,用于管理计算机硬件和软件资源。 举例:运行在你电脑上的所有应用程序都通过操作系统来调用系统内存以及磁盘等等硬件。操作系统存在屏蔽了硬件层的复杂性。 操作系统就像是硬件使用的负责人,统筹着各种相关事项。操作系统的内核(Kernel)是操作系统的核心部分,它负责系统

2021-03-17 10:27:29 181

原创 算法的形式

算法看不见容器,对其一无所知,所以,它所需要的信息都从iterators得到,而iterators必须能够回答algorithm的所有提问,才能搭配该algorithm的所有操作

2021-03-17 10:26:48 160

原创 阿里云面试

静态关键词在C++中的强制类型转换static_cast和dynamic_cast这两个的区别,应用场景c++设计模式单例模式(并发二阶段锁)map底层实现为什么建hash更耗时(hash函数计算)僵尸进程僵尸进程怎么简单创建信号是怎么用的(没答出来)构造函数和析构函数是否可以定义为虚函数构造函数和析构函数是否可以调用虚函数数据库的了解,mysql的底层引擎隔离性TCP数据包结构,操作系统的TCP的状态很多T..

2021-03-17 10:26:25 277

原创 腾讯面试收集

1、一个班要有多少个人才能保证跟你生日重复率高于50% 23人概率树,n个人两个不重复的概率有:(n-1)/n*(n-2)/n…1/n=2、IO多路复用3、mysql的不同引擎,区别,优劣势一、**MyISAM:**在创建MyISAM的时候会出来三个默认的文件:1.tb_demo.frm,存储表定义;2.tb_demo.MYD,存储数据;3.tb_demo.MYI,存储索引。MyISAM表无法处理事务,所以它只适合在以下几种情况使用1、选择密集型的表。MyISAM存储引擎在筛选大量数据

2021-03-17 10:26:14 127

原创 2021-03-11

2021-03-17 10:26:02 44

原创 面经整理2

https://blog.nowcoder.net/zhuanlan/v0E5P0http://www.cyc2018.xyz/#%E7%AE%97%E6%B3%95面经:https://blog.csdn.net/qq_43763344/article/details/104863383C++new和malloc的区别*new→operator new(size)→malloc(size):https://blog.csdn.net/qq_38646470/article/details/79

2021-03-17 10:25:47 101

原创 Redis

Nosql概述1、为什么要用Nosql1、单机mySQL的年代90年代,一个基本的网站访问一般不会有太大,单个数据库完全够了,整个网站的瓶颈是什么?数据量太大,一个机器放不下!数据索引(B+树)访问量(读写混合),一个服务器承受不了只要发生以上情况之一,就必须晋级。2、Mencached(缓存)+MySQL+垂直拆分(读写分离)网站80%的情况都在读,每次都去查询数据库就十分麻烦!所以在中间加个缓存保证效率!发展过程:优化数据结构和索引–>文件缓存(IO)–>Menc

2021-03-17 10:25:31 415

原创 MySQL2

普通索引和唯一索引,应该怎么选?查询过程对于select * from T where k=5的语句,使用普通索引和唯一索引的查询过程:对于普通索引来说,查找到满足条件的第一个记录 (5,500) 后,需要查找下一个记录,直到碰到第一个不满足 k=5 条件的记录。对于唯一索引来说,由于索引定义了唯一性,查找到第一个满足条件的记录后,就会停止继续检索。InnoDB 的数据是按数据页为单位来读写的。也就是说,当需要读一条记录的时候,并不是将这个记录本身从磁盘读出来,而是以页为单位,将其整体读入内存

2021-03-17 10:25:13 186

原创 算法题的几种常见解题思路

数组找最大最小值,找值(二分查找)数组排序(快排,归并排序)找路径(回溯法,dfs加剪枝)找最优解(动态规划问题)字符串(滑窗解决)动归问题求解:假定状态为i-1的时候最优子结构找 i 状态下的转移方程主要分成:做或不做...

2021-03-17 10:24:48 930

原创 tx2面

技术栈:C++ linux 网络编程 和数据库多态:动态多态(运行时绑定)动态多态:指的是运行时绑定。const 可不可以通过地址去修改它的值C++内存分配模型。堆的空间是谁管理的:gcc分配gcc编译gdb调试共享内存同步:信号量、信号、锁?网络编程:read的返回值,类型,select epoll是做什么用的数据库持久化怎么做到的读了什么书后面读博还是工作对我们部门有什么了解的...

2021-03-17 08:48:14 97

原创 计算机网络

物理层几种信道复用技术时分复用:所有的用户在不同的时间占用同样的频带宽度统计时分复用:改进时分复用,明显提高信道利用率频分复用:所有的用户在同样的时间占用不同的带宽资源码分复用:用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。这种系统发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现波分复用:波分复用就是光的频分复用数据链路层PPP:点对点协议。是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。设计的目的主要用来通过拨号或专线方式简历点对点连接发送数据

2021-03-10 22:40:59 238

原创 MySQL数据库

1、MyISAM和InnoDB的区别1、MyISAM不支持行级锁,只支持表级锁。InnoDB支持行级锁和表级锁2、是否支持事务和奔溃后的安全恢复:MyiSAM是原子读的操作,速度快。Innode支持事务,外部键等高级功能。InnoDB支持事务具有事务、回滚奔溃后安全恢复能力3、是否支持外键:MyISAM不支持外键,Innode支持外键字符集及校对规则字符集:指从二进制编码到某类字符符号的映射校对规则:指的是字符的排序规则索引MySQL索引引用的数据结构主要有BTree索引和哈希索引。对于哈希

2021-03-07 21:38:05 1531 6

原创 unordered容器

unordered不定序容器C++11的变化

2020-12-08 20:47:26 98

原创 hashtable深度探索

容器hashtableSeparate Chainning:如果发生碰撞就换成链表如果元素个数比篮子的个数还多,就进行打散rehashing,篮子变为原来的两倍,附近的素数hashtable的实现HashFunc:对象折射成编号ExtractKey:在value中查找到keyEqualKey:什么时候key相等Alloc:预设值hash的迭代器,在一个链表遍历结束后可以走向篮子hashtable的直接使用hash<>将例子中的char*转换成编号hashfu

2020-12-08 19:41:15 87

原创 map multimap深度探索

map/multimap说明map/multimap以红黑树为底层结构,因此元素有元素自动排序的特性。排序依据是keymap/multimap提供“遍历”操作以及iterator按正常规则++ite遍历,便能获得排序状态sorted我们无法使用map/multimap的iterator改变元素的key(因为key有其严谨排序规则),但是可以用它来改变元素的data。因此map/multimap内部自动将user指定的key_type设为const,如此便能禁止user对元素的key赋值map元素的

2020-12-07 22:14:37 97

原创 set multiset深度探索

上一节讲到了红黑树,这一节讲述以红黑树为底层实现的set/multiset容器set,multisetset/multiset以红黑树为底层结点,因此有元素自动排序特性。排序的依据是key,而set/multiset元素的data和key合一,data就是key,set/multiset提供便利操作及iterators。按正常规则++ite遍历,便能够获得排序状态我们无法使用set/multiset的iterator改变元素值,因为key有其严谨的排列规则。set/multiset的iterato

2020-12-07 21:51:30 88

原创 RB-tree深度探索

容器rb-tree查找非常快、插入也非常快red-tree红黑树是平衡二元搜索树中常用的一种。平衡二元搜索树的特性:排列规则有利search和insert,并保持适度平衡——无任何结点过深。rb_tree提供“遍历”操作及iterators.按正常规则(++it)遍历,便能够获得排序状态(sorted)。不能使用rb-tree的iterator改变元素值(因为其元素具有严谨的排列规则)。编程里面并未阻绝此事。如此设计是正确的,因为rb_tree即将为set和map服务(作为其底部支持),map有

2020-12-07 21:27:46 268

原创 gcc的编译过程

工作流程1、预处理把头文件打开 → 宏替换 → 注释去掉2、编译(最耗费时间)gcc才工作c文件变成汇编文件3、汇编器汇编文件变成二进制文件4、链接器将函数库相应的代码组合到目标文件中gcc的一些参数预处理、编译、汇编 的参数:E S c指定头文件的路径 -I使用宏定义,设置log是否输出编译程序的时候指定宏 -D 宏定义名字,则程序会输出是否需要优化程序 -O ,三个等级 0 1 3(将冗余的代码做优化)输出警告信息: -Wall在程序中添加调试信息 -g

2020-12-03 21:18:06 157

原创 vim编辑器

vi–viavim是vi发展过来的一套文本编辑器工作模式1、命令模式 — 打开了文件之后,默认进入命令模式2、编辑模式 – 需要输入一些命令,切换到编辑模式3、末行模式 – 在末行模式下可以输入一些命令_vi中的光标位置删除、撤销操作在wim中是不能使用鼠标的1、vim编辑器的使用命令模式下的操作:(1) 光标的移动H J K L前 下 上 后当前行的行首:0当前行的尾部:shift+4 $文件的头部:gg文件尾部:G光标移动到500行: 500+G(2)

2020-12-03 16:53:45 85

原创 deque、queue和stack深度探索

deque如何模拟连续空间 (全都是deque iterators的功劳)观察以下函数的返回值size()函数中的“-”号不是单纯的减号操作符重载: -> 和 -*注意减号的重载操作符重载:++ –++ 后是否到了边界,到了边界跳到下一个结点。setnode重设边界–是否到了边界上,如果到了边界上,退回到前一个缓冲区操作符重载 +=_M_map记录所有的缓冲区,是一个vector的结构。扩容的时候copy是copy到中段,这样前后都可以等量扩充start、fin

2020-12-01 16:56:46 93

原创 STL vector深度探索

vector两倍增长vector通过三个指针控制整个vector。大小总共12个字节start是vector开始位置,finish是vector的结束位置,end_of_storage存储空间的结束位置capacity是这个vector申请的空间,size是实际存放元素的空间。扩容insert_aux再次做了一次检查,是因为这个函数还被其他地方insert函数调用了两倍成长是重新申请一个两倍大的空间申请空间之后,要把原来的元素copy到新的空间中数组的迭代器vector的迭代器不需.

2020-12-01 15:59:18 67

原创 Iterator需要遵循的原则

iterator需要回答算法的三个问题指向的类型距离存储的值Iterator必须提供的五种associated typeiterator定义了五个typedef1、iterator_category 迭代器的类型 例如单向链表、双向链表的等2、value_type 链表存储的元素的类型3、pointer T 链表指向的类型4、reference4、difference_type 相邻迭代器之间的距离如果Iterator不是class ,例如只是指针,就不能回答那五个问题t.

2020-12-01 15:26:36 109

原创 Opengl 64位 vs2017配置错误 无法解析外部符号 _imp_g****

之前报的错误一直都是:LNK2019 无法解析外部符号 _imp_gl*****我一直以为是链接器的错误,是库是32位的,一直在找编译成64位的库,自己也手动编译了。但就是不行,网上的办法也试了个遍!!!!!最后玩完没想到是要把三个.h文件都包含在里面使用nuget工具包安装nuopengl.core重点重点!!!!头文件包含三个目录#include<gl/glut.h>#include<gl/glu.h>#include<gl/gl.h>...

2020-11-19 18:16:54 468

原创 分配器

分配器allocators先谈operator new()和malloc()operator new中会调用mallocmalloc分配内存。所要求的空间是size大小,但是malloc在申请内存时会额外申请一些别的空间。C++的容器分配内存使用的是allocatorvc6所附的标准库,其allocatoe实现如下()微软的ideBC5所附的标准库,其allocator的实现如下(<memory.stl>)G2.9所附的标准库,其allocator实现如下(<

2020-11-13 20:29:55 322

原创 操作符重载and模板

泛化和特化偏特化 Partial Specialization个数的偏范围的偏

2020-11-11 21:19:19 56

原创 OOP(面向对象编程)和GP(泛型编程)

OOP企图将datas和methods关联在一起GP将datas和methods分开来采用GP:containers和algorithms团队可以各自闭门造车,其间以iterators联通即可。algorithms通过iterators确定操作范围,并通过Iterators取container元素所有的algorithms,其内最终设计元素本身的操作,就是比大小。...

2020-11-11 20:44:18 341 1

原创 容器之分类与各种测试

容器分类:顺序式Sequence Containers:array\vector\Deque\ List\Forward List数组不够时扩充现有容量的一倍list每次扩充一个Deque不够时扩充一个 bufferstack和queue是deque的adapter关联性Assosiative Containers:用key找东西。底层是红黑树set\multiset (set 的key就是value) map\multimapmulti的意思是多,key可以重复Unordered

2020-11-11 19:51:54 108

原创 STL体系结构基础介绍

STL六大部件容器Containers分配器Allocators算法Algorithms迭代器Iterators适配器Adapters仿函数Functiors第一个使用的就是容器。容器把内存的问题解决掉了。分配器用来支持容器。容器有一些是class。数据在容器内,操作数据的算法在另一个地方。迭代器是一个泛化的指针容器要有一个分配器的支持,用来对内存进行分配11行分配器本身也是一个模板,所以需要告诉分配器要什么类型。如果vector的类型和分配器的类型不一样就不对count_

2020-11-03 21:49:30 134

原创 C++标准库 体系结构与内核分析

C++标准库和C++标准模板库C++标准库:编译器赋给我们的头文件,没有编译好的STL标准模板库:STL内的80%都是,六大部件标准库>STL。标准库包括了STL

2020-11-03 21:12:49 137

原创 new和delete

全局的new和delete重载成员函数中的new和delete重载R有虚函数需要多4个字节的内存‘数组还需要记录数组大小,四字节。所以③是64内存。大小为5的数组,调用5次构造函数和虚构函数。以上引用时虽然只有两个参数,但是实际上有三个参数。所有的new的重载函数的第一参数都必须是size_t。delete的重载函数在一般情况下绝不会被调用。只用当new的构造函数跑出异常的时候,才会调用重载的对应兄弟delete函数。为什么可以找到对应兄弟,因为是在new的时候发生了异常,意味着没有

2020-11-03 20:45:27 63

转载 力扣动态规划问题求解思路

定义:动态规划算法是通过拆分问题、定义问题状态和状态之间的关系,使得问题能够以地推(或者说分治)的方法解决。动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就是初始问题的解。基本思想与策略编辑由于动态规划问题解决的问题多数有重叠子问题这个特点,为了减少重读计算,对每一个子

2020-11-03 09:53:44 266

原创 对象模型(Object Model)关于this

OnFileOpen函数在调用的时候。会把&myDoc传进去,并且将作为this在函数内部调用其函数。关于动态绑定虽然a是通过b强制转换的。但是a.vfunc1()调用的还是A的vfunc。因为是一个静态绑定。动态绑定三个条件:是指针是虚函数向上转换谈谈constconst不改变成员函数的数据当成员函数的const和non-const版本同是存在的时候。const object只能调用const函数,non-const object智能调用non-const版本常量对象.

2020-11-02 21:53:52 175

原创 C++学习关于vptr和vtbl

关于vptr和vbtl

2020-11-02 20:55:38 506

原创 C++学习 reference

referencereference的常见用途reference通常不用于声明变量,而用于参数类型和返回值的描述。传参时只用引用或者变量不同的同名函数,不能共存。函数签名相同,编译器不知道要调用哪一个。A:const是签名的一部分。两个函数一样,一个有const一个没有,是可以共存的。...

2020-10-21 21:12:37 76

原创 C++学习9 三个主题 C++2.0新特性

variadic templates(since C++11)数量不定的模板参数允许任意个数的模板参数在函数中输出第一个firstArg,然后再进行递归输出。当参数为0时,调用另一个printf(),结束auto(since C++11)auto编译器自动推导ranged-base for(since C++11)...

2020-10-21 20:51:00 90

原创 Least Squares Conformal Maps for Automatic Texture Atlas Generation用于自动纹理图集生成的最小二乘保角映射

提供了一种新的拟保角参数化方法,基于柯西—黎曼方程的最小二乘近似。所定义的目标函数使角度变形最小,并证明了以下的正确性:最小值是唯一的,与纹理空间的相似性无关,与网格的分辨率无关,不能生成三角形翻转。该函数在数值上表现良好,因此可以非常有效地最小化。我们的方法是稳健的,可以参数化具有复杂边界的大型图表。我们还介绍了分割方法将模型分解为具有自然形状的图表,并提出了一种新的包装算法,以收集他们在纹理空间。我们演示了我们的方法用于绘制扫描和建模的数据集。1、介绍3D绘制系统可以通过交互添加细节(颜色,凹凸贴

2020-10-21 15:41:56 1296

翻译 cxxopts.h

这是一个轻量级的c++选项解析器库,支持标准的GNU风格的选项语法。版本3的突破性改变如果您已经使用了版本2,那么在版本3(尚未发布的当前主版本)中有一些您应该知道的突破性更改。如果您是cxxopts的新手,您可以跳过此部分。解析器不再修改它的参数,因此您可以传递const argc和argv,并期望它们不会被更改。解析器对象不再依赖于解析器。因此,它可以从解析器之外的作用域返回,并且仍然工作。既然没有修改输入,ParseResult就存储了一个不匹配的参数列表。这些检索如下:auto resul

2020-10-20 15:59:48 2232

空空如也

空空如也

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

TA关注的人

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