自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 博客分享迁移

以后博客会分享在个人网站 http://www.voidd.top/ 目前备案中,需要 ip 访问

2017-05-08 14:44:53 213

原创 laravel源码阅读之框架实例

上次我们说完自动加载,到目前位置,laravel已经实现了对我们整个项目中几乎所有文件的自动加载,也就是说以后在框架中使用的绝大部分类,我们都不需要 require,直接new即可使用(当然laravel使用依赖注入容器进行类管理,有更先进的类实例化方式,这个我们后面再说),接下来我们就要进入第二个步骤,揭开laravel实例神秘的面纱从另一个角度说,laravel是一个Ioc容器,至于什么是Ioc

2017-03-18 22:04:56 509

原创 AVL树

之前我们提到了二叉查找树,我们说过它是一种既简单又有趣的数据结构,它足够强大,也足够简洁,但这有个先决条件,插入的数值足够随机,否则二叉查找树的很容易失衡(或者数值足够随机,但在不断的删除操作后,也会发生失衡情况),比如当我们使用一个有序数组生成一棵二叉树查找树时,实际上相当于生成了链表,查找的时间复杂度为O(n),这显然和我们的想要的存在比较大的差距(O(logn))。因此,实际二叉查找树的实现都

2017-03-15 00:31:20 272

原创 laravel源码阅读之自动加载功能

这篇文章我们来看一下laravel使用的自动加载机制,因为我们使用 composer 来管理整个项目,因此这里的自动加载机制其实是 composer 实现的。首先,从 /public/index.php 我们可以看到,在生成框架实例前,类和函数自动加载相关代码会先被执行。我们先看启动文件 /bootstrap/autoload.php。首先它载入了composer的自动加载文件 /vendor/a

2017-03-14 23:15:25 974

原创 laravel源码阅读之应用生命周期

laravel框架在php中应该算是知名度非常高的,用了半年了,之前也只是在遇到问题时才去看对应的源码,没有好好理清各部分的实现关系,终究是半知半懂,因此决定花点时间从整体的角度研究一下这个框架。后面几篇文章我们将从源码角度窥探一下它的技术内幕,看一看我们平时使用的各种特性是如何实现的。这里我们先简单介绍下框架的生命周期。 当请求被服务器转发给laravel是,首先是进入入口文件 /public/

2017-03-14 22:43:19 427

原创 跳台阶问题

今天看到一道有趣的题目,如下 一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法,并分析算法的时间复杂度说它有趣,纯粹是因为看题目的时候看错了,把只能跳1级和2级看成了可以跳任意级,由此也得出了一个通解,虽然也比较简单,但挺有趣的。 按照原题,只要稍微列出几项便可以发现这其实是一个斐波那契数列,按照公式 n[i] = n[i-1]+n[i-2] 即可得出结果。 而如果不限

2017-03-10 00:31:58 311

原创 MongoDB索引

今天看MongoDB的书,有关索引部分,想起之前做项目时优化数据库时好像做过索引相关的笔记,翻出来一看,还挺多。记得当时是按官方文档(3.2版)记的笔记(或者说是翻译的 (=:))。感觉还挺详细清晰,特别是最后面的索引分析那里,再去一遍文档就有点心累了(关键官网还经常崩)知识点索引是一种特殊的数据结构,它们被存放在一个容易访问的数据表中。索引存储一个字段或者几个字段的哈希值。并安装这些字段进行排

2017-02-27 23:45:30 279

原创 php 自动加载机制

在php中,我们一般使用 require, requre_once, include, include_once 这四个命令来加载其他php文件,这在一般小型的php文件中是没有任何问题的,相信每个初学者都会遇到这样的应用场景:使用一个 Db.php 来定义数据库连接,在其他文件中直接引用这个文件,达到代码复用的效果。 再让我们考虑这样一个应用场景,如果我们使用一个框架,或者一个第三方包,里面一般

2017-02-27 18:25:09 1218

原创 判断一个数是否是质数

判断一个数是否是质数最暴力的解法利用质数的性质:设i为质数,则i只能被 1 和 i整除。因此对于i,我们可以令 2..i-1 依次除以i,如果均不能被整除,则说明是质数。代码如下private static boolean isPrime1(int nr) { for (int i = 2; i < nr; i++) { if (nr % i == 0) return

2017-02-21 16:40:36 3228

原创 二叉查找树

二叉查找树 吐槽下,csdn的markdown有点虚二叉树是一种很有趣的数据结构,因为大多数情况下它都够简单,却相当强大。今天回顾下一种相对来说比较简单但又非常有用的数据结构–二叉查找树。同时给出c实现和Java的完整实现 树 树是一种数据结构,一棵树是n个节点和n-1条边的集合(这个后面解释) 1. 一棵树有这样的特点:一个节点可以有0个或多个子节点没有父节点的节点称为根结点每

2017-02-17 01:38:13 330

原创 归并排序

归并排序归并排序,即把一个数组分成两部分,然后对这两部分分别排序,在将这两个数组归并为一个有序数组。这几乎就是归并排序的全部内容:拆分数组-子数组排序-合并数组。同样的,我们先来看一个实例。 对于数组 a = [5 9 0 7 1 10],取 i = 0, j = a.length-1 = 5, mid = (i+j) / 2 = 2。 1. 先将该数组拆分成两个子数组(根据 mid),分别为

2017-02-15 09:28:54 344

原创 希尔排序

shellShort插入排序希尔排序是插入排序的改进版本,它以插入排序为基础。在了解希尔排序前,我们有必要先简单了解插入排序。插入排序很简单,它假定数组的前i个元素是有序的,然后将第 i+1 个元素插入到 0-i 中的正确位置上。假设第 i+1 个元素将插入到 j 位置,则 j~i 中的元素需要依次移动到 j+1 ~ i+1 的位置上。如 a = [5 9 0 7 1 10 1 7 3 4],在

2017-02-14 01:18:26 344

原创 快速排序

快速排序先看个例子: 对于数组 a = [427 353 112 914 141 555 96 696 294 883],我们选择tmp = a[0]作为我们的枢纽元,在实现第一轮排序后,我们要实现的效果是数组a分成两部分,前面的部分元素全部小于等于**tmp,后面部分全部大于等于**tmp。取i = 0; j = a.length-1; tmp = a[0]第一轮排序过程如下

2017-02-13 09:28:48 211

空空如也

空空如也

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

TA关注的人

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