- 博客(57)
- 资源 (3)
- 收藏
- 关注
原创 【C++】手写String类
手写String类![在这里插入图片描述](https://img-blog.csdnimg.cn/20200921200357938.png#pic_center#include<iostream>#include<cstring>class String{private: int m_len; char* m_data;public: const int length() const; const char* c_str() cons
2020-09-22 08:28:52 188
原创 硬盘、寄存器、高速缓存、内存关系|i++为什么不是原子操作
速度:寄存器 > 二级缓存 > 内存 > 硬盘寄存器是CPU内部的存储器,用于存储等待抄处理计算的指令或数据,当然速度是最快的;其次是二级缓存,由于cpu的速度快于内存,为了提高计算机的速度,设置了一级、二级缓存,用于固化存储常用指令,速度其次;然后就是内存了;最后是硬盘。i++不是原子操作其执行要分为3步:1、读内存到寄存器;2、在寄存器中自增;3、写回内存。举个例子,现有A,B两个线程,初始i=2;A线程完成1,2步后被切换到B线程,在B线程中执行完这3步,再切换回来,此时
2020-09-21 15:37:38 251
原创 poll、epoll、select、Linux下5种IO模型
select、poll、epoll都是IO多路复用的机制,其中epoll是Linux特有的。本质上都是同步IO,有设备就绪或超时才能执行后面的动作。详细博客select:O(n)它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。select监测的文件句柄数一般最大为1024个。poll:O(n)p
2020-09-11 11:03:45 149
原创 字节跳动-开发岗-笔试-9.6
1.限制版跳台阶【题目描述】一个人跳楼梯,可以跳一格,可以跳两格,但不能连续跳两格,问跳到n层有多少种方式。【解法】两个数组,dp1存放最后一步是1步,dp2存放最后一步是2步。dp1[i] = dp[i - 1] + dp2[i - 1]dp2[i] = dp1[i - 2]print(dp1[n-1] + dp2[n-1])2.单调栈【题目描述】对于一个有N个元素的数组,包含a1,a2,a3……an,定义如下两个函数:L(i)=j需要满足如下条件:j < ia[i] &g
2020-09-07 10:45:41 291
原创 Linux下C++开发常用工具
Linux下C++开发常用工具GDB查看内存:x(gdb调试时查看内存)设置断点:b定位有问题的动态库调试core文件gdb常用指令gdb工作原理Valgrind内存泄漏分析和性能检测
2020-09-02 09:59:52 148
原创 【操作系统】虚拟内存、内存分配
虚拟内存 虚拟内存的目的是为了让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存。 为了更好的管理内存,操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。当程序引用到不在物理内存中的页时,由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的...
2020-06-22 04:28:52 370
原创 Golang常见面试题
1.select是随机的还是顺序的? select就是用来监听和channel有关的IO操作,当 IO 操作发生时,触发相应的动作。如果有一个或多个IO操作可以完成,则Go运行时系统会随机的选择一个执行,否则的话,如果有default分支,则执行default分支语句,如果连default都没有,则select语句会一直阻塞,直到至少有一个IO操作可以进行。 2.Go语言局部变量分配在栈还是堆? ...
2020-06-20 12:04:45 285
原创 同步与异步、阻塞与非阻塞、并发与并行
同步(Sync)和异步(Async) 同步 所谓同步,就是发出一个功能调用时,在没有得到结果之前,该调用就不返回或继续执行后续操作。 简单来说,同步就是必须一件一件事做,等前一件做完了才能做下一件事。 例如:B/S模式中的表单提交,具体过程是:客户端提交请求->等待服务器处理->处理完毕返回,在这个过程中客户端(浏览器)不能做其他事。 异步 异步与同步相对,当一个异步过程调用发出后,调...
2020-06-19 10:30:31 103
原创 浏览器发送http请求过程分析
1.域名解析 --> 2.发起TCP的3次握手 --> 3.建立TCP连接后发起http请求 --> 4.服务器响应http请求,浏览器得到html代码 --> 5.浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 6.浏览器对页面进行渲染呈现给用户. 参考链接:https://www.cnblogs.com/caijh/...
2020-06-17 10:29:16 385
原创 面向对象的三个基本特征和五种设计原则
参考链接https://blog.csdn.net/cancan8538/article/details/8057095https://www.jianshu.com/p/7a5b0043b035 三大基本特征 封装 隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。 继承 提高代码复用性;继承是多态的前提。 多态 父类或接口定义的引用变量可以指向子类...
2020-06-16 04:24:04 106
原创 智力题……
1.抛硬币吃苹果 有一个苹果,两个人抛硬币来决定谁吃这个苹果,先抛到正面者吃。请问先抛者吃到苹果的概率为_____。 第一次成功:1/2第三次成功(即前两次失败):(1-1/2)(1-1/2)(1/2)第五次成功(即前四次都失败):(1-1/2)(1-1/2)(1-1/2)(1-1/2)(1/2)第2k + 1次成功(即前2k次都失败):(1-1/2)(1-1/2)...(1-1/2)(1-1/2...
2020-06-16 03:12:50 286
原创 C++实现面试常见设计模式(未完待续)
单例模式 1.懒汉模式 GetInstance()使用懒惰初始化,也就是说它的返回值是当这个函数首次被访问时被创建的。这是一种防弹设计——所有GetInstance()之后的调用都返回相同实例的指针。 class CSingleton{public: static CSingleton* GetInstance(){ if (m_pInstance == nullptr)...
2020-06-15 18:53:50 595 1
原创 【算法题】交叉换位
问题描述 输入a1,a2,...,an,b1,b2,...,bn, 在O(n)的时间,O(1)的空间将这个序列顺序改为a1,b1,a2,b2,a3,b3,...,an,bn, 且不需要移动,通过交换完成,只需一个交换空间。 解题思路 https://www.oschina.net/question/234345_42157 ...
2020-06-14 21:04:27 134
原创 【算法题】面试常见简单算法题(持续更新中)
找两个链表的公共节点 首先遍历两个链表得到他们的长度,就能知道哪个链表比较长,以及长的链表比短的链表多几个结点。在第二次遍历的时候,在较长的链表上先走若干步,接着同时在两个链表上遍历,找到的第一个相同的结点就是他们的第一个公共结点。 用rand5()生成rand7() https://blog.csdn.net/kongmin_123/article/details/82315013 贝叶斯公式 ...
2020-06-14 18:12:06 153
原创 【数据结构】红黑树
特性 每个节点或者是黑色,或者是红色。 根节点是黑色。 每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!] 如果一个节点是红色的,则它的子节点必须是黑色的。 从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。[这里指到叶子节点的路径] ...
2020-06-09 05:40:14 61
原创 【算法题】运矿石(未完待续)
题目 小v最近在玩一款挖矿的游戏,该游戏介绍如下:1、每次可以挖到多个矿石,每个矿石的重量都不一样,挖矿结束后需要通过一款平衡矿车运送下山;2、平衡矿车有左右2个车厢,中间只有1个车轮沿着导轨滑到山下,且矿车只有在2个车厢重量完全相等且矿石数量相差不超过1个的情况下才能成功运送矿石,否则在转弯时可能出现侧翻。假设小v挖到了n(n<100)个矿石,每个矿石重量不超过100,为了确保一次性将n个...
2020-06-08 10:53:31 428
原创 【C++】HashMap原理、与Map的区别
原理 哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做法是值得的。另外,编码比较容易也是它的特点之一。 其基本原理是:使用一个下标范围比较大的数组来存储元素。可以设计一个函数(哈希函数,也叫做散列函数),使得每个元素的关键字都与一个函数值(即数组下标,hash值)相对应,于是用这...
2020-06-08 10:39:23 815
原创 【算法题】字符串模式匹配
题目链接https://www.nowcoder.com/questionTerminal/2e2510b2e41e4d3b922416e51afc077b 题解:https://www.cnblogs.com/wyc199288/p/5647635.html
2020-06-01 09:27:34 74
原创 【计算机网络】RESTful调用和 RPC调用有什么区别
RESTful是一种软件架构风格,用于约束客户端和服务器交互,满足这些约束条件和原则的应用程序或设计就是 RESTful。比如HTTP协议使用同一个URL地址,通过GET,POST,PUT,DELETE等方式实现查询、提交、删除数据。RPC是远程过程调用,是用于解决分布式系统服务间调用的一种方式。RPC采用客户端与服务端模式,双方通过约定的接口(常见为通过IDL定义或者是代码定义)以类似本地方法调...
2020-05-31 23:17:00 1109
原创 HTTP的常用Method及其含义,常用Status Code及其含义
get 从服务器端获取资源head 获取报文头部put 提交资源post 更新资源delete 删除资源connect 建立tunnel隧道 100 请求已收到,正等待后续资源200 ok 成功206 服务器成功处理了部分 GET 请求301 永久重定向400 bad request 客户端请求语法错误500 服务器内部错误 ...
2020-05-31 16:40:08 220
原创 【编程题】美团2020秋招笔试题:六度好友
原题链接:https://www.nowcoder.com/test/question/done?tid=33743127&qid=894464#summary 我的思路:1.定义Queue QA:小点入队,Queue QB:空队列,Set S1,S2;2.将QA中的人全部入队QB,将QB的人的一度好友全部入队QA,同时插入S1,循环5次3.将QA中的人的一度好友全部插入S2,求S2与S1...
2020-05-31 02:02:31 391
原创 【交叉面准备】想到什么写什么
ip地址转int型 ipv4地址由四部分组成,每部分是0-255(2的8次方),int有四个字节,每个字节也是0-255,因此可以用一个int存储ip地址。,例如ip为“192.168.1.116”,相当于“.“将ip地址分为了4部分,各部分对应的权值为256^3, 256^2, 256, 1。具体代码:http://www.manongjc.com/article/126324.html 瀑布模...
2020-04-26 23:28:24 95
原创 【MySQL】ACID和隔离级别、事务
ACID与隔离级别 https://blog.csdn.net/zh521zh/article/details/69400053 脏读:指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。 不可重复读:是指在事...
2020-04-23 15:15:01 66
原创 【计算机网络】网络安全问题
DDOS/SynFlood https://blog.csdn.net/qq_34777600/article/details/81946514
2020-04-21 15:30:13 74
原创 项目中常被问到的问题
Zookeeper 优点 顺序一致性同一个客户端发起的事务请求,最终将会严格按照其发起顺序被应用到ZooKeeper中。 原子性所有事务请求的结果在集群中所有机器上的应用情况是一致的,也就是说要么整个集群所有集群都成功应用了某一个事务,要么都没有应用,一定不会出现集群中部分机器应用了该事务,而另外一部分没有应用的情况。 单一视图无论客户端连接的是哪个ZooKeeper服务器,其看到的服务端数据模...
2020-04-20 00:06:14 108
原创 内存管理相关的问题
![图片说明](https://uploadfiles.nowcoder.com/images/20200418/1298389_1587179865663_1379690E58939A4E3E24A537937D8660 "图片标题") return局部指针造成的错误 https://blog.csdn.net/chengchaonan/article/details/79651683stat...
2020-04-18 05:20:33 79
原创 【C++】xx和xx的区别与联系(持续更新)
指针和引用 https://blog.csdn.net/u010710458/article/details/79243256 new和malloc https://blog.csdn.net/nie19940803/article/details/76358673一个由C/C++编译的程序占用的内存分为以下几个部分: 栈区(stack)— 由编译器自动分配释放 ,存放为运行函数而分配的局部变量...
2020-04-13 07:39:23 618
原创 【C++】assert 断言
assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行。断言主要的用处: 可以在预计正常情况下程序不会到达的地方放置断言 :assert false 断言可以用于检查传递给私有方法的参数。(对于公有方法,因为是提供给外部的接口,所以必须在方法中有相应的参数检验才能保证代码的健壮性) 使用断言检查类的不变状态,确保任何情况下,某个变量的状态必须满...
2020-04-12 02:22:42 89
原创 【C++】char、int、short、指针占几个字节
常量的定义以及表示范围:unsigned int 0~4294967295 就是2^32-1int -2147483648~2147483647 就是-2^(31) ~ 2^31-1unsigne...
2020-04-02 08:01:32 7042
原创 【计算机网络】Linux下的网络通信协议(TCP、UDP、IP、ICMP、ARP、DNS)
各层协议的作用:https://www.cnblogs.com/pengjie-py/p/11256483.htmlTCP/IP 意味着 TCP 和 IP 在一起协同工作。TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。IP 负责计算机之间的通信。TCP 负责将数据分割并装入 IP 包,然后在它们到达的时候重新组合它们。IP 负责将包发送至接受者。 TCP 详细总结戳:https:...
2020-04-01 14:15:30 1088
原创 【C++】Vector、Map、Set的原理
Vector Vector的数据安排以及操作方式,与array非常类似,两者唯一的区别是空间运用的灵活性,array是静态空间,一旦配置了就不能改变,如果你想要大一点的空间,就必须首先配置一块新空间,然后将原来的元素一一复制进来,再把原来的空间释放给系统。但是vector是动态空间,随着元素的增加,它的内部机制会自行扩充空间以容纳新元素,因此vector的运用对于内存的合理利用与运用的灵活...
2020-04-01 04:52:40 256 1
原创 【数据结构】链表和数组的区别
不同点: 链表是链式的存储结构;数组是顺序的存储结构。 链表通过指针来连接元素与元素,数组则是把所有元素按次序依次存储。 链表的插入删除元素相对数组较为简单,不需要移动元素,且较为容易实现长度扩充,但是寻找某个元素较为困难。 数组寻找某个元素较为简单,但插入与删除比较复杂,由于最大长度需要再编程一开始时指定,故当达到最大长度时,扩充长度不如链表方便。 在内存中,数组是一块连续的区域,需要预留空间...
2020-04-01 02:47:54 210
原创 【操作系统】进程、线程和协程/调度/死锁/通信/线程池
进程和线程的区别和联系 区别 调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位; 并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行; 拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源。进程所维护的是程序所包含的资源(静态资源),如:地址空间,打开的文件句柄集,文件系统状态,信号处理handler等;线程所维护的运行相关的资...
2020-03-30 14:54:22 179
原创 【数据库】乐观锁和悲观锁/读写锁和互斥锁
悲观锁 总是假定最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。 乐观锁 总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现。乐观锁适...
2020-03-30 08:55:07 101
原创 【计算机网络】HTTP和HTTPS的区别、HTTP报文格式
基础概念 http 超文本传输协议,以明文方式发送信息。连接过程:1.客户端的浏览器首先要通过网络与服务器建立连接,该连接是通过TCP 来完成的,一般 TCP 连接的端口号是80。 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是 MIME 信息包括请求修饰符、客户机信息和许可内容。2.服务器接到请求后,给予相应的响应信息,其格式为一个状态行,...
2020-03-25 19:39:17 1090
原创 如何创建一个全世界唯一的ID
UUID 数据库自增主键 可以创建一个表,通过数据插入获取对应的自增主键,作为全局唯一id缺点也很明显,就是高并发的场景下,受限于单台mysql的性能。而且可用性差,DB出现问题会导致id无法生成。当然可以通过主从的方式增强可用性,同时增加表采用不同自增步长的方式增加并发性能,比如假设我们要部署N台机器,步长需设置为N,每台的初始值依次为0,1,2…N-1;但是还会带来新的问题,比如不利于拓展...
2020-03-25 11:33:54 228
OpenCV入门教程
2019-03-28
程序员面试宝典 欧立奇 第五版
2019-03-27
[Azure实战].(Azure.in.Action).Chris.Hay&Brian;.H.Prince.文字版
2019-03-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人