自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

陈实Yepper

CODE IS LAW.

  • 博客(66)
  • 收藏
  • 关注

原创 python使用小结

random.sample(A,B)从A中随机取出B个eval(A)A是一个表达式,返回表达式的值

2019-12-20 09:39:37 159

转载 数据库的三大范式

范式:英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。目前有迹可寻的共有8种范式,依次是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。通常所用到的只是前三个范式,即:第一范式(1NF),第二范式(2NF)...

2019-08-25 10:16:27 248

原创 SQL

SQL语句及其种类根据RDBMS赋予的指令种类的不同,SQL语句主要分为以下三类:DDL,数据定义语言创建或者删除存储数据用的数据库及数据库中的表对象CREATE、DROP、ALTERDML,数据操纵语言,使用最多查询或者变更表中的记录SELECT、INSERT、UPDATE、DELETEDCL,数据控制语言确认或者取消对数据库中的数据进行的变更COMMIT:确认对数据库中的数...

2019-08-25 10:05:52 174

原创 Linux查看进程的目录

一、找到进程的pid(假设进程为nginx)top命令查看或者ps -ef |grep nginx二、查看nginx的进程目录ll /proc/进程号cwd 进程运行目录exe 执行程序的绝对路径cmdline 程序运行时输入的命令行命令environ 记录了进程运行时的环境变量fd 目录下是进程打开或使用的文件的符号连接...

2019-04-13 19:35:08 1399

原创 内存对齐原则

内存对齐的原因1、平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的,某些硬件平台只能在某些地址处取得某些特定类型的数据,否则抛出硬件异常。2、性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问,而对齐的内存访问仅需要访问一次。cpu把内存当成是一块一块的,块的大小可以是2,4,8,16 个字节,因此CPU...

2019-04-13 16:06:39 150

原创 Linux命令整理

cat和taccat:由第一行开始显示内容,并将所有内容输出cat -n:cat+显示行号,和nl功能一样tac:从最后一行倒序显示内容,并将所有内容输出more和lessmore:将文件从第一行开始,根据窗口大小,适当地显示文件内容,一页无法全部输出时,可用回车键向下翻一行,或者空格键向下翻页,无法向前翻页less:功能和more类似,可以用pageup和pagedown前后翻页h...

2019-04-13 15:54:41 122

转载 SSL工作原理

1、概述1.1 产生背景基于万维网的电子商务和网上银行等新兴应用,极大地方便了人们的日常生活。受到人们的青睐。因为这些应用都须要在网络上进行在线交易,它们对网络通信的安全性提出了更高的要求。传统的万维网协议HTTP不具备安全机制——採用明文的形式数据传输、不能验证通信两方的身份、无法防止传输的数据被篡改等,导致HTTP无法满足电子商务和网上银行等应用的安全性要求。Netscape公司提出的...

2019-03-28 10:26:21 384

原创 TCP的连接机制

一、三次握手(1)客户端将标志位SYN置为1,随机产生一个值seq=J,并将该数据报发动给服务器,客户端进入SYN—SENT状态,等待服务器端确认。(2)服务器收到数据报后由标志位SYN=1知道客户端请求建立连接,服务器端将SYN和ACK置为1,ack=J+1。随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。(3)Client收...

2019-03-18 20:21:59 623

原创 strlen和sizeof的区别总结

sizeof是运算符/操作符,结果类型为size_t,在头文件中typedef为unsigned int类型,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。该类型保证能容纳所建立的最大对象的字节大小、strlen是函数,要在运行时才能计算。参数必须是字符型指针。当数组名作为参数传入时,实际上数组就退化成指针了。...

2019-02-23 11:27:41 189

原创 剑指offer(十六):合并两个排序的链表

题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。分析:递归:先判断输入的链表是否为空的指针。如果第一个链表为空,则直接返回第二个链表;如果第二个链表为空,则直接返回第一个链表。如果两个链表都是空链表,合并的结果是得到一个空链表。两个链表都是排序好的,只需从头遍历链表,判断当前指针,哪个链表中的值小,即赋给合并链表指针即可。代码:/...

2019-01-23 21:58:49 155

原创 剑指offer(十三):调整数组顺序使奇数位于偶数前面

题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。分析:第一种做法:类似于冒泡排序。两层循环,从尾到头依次交替偶数和奇数的位置。缺点:浪费了时间复杂度。第二种做法:新建一个数组,存放偶数,然后再依次加到奇数数组中。缺点:浪费了空间复杂度。代码:class ...

2019-01-18 22:01:45 102

原创 剑指offer(十四):链表中倒数第k个结点

题目描述:输入一个链表,输出该链表中倒数第k个结点。分析:双指针法。讨论这样一种情况:链表有5个结点:1-2-3-4-5求倒数第1个,也就是正数第5个——1+5-1=5求倒数第2个,也就是正数第4个——2+4-1=5求倒数第3个,也就是正数第3个——3+3-1=5求倒数第4个,也就是正数第2个——4+2-1=5求倒数第5个,也就是正数第1个——5+1-1=5可以发现倒数第k个...

2019-01-18 20:31:52 165

原创 剑指offer(十五):反转链表

题目描述:输入一个链表,反转链表后,输出新链表的表头。分析:迭代是从前往后依次处理,直到循环到链尾;而递归恰恰相反,首先一直迭代到链尾也就是递归基判断的准则,然后再逐层返回处理到开头。总结来说,链表翻转操作的顺序对于迭代来说是从链头往链尾,而对于递归是从链尾往链头。参考https://blog.csdn.net/fx677588/article/details/72357389需...

2019-01-17 22:21:58 157

原创 剑指offer(十一):二进制中1的个数

题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。分析:二进制在内存中以32位存在,取出每一位判断是否为1,这里会用到 &运算 和 右移 运算符 。 如果用循环,需要循环32次,效率低。首先判断n是不是负数,当n为负数的时候,直接用后面的while循环会导致死循环,因为负数向左移位的话最高位补1 !可以将最高位的符号位1变成0,也就是n & 0x7...

2019-01-17 20:41:10 112

原创 剑指offer(十):矩形覆盖

题目描述:我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?分析:图片截取自https://cuijiahua.com/blog/2017/11/basis_10.html,感谢。代码:class Solution {public: int rectCover(int number) { ...

2019-01-16 21:57:59 239

原创 剑指offer(九):变态跳台阶

题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。分析:总结规律:f(1)=1;f(2)=2;f(3)=4;f(4)=8;…f(n)=2*f(n-1)代码:class Solution {public: int jumpFloorII(int number) { int f = 1...

2019-01-16 21:36:50 147

原创 剑指offer(八):跳台阶

题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。分析:f(1) = 1, f(2) = 2, f(3) = 3, f(4) = 5, 可以总结出f(n) = f(n-1) + f(n-2)的规律,但是为什么会出现这样的规律呢?假设现在7个台阶,我们可以从第6跳一步到7,这样的话有多少种方案跳到6就有多少种方案...

2019-01-16 21:22:30 243

原创 剑指offer(七):斐波那契数列

题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39分析:这题挺简单的,一直递归。第三项起,每一项都是前面所有的和。代码:class Solution {public: int Fibonacci(int n) { if(n==0) return 0; ...

2019-01-16 21:09:03 216

原创 剑指offer(六):旋转数组的最小数字

题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。分析:定义三个指针,头、尾和中间。比较中间值和头尾值的大小关系,根据比较的结果将左或右指针移动到中间位置。...

2019-01-16 20:46:40 207

原创 剑指offer(五)番外篇:用两个队列实现一个栈

剑指offer(五):用两个栈实现一个队列分析:入栈时,直接压入queue1中。出栈时,先将queue1中的元素除最后一个元素外依次出队列,并压入队列queue2中,将留在queue1中的最后一个元素出队列即为出栈元素,最后还要把queue2中的元素再次压入queue1中。代码:class Solution{public: void push(int node){ queue1...

2019-01-12 21:30:17 113

原创 剑指offer(五):用两个栈实现一个队列

题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。分析:创建两个栈stack1和stack2,使用两个**“先进后出”的栈实现一个“先进先出”的队列**。我们通过一个具体的例子分析往该队列插入和删除元素的过程。首先插入一个元素a,不妨先把它插入到stack1,此时stack1中的元素有{a},stack2为空。再压入两个元素b和c,还是插入到st...

2019-01-12 21:12:30 133

原创 剑指offer(二):替换空格

题目描述:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。分析:从前向后记录空格数目,从后向前替换空格。由于要在空格处替换成%20,所以可以知道,替换后整个字符串长度增加了两倍总空格数。在从后往前替换空格的时候,需要注意,非空格处往后移动2* 空格数个位置。 空格处的空格(可以...

2019-01-12 20:42:08 85

原创 剑指offer(一):二维数组中的查找

题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。分析:二维数组的定义:最直观的解题思路是找到一个数和target对比,如果大或者小,接下来怎么办。但是,找到比较的数,这个数的选择是关键的。因为比较完只能有三个结果:相等则return,...

2019-01-12 17:06:11 107

原创 剑指offer(四):重建二叉树

题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。分析:根据前序遍历和中序遍历可以确定一棵树。前序遍历的第一个点是根节点,根据这个点在中序遍历序列中将中序遍历序列分成两半。依次对左右子树进行重建...

2019-01-11 20:59:35 249 2

原创 剑指offer(三):从头到尾打印链表

题目描述:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。分析:通常,这种情况下,我们不希望修改原链表的结构。返回一个反序的链表,这就是经典的“后进先出”,我们可以使用栈实现这种顺序。每经过一个结点的时候,把该结点的值放到一个栈中。当遍历完整个链表后,再从栈顶开始逐个输出结点的值,给一个新的链表结构,这样链表就实现了反转。代码:/*** struct ListNode...

2019-01-09 22:17:40 106

原创 剑指offer()滑动窗口的最大值

题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5...

2018-12-27 21:24:40 373

原创 剑指offer()数据流中的中位数

题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。分析如果数据在容器中已经排好序,那么中位数可以由P1和P2指向的数得到。如果数据个数为奇数个,则P1和P...

2018-12-24 21:24:52 290

原创 priority_queue用法(大顶堆,小顶堆)总结

Priority queuesare a type of container adaptors(容器适配器), specifically designed such that its first element is always the greatest of the elements it contains, according to some strict weak ordering cr...

2018-12-24 20:33:36 6078

原创 C++中堆的应用:make_heap, pop_heap, push_heap, sort_heap

C++中堆的应用:make_heap, pop_heap, push_heap, sort_heap函数说明:std::make_heap将[start, end)范围进行堆排序,默认使用less, 即最大元素放在第一个。std::pop_heap将front(即第一个最大元素)移动到end的前部,同时将剩下的元素重新构造成(堆排序)一个新的heap。std::push_heap对刚插入的...

2018-12-23 21:09:46 332

转载 容器适配器之priority_queue用法总结

不出所料,priority_queue 容器适配器定义了一个元素有序排列的队列。默认队列头部的元素优先级最高。因为它是一个队列,所以只能访问第一个元素,这也意味着优先级最高的元素总是第一个被处理。但是如何定义“优先级”完全取决于我们自己。如果一个优先级队列记录的是医院里等待接受急救的病人,那么病人病情的严重性就是优先级。如果队列元素是银行的借贷业务,那么借记可能会优先于信贷。priority_q...

2018-12-23 20:43:03 1627

转载 容器适配器之queue用法总结

只能访问 queue 容器适配器的第一个和最后一个元素。只能在容器的末尾添加新元素,只能从头部移除元素。许多程序都使用了 queue 容器。queue 容器可以用来表示超市的结账队列或服务器上等待执行的数据库事务队列。对于任何需要用 FIFO 准则处理的序列来说,使用 queue 容器适配器都是好的选择。图 1 展示了一个 queue 容器及其一些基本操作:queue 的生成方式和 sta...

2018-12-23 16:51:08 1149

转载 容器适配器之stack用法总结

容器适配器是一个封装了序列容器的类模板,它在一般序列容器的基础上提供了一些不同的功能。之所以称作适配器类,是因为它可以通过适配容器现有的接口来提供不同的功能。stack容器适配器中的数据是以 LIFO 的方式组织的,这和自助餐馆中堆叠的盘子、箱子中的一堆书类似。图 1 展示了一个理论上的 stack 容器及其一些基本操作。只能访问 stack 顶部的元素;只有在移除 stack 顶部的元素后,才...

2018-12-23 16:29:58 1809

转载 堆的用法总结

堆(heaps)不是容器,而是一种特别的数据组织方式。堆一般用来保存序列容器。堆很重要,很多不同的计算机进程中都使用了它们。为了弄明白堆是什么,首先需要明白树是什么,因此首先说明树这种数据结构是什么。树是分层排列的元素或节点。每个节点有一个键,它是节点中所保存的对象,就如同链表中的节点。父节点是有一个或两个子节点的节点。一般父节点可以有任意个数的子节点,树中的父节点不需要有相同个数的子节点。...

2018-12-22 22:04:38 2355

原创 剑指offer()正则表达式匹配

题目描述请实现一个函数用来匹配包括’.‘和’ * ‘的正则表达式。模式中的字符 ‘.’ 表示任意一个字符,而’ * '表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配分析这题有点绕

2018-12-22 20:52:04 104

原创 剑指offer()整数中1出现的次数(从1到n整数中1出现的次数)

题目描述求出1到13的整数中1出现的次数,并算出100到1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。分析设定1、10、100、1000…为中间点,分别考虑个位、十位、百位上...

2018-12-21 22:49:31 1668

原创 字典序排列算法

我们先来看一个例子。1 2 3的全排列如下:1 2 3 , 1 3 2 , 2 1 3 , 2 3 1 , 3 1 2 , 3 2 1我们这里是通过字典序法找出来的。那么什么是字典序法呢?从上面的全排列也可以看出来了,从左往右依次增大,对这就是字典序法。可是如何用算法来实现字典序法全排列呢?我们再来看一段文字描述:(用字典序法找124653的下一个排列)如果当前排列是124653,找...

2018-12-20 20:46:14 2092 1

原创 剑指offer()扑克牌顺子

题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张...

2018-12-20 10:11:50 102

原创 计算机的中断

熟悉Windows的人都知道,在系统设置中,几乎没有硬件都涉及到一些IRQ号,这些IRQ号是什么意思呢?IRQ(Interupt Request)——中断请求号。什么是计算机中断?计算机中断——顾名思义,就是计算机由于遇到一些紧急情况,中断现在的工作,转而处理紧急情况,处理完紧急情况以后再回到以前执行的工作继续执行。不过这只是狭义的计算机中断概念。因为这个概念只能解释内部中断和外部中断,然而对于...

2018-12-17 19:59:18 2328

原创 剑指offer()构建乘积数组

题目描述给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。分析由图,可以知道,分两步循环:(1)左下三角从1到n-1循环,连乘;(2)右上角从n-1到1循环,连乘。代码class Solution {public: vector<int&g...

2018-12-12 21:44:13 109

转载 A summary: how to use bit manipulation to solve problems easily and efficiently

Bit manipulation is the act of algorithmically manipulating bits or other pieces of data shorter than a word. Computer programming tasks that require bit manipulation include low-level device control,...

2018-12-11 19:53:03 297

空空如也

空空如也

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

TA关注的人

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