自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 单元测试(一)

一、概念 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部...

2020-01-06 16:36:21 509

原创 大数据的技术生态:存储,计算,查询,挖掘

参考网址:链接:https://www.zhihu.com/question/27974418/answer/156227565 链接:https://www.zhihu.com/question/21677041/answer/185664626一、大数据包含的四个方面存储,海量的数据怎样有效的存储?主要包括hdfs、Kafka; 计算,海量的...

2019-12-19 16:15:05 345

原创 leetcode242:有效的字母异位词

题目描述:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。什么是字母的异位词?两个单词包含相同的字母,但是次序不同。思路一:...

2019-12-17 10:09:12 155

原创 幂等性

1.概念:什么是幂等性 幂等性是系统服务对外一种承诺,承诺只要调用接口成功,外部多次调用对系统的影响是一致的。声明为幂等的服务会认为外部调用失败是常态,并且失败之后必然会有重试。2.幂等性的案例2.1)sql语句参考网址:https://segmentfault.com/a/11900000201724632.2)restful里PUT和PATCH的区别参考网...

2019-12-16 19:46:05 114

原创 一些资料的所在网址

1.spring boot的注解2.聊聊 API Gateway 和 Netflix Zuulhttps://www.scienjus.com/api-gateway-and-netflix-zuul/3.HttpServletRequestWrapper的使用老大给了一个很实际的需求:有段程序,使用Http的方式与合作商交互,而且是明文传输数据。我方的代码已经打...

2019-12-16 15:29:18 114

原创 鲸书阅读笔记(七)--------------流图中的循环

前言研究意义:程序需要花费大部分时间来执行循环,改进循环效率的优化有很大的影响。程序分析:如果一个程序不包含任何循环,我们只需要对程序进行一趟扫描就可以得到数据流问题的答案,对于流图中存在的循环,下面介绍几个概念:支配结点、深度优先排序、回边、图的深度和可归约性。本篇对寻找循环以及迭代式数据流分析的速度进行阐述。基本术语支配结点:如果每一条从流图的入口结点到结点n的路径都经...

2019-11-07 17:13:36 2156

原创 活跃变量分析(一) :基于后向问题的数据流方程、迭代算法

活跃变量分析1。概念 对于变量x和程序点p,x在点p上的值是否会在流图中的某条从点p出发的路径中使用,如果是,我们就说x在p上是活跃的,如果不是就说x在p上是死的。 对于给定的变量x和程序中给定的点p,活跃变量问题确定沿着此点到出口的路径上是否存在对该变量的使用。2。用途 1)为基本块进行寄存器的分配,在一个值被计算并保存到一个寄存器中后,它很可能在基...

2019-10-30 15:10:19 2327

原创 图(一)

定义图是由一组顶点和一组能够将两个顶点相连的边组成的。无向图1)顶点表示:一般使用0至V-1来表示一张含有V个顶点的图中的各个顶点。2)边表示:用一张符号表来为顶点的名字和0到V-1的整数值建立一一对应的关系。直接使用数组索引作为节点的名称,V-W的计法来表示连接V的W的边,W-V是这条边的另一种表示方法。特殊的图1)自环,即一条连接一个顶点和其自身的边;2)连接同一对...

2019-10-30 09:34:55 228 1

原创 鲸书阅读笔记-------第八章数据流分析(六)迭代数据流分析(后向)

后向问题的数据流后向问题与前向问题之间存在对偶性。可以将其与基本块的出口相连。后向问题的数据流方程给定的流图G=<N,E>和一个格L,流图G有属于N的入口节点entry和出口结点exit。对所有的B∈N,计算out(B)∈L,其中out(B)表示从B出口时的数据流信息,他们由下面的数据流方程给出:其中,Init表示从过程出口时数据流信息的适当初值,FB()表示与反向...

2019-10-29 10:24:18 359

原创 鲸书阅读笔记-------第八章数据流分析(五)迭代数据流分析(前向)

本篇主要内容1.介绍向前分析的迭代实现方法迭代数据流分析假设有一给定的流图G=<N,E>和一个格L,流图G有属于N的入口结点entry和出口结点exit。对于所有的B∈N,计算in(B),Out(B)∈L,其中in(B)表示进入B的入口时的数据流信息,out(B)表示从B出口时的数据流信息。由下面的数据流方程给出:流方程: 其中,Init表示...

2019-10-29 09:58:57 885

原创 鲸书阅读笔记-------第八章数据流分析(四)常见数据流问题以及求解方法

本篇介绍1)数据流分析问题归类尺度有哪些2)与程序优化有关的数据流分析问题有哪些,以及格,位向量、数据流方向等描述。3)解决数据流分析的方法有哪些归类尺度1。他们所提供的信息;2. 他们是有关系的还是属性无关的;3.他们使用的格的类型,以及格元素所代表的含义和在这些格上定义的函数4.信息流的方向:按程序执行的方向(向前问题)、程序执行的反方向(后向问题),还是同时两...

2019-10-24 14:46:51 564

原创 鲸书阅读笔记-------第八章数据流分析(三):基本概念----格,流函数和不动点

格 1. 数据流分析是通过对一种称为格的代数结构的元素进行运算来完成的。 2. 格的元素代表变量、表达式、或一个过程所有可能执行的其他程序设计结构的抽象性质----这种性质与输入数据值无关,通常也与过程流经的控制流路径无关。 3.格L由值集合和两个运算组成,其中一个运算称为交,L中存在两个唯一的元素,一个称为底(bottom),记作为。另一个称为顶(top)...

2019-10-24 10:39:51 711

原创 鲸书阅读笔记-------第八章数据流分析(二):到达---定值分析

本篇通过到达--定值分析来引出数据流分析的过程什么是到达--定值?定值是对某个变量的赋值。 假设变量x的定值为d,如果存在一条紧随在定值d后面的程序点到达某一个程序点p的路径,并且在这条路径上d并没有被“杀死”(也就是说,变量x没有被重新赋值为其他值),我们就说定值到达程序点p。一个编译器能够根据到达定值信息知道变量x在程序点p上的值是否为常量。局部数据流分析和全局数据...

2019-10-23 16:21:09 1680

原创 鲸书阅读笔记-------第八章数据流分析(一):基本块和流图

一、什么是数据流分析?数据流分析指的是一组用来获取有关数据如何沿着程序执行路径流动的相关信息的技术。目的:提供一个过程(或一大段程序)如何操作其数据的全局信息。二、基本概念1.基本块形式上,基本块是一个只能从它的第一条指令进入,并从最后一条指令离开的最长的指令序列。基本块的构建:已第一条指令作为一个新的基本块的开始,然后不断把后续的指令加进去,直到碰到一个无条件跳转、条件跳...

2019-10-23 10:54:48 1543

原创 面试题目21 调整数组顺序使其奇数位于偶数前面

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。题解首先需要保证相对位置保持不变,比较排序中稳定排序算法:冒泡排序、归并排序、插入排序。这里采用插入排序的思想,维持一个奇数数列,遇到奇数就往前插入,直到遇到维持奇数数列的最后一个坐标即可。步骤1)采...

2019-10-08 10:36:09 100

原创 面试题目7:重建二叉树

题目一输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:1)将中序数组放入hashmap中,第一个存放值,第二个存放坐标‘2)递归生成树,判断退出条件:前序数组的最左坐标大于最右坐标。3)...

2019-10-07 16:36:31 93

原创 面试题目41:数据流中的中位数

题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。解题一:将数组排序,然后得到中位数。时间复杂度为O(n)解题二:利用大根堆和小根堆分析:整个数...

2019-10-07 14:20:49 124

原创 INNODB存储索引中的锁

MYISAM只支持表锁INNODB既支持表锁也支持行锁lock的对象是事务,用来锁定的是数据库中的对象,比如表、页、行。INNODB的表锁 意向锁是INNODB自动加上去的,不需要用户干预。 意向锁即为表锁,目的:是为了在一个事务中揭示下一行被请求的锁类型。有两种意向锁: 意向共享锁,事务想要获得一张表中某个行的共享锁; 意向排...

2019-10-04 20:29:51 175

原创 (二)redis的线程模型、支持的数据结构

线程模型问题redis是单线程还是多线程? redis 内部使用文件事件处理器 file event handler,这个文件事件处理器是单线程的,所以 redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,将产生事件的 socket 压入内存队列中,事件分派器根据 socket 上的事件类型来选择对应的事件处理器进行处理。文件事件处理...

2019-10-04 18:04:57 212

原创 (一)关系型数据库和非关系型数据库

关系型数据库 典型的数据结构是表结构,由一个二维表以及之间的联系构建的一个表组织。优点使用表结构,便于维护; SQL语句通用 可以实现复杂的查询;比如子链接,join等。缺点表结构灵活性较差; 读写性能比较差,尤其在高并发中,磁盘I/O是个很大的问题。非关系型数据库 非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储的集合。比如redis...

2019-10-04 16:44:01 126

转载 java中,3*0.1与0.3是否相等?4*0.1与0.4是否相等?

现象描述System.out.println(3*0.1); 打印的结果为:0.30000000000000004System.out.println(4 * 0.1 == 0.4);//trueSystem.out.println(3 * 0.1 == 0.3);//false原因 对于十进制数值系统(就是我们现实中使用的),它只能表示以进制数的质因子为分...

2019-10-04 14:34:15 993

原创 查看系统内存、系统进程、网络状况、日志、文件命令

查看系统内存作用:查看系统内存的使用情况1. top1.1 查看系统内存及CPU使用情况,显示所有的进程top1.2 查看某一进程内存及CPU使用情况top -p 进程ID1.3 top命令的显示内容1) 第一行top分别为:当前时间;系统运行天数;使用者个数;系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,这个数值超过 CPU 数目时,说明负载过...

2019-10-04 12:08:07 629

原创 (一)类加载、对象初始化

一、类加载类的生命周期类从被加载到虚拟机内存中开始,到卸载出内存为止。它的整个生命周期可以分为:加载、验证、准备、解析、初始化、使用、卸载。类初始化阶段对加载的阶段,jvm并没有强制性规定。但是初始化阶段,jvm中严格规定了时机,(而加载、验证、准备自然需要在此之前开始)有且仅有以下五种的情况才会出现类的初始化。1)遇到new、getstatic、putstatic、inv...

2019-10-03 15:31:47 382

原创 (二)面向对象和面向过程、基本数据类型、方法重写和重载、封装、继承、多态、泛型、自动装箱和拆箱

面向对象和面向过程 概念 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题的事物分解成各个对象,建立对象不是为了完成一个步骤,而是为了描叙对象所代表的事物在整个解决问题的步骤中的行为。 优缺点 面向过程优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,缺点:没有面向对象易维护...

2019-10-03 14:23:38 110

原创 面试题目15:二进制中1的个数

题目描述题目一输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路:来源于剑指Offer里面的讲解。把一个整数减一,再和原整数做与运算,会把该整数最右边的1变为0,原来在1后面的所有0都会变成1(如果最右边的1后面还有0的话),其余的位置不受影响。那么一个整数的二进制表示中有多少个1,就可以进行多少次这样的操作。举个例子:一个二进制数1100,从右边数起第三位是...

2019-09-30 15:25:53 81

原创 数据库Mysql

"懂mysql吧,知道CPU在读硬盘上数据的时候,是怎么解决CPU和硬盘速度不一致问题么?"mysql会将磁盘上的数据页先加载到内存里面,然后从内存里面读数据。INNODAINNODB的逻辑存储结构段:数据段,索引段。段中包含一个一个区区: 连续页组成页:表数据存储在不同的页空间行:表中一条行记录,组成页一个表中的数据可能存储在不同的页空间缓存池...

2019-09-30 15:25:26 337 3

原创 树结构------二叉平衡树和红黑树

前言二叉平衡树1)空树2)对于任何一个节点来说,它的左右两个子树的高度差的绝对值不超过1红黑树不算严格意义上的平衡树,它具有以下特点1)节点有颜色,要么黑色要么红色2)根节点必须是黑色3)红色节点的左右两个子节点都是黑色4)从任一节点到其每个叶子节点所有路径都包含相同数目的黑色节点个数这些约束强制了红黑树的关键性质:从根节点到叶子节点的最长路径不大于最短路...

2019-09-30 15:24:54 149

原创 (一)JVM、解释型语言和编译型语言

什么是jvm?运行字节码的虚拟机,针对不同的操作系统有特定的实现。好处?可以编译成字节码的语言的实现跨平台,即一次编译各处执行。以java语言为例源码先通过javac编译成.class字节码,然后通过类加载器将字节码文件加载到虚拟机中,最后JVM对字节码文件进行翻译成机器可以识别的二进制文件。 Jvm对字节码文件的处理过程是解释过程。所以我们说Java 是编译与解释共存的语言...

2019-09-30 15:24:35 274

原创 树结构------B树和B+树

基础概念B树:多路搜索树,以M阶来说。1)非叶子节点最多有M个子节点2)每个节点最多有M-1个值3)所有的叶子节点位于同一层4)关键字在节点上只会出现一次B+树:1)叶子节点之间通过指针相互关联,构成一个有序链表。2)所有的叶子节点包含了全部关键字应用MySql的索引选择的结构是B+树结构。为什么要选择B+树结构?主要原因是减少I/O操作。 ...

2019-09-30 15:24:21 175

原创 INNODB-----索引

索引分类注意,INNODB是MYsql的存储引擎,首先Mysql的索引分类仅仅是按照平时书写的sql命名的索引。INNODB的索引分类指的是按照不同的场景下的索引分类。Mysql的索引普通索引,唯一索引,主键索引1. 普通索引普通索引的唯一任务是加快对数据的访问速度,因此,应该只为那些最经常出现在查询条件(WHERE column=)或者排序条件(ORDERBY column)...

2019-09-27 18:04:08 110

转载 设计模式的七大原则

面向对象设计原则和设计模式也是对系统进行合理重构的指南针,重构(Refactoring)是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。常用的面向对象设计模式的七大原则:设计原则名称 设计原则简介 单一职责原则 类的职责要单一,不能将太多的职责放在一个类中 开闭原则 软件实体对扩展是...

2019-09-27 09:53:43 72

转载 设计模式的开篇

概念设计模式就是一些过去技术的大师们总结出来的一系列写代码的套路。分类根据其作用的不同,可以分为:创建型、结构型、行为型。1)创建型模式,是为了创建对象使用的2)结构性模式,是用来组织不同的小对象,从而变成更大更复杂结构的对象。3)行为型模式,是用来控制协调不同的对象的运行流程,因为实际开发场景下,不可能是孤零零一个对象在运行,会涉及多个对象交互,这中间的协调工作就会使用到...

2019-09-27 09:42:09 58

原创 面试题目42:连续子数组的最大和

题目输入一个整型数组,数组里面有正数也有负数。数组中的一个或者连续多个整数组成一个子数组。求所有子数组的和的最大值。解法一:关键点是累加和。1)当累加和是正数,对当前的值有增益效果。直接更新累加和,并且更新最大值。2)当累加和是负数,对当前的值没有增益效果。将累加和指向当前这个数。更新最大值3)最后返回最大值public int FindGreatestSumOfSu...

2019-09-26 17:13:48 91

原创 面试题目40:最小的K个数

题目:输入n个整数,找出其中最小的k个数。比如输入,4,5,1,6,2,7,3,8这个8个数字,则最小的4个数字是1,2,3,4解法一:时间复杂度为O(n)的算法思路:利用快速排序的思想。解法二:时间复杂度为O(nlogK)的算法,特别适合处理海量数据创建k个元素的大根堆,数组0这个位置存放的就是大根堆里面的最大值,遍历数组中剩余的数,如果大于这个最大值就进行交换数字,然...

2019-09-26 15:24:27 79

原创 面试题目22:链表中倒数第K个节点

题目输入一个单向链表,输出该链表中倒数第k个节点。思路:O(n)的时间复杂度实现采用双指针方法,1)第一个指针从链表的头指针开始遍历向前走k-1步,第二个指针保持不动2)从第k步开始,第二个指针也开始从链表的头指针开始遍历。3)由于两个指针的距离保持在k-1,当第一个指针走到尾结点的时候,第二个指针刚好指向倒数第k个节点。ps:注意判断不合法的情况:情况一:k的值小于等...

2019-09-26 14:52:27 79

原创 面试题目10:递归和循环(斐波那契数列)

递归和循环递归是一个函数的内部调用这个函数的自身;循环则是通过设置计算的初始值和终止条件,在一个范围内进行重复计算。递归的优缺点:1)简洁2)空间和时间消耗大,每一次函数调用,都需要在内存栈中分配空间以保存参数,返回地址和临时变量。3)有很多重复计算通过使用递归来实现动态规划,但是由于包含大量重复计算,所以每次将重复计算的值记录下来。并采用自下而上的循环进行实现。题目一...

2019-09-26 14:30:50 577

原创 面试题目58:翻转字符串

题目描述题目一输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student.",则输出"student. a am I"。题解:java中对字符串的一系列操作还是超级方便的。知识储备:1)String的一些基本操作 String s=" ";1.1)s.trim();删除字符串...

2019-09-15 11:35:43 263

原创 面试题目57:和为s的数字

题目描述题目一输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。题解:利用双指针来实现,步骤:1)第一个指针从数组第一个数往后遍历,第二个指针从数组最后一个数往前遍历。2)当两个数相加的值大于目标值,那么第二个指针往前移动;当两个数相加的值小于目标值,那么第一个指针往后移动。import...

2019-09-14 21:59:03 84

原创 面试题目56:数组中数字出现的次数

题目描述题目一数组中只出现一次的两个数字一个整型数组里除了两个数字之外,其他的数字都出现了两次(偶数次)。请写程序找出这两个只出现一次的数字。题解:知识储备:位运算1)&(与运算)将两个数字写成二进制的形式,然后相同位置比较,只有当对应的二进制值都为1,结果才为1;2)|(或运算)将两个数字写成二进制的形式,然后相同位置比较,只有对应的位置有1,结果才为1;...

2019-09-14 21:30:44 196

原创 面试题目55:二叉树的深度

题目描述题目一:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。题解:对二叉树深度的理解1)如果这棵树为空,那么深度为0;如果这颗树只有一个节点,那么它的深度为12)如果根节点只有左子树,那么树的深度是其左子树的深度+1;只有右子树类似;3)如果左右子树都有;那么选择一个最高的子树+1public...

2019-09-14 17:48:08 114

空空如也

空空如也

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

TA关注的人

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