自定义博客皮肤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)
  • 收藏
  • 关注

原创 linux socket编程之tcp(实现客户端和服务端消息的发送和接收)

试想一下,你的手机上有抖音和微信两个客户端小程序,如果抖音客户端bind了8080这个端口,微信也想要bind 8888这个端口,那么这时候就会出现一个问题,一个端口号被两个进程竞争!所以解决方法就是:tcp client建立连接的时候,OS会自己自动随机的给client进行bind。sockfd:获取连接时得到的socket套接字的文件描述符。客户端不需要显示的bind,os会自动帮你绑定端口号!sockfd:要建立连接的socket套接字的文件描述符。32位ip地址:sin_addr.s_addr。

2025-04-26 16:30:54 885

原创 linux socket编程之udp(实现简单的翻译功能)

试想一下,你的手机上有抖音和微信两个客户端小程序,如果抖音客户端bind了8080这个端口,微信也想要bind8080这个端口,那么这时候就会出现一个问题,struct sockaddr *:包含ip地址+端口号的结构体(类型不一样需要进行强转)socklen_t addrlen:sockaddr_in结构体的大小。addrlen:struct sockaddr结构体的大小。addrlen:struct sockaddr结构体的大小。32位ip地址:sin_addr.s_addr。

2025-04-23 18:28:42 589

原创 每日算法-哈希表(两数之和、判断是否互为字符重排、存在重复元素II、字母异位词分组)

利用哈希表,先判断hash表中有无target-nums[i]的值,再将nums[i]放入到hash表中。

2025-04-22 17:13:32 417

原创 linux socket编程之udp(实现客户端和服务端消息的发送和接收)

试想一下,你的手机上有抖音和微信两个客户端小程序,如果抖音客户端bind了8080这个端口,微信也想要bind8080这个端口,那么这时候就会出现一个问题,type:选择你要使用的应用层协议,这里我们选择udp,也就是SOCK_DGRAM。socklen_t addrlen:sockaddr_in结构体的大小。addrlen:struct sockaddr结构体的大小。addrlen:struct sockaddr结构体的大小。32位ip地址:sin_addr.s_addr。

2025-04-19 17:27:07 1095

原创 每日算法-链表(23.合并k个升序链表、25.k个一组翻转链表)

我们可以先定义一个小根堆,将k个指针的头结点如堆,每次取堆顶元素尾插到newhead中,然后再pop(),接着push堆顶原来堆顶元素的下一个节点重点分析:1.定义小根堆的时候需要传入仿函数。2.每次入堆之前需要判断指针是否为空3.循环结束条件为堆空。

2025-04-18 00:13:39 252

原创 打造一个属于自己的log日志类(日志等级、获取时间、可变参数、宏替换)

一.日志等级一.日志等级日志是有等级的,我们需要提前设置好日志等级,我们使用枚举常量来定义日志等级。将日志等级由整形转换为字符串类型二.获取时间日志是有格式的,我们需要知道当前时间,我们可以使用c语言库提供的time()接口获取时间戳time函数的返回值是一个time_t类型的时间戳,但是很显然,这并不是我们想要的某年某月某日几点几分几秒这样的结构,我们可以使用localtime函数来转换时间戳。三.可变参数首先认知一下c语言使用可变参数列表的一些接口。

2025-04-16 21:26:25 336

原创 网络编程socket套接字(端口号、网络字节序、socket常见API、sockaddr结构)

端口号(port)是传输层协议的内容. 一个进程可以绑定多个端口号; 但是一个端口号不能被多个进程绑定;此处我们先对tcp和udp有一个宏观的认识,具体细节后续再讨论我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分, 网络数据流同样有大端小端之分. 那么如何定义网络数据流的地址呢?不清楚大端和小端区别的可以看这里:数据在内存中的存储(详解) 不看后悔一辈子!!!_内存存储-优快云博客先初步认知一下为什么不把sockaddr

2025-04-16 11:46:37 1150

原创 每日算法-链表(2.两数相加、24.两两交换链表中的节点、143.重排链表)

定义两个指针l1,l2依次遍历两个链表,用变量add存储l1加l2的值,将add的个位数取出来充当新节点的值,然后将add的个位数删去,即add /=10,循环此操作。重点分析:1.跟归并排序中合并两个有序数组类似,当两个链表并不是一样长,其中一个链表并没有遍历完!!!2.当两个链表都遍历完之后,如果add的值为1,则需要再增加一个节点,它的值为1.

2025-04-15 23:48:30 411

原创 网络基础(OSI七层模型与TCP/IP五层模型、网络协议)

协议的本质就是一种约定,计算机协议就是计算机之间的约定。计算机生产厂商有很多;计算机操作系统也有很多;计算机网络硬件设备还是有很多;如何让这些不同厂商之间生产的计算机能够相互顺畅的通信?就需要有人站出来约定一个共同的标准, 大家都来遵守,这就是;,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;把网络从逻辑上分为了7层每一层都有相关、相对应的物理设备,比如路由器,交换机;OSI。

2025-04-15 15:41:03 737

原创 MySQL用户管理

代表本系统中的所有数据库的所有对象(表,视图,存储过程等)给用户web赋予test数据库下所有文件的select权限。如果用户存在,赋予权限的同时修改密码。表示这个用户可以从哪个主机登陆,如果是。回收web对test数据库的所有权限。表示某个数据库中的所有数据对象。如果该用户不存在,就是创建用户。中的用户,都存储在系统数据库。权限列表,多个权限用逗号分开。,表示只能从本机登陆。用户修改指定用户的密码。表,视图,存储过程等。特定用户现有查看权限。

2025-04-06 18:17:17 283

原创 MySQL视图

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。创建视图数目无限制,但要考虑复杂查询创建为视图之后的性能影响。与表一样,必须唯一命名(不能出现同名视图或表名)视图不能添加索引,也不能有关联的触发器或者默认值。视图可以提高安全性,必须具有足够的访问权限。可以用在视图中,但是如果从该视图检索数据。2.2修改了视图,对基表数据有影响。2.3修改了基表,对视图有影响。视图可以和表一起使用。

2025-04-05 23:29:22 157

原创 MySQL事务

构成,也就意味着,任何一个事务,都有执行前,执行中,执行后的阶段。这是事务的最高隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决了幻读的问题。当客户A检查到还有一张票时,进行买票,还没有更新数据库时,客户B检查票数,发现大于0,又进行买票操作。隔离级别如何实现:隔离,基本都是通过锁实现的,不同的隔离级别,锁的使用是不同的。默认的隔离级别,它确保同一个事务,在执行中,多次读取操作数据时,会看到同样的数据行。数据库,可不止你一个事务在运行,同一时刻,甚至有大量的请求被包装成事务,在向 MySQL。

2025-04-05 17:12:03 1103

原创 MySQL索引(操作篇)

如果某列需要创建索引,但是该列有重复的值,那么我们就应该使用普通索引。一个表中可以有多个普通索引,普通索引在实际开发中用的比较多。唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件。如果在某一列建立唯一索引,必须保证这列不能有重复数据。where子句中的字段不该创建索引。比较频繁作为查询条件的字段应该创建索引。更新非常频繁的字段不适合作创建索引。主键索引的效率高(主键不可重复)创建主键索引的列,它的值不能为。一个表中,可以有多个唯一索引。一个表中,最多有一个主键索引。主键索引的列基本上是。

2025-04-03 21:43:18 343

原创 MySQL索引(概念篇)

但是天下没有免费的午餐,查询速度的提高是以插入、更新、删除的速度为代价的,这些写操作,增加了大量的IO。正是因为有序,在查找的时候,从头到后都是有效查找,没有任何一个查找是浪费的,而且,如果运气好,是可以提前结束查找过程的。页内部存放数据的模块,实质上也是一个链表的结构,链表的特点也就是增删快,查询修改慢,所以优化查询的效率是必须的。需要注意,上面的图,是理想结构,大家也知道,目前要保证整体有序,那么新插入的数据,不一定会在新Page。原因就是太浪费空间了。索引:提高数据库的性能,索引是物美价廉的东西了。

2025-04-03 19:24:39 1042

原创 MySQL内外连接

表的连接分为内连接和外连接内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,也是在开发过程中使用的最多的连接查询。

2025-04-01 22:19:57 136

原创 MySQL复合查询

单行子查询是指子查询只返回单列,单行数据;多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询则是指查询返回多个列数据的子查询语句。的任意员工的工资高的员工的姓名、工资和部门号(包含自己部门的员工)号部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含。的所有员工的工资高的员工的姓名、工资和部门号。自连接是指在同一张表连接查询。的上级领导的编号和姓名(子查询是指嵌入在其他。返回多行记录的子查询。

2025-04-01 21:47:53 343

原创 MySQL内置函数

如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数。函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;显示当前正在使用的数据库。(与字符集编码有关)

2025-03-31 23:04:36 417

原创 MySQL基本查询

- 0 row affected: 表中有冲突数据,但冲突数据的值和 update 的值相等。AVG([DISTINCT] expr) 返回查询到的数据的 平均值,不是数字没有意义。MAX([DISTINCT] expr) 返回查询到的数据的 最大值,不是数字没有意义。SUM([DISTINCT] expr) 返回查询到的数据的 总和,不是数字没有意义。MIN([DISTINCT] expr) 返回查询到的数据的 最小值,不是数字没有意义。在删除数据的时候,并不经过真正的事物,所以无法回滚。

2025-03-31 16:31:04 883

原创 MySQL表的约束

约束本质是通过技术手段,倒逼程序员,插入正确的数据,反过来,站在mysql的视角,凡是插入进来的数据,都是符合数据约束的。:当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值+1操作,得到一个新的不同的值。默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候, 用户可以选择性的使用默认值。一般而言,我们建议将主键设计成为和当前业务无关的字段,这样,当业务调整的时候,我们可以尽量不会对主键做过大的调整。我们可以简单理解成,主键更多的是标识唯一性的。

2025-03-30 21:39:51 802

原创 MySQL数据类型

数值越界测试:如果我们向mysql特定的类型中插入不合法的数据,MySQL一般都是直接拦截我们,不让我们做对应的操作。反过来,如果我们已经有数据被成功插入到mysql中了,那么插入的数据一定是合法的!!!所以,mysql中,一般而言,数据类型本省也是一种:约束。

2025-03-30 15:27:26 856

原创 MySQL表的操作

在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型, 表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准。字符集,如果没有指定字符集,则以所在数据库的字符集为准。不同的存储引擎,创建表的文件不一样。表添加一个字段,用于保存图片路径。

2025-03-29 16:32:34 289

原创 MySQL库的操作

支持数据库进行字符比较的编码,本质也是一种读取数据库中数据所采用的编码格式。:字符集是一个系统支持的所有字符的集合,它规定了每个字符对应的编码值。数据库无论对数据做任何操作,都必须保证操作和编码必须是编码一致的。对应的数据库文件夹被删除,级联删除,里面的数据表全部被删。对数据库的修改主要指的是修改数据库的字符集,校验规则。创建名为 databases1 的数据库,创建名为 databases1 的数据库,创建名为 databases1 的数据库。数据库内部看不到对应的数据库。指定数据库字符集的校验规则。

2025-03-29 14:11:43 709

原创 C++在线OJ负载均衡项目

通常是拿到数据之后,要进行构建网页,渲染网页内容,展示给用户的。1. common: 共享模块(日志、访问文件等方法)3. oj_server: 获得题目列表等其他功能模块。2. compile_server: 编译与运行模块。通常是和数据交互的模块,比如,对题库进行增删改查(oj_server.cc 用户请求的服务路由功能。第三方开源序列化、反序列化库。控制器,就是我们的核心业务逻辑。第三方开源前端网页渲染库。获取首页,用题目列表充当。本质就是建议一个小型网站。提供对数据的操作功能。

2025-03-19 20:15:37 895

原创 C++在线OJ负载均衡项目(前端网页代码)

【代码】C++在线OJ负载均衡项目(前端网页代码)

2025-03-19 19:26:54 183

原创 C++多态(复习)

重定义(隐藏)是指两个函数分别在基类和派生类的作用域,这两个函数的函数名相同。若两个基类和派生类的同名函数不构成重写就是重定义。

2025-03-17 20:51:47 331

原创 C++继承(复习)

是指在菱形继承的腰部使用虚拟继承(virtual)的继承方式,菱形虚拟继承对于D类对象当中重复的A类成员只存储一份,然后采用虚基表指针和虚基表使得D类对象当中继承的B类和C类可以找到自己继承的A类成员,从而解决了数据冗余和二义性的问题。1.派生类的构造函数被调用时,会自动调用基类的构造函数初始化基类的那一部分成员,如果基类当中没有默认的构造函数,则必须在派生类构造函数的初始化列表当中显示调用基类的构造函数。5.派生类对象初始化时,会先调用基类的构造函数再调用派生类的构造函数。

2025-03-17 15:34:14 386

原创 C++模版(复习)

T _month;T _day;//类模板中的成员函数在类外定义,需要加模板参数列表。

2025-03-16 23:19:18 240

原创 C++内存管理(复习)

new和delete是用户进行动态内存申请和释放的操作符,operator new和operator delete是系统提供的全局函数,new和delete在底层是通过调用全局函数operator new和operator delete来申请和释放空间的。6、申请自定义类型对象时,malloc/free只会开辟空间,不会调用构造函数和析构函数,而new在申请空间后会调用构造函数完成对象的初始化,delete在释放空间前会调用析构函数完成空间中资源的清理。都是从堆上申请空间,并且需要用户手动释放。

2025-03-16 20:20:12 478

原创 C++类和对象(二)(复习)

如果B是A的友元,在B类中可以直接访问A类的私有成员变量,但是在A类中不能访问B类中的私有成员变量。3、友元函数可以在类定义的任何地方声明,不受访问限定符的限制。1、友元函数可以访问类是私有和保护成员,但不是类的成员函数。如果A是B的友元,B是C的友元,不能推出A是C的友元。5、友元函数的调用与普通函数的调用原理相同。4、一个函数可以是多个类的友元函数。2、友元函数不能用const修饰。

2025-03-16 17:43:18 148

原创 C++类和对象(一)(复习)

用类将对象的属性和方法结合在一块,通过访问权限,选择性的将其接口提供给外部。第一个成员在与结构体变量偏移量为0的地址处。(即结构体的首地址处,即对齐到0处)其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。结构体的总大小为最大对齐数(每个成员变量都有一个对齐数)的整数倍。如果嵌套了结构体,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。对齐数 = 该结构体成员变量自身的大小与编译器默认的一个对齐数的较小值。

2025-03-16 17:42:55 315

原创 C++入门基础(复习)

当函数声明和定义里都有缺省参数,且参数值不同时,编译器就不知道该用哪个值。

2025-03-16 13:29:57 349

原创 linux socket编程之udp_dict_serve服务端--引入配置文件

class Dict//默认配置文件路径//默认分隔符private://将配置文件的内容加载到_dict中if(!//按行读取文件//将对应的key value插入到哈希桶中public:Load();return "这个单词未找到";~Dict(){}private://key value 结构的字典 单词 翻译//配置文件的目录。

2024-12-23 15:30:17 526

原创 linux socket编程之udp_each_client客户端代码

domain:选择你要使用的网络层协议 一般是ipv4,也就是AF_INETtype:选择你要使用的应用层协议,这里我们选择udp,也就是成功返回文件描述符,失败返回-1。

2024-12-19 19:39:57 374

原创 linux socket编程之udp_each_server服务端代码

domain:选择你要使用的网络层协议 一般是ipv4,也就是type:选择你要使用的应用层协议,这里我们选择udp,也就是SOCK_DGRAM成功返回文件描述符,失败返回-1注意:源代码放在最后面,log是自己写的日志类,这里使用了类进行封装。

2024-12-19 15:34:09 577

原创 c++bind绑定器--通俗易懂

bind的使用场景bind可以改变传入参数的个数!!!我们想在一个类外使用这个类的非静态成员函数时,我们可以使用bind绑定这个函数,让我们不必传入this指针

2024-11-03 19:13:28 288

原创 c++包装器/适配器 function--通俗易懂

在下面的场景下 useF类模版要实例化出三份,影响效率而用function包装器能很好的解决这个问题。

2024-11-03 16:26:53 503

原创 c++ lambda表达式--通俗易懂

2.a。

2024-11-01 23:09:19 805

原创 c++仿函数--通俗易懂

仿函数也叫函数对象,是一种可以像函数一样被调用的对象。从编程实现的角度看,它是一个类,不过这个类重载了函数调用运算符。

2024-11-01 22:58:46 477

原创 c++中string的模拟实现(超详细!!!)

范围for底层逻辑其实就是套用的迭代器,故我们不考虑范围for。

2024-03-09 23:19:42 574 31

原创 c++中string的使用!!!(适合初学者 浅显易懂)

拷贝构造。

2024-03-09 16:06:40 1150 27

空空如也

空空如也

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

TA关注的人

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