自定义博客皮肤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 c++环境

安装docker拉取code-server镜像。

2024-11-25 15:33:08 367

原创 跨平台开发_RTC程序设计:实时音视频权威指南 2

将8 bit分为一组,我们定义了字节(Byte)。1956年6月,使用了Byte这个术语,用来表示数字信息的基本单元。最早的字节并非8 bit。《计算机程序设计的艺术》一书中的MIX机器采用6bit作为1Byte。8 bit的Byte约定,和IBM System/360大型机的研发有关,由其领导者布鲁克斯(Frederick P.Brooks,美国,1931-2022)推行开来。对于单字节中的位,从左到右,我们依次编号为bit7~bit0。

2024-11-24 10:44:26 1193

原创 跨平台开发_RTC程序设计:实时音视频权威指南 1

2008年9月,Google紧随Apple其后,发布了Android1.0系统与Apple公司的选择不同,Android系统使用的是开源许可,各大手机制造厂商都可以基于Android系统的代码,定制自己的移动操作系统。另一位工程师费金(Federico Fagin,意大利,1941一)对这一电路进行了设计,在4.2mmx3.2mm的硅片上集成了2250个晶体管,用单个芯片实现了中央处理器的功能,这就是4位微处理器--Intel4004。或者是飞鸽传书:将写好的信件绑到鸽子的腿上进行信息的传递。

2024-11-23 11:12:27 2410

原创 VS 使用ATL模板实现COM组件

在该解决方案下,添加C++控制台应用,在此工程中添加MyComTest工程中的两个头文件(MyComTest_i.c,MyComTest_i.h --主要用来查看CLSID和IID),在TestMyCom.cpp文件中添加引用。生成完以后会在release下面的x64 出现dll 然后进入到这个根目录执行cmd。然后在Com组件MyComTest.idl的interface IAdd 加入方法。在Add.h的public声明方法 AddNumber。在Add.cpp实现方法。

2024-11-21 13:32:46 507 1

原创 vs创建dll+测试项目引用dll

SolutionDIR改成ProjectDir。新建个项目 然后 把生成的dll复制到根目录下面。创建review.h 和 review.cpp。定义review.cpp。在连接器常规添加上附加库。定义review.h。

2024-11-21 11:52:18 303

原创 C++学习路线(数据库学习)十

安全方面考虑 - 防止在查询用户信息时,把密码也直接查询出来,会容易被攻击和进行恶。地图数据,二维数组对应的行列式,多行以|分开,列以逗号分隔,最大接近支持45x45的地图。玩家权限标志,每一位代表一种权限, 比如旁观权限,大厅公聊权限,私聊权限等。客户端进程的最低版本,若是登录时发现客户端版本低于这个值,要求其更新。*功能:根据关卡id 获取完整的关卡信息(如: 地图,下一关等)如果验证成功,则 玩家可以进入大厅,如果失败,则不允许进入!"恭喜您~ \n此关挑战成功,任意键跳转到下一关!

2024-11-13 09:53:59 837

原创 C++学习路线(三十六)

auto_ptr 是c++ 98定义的智能指针模板,其定义了管理指针的对象,可以将new 获得(直接或间接)的地址赋给这种对象。在调用u.release()时是不会释放u所指的内存的,这时返回值就是对这块内存的唯一索引,如果没有使用这个返回值释放内存或是保存起来,这块内存就泄漏了。make_shared函数的主要功能是在动态内存中分配一个对象并初始化它,返回指向此对象的shared_ptr;如果我们主动释放掉get 函数获得的指针,那么智能 指针内部的指针就变成野指针了,析构时造成重复释放,带来严重后果!

2024-11-12 22:05:05 813

原创 C++学习路线 (三十四)

C语言中 能隐式类型转换的,在c++中可用 static_cast<>()进行类型转换。C语言中不能隐式类型转换的,在c++中可以用 reinterpret_cast<>() 进行。总结:static_cast<>()和reinterpret_cast<>() 基本上把C语言中的 强制类型转换给覆盖,注意reinterpret_cast<>()很难保证移植性。//返回容器中倒数最后一个元素的后面的常量迭代器。//返回容器中倒数最后一个元素的后面的迭代器。//返回容器中最大元素的个数,同size()。

2024-11-12 21:07:59 894

原创 C++学习路线(三十三)

STL主要分为分为三类:容器和算法通过迭代器可以进行无缝地连接。在STL中几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。STL 最早源于惠普实验室,早于C++存在,但是C++引入STL概念后,STL就成为C++的一部分,因为它被内建在你的编译器之内,不需要另行安装。STL被组织为下面的13个头文 件:、、、、、、、

2024-11-12 11:57:09 549

原创 C++学习路线(三十二)

/如果在保护段执行期间没有引起异常,那么跟在try块后的catch子句就不执行,程序从try块后跟随的最后一个catch子句后面的语句继续执行下去。//catch子句按其在try块后出现的顺序被检查,匹配的catch子句将捕获并按catch子句中的代码处理异常(或继续抛掷异常)//提示:处理不了的异常,我们可以在catch的最后一个分支,使用throw语法,继续向调用者throw。//第二种情况,throw 字符串类型,实际抛出的指针,而且,修饰指针的const 也要严格进行类型匹配。

2024-11-12 11:07:50 859

原创 C++学习路线(三十一)

在同一个cpp 文件中。

2024-11-11 21:31:40 843

原创 C++学习路线(三十)

C++提供了模板(template)编程的概念。所谓模板,实际上是建立一个通用函数或类,其类内部的类型和函数的形参类型不具体指定,用一个虚拟的类型来代表。这种通用的方式称为模板。模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。

2024-11-11 18:11:27 676

原创 C++学习路线(二十九)

这个类中定义的某些成员函数,只是为了提供一个形式上的接口,准备让子类来做具体的实现。如果基类指针指向的是子类对象,那么先调用子类的析构函数,再调用父类的析构函数。此时,这个方法,就可以定义为“纯虚函数”, 包含纯虚函数的类,就称为抽象类。某些类,在现实角度和项目实现角度,都不需要实例化(不需要创建它的对象),程序执行时,父类指针指向父类对象,或子类对象时,在形式上是无法分辨的!形式上,原本调用父类的方法,但是实际上会调用子类的同名方法。(类的静态数据成员,保存在数据区中,和对象是分开存储的)

2024-11-11 16:02:32 1045

原创 SQLSERVER-配置记录

通过这个网址安装sqlserver数据库 的 express版本。然后装入ssms(数据库管理工具)也就是可视化管理数据库的东西。安装好了之后,点击自定义配置数据库。

2024-11-01 15:16:47 272

原创 c++岗位

2024-11-01 14:44:10 126

原创 C++学习路线 数据库部分 八

每个基于MEMORY存储引擎的表实际对应一个磁盘文件,该文件的文件名与表名相同,类型为frm类型,该文件中只存储表的结构,而其数据文件都是存储在内存中的。值得注意的是,服务器需要有足够的内存来维持MEMORY存储引擎的表的使用。因为存储引擎指定了表的类型,即如何存储和索引数据、是否支持事务等,同时存储引擎也决定了表在计算机中的存储方式。在创建表时,若没有指定存储引擎,表的存储引擎将为默认的存储引擎。MyISAM存储引擎是MySQL中常见的存储引擎,曾是MySQL的默认存储引擎。

2024-10-31 13:03:46 1361

原创 C++学习路线(数据库部分)七0

存储过程创建以后,用户可以通过SHOW STATUS语句来查看存储过程的状态,也可以通过SHOW CREATE语句来查看存储过程的定义。在上述语句中,参数procedure_name表示所要创建的存储过程名字,参数proc_param表示存储过程的参数,参数routine_body表示存储过程的SQL语句代码,可以用BEGIN…在MySQL中,可以使用IF语句、CASE语句、LOOP语句、LEAVE语句、ITERATE语句、REPEAT语句和WHILE语句来进行流程控制。参数var_name是变量的名称;

2024-10-31 11:58:09 1258

原创 C++学习路线(数据库部分)六

例如,在学校里,学生的智商测试结果一般都是保密的,如果因为一时疏忽向查询中多写了关于“智商”的字段,则会让学生的智商显示给所有能够查看该查询结果的人,这时就需要限制使用者操作的字段。通过前面章节的知识可以发现,数据库中关于数据的查询有时非常复杂,例如表连接、子查询等,这种查询会让程序员感到非常痛苦,因为它的逻辑太复杂、编写语句比较多,当这种查询需要重复使用时,很难每次都编写正确,从而降低了数据库的实用性。这样程序员只能看到视图中所定义的数据,而不是视图所引用表中的数据,从而提高数据库中数据的安全性。

2024-10-30 22:20:24 1064

原创 C++学习路线(数据库学习)五

(1)执行SQL语句SELECT,查询表grade中所有的数据记录,按照语文成绩(字段chinese)升序排序,具体SQL语句如下:cclassORDER BYchinese ASC;

2024-10-30 13:30:52 1004

原创 C++学习路线(数据库部分)四

语法形式:

2024-10-30 10:00:18 1070

原创 C++学习路线(数据库部分)三

AUTO_INCREMENT是MySQL唯一扩展的完整性约束,当向数据库表中插入新记录时,字段上的值会自动生成唯一的ID。在具体设置AUTO_INCREMENT约束时,一个数据库表中只能有一个字段使用该约束,该字段的数据类型必须是整数类型。由于设置AUTO_INCREMENT约束后的字段会生成唯一的ID,因此该字段也经常会同时设置成PK主键。设置表中某字段值的自动增加约束非常简单,可以在MySQL数据库管理系统中通过SQL语句AUTO_INCREMENT来实现,其语法形式如下:

2024-10-29 17:52:21 1162

原创 C++学习路线(数据库部分)二

例如,可按下列任何一种方式定义 AUTO_INCREMENT 列:

2024-10-29 12:23:31 2175

原创 C++学习路线(数据库部分)一

作为一种商业性数据库,在事务处理方面有自己独到的优势,功能比较强大,市场占有率也比较高。oracle数据库是一种大型的关系型数据库,在使用上会收费。在部署上,可以根据自己的环境采用单节点或者集群部署。经常会使用于银行和金融机构,存储大量数据,可以对海量数据进行分析处理,在安全性上使用访问控制和多种数据备份机制,可靠性高。

2024-10-28 20:38:32 916

原创 C++学习路线(二十八)

文件没有关闭文件没有关闭, close(),可能导致写文件失败文件打开方式不合适在VS2015的部分版本中,当sscanf和sscanf_s的格式字符串中含有中文时,可能会读取失败。在vs2019中未发现该类问题。int age;sscanf_s("汤姆 25", "%s %d", name, 32, &age);return 0;vs2022也没有问题。

2024-10-28 15:18:35 1422 1

原创 C++学习路线(二十七)

默认访问权限是private访问权限之后一定要加冒号:指定为某种访问权限之后, 就一直是这种权限, 除非再次指定为其他权限.// private。

2024-10-27 23:42:21 634

原创 C++学习路线(二十六)

A a;B b;test(a);test(b);return 0;一个派生类可以有两个或多个基类(父类)。多重继承在中小型项目中较少使用,在Java、C#等语言中直接取消多继承,以避免复杂性。

2024-10-27 13:03:37 1272

原创 C++学习路线(二十五)

等Human.h。

2024-10-26 14:22:49 1098

原创 C++学习路线(二十四)

类的静态方法:1.可以【更常用】,也可以通过对象(实例)来访问。2.在类中,不能访问普通数据成员和普通成员函数(对象的数据成员和成员函数)1)可以直接访问“静态数据成员”对象的成员函数(没有static的成员函数)内部,类的静态成员函数(有static的成员函数)内部,可以直接访问“静态数据成员”即:所有的成员函数,都可以访问静态数据成员。类不能直接访问普通的静态数据成员(Human::humanCount非法)2)对象可以直接访问静态成员函数。

2024-10-26 10:04:05 563

原创 C++学习路线(二十三)

在创建一个新的对象时,自动调用的函数,用来进行“初始化”工作:对这个对象内部的数据成员进行初始化。。函数名:没有返回值,没有参数,最多只能有一个析构函数一般都使用 public使用方法:不能主动调用。对象销毁时,自动调用。如果不定义,编译器会自动生成一个析构函数(什么也不做)

2024-10-24 20:35:11 740

原创 C++学习路线(二十二)

Person p1;Person p2;p2 = p1;// 执行浅拷贝// 应该打印: Address: 123 Main St// 应该也打印: Address: 123 Main St// 修改原始字符串,并查看 p1 和 p2 是否受到影响// 现在打印: Address: 456 Elm St// 也打印: Address: 456 Elm St// 记得删除动态分配的内存return 0。

2024-10-24 17:31:40 1364

原创 C++学习路线(二十一)

4个方向,所以使用4个二维数组来表示1种方块。

2024-10-23 20:21:24 525

原创 10X程序员工作法-极客时间-听课总结(在更)

为什么我们会加班加点?做出来的东西与要求不符?《人月神话》 提到了两个非常重要的概念:本质复杂度和偶然复杂度本质复杂度:无论如何都要做的事情偶然复杂度:因为做事方法不对,导致要做的事情接下来我们从这几个方面来进行梳理。

2024-10-20 17:28:09 1474

原创 C++学习路线(二十)

坐标系(650,650)

2024-10-18 20:26:49 294

原创 C++学习路线(十九)

1.申请的内存多次释放2.内存泄漏3.释放的内存不是申请时的地址4.释放空指针5.释放一个内存块,但继续引用其中的内容6.越界访问//1.多次释放内存delete[] p;//--------//2.内存泄漏do {//3.释放的时候不是申请时候的地址i < 10;i++) {// 这个时候的p2 已经不是申请时候的地址了,所以会导致内存泄漏//4,释放空指针//我们构造一种情况if (1) { // 加入能打开文件。

2024-10-18 11:40:50 1483

原创 C++学习路线(十八)

地震检波器每隔固定的时间间隔采样一次预测地震的能量数据,并保存到文件中地震监测系统会从文件中读取相应的能是数据,测试在给定的时间点上,,如果这个比例,那么在这个事件点上极有可能发生地震。能量数据的平方加上长的时间周期取5个 点 也就是 (2 * 2 + 5 * 5 + 17 * 17 + 9 * 9 + 7 * 7) / 5 = a短的时间周期取3个点 (17 * 17 + 5 * 5 + 2 * 2) / 3 = b。

2024-10-17 16:29:50 964

原创 C++学习路线(十七)

变量名回顾变量名实质上是一段连续存储空间的别名,是一个标号(门牌号)程序中通过变量来申请并命名内存空间通过变量的名字可以使用存储空间问题 1:对一段连续的内存空间只能取一个别名吗?变量名回顾1.在C++中新增加了引用的概念2.引用可以看作一个已定义变量的别名3.引用的语法:Type&name=var;4.引用做函数参数那?(引用作为函数参数声明时不进行初始化)引用不能没有初始化,除了函数参数作为形参引用的函数重载编译器分辨不出来根值传递的区别 也就是说在链接的时候 符号表中的函数都是为_Z4

2024-10-16 23:47:47 645

原创 大型企业软件开发是什么样子的? - Web Dev Cody

也有双活模式- 就是 东海岸用户只链接东海岸服务器,西海岸等同,他们之间的服务器或者其他的数据会进行同步操作,系统也要有韧性,也就是比如说opensearch集群挂掉了,那么可以从别的系统的opensearch获取数据和服务,但是一般来说国家禁止用户跨境流动。当dev环境没有问题的时候,dev环境向test环境进行一个pull Request 然后test环境又会进行新一轮的构建服务器的环境生成。可以看到每一个小组的合作是很紧密的,视频里的小哥使用的是ZOOM视频软件进行团队的协作。

2024-10-15 21:12:28 2587

原创 C++学习路线(十六)

1.使用未初始化指针这里面去描述两种场景说明使用未初始化指针的场景第一种场景未初始化就使用int x, * p;x = 10;p = &x;第二种场景比较常见p = &count;int x, * p;func(p);怎么解决上面的问题 之前的笔记有提到过 使用二级指针int x, * p;func(&p);2.将值当作地址赋值给指针怎么解决1)*p = x;2)p = &x;3.忘记解引直接访问内存else {return 0;

2024-10-15 14:40:33 943

原创 C++学习路线(十五)

如果second < nums[i / n][i % n];比较nums[0][0] 和nums[0][1] 的值 赋值给first 和 second。如果second >= nums[i / (n)][i % (n)] 跳过。如果first < nums[i / n][i % n],如果只拷贝整个数组,效率会大大降低,并且在参数位于栈上,太大的数组拷贝将会导致溢出。指针是一个变量,但是它和普通变量不一样,它存放的是其它变量在内存中的地址。

2024-10-14 21:39:02 973

原创 C++学习路线(十四)

查看数组与指针的关系我们知道数组都是组成的,如果说是int类型的话 ,第一块内存占四个字节 ,第二块占四个字节 ,所以说 我们地址访问的时候 是按照四个四个字节增加(int) , 但是为什么指针p是++就可以了呢,原因是 编译器做了优化 p++ 是 p = p + sizeof(int) * 1 也就是自动帮我们计算了int的字节,然后自增到p上面。可以看到地址都是以4个字节递增的练习一:让用户输入一个字符串,然后反向输出,注意:不能改变原来的字符串。

2024-10-14 17:45:07 861

空空如也

空空如也

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

TA关注的人

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