3 yan-mario

尚未进行身份认证

暂无相关简介

等级
TA的排名 10w+

mysql的隔离级别

坚持有四种隔离级别,每个隔离级别都有对应问题,如 脏读、不可重复读、幻读 由低到高依次为Read uncommitted 读未提交 、Read committed 读已提交、Repeatable read 重复读、Serializable串行化 ,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。1.脏读一个事物正在访问数据,并对数据做了修改,修改...

2019-08-24 21:38:51

mysql的存储引擎以及索引

mysql的主要索引innodb和misaminnodb:根据存储引擎的不同索引的实现也不同,基于B+树数据结构实现的索引比较多,也有hash索引,根据不同的场景应用不同。接下来描述下innodb存储引擎,innodb的主键索引是在b+树的叶子节点存储的是数据本身,辅助索引叶子节点存储的数据是主键的值,当用辅助索引查询值的时候会找到主键的值,再去主键索引的B+查询一遍。 因为主键索...

2019-08-24 14:06:08

回朔算法

回朔算法的思想很简单,每一步都是尝试,如果正确进行下一步,如果不正确则回退,回退到上一步或者原点。 为了优化时间,不必要的搜索要进行剪枝操作常见的深度优先搜索就是回朔法的思想,来几道经典的回朔法。1.https://leetcode-cn.com/problems/combination-sum/ 代码有注释,今天时间紧急,后边有时间画图放上边加以理解class Soluti...

2019-08-15 11:57:17

hash表的实现

hash应用非常多,当问到大数据处理时 要求实现一个hash的时候可能有点懵...下边时hash表的实现,散列容器,用的是拉链法,带注释//// Created by yanpan on 2019/8/12.//#if 0#include<iostream>using namespace std;#define M 13 //初始化13个tablet...

2019-08-15 09:58:25

string类的实现

string类的实现构造函数、拷贝构造函数、赋值函数、析构函数的实现#if 1#include <iostream>using namespace std;class MyString{public: MyString(const char* str) { if(str == NULL) { ...

2019-08-15 09:54:13

epoll解析 -LT ET

I/O多路复用epoll函数epoll是通过一组函数来完成多路复用的其中epoll_create、epoll_ctl、epoll_wait函数,不懂的可以查阅资料!这篇博客主要记录 epoll的LT模式和ET模式的区别LT模式:epoll相当于一个效率较高的poll, 当描述符有事件发生时,会通知用户读取描述符的事件(消息), 当事件没有一次读取完还会继续通知用户去读事件(消...

2019-08-13 18:03:53

leetcode---hash

插入hash表之后,要查找这个key是否存在于hash表中,应该用find函数,然后去和容器的end()进行比较1.https://leetcode-cn.com/problems/two-sum/class Solution {public: vector<int> twoSum(vector<int>& nums, int target...

2019-08-13 17:45:49

动态规划 -- 动态递推1

53. 最大子序和. 给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释:连续子数组[4,-1,2,1] 的和最大,为6dp状态的定义,dp[i] dp方程: dp[i] = max(dp[i-1] + nums[i...

2019-08-13 17:45:27

动态规划 -- 动态递推一

第一步. 找出dp状态的定义第二步. 找到dp递推方程Leetcode120. 三角形的最小路径和 动态规划 时间复杂度 O(m*k) 空间复杂度 O(m*k)一种较为好理解的解法,定义一个二维的数组 dp, 状态 存放在二维数组中dp[i][j] = min(dp[i+1][j], dp[i+1][j+1]) + triangle[i][j]对dp二维数组初始化,...

2019-08-13 17:45:17

迭代器失效问题

在序列容器里,删除了当前的iterator 导致后边所有元素的迭代器都会失效 增加一个元素也会导致后边的元素进行移动 因为vector、deque是序列容器,使用连续分配的内存,删除当前元素,后边的所有元素都会向前移动一个位置,之后数据的地址发生了变化,之前的迭代器根据原有容器的信息访问不到正确的内容。使用earse方法删除元素的时候 erase方法会返回下一个元素的迭代器(...

2019-08-13 17:44:45

Linux内存管理 -- 虚拟地址映射

在32位地址下,进程的虚拟地址空间是4GB,需要将虚拟地址与物理内存连接起来,通过分页机制。物理内存,操作系统将物理内存分成一块一块大小为4KB都相同的页。4G的虚拟地址空间 页的大小是4KB, 即有4M的页,4M 的大小就是 1K 个 4K,4K就是一个页面,一共1K个页面,这个1K就是页目录表,页目录表的每一项大小是4个字节,页目录表是4k。页目录有1K个项,用前十位可以定位到页...

2019-08-13 17:44:37

进程、线程

什么是进程?进程是资源分配的基本单位 有自己独立的虚拟地址空间,在系统上运行的东西,都可以称为进程, 占用系统的资源 如cpu、物理内存。什么是程序?程序是进程指令的集合,可以启用一个进程或者多个进程,占用磁盘空间,不占用系统资源。什么是线程?在Linux上线程是特殊的进程,是轻量级的进程 线程是资源调度的基本单位 每个线程都有独立的程序计数器,线程栈和一组线程寄存器,内核调...

2019-08-13 17:44:25

GDB调试多线程程序

gdb调试多线程:gdb调试多线程程序的常用命令info threads,显示当前可调式的所有线程, gdb调试工具会为可调式的所有线程分配一个ID,通过ID可以来操作线程。 thread ID, 选择要调试的目标线程 set scheduler-locking [off|on|step], 默认的情况下,也是选择 off 的情况,调试多线程程序时,被调试的线程 以及 其他线程都...

2019-08-13 17:42:09

GDB调试多进程程序

gdb调试多进程:1.使用子进程的pid来调试子进程attach + 进程pid 将该进程附加到gdb调试器中 6673是子进程的pid,6672是父进程pid2.使用调试器选项 follow-fork-mode modesetfollow-fork-mode mode 其中最后一个mode可以选 parent 和 child选项, 分别代表了父进程...

2019-08-13 17:42:04

GDB调试

1.gdb的简介gdb是Linux下的 GUN调试程序,用来调试C/C++的强大调试器。2.基本命令介绍编译文件的时候需要加上 -g加上 生成调试信息, 如 g++ -g -o test test.cpplist 查看源代码, 输入list后可以按回车继续查看源代码run 让程序跑起来next 逐步执行step 进入函数中执行bt 查看函数调用的栈帧...

2019-08-13 17:41:36

Linux内存管理 二

内存的分配与回收在程序中申请堆上的内存使用 malloc函数,在系统调用中可以调用 brk() 函数 和 mmap()函数当申请的内存小于128kb(默认值) 的时候会调用brk()函数在heap上开辟内存,当申请内存大于等于128kb(默认值) 的时候会调用mmap()函数在mmap映射区开辟内存内存的回收调用free()函数 或unmap()函数来释放内存函数的声明:...

2019-06-06 15:32:10

Linux内存管理 一

1.Linux内核为每个进程提供了一个独立的虚拟地址空间,这个虚拟地址空间是连续的。虚拟地址空间被分为内核空间和用户空间,在32位系统中,虚拟地址空间一共有4GB的大小。内核空间占1G(位于最高处),用户空间占3G。进程在用户态时只可以访问用户空间,在进入内核态之后才可以访问内核空间内存。每个进程的虚拟地址空间都包含了内核空间,他们对应的是同一块物理内存。一个可执行程序在没用...

2019-06-03 09:47:30

Leetcode---136

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素示例 1:输入: [2,2,1] 输出: 1示例2:输入: [4,1,2,1,2] 输出: 4说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?思路采用异或的思路,相同的数字异或的结果是0,不同的数字异或结果是1;不同异...

2019-06-02 16:35:26

Linux下的内存分配

1.伙伴算法一种物理内存分配和回收的方法,物理内存所有空闲页都记录在BUDDY链表中。首选,系统建立一个链表,链表中的每个元素代表一类大小的物理内存,分别为2的0次方、1次方、2次方,个页大小,对应4K、8K、16K的内存,没一类大小的内存又有一个链表,表示目前可以分配的物理内存。例如现在仅存需要分配8K的物理内存,系统首先从8K那个链表中查询有无可分配的内存,若有直接分配;否则查找16K大小...

2019-06-02 16:34:52

同步、异步、阻塞、非阻塞

阻塞I/O:执行的系统调用方法还没有完成就被操作系统挂起(当前的条件不满足时),直到等待的事件发生为止。非阻塞I/O:执行的系统调用总是立即返回,不会被操作系统挂起(不管条件是否满足),时间到了,如果事件没有立即发生,就会返回-1,在时间没到的时候会轮询检查数据是否处理完成。同步:指进程调用接口后,需要等待接口处理完数据后并返回进程才能继续执行。 重点是,数据处理完 并返回异步:指...

2019-06-02 16:27:45

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。