自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 右值引用详解

右值引用

2024-02-21 18:41:31 1056

原创 DPDK的基本认识

dpdk叫数据平面开发工具包(data plane development kit),这是运行在用户态的一组软件库和驱动程序,可以在cpu体系机构上加速对网络数据包的处理。去DPDK的主要作用在于,绕过内核协议栈,在用户态进行数据交互和处理,从而提升性能。

2024-01-17 19:14:51 1133

原创 存储的基本架构

关于存储,一直是计算机领域的庞大体系,需要持续的学习。

2024-01-15 22:32:55 913

原创 剑指 Offer II 101. 分割等和子集

0-1背包问题

2023-01-09 23:16:23 460 1

原创 测试框架gtest以及内存泄漏检测

gtest

2022-11-06 18:19:23 2354

原创 正整数分解成几个正整数,乘积最大

正整数分解,求最大的乘积

2022-11-01 00:02:05 619

原创 力扣2. 两数相加

力扣

2022-07-19 23:30:05 129

原创 1029.两地调度

贪心

2022-06-16 14:54:40 212

原创 1217.玩筹码

贪心

2022-06-16 11:32:36 409

原创 1221. 分割平衡字符串

1221.分割平衡字符串

2022-06-07 13:46:13 183

原创 HJ102 字符统计

HJ102字符统计

2022-06-06 15:47:12 189

原创 HJ75 公共子串计算

公共子串的大小

2022-06-06 15:19:13 122

原创 1287. 有序数组中出现次数超过25%的元素

有序数组中出现次数超过25%的元素

2022-06-06 14:13:56 92

原创 1636. 按照频率将数组升序排序

按照频率将数组升序排序

2022-06-06 12:05:18 231

原创 结构型设计模式

结构型设计模式

2022-06-03 19:30:55 128

原创 2255.统计是给定字符串前缀的字符串数目

枚举

2022-06-02 23:59:42 187

原创 海量数据去重的hash,BloomFilter,bitmap

海量数据查找字符串的问题

2022-06-02 21:28:58 464

原创 B树与B+树

B树与B+树

2022-06-01 21:55:19 244

原创 红黑树的添加与调整算法

文章目录一、红黑树的应用二、红黑树的实现红黑树的性质红黑树的定义二叉树的旋转节点的添加红黑树的调整一、红黑树的应用例如map的底层实现,nginx,定时器,以及cfscfs就是用红黑树存储进程的集合,把调度的时间,作为一个key值,每一次从他的左下角这棵树开始查找。还有我们的内存管理,是用一颗红黑树树去管理的,红黑树会去自动平衡,树高会降低,更利于查找,不会出现一条树的情况(链表)一块大内存,分小内存,会把那些内存块用红黑树去存储,一块内存有两种存储方法,一种是以起始位置加长度,第二种用开始位置

2022-05-29 16:19:57 352

原创 矩阵图像的翻转以及对角线元素排序

文章目录一、翻转图像二、将矩阵按对角线排序一、翻转图像给定一个 n x n 的二进制矩阵 image ,先 水平 翻转图像,然后 反转 图像并返回 结果 。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1,1,0] 的结果是 [0,1,1]。反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0,1,1] 的结果是 [1,0,0]。来源:力扣(LeetCode)链接:https://leetcode.cn/problems/flipp

2022-05-12 01:25:36 656

原创 二分查找部分题目解析

文章目录一、搜索插入位置二、二分查找三、在排序数组中查找数字四、在线选举一、搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例 2:输入: nums = [1,3,5,6], target = 2输出: 1示例 3:输入: nums = [1,3,5,6], targ

2022-05-10 01:13:40 1192

原创 前缀和,部分题解

文章目录一、前缀和是什么二、前缀和题目一、前缀和是什么前缀和就是某数列的前n项的和,说白了就是数组的前n项的和,下标从0开始一直加到下标为n的数组的值,综上我们可以直接说数组在n的前缀和。知道了前缀和,我们就可以知道部分和了,比如说下标i到下标i+l的和我们就可以用,i+r的前缀和减去i-1的前缀和得到i到i+l的部分和就是下图这样我们来看看这一道题给你一个正整数数组 arr ,请你计算所有可能的奇数长度子数组的和。子数组 定义为原数组中的一个连续子序列。请你返回 arr 中 所有奇数

2022-05-08 23:15:24 958

原创 skynet重要组件以及游戏项目的应用

文章目录一、网络模块封装消息与协程的关系数据到达skynet 对连接半关闭状态的支持应用二、游戏项目游戏介绍设计原则接口设计如何优化掌握框架的开发思路skynet 设计原理总结actor 内部若涉及多线程应考虑加自旋锁或原子操作;避免在工作线程执行过程中被切换;actor 内部若涉及多线程应考虑临界区域操作不能过于耗时;避免长期占用工作线程让同消息队列中其他消息得不到及时执行;actor 单个消息业务应避免阻塞线程(注意不是协程)的操作;如果这个操作是必不可少,另起一个外部进程,skynet 进

2022-05-07 21:50:53 1430 1

原创 skynet与lua/c编程

文章目录前言一、lua的开发lua数据类型lua的元表闭包二、lua/c的接口编程虚拟栈C 闭包注册表userdatalightuserdata前言掌握框架的核心开发技能skynet抓好,actor,协程和消息一、lua的开发脚本语言目前效率最高的lua的数据结构只有一个table,不支持多线程用户抽象与底层抽象用户抽象:一个用户对应一个actor,这不一定正确底层抽象:一个actor对应一个lua虚拟机,一个actor一个c接口的回调,一个actor一个消息队列,一个消息对应一个协程处

2022-04-27 20:04:28 772

原创 skynet设计原理

文章目录一、多核并发模型多线程多进程CSPActor总结二、skynet环境准备game.conf三、Actor消息四、线程池的原理skynet当中的线程池协程前言:框架学习思路1、掌握框架是怎么解决问题的 2、掌握框架的核心开发技能 3、掌握框架的开发思路目的是基于框架做正确的事情一、多核并发模型erlang是从语言层面上解决actor并发模型skynet从框架层面去实现actor并发模型go语言从语言层面上去实现csp并发模型多线程在一个进程中开启多线程,为了充分利用多核,一般设置工

2022-04-25 21:52:35 440

原创 Redis源码,主从同步与对象模型

文章目录一、持久化与持久化选择redis持久化redis持久化相关配置aofaof rewriterdb混合持久化数据安全策略二、Redis主从复制数据同步增量数据同步服务器 RUN ID复制偏移量 offset三、redis哨兵模式分布式中的cap原则Codis集群四、Redis cluster集群集群配置一、持久化与持久化选择redis持久化redis 的数据全部在内存中,如果突然宕机,数据就会全部丢失,因此需要持久化来保证 Redis 的数据不会因为故障而丢失,redis 重启的时候可以重新加

2022-04-23 22:37:03 925

原创 Redis源码 存储原理与数据模型

文章目录一、redis源码的学习方法二、redis存储redis存储结构存储转换缩容scan跳表实现redis跳表redis io多线程一、redis源码的学习方法wsl2安装https://docs.microsoft.com/zh-cn/windows/wsl/install-win10vscodehttps://docs.microsoft.com/zh-cn/windows/wsl/tutorials/wsl-vscodec/c++基本配置https://code.visualstu

2022-04-17 20:19:52 886

原创 位运算题目解析

文章目录前言2的幂4的幂位1的个数交换数字只出现一次的数字交替二进制数找出所有子集的异或总和再求和两整数之和插入只出现一次的数字(2)前言位运算一共分为两大类,逻辑运算符和位移运算符2的幂给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。如果存在一个整数 x 使得 n == 2的x次方 ,则认为 n 是 2 的幂次方。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/power-of

2022-04-17 06:04:56 310

原创 redis协议与异步方式

文章目录一、redis网络层二、redis pipeline三、redis事务multi,exec,lua脚本redis事务lua脚本redis与ACID特性分析四、异步连接实现一、redis网络层只需要一个单线程进行,一个reactor管理所有连接,每一条连接可以看作是一个队列,队列当中的元素看作一个协议包,reactor可以看作一个处理器,这是一种并发的机制。那么我们思考一下,我们每条连接,或者说不同连接当中的队列执行最后是按照什么顺序去执行的。对于一条连接来说肯定是按照顺序的。那么对于整体而言的

2022-04-15 22:27:39 1171

原创 redis相关命令详解及其原理

文章目录一、redis二、redis中的数据结构stringlisthashsetzset三、应用与操作一、redisRedis 是Remote Dictionary Service 的简称;也是远程字典服务;Redis 是内存数据库(在内存当中的数据库),KV 数据库,数据结构数据库;涉及到的数据结构有,string、hash、list、set、zset怎么去操作redis的呢,当然是由一个端口,不断发送命令去操作redisRedis 应用非常广泛,如Twitter、暴雪娱乐、Github

2022-04-13 22:20:53 770

原创 反转链表C/C++实现与解析

文章目录一、双指针法二、递归法力扣题号206剑指offer题号24定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-

2022-04-11 05:48:21 1437

原创 Mysql缓存策略

文章目录一、数据库提升读写性能的方式二、热点数据处理三、实现原理一、数据库提升读写性能的方式数据库有哪些提升读写性能的方式1、连接池,阻塞io+线程池2、异步连接 非阻塞io3、sql执行出发:即时执行+预编译执行(跳过了词法句法分析,权限验证,优化器)prepare接口我们来举个例子mysql的连接过程跟mysql连接之后,会进行一个验证,会主动发送一个连接给服务器,采用的密码以及连接方式,比如说安装mysql8.0会遇到一个问题,Navicat有些版本不支持mysql8.0默认连接方式

2022-04-09 21:01:01 1002

原创 MySQL事务原理分析

文章目录一、事务是什么?事务控制语句二、ACID特性原子性(A)隔离性(I)持久性(D)一致性(C)三、隔离级别READ UNCOMMITTEDREAD COMMITTEDREPEATABLE READSERIALIZABLEmvcc四、锁锁共享锁排他锁(X)意向共享锁(IS)意向排他锁(IX)锁的兼容性锁的算法锁的对象五、并发异常读异常(面试点)脏读不可重复读幻读丢失更新并发死锁死锁相反加锁顺序死锁锁冲突死锁死锁解决如何避免死锁一、事务是什么?事务是访问并更新数据库各种数据项的一个程序执行单元。目

2022-04-07 01:04:51 624

原创 MySQL索引原理以及SQL优化

文章目录一、Mysql索引索引主键索引唯一索引普通索引组合索引全文索引主键选择约束外键约束约束与索引的区别二、B+树B+树层高问题关于自增id聚集索引辅助索引索引存储innodb 体系结构三、最左匹配原则与覆盖索引覆盖索引四、索引失效问题五、索引原则优化器成本分析六、问题的解决与定位一、Mysql索引索引索引分类:主键索引、唯一索引、普通索引、组合索引、以及全文索引(elasticsearch);主键索引非空唯一索引,一个表都有且只有一个主键索引;在 innodb 中,主键索引的 B+ 树包含表

2022-04-05 22:16:41 1448

原创 SQL语句,索引视图,存储过程与触发器

文章目录一、数据库oltpolapSqlDQLDMLDDLDCLTCL数据库术语二、Mysql体系结构连接者连接池过滤,optimizer与缓存工具管理数据库引擎文件系统三、数据库设计三范式与反范式范式一范式二范式三反范式四、数据库常用命令高级查询联表查询子查询/合并查询视图权限管理触发器存储过程一、数据库按照数据结构来组织、存储和管理数据的仓库;是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合;总共三类关系型数据库关系型数据库包括:MySQL, SQL Server,

2022-04-02 22:31:34 1099

原创 应用层协议设计ProtoBuf

文章目录一、协议设计二、消息帧的完整性判断三、协议设计范例IM即时通讯云平台节点服务器nginxhttpredis四、json/xml/protobuf不同序列化对比协议安全协议升级五、protobuf工程实践和原理分析protobuf工程实践原理一、协议设计为什么需要协议设计呢比如说在qq聊天的场景中文字聊天文字当中有表情语音聊天两端去做沟通,就需要协议设计如果不做协议设计,服务端就不知道客户端发了些什么东西二、消息帧的完整性判断比如说你在qq对话框当中输入文字发出去,就要使用消息帧

2022-03-30 00:11:09 1101

原创 Posix API与网络协议栈

2022-03-27 20:33:35 2492

原创 网络编程关注的问题与reactor的应用

文章目录前言一、reactor作为网络框架的职责二、网络编程关注的问题:1.连接的建立2.读入数据三、单reactor模型四、多reactor(one eventloop per thread)总结前言一、reactor作为网络框架的职责对底层(内核):检测io、操作io。对上层(用户):提供用户关注的回调接口。操作io方式:1.阻塞操作。2.非阻塞操作。二、网络编程关注的问题:1.连接的建立分为两种:服务端处理接收客户端的连接,服务端作为客户端连接第三方服务;int client

2022-03-26 18:08:05 3789

原创 异步日志方案log4cpp

文章目录日志写入逻辑Log4cpp日志框架日志级别日志格式化日志输出日志回滚配置文件Log4cpp范例讲解配置文件剖析Log4cpp调用栈分析性能测试日志回滚muduo日志库分析异步日志机制双缓冲机制日志写入逻辑调用fwrite与write的吞吐量是不一样的,fwrite的ops比write的大我们可以看到,fwrite与write的区别,当单次发送的数据的大小会影响效率Log4cpp日志框架日志级别日志格式化日志输出日志回滚比如说我们可以只保存最近的一个日志,最大文件大小,超

2022-03-23 21:56:12 1115

原创 websocket协议与实现原理

文章目录一、websocket二、websocket的协议实现websocket的协议格式websocket如何验证客户端合法websocket传输的明文和密文的传输websocket如何断开实现一、websocketwebsocket是一个基于tcp的应用层的协议,对tcp的包做了一些限制,websocket只对协议的格式做了规定,不管你发送了什么,只要符合数据格式就可以了,里面是否有get或者post请求websocket压根儿不管,比http协议更加的宽泛更加松散。websocket除了连.

2022-03-20 20:28:56 4635 2

空空如也

空空如也

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

TA关注的人

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