CSS复习整理
CSS复习整理元素转化
行内元素转化块级元素
display:block
块级元素转换为行内元素
display:inline
转换为行内块元素(一行可以放多个 可以设置宽高)
display:inline-block
单行文字垂直居中:让文字行高等于盒子的高度行内元素不可以设置宽高,但是可以设置 左右padding、左右margin
背景图片1background-image: url(images/logo.png);
background-repeat:no-repeat 不平铺
background-position: 方位名词
12345678910/* 如果是方位名词 right center 和 center right 效果是等价的 跟顺序没有关系 */ /* background-position: center right; */ /* 此时 水平一定是靠右侧对齐 第二个参数省略 y 轴是 垂直居中显示的 */ /* background-position: right; ...
Vue原理学习总结
Vue 源码学习FlowVue.js 的源码利用了 Flow 做了静态类型检查
类型检查
类型检查,就是在编译期尽早发现(由类型错误引起的)bug,又不影响代码运行(不需要运行时动态检查类型),使编写 JavaScript 具有和编写 Java 等强类型语言相近的体验。
选择 Flow,主要是因为 Babel 和 ESLint 都有对应的 Flow 插件以支持语法,可以完全沿用现有的构建配置,非常小成本的改动就可以拥有静态类型检查的能力。
通常类型检查分成 2 种方式:
类型推断:通过变量的使用上下文来推断出变量类型,然后根据这些推断来检查类型。
它不需要任何代码修改即可进行类型检查,最小化开发者的工作量。它不会强制你改变开发习惯,因为它会自动推断出变量的类型
例如:
1234function split(str) { return str.split(' ')}split(11) // flow 检查该代码会报错 因为期待的是字符串 而传入的是数字
类型注释:事先注释好我们期待的类型,Flow 会基于这些注释来判断。
...
Vue项目总结
# 一.FeatureView
* 独立组件封装FeatureView
· div>a>img
二.TabControl
独立组件的封装
props->titlesdiv->根据titles v-for遍历 div ->spanVue项目总结css相关选中哪一个tab,哪一个tab的文字颜色变色,下面有一个border-bottom
currentIndex
三.首页商品数据的请求3.1 设计数据结构,用于保存数据goods:{pop:page/list
new: page/list
sell: page/list}
3.2 发送数据请求
在home.js中封装getHomeGoods
在Home.vue中 的methods中getHomeGoods(type)
调用getHomeGoods(‘pop’)/getHomeGoods(‘new’)/getHomeGoods(‘sell’) page:动态的获取对应的page
获取到的数据:res· this.goods[type].list.push(…res.data.list)· this.goo ...
排序算法
排序算法
冒泡排序
123456//交换两个位置数据 方法 的抽取 ArrayList.prototype.swap = function (m, n) { var temp = this.array[m] this.array[m] = this.array[n] this.array[n] = temp }
冒泡排序代码实现
1234567891011121314151617ArrayList.prototype.bubbleSort = function () { //获取数组的长度 var length = this.array.length //第一次:j=length-1 比较到倒数第一个位置 //第二次:j=length-2 比较到倒数第二个位置 //。。。到 ...
数据结构 --图
图特点
一组顶点: 通常用V(Vertex)表示顶点的集合
一组边: 通常用E(Edge)表示边的集合
边是顶点和顶点之间的连线
可有向可无向
相邻节点:一条边连接在一起的顶点
度: 指和该顶点相关联的边数
路径:
简单路径:不包含重复的节点
回路:第一个顶点和最后一个顶点相同
无向图 有向图 无权图
有权图:带权图表示边有一定的权重
两种表示方式:邻接矩阵 邻接表
邻接矩阵:让每个节点和一个整数相关联 该整数作为数组的下标值
二维数组表示顶点之间连接
0表示没有连线 1表示有连线
无向图 邻接矩阵是对称的
问题:如果图是稀疏图 矩阵中有大量的0 浪费存储空间
邻接表:每个顶点以及和顶点相邻的顶点列表组成
图的遍历:
广度优先搜索(BFS) Breadth-First Search :基于队列 入队列的定点先被探索
深度优先搜索(DFS) Depth-First Search :基于栈或者使用递归,通过将顶点存入栈中,顶点是沿着路径被探索的,存在新的相邻顶点就去访问
都需要明确指出第一个被访问的顶点
三种了颜色记录状态
白色:表示顶点 ...
数据结构 --树结构
树结构
二叉树
特性:
一个二叉树第i层的最大节点数为 2^(i-1) i>=1
深度为k的二叉树有最大节点总数为 2^k-1 k>=1
任何非空二叉树T 若n0表示叶节点的个数, n2是度为2的非叶结点个数 n0=n2+1
二叉树的存储:
使用数组:完全二叉树 取得时候左=父2 右=父2+1
最常见的方式使用链表存储
二叉搜索树(Binary Serch Tree)BST:
性质:
非空左子树所有键值小于其根节点的键值
非空右子树所有键值大于其根节点的键值
左右子树本身也都是二叉搜索树
理解: 根节点的值大于其左子树中任意一个节点的值,小于其右节点中任意一节点的值,
特性:相对较小的值总是保存在左节点上,相对较大的值总是保存在右节点上
遍历:
先序遍历: 1)访问根节点 2)先序遍历其左子树 3)先序遍历其右子树
中序遍历 1)中序遍历左子树 2)访问根节点 3)中序遍历右子树
后序遍历 1)后序遍历左子树 2)中序遍历右子树 3)访问根节点 用的比较少的层序遍历
删除操作
情况一:没有子节点
情况二:该节点有一个子节点
情况三:该节点有两个子节点: ...
数据结构 --哈希表
哈希表
哈希表通常基于数组实现
哈希表相对于数组的不足: 数据无序; 哈希表的key不允许重复
数组:1.数字进行插入操作时,效率比较低
2.数组进行查找操作的效率
1),基于索引查找操作效率很高
2).基于内容去查找(比如name=’hyp’)效率比较低
3.数组进行删除操作,效率也不高
哈希化:把大数字转化成数组范围内的下标的过程
哈希函数:把单词转成大数字,将大数字实现哈希化的代码放到一个函数中 函数就是哈希函数
哈希表:将数据插入到数组 对结构进行封装
冲突 : 解决
链地址法 就是每个数组单元中存的不是单个数据 而是一个链条- 通常用数组或者链表实现
开放地址法 寻找空的地方来添加重复的数据
线性探测 index+1 查询到空就停止 注意:删除一个数据项 不可以设置成null 可以特殊处理成(比如-1) 线性探测存在问题:数据连续插入会聚集
二次探测 优化了探测时的步长
再哈 ...
数据结构 --链表结构
链表结构
–单向链表–
封装链表类:
function LinkedList() {
//内部的类:节点类
function Node(data) {
this.data = data
this.next = null
}
//属性
this.head = null
this.length = 0
<!--hexoPostRenderEscape:<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line ...
数据结构 --集合 字典
数据结构 –集合 字典:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109//封装集合类 function Set() { //属性 this.items = {} //方法 //add Set.prototype.add = function (value) { //要判断当前集合中是否已经包含了要加入的元素 if (this.has(value)) { return false } //将元素添加到集合中 this.items[value] = value ...