自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创

char **g_res;int idx;#define MAXNUM 10000void Dfs(struct TreeNode *root, char *str){ if (!root) { //idx = 0; return; } if (!root->left && !root->right) { char *mid = (char *)malloc(sizeof(char) * 2); ...

2020-08-05 08:14:55 300

原创 堆排序(未调好)

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<ctype.h>#include<math.h>#include<stdbool.h>void Swap(int *nums, int a, int b){ int midNum = nums[a]; nums[a] = nums[b]; nums[b] = midNum;.

2020-06-29 08:16:40 436

原创 2020-06-22

#coding=utf-8one, two, oF, tF = {}, {}, {}, {} #one, 字符串: 数字 都是唯一数据… oF 相反list1, list2 = [], [] # 循环的数据 可以重复定义的.oneStr, oneInt, twoStr, twoInt = [], [], [], []obj = {} #最终输出数据fo = open("./1.txt", “r”)fo2 = open("./2.txt", “r”)def outDict(str,

2020-06-22 11:18:12 342

转载 指针、数组作为函数参数传递的方式

指针作为函数参数传递一维数组C 语言中声明了一个数组TYPE array[n],则数组名称array 就有了两重含义:第一,它代表整个数组,它的类型是TYPE[n];第二,它是一个常量指针,该指针的类型是TYPE*,该指针指向的类型是TYPE。因此,指针作为函数参数传递一维数组有4种形式:#include <stdio.h>#define N 3float average1(float * g); float average2(float grade[N]); int

2020-06-21 16:56:43 4246

转载 leet

char*addBinary(char*a,char*b){char*res=(char*)malloc(sizeof(char)*10000);memset(res,'0',sizeof(char)*10000);intaLen=strlen(a);intbLen=strlen(b);//intrecord=abs(aLen-bLen);intstrMaxLen=aLen&...

2020-05-27 08:18:19 175

转载 [算法总结] 二分查找

二分查找法作为一种常见的查找方法,将原本是线性时间提升到了对数时间范围,大大缩短了搜索时间,但它有一个前提,就是必须在有序数据中进行查找。二分查找很好写,却很难写对,据统计只有10%的程序员可以写出没有bug的的二分查找代码。出错原因主要集中在判定条件和边界值的选择上,很容易就会导致越界或者死循环的情况。下面对二分查找及其变形进行总结:1. 最基本的二分查找public int ...

2019-08-30 14:52:27 195

转载 深入理解数据库索引采用B树和B+树的原因

https://blog.csdn.net/qq_35571554/article/details/82796278

2019-08-28 00:26:56 201

转载 深入浅出数据库索引原理

前段时间,公司一个新上线的网站出现页面响应速度缓慢的问题, 一位负责这个项目的但并不是搞技术的妹子找到我,让我想办法提升网站的访问速度 ,因为已经有很多用户来投诉了。我第一反应觉的是数据库上的问题,假装思索了一下,摆着一副深沉炫酷的模样说:“是不是数据库查询上出问题了, 给表加上索引吧”,然后妹子来了一句:“现在我们网站访问量太大,加索引有可能导致写入数据时性能下降,影响用户使用的”。当时我就楞了...

2019-08-27 23:57:58 156

转载 多线程的优缺点及线程池的引入

简介典型的 UNIX 进程可以看作只有一个工作线程,CPU 在执行任务时实际上是在调度这些线程(线程是操作系统最小的执行单位),每一个线程都是由创建他的进程所管理,进程为线程分配资源,一个进程中的所有线程共享本进程数据,但每个线程也有自己私有的数据(线程ID、一组寄存器、栈、errno、信号屏蔽字、调度优先级)举个例子:操作系统相当于地主(CPU 负责调度,进程负责管理线程),进程相当于地主...

2019-08-23 15:05:41 575

转载 mysql之三范式简述

目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。一般说来,数据库只需满足第三范式(3NF)就行了。下面用画图方式简单介绍下前三范式1NF:无重复的列,每一列都是不可分割的基本数据项,同一 列中不能有多个值,即实体中的某个属性不能有多个值或者不 能有重复的属性。除去同类型的字段...

2019-08-22 23:23:33 199

转载 HTTP请求过程

1、HTTP请求和响应格式1.1.http请求格式  http请求格式由四部分组成:请求行、请求头、空行、消息体    请求行:是请求消息的第一行,由请求方式(GET/POST/DELETE/PUT)、请求资源路径、http版本号组成  请求头:请求头中的信息有和缓存相关的头(Cache-Control,If-Modified-Since)、客户端身份信息(User-Agent...

2019-08-19 20:57:45 212

转载 一次web请求过程

一次 Web 请求到底发生了什么一、从输入一个网址开始当我们在浏览器输入一个网址,然后按下回车,接下来浏览器显示了页面。网速好的话这之间可能就一秒,但在这一秒内到底发生了什么?本文主要内容是试图记录一个完整 Web 请求的详细过程,从用户在浏览器中输入 URL 地址说起,然后浏览器如何找到服务器地址的过程,并发起请求;分析请求在达反向代理服务器内部处理过程;最后到请求在服务器端处...

2019-08-19 20:57:17 304

转载 Linux下内存泄漏工具

概述  内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况,在大型的、复杂的应用程序中,内存泄漏是常见的问题。当以前分配的一片内存不再需要使用或无法访问时,但是却并没有释放它,这时就出现了内存泄漏。尽管优秀的编程实践可以确保最少的泄漏,但是根据经验,当使用大量的函数对相同的内存块进行处理时,很可能会出现内存泄漏。  内存泄露可以分为以下几类:  1...

2019-08-19 18:32:02 158

转载 STL vector的内部实现原理及基本用法

本文基于STL vector源代码,但是不考虑分配器allocator,迭代器iterator,异常处理try/catch等内容,同时对_Ucopy()、 _Umove()、 _Ufill()函数也不会过度分析。一、vector的定义template<class _Ty, class _Ax> class vector : public _Vect...

2019-08-19 18:04:46 559

转载 缺页中断与页面置换算法

1 缺页中断:  进程线性地址空间里的页面不必常驻内存,在执行一条指令时,如果发现他要访问的页没有在内存中(存在位为0),那么停止该指令的执行,并产生一个页不存在异常,对应的故障处理程序可通过从外存加载该页到内存的方法来排除故障,之后,原先引起的异常的指令就可以继续执行,而不再产生异常。2 页面置换算法:  页式虚拟存储器实现的一个难点是设计页面调度(置换)算法,即将新页面调入内存时,...

2019-08-19 12:01:01 1532

转载 C++ 空间配置器(allocator)

在STL中,Memory Allocator 处于最底层的位置,为一切的 Container 提供存储服务,是一切其他组件的基石。对于一般使用 STL 的用户而言,Allocator 是不可见的,如果需要对 STL 进行扩展,如编写自定义的容器,就需要调用 Allocator 的内存分配函数进行空间配置。在C++中,一个对象的内存配置和释放一般都包含两个步骤,对于内存的配置,首先是调用oper...

2019-08-18 21:38:02 712

转载 CGI技术原理

一、CGI技术1.1 CGI的提出  CGI是外部扩展应用程序与WWW服务器交互的一个标准接口。按照CGI标准编写的外部扩展应用程序可以处理客户端(一般是WWW浏览器)输入的协同工作数据,完成客户端与服务器的交互操作。这在实际应用中非常有用,如可以编写CGI外部扩展程序来访问外部数据库,客户端用户可以通过它和WWW服务器来进行数据查询。CGI一般分两种:标准CGI和缓冲CGI。所有的WWW服务...

2019-08-16 22:59:04 737

转载 linux之dup和dup2函数解析

理论介绍:1. 文件描述符在内核中数据结构在具体说dup/dup2之前,我认为有必要先了解一下文件描述符在内核中的形态。一个进程在此存在期间,会有一些文件被打开,从而会返回一些文件描述符,从shell中运行一个进程,默认会有3个文件描述符存在(0、1、2), 0与进程的标准输入相关联,1与进程的标准输出相关联,2与进程的标准错误输出相关联,一个进程当前有哪些打开的文件描述符可以通过/proc...

2019-08-16 22:50:52 230

转载 Linux下execl函数学习

Linux下头文件#include <unistd.h>函数定义int execl(const char *path, const char *arg, ...);函数说明:execl()其中后缀"l"代表list也就是参数列表的意思,第一参数path字符指针所指向要执行的文件路径, 接下来的参数代表执行该文件时传递的参数列表:argv[0],argv[1]... 最后一个参...

2019-08-16 22:44:34 747

转载 深入了解epoll 函数

一、 介绍Epoll 是一种高效的管理socket的模型,相对于select和poll来说具有更高的效率和易用性。传统的select以及poll的效率会因为 socket数量的线形递增而导致呈二次乃至三次方的下降,而epoll的性能不会随socket数量增加而下降。标准的linux-2.4.20内核不支持epoll,需要打patch。本文主要从linux-2.4.32和linux-2.6.10两...

2019-08-16 21:21:46 473

转载 epoll_create, epoll_ctl和epoll_wait 函数用法实例讲解,总结得不错

http://apps.hi.baidu.com/share/detail/31300135NAME epoll - I/O event notification facilitySYNOPSIS #include <sys/epoll.h>DEscrīptION epoll is a variant of poll(2) that c...

2019-08-16 21:15:45 2864

原创 动态规划三种写法

Leetcode 198你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (...

2019-08-16 15:33:02 308

转载 linux下epoll实现机制

linux下epoll实现机制原作者:陶辉链接:http://blog.csdn.net/russell_tao/article/details/7160071先简单回顾下如何使用C库封装的select系统调用吧int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct ...

2019-08-16 12:24:45 253

转载 MVCC简介

1. MVCC简介1.1 什么是MVCCMVCC是一种多版本并发控制机制。1.2 MVCC是为了解决什么问题?大多数的MYSQL事务型存储引擎,如,InnoDB,Falcon以及PBXT都不使用一种简单的行锁机制.事实上,他们都和MVCC–多版本并发控制来一起使用. 大家都应该知道,锁机制可以控制并发操作,但是其系统开销较大,而MVCC可以在大多数情况下代替行级锁,使用MVCC,...

2019-08-14 22:33:39 2061

转载 MySQL——事务(Transaction)详解

一、事务定义Transaction事务:一个最小的不可再分的工作单元;通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务就是一个最小的工作单元)一个完整的业务需要批量的DML(insert、update、delete)语句共同联合完成事务只和DML语句有关,或者说DML语句才有事务。这个和业务逻辑有关,业务逻辑不同,DML语句的个数不同二、转账操作理解事务关于银行账户转账操作...

2019-08-14 21:41:10 299

转载 MySQL 事务

MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。 事务用来管...

2019-08-14 21:32:25 98

转载 Mysql的复制原理以及流程

MySQL复制概述简单来说就是保证主服务器(Master)和从服务器(Slave)的数据是一致性的,向Master插入数据后,Slave会自动从Master把修改的数据同步过来(有一定的延迟),通过这种方式来保证数据的一致性,就是Mysql复制Mysql 复制能解决什么问题一、高可用和故障切换复制能够帮避免MySql单点失败,因为数据都是相同的,所以当Master挂掉后,可以指定一台...

2019-08-14 21:18:55 194

转载 mysql外键的使用

一早就知道有mysql有外键这回事,但是貌似平时的项目中用到的并不多,以至于我没有去研究过这个东西,也不知道该怎么用。当然也不清楚对性能的影响。这篇文章先搞清楚外键的作用。首先来添加一张表,做为测试要用的一张参考表。CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) D...

2019-08-14 20:33:33 109

原创 58.左旋转字符串

题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!class Solution {public: string LeftRotate...

2019-08-14 13:14:34 92

原创 翻转单词顺序列

题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?使用栈clas...

2019-08-14 11:55:10 82

转载 后台面试经典问题-Epoll的两种触发方式

水平触发LT和边缘触发ET其中LT就是与select和poll类似,当被监控的文件描述符上有可读写事件发生时,epoll_wait()会通知处理程序去读写。如果这次没有把数据一次性全部读写完(如读写缓冲区太小),那么下次调用 epoll_wait()时,它还会通知你在上次没读写完的文件描述符上继续读写ET:当被监控的文件描述符上有可读写事件发生时,epoll_wait()会...

2019-08-13 22:21:57 221

转载 并发编程(IO多路复用)

cai128118*并发编程(IO多路复用)阅读目录一 IO模型介绍 二阻塞IO(blocking IO) 三非阻塞IO(non-blocking IO) 四 多路复用IO(IO multiplexing) 五 异步IO(Asynchronous I/O) 六 IO模型比较分析 七 selectors模块IO模型介绍  为了更好地了解IO模型,我们需要事先回顾下:...

2019-08-13 22:12:14 140

原创 57.和为S的连续正数序列

题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数...

2019-08-12 15:41:36 80

原创 57.和位S的数字

题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。解答:双指针class Solution {public: vector<int> FindNumbersWithSum(vector<int> arra...

2019-08-12 15:40:20 98

原创 55.平衡二叉树

题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。class Solution {public: bool IsBalanced_Solution(TreeNode* pRoot) { if(!pRoot) return true; int C1 = TreeDepth(pRoot->left); int C2 = Tr...

2019-08-11 17:00:37 93

原创 二叉搜索树的第k个结点

题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。解析:二叉搜索树按照中序遍历的顺序打印出来正好就是排序好的顺序。所以,按照中序遍历顺序找到第k个结点就是结果。class Solution {public: int count_Node = 1; TreeNode* ...

2019-08-10 18:56:41 75

转载 C++常用查找算法总结(一)

查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找,字段的查找,等等。1、查找算法总结(1). 最容易理解的查找算法,顺序查找法 说明:顺序查找适合于存储结构为顺序存储或链接存储的线性表。  基本思想:顺序查找也称为线形查找,属于无序查找算法。从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值k...

2019-08-10 11:39:12 282

转载 C++内存池(附源码)

C++内存池(附源码)前段时间阅读了Nginx的源码,其对内存高效的管理给我留下了深刻的印象,而内存管理的核心便是内存池。于是想自己实现一个C++版本的内存池,这方面当然还是STL的内存池最为经典,所以免不了参悟借鉴。内存池的概念早已经是老生常谈,然而把内存池实现的高效安全仍是个比较艰巨的问题。内存池的原理简单来讲就是一次性的向系统申请大量的内存,之后再有内存请求的时候,如果内存池的内存大小能够...

2019-08-09 22:45:15 414

原创 两个链表的第一个公共结点

题目描述输入两个链表,找出它们的第一个公共结点。解答:找出2个链表的长度,然后让长的先走两个链表的长度差,然后再一起走(因为2个链表用公共的尾部)/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solu...

2019-08-09 17:54:42 137

原创 字符流中第一个不重复的字符

题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。class Solution{public: string s; map<...

2019-08-09 12:43:26 97

空空如也

空空如也

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

TA关注的人

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