自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(150)
  • 资源 (1)
  • 收藏
  • 关注

原创 排序算法——一篇文章搞懂常用的排序算法

1.排序的概念及应用1.1排序的概念排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。内部排序...

2020-02-17 21:59:50 3267 28

原创 一文搞懂堆和栈的区别

编程经常需要操作的内存栈区(stzck):由编译器自动分配和释放,存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈。堆区(heap):一般由程序员分配和释放,若程序员不释放,程序结束时可能由操作系统回收。它与数据机构中的堆是两回事,分配方式类似于链表。全局区(静态区)(static):全局变量和静态变量的存储是放在一起的,初始化的全局变量和静态变量在一块区域,未初始化的全...

2020-02-13 16:22:27 2352 1

原创 MySQL—电子杂志订阅表的实现

实践需求(1)在mydb数据库中创建一张电子杂志表格(subscribe)(2)电子杂志订阅表中要包含四个字段,分别为编号(id)、订阅邮件的邮箱地址(email)、用户是否确认订阅(status,使用数字表示,1表示已确认,0表示未确认)、邮箱确认的验证码(code)。(3)为电子杂志订阅表添加五条订阅测试数据编码邮箱地址是否确认的状态邮箱确认码1tom123...

2019-11-30 19:28:03 6451 3

原创 了解 ceil 和 floor 函数:C++ 中的取整函数

在许多实际应用中,我们需要对浮点数进行取整操作。C++ 中提供了两个非常有用的函数,即 ceil 和 floor,用于进行向上取整和向下取整。这两个函数是 C++ 标准库 头文件中的函数,下面我们分别来了解一下它们的具体用法和示例。

2023-06-12 22:43:55 1906

原创 tolower、toupper、count_if函数总结说明

C 库函数 int tolower(int c) 把给定的字母转换为小写字母。

2023-06-12 21:59:08 1209

原创 SQL锁总结

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

2023-06-11 22:16:16 1623

原创 SQL视图、存储过程、触发器

存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。存储过程思想上很简单,就是数据库SQL语言层面的代码封装与重用。用户定义变量是用户根据需要自己定义的变量,用户变量不用提前声明,在用的时候直接用“@变量名”使用就可以。其作用域为当前连接。#赋值SELECT 字段名 INTO @var_name FROM 表名,#使用。

2023-06-11 22:07:17 1846 1

原创 SQL优化

①.Using filesort:通过表的索引或全表扫描,读取满足条件的数据行,然后在排序缓冲区sort buffer中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫FileSort排序。一个常见又非常头疼的问题就是liit2000000,10,此时需要MySQL排序前2000010记录,仅仅返回2000000-2000010的记录,其他记录丢弃,查询排序的代价非常大。InnoDB的行锁是针对索引加的锁,不是针对记录加的锁,并且该索引不能失效,否则会从行锁升级为表锁。优化思路:自己计数。

2023-06-11 21:56:40 997

原创 SQL索引

索引是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。

2023-06-11 21:47:40 593

原创 Mysql存储引擎总结

存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在MySQL5.5之后,InnoDB是默认的MySQL存储引擎。MyISAM是MySQL早期的默认存储引擎。Memoryi引擎的表数据时存储在内存中的,由于受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。

2023-06-11 19:39:19 1071

原创 Mysql事务总结

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。

2023-06-11 19:35:27 1244

原创 SQL多表查询常用语句总结

概述:指从多张表中查询数据笛卡尔积:笛卡尔积是指在数学中,两个集合A集合和B集合的所有组合情况。(在多表查询时,需要消除无效的笛卡尔积)

2023-06-11 19:29:59 3728

原创 SQL约束

1.概念:约束作用于表中字段上的规则,用于限制存储在表中的数据2.目的:保证数据库中数据的正确、有效性和完整性3.分类。

2023-06-11 19:25:18 1402

原创 Mysql常用函数汇总

函数是指一段可以直接被另一段程序调用的代码或程序。

2023-06-11 18:52:25 1107

原创 Mysql通用语法及分析

DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增删改操作。DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。DCL英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访问权限。

2023-06-11 18:37:38 1120

原创 设计模式之原型模式(Prototype 模式)

概念原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。介绍...

2021-03-26 09:38:09 747 1

原创 设计模式之建造者模式(Builder 模式)

概念建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。介绍意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的

2021-03-22 16:53:26 530

原创 设计模式之单例模式(Singleton)

概念单例模式(Singleton Pattern)属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。介绍意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。主要解决:一个全局使用的类频繁地创建与销毁。何时使用:当

2021-03-22 16:01:34 465

原创 设计模式之抽象工厂模式(AbstactFactory )

概念抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。介绍意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。主要解决:主要解决接口选择的问题。何时使用:系统的产品有多于一个的产品族,而系统只消费其中某一族的产品。如

2021-03-22 15:07:50 423

原创 设计模式之Factory 模式

1.模式功能定义创建对象的接口,封装了对象的创建使得具体化类的工作延迟到了子类中2.为什么使用Factory 模式1.为了提高内聚和松耦合,我们经常会抽象出一些类的公共接口以形成抽象基类或者接口。这样我们可以通过声明一个指向基类的指针来指向实际的子类实现,达到了多态的目的。图1 factory模式结构示意图2.Factory 模式不单是提供了创建对象的接口,其最重要的是延迟了子类的实例化图2 factory模式结构示意图图 2 中关键中 Factory 模式的应用并不是只是为了封装对

2021-03-21 23:54:04 2150 70

原创 Python笔记之基本数据类型

Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。等号(=)用来给变量赋值。等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。Python3 的六个标准数据类型中:不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);可变数据(3 个):List(列表)、Dictionary(字典)、Python.

2020-11-22 21:05:56 693 2

原创 Python笔记之基础语法

编码默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 当然你也可以为源码文件指定不同的编码:# _*_ coding:cp-1252 _*_标识符第一个字符必须是字母表中字母或下划线 _ 。标识符的其他的部分由字母、数字和下划线组成。标识符对大小写敏感。在 Python 3 中,可以用中文作为变量名,非 ASCII 标识符也是允许的。python保留字保留字即关键字,我们不能把它们用作任何标识符名称。Python 的标准库提供了一个

2020-11-20 19:59:12 702

原创 使用Dockerfile创建镜像

基本结构首行可以通过注释来指定解析器命令, 后续通过注释说明镜像的相关信息。主体部分首先使用FROM指令指明所基于的镜像名称, 接下来一般是使用LABEL指令说明维护者信息。后面则是镜像操作指令,例如RU指令将对镜像执行跟随的命令。 每运行一条RUN指令,镜像添加新的一层,并提交。最后是CMD指令,来指定运行容器时的操作命令。指令说明配置指令1. ARG定义创建镜像过程中使用的变量。格式为 ARG <name> [=<default value>]。在执行 d

2020-11-19 10:55:46 977 1

原创 端口映射与容器互联

端口映射实现容器访问1. 从外部访问容器应用在启动容器的时候, 如果不指定对应参数, 在容器外部是无法通过网络来访问容器内的网络应用和服务的。当容器中运行一些网络应用, 要让外部访问这些应用时, 可以通过-P或-p参数来指定端口映射。 当使用平(大写的)标记时, Docker 会随机映射一个 49000—49900 的端口到内部容器开放的网络端口:$ docker run -d -P training/webapp python app.py$ docker ps -1此时, 可以使用 do

2020-11-10 01:19:52 1348

原创 Docker数据管理

容器中的管理数据主要有两种方式 :数据卷(Data Volumes): 容器内数据直接映射到本地主机环境;数据卷容器(Data Volume Containers): 使用特定容器维护数据卷。数据卷数据卷 ( Data Volumes ) 是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似于 Linux 中的 mount 行为 。数据卷可以提供很多有用的特性 :1.数据卷可以在容器之间共事和重用,容器间传递数据将变得高效与方便;2.对数据卷内数据的修改会立马生效,无论

2020-11-09 23:59:26 672

原创 Docker之访问 Docker 仓库

仓库( Repository)是集中存放镜像的地方,又分公共仓库和私有仓库 。有时候容易把仓库与注册服务器( Registory)混淆 。 实际上注册服务器是存放仓库的具体服务器, 一个注册服务器上可以有多个仓库,而每个仓库下面可以有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。Docker Hub 公共镜像市场Docker Hub 是 Docker 官方提供的最大的公共镜像仓库,目前包括了超过 100 000 的镜像,地址为 https://hub.docker.com 。1.

2020-11-03 16:50:27 1003

原创 Docker之容器操作

1.创建容器1. 新建容器可以使用 docker [container] create 命令新建一个容器。docker create -it ubuntu:latestaf8f4f922dafee22c8fe6cd2aelld16e2507d61flblfa55b36e94db7ef45178$ docker ps - aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESaf8f4f922daf ubuntu:latest "/bin/b

2020-11-02 02:48:45 4787 7

原创 Docker之Docker镜像操作

1.获取镜像通过使用 docker [image] pull 命令直接从 Docker Hub 镜像源来下载镜像。 该命令的格式为docker [image] pull NAME [:TAG] NAME 是镜像仓库名称(用来区分镜像)TAG 是镜像的标签(往往用来表示版本信息)。通常情况下, 描述一个镜像需要包括 “名称+标签“ 信息。对于Docker镜像来说, 如果不显式指定TAG, 则默认会选择latest标签,这会下载仓库中最新版本的镜像。一般来说, 镜像的latest 标签意味

2020-10-29 00:50:28 2271 3

原创 Docker之核心概念与配置

核心概念1. Docker 镜像Docker 镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。镜像是创建 Docker 容器的基础 。通过版本管理和增量的文件系统,Docker 提供了一套十分简单的机制来创建和更新现有的镜像,用户甚至可以从网上下载一个已经做好的应用镜像,并直接使用。2. Docker 容器Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例。它可以启动、开始、停止 、 删除,而这些容器都是彼此相互隔离、互不可见的。

2020-10-27 16:10:14 878

原创 一文了解Docker与容器

1.什么是Docker?简单地讲,可以将Docker容器理解为一种轻量级的沙盒( sandbox )。每个容器内运行着一个应用,不同的容器相互隔离,容器之间也可以通过网络互相通信。容器的创建和停止十分快速,几乎跟创建和终止原生应用一致;另外,容器自身对系统资源的额外需求也十分有限,远远低于传统虚拟机。 很多时候,甚至直接把容器当作应用本身也没有任何问题。2.为什么使用Docker?1. Docker 窑器虚拟化的好处常见的 LAMP (Linux+Apache+MySQL+PHP )组合来构

2020-10-26 13:40:04 2658 4

原创 Mysql数据库优化

1.存储引擎什么是存储引擎存储引擎:可以看作是数据表存储数据的一种格式,不同的格式具有的特性也各不相同。举例说明:只有InnoDB存储引擎支持事务、外键、行级锁等特性,而MyISAM则支持压缩机制等特性。存储引擎的特点:本身是MySQL数据库服务器的底层组件之一,最大的特点是采用“可插拔”的存储引擎架构。“可插拔”的理解:指的是对正在运行的MySQL服务器依然可根据实际需求使用特定语句加载(插入,INSTALL PLUGIN语句)或卸载(拔出,UNINSTALL PLUGIN语句)所需的存储引擎文

2020-10-05 22:07:55 10341 44

原创 事务

1.事务处理1.事务的概念事务是针对数据库的一组操作, 它可以由-一条或多条SQL语句组成。2.事务的基本操作在默认情况下,用户执行的每一条SQL语句都会被当成单独的事务自动提交。如果要将一组SQL 语句作为-一个事务, 则需要先执行以下语句显式地开启一个事务。START TRANSACTION;此时,每一条SQL语句不再自动提交,用户需要手动提交操作才会生效。COMMIT;如果不想提交当前事务,可以取消事务(即回滚)。ROLLBACK;事务的执行要么成功,要么就返回到事务开始前

2020-09-24 06:53:55 2218 30

原创 Mysql视图

1.初识视图1.视图的概念和作用什么是视图:是从一个或多个表中导出来的表,它是一种虚拟存在的表,表的结构和数据都依赖于基本表。作用:简化查询语句:简化用户的查询操作,使查询更加快捷。安全性:更方便的进行权限控制。逻辑数据独立性:屏蔽真实表结构变化带来的影响。2.创建视图语法CREATE[OR REPLACE][ALGORITHM = {UNDEFINED |MERGE│TEMPTABLE][DEFINER= { user | CURRENT_USER][SQL SECURITY { DE

2020-09-24 05:57:56 5109 2

原创 Mysql用户与权限操作

用户与权限概述用户是数据库的使用者和管理者。MySQL通过用户的设置来控制数据库操作人员的访问与操作范围。服务器中名为mysqI的数据库,用于维护数据库的用户以及权限的控制和管理。MySQL中的所有用户信息都保存在mysql.user数据表中。根据mysql.user表字段的功能可将其分为6类客户端访问服务器的账号字段Host和User字段共同组成的复合主键用于区分MySQL中的账户。User字段用于代表用户的名称。Host字段表示允许访问的客户端IP地址或主机地址。当Host的值

2020-09-23 17:38:22 6145 4

原创 HTTP协议版本及特征

1、HTTP 0.9HTTP 0.9是第一个版本的HTTP协议,已过时。它的组成极其简单,只允许客户端发送GET这一种请求,且不支持请求头。由于没有协议头,造成了HTTP 0.9协议只支持一种内容,即纯文本。不过网页仍然支持用HTML语言格式化,同时无法插入图片。HTTP 0.9具有典型的无状态性,每个事务独立进行处理,事务结束时就释放这个连接。由此可见,HTTP协议的无状态特点在其第一个版本0.9中已经成型。一次HTTP 0.9的传输首先要建立一个由客户端到Web服务器的TCP连接,由客户端发起一个请

2020-08-25 17:15:06 2553 8

原创 drop、truncate和delete的区别

一、deletedelete是DML(data maintain Language,这个操作会被放到 rollback segment中,事务提交后才生效),执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表空间要足够大,需要手动提交(commit)操作才能生效,可以通过rollback撤消操作。delete可根据条件删除表中满足条件的数据,如果不指定where子句,那么删除表中所有记录。del

2020-08-17 20:38:20 1943

原创 重载、重写、重定义——三种同名函数的不同处理方式

重载、重写、重定义的区别:重载在一个类中的重名函数,由于函数参数个数/类型的不同(形参列表不同),导致使用不同的函数进行处理,这种情况称为重载。class A{ public: void show(){ cout << "show()" << endl; } void show(int x){ cout << "show(int x):"<< x << endl; }};int main(){ A a;

2020-08-15 23:07:47 2061 32

原创 MySQL-多表操作

多表查询联合查询联合查询是多表查询的一种方式,在保证多个SELETE语句的查询字段数相同的情况下,合并多个查询的结果SELECT···UNION [ALL|DISTINCT] SELECT···[UNION [ALL|DISTINCT]SELECT···];在上述语法中,UNION是实现联合查询的关键字,ALL和DISTINCT是联合查询的选项,其中ALL表示保留所有的查询结果;DI...

2020-08-04 22:30:52 2494

原创 Redis相关知识点汇总

MongoDB和Redis有什么区别?内存管理机制上:Redis 数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的 LRU 算法删除数据。MongoDB 数据存在内存,由 linux系统 mmap 实现,当内存不够时,只将热点数据放入内存,其他数据存在磁盘。支持的数据结构上:Redis 支持的数据结构丰富,包括hash、set、list等。MongoDB 数据结构比较单一,但是支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富。mysql引擎以及其区别在

2020-08-03 17:49:34 1981

原创 Linux虚拟内存和缺页中断

Linux虚拟内存地址空间为了防止不同进程同一时刻在物理内存中运行而对物理内存的争夺和践踏,采用了虚拟内存。虚拟内存技术使得不同进程在运行过程中,它所看到的是自己独自占有了当前系统的4G内存。所有进程共享同一物理内存,每个进程只把自己目前需要的虚拟内存空间映射并存储到物理内存上。 事实上,在每个进程创建加载时,内核只是为进程“创建”了虚拟内存的布局,具体就是初始化进程控制表中内存相关的链表,实际上并不立即就把虚拟内存对应位置的程序数据和代码(比如.text .data段)拷贝到物理内存中,只是建立好虚拟

2020-08-02 21:46:06 2422

C语言基础.xmind

本文档是C语言基础的思维导图,主要是关于学习C语言的基础路径,对C语言初级涉及到的知识点做的总结。包括数组、内存、指针、C语言I/O流等知识点。

2020-04-16

空空如也

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

TA关注的人

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