自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 select、poll、epoll

2020-09-21 10:29:21 109

原创 硬连接与软连接

1、硬连接文件有相同的inode和data blocks;不能对不存在的文件创建硬链接不能跨文件系统创建(因为在各自文件系统下inode是唯一的,当跨文件系统就会出现inode重复的情况发生)不能对目录创建,只能对文件进行创建如果删除了一个硬链接文件,并不会影响其他的同inode文件(inode中存在链接计数器,删除一个硬链接相当于计数器减一,反之加一。直到为0,删除inode)2、软连接软连接有自己的文件属性可以对不存在的文件创建软链接可以跨文件系统软链接可以对目录创建软链接

2020-07-21 13:37:11 289

原创 海量数据处理

参考该blog1、Bloom filter适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集对于原理来说很简单,位数组+k个独立hash函数。将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存在,很明显这个过程并不保证查找的结果是100%正确的。同时也不支持删除一个已经插入的关键字,因为该关键字对应的位会牵动到其他的关键字。所以一个简单的改进就是 counting Bloom filter,用一个counter数组代替位数组,就可以支持删除了。2、Has

2020-07-21 10:43:06 190

原创 MySQL常见问题汇总

2020-07-21 01:45:05 110

原创 C++面试知识整理

1、多态 虚函数 纯虚函数1.1 多态:是对于不同对象接收相同消息时产生不同的动作。C++的多态性具体体现在运行和编译两个方面:在程序运行时的多态性通过继承和虚函数来体现;在程序编译时多态性体现在函数和运算符的重载上1.2 多态的作用隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用;接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。1.3 虚函数在基类中冠以关键字 virtual 的成员函数。 它提供了一种接口界面。允许在派生类中对

2020-07-17 19:54:54 132

原创 程序编译

3、程序过程3.1 预处理预编译步骤主要操作源代码文件中以“#” 开始的预编译指令gcc -E hello.c -o hello.i a) 将所有的 “#define” 指令删除,并展开内容中的宏定义b) 处理所有条件预编译指令,如 “#if”等c) 处理“#include” 预编译指令,将被包含的文件插入到该预编译指令的位置,递归包含d) 删除所有注释行e) 添加行号与文件名标识f) 保留所有#pragma 编译器指令3.2 编译$gcc -S hello.i -o hello.

2020-07-17 17:13:05 144

原创 MySQL——锁

1、分类**按照锁的粒度划分:**行锁、表锁、页锁**按照锁的使用方式划分:**共享锁、排它锁(悲观锁的一种实现)**还有两种思想上的锁:**悲观锁、乐观锁。**InnoDB中有几种行级锁类型:**Record Lock、Gap Lock、Next-key LockRecord Lock:在索引记录上加锁Gap Lock:间隙锁Next-key Lock:Record Lock+Gap Lock1.1 行锁​ 行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。行级锁

2020-07-17 10:28:49 80

原创 STL

1、vector(底层——动态数组)vector<int> vec(10,100); 创建10个元素,每个元素值为100vec.resize(r,vector<int>(c,0)); 二维数组初始化reverse(vec.begin(),vec.end()) 将元素翻转sort(vec.begin(),vec.end()); 排序,默认升序排列vec.push_back(val); 尾部插入数字vec.size();

2020-07-17 10:05:35 131

原创 索引

MyISAM、InnoDB区别l MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。l MyISAM表不支持外键,InnoDB支持l MyISAM锁的粒度是表级,而InnoDB支持行级锁定。l MyISAM支持全文类型索引,而InnoDB不支持全文索引。(mysql 5.6后innodb支持全文索引)MyISAM相对简单,所以在效率上要优于InnoDB,小型应用可以考虑使用MyISAM。当你的数据库有大量的写入、更新操作而查询比较少或者数据完整性要求比较高的时候就选择innodb

2020-07-17 01:12:35 91

原创 TCP/IP协议

1、输入网址的全过程1.根据域名到DNS中找到IP2.根据IP建立TCP连接(三次握手)3.连接建立成功发起http请求4.服务器响应http请求并发送HTML给浏览器5.浏览器解析HTML代码并请求html中的静态资源(js,css)6.关闭TCP连接(四次挥手)7.浏览器将该 html 文本并显示内容;2、DNS域名服务器3、http/https3.1 HTTP3.1.1 状态码100——客户端继续发送200——成功接收,并返回202——成功接收,未处理204——成功接

2020-07-16 22:54:08 457

原创 操作系统

1、进程线程和协程1.1 进程进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动**,进程是系统进行资源分配和调度的一个独立单位**。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大,但相对比较稳定安全。基本状态:运行——就绪——阻塞——创建——结束1.2 线程线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系

2020-07-16 21:31:59 158

原创 事务——隔离级别

数据库事务的隔离级别有4个,由低到高依次为Read uncommitted(未授权读取、读未提交)Read committed(授权读取、读提交)Repeatable read(可重复读取)Serializable(序列化)这四个级别可以逐个解决脏读、不可重复读、幻读1、事务基本要素ACID1.1 原子性事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体1.2 一致

2020-07-16 20:56:24 96

原创 C++11新特性

1、nullptr为了解决这个问题,C++11 引入了 nullptr 关键字,专门用来区分空指针、0。nullptr 的类型为 nullptr_t,能够隐式的转换为任何指针或成员指针的类型,也能和他们进行相等或者不等的比较。2、类型推导——auto|decltype2.1 auto迭代器替换:for(auto itr = vec.cbegin(); itr != vec.cend(); ++itr);注意:a.auto 不能用于函数传参 b.不能用于推导数组类型c.定义一个引用类型的变量

2020-07-15 14:25:39 235

原创 面试反思——京东面试题目汇总

1、C++C++11新特性智能指针、auto、函数2、网络编程socket编程3、白板编程3.1 快速排序class Solution { public: int LOW;//原始数组的左边界 int HIGH;//原始数组的右边界 vector<int> num;//原始数组复制后用来操作的新数组 int Partition(int low,int high){//寻找分界线下标 int temp

2020-07-14 22:33:29 221

原创 面试反思——常用数据结构的构造结构体

白板编程的时候,记得首先明确数据结构,梳理解题思路,设计相关函数与形参,再进行编程1、树struct TreeNode{ int val; TreeNode* left; TreeNode* right; TreeNode(int x):val(x),left(NULL),right(NULL){}};2、单向链表struct ListNode{ int val; ListNode* next; ListNode(int x):val(x),next(NULL){}};3、双

2020-07-14 21:54:17 80

原创 牛客网coding输入输出整理

1、输入1.1 预先不输入数据的组数int a, b;while(cin>>a>>b){ cout<< a+b <endl;}1.2 预先知道数据组数int n;cin >> n;for(int i=0;i<n;i++){ int a,b; cin>> a >> b; cout<< a+b << endl;}1.3 只有一组数据int a,b;cin>&gt.

2020-07-14 09:35:45 373

原创 搜索——回溯算法

Backtracking(回溯)属于 DFS。普通 DFS 主要用在 可达性问题 ,这种问题只需要执行到特点的位置然后返回即可。而 Backtracking 主要用于求解 排列组合 问题,例如有 { ‘a’,‘b’,‘c’ } 三个字符,求解所有由这三个字符排列得到的字符串,这种问题在执行到特定的位置返回之后还会继续执行求解过程。因为 Backtracking 不是立即返回,而要继续求解,因此在程序实现时,需要注意对元素的标记问题:在访问一个新元素进入新的递归调用时,需要将新元素标记为已经访问,这样

2020-07-13 21:40:45 1001

原创 搜索——深度搜索

深度优先搜索在得到一个新节点时立即对新节点进行遍历1、岛屿的最大面积深度优先搜索时间复杂度:O(R∗C)。其中 R是给定网格中的行数,C 是列数。我们访问每个网格最多一次。空间复杂度:O(R∗C),递归的深度最大可能是整个网格的大小,因此最大可能使用 O(R∗C) 的栈空间。class Solution { int dfs(vector<vector<int>>& grid, int cur_i, int cur_j) { //异常处理,直接返回

2020-07-13 19:18:16 855

原创 搜索——广度优先搜索

广度优先搜索一层一层地进行遍历,每层遍历都是以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点。需要注意的是,遍历过的节点不能再次被遍历。1、二进制矩阵中的最短路径class Solution {public: //保存当前节点的八个方向,进行遍历 vector<vector<int>>dir={{0,1},{0,-1},{1,0},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}}; int shortestPathBi

2020-07-13 17:18:08 97

原创 动态规划——矩阵路径

1、矩阵的最小路径和class Solution {public: int minPathSum(vector<vector<int>>& grid) { int m=grid.size(); if(m==0) return 0; int n=grid[0].size(); vector<vector<int>> dp(m,vector<int>(n,0));

2020-07-13 16:12:53 263

原创 动态规划——字符串编辑

1、删除两个字符串的字符使他们相等转换为求两个字符串的最长公共子序列问题class Solution{public: int minDistance(string word1,string word2){ int n1 = word1.size(),n2 = word2.size(); vector<vector<int>> dp(n1+1,vector<int>(n2+1,0)); for(int i=1;i<=n1;i++){ f

2020-07-13 15:41:59 177

原创 动态规划——最长公共子序列

当 S1i==S2j 时,那么就能在 S1 的前 i-1 个字符与 S2 的前 j-1 个字符最长公共子序列的基础上再加上 S1i 这个值,最长公共子序列长度加 1,即 dp[i][j] = dp[i-1][j-1] + 1。当 S1i != S2j 时,此时最长公共子序列为 S1 的前 i-1 个字符和 S2 的前 j 个字符最长公共子序列,或者 S1 的前 i 个字符和 S2 的前 j-1 个字符最长公共子序列,取它们的最大者,即 dp[i][j] = max{ dp[i-1][j], dp[i][j

2020-07-13 14:49:25 124

原创 动态规划——最长递增子序列

1、最长上升子序列状态转移dp[i]=max(dp[j])+1 其中 0≤j<i 且 num[j]<num[i]dp[i]代表0-i之间的序列中最长上升子序列的长度程序分析class Solution {public: int lengthOfLIS(vector<int>& nums) { int n=nums.size(); if(n==0) return 0; if(n==

2020-07-13 14:12:42 226

原创 动态规划——高楼扔鸡蛋

动态规划 + 二分搜索状态转移方程://当前状态位K个鸡蛋,面对N层楼//返回当前状态下的最优结果def dp(K,N): for 1<=i<=N: //最坏情况下的最少扔鸡蛋次数 res = min(res, max( dp(K-1,i-1), //碎了 dp(K,N-i) //没碎 )+1; //在i楼扔了一次 return res;函数单调性程序class Solution { un

2020-07-13 10:27:50 256 1

原创 布隆过滤器

/*布隆过滤器简易版本20200710*/#include<iostream>#include<bitset>#include<string>#define MAX 2<<24using namespace std;bitset<MAX> bloomSet; //简化了由n和p生成m的过程 int seeds[7]={3, 7, 11, 13, 31, 37, 61}; //使用7个hash函数 .

2020-07-10 22:00:02 85

原创 linux及内核体系结构

1、Linux层次结构2、Linux内核结构a) 系统调用接口(SCI):open、read、write等系统调用b) 进程管理(PM):创建进程、删除进程、调度进程等c) 内存管理(MM):内存分配、管理等d) 虚拟文件系统(VFS):为多种文件系统提供统一的操作接口e) 网络协议栈:提供各种网络协议f) CPU架构相关代码(Arch):为的是提高至移植性g) 设备驱动程序(DD):各种

2020-07-04 09:42:27 221

原创 设计模式记录

1、设计模式分为三大类:**创建型模式,共五种:**工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式**结构型模式,共七种:**适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式。**行为型模式,共十一种:**策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类:并发型模式和线程池模式。2、常见的设计模式如下:3、OOP设计模式六种原则...

2020-07-03 10:14:05 121

原创 Linux常用命令

一、文件和目录1. cd命令(它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径)cd /home 进入 ‘/ home’ 目录cd … 返回上一级目录cd …/… 返回上两级目录cd 进入个人的主目录cd ~user1 进入个人的主目录cd - 返回上次所在的目录2. pwd命令pwd 显示工作路径3. ls命令 (查看文件与目录的命令,list之意

2020-07-02 14:24:43 161

原创 动态规划——打家劫舍

打家劫舍1class Solution {public: int rob(vector<int>& nums) { int n = nums.size(); if(n==0) return 0; if(n==1) return nums[0]; vector<int> dp(n,0); dp[0] = nums[0]; dp[1] = max(nums[0]

2020-06-15 23:42:18 136

原创 动态规划——背包问题

背包问题 (Knapsack problem x ) 有很多种版本,常见的是以下三种:**0-1 背包问题 (0-1 knapsack problem):**每种物品只有一个**完全背包问题 (UKP, unbounded knapsack problem):**每种物品都有无限个可用**多重背包问题 (BKP, bounded knapsack problem):**第 i 种物品有 n[i] 个可用0-1背包有一个容量为 N 的背包,要用这个背包装下物品的价值最大,这些物品有两个属性:体积 w

2020-06-15 23:26:26 367

原创 动态规划——套路框架

基本框架明确 base case -> 明确「状态」-> 明确「选择」 -> 定义 dp 数组/函数的含义。**#参考labuladong算法教程**# 初始化 base casedp[0][0][...] = base# 进行状态转移for 状态1 in 状态1的所有取值: for 状态2 in 状态2的所有取值: for ... dp[状态1][状态2][...] = 求最值(选择1,选择2...)三种动态规划方案1.

2020-06-15 20:05:40 234

原创 Spider——全排列

全排列1给定一个 没有重复 数字的序列,返回其所有可能的全排列。class Solution {public: vector<vector<int>> permute(vector<int>& nums) { n = nums.size(); vector<bool> visit(n,false); dfs(nums,visit); return res;

2020-06-15 17:32:49 102

原创 Spider——链表排序

归并排序时间复杂度:O(nlog(n))空间复杂度:由于使用了递归,O(log(n))class Solution {public: ListNode* sortList(ListNode* head) { if(head==nullptr){ return nullptr; }else if(head->next==nullptr){ return head; } List

2020-06-15 16:38:55 105

原创 Spider——排序

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* merge(ListNode* head1,ListNode* head2) //将两个有序链表合并成为一个

2020-06-15 01:58:06 140

原创 反转链表

完全反转链表三种反转列表方式/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; *//*迭代法//O(n),O(1)*/class Solution{public: ListNode* reverseList(ListNod

2020-06-14 18:27:55 75

原创 【转载】深度学习的目标检测算法对比分析

深度学习的目标检测算法对比分析:https://blog.csdn.net/kk55guang2/article/details/88853114

2020-06-14 18:02:53 958

原创 Spider——遍历二叉树

二叉树前序中序后序遍历二叉树从上到下打印二叉树垂序遍历二叉树

2020-06-14 17:58:40 124

空空如也

空空如也

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

TA关注的人

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