自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 es入门语法

//插入数据curl -X PUT \ http://127.0.0.1:9200/people/employee/1 \ -H 'Content-Type: application/json' \ -H 'Postman-Token: 12971301-d285-472c-bdd0-7dd2287b3386' \ -H 'cache-control: no-cache' \ -d '{ "first_name" : "John", "last_name" : "S

2021-09-14 16:59:39 233

原创 持续集成系统--CI系统

https://blog.csdn.net/ordinaryjoe/article/details/105221418

2021-09-13 10:31:33 202

原创 golang cron

测试cron出错: expected exactly 5 fields, found 6。错误代码:func CronTask() { log.Println("******** ******* *******")}func CronTest() { log.Println("Starting Cron...") c := cron.New() _,err:= c.AddFunc("* * * * * *", CronTask) if err!=nil{ fmt.Print

2021-09-06 10:39:41 529 1

原创 对context的疑问

入门知识:https://zhuanlan.zhihu.com/p/307699422疑问:context.Backgroud()context.TODO()这两个函数有什么区别?

2021-08-18 11:21:31 101

原创 runtime.GOMAXPROCS(1)和协程的关系。

runtime.GOMAXPROCS(1):只允许使用一个操作系统线程代码package mainimport ( "fmt" "runtime" "sync")func main() { runtime.GOMAXPROCS(1)//可以用的操作系统栈的个数 count := 10 wg := sync.WaitGroup{}//sync包中的WaitGroup实现了一个类似任务队列的结构,你可以向队列中加入任务,任务完成后就把任务从队列中移除,如果队列中的任务没有全部完成,队列

2021-08-12 21:40:23 366

原创 sql增删查改复习

select distinct Sname from S inner join C inner join Sc where Cname = "数据库" order by Sname desc;select Sname ,sum(Ccredit) from S inner join C inner join Sc where Grade>=60 groupby Sno having sum(Ccredit)>80;找出缺少部分学科成绩的学生的学号,课程号select Sname...

2021-03-10 14:10:41 83 1

原创 03 优先搜索(dfs bfs)、最小生成树(笛卡尔 prime)、两点最短路径(迪杰斯特拉 Floyd)

#include<bits/stdc++.h>using namespace std;void bfs(){ for(int i=1;i<=n;i++)v[i]=0; queue<Node> q; for(int i=1;i<=number;i++){ if(!v[i]){ q.push(i); while(!q.empty()){ e=q.front(); q.pop(); for(){//遍历邻接点加入到队列中

2021-03-07 15:04:55 139

原创 Session ‘app‘: Installation did not succeed.The application could not be installed: INSTALL FAILED

解决方法:删除android模拟器,重新下载一个android模拟器。其他方法(网上说的,自己没有通过这些方法解决问题);clean project + 重启,

2021-03-03 15:10:47 494 1

原创 C++ LRU

#include<bits/stdc++.h>using namespace std;/*思路:LRU最近最少使用,使用list存储链表使用unordered_map,来存储key和list的迭代器的映射查找的时候,使用map快速定位list,并且更新mp和list插入的时候也对他们两个进行更新*/class Lru{public : Lru(int siz=5):cnt(siz){}; void show(){ auto t=da.

2021-01-29 09:53:06 161

原创 sql语法02 group by

语法规范:1、GROUP BY子句中列出的每一列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在SELECT中使用表达式,则必须在GROUP BY子句中指定相同的表达式。不能使用别名。2、除聚集计算语句外,SELECT语句中的每一列都必须在GROUP BY子句中给出。基础理解:就是对指定字段做一个去重,但是去重之后可能会出现一个单元格多个值的情况。https://blog.csdn.net/shaofei63/article/details/42800793?utm_medium=dist

2021-01-22 13:35:42 349

原创 02八大排序算法

#include<bits/stdc++.h>using namespace std;//1、插入排序,先让前面的有序void insertsort(vector<int>&vec){ int tt,j; for(int i=1;i<vec.size();i++){//从第二个元素向后遍历, if(vec[i]<vec[i-1]){ tt = vec[i]; for(j=i-1;

2021-01-12 20:55:39 74

原创 03 深入浅出索引上下

三种索引:全文索引,哈希索引,B+树索引索引维护:页分裂。(随机插入,向右分裂)索引的选择:身份证ID or 自增主键性能 + 存储。性能:身份证ID,是随机插入,页分裂是中间分裂,可能会造成一定的存储浪费,分裂次数页比较多。但是自增主键,只有页满才会将新点分裂到下一个页,效率是最高的。存储:一个B+树节点,存储的身份证ID数量 < 自增主键数量不同。以上对应于:mysql 45讲:深入浅出索引1回表:使用了辅助索引,搜索完辅助索引,还要再搜索聚集索引。select * fro

2021-01-12 11:11:43 142

原创 innodb 06 索引-全文检索

全文检索1、倒排索引两种倒排索引。inverted file index,其表现形式为{单词,单词所在文档的ID}full inverted index,其表现形式为{单词,(单词所在文档的ID,在具体文档中的位置)}普通全文检索表:{文档ID,text}倒排文件索引关联数组:inverted file index{number,单词,单词所在文档的ID}详细倒排索引关联数组:{number,单词,(单词所在文档的ID,在具体文档中的位置)}innodb全文检索使用的是full invert

2021-01-12 10:38:21 188

原创 innodb 05 索引-哈希索引

哈希索引:InnoDB存储引擎使用哈希算法来对字典进行查找,其冲突机制采用链表方式,哈希函数采用除法散列方式。那么InnoDB存储引擎的缓冲池对于其中的页是怎么进行查找的呢?上面只是给出了一般的算法,怎么将要查找的页转换成自然数呢?InnoDB存储引擎的表空间都有一个space_id,用户所要查询的应该是某个表空间的某个连续16KB的页,即偏移量offset。InnoDB存储引擎将space_id左移20位,然后加上这个space_id和offset,即关键字K=space_id<<20+space_

2021-01-12 09:49:29 100

原创 innodb 04 索引-B+树索引

索引:若索引太多,应用程序的性能可能会受到影响。而索引太少,对查询性能又会产生影响索引概述InnoDB存储引擎支持以下几种常见的索引:B+树索引全文索引哈希索引InnoDB存储引擎支持的哈希索引是自适应的,InnoDB存储引擎会根据表的使用情况自动为表生成哈希索引,不能人为干预是否在一张表中生成哈希索引。B+树索引并不能找到一个给定键值的具体行。B+树索引能找到的只是被查找数据行所在的页。将其读到内存中,查找具体某一个记录:是二分查找page dictory。1、B+ 树索引B+树索引可

2021-01-12 09:47:39 107

原创 sql语法01 连接 join

create table t_blog( id int AUTO_INCREMENT PRIMARY KEY, title VARCHAR(50), typeid int); DROP TABLE t_blog; INSERT INTO t_blog(title,typeid) VALUES("aaa",1); INSERT INTO t_blog(title,typeid) VALUES("bbb",2); INSERT INTO t_blog(title,typeid).

2021-01-11 21:03:28 84

原创 01 跳跃表

学习自:https://www.cnblogs.com/lfri/p/9991925.html对一个有序列的查找插入。(也可以用二分查找树)跳表。知识点1 、层数决定,随机数、知识点2、查找,先稀疏层,再稠密层知识点3、插入:先查找再插入。思考:为啥不用二叉树。。。感觉这个空间比二叉树多的多啊。注释代码:#include<cstdio>#include<cstdlib>using namespace std;const int maxn = 100000 +

2021-01-11 15:14:06 88

原创 innodb 03 锁详述

锁1、SQL语言分类SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。数据查询语言DQL:数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:数据操纵语言DML:数据操纵语言DML主要有三种形式。(insert update delete)数据定义语言DDL:数据定义语言DDL用来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等如:CREATE TABLE/VIEW/INDEX/SYN/

2021-01-11 14:12:04 106

原创 02 一条sql更新语句如何执行?

crash-safe:redo log,InnoDB 就可以保证即使数据库发生异常重启,之前提交的记录都不会丢失,这个能力称为 crash-safe。过程1、连接器:权限验证2、查询缓存。是否命中。(表有更新的话,和这个表有关的查询缓存会失效,这是不建议使用查询缓存的原因)3、分析器:词法分析,语法分析4、优化器:执行计划生成,索引选择。5、执行器先通过搜索主键索引或者辅助索引找引擎取 ID=2 这行所在的数据页。ID 是主键,引擎直接用树搜索找到这一行。如果 ID=2 这一行所在的数据页本来

2021-01-11 09:32:56 94

原创 innodb 02 undo 日志详解

undo log基本概念undo log有两个作用:提供回滚和多个行版本控制(MVCC)。undo log和redo log记录物理日志不一样,它是逻辑日志。可以认为当delete一条记录时,undo log中会记录一条对应的insert记录,反之亦然,当update一条记录时,它记录一条对应相反的update记录。undo log是采用段(segment)的方式来记录的,每个undo操作在记录的时候占用一个undo log segment。另外,undo log也会产生redo log,因为un

2021-01-10 21:52:16 199

原创 innodb 01 redo 日志详解

redo 和binlog的区别。1、二进制日志server层产生,redo是innodb层产生。并且binlog先于redolog被记录2、binlog记录操作的方法是逻辑性的语句,基于行格式。redolog是innodb层产生的日志,记录数据库每个页的修改。3、binlog是事务提交的时候,一次性写入,redolog是数据准备修改的时候写入redobuffer,然后才对缓存中数据操作。并且保证,事务提交时:redobuffer冲刷到磁盘4、binlog是一次性写入,所以有顺序。redolog是物理

2021-01-10 21:07:26 469

原创 01 一条sql查询语句如何执行?

1、一条sql查询语句如何执行?select * from T where ID=10;逻辑架构图:客户端—>连接器—>分析器—>优化器—>执行器—>存储引擎其中还有一个连接器和分析器都会查找的“ 查询缓存”MySQL 可以分为 Server 层和存储引擎层两部分:Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过

2021-01-10 16:58:24 74

原创 git入门教程

1、 前置知识git:分布式的版本控制系统GitHub:远程代码托管仓库2、连接gita.本地生成公钥私钥:ssh-keygen -t rsa -C "[email protected]"b.验证本地仓库能不能和远程GitHub通信:ssh -T [email protected].设置邮箱和用户名,以后在GitHub上提交信息,都会附带你的邮箱和用户名信息 git config --global user.name "ghqcentos" git config --global

2021-01-05 15:58:57 113

原创 EPOLLIN , EPOLLOUT , EPOLLPRI, EPOLLERR 和 EPOLLHUP事件

https://blog.csdn.net/q576709166/article/details/8649911

2021-01-01 15:23:51 236

原创 C++手撕string(构造+析构+拷贝+右值拷贝)

#include<bits/stdc++.h>using namespace std;class sstring{public: sstring(const char *p=nullptr){ cout<<"sstring(const char *p=nullptr)"<<endl; if(p==nullptr){ _p=new char[1]; _p[0]='\0'; .

2020-12-28 09:55:01 487

原创 C++ 实现智能指针(带引用计数)

#include<bits/stdc++.h>using namespace std;//实现一个带引用计数的智能指针/*思路:对象有两个成员变量,一个成员变量指向资源,一个成员变量指向计数。(计数必须在堆上分配) 构造函数:让资源指针指向资源,并且创建一个和这个资源配对的int=1。 析构函数:判断int==0,决定是否释放资源 拷贝构造:int++,_p指向同一个资源 拷贝赋值运算符:检查自赋值,释放之前资源,赋值 解引用*:返回引用T...

2020-12-27 20:25:09 368

原创 C ++实现string

/*构造析构,拷贝、拷贝赋值版本*/class sstring{public: sstring(const char *p=NULL){//nullptr if(p==NULL){ _p=new char[1]; _p[0]='\0'; }else{ int len=strlen(p); _p=new char[len+1]; for(.

2020-12-26 11:10:56 181 2

原创 C ++实现顺序栈

版本一:int类型,只有构造函数和析构函数class sstack{public: sstack(int cap=10):_cap(cap){//开辟空间 _p=new int[cap](); _size=0; } ~sstack(){ delete[] _p; _p=NULL;//指针要等于nullptr _size=_cap=0; } void push(int x){

2020-12-26 10:06:55 186

原创 C ++ atomic 初次使用

基于 CAS的atomic 原子类型。互斥锁级别是重的,适用于:临界区代码做的事情复杂但是+±-这种操作,可以用CAS。CAS通常被称为无锁操作。但是并不是真的不加锁,而是在硬件方面枷锁。给总线上锁。cpu和内存交换数据,如果没有交换完毕的话,是不允许其他线程使用总线的。#include<iostream>#include<list>#include<mutex>#include<thread>#include<queue>#

2020-12-24 15:33:13 384

原创 C++11 uniptr_lock + condition_vartiable 实现生产者消费者模型

#include<iostream>#include<list>#include<mutex>#include<thread>#include<queue>#include<condition_variable>std::mutex mtx;std::condition_variable cv;//生产者生产完毕之后,通知消费者,消费者消费完毕之后通知生产者。class Queue{ public : .

2020-12-24 15:02:25 158

原创 C++ function底层实现

#include<iostream>using namespace std;template<typename T>class myfunction{};template<typename R,typename... A>class myfunction<R(A...)>{public : using FUNC =R(*)(A...); myfunction(FUNC p):_func(p){} R operator()(

2020-12-23 21:06:36 354

原创 C++STL 绑定器的bind1st 的使用场景 和底层实现原理。

bind1st:operator()的第一个形参变量绑定成一个确定值bind2st:operator()的第二个形参变量绑定成一个确定值上述两个绑定器将一个二元函数转化成一元函数。高元函数对象,降为低元函数对象。使用#include<bits/stdc++.h>using namespace std;template<typename Container>void show(Container &con){ typename Container::i

2020-12-23 19:27:59 230

原创 C++运算符重载,复数类

/*复数类:CComplex;C++ 的运算符重载:使对象的运算表现的和编译器内置类型一样。*/#include<iostream>using namespace std;class CComplex{public: //这里相当于定义了三个构造函数。 CComplex(int r=0,int i=0):mreal(r),mimage(i){} CComplex operator+(const CComplex &src){//不能返回对象的指针。

2020-12-22 20:18:45 214

原创 C ++ 面试 手撕 vector 构造、析构、赋值、拷贝、空间分配器实现

#include<iostream>using namespace std;//实现vector代码template<typename T>class Vec{public : Vec(int size=10){ _first=new T[size]; _last=_first; _end=_first+size; } ~Vec(){ delete[] _first; .

2020-12-22 15:45:50 1004

原创 reactor模式

reactor模式定义:主线程监听文件描述符上是否有事件发生,有事件的话,就把事件通知给工作线程。除此之外,主线程不做任何其他的工作。读写数据,接受新连接,处理客户请求,都是在工作线程中完成。大概流程如下:1、主线程往epoll中注册读就绪事件。2、主线程调用epollwait等待有数据可读。3、有数据可读的时候,就通知主线程。主线程把读事件放在队列中。4、睡眠在队列上的某个工作线程被唤醒,它从socket中读取数据,并且处理客户请求,然后往epoll内核事件中注册写就绪事件。5、调用epol

2020-12-17 15:23:47 65

原创 libco 下载 安装 运行 入门

下载安装https://blog.csdn.net/greybtfly/article/details/83688420入门https://blog.csdn.net/arbboter/article/details/101375476练习/*1、创建协程对象指针。2、创建协程对象(协程对象指针地址,协程对象属性,协程函数,协程参数,)。3、创建协程条件变量4、启动协程 stCoRoutine_t * produc =NULL;//声明一个对象类型指针。 co_create(&

2020-12-09 21:26:15 231

原创 linux 防火墙firewall

查看当前已经开放的端口:firewall-cmd --list-ports开启端口,以8888为例:firewall-cmd --zone=public --add-port=8888/tcp --permanent重启防火墙:firewall-cmd --reload其他指令:关闭防火墙firewall systemctl stop firewalld.service关闭防火墙开机启动firewall sustemctl disable firewalld.service

2020-11-30 08:55:38 65

原创 VM centos7 桥接模式

https://www.cnblogs.com/WalkOnMars/articles/11994085.html

2020-11-29 22:11:59 62

原创 Nginx.conf

#user nobody;worker_processes 1; #工作进程:数目。根据硬件调整,通常等于cpu数量或者2倍cpu数量。 #错误日志存放路径#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info; #pid logs/nginx.pid; # nginx进程pid存放路径 events { worker_con

2020-11-29 20:25:14 56

原创 Linux 安装Nginx

详见:https://blog.csdn.net/qq_37345604/article/details/90034424

2020-11-29 20:23:52 55

空空如也

空空如也

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

TA关注的人

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