自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++离散化算法详解

在不考虑数据的绝对大小的情况下,不改变数据的相对大小,对数据进行压缩。有点抽象,怎么理解?举个例子:在数据范围是1-100000条件下,判断给出的10个数中出现最多的次数。如果我们直接使用位图,就要100000个bit来记录。但是,这道题只给10个数据,而且要计算的是次数,只需要考虑数据的相对大小即可,我们可不可以想一个办法,只使用10个bit存储相对大小,就可以大大减少空间的使用,这就是离散化。

2024-12-30 19:37:51 268

原创 any万能容器(c++17)

万能容器可以存储任意类型数据,可以提升程序的灵活度。例如:std::vector<std::any>就是一个可以存储多种数据类型的数组。

2024-12-06 19:24:32 303

原创 C/C++中使用MYSQL

首先要保证下载好mysql的库和头文件,头文件在/usr/include/mysql/目录下,库在/usr/lib64/mysql/目录下:一般情况下,在我们安装mysql的时候,这些都提前配置好了,如果没有就重装一下mysql。这些都准备好之后,就可以开始在c语言中使用mysql了!

2024-11-12 20:21:47 1991

原创 MYSQL——用户管理

mysql需要对登陆的用户进行管理,所有用户的信息都存放在名为mysql的数据库的user表中:密码不会明文显示,都是通过对密码做md5运算得到的。

2024-11-12 09:18:42 593

原创 MYSQL隔离性原理——MVCC

表的列包含用户自定义的列和由系统自动创建的隐藏字段。我们介绍3个隐藏字段,不理解也没有有关系,理解后面的undo log就懂了:DB_TRX_ID6 byte,最近修改修改插入事务ID,记录创建这条记录最后一次修改该记录的事务ID: 7 byte,回滚指针,指向这条记录的上一个版本(简单理解成,指向历史版本就行,这些数据一般在undo log中)DB_ROW_ID: 6 byte,隐含的自增ID(隐藏主键),如果数据表没有主键,InnoDB会自动以。

2024-11-09 15:41:29 1097

原创 MYSQL——事务管理

在数据库使用者角度,事务就是完成一个事件。例如一个员工信息数据库,要完成员工离职的事件,可能需要很多操作,比如删除员工基本信息以及员工在公司的表现,薪资水平等。而这一系列的操作就是为了完成员工离职这一个事件,这就是事务。事务可以是一个sql语句,也可以是多个。

2024-11-09 14:06:55 1216

原创 MYSQL——索引

索引可以大大提高搜索的效率,假如有十万个数据,没有索引直接遍历查询可能需要5s左右,因为mysql需要频繁的进行磁盘读取,但是有索引就可以很快查到。那么索引的原理是什么呢?

2024-11-03 19:41:11 998

原创 MYSQL复合查询

我们要查询的数据要使用的限制条件不是很简单的,可能要在一个限制条件下再次限制,比如要查找小美所在公司的平均薪资,就要先找到小美的公司,再求平均薪资。复合查询分两种,多表连接查询、子句查询和合并查询。

2024-10-31 16:18:00 1082

原创 MYSQL内置函数

当前日期date可以是日期或者日期时间type可以是year,month,day,hour,minute或second返回date加上n个单位时间的日期时间date可以是日期或者日期时间type可以是year,month,day,hour,minute或second返回date减去n个单位时间的日期时间例子:查看两分钟内插入的数据。

2024-10-28 14:14:19 689 1

原创 聚合函数与分组

本文中所有例子都使用这个表。

2024-10-25 15:32:08 493

原创 表中数据的增删改查

创建一个表后如何增删改表中数据呢?

2024-10-20 21:27:46 416

原创 表的约束

约束就是设定条条框框,保证被约束目标符合约束条件。表的约束就是对表内列数据的约束,保证列数据的正确性。

2024-10-20 21:03:14 1268

原创 MYSQL数据类型

分为tinyint smallint int bigint,对应的大小为1 2 4 8byte。那么每个类型的数据范围也就确定了,和C语言中的char short int long 的范围相同。以tinyint为例:1byte的数据范围是-128~127,创建表,插入数据-129和128这两个数据超出范围,插入失败。。tinyint的无符号数据范围是0~255,插入-1和256会失败。

2024-10-17 15:07:47 1215

原创 MYSQL数据库操作

不写-h默认连接本地127.0.0.1不写-P连接默认端口3306。

2024-10-15 17:14:32 944

原创 修改MYSQL库的默认字符集和校验规则

修改mysql的默认配置文件my.cnf。

2024-10-15 11:00:37 419

原创 IO模型——多路转接

我们无时无刻不在接收发送数据,这个收发的过程就是IO。为了提高IO的效率,就要在不同的情境下使用合适的IO模型。

2024-10-10 20:16:22 1108

原创 数据链路层

数据链路层解决的是直接相连的主机之间的数据传输。

2024-10-05 19:00:58 951

原创 网络层——IP

由32位二进制数组成,通常用点分的形式被分为四个部分,每个部分1byte,最大值为255。从功能的角度看,ip地址由两部分组成,网络号和主机号。网络号标识了ip所在的网段,主机号标识了在该网段中的唯一的一台主机。二者的区分又需要与掩码配合使用,例如192.168.1.2/24,24表示掩码255.255.255.0,将掩码与ip进行按位与操作,获得了192.168.1.0即为该主机所在网段。将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网。

2024-09-28 18:12:08 1600

原创 TCP协议

TCP(transport control protocal)传输控制协议,是一种面向字节流的有连接的可靠传输协议。

2024-09-26 12:32:06 1739

原创 https加密原理

以为http的数据都是以明文传送,会有很大的安全问题,所以出现的https协议。https就是在http协议的基础上增加了一个安全层,可以对数据进行加密和解密(例如SSL、TLS等)。

2024-09-22 15:08:54 437

原创 http协议

url(union resource locator)就是我们常说的网址,通过服务器地址(DNS域名解析)就可以访问想要的服务。在某些情况下,获取到的数据可能含有与url中的特殊字符冲突的字符,要求BS(brows&server)两端对数据进行编码和解码。例如,搜索c++时,+会被编码为%2B。

2024-09-19 16:53:17 842

原创 如何让虚拟机的服务被主机访问

当我们在虚拟机上写了一个服务器,在宿主机访问时,出现无法访问的情况。这可能是虚拟机网络的设置问题。

2024-09-17 19:50:40 1073

原创 TCP socket

TCP的socket和UDP大同小异,基本的代码结构都是相同的。一些相同的接口本文就不赘述了,例如,socket,bind,有需要看这篇文章。

2024-09-15 19:39:42 1072

原创 守护进程daemon

守护进程是一种后台运行的计算机程序。一般我们写一段代码运行时,如果退出当前用户,进程也会终止,但是守护进程不会。

2024-09-11 18:54:37 424

原创 udp网络通信 socket

套接字是实现进程间通信的编程。IP可以标定主机在全网的唯一性,端口可以标定进程在主机的唯一性,那么socket通过IP+端口号就可以让两个在全网唯一标定的进程进行通信。套接字有三种:域间套接字:实现主机内部的进程通信的编程原始套接字:使用网络层或者数据链路层的接口进行编程,更难更底层,例如制作抓包等网络工具网络套接字:实现用户通信的编程。

2024-09-06 16:13:58 1292

原创 在centos7安装mysql

如果是这样就什么都不需要做。如果不是。

2024-08-13 12:20:27 277

原创 生产消费者(CP)模型

CP模型有三个部分:productor和consumer(由线程组成的功能块)还有一个特定结构的内存空间以超市为例,超市货物由供应商提供,超市暂时存储货物,消费者可以在超市购买货物。工作流程;生产者获取数据,生产任务并将任务放到仓库,消费者从仓库获取任务,处理任务“321”原则三种关系:生产者和生产者之间的关系:互斥消费者和消费者之间的关系:互斥生产者和消费者之间的关系:互斥,同步(必须生产者生产之后,消费者才能消费,要有顺序)二种角色:生产和消费一个交易所:特定的内

2024-08-06 16:57:22 405

原创 线程的同步互斥

互斥保证了在一个时间内只有一个线程访问一个资源。先看一段代码:三个线程同时对全局变量val进行--,同时val每自减一次其线程局部存储的全局变量++最终的结果val竟然出现了负数,为什么呢?因为线程函数的操作是非原子的,线程可能在任何一步被切换。这就会导致数据不一致问题,要想解决就必须使用锁。

2024-07-30 20:20:07 475

原创 线程控制

对线程的控制思路和进程相似,创建、等待、终止,只需要调用接口就行。但是在Linux下没有线程的概念,因为Linux的设计者认为,线程是一种轻量级的进程,毕竟创建线程只需要创建PCB。因此Linux中使用多线程必须使用第三方pthread库,线程库为用户提供接口。

2024-07-13 21:38:59 470

原创 线程(vs进程)

那怎么理解之前的进程定义呢?进程内核数据结构等就是操作系统分配的资源,只不过没有多个线程,只有一个执行流罢了。所以一开始的对进程的定义就是进程的一个特例,一个只有一个执行流的特例!

2024-07-13 16:48:53 482

原创 可重入函数

可重入函数(reentrant function)是一类在多线程或多进程环境中能安全执行的函数。

2024-06-13 14:56:15 297

原创 操作系统——信号

信号是由OS向进程发送的,信号就一定保存在进程中。普通信号有31个,以位图的形式储存到进程PCB的一个int类型中。实时信号与普通信号的区别就是:实时信号收到后必须立即处理不会等待,实时信号是存储在进程的一个队列中。所以发信号就是操作系统修改对应的int值或者队列。

2024-06-13 14:16:44 1675

原创 core dump核心转储

【代码】core du。

2024-06-08 17:28:40 246

原创 进程通信——共享内存

共享内存有点像动态库创建共享内存:操作系统在物理内存分配一段空间(Shared Memory Segment)将共享内存挂起:通过页表将共享内存映射到两个进程的共享区通信:拿到虚拟地址,写端直接在地址上写数据,读端直接在地址上读数据断开挂起,销毁共享内存和文件一样,共享内存也会有对应的内核结构体来描述,有对应的共享内存描述符。

2024-06-03 15:38:41 690

原创 进程通信——管道

什么是进程通信?进程通信是实现进程间传递数据信息的机制。要实现数据信息传递就要进程间共享资源——内存空间。那么是哪块内存空间呢?进程间是相互独立的,一个进程不可能访问其他进程的内存空间,那么这块空间只能由操作系统提供。进程通信的方式有多种,管道就是一种。管道是一种最简单的通信机制,管道分为匿名管道和命名管道。匿名管道通常用于父子进程之间。命名管道可实现任意两个进程通信。

2024-06-03 11:42:53 951

原创 动静态库

说了这么多方法,其实实际应用都是直接安装库,将库放到共享库目录下。其他方法了解即可。

2024-05-25 11:24:51 786

原创 打开文件,向文件写数据,我们的计算机都干了什么

调用高级语言库函数(例如C语言的fopen),库函数内部调用系统调用接口open,操作系统为其分配文件描述符。

2024-05-21 12:59:41 275

原创 深入理解文件系统

磁盘格式化并不是将磁盘的每个数据块的数据都抹除,不仅会降低效率而且会降低硬件的使用寿命。一般就是将分区的属性删除,将inode和数据块的位图都清除。因此,格式化不会将磁盘的数据都抹除只是修改了属性,如果误删了重要数据,最好的解决方法就是什么都不做,找专业的人使用专业的软件来恢复数据。软连接类似于Windows中的快捷方式,删除目标文件会导致软连接失效。硬连接是文件的等价副本,删除硬连接不影响文件内容,只有当所有硬连接都被删除时,文件内容才会被删除。

2024-05-20 13:25:42 937

原创 文件缓冲区

看这段代码的结果:为什么只有系统调用接口write可以输出呢?这个答案与文件缓冲区有很大的关系。

2024-05-18 17:59:02 353

原创 操作系统——文件fd

未指定路径会在默认在当前路径,为什么?进程属性cwd(current work directory)会有路径的信息,如果我们修改这个属性,文件就会创建到修改后的路径下:当前路径下并没有创建文件到我们修改的路径下面发现了我们写入的文件。

2024-05-17 12:11:32 786

空空如也

空空如也

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

TA关注的人

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