- 博客(74)
- 收藏
- 关注
原创 MySQL-索引
首先,先遍历要查询的整个表,然后将表中的列带入到sql语句中的判断条件中看是否成立,如果条件成立这行数据会被保留,如果不成立会跳过。这样的查询在表中的数据很多的时候,查询的成本太大了,因为数据库是将数据保存在硬盘上的,每读取一个数据,都需要读取硬盘。
2025-02-20 11:47:17
540
原创 MySQL-事务
回滚操作,就是在事务执行的过程中,记录事务中的关键操作,用来作为事务执行失败时回滚的依据。这些关键操作是保存在文件中的,即使在事务执行失败时主机掉电,也是不影响的(因为在失败之前回滚所需要的文件就已经生成了),当主机恢复会优先执行回滚操作,保持数据库中数据的正确性。因为数据库是一个客户端服务器结构的软件,所以在同一时间就有可能接收到多个事务处理,如果此时在保持串行,那么数据库的效率会大打折扣,所以此时引入多台主机,来并发的执行事务,就可以提高数据库服务器的执行效率。事务的操作是永久的生效的。
2025-02-18 17:16:58
348
原创 MySQL-数据库查询进阶
mysql提供了一种“自增主键”的机制,主键通常是int/bigint的类型,在插入数据的时候,不必手动指定主键的值,而是由数据库服务器自动从1开始依次递增的分配主键的值(相当于使用了一个变量,来保存当前表的id的最大值,后续分配自增主键都是根据这个最大值来分配的,如果手动指定id,也会更新这个最大值)。UNIQUE 表中的某一列中的值是唯一的,不可重复的。在进行笛卡儿积的时候,一旦所操作的表的数据量过大,或者表的数目太多,此时笛卡尔积的结果就会非常的庞大,此时就有可能使mysql服务器挂掉。
2025-02-13 16:54:38
648
原创 MySQL的操作
(因为数据库并没有承诺过你这个数据是有序的)二进制形式的文本数据:通常指的是图片,音乐,视频,但是又因为BLOB的存储空间小,所以一般不使用这个数据类型来存储这些数据(一般很少会在数据库中的某一列中存储特别大的数据(几兆或者几百兆),因为这样做会影响数据库的增删改查的效率),实际上一般在存储这样的数据的时候会先将这些数据放到单独的目录中,然后数据库中只保存这些目录的地址。数据库中最关键的操作就是针对数据库中的表的增删改查,表是从属与数据库中的,所以操作表的前提需要限定含有这张表的数据库。
2025-02-08 17:53:39
824
原创 使用MySQL时的问题
此时的错误原因是密码输入错误,但是MySQL的客户端显示太快了,此时可以将MySQL的客户端拖到cmd中运行。一.在登入MySQL客户端的时候闪退。
2025-02-06 17:46:20
106
原创 MySQL基础知识
MySQL是一个“客户端(client) - 服务器(server)”结构的软件(数据库软件)。客户端:主动发起请求的一方。服务器:被动接收请求的一方。客户端与服务器之间通过网络来进行通信。客户端给服务器发起的数据成为请求。(Rquest)服务器给客户端返回的数据称为响应。(Response)服务器往往都是给很多客户响应的,但是也有个别的服务器是给某一个客户单独使用的。(服务器一般都是7*24小时运行的)。数据库的命令,也成为SQL语句,可以理解为一种变成语言。
2025-02-06 17:42:54
210
原创 Wallpaper-将动态壁纸永久设置为静态
可以在设置里找到横排性能选项点击之后里面有个回放,回放中有个应用程序规则点击设置-创建新规则,当explorer.exe(好像是微软的文件浏览?)条件为运行中,回放选择暂停即可。
2024-08-19 22:41:20
5729
原创 C语言-操作符详解
(表达式)/函数名(形参表)++变量名/变量名++--变量名/变量名--sizeof(表达式)整型表达式%整型表达式。数组名[常量表达式]表达式2: 表达式3。
2024-08-01 17:48:10
391
原创 Socket-从XML文件中获取目的ip和端口实现Udp广播
4.创建两个标准线程用于消息的接收和发送。2.bind固定端口用于消息的接收。C++处理xml文件需要使用tinyxml2.h。3.使网络套接字支持广播。流程:1.创建网络套接字。
2024-08-01 17:43:18
321
原创 VS code-解决连接远端云服务器时什么都没有变化
在有一次使用VS code连接远端云服务器的时候,输入用户名和公网ip连接远端云服务器的时候,一直没有任何响应,一直跳转,插件扩展的界面。找到我们的config配置文件,然后在文件中按照下面的格式配置一下自己的云服务器连接就好了。
2024-08-01 17:03:24
225
原创 VS code-解决云服务器重装镜像后vs code无法连接的问题
问题描述:从centos换到ubantu后,xshell能直接连接上(没有更改ssh配置信息),但是vscode连不上(配置文件因为端口号和ip是一样的,也没法改)解决办法: 找到vs code config文件目录下将这个两个文件删除后,在尝试重新连接云服务器。
2024-08-01 10:10:56
494
原创 UE4-构建光照后导入的静态网格体变黑
当我们将我们的静态网格体导入到项目当中的时候,此时我们进行重新构建光照,我们在从新构建完光照后,会发现我们的静态网格体全部变黑了,此时是因为没有设置光照贴图分辨率和坐标索引引起的。将General Settings中的Light Map Resolution 和 Light Map Coordinate Index的值改为和Build Settings中的默认值相同。此时我们在重新构建光照会发现我们的静态网格体恢复正常了。
2024-07-24 22:16:17
939
原创 UE4-光照重建
Preview:预览 表示此时由于光照物体所产生的阴影都是预览级别的并不是真正的效果。或者也可以在世界大纲中选中我们的光源,然后将我们的光源改变为可以移动的。此时我们的阴影就是实时计算得到的。
2024-07-21 14:31:42
440
原创 UE4-字体导入
然后通过导入将自己想要的字体导入到项目中,也可以直接将我们放在桌面的字体直接拖入到我们的内容浏览器中。但是要注意想要发售游戏的话不可以这样导入微软的字体,因为Windows自带基本都有版权,所以最好上网上去找可商用的资源。
2024-07-21 11:46:11
548
原创 UE4-蓝图(可视化编程)学习
此时我们运行游戏,会发现我们的角色可以穿过我们门的模型,说明我们没有给门添加碰撞。在调整大小时,我们会遇到一个问题,就是我们的模型大小无法调节的非常的精细,那么。添加事件 当我们的人物进入到盒子出发器时的事件 和离开后出发的事件。关卡蓝图一般是写一下场景中的互动,会将这些逻辑写在关卡蓝图中。然后选中我们的合体触发器,然后在选择蓝图。此时我们对于门模型的碰撞就添加好了。上面是进入事件,下面是离开事件。将我们互动的逻辑写在关卡蓝图中。在这里可以调整大小的改变强度。a.将门模型改为可移动的。
2024-07-18 23:18:18
6216
原创 UE4-打包游戏,游戏模式,默认关卡
如果没有安装可以通过在 编辑器开始界面,创建C++项目来让编译器来帮我们安装,这样安装我们项目需要用到C++插件编译器都会帮我们安装好。如果打包完画面自动跳转到网页,那么说明此时我们电脑的Visual Studio环境没有配置好。注意windows系统无法打包苹果系统的执行包,只能使用苹果系统打包。在这个界面可以配置游戏的默认地图和游戏的模式,对项目中所有关卡都生效。编辑器打开时默认打开那个地图,和游戏打包后默认打开那个地图。2.设置默认加载的关卡和游戏模式。选择我们打包的项目是开发版还是发行版本。
2024-07-18 22:05:59
534
原创 UE4-光照渲染、自动曝光、雾
是这几个光源中性能开销最大的,一般不用到游戏场景中,因为游戏场景要考虑到优化的问题。提前构建好物体的阴影,不会随着物体的变化而变化,光照的阴影是实时计算的,会随着物体的变化而变化。固定在构建完第一次后,再去调整灯光的参数,会时候的发生变化。角色由昏暗的环境进入到光亮的环境后,视觉的效果就是自动曝光。体积雾是非常吃性能的一个功能,所以在使用前要考虑好。用来模拟现实中的太阳光。会将场景中远处添加雾蒙蒙的感觉。
2024-07-16 22:27:12
814
原创 UE4-初见虚幻引擎
打开资产是从本项目的所有资源中选择想要编辑的资产打开进行编辑导入到关卡中:将项目外的模型导入到关卡中。导出所有:将场景中所有的模型都导出。
2024-07-15 23:08:23
1932
原创 Linux-进程之间的通信
定义:两个或多个进程之间实现数据层面的交互。进程之间的通信实现的成本是很高的,因为我们都知道在操作系统中,进程之间的是有独立性的。管道是Linux由Unix那里继承过来的进程间的通信机制,它是Unix早期的一个重要通信机制。其思想是,在内存中创建一个共享文件,从而使通信双方利用这个共享文件来传递信息。由于这种方式具有单向传递数据的特点,所以这个作为传递消息的共享文件就叫做“管道”。这种使带有血缘关系的进程之间可以通信的管道称匿名管道。只能用于具有共同祖先的进程(具有亲缘关系的进程)之间进行通信;
2023-12-07 20:23:21
1101
原创 Linux-代码实现通过system v共享内存实现的进程间的通信
shmaddr:将指定的共享内存关联到进程地址空间中的什么位置,如果是NULL是由操作系统决定,此时具体在什么位置通过返回值来确定。d.需要强调的是key是由用户给出相应的信息然后,系统根据算法来返回一个计算到的key。nattch:是同这个共享内存关联的进程数,此时我们并没有为这个新创建的共享内存关联进程,所以是0。创建的共享内存如果我们不手动释放掉的话,即使是使用的进程退出了,系统也不会主动的释放掉它。key:a.key是一个数值,在内核中具有唯一性,可以让不同的进程标识唯一的共享内存。
2023-12-07 20:19:32
947
原创 C语言-详解指针
内存(Memory)是计算机的重要部件,也称内存储器和主存储器,它用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平。只要计算机开始运行,操作系统就会把需要运算的数据从内存调到CPU中进行运算,当运算完成,CPU将结果传送出来。
2023-12-05 20:08:41
1770
原创 VS code-解决在VS code中链接远端服务器时一直输入密码
起初是因为我在做程序测试的时候,在VS code中手动的删除了一个命名管道文件。然后VS code就会一直显示链接远端服务器,然后断开重新链接就会一直重新输入密码。选择你想要删除的远端服务器链接,这里只是我自己的,不同的人不一样。ctrl shift p 进入VS code的命令端口。重新链接远端服务器,就ok了。
2023-12-05 10:59:42
1821
原创 Linux-实现小型日志系统
此时我们传入的可变参数都是相同的类型的,如果传入不同的类型的话,就要像printf一样做获取的字符串处理。a.Linux中获取时间戳的函数。Error:错误,可能需要立即处理。因为年和月都是从0开始计的所以在打印的时候,需要加1900和1。日志等级,日志时间,日志内容,文件的名称和行号。Warning:报警消息。b.Linux中转换时间戳的函数。默认部分 + 自定义部分。
2023-12-04 23:50:43
1206
原创 Linux-实现没有血缘关系的进程之间的通信
一.makefile的编写。二.comm.hpp头文件的编写。四.client.cc文件的编写。三.serve.cc文件的编写。
2023-12-04 21:25:40
563
原创 C++-模板
大家都知道,瓦特改良蒸汽机,人类开始了工业革命,解放了生产力。如果不加的话因为此时还没有实例化,编译器不知道这个地方是什么,所以会报错。如果类型不匹配,编译器会尝试进行隐式类型转换,如果无法转换成功编译器将会报错。编译器根据传入模板函数的实参,来推导类型,此时如果两个形参的类型不同,会报错。1. 重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数。2. 代码的可维护性比较低,一个出错可能所有的重载均出错。,对于字符类型也是如此。,对于模板函数的使用,
2023-12-03 23:15:05
1620
原创 C++-如何避免内存泄漏
内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。1. 工程前期良好的设计规范,养成良好的编码规范,申请的内存空间记着匹配的去释放。指程序使用系统分配的资源,比方套接字、文件描述符、管道等没有使用对应的函数释放掉,导致系统资源的浪费,严重可导致系统效能减少,系统执行不稳定。内存泄漏的危害:长期运行的程序出现内存泄漏,影响很大,如操作系统、后台服务等等,出现内存泄漏会导致响应越来越慢,最终卡死。这套库自带内存泄漏检测的功能选项。
2023-12-03 19:34:10
511
原创 C++-内存管理
int _month;int _day;//此时如果没有默认构造函数会报错free(p1);delete p2;return 0;对于new为自定义类型申请空间,首先回去调用operator new(其实在operator new中封装了malloc),然后在去调用该类构造函数对申请到的空间进行初始化。
2023-12-03 18:18:08
1000
原创 C++-类和对象
/ 类体:由成员函数和成员变量组成// 一定要注意后面的分class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。2.类的成员方法的两种定义方式:a. 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。b. 类声明放在.h文件中,成员函数定义放在.cpp成员函数名前需要加类名。
2023-12-03 17:09:23
1616
原创 C++-内联函数
以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调用建立栈帧的开销,内联函数提升程序运行的效率。2.内联函数的定义如果在上述函数前增加inline关键字将其改成内联函数,在编译期间编译器会用函数体替换函数的调用。查看方式:1. 在release模式下,查看编译器生成的汇编代码中是否存在call Add。2. 在debug模式下,需要对编译器进行设置,否则不会展开因为debug模式下,编译器默认不会对代码进行优化,以下给出vs2013。
2023-12-03 14:15:56
1023
原创 C++-类型转换
此处是因为编译器的优化,但是这样做是有风险的,在C++中因为n是const的所以此时程序不会从内存中取数据,而是先保存到寄存器中然后从寄存器中取数据。,每次使用强制类型转换前,程序员应该仔细考虑是否还有其他不同的方法达到同一目的,如果非强制类型转换不可,则应限制强制转换值的作用域,以减少发生错误的机会。1. C++中的const可以看成是编译期的常量,编译器先不给它分配空间,只是在编译的时候把它的值保存在名字表中,在C语言中,这样是不可以的,但是在C++中是可以的。C++中类型转换的使用。
2023-12-01 20:42:29
979
原创 C++-设计一个特殊类
比如在某个服务器程序中,该服务器的配置 信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再 通过这个单例对象获取这些配置信息,这种方式简化了在复杂环境下的配置管理。2. 提供一个静态的成员函数,在该静态成员函数中完成堆对象的创建。就是说不管你将来用不用,程序启动时就创建一个唯一的实例对象。只需要让该类不能在类外调用该类的拷贝构造函数以及赋值重载函数即可。也可以同第二个中的通过静态方法返回对象,来实现从栈上创建对象。用来解决饿汉模式中带来的缺点。
2023-12-01 19:40:26
459
原创 C++-详解智能指针
RAII)是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的简单技术。在对象构造时获取资源,接着控制对资源的访问使之在对象的生命周期内始终保持有效,最后在对象析构的时候释放资源。借此,我们实际上把管理一份资源的责任托管给了一个对象。这种做法有两大好处:不需要显式地释放资源。采用这种方式,对象所需的资源在其生命期内始终保持有效。
2023-12-01 19:00:07
3126
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人