- 博客(65)
- 收藏
- 关注
原创 C++八股文
虚基类是 C++ 中一种特殊的类,用于解决多继承所带来的“菱形继承”问题。如果一个派生类同时从两个基类派生,而这两个基类又共同继承自同一个虚基类,就会形成一个“菱形”继承结构,导致派生类中存在两份共同继承的虚基类的实例,从而引发一系列的问题。为了解决这个问题,我们可以将虚基类作为共同基类,并在派生类中采用虚继承的方式。虚继承会使得派生类中只存在一份共同继承的虚基类的实例,从而避免了多个实例之间的冲突。虚基类是可以被实例化的。
2025-01-15 16:23:21
818
原创 KV存储的数据库:RocksDB
在我们之前使用过的数据库中,我们都发现了,读取速度可以变快,但是对于写入速度,一直是一个问题,当大量写入进来的时候,我们写入的速度会变得很慢,因此FaceBook开发了一套可以发挥高速存储硬件性能的高效数据库系统。是一个C++的库,并且可以随便存储二进制的KV数据,并且支持原子读的操作。他的应用场景还是很广泛的:支持Redis协议的pika数据库,采用RocksDB持久化Redis支持的数据结构。还有MySQL中支持可插拔的存储引擎。
2024-12-18 08:00:00
1441
原创 内核级支持的分布式存储ceph
一:什么是cephceph是一种分布式存储系统, Ceph可以将多台服务器组成一个超大集群,把这些机器中的磁盘资源整合到一块 儿,形成一个大的资源池(支持PB级别),然后按需分配给客户端应用使用。我们之前讲过的FastDFS也是一个分布式的存储系统,但是FastDFS是一个弱一致性存储,而Ceph是一个强一致性存储。下面是ceph的一些特点:,称之为统一存储2.采用CRUSH 算法,数据分布均衡,并行度高,不需要维护固定的结构3.数据具有,确保所有副本写入完成后才返回确认,适合读多写少的场景4.
2024-12-18 08:00:00
771
原创 关于服务器开发相关的面试题
然后创建一个JWT TOKEN,使用随机生成的key作为jwt的有效载体,将生成好的JWT Token返给前端,前端保存在本地,当访问后端服务时,前端需要在请求头中携带 jwt token,后端通过拦截器对请求进行拦截,校验token是否有效,如果token有效,则在jwt token的有效载体中获取key,然后使用该key在redis中查找是否存在,如果存在说明登录验证通过,如果不存在说明验证登录信息已过期。在这种情况下,应用程序需要确保MySQL和Redis中的数据是同步的,以确保数据的一致性。
2024-12-08 18:23:52
708
原创 总结FastDFS的面试题
FastDFS是一个开源的轻量级的分布式文件管理系统,简单来说就是存放文件的。因为是分布式,所以我们可以把文件放到多个系统中去,并且我们只需要一个系统即可控制多个系统的操作。并且还提供了高可用和负载均衡。
2024-12-08 18:23:14
718
原创 线程与进程的区别和应用场景,以及各种锁的使用
线程是系统调度和分派的基本单位。属于同一进程的线程,堆是共享的,栈是私有的。属于同一进程的所有线程都具有相同的地址空间。进程依赖于程序运行而存在,进程是动态的,程序是静态的;进程是操作系统进行资源分配和调度的一个独立单位。
2024-12-08 18:22:36
1361
原创 总结的一些MySql面试题
我们创建B+树类型的索引就是为了通过比较来找到我们所需要的数据,但是当区分度不高的时候,反而会降低速度,如果经常修改这个列,那么我们的B+的结构就要经常变化,更加影响速率,表的数据较少的时候,没有必要去创建索引,创建索引反而会浪费空间。2:索引分类:主键索引,唯一索引,非空索引,普通索引,组合索引,全文索引。首先是MySql的缓存方案,他自己的缓存方案和业务层面是没有关系的,虽然MySQl也是用来缓存热点数据的,但是这些热点数据并不是用户自定义的,而是索引,记录等。并且他的命令处理是在多线程中并发处理的。
2024-12-06 15:59:07
1037
原创 C/C++精品项目之图床共享云存储(7):图片分享和浏览的优化,共享文件的排行榜
本期讲解,主要是将分享和共享给区别开来,以及对文件分享,浏览的优化,以及对共享文件排行榜问题的解决
2024-11-21 16:25:03
908
原创 C/C++精品项目之图床共享云存储(5):FastDFS存储原理,文件的秒传
我们在本期中讲解了FastDFS上传的原理以及文件的秒传功能(md5校验)。
2024-11-19 11:42:36
680
原创 C/C++精品项目之图床共享云存储(4):注册,登录,token,排序文件
本篇主要讲解,注册,登录,token,获取文件的一些具体操作,其中比较重要的就是token,而其他的业务操作全都是和数据库打交道,将查询的结果返回到客户端这里。
2024-11-18 16:43:22
550
原创 C/C++精品项目之图床共享云存储(1):基础组件
我将我学的图床共享云存储的C++项目笔记,分享出来,供大家观看,最主要还是怕我自己忘记一些细节,因此记录下来。
2024-11-13 08:00:00
1221
2
原创 Docker网络和overlay的基础讲解
1:由于创建的容器加入默认网络之后,我们的容器IP是会发生变化的,我们此时通过pingIP地址是可以PIng通的,但是为了服务方便,我们不会去记住他们的ip地址,而是通过ping他们的服务名,但是我们通过在默认网络里面,去ping服务名,是ping不通的。因此我们需要实现自定义的网络,因为在自定义网络里面,在同一个网络中的容器IP地址,会被自动解析。这样我们就可以通过ping服务名即可通讯。2:我们在自定义网络的时候,我们还可以指定这个网络的网关,子网,ip,以及一些特定选项。
2024-11-12 08:00:00
1122
原创 网络引擎 WorkFlow 的基础讲解
搜狗公司C++服务器引擎,编程范式。支撑搜狗几乎所有后端 C++在线服务,包括所有搜索服务,云输入法,在线广告等,每 日处理数百亿请求。这是一个设计轻盈优雅的企业级程序引 擎,可以满足大多数后端与嵌入式开发需求。
2024-11-09 08:00:00
1140
原创 高性能Web网关:OpenResty 基础讲解
使用高性能 openresty 写 nginx 的模块十分方便!Lua的使用,重新定向,黑名单,负载均衡等。
2024-11-08 08:00:00
1818
原创 FastDFS的简单使用
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。Tracker是FastDFS的协调者,负责管理所有的storage server和group,每个storage在启动后会连接 Tracker,告知自己所属的group等信息,并保持周期性的心跳,tracker根据storage的心跳信息,建立 group==>[storage server list]的映射表。什么是分布式文件系统?
2024-11-04 09:21:31
920
1
原创 Nginx的基础讲解之重写conf文件
Nginx(engine x)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
2024-10-03 11:59:32
1414
1
原创 gRPC基础讲解
RPC 即远程过程调用协议(Remote Procedure Call Protocol),可以让我们像调用本地函数一样发起远程调用。RPC 凭借其强大的治理功能,成为解决分布式系统通信问题的一大利器。gRPC是一个现代的、高性能、开源的和的通用 RPC 框架(g就是谷歌的意思),基于 HTTP2 协议设计,序列化使用 PB(Protocol Buffer),PB 是一种语言无关的高性能序列化框架,基于 HTTP2+PB 保证了的高性能。上面的图就是一个客户端远程连接一个服务器,调用它的函数。
2024-09-28 11:38:42
3164
原创 KafKa的存储机制和可靠性
我在我的上篇文章中,写到了,其他的几款产品,其中与最接近的是,他们两个都支持高吞吐,并且吞吐量达十万级。但是KafKa是为了解决大数据的实时日志流而生的,每天要处理的日志量级在千亿规模。对于日志流的特点主要包括:1、数据实时产生2、海量数据存储与处理所以kafka必然面临分布式系统所遇到的高并发、高可用、高性能等三高问题。对于大数据产生的日志来说要保证以下几点:1、存储的主要是消息流。2、要支持海量数据的高效存储,高持久化(设备重启之后保证数据的不丢失)。
2024-09-26 18:42:21
1246
原创 消息队列和KafKa
消息 + 队列 (Message + Queue) 简称MQ。消息队列本质就是个队列,FIFO先入先出,只不过队列中存放的内容是Message,从而叫消息队列。消息队列的主要用途就是在不同的服务、进程、线程之间进行通信。解耦:允许我们独立的扩展或修改队列两边的处理过程。可恢复性:即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。缓冲:有助于解决生产消息和消费消息的处理速度不一致的情况。灵活性和峰值处理能力:不会因为突发的超负荷的请求而完全崩溃,消息队列能够使关键组件顶住突发的访问压力。
2024-09-24 08:55:15
1418
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人