自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【MySQL】用户管理

如果我们只能使用root用户,这样存在安全隐患。这时,就需要使用MySQL的用户管理。1.用户1.1 用户信息MySQL中的用户,都存储在系统数据库mysql的user表中select host,user,authentication_string from user;字段解释:• host:表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆• user:用户名• authentication_string:用户密码通过password函数加密后的•

2021-04-12 09:24:09 432

原创 【MySQL】视图特性

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。1.基本使用创建视图create view 视图名 as select语句;示例:create view v_ename_dname as select ename, dname from EMP, DEPT where EMP.deptno=DEPT.deptno;select * from v_ename_dname;修改了视图,对基表数据

2021-04-12 08:49:10 375

原创 【MySQL】事务管理

事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。MySQL提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的数据是不相同的。1.事务基本操作示例:银行转账的例子更需要考虑事务的问题。创建测试表create table account( id int primary key, name varchar(50) not null default '', balance decimal(10, 2)

2021-04-11 20:06:12 408

原创 【MySQL】索引特性

索引:提高数据库的性能,索引是物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行正确的create index ,查询速度就可能提高成百上千倍。但是天下没有免费的午餐,查询速度的提高是以插入、更新、删除的速度为代价的,这些写操作,增加了大量的IO。所以它的价值,在于提高一个海量数据的检索速度。常见索引分为:• 主键索引(primary key)• 唯一索引(unique)• 普通索引(index)• 全文索引(fulltext)–解决中子文索引问题1.基本原理索引说明:

2021-04-11 16:58:49 361

原创 【MySQL】内外连接

1.内连接内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。基本语法:select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;示例:显示SMITH的名字和部门名称-- 用标准的内连接写法select ename, dname from EMP inner join DEPT on EMP.deptno=DEPT.deptno andename='SMITH';2

2021-04-10 20:56:48 290

原创 【MySQL】复合查询

前面我们讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远不够。1.多表查询实际开发中往往数据来自不同的表,所以需要多表查询。本节我们用一个简单的公司管理系统,有三张表EMP,DEPT,SALGRADE来演示如何进行多表查询。示例:•显示雇员名、雇员工资以及所在部门的名字因为上面的数据来自EMP和DEPT表,因此要联合查询其实我们只要emp表中的deptno = dept表中的deptno字段的记录select EMP.ename, EMP.sal, DEPT.dname fro

2021-04-09 11:12:02 1424

原创 【MySQL】内置函数

1.日期函数• 获得年月日:select current_date();• 获得时分秒:select current_time();• 获得时间戳:select current_timestamp();• 在日期的基础上加日期:select date_add('2021-2-28', interval 10 day);• 在日期的基础上减去时间:select date_sub('2021-3-1', interval 2 day);• 计算两个日期之间

2021-04-09 09:20:26 290

原创 【MySQL】基本查询

1.Create创建一张学生表CREATE TABLE students ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, sn INT NOT NULL UNIQUE COMMENT '学号', name VARCHAR(20) NOT NULL, qq VARCHAR(20));1.1 单行数据 + 全列插入插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致INSERT INTO students

2021-04-08 21:58:46 468 2

原创 【MySQL】表的约束

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。表的约束很多,这里主要介绍如下几个: null/not null,default, comment,primary key,auto_increment,unique key,foreign key 。1.空属性两个值:null(默认的)和not null(不为空)。数据库默认字段基本都是字段为空,但是实际开发时,尽可能保证字段不为空,

2021-04-08 10:08:55 300

原创 【MySQL】数据类型

1.数据类型分类2.数值类型2.1 tinyint类型数值越界测试:create table tt1(num tinyint);insert into tt1 values(128);---越界插入,报错ERROR 1264 (22003): Out of range value for column 'num' at row 1• 在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的• 可以通过UNSIGNED来说明某个字段是无符号的create table t

2021-04-07 15:09:14 987

原创 【MySQL】表的操作

1. 创建表语法:CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype) character set 字符集 collate 校验规则 engine 存储引擎;• field 表示列名• datatype 表示列的类型• character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准• collate 校验规则,如果没有指定校验规则,则以所在数

2021-04-07 09:31:10 299

原创 【MySQL】库的操作

1.创建数据库案例• 创建名为 db1 的数据库create database db1;说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_general_ ci• 创建一个使用utf8字符集的 db2 数据库create database db2 charset=utf8;• 创建一个使用utf字符集,并带校对规则的 db3 数据库create database db3 charset=utf8 collate utf8_gener

2021-04-07 08:50:00 2107 6

原创 【MySQL】数据库基础

接下来该文章专栏会分享MySQL数据库的一些基本知识~1.什么是数据库我们都知道用文件就可以存储数据,但是为什么还要设计个数据库?有问题就有需求。文件保存数据有以下几个缺点:• 文件的安全性问题• 文件不利于数据查询和管理• 文件不利于存储海量数据• 文件在程序中控制不方便为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据,其存储介质为磁盘、内存。数据库的水平是衡量一个程序员水平的重要指标。2.主流的数据库• SQL Sever:微软的产品,.N

2021-04-06 21:14:24 373

原创 畅聊系统

项目描述采用网络编程技术,结合cs模型,完成一个微型qq群聊功能技术特点C++ STL生产者消费者模型多线程技术,线程的同步与互斥网络编程开源jsoncpp库ncurses库自定义协议,登录注册认证项目原理1.注册登录2.聊天项目思路1.服务端与客户端模块服务端:创建TCP和UDP套接字,针对每一个TCP连接, 都创建一个线程, 专门为该客户端处理注册和登陆请求, 注册和登陆完毕之后, 服务端关闭连接, 销毁线程;发送消息是UDP连接,共两个线程,一个是生产线程, 负责

2021-02-24 17:11:12 937

原创 高级IO知识点(select、poll、epoll)

文章目录1.什么是IO2.五种IO模型2.1 阻塞IO2.2 非阻塞IO2.3 信号驱动IO2.4 多路转接IO2.4.1 select2.4.2 poll2.4.3 epoll2.5 异步IO3.阻塞、非阻塞、同步、异步概念1.什么是IOIO就是input(输入)和output(输出)IO的过程:等待IO就绪,等待资源就绪(资源可用)拷贝数据到缓冲区当中2.五种IO模型2.1 阻塞IO介绍:在资源不可用的情况下,IO请求一直被阻塞,直到资源可用。图解:例子:当钓鱼的时候,将鱼钩甩

2021-02-22 15:33:19 563 2

原创 一文彻底搞懂哈希!

文章目录1. unordered系列关联式容器1.1 unordered_map1.2 unordered_set2. 哈希底层结构2.1 哈希概念1. unordered系列关联式容器在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到log2N,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,进行很少的比较次数就能够将元素找到,因此在C++11中,STL又提供了4个unordered系列的关联式容器,这四个容器与红黑树结构的关联

2021-02-06 21:05:58 1065

原创 红黑树模拟实现STL中的map与set(附详细代码)

文章目录1.红黑树的迭代器2.改造红黑树3.map的模拟实现4.set的模拟实现1.红黑树的迭代器迭代器的好处是可以方便遍历,使数据结构的底层实现与用户透明。如果想要给红黑树增加迭代器,需要考虑以下问题:begin()与end()STL明确规定,begin()与end()代表的是一段前闭后开的区间,而对红黑树进行中序遍历后,可以得到一个有序的序列,因此:begin()可以放在红黑树中最小节点(即最左侧节点)的位置,end()放在最大节点(最右侧节点)的下一个位置,关键是最大节点的下一个位置在哪块?能

2021-01-26 17:38:32 667

原创 图文详解红黑树

文章目录1.红黑树的概念2.红黑树的性质3.红黑树节点的定义4.红黑树的结构5.红黑树的插入操作6.红黑树的验证7.红黑树的删除8.红黑树与AVL树的比较1.红黑树的概念红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。结构如下图所示:2.红黑树的性质每个结点不是红色就是黑色;根节点是黑色的;如果一个节点是红色的,则它的两个孩子

2021-01-25 18:54:28 635

原创 图文详解AVL树

文章目录1.AVL树的概念2.AVL树节点的定义3.AVL树的插入4.AVL树的旋转4.1 右单旋4.2 左单旋4.3 先左单旋再右单旋4.4 先右单旋再左单旋5.AVL树的验证6.AVL树的性能1.AVL树的概念AVL树又称平衡二叉搜索树。二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明了一种解决上述问题的方法:当向二叉搜索树

2021-01-23 21:56:36 2344 4

原创 【C++】map和set

文章目录1.关联式容器2.键值对3. 树形结构的关联式容器3.1 set3.1.1 set的介绍3.1.2 set的使用3.2 map3.2.1 map的介绍3.2.2 map的使用3.3 multiset3.3.1 multiset的介绍3.3.2 multiset的使用3.4 multimap3.4.1 multimap的介绍3.4.2 multimap的使用1.关联式容器我们已经接触过STL中的部分容器,比如:vector、list、deque、forward_list(C++11)等,这些容器统

2021-01-22 17:27:30 908

原创 网络基础(三):数据链路层

文章目录一、数据链路层的概念二、认识以太网2.1 认识MAC地址2.2 以太网帧格式2.3 认识MTU2.3.1 MTU对IP协议的影响2.3.2 MTU对UDP协议的影响2.3.3 MTU对于TCP协议的影响三、ARP协议3.1 ARP协议的作用3.2 ARP协议的工作流程3.3 ARP数据报的格式3.4 ARP缓存表一、数据链路层的概念用于两个设备(同一种数据链路节点)之间进行传递。二、认识以太网2.1 认识MAC地址MAC地址用来识别数据链路层中相连的节点;长度为48位, 及6个字节。一

2021-01-03 15:53:57 734

原创 网络基础(三):IP协议

文章目录一、什么是IP协议?一、什么是IP协议?摘自百度百科:IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议。设计IP的目的是提高网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。...

2020-12-31 16:22:30 1240

原创 二叉搜索树知识点总结

文章目录一、 二叉搜索树概念二、二叉搜索树操作2.1 查找2.2 插入2.3 删除2.4 验证三、 二叉搜索树的应用四、二叉搜索树的性能分析一、 二叉搜索树概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树例如:int a [] = {5,3,4,1,7,8,2,6,0,9};二、二叉搜索树操作2.1 查找N

2020-12-27 21:19:32 1116

原创 网络基础(二):UDP协议

文章目录一、UDP协议端格式二、UDP协议特点三、UDP缓冲区四、UDP使用注意事项五、基于UDP的应用层协议一、UDP协议端格式其中,UDP协议包头占8字节:struct udphdr{ u_init16_t uh_sport;//源端口 u_init16_t uh_dport;//目的端口 u_init16_t uh_ulen;//udp数据报长度 u_init16_t uh_sum;//校验和};端口:传输层是负责端与端之间的传输,因为在传输层协议当中只负责端口,不负责ip,也

2020-12-23 10:43:19 748

转载 网络基础(二):TCP协议

1.1 TCP服务 TCP将用户数据打包构成报文段,它发送数据时启动一个定时器,另一端收到数据进行确认,对失序的数据重新排序,丢弃重复的数据。TCP提供一种面向连接的可靠的字节流服务,面向连接意味着两个使用TCP的应用(B/S)在彼此交换数据之前,必须先建立一个TCP连接,类似于打电话过程,先拨号振铃,等待对方说喂,然后应答。在一个TCP连接中,只有两方彼此通信。 TCP可靠性来自于: (1)应用数据被分成TCP最合适的发送数据块 (2)当TCP发送一个段之后,启动一个定时器,等待目的点确认收到报文

2020-12-23 09:40:54 756

原创 网络基础(二):HTTP协议

文章目录一、HTTP简介二、HTTP特点三、认识URL三、HTTP请求3.1 请求首行3.2 请求头部3.3 空行3.4 请求体(请求正文)四、HTTP响应4.1 响应首行4.2 响应头部4.3 空行4.4 响应体五、HTTP状态码六、HTTP请求方法一、HTTP简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是基于TCP/IP通信协议来传递数据。HTTP协议工作于客户端-服务端架构之上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器

2020-12-18 10:37:12 650

原创 【C++】多态知识点大总结

文章目录一、多态的概念二、多态的定义和实现2.1 多态的构成条件2.2 虚函数2.3 虚函数的重写2.4 C++11 override 和 final2.5 重载、覆盖(重写)、隐藏(重定义)的对比三、抽象类3.1 概念3.2 接口继承和实现继承四、多态的原理4.1 虚表函数4.2 动态绑定与静态绑定五、单继承和多继承关系中的虚表函数5.1 单继承中的虚表函数5.2 多继承中的虚函数表一、多态的概念本篇文章代码及解释都是在vs2013下的x86程序中,涉及的指针都是4bytes。多态的概念:通俗来说

2020-12-15 11:25:44 855

原创 【C++】继承知识点大总结

文章目录一、继承的概念及定义1.1 继承的概念二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、复杂的菱形继承及菱形虚拟继承八、继承的总结和反思一、继承的概念及定义1.1 继承的概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承

2020-12-12 08:48:51 921

原创 【每日一题】井字棋

题目来源牛客网链接:井字棋题目描述给定一个二维数组board,代表棋盘,其中元素为1的代表是当前玩家的棋子,0表示没有棋子,-1代表是对方玩家的棋子。当一方棋子在横竖斜方向上有连成排的及获胜(及井字棋规则),返回当前玩家是否胜出。测试用例:[[1,0,1],[1,-1,-1],[1,-1,0]]返回:true解题思路井字棋有四种情况表示当前玩家获胜,1代表当前玩家棋子行全为1, 即行的和为3列全为1,即列的和为3主对角全为1, 即主对角和为3副对角全为1,即副对角和为3如

2020-12-08 12:37:40 2046 1

原创 网络编程套接字

文章目录一、基本概念1.1 端口(port)1.2 五元组1.3 网络字节序二、socket 编程接口2.1 socket 常见API2.2 sockaddr结构三、UDP编程四、TCP编程4.1 TCP网络程序4.2 TCP网络程序(多进程版本)4.3 TCP网络程序(多线程版本)一、基本概念接上一篇网络基础(一),我们继续了解网络中的一些基本概念。1.1 端口(port)1、端口与传输层息息相关,端口是传输层协议的内容;2、端口是一个2字节16位的整数,范围是0~65535;3、端口用来标识

2020-12-07 21:20:12 794

原创 网络基础(一)

文章目录一、局域网/广域网的概念1.1 网络发展1.2 局域网1.3 广域网二、网络协议初始2.1 什么是协议?2.2 什么是网络协议?2.3 协议分层2.3.1 OSI七层模型2.3.2 TCP/IP五层模型一、局域网/广域网的概念1.1 网络发展独立模式: 计算机之间相互独立;网络互联: 多台计算机连接在一起, 完成数据共享;1.2 局域网局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起。1.3 广域网广域网WAN: 将远隔千里的计算机都连在一起;二、网络协议初

2020-12-07 09:19:34 5093 24

原创 【每日一题】求路径总数

题目来源牛客网链接:求路径总数题目描述请计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。输入描述:每组样例输入两个正整数n和m,用空格隔开。(1≤n,m≤8)输出描述:每组样例输出一行结果输入:2 21 2输出:63解题思路如果n或者m为1,则只有一行或者一列,从左上角走到右下角的路径数为n + m。比如: 1 * 1格子,可以先向下走,再

2020-12-05 20:35:44 1349

原创 【每日一题】另类加法

题目来源牛客网链接:另类加法题目描述给定两个int A和B。编写一个函数返回A+B的值,但不得使用+或其他算数运算符。测试样例:1,2返回:3解题思路本题可以通过位运算实现,具体实现如下:二进制位异或运算相当于对应位相加,不考虑进位 比如: 1 ^ 1 = 0 —> 1 + 1 = 0 (当前位值为0,进一位) 1 ^ 0 = 1 —> 1 + 0 = 1 (当前位值为1) 0 ^ 0 = 0 —> 0 + 0 = 0 (当前位值为0)二进制位与运算相当于对应位

2020-12-05 19:50:21 2716 10

原创 【每日一题】求最小公倍数

题目来源牛客网链接:求最小公倍数题目描述正整数A和正整数B的最小公倍数是指能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。输入描述:输入两个正整数A和B。输出描述:输出A和B的最小公倍数。输入:5 7输出:35解题思路最小公倍数 = 两数之积除以最大公约数,这里使用碾转相除法进行最大公约数的求解:即a与b的最大公约数可以转化为a、b之间的余数为两者之间最小的数之间的公约数。所以对于输入的两个数进行连续求余,直到余数为0,求余的分母即为结果

2020-12-05 19:21:13 835

原创 【每日一题】两种排序方法

题目来源牛客网链接:两种排序方法题目描述考拉有n个字符串字符串,任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法:1.根据字符串的字典序排序。例如:“car” < “carriage” < “cats” < "doggies < “koala”2.根据字符串的长度排序。例如:“car” < “cats” < “koala” < “doggies” < “carriage”考拉想知道自己的这些字符串排列顺序是否满足这两种排序方

2020-12-04 16:43:19 719

原创 【每日一题】合法括号序列判断

题目来源牛客网链接:合法括号序列判断题目描述给定一个字符串A和其长度n,请返回一个bool值代表它是否为一个合法的括号串(只能由括号组成)。测试用例:“(()())”,6返回:true测试用例:“()a()()”,7返回:false测试用例:“()(()()”,7返回:f解题思路1用栈结构实现,栈中存放左括号,当遇到右括号之后,检查栈中是否有左括号,如果有则出栈,如果没有,则说明不匹配。代码展示1class Parenthesis{public:

2020-12-04 16:06:14 1020

原创 【每日一题】Fibonacci(斐波那契)数列

题目来源牛客网链接:斐波那契数列题目描述Fibonacci数列是这样定义的:F[0] = 0F[1] = 1for each i ≥ 2: F[i] = F[i-1] + F[i-2]因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。输

2020-12-04 15:13:36 1362

原创 【每日一题】字符串转换成整数

题目来源牛客网链接:字符串转换成整数题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0输入:+21474836471a33输出:21474836470解题思路...

2020-12-01 12:36:25 643

原创 【每日一题】不要二

题目来源牛客网链接:不要二题目描述二货小易有一个W*H的网格盒子,网格的行编号为0~ H-1,网格的列编号为0~W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根,小易想知道最多可以放多少块蛋糕在网格盒子里。输入描述:每组数组包含网格长宽W,H,用空格分割.(1 ≤ W、H ≤ 1000)输出描述:输出一

2020-12-01 11:11:32 640 2

原创 【每日一题】连续最大和

题目来源牛客网链接:连续最大和题目描述一个数组有N个元素,求连续子数组的最大和。例如:[-1,2,1],和最大的连续子数组为[2,1],其和为3输入描述:输入为两行。 第一行一个整数n(1 <= n <= 100000),表示一共有n个元素 第二行为n个数,即每个元素,每个整数都在32位int范围内。以空格分隔。输出描述:所有连续子数组中和最大的值。输入:3-1 2 1输出:3解题思路本题题意很简单,就是求哪一段的子数组的和最大。假设sum[i-1

2020-11-30 17:33:40 738

空空如也

空空如也

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

TA关注的人

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