自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 redis 遍渐进式历

遍渐进式历虽然解决了阻塞问题,但如果在遍历区间 键有所变化(增加、修改、删除),可能导致遍历时键的重复遍历或者遗漏,这点务必在实际开发中考虑。1.scan cursor [match pattern] [coutn] [type]:以渐进式的方式进行建的遍历。type :这次遍历只想获取到type(string、hash、list、set、zset等)类型的。渐进式遍历,在遍历过程中,不会在服务器这边存储任何的状态信息。遍历是可以随时终止的~~不会对服务器产生任何的副作用。

2024-08-19 22:38:37 507 1

原创 redis zset(有序集合)类型

15. zinterstore destination unkeys key [key ...] [weights weight [weight ...]] [aggregate <sum | min |max>] :交集 结果存到destination中 unkeys运算集合的个数 weight 权重 aggregate分数按照什么规则计算(默认是sum)7.zpopmax key [count]:删除最大的count个元素(分数相同按照member的字典序),返回被删除的元素。

2024-08-19 20:00:48 651

原创 redis set(集合)类型

6. smove key1 key2 member: 把member从key1挪到key2(如果key1中和key2中都有,会先删除key1中的元素)8.siner key key2[key ...](每个key都是一个集合):交集(算好的交集存到key中)9.suion key key2[key ...]:并集 (算好的交并集存到key中)10.sdiff key key2[key ...]差集 (算好的差集存到key中)5.srandmember key count:随机查看count个元素。

2024-08-18 23:56:48 444 1

原创 redis list类型

13.blpop key [key ...] timeout:(对一个非空的list进行操作,会删除并返回左边第一个元素,对空list进行操作会等待timeout秒,有元素就删除并返回,过了这个时间还没没有就返回nil,在等待的时间不影响redis做其他事)4.lrange key start stop:查看key 从start 到 stop 的值,下标和数组下标一样,也可以用负数表示,也可以混合使用 0 -1 表示显示key对应应的所有值)5.lpop key:从list的左侧取出元素。

2024-08-18 20:18:00 426

原创 redis hash类型的命令

格式: hset key field value [field value ...](value是字符串)10.hsetns key field value 在字段不存在的情况下,设置hash中的字段和值。4.hdel:删除哈希中的字段(del删除的是key,hdel删除的是field)7.hgetall key field:一次可以查询多次hash的field。格式:hdel key field [field ...]格式:hexists key field。返回值:设置成功的键值对的个数。

2024-08-17 17:19:36 369

原创 redis string类型

incr:针对value -/+ 1 格式: incr key(incr操作的key不存在,就会吧这个key的value当作0来使用,value必须是int类型)incrby:针对value +/- n (incrby操作的key不存在,就会吧这个key的value当作0来使用,value必须是int类型)decr : 针对value -1(decr操作的key不存在,就会吧这个key的value当作0来使用,value必须是int类型)setnx:设置指定key的超时时间 单位是秒。

2024-08-17 12:46:25 330

原创 redis虽然是单线程模型,为啥效率这么高呢?

2.redis的核心功能,比数据库的核心功能更简单,数据课对于数据的增删查改都有更复杂的功能支持,这样的功能势必会花费更多的开销。参照物是数据库(mysql,oracle,sql server)4.处理网络IO的时候,使用了epoll这样的IO多路复用。1.redis 访问的是内存,数据库访问的是磁盘。3.单线程模型避免了一些不必要的线程竞争开销。

2024-08-16 22:55:02 140

原创 redis通用命令

4.5 h[a-b]匹配 hallo hbllo [a-b]:表示匹配 a到b的任意一个字符。4.5 h[a-b]匹配 hallo hbllo [a-b]:表示匹配 a到b的任意一个字符。4.3 h[ae]匹配 hallo hello [ae]: 表示匹配[]=里的任意一个字符。4.3 h[ae]匹配 hallo hello [ae]: 表示匹配[]里的任意一个字符。

2024-08-16 21:14:52 493

原创 C++ 继承

析构函数调用过程:先调用派生类的析构函数,完成在派生类独有的资源的清理,然后编译器在派生类析构函数最后一条语句之后插入了call基类构造函数的汇编指令,即派生类函数的最后一条有效语句执行完后,才会执行基类的析构函数,完成基类中资源的清理。继承机制是面向对象程序设计使代码可以复用的最重要的手段,它应许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生的类,称派生类。该相同名称的成员时,优先调用子类的,派生类的无法直接被调用,相当与子类将基类中同名的成员屏蔽了。6.派生类对象的构造和析构函数。

2024-08-15 19:59:21 562

原创 C++ 指针和引用的区别

5.引用变量的++和--是直接给引用实体的值+1或者-1,而指针变量的+1和-1是让该指针像前或向后偏移一个类型的大小。4.在sizeof中含义不同:引用结果为引用类型的大小,但指针始终是地址空间所占字节个数(32位平台下占4个字节)2.引用一旦引用了一个实体就不能在引用其它实体,指针可以在任何时候指向同一类型的指针。7.访问的方式不同,指针需要显示解引用,引用编译器自己处理。1.引用在定义时必须初始化,而指针没有要求。6.有多级指针,但是没有多级引用。3.没有空引用,但是有空指针。

2024-08-15 14:45:34 177

原创 C++ 引用

1.概念:引用不是新定义的一个变量,而是给已经存在的变量起别名,编译器不会给引用变量开辟内存空间,它和它的引用共用同一个内存空间。2.特性: 引用在定义时必须初始化、一个变量可以有多个引用、引用一但引用了一个实体,在也不能引用其他实体。4.做函数的参数和返回值可以提高效率减少拷贝,但是需要注意做返回值,返回后的生命周期还在。3.const引用:用const修饰的引用,该变量不能修改。

2024-08-15 14:18:19 145

原创 模拟STL实现priority_ququ 仿函数

bool operator()(T& x,T& y) {//仿函数。

2024-08-15 10:35:55 463

原创 C++ 函数重载

答: C++编译器对名字的修饰规则:编译器将函数参数类型信息添加到名字中了,这样即使函数名相同,但是参数不同,其在底层的名字也就不同了。这样编译器只要跟据传递的参数在编译期间就可以知道那个函数在调用他了。2.调用原理:函数名相同,编译器只知道调用那个函数?编译期间,编译器通过对实参类型推演,根据推演的结果找相对应的重载函数,如果存在且不会造成二义性则调用,否则产生编译错误。1.概念 相同的作用域,函数名相同参数列表不同,参数列表不同具体体现在参数类型不同、参数的个数、类型次序不同,与返回值是否相同无关。

2024-08-14 23:07:42 214

原创 C++定长内存池

/还回来过程中链接的自由链表的头指针 这里你少了一个;//这个是在std的域里面的哦。void Delete(T* obj) {//把还回来的内存头插到_freeList中、//大块内存在切分过程中剩余字节数。//指向大块内存的指针。//剩余内存不够一个对象大小时,重新开一快空间。//显示调用析构函数清理对象。//定位new,显示调用T的构造函数初始化。void TestObjectPool()//测试性能代码。//优先把还回来内存快对像,再次重复利用。// 每轮申请释放多少次。// 申请释放的轮次。

2024-08-14 20:41:25 330

原创 Mysql 约束(下)

3.1外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为nul。1.2.自增长的特点:任何一共字段做自增长前提本身是一个索引,自增长字段必须是整数,一张表最多只有一个自增长, 可以设置起始值。1.1概念 :当对应的字段,不给值,系统会从当前字段已经有的最大值+1操作,通常和主键搭配使用,作为逻辑主键。2.1 可以为空,且可以多个为空,而空字段不做唯一性比较,没有重复的信息,多个字段可以有唯一性约束。

2024-08-14 16:26:11 316

原创 模拟STL实现queue 容器适配器

public:T& top() {private:st.push(1);st.push(1);st.push(1);st.push(1);while (!st.pop();sq.push(1);sq.push(1);sq.push(1);sq.push(1);while (!sq.pop();return 0;

2024-08-12 08:57:28 289

原创 模拟STL 实现stack 容器适配器

public:T& top() {private:st.push(1);st.push(1);st.push(1);st.push(1);while (!st.pop();sq.push(1);sq.push(1);sq.push(1);sq.push(1);while (!sq.pop();return 0;

2024-08-12 08:37:09 748

原创 C++缺省参数

声明或定义是为函数的参数指定一个默认值,在调用改函数时,如果没有指定实参则采用该默认值,否则使用指定的参。3.3缺省参数必须是常量和全局变量,即编译器能够明确知道缺省的内容。2.2半缺省:部分参数带有缺省值(缺省值必须从右到左依次给出)3.2 声明和定义不能同时给,编译器不知道是那个。2.1全缺省:所有参数都有缺省值。3.1 半缺省只能从右向左连续给。3.4 C语言不支持。

2024-08-11 20:43:53 137

原创 C++ 命名空间

3.成员使用: 命名空间名::成员名(std::cout;) using namespace 命名空间名称(using namespace std)将命名空间展开里面所有的成员都可以直接使用,但是可能会造成命名冲突。2.实现:namespace 命名空间名 命名空间可以嵌套 同一个工程当作可以存在相同名称的命名空间编译器最后会将所有相同名称的命名空间合在一起。1.概念:命名空间是新定义的一个作用域,里面可以存放函数,变量,定义累,主要用来防止命名冲突。

2024-08-11 20:28:04 159

原创 仿STL实现list const* const& 迭代器

/ pos位置之前插入。

2024-08-11 19:28:24 911

原创 Mysql 约束(上)

一个整数列定义了 ZEROFILL 属性后,存储在该列中的数值会在显示时自动填充前导零,以达到定义列时指定的宽度,定义zerofill之后就必须是无符号数了,不管有没有这个unsigned,有这个unsigned就是显示指定一下,避免忽略zerofill的限制。创建表的时候添不为空加约束。显示是如果宽度小于限定的宽带会自动补零 但mysql 实际中还是存储的是 实际的宽度的值,可以通过hex(列名)来验证。表的约束就是数据库通过技术手段来约束特定的一张表,让插入 修改 删除操作符合预期。

2024-08-11 18:23:03 326

原创 defube和cosnt的区别

区别:1.、编译器处理方式的不同:define在预处理阶段直接进行哄替换;const在编译时确定值。3,存储方式:define在预处理时进行宏替换,不会分配内存;const常量会分配内存。2、类型检查:没有类型,define不进行类型检查;const有类型,会进行类型检查。

2024-08-09 01:36:16 99

原创 C++ 模拟实现vector

iterator insert(iterator pos, const T& x) {//外部的迭代器失效还解决不了 所以用的时候要注意了哦!if (_finish == _end_of_storage) {//扩容了要记录pos的相对位置,解决了迭代器失效的问题。//记录pos 的相对位置。//通过len获得扩容后的pos的位置。void erase(iterator pos) {//erase以后迭代器失效了 不能访问。

2024-08-07 18:04:38 1032

原创 std::string 的特性

如果存储的字符串大小不超过Buf数组的大小就存在里面,如果字符串的大小超过16字节就会重新开辟空间就会把Buf的空间浪费掉这是一种空间换时间的设计。std的string里面有一个——Buf的数组大小为16通过内存对齐之后就是28个字节。s1是自己实现的string。

2024-08-06 21:06:20 263

原创 实现string赋值重载和拷贝构造的深拷贝

String& operator=(String s){//赋值重载有一下两种写法。String(const String& s) {//深拷贝。

2024-08-06 20:24:38 411

原创 Linux 软连接

换句话说: 该文件的内容存储的就是所要链接目标文件的绝对路径。可以这么理解 通过软连接的这个文件做的任何操作都是对 指向的那个文件做任何操作是没区别的。创建一个新的链接文件 该文件的Data block就是所要目标文件的绝对路径。ln -s 目标文件的路径 软连接文件的名称。

2024-08-06 17:59:54 110

原创 C++ operator>>模拟实现

public:_day = day;private:int _year;int _month;int _day;return in;

2024-07-30 12:56:42 293

原创 Qt connect函数怎么使用lambda表达式

button->setText("我被按下了!button->setText("按钮");

2024-07-29 20:13:12 896

原创 C++ 日期类operator<<

out

2024-07-28 22:01:18 426

原创 QDialog窗口的特点

if 0 //Dialog 窗口的焦点可以随意切换 有两种显示模式 模态和非模态。// Dialog窗口 不管有没有指定this都不会内嵌到父窗口中。w->exec();//阻塞在exec函数上 使父窗口不能执行。//new的时候没有有this 都无所谓。//模态,exec()阻塞程序的执行。

2024-07-25 20:48:26 125

原创 Qt qwidget窗口的特点

/如果创建窗口对象的时候给其指定了父对象,这个窗口就不是一个独立窗口。//创建窗口对象,没有给w对象指定父对象,这个窗口是一个对立窗口。//这样的话当父窗口显示的时候,子窗口也一并显示出来了。//要显示这个独立窗口必须要进行show()操作。//这时候子窗口就i没有边框了。//不内嵌窗口--有边框。//内嵌窗口--无边框。

2024-07-25 20:08:21 291

原创 Qt main.cpp详解

/ 创建该对象,有且只有一个。//显示窗口 阻塞函数进入了事件循环。//应用程序类 负责整个窗口的事件处理。

2024-07-25 18:20:22 187

原创 Qt中的项目文件

DEFINES += QT_DEPRECATED_WARNINGS #编译器使用过时的Qt特性时 编译器会发出警告。QT += core gui#core 核心模块 gui 窗口界面模块。SOURCES += \#可指定的源文件 一般情况下编译器默认添加。HEADERS += \#可指定的头文件 一般情况下编译器默认添加。# 在Qt4中 core gui widgets 是一体的。CONFIG += c++11 #使用C++11标准编译。

2024-07-25 18:09:35 521

原创 C语言 条件编译

else#endif#elif#endif#else#endiftest();test1();test2();

2024-07-14 16:14:03 244

原创 力扣 230.二叉树的深搜_二叉搜索树中第k小的元素_C++

public:

2024-06-16 22:38:33 153

原创 力扣 98.二叉树中的深搜_验证二叉搜索树_C++

public:if(!if(!if(!

2024-06-16 22:37:16 218

原创 力扣 814.二叉树中的深搜_二叉树剪_C++

public:if(!if(!root->val)

2024-06-16 22:36:12 233

原创 力扣 129.二叉树中的深搜_求根节点到叶节点数字之和_C++

public:if(!return l&r;

2024-06-16 22:35:15 273

原创 力扣 2331.二叉树的深搜_计算布尔二叉树的值_C++

public:if(!return l&r;

2024-06-16 22:34:30 304

原创 力扣 50.pow(x,n)

public:return N>0?

2024-06-16 22:33:11 328

空空如也

空空如也

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

TA关注的人

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