自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis的常见面试题

Redis总结、常见面试题,光速过一遍回忆知识

2024-02-21 14:59:30 1209

原创 Redis典型应用之分布式锁

在一个分布式系统中,也会涉及到多个节点同时去访问一个公共资源的时候,此时就需要通过锁来做互斥控制,避免出现类似于“线程安全”的问题~~本质上来说就是使用一个公共的服务器,用来记录加锁状态当然这个服务器也可以是Redis,也可以是其他的组件(MySQL、ZooKeeper等),自己手搓也行。

2024-02-20 18:28:07 1308

原创 Redis典型应用之缓存

缓存(cache)是计算机中的一个经典的概念,在很多场景中都会涉及到核心思路就是把一些常用的数据放到触手可及(访问速度更快)的地方,方便读取比如我去坐动车,那么我会选择将我的身份证放在口袋里,而不是我的背包中的某个夹层中虽然我的口袋小,但是掏出来很快,并且在坐动车时身份证的使用还是比较频繁的~~这里的速度快,是一种相对的快的概念~通常情况下,OS对于硬件的访问速度是这样的:CPU寄存器 > 内存 > 硬盘 > 网络那么相对于网络,硬盘反倒是显得很快而对于硬盘来说内存又更加的快~~

2024-02-19 22:15:41 1467

原创 Redis集群

redis哨兵能够提高系统的可用性,但是真正存储数据的还是master和slave节点,所有的数据都保存在单个master和slave节点中如果数据量很大,接近超出了master/slave所在的机器的物理内存,就会出现严重问题!众所周知,redis的数据是保存在内存上的 ,即便现在的大公司的内存已经能够达到TB级别,但是在现在的这种大数据环境下,显然是不够的。

2024-02-19 21:16:35 762

原创 C++新版本特性

本篇博客分享,对于c++11,14,17的常用c++新版本特性~

2024-02-07 23:51:54 1226

原创 Redis哨兵

如果尚未了解主从复制的话建议观看这一篇博客:Redis的主从复制模式下,⼀旦主节点由于故障不能提供服务,需要⼈⼯进⾏主从切换,同时⼤量的客⼾端需要被通知切换到新的主节点上,对于上了⼀定规模的应⽤来说,这种⽅案是⽆法接受的,于是Redis从 2.8 开始提供了Redis Sentinel(哨兵)加个来解决这个问题哨兵节点不能只有⼀个.否则哨兵节点挂了也会影响系统可⽤性.哨兵节点最好是奇数个.⽅便选举 leader, 得票更容易超过半数.

2024-02-01 01:27:09 1150

原创 Redis事务 & 主从复制

主从复制特点:Redis通过复制功能实现主节点的多个副本主节点用来写,从节点用来读,这样可以降低主节点的访问压力复制支持多种拓扑结构~复制有全量复制(开销大),部分复制(开销小),实时复制主从节点之间通过心跳机制保证主从节点通信正常和数据一致性主从复制的配置过程:主节点配置不需要改动。从节点在配置⽂件中加⼊ slaveof 主节点ip 主节点端⼝ 的形式即可.从机多了,复制数据的延时⾮常明显主机挂了,从机不会升级成主机.只能通过⼈⼯⼲预的⽅式恢复(下一章哨兵能解决)

2024-01-31 12:10:27 1315

原创 Redis持久化

Redis支持RDB和AOF两种持久化机制,持久化能够有效避免因进程退出而造成的数据丢失问题,说白了就是将内存上的数据保存到硬盘上,等待下次加载时再将内存上的数据读取出来。

2024-01-31 00:54:41 1103

原创 Redis常见数据类型

如果没有看过上一章的前提知识的话,建议看一下下面这篇博客~~本篇博客分享Redis常用的数据类型包括Hash、List、Set、Zset(有序集合)的常用命令,以及内部编码方式并附带运行示例,以及适用场景~

2024-01-28 21:16:01 1398

原创 Redis常见数据类型[上]

Redis提供了5种数据结构,理解每种数据结构的特点对于Redis开发运维⾮常重要预备知识:几个全局命令,数据结构,内部编码,单线程模式机制分析5种数据结构的特点、命令使用、应用场景示例键遍历、数据库管理。

2024-01-28 00:03:01 1140

原创 初识Redis

Redis是一种基于键值对(key-value)的NoSQL数据库,与很多键值对数据库不同的是,Redis中的值可以由字符串、哈希、列表、集合、有序集合、位图等多种数据结构和算法组成,能够满足特别多的使用场景。又因为Redis会将所有数据都放在内存中,所以它的读写性能非常惊人。不仅于此,Redis还可以将内存的数据利用快照和日志的形式保存到硬盘上,在发生类似断电宕机的时候,内存中的数据不会丢失。

2024-01-27 21:54:53 911

原创 Git远程操作

之前文章所分享的所有内容(工作区,暂存区,版本库等待),都是在本地的!而我们的可以简单理解为,我们每个⼈的电脑上都是⼀个完整的版本库,这样你⼯作的时候,就不需要联⽹了,因为版本库就在你⾃⼰的电脑上。如果想让对方也能看到你所做的修改,那就需要将这些东西推送给对方~~

2024-01-24 14:24:10 1306

原创 Git分支管理

在实际分支合并的时候,并不是想合并就合并成功的,大概率会遇到代码冲突问题:例如上面的平行宇宙例子:宇宙a中你认为最好吃的是汉堡,宇宙b中的你认为可乐是最好的,那么你们合并的时候就会对“最好吃的事物”产生冲突,此时就需要手动处理一下~~有了分支你就不用怕,在自己的分支干活,别人看不到,也不影响别人,你在自己的分支想提交就提交,想回退就回退,直到开发完成后再一次性合并进去即可,这样又安全又不影响其他人工作。严格来说不是指向提交,⽽是指向master,master才是指向提交的,所以,HEAD?

2024-01-23 23:30:39 2227

原创 Git的管理操作

上一篇文章分享了如何安装Linux,作为本章的前提即是已经安装好了Gitindex:暂存区,git add后其中内容会新增HEAD:默认指向master分支的一个指针refs/heads/master:文件里保存当前master分支的最新commit idobjects:包含创建的各种版本库对象及内容,可以理解放了git维护的所有修改。

2024-01-23 22:15:19 1210

原创 Git的安装与配置

Git是一种版本控制器,能够让我们了解一个文件的历史,以及它的发展过程。通俗的将就是可以记录一个工程的每一次改动和版本迭代的一个管理系统,同时也方便多人协同作业。

2024-01-21 20:24:47 727

原创 MySQL视图&用户管理

视图是一个虚拟表,其内容由查询定义。跟真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。

2024-01-21 12:09:04 935

原创 MySQL隔离性的进阶理解

即当我们某个事务执行快照读的时候,对该记录创建一个 Read View 读视图,把它比作条件,用来判断当前事务能够看到哪个版本的数据,既可能是当前最新的数据,也有可能是该行记录的 undo log 里面的某个版本的数据。ReadView就是事务进行 快照读 操作的时候生产的 读视图 ,在该事物执行快照度的那一刻,会生成数据库系统当前的一个快照,记录并维护当前活跃事务的ID(当每个事务开启时,都会被分配一个ID,ID是递增的,所以越新的事务ID越大)这里可以看到,多个事务增删查的时候,都是当前读,都要加锁。

2024-01-21 01:28:09 1300

原创 MySQL事务

事务就是一组DML语句构成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。MySQL提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的数据是不同的。事务主要用在处理操作量大,复杂度高的数据。好比转账,你要将钱从手机上转钱给另外一个人,这时候就会有一堆MySQL语句:查询,修改等待,这样一堆的SQL语句加起来构成一个事务。

2024-01-21 00:14:05 725

原创 MySQL索引

提高数据库性能,且不需要加内存改程序,就能够让查询速度提高成百上千倍数。但是查询速度的提高是以插入、更新、删除的速度为代价的,这些操作增加了大量的IO。案例:先制造一个海量表,在查询的时候看看没有索引的时候会有什么问题?这样就创造出一张海量表了查询标号为998866的员工一共耗时将近5s,这还是在本地单人操作,在实际项目中会有很多人并发查询,这时候就得死机了。

2024-01-19 20:49:47 2623

原创 MySQL复合查询 & 内外连接

前面文章分享了mysql对一张表的查询,但在实际开发中是远远不够的,本篇博客提供sql数据,大家可以到本地MySQL执行语法后,跟着文章一起练练手。

2024-01-19 18:04:51 1150

原创 MySQL的基本查询(附案例)

如果没看过对于表的操作可以看一下下面这篇博客-->本篇博客主要分享的是对于表的增删查改,也就是大名鼎鼎的CRUD:Create(创建)、Retrieve(读取)、Update(更新)、Delete(删除)

2024-01-18 23:43:39 1745

原创 MySQL表的约束

真正约束字段的是数据类型,但是数据类型约束很单一,有时候需要一些额外的约束,更好的保证数据的合法性,表的约束很多,这里重点介绍以下几个default,comment,zerofill,unique key。

2024-01-18 22:25:54 986

原创 MySQL下对[表]的操作&数据类型

而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,3,....最多65535个;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,4,8,16,32,....最多64个。在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。例如:有一个调查表votes,需要调查人的喜好, 比如(登山,游泳,篮球,武术)中去选择(可以多选),(男,女)[单选]

2024-01-17 20:34:48 1055

原创 MySQL下对[库]的操作

说明:一般就设置好character就好了,不适用SET来设置也可以用“=”,例如:character=utf-8这里默认没有指定字符集和校验规则时,系统默认使用配置文件中的默认字符集: 创建一个使用utf字符集,并带校对规则的 db3 数据库字符集和校验规则: 查看系统默认字符集和校验规则:默认字符集: 创建一个数据库,校验规则使用utf8_general_ci(不区分大小写) 区分大小写 进行查询对于table

2024-01-17 19:29:12 1092

原创 MySQL基础

为了解决以上问题,设计出更加利于管理数据的东西------数据库,他能更有效的管理数据。

2024-01-16 10:53:35 471

原创 高级IO(结尾总结)

本章讲述了五种IO模型,并且展开讲述了IO多路转接,在Linux下使用IO转接有主要有三种当中最广泛好用的当属epoll,epoll支持ET以及LT(默认LT),但也不能无脑使用epoll。epoll其网络模式是事件驱动,事件驱动的本质还是IO事件,应用程序在多个IO句柄之间快速切换,实现异步IO。事件驱动的服务器最适合就是IO密集型的工作,例如反向代理,在客户端和web服务端中间起到一个数据中转的作用,基本上就是纯纯IO并不涉及复杂技术,所以用epoll这种事件驱动,单进程单线程就能搞定。

2024-01-16 10:36:47 1087

原创 网络基础之重中之重

主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称com: 一级域名. 表示这是一个企业域名. 同级的还有 "net"(网络提供商), "org"(非盈利组织) 等csdn: 二级域名, 公司名.www: 只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx 这样的格式, 来表示主机支持的协议.数据链路层的作用: 两个设备(同一种数据链路节点)之间进行传递数据以太网是一种技术标准;

2023-09-01 17:55:02 1986 1

原创 基于负载均衡的在线OJ实战项目

1.前端的代码在博客最上端绑定的文件当中 ,篇幅太长不展示出来了2.该项目的技术栈众多,是c++后端和前端进行交互的一个项目3.项目的难点有:负载均衡的分配到每一台编译服务器、容错处理,能够处理多种不同的错误原因、并发处理要对临界资源的管理、以及高并发访问的话要对效率有所保证,毕竟在线oj服务是具有时效性的4.debug困难,要在test.cc下测试成功后再进行编写,便于修改bugt=N6B9。

2023-08-29 16:45:10 1228

原创 在线OJ的项目演示

Linux在线OJ项目演示

2023-08-29 13:49:19 353

原创 Linux网络基础(中)

Linux网络编程套接字(中)

2023-08-13 14:52:20 1115

原创 Linux网络编程套接字(上)

本章值接收基于IPv4的socket网络编程,sockaddr_in中的成员struct in_addr.sin_addr表示32位的IP地址,但是我们通常使用的是点分十进制字符串表示IP 地址,以下函数可以在字符串表示 和in_addr表示之间转换;建立连接够,TCP协议提供全双工的通信服务,所谓全双工的意思就是,在同一条连接中,同一时刻,通信双方可以同时写数据,相对的概念叫做半双工,同一条连接在同一时刻,只能由一方来书写。此时服务器收到FIN后,会会应一个ACK,同时read也会返回0(第二次)

2023-08-11 16:45:01 1101 2

原创 Linux初识网络基础

1.独立模式:各个计算机互相独立,各个电脑保存各自数据2.网络互联:多态计算机连接在一起,完成数据共享3.:计算机的数量增多,通过交换机和路由器连接在一起4.:将远隔万里的计算机连接到一起。

2023-08-07 16:16:32 3409 3

原创 多线程只需这一篇足够

本篇文章尽可能详细的讲述了线程的概念、使用、安全问题,以及消费者生产者模型的设计理念和实现代码。对于单例模式的两种实现代码以及STL设计的线程安全方面问题都有详细讲述。

2023-07-30 20:51:16 2635 6

原创 Linux进程信号

每个信号都有一个编号和一个宏定义名称,这些宏定义可以在signal.h中找到,例如其中有定义编号34以上的是实时信号,这些信号各自在什么条件下产生,默认的处理动作是什么,在signal(7)中都有详细说明: man 7 signal。

2023-07-11 21:01:47 632 1

原创 进程间通信

数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程空间共享同一份资源通知事件:一个进程需要想另一个进程发送消息,通知他们发生了某种事件进程控制:有些进程希望能够完全的控制另一个进程的执行(Debug进程) ,此时控制进程希望能拦截另一个进程所有陷入和异常,并且能够及时知道它的状态改变。

2023-06-20 14:31:10 1316

原创 基础IO(总)

pathname:要打开或创建的目标文件flags:打开文件时,可以传入多个参数选项,用下面的一个或者多个常量进行"或"运算( '|' )返回值:成功就返回新打开的文件描述符,失败就返回-1使用:open函数具体使用哪个分场景而定,如果目标文件不存在,需要open创建,就要使用三个参数,并且设置新创建文件的权限。

2023-05-22 22:52:14 527

原创 进程控制(总)

用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序。(查看进程的退出码)通常,父子代码共享,父子再不写入时,数据也是共享的,当任意一方试图写入,便以写时拷贝的方式各自一份副本。(fork之后的代码),父子进程分别执行after后的代码,在这里父进程不一定比子进程先执行,这。所以,fork前父进程独立执行,fork后,父子两进程分别执行。返回值:自己进程(父进程)返回的pid为0, 子进程返回父进程的pid,出错返回-1。

2023-05-22 05:30:00 712

原创 进程概念--地址空间

32位。

2023-05-21 17:23:13 135

原创 (初)进程概念

计算机管理硬件:1.描述起来,用struct结构体2.组织起来,用链表或者其他高级数据结构。

2023-05-08 22:43:12 471

原创 Linux中的常用指令

本文介绍了linux下常用的指令。

2023-03-05 15:08:12 569

基于负载均衡的在线OJ实战项目

基于负载均衡的在线OJ实战项目

2023-08-29

Linux网络编程套接字(上)

Linux网络编程套接字(上),包括tcp服务器通信(附客户端,也可以直接用telnet) 多线程版和多线程版都有

2023-08-11

空空如也

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

TA关注的人

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