自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++八股文分享前---言

C++八股文分享前—言关于八股文无论是参考面经、还是牛客等,都不够全面,而且很多的知识点写的并不全面,甚至有些是错误的。所以决定开贴积累C++的八股文,与大家分享。欢迎各位提问留言面试中遇到的八股文,我会查阅资料更新在八股文系列文章中。这既是一个分享的过程,也是一个对我自己八股文知识查漏补缺巩固的过程。如果八股文系列文章中有写的错误的地方,希望大家能够留言指正。感谢大家。...

2021-04-24 11:56:55 1243

原创 设计模式第四节-装饰器模式

前言由于设计模式章节将贴出大量伪代码,为了压缩代码长度方便大家查看,因此代码段中与设计模式无关的代码,如构造函数、或是成员函数public、private、protect属性等均未写出。文章中若有说明不清晰或是有歧义、错误的地方欢迎大家评论指正,谢谢大家。一、定义装饰器模式(Decorator Pattern)的定义:装饰器模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。二、定义的白话叙述上述装饰器模式的定义可能有些晦

2021-10-05 13:56:20 283

原创 设计模式第三节-观察者模式

前言由于设计模式章节将贴出大量伪代码,为了压缩代码长度方便大家查看,因此代码段中与设计模式无关的代码,如构造函数、或是成员函数public、private、protect属性等均未写出。文章中若有说明不清晰或是有歧义、错误的地方欢迎大家评论指正,谢谢大家。一、定义观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。二、要素观察者模式的四

2021-09-25 16:13:38 251

原创 设计模式第二节-策略模式

关于停更了一个月的说明本人于8月底入职了新公司,由于刚入职,业务和新公司技术架构熟悉都花费了大量时间,而且又赶上入职就被安排了一个十一前必须上线的需求,因此本专栏鸽了1个月。。。先向之前关注了我的设计模式专栏而白白等待的学友说一声对不起。从本周起开始保持每周更新。前言由于设计模式章节将贴出大量伪代码,为了压缩代码长度方便大家查看,因此代码段中与设计模式无关的代码,如构造函数、或是成员函数public、private、protect属性等均未写出。文章中若有说明不清晰或是有歧义、错误的地方欢迎大家评论

2021-09-20 17:29:00 230

原创 设计模式第一节-工厂模式

一、简单工厂模式class CFather{};class CSon_a:public CFather{};class CSon_b:public CFather{};class Factory

2021-08-23 15:05:19 278 1

原创 设计模式-前言

前言:做C++开发工作也有5年了,我也从一个初出茅庐的自学C++的程序员,成长为了一个真正的开发工程师。而最近一年1多的时间我自认为是成长最快收益最多的一个阶段,这期间主要是遇到了算是我的C++启蒙导师的王健伟老师,虽然与老师只是在网课相识,从来没见过,但是不得不说我身上一半的C++本领都来自来王建伟老师,或是受老师自发自学而来。在此感谢老师。老师不是非常有名的老师,但是对我来说是让我受益终身的人。最近学完了老师的设计模式课程,为了帮助自己消化理解,故开坑设计模式专题文章,虽然该专题中的代码都是C++

2021-08-23 15:04:43 211

原创 HTTP错误码

记录部分HTTP错误码,清空自己本地的笔记200 OK:客户端请求成功。206 partial content服务器已经正确处理部分GET请求,实现断点续传或同时分片下载,该请求必须包含Range请求头来指示客户端期望得到的范围300 multiple choices(可选重定向):被请求的资源有一系列可供选择的反馈信息,由浏览器/用户自行选择其中一个。301 moved permanently(永久重定向):该资源已被永久移动到新位置,将来任何对该资源的访问都要使用本响应返回的若干个URI之一。

2021-08-13 16:57:15 169

原创 面试经验-高德地图引擎开发C++(社招)-二面

1、介绍一下最近一年的项目答:巴拉巴拉2、说下这个项目你解决过什么问题?答:巴拉巴拉,聊到内存泄露3、你觉得你遇到的内存泄露都有哪几种?答:有继承关系的类父类析构没有声明成虚函数的、malloc、new指针未释放的、vector里面指针未释放的,还一个内存占用问题就是vector元素只进行了pop,没有释放内部数组内存,导致容器占用的内存逐渐变大。4、那你是怎么释放vector里面的数组内存的?答:vector str, str.swap(vector())插曲:面试官发了个阿里的链

2021-07-20 22:08:26 1234 2

原创 面试经验-高德地图引擎开发C++(社招)-一面

1、项目经验答:巴拉巴拉。这个阶段聊了半小时。2、智能指针用过吗答:没用过,但知道原理,计数为1的时候释放掉内存。3、知道怎么检查内存泄露吗答:windows不知道,就靠调试IDE MFC框架自己看,linux用过valgrind。4、手撕代码shared_ptr答:case比较多,注意等号赋值的时候,如果指向的是同一段内存不应该让计数加1;指向其它内存的时候,如果之前管理的内存计数为1,需要释放掉原来的内存。注:因为没咋写过模板和操作符重载,语法上有点没信心中途编译不过说放弃。面试官

2021-07-13 22:10:27 872

原创 VMware虚拟机无法ping通主机解决办法

最近听说部分win10可以升级win11了,手欠点了自动升级,结果win11没升级成功,同时导致虚拟机又ping不通主机了,往上常规搜索到的解决办法见下面两个连接。VMware虚拟机中Centos7网络配置及ping不通思路设置入站规则我在尝试了上面2个方法后依旧无法恢复,最终恢复方法如下:1、打开控制面板防火墙,点击高级设置:2、点击防火墙属性:3、选择专用配置文件,防火墙状态启用,入站连接选择允许。4、点击网络图标,选择自己连接的网络,点击属性:5、切换为专用网络6、打开网络连接,

2021-07-12 14:07:43 11098 2

原创 C++八股文分享---Linux内存管理

C++八股文分享—内存管理一、 Linux虚拟地址空间概念首先引入虚拟地址的概念,我们应该知道,平时在代码中使用的一系列函数地址、变量地址都是虚拟地址,我们试用new和malloc在堆上分配的内存,也是仅仅是为程序在虚拟内存上分配了虚拟地址。系统为了防止不同进程同一时刻在物理内存中运行而对物理内存的争夺和践踏,采用了虚拟内存。虚拟内存技术使得不同进程在运行过程中,它所看到的是自己独自占有了当前系统的4G内存。所有进程共享同一物理内存,每个进程只把自己目前需要的虚拟内存空间映射并存储到物理内存上。 事

2021-07-03 16:07:07 672

原创 MYSQL笔记-关于分组查询中的where和having效率问题

MYSQL笔记-关于分组查询中的where和having效率问题前言最近在学习SQL语法时,遇到了一个where和having的效率问题,感觉非常值得注意,所以记录下来便于复习和与各位网友分享。结论放前面时间紧迫的同学可以直接看结论,where和having都可以达到对分组后的查询结果再过滤的目的,但在任何情况下请优先考虑使用where,where处理不了的再使用having,因为where的效率更高。情景现在有一张表emp,存储的数据分别为empno(员工编号),ename(员工姓名),j

2021-05-29 16:25:03 2567 1

原创 C++八股文分享---进程

C++八股文分享—进程前言本文主要分享的是关于进程与线程的八股文,既是对自己基础知识的巩固,也是与大家分享。文章中如果观点错误的地方肯定大家予以指正。文章中黑体部分文字为相关问题的要点,各位看官一定要牢牢背下来啊。1、什么是进程?进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。2、时间片的概念时间片(timeslice)又称为“量子(quantum)”或“处理器片(processor slice)”是操作系统分配

2021-04-26 20:53:02 2363

原创 C++八股文分享---数据结构其二---哈希表

C++八股文分享—数据结构其二—哈希表前言什么是哈希表?搜索二叉树对值的查找是通过从根节点开始,逐个节点与目标值做比较,向下查找,直至找到目标值或是到达根节点未查找到,时间复杂度为O(logn)。而哈希表,则是通过将value与key成对绑定,将key带入哈希函数,即可得到目标值的存放地址,从而得到目标值,在不考虑哈希冲突的情况下,时间复杂度为O(1)。哈希表其实可以理解为一个特殊的数组。我们通常使用的数组,通过下标0开始,直至数组长度len-1,依次存储数组元素,他们的地址是连续的。而哈希表是使用

2021-04-24 11:50:37 1735

原创 C++八股文分享---数据结构其一---树(二叉树、二叉搜索树、AVF树、红黑树、B树与B+树、赫夫曼树)

八股文分享 — 数据结构树(二叉树、二叉搜索树、AVL树、红黑树、B树与B+树)#前言树是一种非常典型的数据结构,无论是面试还是对于日常开发来讲,都是一个应该理解透彻的数据结构。部分树应该掌握到可手撕,较复杂的树应知道内部实现原理。本文需要对树结构有一定了解,不会细致的分享每一种数据结构的基础知识,只分享我在复习过程中认为重要的知识点。一、二叉树二叉树的特点为任意节点至多有2个孩子子节点。对于二叉树,我们要掌握如下知识点:1、二叉树的前序遍历、中序遍历、后序遍历:三种遍历的思路相同使用递归实现

2021-04-17 15:42:44 1348

原创 leetcode刷题笔记-树状数组

树状数组一、树状数组简介树状数组是个比较冷门的算法,主要用来解决区间和问题。树状数组能解决的问题,使用线段树都能解决;但线段树能解决的问题,并不是使用树状数组都可以解决,建议大家了解即可选择性学习。如果现在有问题给一个数组,求下标为n1到n2的区间和。为了方便说明和理解,我们假设这个数组拥有8个元素,即vector v = {3,4,5,1,4,5,6,7},题为计算下标3到7的区间和。常规方法为遍历下标3-7的元素,相加即可。现在我们使用树状数组来解决。如下图:先来解释图片的意思,上面的树状图即

2021-04-06 12:30:50 426

原创 redis-性能监控

性能指标监控:1、性能指标:PerformanceIatency redis响应一个请求的时间instantaneous_ops_per_sec 平均每秒处理请求总数hit rate(calulated) 缓存命中率(缓存命中率低,意味着对服务器压力较大,运行一段时间后应该会稳定在某一个数值)2、内存指标:Memoryused_momery 已使用内存mem_fragmentation_ratio 内存碎片率evicted_keys 由于最大内存限制被移除的key的数量vlocked_cl

2021-02-18 11:33:46 218

原创 redis-缓存预热、缓存雪崩、缓存击穿、缓存穿透分析及解决方案

缓存预热:服务器可能存在刚一开启因请求量较大,或是服务器间数据同步频度较高导致崩溃。针对该问题,要进行缓存预热。前置准备工作:1、日常例行统计数据访问记录,统计访问频度较高的热点数据2、利用LRU数据删除策略,构建数据留存队列例如storm和kafka配合准备工作:3、将统计结果中的数据分类,根据级别,redis优先加载级别较高的热点数据4、利用分布式多服务器同时进行数据读取,提取数据加载过程实施:1、使用脚本程序固定处罚数据预热过程2、如果条件允许,使用CDN(内容分发网络),效果会

2021-02-18 11:31:49 299

原创 redis-哨兵和集群

哨兵:一、哨兵简介:主机宕机时,需要找一个slave升级为master,并通知其它slave连接至该新的master。问题来了,谁来确认master宕机了?怎么找一个新的主机成为master?修改配置后,,原始的主机恢复了怎么办?哨兵是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。1、哨兵的作用:1)监控:不断地检测master和slave是否横穿运行。master存货检测、master与slave运

2021-02-18 10:27:34 432

原创 redis-主从复制

何为主从复制:主从复制为了解决单点redis服务器出现的机器故障或是内存不足等情况,造成的服务器数据丢失情况而生的解决方案。准备多台服务器互相连通,将数据保存多个副本到不同的服务器,保证服务器数据同步。这样一个服务器宕机其他的服务器依然可以提供服务,实现redis的高可用,同时实现冗余备份。多服务器连接方案:提供数据方:master,主服务器,负责数据写入接收数据防:slave,从服务器,负责数据读取该架构的目的就是解决数据同步的问题。将master的数据复制到slave中。主从复制就是将mast

2021-02-18 10:24:32 131

原创 redis-高级数据类型

Redis-高级数据类型一、Bitmaps说明:按位存储数据的操作,存入的value只支持0|1。应用场景:适合数据统计命令:1、getbit key offset (获取指定key对应偏移量上的bit值;若offset或key不存在,则返回的都是0)2、setbit key offset value (设置指定key对应偏移量上的bit值,value只能是1或0;偏移量比较大会返回操作的时间)扩展操作:1、bitop op destkey key1 key2 (对key指定位进行交、并

2021-02-18 10:20:28 79

原创 redis-核心服务器配置

Redis-服务器配置基本配置:1、demonize yes|no (设置服务器以守护进程方式启动)2、bind 127.0.0.1 (绑定主机地址,只能通过绑定的IP来访问redis服务器)3、port 6379 (服务器端口)4、databases 16 (数据库数量)日志配置:1、loglevel debug|verbose|notice|warning (日志等级,默认为verbose,推荐notice)2、logfile 端口号.log (日志记录文件名)客户端配置:1、max

2021-02-18 10:18:43 113

原创 redis-删除策略

Redis的数据特征Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态XX:具有时效性的数据-1:永久有效的数据-2:已经过期的数据 或 被删除的数据 或 未定义的数据一、删除策略:1、定时删除:创建一个定时器,当key设置有过期时间,且过期时间到达时,有定时器任务立即执行对键的删除操作优点:节约内存,到时就删,快速释放不必要的内存缺点:CPU压力大,无论CPU处于多重的负载,都会执行删除,会影响redis服务器响应时间和指令吞吐量总结:用处理器

2021-02-18 10:17:18 642

原创 redis-持久化

redis持久化说明:持久化指的是一种如服务器忽然断电等突发情况导致数据未保存丢失的数据恢复技术持久化分为2种方式,如下:1、数据快照(redisRDB):每隔一段时间自动保存一下数据2、过程(redisAOF):保存操作步骤,出现异常时,对数据依据保存的操作步骤重新操作来恢复数据Redis-RDB持久化说明:采用数据快照方式,在执行save或bgsave指令后保存全部数据优点:1、紧凑压缩的二进制文件,存储效率高2、RDB内部存储时redis在某个时间点的数据快照,适用于数据备份和全量复

2021-02-18 10:16:28 62

原创 redis-事务和锁

redis事务何为事务:redis事务就是一个命令执行的队列,将一些命令包装为一个整体,在执行时,一次性全部依次执行,中间不会被打断。注意事项:1、若multi开启事务后,后续指令存在语法错误,则指令队列被销毁。事务停止。事务的基本操作:1、multi (开启事务)2、exec (执行事务)3、discard (取消事务,销毁事务队列中的所有指令)何为监控锁:为解决多线程操作数据导致的冲突引入的操作。对指定的key实现监控,若key在事务中发生了变化,则后续的exec会执行失败。监视锁

2021-02-18 10:14:23 105

原创 redis-redis指令详解(其二)

前言:前文其一介绍redis5种常用数据类型的操作指令,本文将继续上一篇文章,分享redis其余关于key和db的基础指令。文中有问题的地方欢迎大家指出,共同学习探讨,把好的正确的东西分享给更多人。????一、key基本操作1、del key (删除key)2、exists key (查询key是否存在)3、type key (获取key的类型)4、rename key newkey (为key改名,如果newkey已存在,就覆盖它)5、renamenx key newkey (为key改

2021-02-09 14:35:07 2284

原创 redis-redis指令详解(其一)

前言:前面文章分享了mysql的c++,原计划是再做一个oracle的封装。后来在学习过程中发现oracle和mysql有较多重叠的内容,且同属于sql数据库,实际在工作中的使用频率也远不如mysql高,因此决定先鸽了哈哈,改为学习一个nosql数据库,查看各大公司的招聘需求,就选择了redis进行学习。本文将记录redis语句的学习,以及关于redis的一些注意事项,持续更新。 文中有问题的地方欢迎大家指出,把好的正确的东西拿出来和大家分享。redis指令详解:string说明:该类型为

2021-02-05 15:15:42 210

原创 TLV格式解析说明

TLV格式解析说明关于TLV格式报文的解析,自己总是忘记,尤其对于L域长度的判断更加捉急,所以记录下来加深自己的印象同时分享给大家。TLV格式报文2个字母分别代表tag标签(也可以理解为type类型),length长度以及value值。T占2个字节。L通常占1-4个字节(当然也有可能为更多,目前还没遇到过),长度有2种表示方法一种为占1个字节,最高位为0,其余为表示value的长度;另一种为第一个字节最高位为1,其余7位代表后面几个字节代表value长度,听起来比较晦涩,后面会举例分析。V占L指定

2021-02-04 16:56:22 2214

原创 使用C++封装的跨平台mysql8.0 SDK(含代码)

本文主要分享使用C++封装的mysql8.0代码,目前已完成mysql库的封装,该代码支持windows和linux的跨平台编译。目前手头工作较多,等到春节假期会补充代码解析,以及另一篇文章的SQL语句解析。后续看时间,计划再写一个跨平台oracle的SDK,实现一个oracle和mysql的接口统一,使得代码层的数据库迁移工作更便利。现在先贴上github地址,和大家分享代码。对于代码设计不合理的地方,欢迎大家提出建议,可采纳的我会进行修改????代码地址:https://github.com/liu

2021-02-02 16:00:39 722 4

空空如也

空空如也

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

TA关注的人

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