剖析递归行为和递归行为时间复杂度的估算一个递归行为的例子T(N) = a*T(N/b) + O(N^d)1) log(b,a) > d -> 复杂度为O(N^log(b,a))2) log(b,a) = d -> 复杂度为O(N^d * logN)3) log(b,a) < d -> 复杂度为O(N^d) 例: 归并排序 public static void mergeSort(int[] arr) { if (arr == null || arr.length < 2…
我们在算递归算法的时间复杂度时,Master定理为我们提供了很强大的便利! Master公式在我们的面试编程算法中除了BFPRT算法的复杂度计算不了之外,其他都可以准确计算! 这里用求数组最大值的递归函数来举例: public static int getMax(int[] arr, int L, int R) { if (L == R) { return arr[L]; } int mid = (L + R) / 2; int maxLeft = getMax(arr, L, mid); in…
我在许多书本上看到冒泡排序的最佳时间复杂度是O(n),即是在序列本来就是正序的情况下. 但我一直不明白这是怎么算出来的,因此通过阅读<算法导论-第2版>的2.2节,使用对插入排序最佳时间复杂度推算的方法,来计算冒泡排序的复杂度. 1. <算法导论>2.2中对插入排序最佳时间复杂度的推算 在最好情况下,6和7总不被执行,5每次只被执行1次.因此, 时间复杂度为O(n) 2. 冒泡排序的时间复杂度 2.1 排序代码 public void bubbleSort(int arr[]) {…
本篇文章涉及公式,由于博客园没有很好的支持,建议移步我的CSDN博客和简书进行阅读. 1. Master公式是什么? 我们在解决算法问题时,经常会用到递归.递归在较难理解的同时,其算法的复杂度也不是很方便计算.而为了较为简便地评估递归的算法复杂度,Master公式应运而生.下面给出Master公式的维基百科链接 1.1 Master公式 $T(N) = a*T(\frac{N}{b}) + O(N^d)$ a:子问题被调用的次数 $\frac{N}{b}$:子问题的规模 N:母问题的规模 d:额…
最近遇到一例crash,3.10内核,hardlock,查看对应的堆栈,中断是使能的. 查看对应的hrtimer_interrupts和hrtimer_interrupt_save的值,发现确实相等. 具体可参考: 百思不得其解,然后咨询os的同事茂春兄,然后他很轻描淡写第说,他遇到过,并随手给了个链接: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/kernel/watchdog.c?id=7ed…
第一节课 复杂度 排序(冒泡.选择.插入.归并) 小和问题和逆序对问题 对数器 递归 1.  复杂度 认识时间复杂度常数时间的操作:一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作. 时间复杂度为一个算法流程中,常数操作数量的指标.常用O(读作big O)来表示. 具体来说,在常数操作数量的表达式中,只要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分如果记为f(N),那么时间复杂度为O(f(N)). 评价一个算法流程的好坏,先看时间复杂度的指标,然后再分析不同数据样本…
虽然以前学过,再次回顾还是有别样的收获~ 认识时间复杂度 常数时间的操作:一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作. 时间复杂度为一个算法流程中,常数操作数量的指标.常用O(读作big O)来表示.具体来说,在常数操作数量的表达式中,只要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分如果记为f(N),那么时间复杂度为O(f(N)). 评价一个算法流程的好坏,先看时间复杂度的指标,然后再分析不同数据样本下的实际运行时间,也就是常数项时间. 例子一 一个简单的理解…
上周五的时候去参加了一个面试,被问到了这个问题.问题描述如下: 假如存在一个很大的文件,文件中的每一行是一个字符串.请问在内存有限的情况下(内存无法加载这个文件中的所有内容),如何计算出出现频率最高的前100名字符串? 由于面试之前在学习hbase时了解了一下布隆过滤器(对bitmap的扩展使用),所以当时立刻想到用bitmap去解决这个问题,但是考虑到bitmap无法对出现的单词计数的.所以我当时的回答是: 首先实例化一个数组,然后读取文件对每一行的字符串进行hash得到一个数值,然后将数组下…
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTML 最坚实的梁柱:分享,是 CSS 里最闪耀的一瞥:总结,是 JavaScript 中最严谨的逻辑.经过捶打磨练,成就了本书的中文版.本书包含了函数式编程之精髓,希望可以帮助大家在学习函数式编程的道路上走的更顺畅.比心. 译者团队(排名不分先后):阿希.blueken.brucecham.cfanlife.d…
22.1.7 master公式及O(NLogN)的排序 1 master 公式 (1) 写公式 T(N) = a * T(N/b) + O(N^d); master公式用来求递归行为的时间复杂度,式中T(N/b)表示母问题被分解为子问题的规模,a表示子问题被调用的次数,O(N^d)表示算法中其他过程的时间复杂度. 例如: public static int getMax(int[] arr){    return process(arr,0,arr.length-1);}​public stat…
lnmp环境 gdb  /usr/local/php5.2/bin/php-cgi  /tmp/coredump-php-cgi.20503 source /home/tmp/lnmp1.4-full/src/php-5.2.17/.gdbinit zbacktrace [root@iZ28cm0353dZ ~]# gdb /usr/local/php5.2/bin/php-cgi /tmp/coredump-php-cgi.20503GNU gdb (GDB) Red Hat Enterpri…
公式求值 输入n, m, k,输出图1所示的公式的值.其中C_n^m是组合数,表示在n个人的集合中选出m个人组成一个集合的方案数.组合数的计算公式如图2所示. 输入的第一行包含一个整数n:第二行包含一个整数m,第三行包含一个整数k. 计算图1所示的公式的值,由于答案非常大,请输出这个值除以999101的余数. [样例输入1] 3 1 3 [样例输出1] 162 [样例输入2] 20 10 10 [样例输出2] 359316 [数据规模与约定] 对于10%的数据,n≤10,k≤3: 对于20%的数…
题目 k个鸡蛋从N楼层摔,如果确定刚好摔碎的那个楼层,最坏情况下最少要试验x次? 换个说法: k个鸡蛋试验x次最多可以检测N层楼.计算出N? 逆向思维和数学公式解. 分析 定义N(k,x) 如果第k个鸡蛋碎了,则 还剩k-1块鸡蛋. 下一次只需检查下面的楼层. 还剩x-1次机会. 如果第k个鸡蛋没有碎,则 还剩k块鸡蛋. 下一次只需检查上面的楼层. 还剩x-1次机会. 即N(k,x) = 1 + N(k-1,x-1) + N(k,x-1) 初始值N(k,1)=1 N(1,x)=x 代码如下: 空…
master公式(也称主方法)是利用分治策略来解决问题经常使用的时间复杂度的分析方法,(补充:分治策略的递归解法还有两个常用的方法叫做代入法和递归树法),众所众知,分治策略中使用递归来求解问题分为三步走,分别为分解.解决和合并,所以主方法的表现形式: T [ n ]=a T[ n / b ] + T ( N ^ d) 其中a>=1 and b>1 是常量,其表示的意义是n表示问题的规模,a表示递归的次数也就是生成的子问题数,b表示每次递归是原来的1/b之一个规模,f[n]表示分解和合并所要花费…
SQL Server 在缺少文件组的情况下如何还原数据库 一.背景 我有一个A库,由于a,b两张表的数据量比较大,所以对表进行分区:在把A库迁移到一个新的集群上去,我只备份了A库的主分区过去进行还原为B库(主分区的备份还原可参考:SQL Server 维护计划备份主分区 和 主分区备份与还原),为了对a,b表进新的数据,我修改了a,b表名,在B库新建了两张不分区的a,b表: 这样运行都没有什么问题的,但是在一次我分离了数据库B,拷贝了mdf和ldf文件,现在想使用mdf和ldf还原为B库的时候出…
前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 用SignalR 2.0开发客服系统[系列2:实现聊天室] 用SignalR 2.0开发客服系统[系列3:实现点对点通讯] SignalR 2.0作为一个新的而且强大的通信工具,发布博客之后得到了很多人的支持,谢谢...也有人对性能和架设等问题提出了各种质疑..真的很感谢.. 我特意下载了SignalR 2.0的源码硬着头皮用我二流子的英语在微软官方的Demo里翻滚.. 今天这个负载均衡下使用…
在不停止Nginx服务的情况下平滑变更Nginx配置 1.修改/usr/local/webserver/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确: /usr/local/webserver/nginx/sbin/nginx -t 如果屏幕显示以下两行信息,说明配置文件正确: the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok the confi…
p{ font-size: 15px; } .alexrootdiv>div{ background: #eeeeee; border: 1px solid #aaa; width: 99%; padding: 5px; margin: 1em 0 1em 0; } .alextitlep{ font-size: 18px; font-weight: bold; color: red; } .alexrootdiv span{ color:blue;font-weight:bold; } .al…
情况:在高并发情况下,查看线程栈信息,有大量的线程BLOCKED. 从线程栈得知,线程栈中出现了阻塞,锁在了com.fasterxml.jackson.databind.ser.SerializerCache.untypedValueSerializer(SerializerCache.java:74)上. "catalina-exec-1453" #1525 daemon prio=5 os_prio=0 tid=0x00007f1010098800 nid=0x2675 waiti…
摘要 这个POC用于在不知道明文密码的情况下对启用了密码安全认证插件(默认开启插件:mysql_native_password)的MYSQL数据库进行登录. 前提条件为: 1.为了获取到已知用户的hash,我们需要读取到目标数据库中的mysql.user表.2.能够拦截到上述已知用户执行成功的认证信息(即通过SSL认证无法攻击成功). 注意:这并不是MYSQL的一个漏洞,只是认证协议工作的直接后果.如果攻击者已经满足了上面两个前提,那么整个系统应该是已经被攻破了.则这篇文章只是对MYSQL服务器…
3000: Big Number Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 220  Solved: 62 [Submit][Status] Description 给你两个整数N和K,要求你输出N! 的K进制的位数. Input 有多组输入数据.每组输入数据各一行,每行两个数--N.K Output 每行一个数为输出结果. Sample Input 2 5 2 10 10 10 100 200 Sample Output 1 1 7 69…
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Amnes1a/article/details/65444966QFileInfo类为我们提供了系统无关的文件信息,包括文件的名字和在文件系统中位置,文件的访问权限,是否是目录或符合链接,等等.并且,通过这个类,可以修改文件的大小和最后修改.读取时间.同时,QFileInfo类也可以用来取到Qt 资源的相关信息. QFileInfo既可以表示绝对路径,也可以表示相对路径的文件.其中,绝对路径就是已"…
Oracle redo 日志损坏的几种情况下的恢复 第一:损坏的redo为非正在使用的redo log 1.归档模式,不是当前正在日志损坏,数据库打开模式. 模拟损坏:SQL> select * from v$log;    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME--------…
在某些情况下(比如:异常宕机)solaris10的boot archive可能会损坏,导致solaris无法启动,此时需要手工修复boot archive. 本文通过模拟boot archive损坏,测试如何在root镜像存在的情况下恢复boot archive. (本测试在x86虚拟机上进行) 测试分为四部分.第一部分是solaris10做root镜像,第二部分通过dd命令模拟boot archive损坏,第三部分是拆除镜像和修复boot archive,第四部分是修复root镜像 1. 系统…
Redis Sentinel 情况下bind地址设置 1个master,2个slave,3个sentinel的情况下,注意bind地址的时候不要写0.0.0.0,会导致绑定多个地址, 然后sentinel就会出现投票震荡,不停的进行投票:…
KVM虚拟机内无agent情况下的监控(ceilometer实现) 今天看到大家在群里讨论KVM虚拟机的监控问题,而且是要求VM内无agent情况下的监控.这方面确实没有深入研究,但尚有些openstack/ceilometer的使用经验,略改过些源码.应肖力大哥号召,十分愿意与大家分享经验,错误与不足之处还望大家雅正. ceilometer介绍 这里http://docs.openstack.org/developer/ceilometer/architecture.html对ceilomet…
5.1 "无继承"情况下的对象构造 考虑以下这个程序片段: 1 Point global; 2 3 Point foobar() 4 { 5 Point local; 6 Point *heap = new Point; 7 *heap = local; 8 // ... stuff ... 9 delete heap; 10 return local; 11 } L1,L5,L6表现出三种不同的对象产生方式:global内存配置,local内存配置和heap内存配置.L7把一个 cl…
算的是红框占绿框的百分比 难点在保留原数据的情况下,把百分比加在后面.通过公式我是不会,但程序实现也不难. 先在Excel中的开发工具中打开visual basic,或者用宏也可以 导入代码文件,代码在最后 导入后点击绿色三角形,运行即可 选择需要计算的区域 点击确定后自动完成计算并修改 搞定! 代码 Attribute VB_Name = "模块1" Sub cal1() Dim range1 As Range ) x = range1.Rows.Count y = range1.C…
QFileInfo类为我们提供了系统无关的文件信息,包括文件的名字和在文件系统中位置,文件的访问权限,是否是目录或符合链接,等等.并且,通过这个类,可以修改文件的大小和最后修改.读取时间.同时,QFileInfo类也可以用来取到Qt 资源的相关信息. QFileInfo既可以表示绝对路径,也可以表示相对路径的文件.其中,绝对路径就是已"/"开始的路径(或者在Windows系统上就是已某个盘符开始的路径).相对路径就是相对于当前目录的一个文件或目录.我们在开发中,可以使用给类的成员函数i…
com.fasterxml.jackson.databind.ObjectMapper 在默认的情况下在写出输入后将会关闭输出流(output stream). 如果你希望序列化多值变量在同一个输出流的情况下,你不希望在输出完一个就关闭输出流,你可以设置  JsonGenerator.Feature.AUTO_CLOSE_TARGET 参数为 False. 本测试方法,可以在 https://github.com/cwiki-us-demo/serialize-deserialize-demo-…