自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 置顶说明

学习建议: 说明:以下无特殊说明,私教课均来自极客时间! C++学习 书籍推荐 <<C++ Primer 中文版(第5版)>>[美] Stanley B.Lippman / 电子工业出版社 <<Effective C++ 改善程序与设计的55个具体...

2019-06-25 16:04:00 61 0

原创 第172场力扣周赛

6和9组成的最大数字(简单) 题目描述: 给你一个仅由数字 6 和 9 组成的正整数num。 你最多只能翻转一位数字,将 6 变成9,或者把9 变成6 。 请返回你可以得到的最大数字。 解题思路: 非常简单,只需将当前数组中最靠前(若存在)的数字6翻转为9即可得到最大的数组: cl...

2020-01-20 20:47:25 75 0

原创 高性能HTTP服务器

高性能HTTP服务器 最近一直在做一个高性能的http服务器,首先要构建一个支持TCP的高性能网络编程框架,再完成这个框架之后,再增加上http的特性便可以了。 设计需求: 采用 reactor 模型,使用 epoll 作为事件分发实现。 必须支持多线程,从而可以支持单线程单 react...

2020-01-20 05:07:28 105 0

原创 力扣日常练习

旋转数组(简单) 给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。 解题: 思路:将数组向右移动k个位置,那么首先我们的思路便是申请一个额外的数组,来预存数组中的元素,紧接着再对原数组进行操作,A[(i + k)%size] = B[i]。 class Solution ...

2020-01-17 02:53:12 64 0

原创 力扣日常练习

验证回文串(简单) 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 解题: 根据题目需求首先过滤掉非字母和数字的字符,紧接着通过双指针首尾遍历字符串,判断是否回文即可。 isalnum()函数表示判断字...

2020-01-16 22:12:33 58 0

原创 力扣日常练习

二叉树的最大深度(简单) 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 解题: 采用递归的方式去求解二叉树的最大深度。 /** * Definition for a binary tree node. * struct TreeNod...

2020-01-16 06:31:08 66 0

原创 力扣日常练习

合并两个有序数组 给定两个有序整数数组nums1 和 nums2,将 nums2 合并到nums1中,使得num1 成为一个有序数组。 说明: 初始化nums1 和 nums2 的元素数量分别为m 和 n。 你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存 nums...

2020-01-15 01:56:33 51 0

原创 力扣日常练习

搜索插入位置(简单) 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 解题: 简单的二分查找问题,由于我们知道当排序数组当中存在目标值的情况,则直接返回mid下标即可,当排序数组当中不...

2020-01-13 18:55:32 34 0

原创 力扣日常练习

罗马数字转整数(简单) 罗马数字包含以下七种字符:I,V,X,L,C,D和M。 罗马数字规则 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做I...

2020-01-12 20:40:27 13 0

原创 MongoDB——读操作事务

由于MongoDB是一个分布式数据库,因此我们在读取数据的过程中需要关注以下两个问题: 从哪里读?关注数据节点位置 什么样的数据可以读?关注数据的隔离性 接下来我们引入了两个参数:readPreference和readConcern来控制。 readPreference参数 readP...

2020-01-02 23:25:14 24 0

原创 MongoDB——写操作事务

writeConcern参数 writeConcern决定一个写操作落到多少个节点上才算成功。writeConcern的取值包括: 0:发起写操作,不关心是否成功; 1~集群最大数据节点数:写操作需要被复制到指定节点数才算成功; majority:写操作需要被复制到大多数节点上才算成功。...

2020-01-01 16:38:53 164 0

原创 SELECT

select函数介绍 个人整理select函数思维导图

2019-12-23 22:19:36 70 0

原创 TIME_WAIT

TCP四次挥手 首先先从TCP的四次挥手说起,下面给出TCP四次挥手展示图: TCP四次挥手 TCP连接终止时,主机1先发送FIN报文,主机2进入COLSE_WAIT状态,并发送一个ACK应答,同时,主机2通过read调用获得EOF,并将此结果通知应用程序进行主动关闭操作,发送FIN报文...

2019-12-19 20:00:26 63 0

原创 ping命令

ping命令是用来完成对网络连通性的检测 ping命令探测与新浪网的网络连通性 我们可以看到,每次显示都是按照sequence序列号排序显示的,一并显示的,也包括TTL(time to live),反映了两个IP地址之间传输的时间。最后还显示了ping命令的统计信息,如最小时间、平均时间等...

2019-12-19 18:20:39 42 0

原创 MongoDB的CRUD

标题 标题 标题 标题 标题 标题

2019-12-05 22:20:20 15 0

原创 如何选取最佳前缀索引长度

有时候需要索引很长的字符列,这会让索引变得大且慢。其中有一种策略是通过自定义哈希索引的方式来模拟哈希索引,但是这样会存在一定的局限性。通常来讲我们可以采用前缀索引的方式,这样可以大大节约索引空间,从而提高索引效率。但是与此同时,这也会一定程度上的降低索引的选择性。 索引的选择性是指,不重复的索引...

2019-12-03 14:37:23 374 0

原创 MySQL为一张表的枚举字段增加ENUM常量

基本技术为:为当前表结构创建一个新的.frm文件,然后用它替换掉已经存在的那张表的.frm文件 创建一张具有相同结构的空表,并进行所需的修改(增加ENUM常量) 执行FLUSH TABLES WITH READ LOCK。这将会关闭所有正在使用的表,并且禁止任何表被打开。 交换.frm文件...

2019-12-02 19:54:08 280 0

原创 LRU缓存机制

class LRUCache { private: int cap; // 双链表:装着 (key, value) 元组 list<pair<int, int>> cache; // 哈希表:key 映射到 (key, value) 在 ca...

2019-09-25 16:42:53 36 0

原创 C++实现简易Trie树

放码过来 #include <iostream> #include <string> using namespace std; struct TrieNode { char data; TrieNode *children[26]; bool isEnding...

2019-09-22 21:20:02 48 0

原创 C++11——std::mutex

互斥量 互斥量是一个可以处于两态之一的变量:解锁和加锁。这样,只需要一个二进制位表示它,不过实际上,常常使用一个整型量,0表示解锁,而其他所有的值则表示加锁。互斥量使用两个过程。当一个线程(或进程)需要访问临界区时,它调用mutex_lock。如果该互斥量当前是解锁的(即临界区可用),此调用成...

2019-09-15 20:28:30 1010 0

原创 C++11——std::thread

线程的创建——线程的启动与结束 通过函数来创建一个线程 #include <iostream> #include <thread> // 线程入口函数 void function() { std::cout << "The thread i...

2019-09-15 10:30:42 854 0

原创 单例设计模式

单例类 单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例,即一个类只有一个对象实例。 我们知道了单例类只能有一个实例化对象,因此从这一点出发,我们想到了可以使类的构造函数私有化来实现一个单例类: ...

2019-09-13 15:14:31 37 0

原创 C++中的左值与右值以及右值引用到底是什么?

左值与右值 通常来说你确实可以使用一个值在表达式中的位置信息来判断这个值的左右值类型,比如说在下面这段代码中: int x = 10; int y = 20; int sum = x + y; 最后一行当中,位于" = " 左侧的sum就是一个左值,而右侧的 &quo...

2019-09-12 10:27:35 99 0

原创 并发编程学习(三)

Happens-Before规则 Happens-Before规则表达的意思:前面一个操作的结果对后续操作是可见的! 程序的顺序性规则 这条规则是指在一个线程中,按照程序顺序,前面的操作Happens-Before于后续的任意操作。 class VolatileExample { ...

2019-08-25 21:25:54 23 0

原创 并发编程学习(二)

Java中实现线程的两种方式 class TestThread extends Thread{ @Override public void run() { System.out.println("通过继承Tread类实现线程"); ...

2019-08-24 17:15:21 33 0

原创 并发编程学习(一)

并发编程——背景概述 这些年,虽然我们的CPU、内存、I/O设备都在不断的发展,但是在发展的过程中,一直有一个核心矛盾存在,就是这三者的速度差异。程序里大部分语句都要访问内存,有些还要访问I/O,由于木桶理论,程序整体的性能取决于最慢的操作——读写I/O设备,也就是说单方面提高CPU性能是无效...

2019-08-24 03:47:53 29 0

原创 阿里面试复盘

C++中的this指针 在 C++ 中,每一个对象都能通过this指针来访问自己的地址。this指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。 友元函数没有this指针,因为友元不是类的成员。只有成员函数才有this指针。 下面给出一个案例帮助我们更好的理解:...

2019-08-16 17:39:46 62 0

原创 SQL

MySQL中SELECT语句执行顺序 语句编写顺序:SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ... LIMIT ... 下面先给出一个完整的SELECT语句: 下面是一个完整的SELECT语句: SELE...

2019-08-12 19:31:22 49 0

原创 Vector

vector简介 vector是序列式容器(sequence containers)中的一种。 向量(vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数...

2019-08-07 17:26:46 1168 0

原创 Qt安装及测试

Qt下载 这里给出Qt的离线安装包下载地址: http://download.qt.io/archive/qt/ Qt离线安装包下载页面 可以看出,在2019年6月18号,Qt发布了最新的版本5.13.0,我这里安装的版本是5.11.1: http://download.qt.io/...

2019-06-27 22:11:36 1268 0

原创 随便写写——C++实现简易整型数组类

用C++实现一个简单的整型数组类 该整型数组类包含以下简要几个功能: 默认构造函数(最大容量为10) Array() 有参构造函数(自定义最大容量) Array(int capacity) 获取数组容量 getN(...

2019-06-25 14:18:47 321 0

原创 InnoDB存储引擎——聚簇索引

之前学习了数据库实战45讲的前半部分,觉得应该需要停下来沉淀一下,过一阵子再去继续学习。 今天,来分析一下InnoDB存储引擎管理的InnoDB表如何基于聚簇索引建立的! 其实之前在学校的数据库课程上,我一直以为聚簇索引是一种索引类型,然后结合InnoDB存储引擎,自然而然的便认为聚簇索引...

2019-05-31 15:06:42 282 0

原创 Fighting——Day4

今天计划先完成昨天未完成的SQL在线编程题 由于在上一篇博客当中已经给出了所有表的创建语句,这里就不再重复说明了,我们就直接开始吧! 光速打脸现场,下面给出表的定义: CREATE TABLE `departments` ( // 部门表 `dept_no` char(4)...

2019-05-22 14:02:29 57 0

原创 Fighting——Day3

今天打算复习数据库SQL,计划完成牛客网上的数据库SQL实战30道题! 下面给出"员工表"的SQL创建语句: CREATE TABLE `employees` ( // 员工表 `emp_no` int(11) NOT NULL, ...

2019-05-18 16:29:47 34 0

原创 Fighting——Day2

复习<<数据结构与算法——栈>> 栈是一种“操作受限”的线性表,从栈的操作特性上来看,栈是一种“操作受限”的线性表,只允许在一端进行数据的插入与删除。后进者先出,先进者后出,这就是典型的“栈”结构。 为什么要引入栈? 我们之前学习了顺序表和链表这两种结构体,分别是线性...

2019-05-17 20:54:07 38 0

原创 Fighting——Day1

复习<<数据结构与算法——复杂度分析>> 学习数据结构与算法的目的为了提高代码的执行效率及降低代码所占用的存储空间,因此时间复杂度及空间复杂度是评估一个算法的重要因素。而关于这两者的分析统称为复杂度分析。复杂度分析是整个算法学习的精髓,只要掌握了它,数据结构和算法的内容...

2019-05-14 21:10:54 79 0

原创 MySQL——计数器表

如果应用在表中保存计数器,则在更新计数器时可能碰到并发问题。计数器表在Web应用中很常见。可以用这种表缓存一个用户的朋友数、文件下载次数等。创建一张独立的表存储计数器通常是个好主意,这样可以使计数器表小且快。使用独立的表可以帮助避免查询缓存失效,并且可以使用以下的一些高级技巧。 计数器表的创建...

2019-05-03 16:51:16 141 0

原创 MySQL——VARCHAR和CHAR类型

前述 VARCHAR和CHAR是两种最主要的字符串类型。不幸的是,很难精确地解释这些值是怎么存储在磁盘和内存中的,因为这跟存储引擎的具体实现有关。下面的描述假设使用的存储引擎是InnoDB和/或者MyISAM。如果使用的不是这两种存储引擎,请参考所使用的存储引擎的文档。 先看看VARCHAR...

2019-05-03 15:04:57 7919 2

原创 普通索引与唯一索引

所谓普通索引,就是在创建索引时,不附加任何限制条件(唯一、非空等限制)。该类型的索引可以创建在任何数据类型的字段上。 所谓唯一索引,就是在创建索引时,限制索引的值必须是唯一的。通过该类型的索引可以更快速地查询某条记录。 普通索引还是唯一索引? 假设你在维护一个市民系统,每个人都有一个唯一...

2019-04-08 20:20:06 9605 0

原创 TCP/IP协议

运输层的两个主要协议 TCP/IP运输层的两个主要协议都是互联网的正式标准,即: 用户数据报协议UDP(User Datagram Protocol)[RFC 768] 传输控制协议TCP(Transmission Control Protocol)[RFC 793] 用户数据报协议UD...

2019-04-02 22:22:00 136 0

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