自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 vue变化侦测

文章目录1.什么是watcher2.递归侦测所有key3.关于Object的问题4.总结1.什么是watcherwatcher是一个中介的角色,数据发生变化时通知它,然后它在通知其他地方。关于watcher,看一个使用它的例子://keypathvm.$watch('a,b,c', function(newVal, oldVal){ //do something})这段代码表示data.a.b.c属性发生变化时,触发第二个参数中的函数。那么如何实现这个功能呢?只要把这个watcher实

2022-01-27 21:07:48 976

原创 VUE之object变化侦测

文章目录1.什么是变化侦测2.如何追踪变化1.什么是变化侦测Vue会自动通过状态生成DOM,并将其输出到页面上显示出来,这个过程叫渲染。Vue的渲染过程是声明式的,我们通过模板来描述状态与DOM之间的映射关系。通常,在运行时应用内部的状态是不断发生变化的,此时需要不停地重新渲染。这时如何确定状态中发生了什么变化?变化侦测就是来解决这个问题的,它分为两种形式,一种是推(push)一种是拉(pull)。vue的变化侦测属于推。当状态发生变化时,Vue立刻就知道了,而且在一定程度上知道哪些状态发生变化了。

2022-01-25 19:09:14 818

原创 JavaScript中的表单验证

文章目录1.什么是表单验证2.常见的表单验证1.什么是表单验证大多数网站的注册页面中,都会要求用户输入生日,我们知道日期的格式是yyyy-MM-dd并且由数字组成,中间不允许出现字母或是其他符号,如果填写格式与日期格式不符合,name注册将失败,这种操作就是表单验证的体现。表单验证就是js在数据被送往服务器前,对html表单中的数据进行验证的过程,在验证所有信息均符合要求之后,经表单提交到服务器由服务器进行数据处理。常见的表单验证有:表单中的必填项目、输入的邮件是否合法,输入日期是否合法等。2.常见

2022-01-10 20:40:11 5633

原创 JavaScript中的事件

文章目录1.单击事件2.鼠标事件3.键盘事件4.表单事件5.窗口事件1.单击事件首先看一个示例:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>点击事件</title></head><script type="text/javascript"> function btnCharge_Cl

2022-01-05 22:27:44 697

原创 JavaScript内置对象2

文章目录1.内置对象window2.内置对象document2.1 案例13.内置对象location4.内置对象history5.内置对象Screen1.内置对象window浏览器运行js代码时,需要使用window对象,又称为浏览器对象。window对象是js对象结构中的顶级对象,代表一个浏览器框架,会在<body>标签出现后自动创建。window对象作为浏览器中等级最高的对象,有一些常用的方法。alert 显示弹窗confirm 显示一个对话框open 打开一个新的浏览器窗口

2022-01-04 20:10:41 825

原创 JavaScript内置对象1

文章目录1.Array与Hash1.案例12.内置对象Date2.1案例22.2案例31.Array与Hash用几个案例来一起看一下内置对象:1.案例1要求利用变量保存数据,再用document.write()将变量输出。要求是,显示一组水浒传人物信息,包含4个元素,每一个元素又包含名字和绰号。那么只需要把这8个数据分别保存到8个变量中,然后将变量打印即可。var name1, name2, name3, name4;var byname1, byname2, byname3, byname4;

2022-01-04 19:34:32 574

原创 BOM与DOM

文章目录1.概述2.BOM3.window.navigator1.概述通常情况下,页面中的js代码都有一系列可以访问的对象,他们可以分成以下几种情况。ECMAScript核心对象DOM:当前载入页面所拥有的对象BOM:页面以外事务所拥有的的对象其中,DOM意为文档对象模型,而BOM意为浏览器对象模型DOM是标准。BOM则不是任何标准的一部分。它的一部分对象集合得到了所有的主流浏览器的支持,而另一部分则属于特定浏览器的特性。由于HTML5将各个浏览器的通用行为进行了标准化,所以其中包含了通用

2021-12-27 22:38:45 155

原创 用JavaScript实现一个小图形

1.分析首先,我们要将所有对象的公共部分定义成一个构造器,即Shape。然后基于这个构造器分别构建Triangle、Rectangle和Square构造器,它们将全部继承于Shape。其中,,Square实际上可以当做一个长宽度相等的Rectangle。因此构建Square时可以直接重用Rectangle。下面,我们来定义Shape对象,首先先定义一个带坐标的point对象和其长宽度。图像的周长一般是其各边长度的综合,而计算一个图形的面积的公式则随图形不同有较大差异,应该由这些图形自己来实现。SHap

2021-12-27 20:45:37 772

原创 JavaScript的继承(4)

文章目录1.引用拷贝2.对象之间的继承关系3.多重继承1.引用拷贝对象类型(包括函数和数组)通常都是以引用的形式来进行拷贝的,这有时候会导致一些预期不同的结果。下面,创造两个构造器函数,并在第一个构造器的原型中添加一些属性:function Papa(){}function Wee(){}Papa.prototype.name = "Bear";Papa.prototype.owns = ["porridge", "chair", "bed"];现在让Wee继承Papa:extend2(

2021-12-21 22:11:52 671

原创 JavaScript中的继承(3)

文章目录1.uber-子对象访问父对象的方式2.将继承部分封装成函数3.属性拷贝1.uber-子对象访问父对象的方式在一般的面向对象语言中,通常都会提供一种用于子类访问父类的特殊语法,因为我们在实现子类方法时往往要父类方法的额外辅助。在这种情况下,子类通常就要去调用父类中的同名方法,以便最终完成工作。JS中虽然没有这种语法,但是可以实现类似功能。接下来,在之前构建的继承关系中引入一个uber属性,并令其指向父级原型对象。function Shape(){}// augment protot

2021-12-15 22:20:57 624

原创 JavaScript中的继承(2)

文章目录1.将共享属性迁移到原型中去1.将共享属性迁移到原型中去当用某一个构造器创建对象时,其属性就会被添加到this中去。并且当被添加的属性实际上不会随着实体改变时,这种做法其实时效率低的。例如,Shape()构造器是这样定义的:function Shape(){ this.name = 'Shape';}这种实现意味着我们用new Shape()创建的每个实体都会拥有一个全新的name属性,并在内存中拥有自己独立的存储空间。我们也可以选择name属性添加到原型上去,这样一来所有实体就可以共

2021-12-15 19:39:53 671

原创 JavaScript中的继承(1)

文章目录1.js的面向对象思想2.原型链1.js的面向对象思想在之前的学习中,我们已经涉及了对象、方法和属性。同时,js中没有类的概念,但是可以用构造器函数来实现相同的功能。对于封装,对象本身就包括数据以及与这些数据相关的方法。对于聚合,一个对象中也包含其他对象。2.原型链...

2021-12-14 22:34:40 811

原创 JavaScript的原型

文章目录1.原型属性2.利用原型添加方法和属性3.使用原型的方法和属性4.自身属性与原型属性5.利用自身属性重写原型属性1.原型属性在js中,函数本身也是一个包含了方法和属性的对象。prototype首先先定义一个函数:function foo(a, b){ return a * b;}>foo(2, 3);在函数定义时被创建的属性中就有prototype属性,其初始值是一个空对象。2.利用原型添加方法和属性先构造一个具体的构造器函数Gadget()function Gadg

2021-12-03 19:01:07 359

原创 javascript的对象

文章目录1.从数组到对象2.访问对象的属性3.调用对象方法4.修改属性与方法5.使用this关键字6.构造器函数1.从数组到对象之前,我们已经介绍过了数组,是一个数据集合,通过索引【下标】可以访问该位置的元素。对象的情况和数组很相似,唯一不同的是键值类型是自定义的,即索引不再局限于数组了。var person{ name: "zhangsan", age: 18}有一个表示该对象的变量名:person与定义数组时使用的[]不同,定义对象使用的是{}{}中用逗号分割的是组成该对象的元素

2021-12-02 20:47:28 569

原创 javascript中的函数

关于js函数的详细介绍~

2021-12-01 20:00:56 3314

原创 javascript中的数组

文章目录1.js的数组声明一个空的数组定义一个数组2.访问数组中的元素3.增加、更新数组元素4.删除元素5.数组中的数组1.js的数组与其他变量类型一样,js中也可以声明数组和定义数组。声明一个空的数组var arrya = [];这样,就声明了一个名为array的空数组。定义一个数组var array = [1,2,3];这样,就定义一个有三个元素1,2,3的数组。2.访问数组中的元素与其他常见的编程语言一样,js中访问数组的元素也是用下标【索引】来实现的。var array =

2021-12-01 16:58:10 780

原创 js的变量和数据类型

1.数据类型基本类型:数值型字符串类型对象类型布尔类型函数类型特殊的值:undefined 未定义,所有js变量未赋初始值的时候,默认值为undefinednull 空值NAN 非数字,非数值2.定义变量的格式var 变量名使用typeof()可以查看变量的数据类型2.关系运算><>=<=== 等于 是简单的字面值的比较=== 全等于 除了简单的字面值的比较,还有数据类型的比较比如var a = 12var b =

2021-11-16 19:18:51 424

原创 JavaScript初识

与其他后端语言不一样,JS运行在客户端,需要浏览器解析执行代码。在HTML文件中,有两种方式引入js代码:1.在<head>或<body>标签中写js代码。js代码存在于<scripts>标签中2.通过<scripts>标签导入整个js文件先单独写一个js文件然后在HTML文件中引入这个文件这两种方法都是可行的,看一下效果:...

2021-11-16 17:22:52 719

原创 HTML之列表

1、列表1.HTML支持有序列表和无序列表无序列表使用<ul></ul>标签定义。列表中的每个列表项使用<li></li>定义。有序列表使用<ol></ol>标签定义。列表中的每个列表项使用<li></li>定义。在<ol>标签中使用type属性,可以指定不同类型的有序列表。例如,指定type=“A”,那么列表就是按照ABCD来排序的,指定type=“a”,列表就是按照abc

2021-11-15 18:48:30 299

原创 HTML之图像、表格

1、插入图像1.图像由<img>标签定义。同时,<img>是空标签,只包含属性,并且没有闭合标签,不能成对出现。需要使用源属性src来指向图片的地址。2.也可以使用alt属性放在<img>标签中,alt的属性的值是一串文本文本,当src指向的地址的图片无法加载的时候,alt中的文本就会显示在原来图像的地方。3.可以使用width和height指定图像的高度和宽度。指定以后,图片就可以按照设置的大小显示在浏览器页面上。4.可以使用border属性指

2021-10-25 17:51:27 1150

原创 HTML之属性,标题,段落,文本格式化

1.HTML属性在HTML元素中可以设置属性,在属性中可以添加附加信息。同时,属性在开始标签中描述,也就是写在前面的尖括号中,并且一般是按照键=值的形式来写。比如,在定义链接时,<a herf="www.baidu.com">这是百度的网址</a>此时, herf就是属性,属性的值就是www.baidu.com,这是百度的网址就是附加信息。2.标题标题(Heading)是通过 <h1>-<h6> 标签进行定义的。<h1> 定义最大

2021-10-15 14:23:10 251

原创 HTML5学习之入门

1.第一个例子<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>这是我的第一个页面</title></head><body><h1>我的第一个标题</h1><p>我的第一个段落</p></body></html>这是一个

2021-10-15 11:20:38 97

原创 python模块中的__name__属性

模块是一个包含所有定义的函数和变量的文件。模块可以被别的程序引入。1.__name__属性一个模块被另一个程序第一次引入时,其主程序将运行。如果在模块被引入时,其中的某一程序块不执行,可以使用__name__属性来让该程序仅在模块自身运行时执行。这里举个例子:创建一个test0823.py的文件里面有俩功能,一个是创建一个字典并打印,一个是使用__name__属性,当这个模块自身被执行时,就打印程序在自身运行当这个模块被其他模块引入时,就打印我来自另一模块。首先运行这个模块自身,看打印

2021-09-18 15:56:48 247

原创 Python中的集合

Python中也有一种数据类型——集合(set)1.集合的定义可以使用{}或者set()来创建一个集合。创建一个空集合的话必须使用set(),而不能使用{},,因为{}是用来创建空字典的。集合是一个无序的不重复的元素序列。s = {"a", "b", "c"}2.集合的操作①添加元素add()将元素添加到集合中,如果元素已经存在,则不进行任何操作。s.add("d")print(s){"a", "b", "c", "d"}同时,update()也可以添加元素,而且参数可以是列表

2021-09-18 14:39:06 4603

原创 Python中的字典

python中有一种特殊的数据类型——字典1. 字典的定义字典可以存储任意类型对象,使用key-value作为映射关系。每一对键值对间使用,隔开,整个字典包括在{}中。例如:dict = {'first':"1", 'second':"2", 'third':"3"}在字典中,键必须是唯一的,不能重复。在访问字典的值时,可以通过对应的键来访问,例如:print(dict['first'])12. 针对字典的操作①修改字典向字典中添加或者修改内容的操作是一样的。如果当前键值

2021-09-18 11:45:37 150

原创 Python之列表

1.列表定义一个列表列表的定义和使用都和数组比较类似。list1 = ["1","2","3"]此时打印列表,则显示:print(list1)["1","2","3"]同时,列表也有比数组强大的一点,列表中能够存放不同数据类型的数据,列表中可以存放整型,浮点型,字符串,甚至列表等等。例如:list2 = [12 , "十二"]此时,打印此列表,则会显示:print(list2)[12 , "十二"]同时,使用type函数查看数据类型,发现数据类型并没有没改变,仍旧是一个是

2021-09-14 20:12:31 35

原创 Python的字符串操作

1.构造字符串我们知道,Python构造字符串可以使用一对单引号或双引号来完成。a = 'aaa'b = "bbb"2.字符串截取str[]a = "hello world"print (a[0:4])此时打印结果就是hell,也就说明[a,b]的方法作用的区间是前闭后开的。print(a[:3])此时打印的结果就是hel,也就是说当[]中第一个参数缺省的时候,默认为字符串起点的位置。a = "hello world"print(a[7:])打印结果是orld,也就是说当中

2021-09-12 16:29:56 123

原创 Python的数据类型

1.Python的数据类型稍微对Python对了解一点的同学知道,Python中定义变量是不需要指定数据类型的。从大的方面来看,Python有两种数据类型,即数字型和非数字型。2.数字型的数据类型数字型的数据类型有:整型int浮点型float布尔型bool复数型complex对于布尔型来说,只有两种情况True和False。在一般使用过程中,0即是假,非0就是真。3.非数字型的数据类型字符串列表元组字典我们可以使用type函数来查看变量对应的类型。4.字符串拼接在Pyth

2021-09-12 15:49:46 190

原创 初识Redis,redis的常用命令

文章目录1.Redis的数据类型2.基本的redis命令①键命令②字符串命令③哈希命令④列表命令⑤集合命令⑥有序集合命令1.Redis的数据类型Redis支持五种数据类型:String 字符串hash 哈希list 列表set 集合sorted set 有序集合2.基本的redis命令使用 ./redis-cli启动redis①键命令命令解释keys *查看所有键del keyname删除指定名字的键exists keyname检查

2021-08-12 18:55:22 196

原创 剑指offer之链表中倒数第k个节点

1.题目描述输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业

2021-07-05 17:33:30 48

原创 浪漫相遇——剑指offer之两个链表的第一个交点

1.题目描述输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为

2021-07-02 21:44:08 149 2

原创 剑指offer之第一个只出现一次的字符

1.题目描述在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。示例:s = “abaccdeff”返回 “b”s = “”返回 " "来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2.思路分析这个题目介绍两种解法,第一种是字符串操作,第二种是

2021-07-02 21:21:44 46

原创 动态规划解决连续子数组的最大和问题

1.题目描述输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业

2021-07-02 20:36:08 247

原创 迷津解惑 —— 剑指offer之转圈圈的顺时针打印矩阵元素

1.题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shun-shi-zhen

2021-07-01 21:18:24 94

原创 剑指offer之删除链表的节点

1.题目描述给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], val = 1输出: [4,5,9]解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的

2021-06-30 21:12:17 45

原创 剑指offer之调整数组顺序奇数在偶数之前

1.题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof著作权归领扣网络所有。商

2021-06-30 19:47:40 47

原创 剑指offer之二叉树镜像

1.题目描述请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入:镜像输出:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2.解决思路这是一个二叉树问题,首先想到的就是使用递归去解决。从根节点开始,递归地遍历数组。将叶子节点进行左右翻转。递归退出的条件是root==null演示一下这个代码。

2021-06-30 17:51:53 39

原创 黑盒测试的常见测试方法

黑盒测试也称为功能测试,测试中把被测试的软件当成一个黑盒子,不关心盒子的内部结构是什么,只关心软件的输入数据与输出数据。与之相对应的概念是白盒测试。一般有这几种测试方法,等价类,边界值,因果图,正交法,错误猜测法和场景法。1.等价类等价类:把输入(特殊情况下才考虑输出)划分成若干个等价类,从每一个等价类选一个测试用例进行测试,如果这个测试用例测试通过,那我们就说这个测试用例代表的等价类测试通过。有效等价类:根据需求规格说明,有意义的输入的数据集合,称为有效等价类。无效等价类:根据需求说明,不符合规格

2021-06-21 19:10:23 1270

原创 TCP和UDP的区别

TCP和UDP的区别大方面也就一句话:TCP有连接, 可靠。UDP无连接, 不可靠。1.UDP的特性无连接,不可靠。面向数据报。(发送和接收都只能一次完成。应用层交给他多长数据,就一次发多长,不能拆分,也不能合并)UDP的缓冲区。(没有发送缓冲区,有接收缓冲区。发送方不关心对方是否能接受到,接收方可能要接收多个。)发送大小受限2.TCPTCP是有连接的,就是三次握手四次挥手。可靠就是说TCP有安全机制。具体的有:确认应答机制超时重传机制连接管理机制流量控制拥塞控制..

2021-06-19 18:03:12 50 2

原创 当浏览器输入一个URL后回车会发生什么

当在浏览器中输入一个URL后回车,从大的方面来看有这几部

2021-06-19 17:52:39 174

空空如也

空空如也

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

TA关注的人

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