自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2021-03-18

数据库答案1.索引是什么?作用?优点?缺点?分类?2.索引不适合的场景(3-4点)3.索引失效的场景(2-4)4.b-树特点?如何查找?插入删除会如何?5.b+树特点?6.索引为什么要使用b树?(关键在于磁盘io消耗)既然磁盘io的时间远大于在内存中查找的时间,为什么不直接把所有数据一次读入内存7.myisam索引实现(非聚簇索引)?8.innodb索引实现?(聚簇索引)9.InnoDB的主键选择与插入优化使用什么作为主键使用uuid(非自增主键)会如何自增主键和uuid的优

2021-03-18 22:44:52 134

原创 lua脚本操作数据库实现

安装redis集群安装jwt解析依赖库安装openrestrylua脚本很多的话不便于管理1.编写lua脚本在/usr/local/openresty/lua 中编写lua脚本,实现对数据库的操作--指定输出的文件类型为json类型ngx.header.content_type="application/json;charset=utf-8"--引入依赖库local cjson = require "cjson"local mysql = require "resty.mysql"

2021-03-08 12:55:59 1026

原创 mysql8.0+ 远程连接无法访问 linux 2003 can‘t connect to mysql server on ‘192.168.1.117’(10061“unknown

ubuntu中mysql8.0+版本远程连接的问题在自己的笔记本上安装了windows好linux双系统,安装了mysql8.0版本后发现无法进行远程连接。解决后进行了以下总结:1.bind-address没有注释MySQL的配置文件/etc/mysql/mysql.conf.d/mysqld.cnf中需要把bind-address之一行注释## Instead of skip-networking the default is now to listen only on# localhost

2021-01-19 14:55:46 799 1

原创 侯捷 (7、8 pointer-likeclasses&function-likeclasses)

shared_ptr实现一个简单的shared_ptr#pragma oncetemplate <class T>class My_shared_ptr{public: My_shared_ptr(T* ptr):px(ptr) {} ~My_shared_ptr() {} T& operator*() const { return *px; } T* operator->() const

2021-01-16 17:06:31 108

原创 侯捷 (5.6 conversion_function&non-explicit-o-a)

conversion_functionFraction.hpp直接把类对象隐式转化为指定类型#pragma onceclass Fraction{public: Fraction(double a,double b = 1):m_numerator(a),m_denominator(b) {} ~Fraction() {} operator double() const//转换函数 { return (double)(m_nume

2021-01-13 23:29:33 74

原创 侯捷(设计模式总结)

1 Singleton单例 Singleton 是设计模式的一种,其特点是只提供唯一一个类的实例,具有全局变量的特点,在任何位置都可以通过接口获取到那个唯一实例;具体运用场景如:设备管理器,系统中可能有多个设备,但是只有一个设备管理器,用于管理设备驱动;数据池,用来缓存数据的数据结构,需要在一处写,多处读取或者多处写,多处读取;基础要点全局只有一个实例:static 特性,同时禁止用户自己声明并定义实例(把构造函数设为 private)线程安全禁止赋值和拷贝用户通过接口获取实

2021-01-12 23:28:08 1459 1

原创 Gdb调试

GDB调试C/C++程序过程gdb调试教程例程#include <stdio.h>int main (){ unsigned long long int n, sum; n = 1; sum = 0; while (n <= 100) { sum = sum + n; n = n + 1; } return 0;}前期准备生成可供调试的编译源文件g++ main.cpp -o m

2021-01-11 22:38:14 109

原创 侯捷 (4.Inheritance)

Composition(复合)类中包含其他类的对象生命同步变压器Adapter(复合的特殊情况)queue中包含deque(复合)deque满足queue中所有需求的功能,用deque构造queue(适配器模式)template<class T>class queue{...protected: deque<T> C;public: bool empty() const{ return C.empty(); } size_type

2021-01-11 11:01:53 130

原创 侯捷 (3.other note)

static data members单独存储static member functions成员函数需要隐含传入的this指针静态函数也只有一份通过object调用,或者通过类名调用class account{public: static double m_rate; static void set_rate(const double& x){m_rate = x;}};double Account::m_rate = 8.0;int main(){

2021-01-11 00:27:56 69

原创 侯捷 (2.Mystring)

My_stringFeatures exampleint main(){ string s1(); string s2("hello"); string s3(s1); cout << s3 << endl; s3 = s2; cout << s2 << endl;}note:complex类中,没有拷贝构造和拷贝赋值?因为编译器会为你创造,忠实地为你一个一个拷贝。但是指针类,如果还是忠实

2021-01-11 00:22:14 103

原创 侯捷(1.complex)

guard programming#ifdefine __COMPLEXE__#define __COMPLEXE__class ostream; class complex;//forward declarations(前置声明)class complex//class declarations(类-声明){... };complex::function //class definition(类-定义)#endifclass templatetemplate<type

2021-01-11 00:13:40 113

原创 函数运行时间计算

#include "iostream"#include <time.h>#include <iomanip>void main(){ clock_t start,finish; double totaltime; start = clock(); ... finish = clock(); totaltime = double(finish-start)/CLOCKS_PRE_SEC; cout<<"此程序运行时间为:"<<fi

2020-12-11 10:51:39 264

原创 c++Primer读书笔记(第十二章 动态内存)

12.1 动态内存与智能指针头文件12.1.1 shared_ptrmake_shared函数最安全的分配和使用动态内存的方法是调用一个名为make_shared的标准库函数。auto p = make_shared<int>(42);auto q(p);使用了动态生存期的资源的类使用动态内存出于以下三种原因:程序不知道自己需要使用多少对象程序不知道所需对象的准确类型程序需要在多个对象间共享数据...

2020-11-13 10:40:55 166

原创 vim配置【自动补全】【树状目录】【高亮】等

Neovim+Coc.nvim配置 目前个人最舒服终端编辑环境(Python&C++)因为coc.nvim需要配置nodejs,所以参照下面的链接ubuntu下安装nodejs

2020-11-11 23:26:12 316

原创 在linux上使用github

1.安装gitsudo apt-get install gitgit初始化git config --global user.email “[email protected]”git config --global user.name “Your Name”2.使用github创建一个仓库创建完仓库后,记住这个项目链接3.下载项目目录到本地仓库git clone [url] //url为github中提供的项目链接4.创建密匙ssh-keygen -t rsa -C your

2020-11-11 15:13:38 118

原创 Mysql刷题(简单)

2020.11.21编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。示例:±—±--------+| Id | Email |±—±--------+| 1 | [email protected] || 2 | [email protected] || 3 | [email protected] |±—±--------+根据以上输入,你的查询应返回以下结果:±--------+| Email |±--------+| [email protected] |±--------+构建临时表得到每个email的总数,再筛

2020-11-06 11:01:22 438

原创 c++Primer读书笔记(第十一章 关联容器)

11.1 使用关联容器

2020-11-04 21:21:04 105

原创 c++Primer读书笔记(第十章 泛型算法)

概述头文件:algorithm、numeric泛型算法永远不会执行容器的操作,运行于迭代器之上,执行迭代器的操作。10.2 初始泛型算法10.2.1 只读算法findfind(vec.begin(),vec.end(),val);accumulate(求和)accumulate(vec.cbegin(),vec.end(),0);//求和,和的初值设置为010.2.2写容器的算法算法不会检查写操作fillfill(vec.begin(),vec.end(),0);拷贝

2020-10-28 16:01:06 141

原创 c++Primer读书笔记(第九章 顺序容器)

9.1 顺序容器概述通常使用vector是最好的选择,除非你有更好的理由选择其他容器。选额容器的基本原则:没有特殊理由就使用vector空间的额外开销很重要,则不要用list和forward_list随机访问:vector、deque任意位置插入或这删除:list和forward_list头尾插入、中间没有操作:deque如果程序只有在读取输入时才需要在容器中间插入元素,随后需要随机访问元素(1)向vector追加元素,再sort(2)输入阶段使用list,一旦输入完成,拷贝到v

2020-10-26 14:47:51 122

原创 c++Primer读书笔记(第八章 IO库)

8.1 IO类io描述8.1.1 IO对象无拷贝或赋值不能对IO对象进行拷贝或者赋值不能将形参或者返回类型设置为流类型进行IO操作的函数通常用引用方式传递或者返回流读写IO对象会改变其状态,不能用const8.1.2 条件状态一个错误IO的例子:int ival;cin>>ival;//键入abc,读操作失败一旦一个流发生错误,后续的IO操作都会失败。所以我们需要在使用一个流之前检查它是否处于良好的状态。最简单的方法就是将它当做一个条件来使用while(cin&g

2020-10-25 14:27:56 98

原创 c++Primer读书笔记(第七章 类)

类类的基本思想:数据抽象(data abstraction)和封装(encapsulation)数据抽象依赖于:接口(interface)和实现(implementation)分离的编程引入this指针成员函数可以通过一个this指针来访问调用它的那个对象引入const成员函数const成员函数作用是将this声明为指向常量地指针,使得成员函数不能改变调用它的对象的内容。7.1.4构造函数默认构造函数只有当一个类没有声明任何构造函数,编译器才能自动生成默认构造函数=defau

2020-10-24 20:52:25 145

原创 c++Primer读书笔记(第六章 函数)

6.1函数基础调用函数主调函数的执行被暂时中断,被调函数开始执行。6.2参数传递引用传递:可以通过形参改变实参的值值传递:拷贝使用引用来避免拷贝:拷贝大的类类型对象或者容器对象比较低效,甚至有的类类型根本不支持拷贝操作。可以使用引用形参来访问类型的对象。注意:如果函数无需改变引用形参的值,最好将其声明为常量引用。使用引用形参范围额外的信息6.2.3 const形参和实参...

2020-10-23 16:23:32 91

原创 c++Primer读书笔记(第五章 语句)

5.1简单语句复合语句指的是花括号中间的语句,也称为块(作用域)switch语句case标签必须是整形常量表达式不要忘记加breakchar ch;switch(ch){ case 'a': acnt++; break; case 'b': bcnt++; break; default: break;}default标签:如果没有任何一个case匹配的话,匹配default标签后面的语句do while 语句先执行后检查break语句负责

2020-10-22 14:05:30 66

原创 c++Primer读书笔记(第四章 表达式)

4.1基础4.1.1 基本概念一元运算符:取地址符(&)、解引用符(*)二元运算符:相等运算符(==)二元运算时小整数类型(如bool、char、short等)通常会被提升(promoted)成较大的整数类型(如int)重载运算符当运算符作用于类类型的运算对象时,用户可以自行定义其含义。左值和右值:当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)4.5 递增和递减运算符递增和递减有两种形式除非必须,否则不

2020-10-21 20:06:38 733 1

原创 win10和ubuntu 双系统安装

1.下载linux系统iso文件在官网下载最新版本ubuntu iso文件下载USBwriter工具在windows上制作启动盘打开USBwritersource file选择安装好的镜像文件Target device选择你的U盘(U盘文件需要备份,会清空所有文件)点击write,完成后直接关闭分配ubuntu系统的安装空间在需要安装双系统的电脑上,右击我的电脑——管理——磁盘管理选择一个有足够可用空间的磁盘,右键选择压缩卷,选择压缩空间(个人100g)进入U盘系统安装u

2020-10-21 13:16:00 117

原创 c++Primer读书笔记(第三章 字符串、向量和数组)

3.1命名空间的using声明头文件不应该包含using声明头文件的内容会被拷贝到所有引用它的文件中去,如果头文件里面有某个using声明,那么每个使用了该头文件的文件就都会有这个声明。对于某些程序来说,由于不经意包含了一些名字,反而可能产生始料未及的名字冲突。3.2标准库类型 string3.2.1定义和初始化string对象string s1;//空字符串string s2=s1;//拷贝操作符string s3="hiya";string s4(10,'c');直接初始化和拷贝初始

2020-10-16 11:14:47 79

原创 用weak_ptr解决Observer模式的race condition*(能否用shared_ptr替代)

会发生race condition的简单observer模式典型场景(Observer模式):当Observable通知每一个Observer的时候,他从何得知Observer对象还活着?–如果在Observer的析构函数中调用unregister函数,会产生两个race condition在调用unregister的时候如何得知通知者subject_是否还存活?就算存活,线程A执行到unregister前,还没有来得及,而这时候线程B执行updata,指向的正好是A正在析构的对象。问题出

2020-10-12 16:59:54 231

转载 c++智能指针的enable_shared_from_this和shared_from_this机制

c++智能指针的enable_shared_from_this和shared_from_this机制问题:用shared_ptr智能指针管理指针p所指向的对象时,如果用的是如下的形式,那么ptr1.use_count和ptr2.use_count都会是1。那么同一个new A会被析构两次。 A *p = new A(); // 裸指针指向堆上的对象 shared_ptr<A> ptr1(p);// 用shared_ptr智能指针管理指针p指向的对象 shared_ptr<.

2020-10-12 11:40:29 341

原创 后端面试知识点总结 其他

DockerDocker是在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等,极大的简化了容器的创建和维护。使得docker技术比虚拟机更为轻便、快捷。与传统虚拟机比较传统虚拟机:虚拟出一套硬件,在其上运行一个完整的操作系统,在该系统上再运行应用程序docker:容器内的应用程序直接运行于宿主的内核中,容器内没有自己的内核,而且没有进行硬件虚拟;每个容器内都有一个属于自己的文件系统,互不影响。Docker优势更高效的利用系统资源:内核级别的虚拟化,可以在一个物理机上运行很

2020-10-09 14:22:23 608 1

原创 后端面试知识点总结 redis

数据库之RedisRedis概述Redis(Remote Dictionary Server),即远程字典服务。是一个开源的、使用C语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的API。Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis是单线程(因为全部数据在内存中,使用单线程可以取消线程切换时的上下文切换资源消耗)的,基于内存操作,CPU不是redis的性能瓶颈

2020-10-09 14:21:17 234

原创 后端面试知识点总结 数据库 mysql

关系型和非关系型数据库关系型数据库指采用了关系模型来组织数据的数据库。关系模型指的是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。数据库事务必须具备ACID特性。关系:一张二维表,每个关系都具有一个关系名,也就是表名元组:二维表中的一行,在数据库中被称为记录属性:二维表中的一列,在数据库中称为字段域:属性的取值范围,也就是数据库中某一列的取值限制关键字:一组可以唯一标识元组的属性,数据库中常称为主键,由一个或者多个列组成关系模型:指对关系的描述。格式为:关

2020-10-09 14:19:38 1328

原创 后端面试知识点总结 计算机网络

计算机网络层级协议1、DNS协议,http协议,https协议属于应用层应用层是体系结构中的最高层。应用层确定进程之间通信的性质以满足用户的需要。这里的进程就是指正在运行的程序。应用层不仅要提供应用进程所需要的信息交换和远地操作,而且还要作为互相作用的应用进程的用户代理,来完成一些为进行语义上有意义的信息交换所必须的功能。应用层直接为用户的应用进程提供服务。2、TCP/UDP属于传输层传输层的任务就是负责主机中两个进程之间的通信。因特网的传输层可使用两种不同协议:即面向连接的传输控制协议TC

2020-10-09 14:15:59 3386

原创 后端面试知识点总结 操作系统

操作系统基础基本特征并发和并行并发是指宏观上在一段时间内能同时运行多个程序,而并行是指在同一时刻可以同时运行多个指令操作系统通过引入进程和线程,使得程序能够并发运行并行需要硬件支持,如多流水线、多核处理器或者分布式计算系统共享共享是指系统中的资源可以被多个并发进程共同使用共享的方式有两种:互斥共享和同时共享互斥共享的资源称为临界资源;例如打印机等,在同一时刻只允许一个进程访问,需要用同步机制来实现互斥访问虚拟虚拟技术把一个物理实体转换为多个逻辑实体虚拟技术主要有两种:时(时

2020-10-09 13:55:42 766 1

原创 后端面试知识点总结 算法与数据结构

算法与数据结构树树在计算机科学中,是一种十分基础的数据结构。几乎所有操作系统都将文件存放在树状结构中;几乎所有的编译器都要实现一个表达式树;文件压缩所用到的哈夫曼算法(Huffman’s Algorithm)需要用到树状结构;数据库所使用的B+tree则是一种相当复杂的树状结构。二叉树二叉树是n个节点的有限集合,该集合或者为空集,或者由一个根节点和两根互不相交的、分别被称为根节点的左子树和右子树组成。特点:每个节点最多有两个子树,所以二叉树不存在出度大于2的结点左子树和右子树是由顺序的,次序

2020-10-09 13:52:33 662

原创 后端面试知识点总结 设计模式

设计模式设计模式(Design Pattern)代表了最佳实践。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决问题。设计模式是一套被反复使用的、多人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式是软件设计中常见问题的典型解决方案。每个模式就像一张蓝图,可以通过对齐进行定制来解决代码中的特定设计问题。设计模式六大原则单一职责(Single Responsibility Principle)类的职责要单一,不能将

2020-10-09 13:50:56 383

原创 后端面试知识点总结 C++基础知识

c和c++的区别C面向过程,C++面向对象面向过程语言:性能比面向对象高,因为类调用时需要实例化,比较消耗资源,但是没有面向对象易维护,易复用,易扩展。面向对象语言:易维护,易复用,易扩展,由于具有面向对象的特性,可以设计出低耦合的系统使得系统更加灵活。但是性能低。c++仍然是以c位基础:区块、语句、预处理器、内置数据类型、数组、指针等都来自c。但是c++有模板、异常、重载、stl库、分装继承多态等部分。后缀名不同一些关键字有区别:C中的struct中不能有函数,但是C++中可以有ma

2020-10-09 11:36:57 411

原创 vscode c++编译环境配置

1.官网下载vscodevscode官网,点击下载安装简体中文插件安装C++插件2.配置mingw编译环境mingw官网下载下载之后安装,到选择install package那一步停止,保留这个界面。(不知道要安装哪个包所以我们直接用cmd手动安装gcc、g++和gdb)任务开始栏搜索环境变量,在path中添加你mingw到bin的安装路径开始栏cmd打开命令行终端,分别输入mingw-get install gcc、mingw-get install g++、mingw-

2020-07-28 11:26:50 110

原创 路由器设置虚拟服务器(解决局域网中nginx服务器端口开放问题)

问题:通过shell在linux服务器上配置好了nginx服务器之后一直不能通过公网访问服务器。关闭防火墙,端口打开等等一系列操作都没有用,最后发现是因为路由器没有开放ip端口,导致外网无法访问局域网内部ip+端口的地址。路由器设置一般在浏览器输入192.168.1.1就可以访问,输入密码进入高级功能中找到虚拟服务器选项添加局域网中web服务器所在的内网ip地址,设置端口号为nginx服务器所占用的端口号,点击添加这样公网就可以访问这个局域网中的web服务器了.

2020-07-20 15:53:06 735

原创 windows下nginx反向代理设置

下载安装windows下的nginx官网下载添加本机host域名安装switchhosts.exe工具,更换本机域名管理员模式打开,添加两个test中本机域名并确认。配置nginx修改配置文件 conf/nginx.conf#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log inf

2020-07-20 15:37:33 1211

原创 linux 用户状态安装mysql

下完安装包:wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz用户目录下解压:tar -zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz创建文件夹mkdir mysqlln -s mysql-5.7.21-linux-glibc2.12-x86_64 mysql通过vi新增mysql配置文件my.cnf[clie

2020-07-14 19:48:32 72

空空如也

空空如也

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

TA关注的人

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