- 博客(10)
- 收藏
- 关注
原创 JavaScript 原型和继承
JavaScript 原型和继承原型模式原型对象在我们创建的一个函数时,都有一个 prototype(原型)属性,这个属性是一个指针,指向原型对象,并且所有的原型对象都会自动获得一个 constructor ,下面我们先定义一个函数,并把所有的属性和方法都挂载在函数的 prototype 属性下,并新建两个对象实例:function Person() {}Person.prototype.name = 'jerome'Person.prototype.age = 18Person.proto
2021-05-03 23:47:22 149
原创 TypeScript 装饰器
TypeScript 装饰器装饰器 是一种特殊类型的声明,它能够被附加到类声明,方法, 访问符,属性或参数上。 装饰器使用 @expression这种形式,expression求值后必须为一个函数,它会在运行时被调用,被装饰的声明信息做为参数传入。预备知识装饰器工厂如果我们要定制一个修饰器应用到一个声明上,我们得写一个装饰器工厂函数。 装饰器工厂就是一个简单的函数,它返回一个表达式,以供装饰器在运行时调用。例如:function color(value: string) { // 这是一个装饰器
2021-04-01 22:30:34 423
原创 链表介绍
链表链表结构底层的存储结构:从图中我们看到,数组需要一块连续的内存空间来存储,对内存的要求比较高。如果我们申请一个 100MB 大小的数组,当内存中没有连续的、足够大的存储空间时,即便内存的剩余总可用空间大于 100MB,仍然会申请失败。而链表恰恰相反,它并不需要一块连续的内存空间,它通过“指针”将一组零散的内存块串联起来使用,所以如果我们申请的是 100MB 大小的链表,根本不会有问题。单链表链表通过指针将一组零散的内存块串联在一起。其中,我们把内存块称为链表的“结点”。为了将所有的结点串起
2020-12-14 21:47:45 1376 1
原创 数组介绍
数组数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。线性表(Linear List)。顾名思义,线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、队列、栈等也是线性表结构。 与它相对立的概念是非线性表,比如二叉树、堆、图等。之所以叫非线性,是因为,在非线性表中,数据之间并不是简单的前后关系。 连续的内存空间和相同类型的数据。正是因为这两个限制,它才有了一个堪称“杀手锏”的特性:“随机访问”
2020-12-13 14:43:22 375
原创 均摊时间复杂度
均摊时间复杂度 // array表示一个长度为n的数组 // 代码中的array.length就等于n int[] array = new int[n]; int count = 0; void insert(int val) { if (count == array.length) { int sum = 0; for (int i = 0; i < array.length; ++i) { sum = sum + array[i
2020-12-13 14:42:07 222
原创 最好、最坏、平均情况时间复杂度
最好、最坏情况时间复杂度// n表示数组array的长度int find(int[] array, int n, int x) { int i = 0; int pos = -1; for (; i < n; ++i) { if (array[i] == x) pos = i; } return pos;}这段代码要实现的功能是,在一个无序的数组(array)中,查找变量 x 出现的位置。如果没有找到,就返回 -1。按照上节课讲的分析方法,这段代码的复杂度是 O(
2020-12-13 14:41:05 4284 2
原创 空间复杂度介绍
空间复杂度空间复杂度表示算法的存储空间与数据规模之间的增长关系。void print(int n) { int i = 0; int[] a = new int[n]; for (i; i <n; ++i) { a[i] = i * i; } for (i = n-1; i >= 0; --i) { print out a[i] }}跟时间复杂度分析一样,我们可以看到,第 2 行代码中,我们申请了一个空间存储变量 i,但是它是常量阶的,跟数据规
2020-12-13 14:39:00 505
原创 时间复杂度介绍
时间复杂度O(1)O(1)O(1)首先你必须明确一个概念,O(1)O(1)O(1) 只是常量级时间复杂度的一种表示方法,并不是指只执行了一行代码。比如这段代码,即便有 3 行,它的时间复杂度也是 O(1)O(1)O(1),而不是 O(3)O(3)O(3)。int i = 8;int j = 6; int sum = i + j;只要代码的执行时间不随 n 的增大而增长,这样代码的时间复杂度我们都记作 O(1)。或者说,一般情况下,只要算法中不存在循环语句、递归语句,即使有成千上万行的代码,其时
2020-12-13 14:34:13 453 1
原创 Git的一些常用方法
创建版本库1、创建一个目录这个目录里的文件可以被Git管理起来:$mkdir learngit$cd learngit通过git init 命令把这个目录变成 Git 可以管理的仓库:$ git initInitialized empty Git repository in D:/tools/Git/workspace/.git/可通过ls -ah命令看到隐藏文件.gi...
2018-08-09 10:15:36 158
原创 SQL的一些用法总结
1、select 语句1、NULL表示 不可用、未赋值、不知道、不适用 , 它既不是0 也不是空格。2、字符串连接操作符: “||”3、DISTINCT 去除重复行。4、比较操作符:<> 不等于2、单行函数1、大小写转换函数:LOWER('SQL Course') sql courseUPPER('SQL Course') SQL COURSEIN...
2018-07-19 16:37:08 2929 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人