自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++多线程--为什么要使用多线程、线程的简单使用

2.用户界面更加吸引人,这样比如用户点击了一个按钮去触发某件事件的处理,可以弹出一个进度条来显示处理的进度。4.在一些等待的任务实现上如用户输入,文件读取和网络收发数据等,线程就比较有用了.1.如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换.4.通常块模型数据是在多个线程间共享的,需要防止线程死锁情况的发生。1.使用线程可以把占据时间长的程序中的任务放到后台去处理。1、任务分解:将耗时的操作进行分解,实现实时响应。3.线程中止需要考虑对程序运行的影响.2.更多的线程需要更多的内存空间。

2023-04-05 16:12:18 846

原创 C++设置格式化状态及恢复

显示格式及恢复

2023-02-05 21:15:29 475

原创 C++简单文件输入/输出

fstream

2023-02-03 15:24:20 2322

原创 cctype中的字符函数

常用的字符函数

2023-02-02 13:38:12 341

原创 C++枚举

枚举enum

2023-01-30 20:30:38 242

原创 C++结构和共用体

匿名共用体

2023-01-30 18:11:56 129

原创 C++字符串的输入

面向行的输入面向单词的输入消除不良输入

2023-01-30 13:59:04 3979

原创 进制转换器

进制转换器

2023-01-29 13:55:18 131

原创 C++实现让程序暂停

【代码】C++实现让程序暂停。

2023-01-25 14:09:34 1294

原创 Qt实现非规则图形的按钮及按钮抖动

首先自定义封装一个类myPushButton,其构造函数如下第一个参数表示按钮的图片第二个参数表示按下按钮的图片myPushButton::myPushButton(QString normalImg,QString pressImg){//两个自己封装的参数,分别表示图片的路径 this->normalImgPath=normalImg; this->pressImgPath=pressImg; QPixmap pix; bool ret = pix

2022-03-29 16:11:03 880

原创 C++避免用科学计数法显示数据以及设置精度方法

在实际开发中,我们的数据可能很大,在现实数据时可能会显示科学计数法,而我们需要用定点小数显示。然而当我们设置格式之后,修改将一直有效,直至下次修改,因此考虑到数据的准确性,显示完之后应该重置格式信息,恢复到原始数据的状态。

2022-03-04 21:30:09 4891

原创 C++ 类型别名

C++为类型创建别名有两种方式。一种是使用预处理器:#define aliasName typeName //aliasName为别名这样,预处理器将在编译程序时用aliasName替换所有typeName。第二种方式时使用关键字typedef来创建别名typedef typeName aliasName;//aliasName 为别名区别:在声明一些变量是,使用预处理器方法可能并不适用如:#define FLOAT_POINTER float *FLOAR_POINTER pa,pb;

2022-02-14 12:59:44 1821 1

原创 C++实现等待一段时间

对于实现让程序等待一段时间,早期的技术是long wait=0;while(wait<10000) wait++;但是,这种方法的问题的是,当计算机处理器的速度发生变化时,,必须修改技术限制,即在不同的计算机上等待的时间可能是不同的。所以更好的方法时让系统时钟来完成这种工作,C++库中有一个函数clock()有助于完成这样的工作,该函数返回程序执行后所用的系统时间。与此同时,使用clock函数也会由两个问题:、clock()返回的时间不一定是秒。、该函数返回的类型在某些系统上可能是

2022-02-14 12:37:44 9254

原创 MySQL管理 系统数据库与常用工具(mysql、备份、导入文件等等)

系统数据库MySQL数据库安装完成后,自带了四个数据库,具体作用如下:数据库含义mysql存储MySQL服务器正常运行所需要的各种信息(时区、主从、用户、权限)information_schema提供了访问数据库元数据的各种表和视图,包含数据库、表、字段类型及访问权限等performance_schema为MySQL服务器运行时提供了一个底层监控功能,主要用于收集数据库服务器性能参数sys包含了一系列方便DBA和开发人员利用performance_schem

2022-02-12 12:46:24 1133

原创 MySQL InnoDB引擎(逻辑存储结构、架构、事务原理、MVCC)原理

一、逻辑存储结构表空间(ibd文件),一个mysql实例可以对应多个表空间,用于存储记录、索引等数据。段,分为数据段(Leaf node segment)、索引段(Non-leaf node segment)、回滚段(Rollback segment),InnoDB是索引组织表,数据段就是B+树的叶子节点, 索引段即为B+树的非叶子节点。段用来管理多个Extent(区)。区,表空间的单元结构,每个区的大小为1M。 默认情况下, InnoDB存储引擎页大小为16K, 即一个区中一共有64个连续的页

2022-02-11 17:46:37 1574

原创 MySQL 行级锁(行锁、临键锁、间隙锁)

三、行级锁行级锁,每次操作锁住对应的行数据。锁定粒度最小,发生锁冲突的概率最低,并发度最高。应用在InnoDB存储引擎中。InnoDB的数据是基于索引组织的,行锁是通过对索引上的索引项加锁来实现的,而不是对记录加的锁。对于行级锁,主要分为以下三类:1. 行锁(Record Lock):锁定单个行记录的锁,防止其他事务对此行进行update和delete。在RC、RR隔离级别下都支持。2. 间隙锁(Gap Lock):锁定索引记录间隙(不含该记录),确保索引记录间隙不变,防止其他事务在这个间隙进行i

2022-02-11 11:03:42 11848 6

原创 MySQL 锁、全局锁、表级锁(表锁 元数据锁MDL 意向锁)

锁**锁是计算机协调多个进程或线程并发访问某一资源的机制。**在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供多用户共享的资源。如何保持数据并发的一致性,有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。分类:分类介绍全局锁锁定数据库中的所用表表级锁每次操作锁住整张表行级锁每次操作锁住对应的行数据一、全局锁全局锁就是对整个数据库实例加

2022-02-10 16:10:44 2810

原创 MySQL 触发器

触发器触发器是与表有关的数据库对象,指在 insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性 , 日志记录 , 数据校验等操作 。使用别名 OLD 和 NEW 来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只支持行级触发,不支持语句级触发。行级触发:假设执行五条update语句,触发器触发了五次。语句级触发:假设执行五条update语句,不管影响了多少条数据,但触发器只触发一次

2022-02-09 14:12:39 1109

原创 MySQL 条件处理程序(Handler)

条件处理程序条件处理程序可以用来定义在流程控制结构中遇到问题时对应的处理步骤,语法为:DECLARE handler_action HANDLER FOR condition_value[,condition_value]... statement;#handler action continue:继续执行当前程序 exit:终止执行当前程序 #condition_value SQLSTATE sqlstate_value:状态码,如02000 SQLWARNING :所有

2022-02-07 14:05:42 1072

原创 MySQL 游标(CURSOR)

游标(cursor)游标是用来存储查询结果集的数据类型,在存储过程和函数中可以使用游标对结果集进行循环的处理。游标的使用包括游标的声明、OPEN、FETCH和CLOSE,其语法如下:#声明游标declare 游标名称 cursor for 查询语句;#打开游标open 游标名称;#获取游标记录fetch 游标名称 into 变量[,变量];#关闭游标close 游标名称;案例:根据传入的参数usalary,来查询employees表中所有员工工资小于等于usalary的员工名和所

2022-02-07 13:55:44 3152

原创 MySQL 视图——检查选项(cascaded、local)

视图的检查选项:当使用WITH CHECK OPTION子句创建视图时,MySQL会通过视图检查正在更改的每个行,例如 插入,更新,删除,以使其符合视图的定义。 MySQL允许基于另一个视图创建视图,它还会检查依赖视图中的规则以保持一致性。为了确定检查的范围,mysql提供了两个选项:CASCADED 和 LOCAL ,默认值为 CASCADED 。一、cascaded#case1#创建一个基于students表的视图create or replace view v1 as select id,na

2022-02-07 10:55:29 3512 5

原创 SQL优化

一、insert优化1、建议使用批量插入:因为每一条插入语句都会和数据库建立连接,所以当要插入多条数据时,建议使用批量插入但最好不超过一千条。2、手动事务提交3、主键顺序插入4、大批量插入数据:如果一次性需要插入大批量数据,使用insert语句插入性能较低,此时可以使用MySQL数据库提供的load指令。操作如下:#客户端连接服务端时,加上参数 --local-infilemysql --local-infile -u root -p#设置全局参数local_infile为1,开启本地加载文

2022-02-06 14:59:15 499

原创 MySQL索引、性能分析、使用法则

一、什么是索引索引是帮助MySQ高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护者满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。优点:1、提高数据检索的效率,降低数据库的IO成本。2、通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗。缺点:1、索引列也是要占用空间的。2、索引大大提高了查询效率,同时却也降低了更新表的速度,如对表进行INSERT、UPDATE、DELETE时,效率降

2022-01-29 14:53:22 1652 1

原创 Linux虚拟机连接数据库

1、下载Linux版MySQL安装包2、上传MySQL安装包使用finalshell上传3、创建目录并解压安装解压注意是大写C4、安装musql安装包依次安装,有顺序6、启动MySQL服务systemctl start mysqldsystemctl restart mysqldsystemctl stop mysql7、查询自动生成的root用户密码grep ‘temporary password’ /var/log/mysql.log使用 mysql -u

2022-01-26 17:26:22 2060

原创 MySQL 存储引擎(InnoDB、MyISAM、MEMORY)

一、MySQL的体系结构1、连接层:最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。2、服务层:第二成架构主要完成大多数的核心服务功能,如sql接口、并完成缓存的查询,sql的分析和优化,部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如函数、过程等。3、引擎层:存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需

2022-01-24 13:10:49 2900

原创 MySQL获取随机数,获取随机字符串

1、获取随机数FLOOR(RAND()*a+b) #b到a+b的随机数2、获取随机字符串案例:向表中插入指定个数的随机字符串CREATE PROCEDURE myp1(IN insertCount INT)BEGIN DECLARE i INT DEFAULT 1; DECLARE str VARCHAR(26) DEFAULT 'abcdefghijklmnopqrstuvwsyz'; DECLARE startIndex INT DEFAULT 1;#起始索引 DECLARE le

2022-01-22 17:32:20 1400

原创 MySQL 流程控制结构 循环结构

循环结构1、while 类似while【标签:】while 循环条件 do 循环体;end while 【标签】;2、loop【标签:】loop 循环体;end loop 【标签】;3、repeat 类似于do while【标签:】repeat 循环体;until 结束循环条件end repeat 【标签】;循环控制:iterate 类似于continue 结束本次循环,继续下次循环leave 类似于break 结束当前循环案例:批量插入添加leave语句

2022-01-22 15:53:44 382

原创 MySQL 流程控制结构 case结构and if结构

一、顺序结构二、分支结构1、if函数2、case结构①case结构作为表达式语法情况一case 表达式 when 值1 then 值1 …else值n end;情况二case when 条件一 then 值1 … else值n end;②case作为i独立语句 只能放在begin end中语法情况一case 表达式 when 值1 then 语句1; …else 语句n; end case;情况二case whe

2022-01-22 15:07:29 524

原创 MySQL 函数

#函数 类似于存储过程/*存储过程:可以有一个返回,也可以有多个返回。函数:有且仅有一个返回*/#一、创建语法/*create function 函数名(参数列表) returns 返回类型begin 函数体end1、参数列表:参数名 参数类型2、函数体:肯定包含return语句,如果没有会报错,但不建议 return 值;3、函数体中仅有一句话,则可以省略begin end4、使用delimiter语句设置结束标记*/#二、调用函数#select 函数名(参

2022-01-22 11:28:34 326

原创 MySQL 存储过程

#存储过程和函数:类似于方法/*存储过程:一组预先编译好的sql语句的集合好处:1、提高了代码的重用性 2、简化操作 3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率*/#一、创建语法/*create procedure 存储过程名(参数列表)begin 存储过程体(一组合法的sql语句)end注:1、参数列表包含 : 参数模式 参数名 参数类型如: in stuname varchar(20)参数模式in:该参数可以作为输入,也

2022-01-21 17:08:15 124

原创 MySQL 变量

#变量/*系统变量:变量由系统提供,不是用户定义,属于服务器层面 全局变量:作用域 服务器每次启动将为所有全局变量赋初始值,针对于所有的会话。 会话变量:作用域 仅仅针对当前会话(连接)有效 1、查看所有的系统变量 show global/session variables;2、查看满足条件的部门系统变量 show global/session variables like '';3、查看指定的某个系统变量的值 select @@global\session .系统变量名4、为某个系

2022-01-20 15:22:17 239

原创 MySQL 视图的更新 视图和表的区别

视图的更新#五、视图的更新CREATE OR REPLACE VIEW myv1ASSELECT last_name,email,salary*12*(1+IFNULL(commission_pct,0)) "annual salary"FROM employees;SELECT *FROM myv1;#1、插入INSERT INTO myv1 VALUES("张飞",'zf@qq.com',100000);#插入失败CREATE OR REPLACE VIEW myv2ASSE

2022-01-20 14:27:11 438 1

原创 MySQL视图创建、修改、删除、查看

#视图:虚拟表 通过表动态生成的数据 只保存sql逻辑 不保存查询结构#案例:查询姓张的学生名和专业名SELECT stuname,majornameFROM stuinfo sINNER JOIN major m ON s.majorid=m.idWHERE s.stuname LIKE '张%';/*应用场景多个地方用到同样的查询结果该查询结果使用的sql语句较复杂*/CREATE VIEW v1AS SELECT stuname,majornameFROM stuinf

2022-01-16 16:30:26 524

原创 MySQL 事务控制语言(ACID、隔离级别)

一、什么是事务事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的。而整个单独单元作为一个不可分割的整体,如果单元中某条SQL语句一旦执行失败或产生错误,整个单元将会回滚。所有受到影响的数据将返回到事物开始以前的状态;如果单元中的所有SQL语句均执行成功,则事物被顺利执行。在mysql中用的最多的存储引擎有:innodb,myisam ,memory 等。其中innodb支持事务,而myisam、memory等不支持事务二、事物的属性(ACID)1. 原子性(Ato

2022-01-14 16:34:48 411

原创 MySQL 标识列

#标识列(自增长列)可以不用手动的插入值,系统提供默认的序列值 AUTO_INCREMENT#一、常见表示设置标识列CREATE DATABASE IF NOT EXISTS test;CREATE TABLE tab_identity( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20));INSERT INTO tab_identity VALUES(NULL,'john');INSERT INTO tab_identity V

2022-01-14 14:22:59 165

原创 MySQL常见约束(主键,外键,默认,非空,检查,唯一)

#常见约束/*六大约束NOT NULL :非空DEFAULT :默认 保证该字段有默认值PRIMARY KEY :主键 保证该字段有唯一性且非空UNIQUE : 保证唯一但可以为空CHECK :检查约束(MySQL中不支持)限制该字段的值在一个范围FOREIGN KEY :外键 从表中添加外键约束,引用主表中某列的值语法:列名 类型 ,【constraint 约束名】 foreign key(majorId) references major(id);添加约束的时机1、创建表时

2022-01-11 18:47:16 820

原创 MySQL常用 数据类型

#常见的数据类型/*数值型:整型、小数(定点数、浮点数)字符型:较短的文本(char、varchar)、较长的文本(text、blob较长的二进制数据)日期型*/#选择原则:所选择的类型越简单越好,能保存数值的类型越小越好#数值型#一、整型/*Tinyint 1BSmallint 2BMediumint 3Bint/integer4Bbigint 8B */#1、默认是有符号数, 添加关键字unsigned为无符号数,若超出范围,会报错out of r

2022-01-11 15:24:04 214

原创 MySQL DDL语言库和表的管理

#DDL语言:数据定义语言 /*1、库的管理2、表的管理创建:create修改:alter删除:drop*/#一、库的管理#1、库的创建/*create database (IF NOT EXISTS) 库名;如果已经有该库则不创建,若不存在则创建,提高容错性*/CREATE DATABASE IF NOT EXISTS books;#2、库的修改(一般不修改)#更改字符集 ALTER DATABASE books CHARACTER SET utf8;#3、库的

2022-01-10 16:59:39 279

原创 MySQL DML语句 修改语句和删除语句

#修改语句/*1、修改单表的记录(重点掌握)语法:update 表名 1set 列=新值,... 3where 筛选条件; 22、修改多表的记录(级联更新)92语法:update 表1 别名,表2 别名set 列=值..where 连接条件 and 筛选条件99语法:update 表1 别名inner/left/right join 表2 别名on 连接条件set 列=值...where 筛选条件*/#案例:修改beauty中姓李的电话为123545641

2022-01-09 16:18:55 243

原创 MySQL DML语言 查询语句

#DML语言:数据操作语言/*插入:insert修改:update删除:delete*/#一、插入语句/*方式一语法:insert into 表名(列名...) values(值...);方式二:insert into 表名set 列名=值,列名=值...*/#1、插入的值的类型要与列的类型一致或者兼容INSERT INTO beauty(id,`name`,`sex`,`borndate`,`phone`,`photo`,`boyfriend_id`)VALUES(1

2022-01-09 14:09:16 196

空空如也

空空如也

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

TA关注的人

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