自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(133)
  • 问答 (1)
  • 收藏
  • 关注

转载 使用PDB断点调试Python程序

pdb是Python自带的类gdb、cdb的调试工具。在Sublime Text的SublimeREPL插件提供了pdb调试应用程序的功能,但是由于手上项目package太过复杂,所以这次我就直接在Django代码要调试的地方插入pdb代码,这样相当于直接在那个地方下了一个断点。可以在任何地方插入如下代码进行中断,即使是Django也能通过这种方式进行调试:import pdb; pdb.set_trace()pdb常用命令:n:执行下一行s:执行下一行,如果有函数,会进入函数体c:让程序正

2020-07-30 14:51:29 713

原创 最长回文串

https://leetcode-cn.com/problems/longest-palindromic-substring/solution/xiang-xi-tong-su-de-si-lu-fen-xi-duo-jie-fa-bao-gu/

2019-08-20 10:22:24 172

原创 序列化和反序列化、以及反序列化注入问题要点

所有你想要的东西都标着价格序列化的实体是个对象,结果也是个对象,并非是格式化文本,你在记事本里看到的购物信息保存记录,其实不是对象序列化的结果,而是对象输出的格式化文本,真正的序列化对象是看不懂的。序列化的应用场景在实际使用对象序列化时,一种应用场景是将对象序列化到持久化存储(本地硬盘),我们此时不想做文件解析,也不想有人读懂这个持久化文件,当我们需要时,可以直接采用反序列化将保存的文件...

2019-07-04 23:08:13 1603

原创 读锁和写锁

共享锁(S锁)又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S 锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。排他锁(X锁)又称写锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁。这保证了其他事务在T释放A上的锁之前不能再读取和修...

2019-07-03 22:23:26 15785 3

原创 笔试

头条笔试题目1. 三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello2. 两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo -> hello3. 上面的规则优先“从左到右”匹配,即如果是AABBCC,虽然AABB和BBCC都是错误拼写,应该优先考虑修复AABB,结果为AABCCimp...

2019-06-30 10:42:52 246

转载 排序算法总结

冒泡排序基本思想冒泡排序通过相邻的元素之间的互相比较,将最小的元素“冒泡”到数组最前面。例如4,1,5,9,3,2,首先2跟3比较,变成4,1,5,9,2,3,再2跟9比较并交换,变成4,1,5,2,9,3,再2跟5比较交换,变成4,1,2,5,9,3,再2跟1比较不需要交换,最后1跟4比较并交换,因此进行一次冒泡后的数组变成1,4,2,5,9,3。算法实现 void bubbleSor...

2019-05-27 22:01:32 138

转载 HTTP2.0新特性

HTTP----HTTP2.0新特性前言HTTP2.0大幅度的提高了web性能,在HTTP1.1完全语意兼容的基础上,进一步减少了网络的延迟。实现低延迟高吞吐量。对于前端开发者而言,减少了优化工作。本文将重点围绕以下几点新特性的作用、工作过程以及如何更出色的完成了优化工作来介绍HTTP2.0二进制分帧首部压缩流量控制多路复用请求优先级服务器推送二进制分帧在不改变HTTP1.x的...

2019-05-27 11:03:58 2455

转载 HTTP长连接、短连接究竟是什么?

HTTP协议与TCP/IP协议的关系HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。 IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠地传递数据包,使得网络上接收端收到发送端所发出的所有包,并且顺序与发送顺序一致。TCP协议是可靠的、面向连接的。如何理解HTTP协议是无状态的HTTP...

2019-05-26 19:54:30 270

转载 正则表达式匹配

题目描述请实现一个函数用来匹配包括’.’和’’的正则表达式。模式中的字符’.’表示任意一个字符,而’’表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”abaca”匹配,但是与”aa.a”和”ab*a”均不匹配解题思路当模式中的第二个字符不是“*”时:1、如果字符串第一个字符和模式中的第一个字符相匹配,那...

2019-05-20 22:15:50 106

转载 剑指Offer-41-平衡二叉树

题目输入一棵二叉树,判断该二叉树是否是平衡二叉树。解析预备知识平衡二叉树:它是一棵空树,或者它的左右子树的高度差不超过1,同时它的左右子树为一棵二叉树。而衡量树和平衡因子说的就是左右子树的高度差,可以为0,1,-1。如下图它就是一棵平衡二叉树:思路一如何判断一棵树是否是平衡二叉树呢?可以根据预备知识的定义出发,我们只需确保树的左右子树的高度差不超过2即可,同样它的左右子树也要满足这样的...

2019-05-17 16:53:06 87

转载 二叉树的子树和子结构

二叉树的子树和子结构子树的意思是只要包含了一个结点,就得包含这个结点下的所有节点.子结构的意思是包含了一个结点,可以只取左子树或者右子树,或者都不取。简单而言,与子树不同的是,子结构可以是A树的任意一部分。这里以一颗7节点,高度为3的满二叉树为例,说明子树和子结构的差别:图11.图1的子树示意图对于图1而言,子树意味着图2,图3等情况。根据定义非常好理解。图2 图1子树的某一种...

2019-05-15 09:48:26 4070

转载 归并排序

归并排序介绍将两个的有序数列合并成一个有序数列,我们称之为"归并"。归并排序(Merge Sort)就是利用归并思想对数列进行排序。根据具体的实现,归并排序包括"从上往下"和"从下往上"2种方式。从下往上的归并排序:将待排序的数列分成若干个长度为1的子数列,然后将这些数列两两合并;得到若干个长度为2的有序数列,再将这些数列两两合并;得到若干个长度为4的有序数列,再将它们两两合并;直接合并...

2019-03-24 10:47:29 116

转载 关于java中的“error: bad operand types for binary operator ”

今天做这个题目的时候(142. O(1) Check Power of 2),遇到一个错误“ bad operand types for binary operator ‘&’ ”。先贴一下代码:复制代码public class Solution { /** * @param n: An integer * @return: True or false ...

2019-03-17 11:24:27 7527

转载 Error:On branch master Untracked files: .idea/ out/ wenda.iml nothing added to commit but untrack

这是git没有把提交的文件加载进来,但是把需要提交的文件都列出来了,只需要用git add XXX(文件名) 把需要提交的文件加上 ,然后git commit -m “xx”,再git push -u origin master重新提交就可以了git add .是把你修改的东西添加到本地仓库,Git提交过程有3个环节:本地 本地仓库 远程 ,只有把本地修改的东西,添加到 . 目录下,表明你修改的...

2019-03-13 10:57:09 4708 1

原创 线性结构

线性结构是一个有序数据元素的集合。常用的线性结构有:线性表,栈,队列,双队列,数组,串。关于广义表,是一种非线性的数据结构。常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图。特征1.集合中必存在唯一的一个"第一个元素";2.集合中必存在唯一的一个"最后的元素";3.除最后元素之外,其它数据元素均有唯一的"后继";4.除第一元素之外,其它数据元素均有唯一的&qu

2019-03-05 22:07:10 194

原创 java中类和方法

1,抽象类中可以有抽象方法,也可以没有抽象方法。2,抽象类当然可以被继承,因为它就是用来继承的,3,继承抽象类,若有抽象方法,则子类必须将其抽象方法实现,4,抽象类中的非抽象方法可以被重写。最终类和抽象类正好相反5,加上final的类就叫最终类,加上final的方法就叫最终方法,6,最终类中可以有最终方法也可以没有7,最终类不能有子类,最终方法不能被重写...

2019-03-05 22:02:41 1180

原创 [剑指offer] 丑数

题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。解题思路判断一个数是不是丑数,最简单的方法就是让这个数不断除以2,3,5。要求第N个丑数,只要从1开始,依次判断每个数是不是丑数,如果是,则相应的序号加1,直到序号为N,就是我们要的丑数了。但是这种方法时...

2019-03-05 20:30:30 94

原创 [剑指offer] 把数组排成最小的数

题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。解题思路先将数组转换成字符串数组,然后对字符串数组按照规则排序,最后将排好序的字符串数组拼接出来。关键就是制定排序规则:若ab > ba 则 a > b若ab < ba 则 a <...

2019-03-05 16:54:39 90

原创 [剑指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法二...

2019-03-05 15:41:11 110

原创 [剑指offer] 连续子数组的最大和

题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长度...

2019-03-05 15:19:24 97

转载 Java中的集合Queue、LinkedList、PriorityQueue

Queue接口  Queue用于模拟了队列这种数据结构,队列通常是指“先进先出”(FIFO)的容器。队列的头部保存在队列中时间最长的元素,队列的尾部保存在队列中时间最短的元素。新元素插入(offer)到队列的尾部,访问元素(poll)操作会返回队列头部的元素。通常,队列不容许随机访问队列中的元素。Queue接口中定义了如下几个方法:void add(Object e);   //将指定元...

2019-03-05 11:38:04 266

原创 [剑指offer] 最小的K个数

题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。解题思路两种方法:法1:先对数组排序,然后取出前k个法2:利用最大堆保存这k个数,每次只和堆顶比,如果比堆顶小,删除堆顶,新数入堆。参考代码法1:import java.util.ArrayList;import java.util.Arrays;pu...

2019-03-05 11:12:44 86

原创 [剑指offer] 数组中出现次数超过一半的数字

题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。解题思路三种解法:法1:借助hashmap存储数组中每个数出现的次数,最后看是否有数字出现次数超过数组长度的一半;法2:排序。数组排序后,如果某个数字出现次数超过数组的长度...

2019-03-05 10:21:32 121

转载 递归实现全排列问题

目录描述思路代码输出正文描述问题是有一组数R,需要输出它的全排列。R的递归可定义如下:当个数n为1时,Perm® = ®,其中r是集合R中唯一的元素当个数n大于1时,Perm®由(r1)Perm(R1),(r2)Perm(R2),(r3)Perm(R3),…,(rn)Perm(Rn)构成其中Ri = R - {ri} 即该集合中减去对应元素思路其实说直白点,就是递归地把...

2019-03-05 09:51:54 6064 2

原创 [剑指offer] 字符串的排列

题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。解题思路刚看题目的时候,可能会觉得这个问题很复杂,不能一下子想出解决方案。那我们就要学会把复杂的问题分解成小问题。我们求整个字符...

2019-03-04 23:02:43 73

原创 java版遍历二叉树

首先编写二叉树类BinaryTree,代码如下:package package2;public class BinaryTree { int data; //根节点数据 BinaryTree left; //左子树 BinaryTree right; //右子树 public BinaryTree(int data) //实例化二叉树类 { t...

2019-03-04 22:38:36 1699 1

原创 [剑指offer] 二叉搜索树与双向链表

题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解题思路题目可能比较难理解,可以看如下的图,我们有一棵二叉搜索树,要求得右边的双向链表。在二叉搜索树中,左子结点的值总是小于父结点的值,右子节点的值总是大于父结点的值。因此我们在转换成排序双向链表时,原先指向左子结点的指针调整为链表中指向前一个结点的指针,原先指向右子...

2019-03-04 22:16:32 110

转载 Java与指针

Java中并没有显示的使用指针,而且也不允许编程的过程中使用指针,但实际上,一个对象的访问就是通过指针来实现的,一个对象会从实际的存储空间的某个位置开始占据一定的存储体。该对象的指针就是一个保存了对象的存储地址的变量,并且这个存储地址就是对象在存储空间中的起始地址。在许多高级语言中指针是一种数据类型,在Java中是使用对象的引用来替代的。  创建一个People类,有name(String),i...

2019-03-04 22:11:20 397

原创 [剑指offer] 复杂链表的复制

题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)解题思路参考代码/*public class RandomListNode { int label; RandomListNode next = nu...

2019-03-04 16:40:36 94

原创 递归中的return

一、一层一层返回return:从被调用函数返回到主调函数中继续执行,并非一遇到return整个递归结束。二、对于又返回值得函数递归调用必须要有return下面举例说明:int BinarySearchRecursion(int arry[],int value,int start,int end){ if(start > end) return -1; ...

2019-03-04 16:15:38 17735 6

原创 [剑指offer] 二叉树中和为某一值的路径

题目描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。解题思路用前序遍历的方式访问到某一结点时,把该结点添加到路径上,并用目标值减去该节点的值。如果该结点为叶结点并且目标值减去该节点的值刚好为0,则当前的路径符合要求,我们把加入res数组中。如果当前结点不是叶结点,则继续访问它的子结点。当前结点访问...

2019-03-04 15:13:08 76

转载 [数据结构]——二叉树(Binary Tree)、二叉搜索树(Binary Search Tree)及其衍生算法

二叉树(Binary Tree)是最简单的树形数据结构,然而却十分精妙。其衍生出各种算法,以致于占据了数据结构的半壁江山。STL中大名顶顶的关联容器——集合(set)、映射(map)便是使用二叉树实现。由于篇幅有限,此处仅作一般介绍(如果想要完全了解二叉树以及其衍生出的各种算法,恐怕要写8~10篇)。1)二叉树(Binary Tree)顾名思义,就是一个节点分出两个节点,称其为左右子节点;每个...

2019-03-03 22:59:17 318

原创 [剑指offer] 二叉搜索树的后序遍历序列

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路二叉搜索树: 左子树<根<=右子树对于后序遍历来说,序列数组的最后一个元素一定是根节点, 根据这个元素,将前面的数组分为左、右两个部分,左侧部分都比该元素小,右侧部分都比该元素大,如果右侧部分有比该根节点小的元素,那么就不是后...

2019-03-03 22:53:19 103

转载 关于Java中length、length()、size()的区别

以前总是觉得自己好像会了,但是某天忽然面对这个笔试题还是会恍惚一下,混淆和答错的几率也很大,不知道有没有其他人像我一样的。所以今天把这个问题记一下,希望印象更深刻。首先区分一下length和length();length不是方法,是属性,数组的属性;public static void main(String[] args) { int[] intArray = {1,2,3}; Sy...

2019-03-03 22:38:51 103

转载 java 栈的isEmpty()和empty()有什么区别

public synchronized boolean isEmpty() { return elementCount == 0;}public synchronized int size() { return elementCount;}public boolean empty() { return size() == 0; }//所...

2019-03-03 21:44:48 2305

原创 [剑指offer] 从上往下打印二叉树

题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。解题思路就是二叉树的层序遍历。借助一个队列就可以实现。使用两个队列一个存放节点,一个存放值。先将根节点加入到队列中,然后遍历队列中的元素,遍历过程中,访问该元素的左右节点,再将左右子节点加入到队列中来。注意Queue创建的方式:Queue queue = new LinkedList();用add将元素添加到队列中,用rem...

2019-03-03 21:36:30 56

原创 [剑指offer] 栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路模拟堆栈操作的过程,将原数列依次压栈,把栈顶元素与所给出栈队列相比,如果相同则出...

2019-03-03 21:04:34 73

原创 [剑指offer] 包含min函数的栈

题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。解题思路用一个栈stack保存数据,用另外一个栈temp保存依次入栈最小的数比如,stack中依次入栈5, 3, 4, 10, 2, 12, 1, 8则temp依次入栈5, 3, 3,3, 2, 2, 1, 1每次入栈的时候,如果入栈的元素比min中的栈顶元素小或等于则入栈,否则用最小元素入栈。参考代码...

2019-03-02 20:21:46 88

原创 [剑指offer] 顺时针打印矩阵

题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.解题思路先得到矩阵的行和列数,然后依次旋转打印数据,一次旋转打印结束后,往对角分别前进和后退一个单位。要注意单行和单列的情况...

2019-03-02 19:47:00 108

原创 [剑指offer] 二叉树的镜像

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义: 源二叉树 8 / \ 6 10 / \ / \5 7 9 11镜像二叉树 8 / \ 10 6 / \ / \11 9 7 5解题思路通过对以上两棵树的观察,我们可以总结出这两棵树的根节点相同,但它们的左、右两个子节点交换了位置。所以我...

2019-03-02 19:20:37 96

空空如也

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

TA关注的人

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