自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

nanxing的博客

个人博客:https://nanxing.ltd

  • 博客(152)
  • 收藏
  • 关注

原创 JavaScript专题专栏目录

????JavaScript专题专栏目录????专题系列文章浏览器的工作原理和V8引擎JavaScript代码在浏览器内的执行过程从输入URL到浏览器显示页面的流程JavaScript内存管理、闭包和内存泄漏一文搞定JavaScript的this指向问题手写call、apply、bind函数和arguments&数组函数slice的实现函数式编程:纯函数&柯里化&组合函数⏳以前所写文章函数柯里化的解读防抖的详细解读节流的详细解读...

2021-09-16 09:56:30 313

原创 Vue2&Vue3知识目录

Vue2&Vue3知识目录Vue官网Vue Router官网Vuex官网语法篇Vue模板语法和常见的指令 Vue常见指令和key和diff算法 Vue的Option APIVue3的表单和开发模式webpack篇webpack的基础打包webpack打包其他资源Babel的使用webpack中devServer的使用及其他配置脚手架篇VueCli运行和源码思路Vite的使用语法篇Vue3组件化开发(一)Vue3组件化开发(二)Vue3组件化开发(三)Vue3

2021-07-20 17:37:03 484

原创 JavaScript异常处理

异常处理抛出错误捕获异常抛出错误通过throw关键字,抛出一个错误,让函数告知外界自己出现了错误。抛出的错误再函数的上没有被调用,会一层一层的向外边传,直到顶层JS代码还没对这个异常进行处理,那么就会报错。function foo1() { throw "error message";}function foo2() { foo1();}function foo3() { foo2();}// 直到foo3函数,都没有foo1内的异常进行处理,那么会报错foo3();

2021-11-06 09:42:14 680 1

原创 浏览器和Node的事件循环

事件循环事件循环解析浏览器内的事件循环面试题面试题一面试题二面试题三面试题3.1面试题3.2面试题3.3Node内的事件循环面试题面试题一事件循环解析进程:操作系统管理程序的一种方式。线程:操作系统能够进行调度的最小单位。JavaScript代码的执行是单线程执行的,但是为什么碰到异步函数却不会阻塞后续代码的继续执行呢?这就用到了事件循环。定义:事件循环是JavaScript代码和浏览器或者Node之间的桥梁。浏览器是多进程多线程的,在JavaScript代码执行时,知道在内存内维护着执行上

2021-11-05 19:50:38 440

原创 async和await

async和awaitasync的使用await的使用在async和await出来之前,异步回调的方法就有1、回调嵌套2、Promsie的链式回调3、Generator的复杂繁琐调用方式async/await采用同步的思维来解决异步问题的方式,使代码的可读性更强了。async的使用在函数的function关键字前加上 async,该函数就变成了 异步函数。该函数和普通函数的区别:异步函数的返回值是一个Promsie对象,相当于返回的值包裹在了Promise.resolve()内进行返

2021-11-05 19:49:06 363

原创 Interator和Generator

Iterator和GeneratorIterator认识迭代器迭代器代码认识可迭代对象可迭代对象代码内置可迭代对象可迭代对象的应用自定义类的可迭代Generator生成器的理解生成器函数的执行流程生成器的其他方法调用return方法throw方法Iterator认识迭代器迭代器:帮助遍历某个数据结构的对象。一个对象需要成为迭代器需要满足迭代器协议。迭代器协议定义了一个产生一系列对象的标准方式,在JS中 这个标准就是next方法。next方法是一个可以传入零个或者一个参数的函数,这个函数返回一个对

2021-10-26 19:20:00 369

原创 手写Promise

手写Promise手写Promise代码过程思考手写Promise代码const PROMISE_STATUS_FULFILLED = "PROMISE_STATUS_FULFILLED";const PROMISE_STATUS_PENDING = "PROMISE_STATUS_PENDING";const PROMISE_STATUS_REJECTED = "PROMISE_STATUS_REJECTED";function execFunctionThrowErr(exceFn, quer

2021-10-24 10:04:16 195

原创 DFS-油田问题

油田问题问题描述DescriptionInputOutputJavaScript 解决代码注意事项涂鸦智能秋招笔试题,很多算法题都在大学时间学到过,但是那时还没有这么完全接触前端,加上也没有去回顾复习,又还给老师了,真是书到用时方恨菜啊!问题描述Description某石油勘探公司正在按计划勘探地下油田资源,工作在一片长方形的地域中。他们首先将该地域划分为许多小正方形区域,然后使用探测设备分别探测每一块小正方形区域内是否有油。若在一块小正方形区域中探测到有油,则标记为’@’,否则标记为’*’。如

2021-10-22 13:07:55 348

原创 你不知道的Promise细节

你不知道的Promise细节异步请求处理方案Promise的基本使用Promsie的三种状态Promise的resolve参数Promse的reject参数Promise对象方法then方法catch方法finally方法Promise类方法resolve方法reject方法all方法allSettled方法race方法any方法手写Promise异步请求处理方案在ES6之前,对于网络请求的结果是通过回调函数实现的。回调函数Promise重构Promise的基本使用// 创建一个Promis

2021-10-21 20:16:14 261

原创 Vue2和Vue3的响应式原理

Vue2和Vue3的响应式原理这个其实在Vue2&Vue3专栏的源码学习部分,已经实现过,但是当时还是对部分的数据结构存在不明确的部分,比如说Proxy类,Reflect对象,Set数据结构,就没有运用这部分知识点,用了也不明确。那么这篇文章,可以在之前实现得基础上做出优化,利用ES6的新知识点数据结构#mermaid-svg-CAYEnwhHK27u2wSW .label{font-family:'trebuchet ms', verdana, arial;font-family:var

2021-10-19 19:35:27 180

原创 ES6知识点:Proxy和Reflect详解

ES6知识点:Proxy和ReflectProxy的基本使用Proxy的十三种捕获器set和get捕获器has捕获器deleteProperty捕获器getPrototypeOf捕获器setPrototypeOf捕获器isExtensible捕获器preventExtensions捕获器getOwnPropertyDescriptor捕获器defineProperty捕获器apply捕获器construct捕获器ownKeys捕获器Reflect的基本使用Reflect和Proxy一起使用Reflect.r

2021-10-16 17:31:25 419

原创 ES12常用新语法

ES12常用新语法FinalizationRegistryWeakRef逻辑赋值运算符Numeric SeparatorString.replaceAllString.replaceAllFinalizationRegistry当一个对象没有被引用时,GC算法会对其进行回收,那么FinalizationRegistry可以知道该对象在何时被回收掉。let info = { name: "fzb", age: 21 };let friend = { name: "zkl", age: 21 };

2021-10-14 21:51:00 596

原创 ES11常用新语法

ES11常用新语法BigIntNullish Coalescing OperatorOptional ChainingGlobalThisfor...in标准化BigInt在JS中最大的安全整数位 Number.MAX_SAFE_INTEGER,也就是说超过这个数的整数是不安全的const maxNum = Number.MAX_SAFE_INTEGER;console.log(maxNum); // 9007199254740991console.log(maxNum + 1); // 9

2021-10-14 21:05:09 273

原创 ES10常用新语法

ES10常用新语法flatflatMapObject.fromEntriestrimStart trimEndSymbol descriptionOptional catch bindingflatflat()方法可以深度遍历一个数组,并返回新的数组// 数组内又存在数组,数组嵌套的情况const nums = [10, 22, [4, 6], 81, [[32, 45], []], 10];const newNums1 = nums.flat(1); // 默认就是1const newNum

2021-10-14 19:05:46 281

原创 ES9常用新语法

ES9常用新语法Async iteratorsObject spread operatorsPromise finallyAsync iterators后续迭代器单独讲解Object spread operatorsObject spread operators(对象展开运算)已经讲解过:ES6:对象增强写法&解构&let/constPromise finally后续讲Promise单独讲解...

2021-10-14 14:28:09 314

原创 ES8常用新语法

ES8常用语法Object valuesObject entriesString paddingTrailing CommasObject.getOwnPropertyDescriptorsasync和awaitObject values之前可以通过Object.keys获取对象的key值,在ES8中,可以通过Object.values获取对象的值const info = { name: "fzb", age: 21,};console.log(Object.keys(info)); //

2021-10-14 14:12:40 471

原创 ES7:Array Includes&指数运算符

ES7:Array Includes&指数运算符Array Includes指数运算符Array Includes数组增加了includes方法const nums = [22, 33, 44, 55, 66, NaN];console.log(nums.indexOf(33) !== -1); // trueconsole.log(nums.includes(33)); // true// indexOf和includes的区别在于对NaN的判断console.log(nums.

2021-10-12 19:20:19 179

原创 ES6:数据结构Set和Map&WeakSet和WeakMap

ES6:数据结构Set和Map&WeakSet和WeakMapSet基本使用常见方法WeakSetWeakSet的特点基本使用WeakMap的应用Map基本使用常见方法WeakMapWeakMap的特点强引用和弱引用在ES6以前存储数据的结构有两种:数组和对象。在ES6中新增两种数据结构:Set和Map。SetSet里边的数据是不会重复的基本使用add方法添加const set = new Set();set.add(1);set.add(2);set.add(3);set.a

2021-10-12 17:57:23 259

原创 ES6:模板字符串&函数&进制&Symbol数据结构

ES6:模板字符串&函数&进制&Symbol数据结构模板字符串基本使用标签模板字符串函数参数默认值函数的剩余参数箭头函数的补充展开语法ES6中的进制Symbol数据类型基本使用Symbol其他方法模板字符串基本使用在es6之前将变量和字符串拼接到一起代码的可读性时非常的差的在ES6中出现了模板字符串const name = "fzb";const age = 21;// es6之前写法const message1 = "我的名字是:" + name + ",年龄是:

2021-10-09 15:06:41 271

原创 ES6:对象增强写法&解构&let/const

对象增强写法&解构&let/const对象的增强写法解构数组解构对象解构let/constlet/const的基本使用及注意事项let/const与作用域提升let/const和全局对象window的关系块级作用域总结:let/const和var有何不同对象的增强写法在定义对象的属性和方法时,有了更方便的简便写法var name = "fzb";var age = 21;var address = "address";var info = { name: name, /

2021-10-01 20:23:51 521 2

原创 ES6:Class类的知识补充

Class类的知识补充扩展内置类JS中实现混入JS面向对象:多态扩展内置类扩展JS内置的类// 获取数组第一个位置的元素和最后一个元素// 但是js并没有直接操作的方法,可以这样:class MsiArray extends Array { getFirstItem() { return this[0]; } getLastItem() { return this[this.length - 1]; }}// 例子:const arr = new MsiArr

2021-10-01 20:22:21 141

原创 Koa的使用

Koa的使用Koa初体验Koa中间件:路由的使用params和query参数解析json数据解析x-www-form-urlencoded数据解析form-data数据解析Koa数据响应响应结果响应码静态资源服务器错误处理Koa初体验安装:npm install koaconst Koa = require("koa");const url = require("url");const app = new Koa();// 注册中间件app.use((ctx, next) => {

2021-10-01 11:07:29 690

原创 Class类的使用和背后实现的原理

ES6语法:Class类类的基本使用类的创建方法类的构造器创建类的实例定义类的方法实例方法访问器方法静态方法类的继承类的深度解析在ES6以前,类的声明都是用function构造函数实现的,自ES6开始,可以使用class关键字来创建对象,但是 class只是构造函数定义类的语法糖,内部本质还是构造函数,原型,原型链这一套东西。类的基本使用类的创建方法class关键字创建一个类,和定义function一样,存在声明式和表达式创建// 方式一:声明式创建class Person {}// 方

2021-09-28 21:53:14 199

原创 NodeJS中http模块开发

NodeJS中http模块开发web服务器初体验request对象method的处理url的处理GET请求处理POST请求处理headers的处理response对象返回响应结果返回状态码响应头文件web服务器初体验两种创建方式const http = require("http");// 创建方式一 http.createServerconst server1 = http.createServer((request, response) => { response.end("hell

2021-09-27 09:21:40 227

原创 Node内的Buffer和Stream

Node内的Buffer和Stream邂逅Buffer字符串存储到Buffer中Buffer和文件读写的结合邂逅Stream读取流写入流pipe方法邂逅Buffer计算机中的数据都是用二进制来保存的,NodeJS用来开发服务端,就必须具备处理二进制数据的能力,通过Buffer可以操作数据字节。字符串存储到Buffer中创建Buffer实例的方式Buffer实例就类似与一个数组,可以利用下标获取对应位置的字节。const buffer1 = new Buffer("hello"); // 此方

2021-09-26 17:30:53 519

原创 原型继承关系图详解

原型继承关系图详解代码+注释 解析/*** 一个例子说明原型继承的关系*/function Person(name, age, height) { this.name = name; this.age = age; this.height = height;}/*** 原型上挂载方法*/Person.prototype.say = function () { console.log(this.name + "在说话~");};/*** 创建实例*/cons

2021-09-25 20:27:50 285

原创 JavaScript面向对象(四)

JavaScript面向对象(四)原型赋值继承寄生组合式继承原型式继承寄生式继承寄生组合式继承的实现简便方法原型判断方法补充hasOwnPropertyin 操作符instanceofisPrototypeOf原型赋值继承在上篇文章中,借用构造函数方法实现继承还是存在弊端:父构造函数多次调用,而且在将父类实例传给子类原型对象时,里面的变量是会额外存在一份的。那么可以这样:function Person(name) { this.name = name;}Person.prototype.sl

2021-09-25 17:27:41 98

原创 实验十四:导出与导入

实验十四:导出与导入实验目的      掌握常用的数据导出、导入工具的使用。实验内容1.调用EXP和IMP备份数据库(将hr模式下的employees表导出、导入)。并将所有执行正确的PL/SQL语句记录下来。2.调用EXPDP和IMPDP备份数据库(将hr模式下的表或该用户模式或表空间导出、导入)。并将所有执行正确的PL/SQL语句记录下来。导出:导入:3.使用SQL*Loader导入外部数据,数据文件见:某班同学的成绩.xls。

2021-09-25 09:17:24 356

原创 实验十三:用户与角色管理

实验十三:用户与角色管理实验目的    掌握用户与角色的管理。实验内容1. 用户管理(本练习将创建一个本人姓名首字母的用户(例如:张三,则创建的用户为zs),密码为m**(**指本人学号的后两位)),并为其分配相应的系统权限和角色,以便可以在数据库中执行相应的操作。将所有执行正确的PL/SQL语句记录下来。(其中n为本人学号的末两位)(1) 使用SYSTEM身份连接到数据库。(2) 创建用户账号(本人姓名首字母),其口令为自设,默认表空间为USER

2021-09-25 09:16:28 859

原创 实验十二:表空间管理与维护

实验十二:表空间管理与维护实验目的熟悉表管理(创建、修改、创建约束、删除等)操作。熟悉表空间的创建与维护操作。实验内容1.表管理(1)创建一个员工信息表emp1,并自行向emp1表中插入4条记录。(2)在eno字段上创建主键约束。(3)在ename字段上创建非空约束。(4)创建和emp1表字段相同的cp_emp表,将cp_emp表的eno字段与emp1表的eno字段创建外键约束。(5)删除所建的外键约束。2.练习在SQL*Plus环境下创建各种表空间,并操作表空

2021-09-25 09:15:49 378

原创 实验十一:程序包

实验十一:程序包实验目的     熟悉掌握程序包的创建和使用。实验内容1、创建一个程序包(包名称用户自拟),其功能有:(1)求数n的阶乘。(2)求数n的前n项之和。要求:在程序包创建成功后实现对该程序包的使用。将所有执行正确的PL/SQL语句记录下来。2、已知STU表结构如下创建manage_stu_pkg程序包,对学生进行管理。其功能有:(1)新增学生;(2)获取学生姓名(通过学生编号获取);(3)更新学生年龄(更新某一学生编号

2021-09-25 09:11:14 340

原创 实验十:触发器

实验十:触发器实验目的     熟悉掌握触发器的创建和使用。实验内容1、参见教材P158/7.3.2中(1)~(3)步骤,练习在Hr模式(或用户自己创建的表)下创建一个语句级触发器。将所有执行正确的PL/SQL语句记录下来。2、参见教材p172,练习在hr模式(或用户自己创建的表)下创建一个行级触发器。将所有执行正确的PL/SQL语句记录下来。...

2021-09-25 09:09:10 513

原创 实验九:函数的使用

实验九:函数的使用实验目的     熟悉掌握函数创建和使用。实验内容1. 编写函数fun,其功能是:计算并输出下列多项式的值:Sn=1+1/1!+1/2!+1/3!+…+1/n!。例如,在函数时从键盘给n输入15,则输出结果为:Sn=2.718282。将所有执行正确的PL/SQL语句记录下来。2、在SCOTT模式下创建一个函数:该函数的功能为输入雇员号,返回emp表中该雇员姓名。并且完成对该函数的调用。将所有执行正确的PL/SQL语句记录下来。

2021-09-24 23:11:28 395

原创 实验八附加:存储过程

实验八附加:存储过程实验目的     熟悉掌握存储过程的创建和调用,以及存储过程中不同参数类型(IN参数、OUT参数)的使用。实验内容1、创建一个存储过程,以一个整数为参数,输出scott模式下emp表中工资最高的前几个(参数值为多少,就显示排名前几位的工资)员工的信息。 存储过程创建成功后并执行,将所有执行正确的PL/SQL语句记录下来。2、创建一个存储过程,对scott模式下emp表进行操作,要求:以员工号和部门号作为参数,将员工所在的部门修改为

2021-09-24 23:10:37 635

原创 实验八:存储过程

实验八:存储过程实验目的     熟悉掌握存储过程的创建和调用,以及存储过程中不同参数类型(IN参数、OUT参数)的使用。实验内容1、存储过程IN参数的应用。练习在SCOTT模式中创建存储过程,并使用过程访问其中的数据表。将所有执行正确的PL/SQL语句记录下来。(1)创建用于向DEPT表中插入记录的过程(过程名自拟)。(2)请使用两种方法调用该过程。方法一:方法二:两条输入的结果:2. 存储过程OUT参数的应用。练习在SCOTT模式中

2021-09-24 23:05:16 1152

原创 实验七-附加:PL/SQL编程基础(2)

实验七-附加:PL/SQL编程基础(2)实验目的熟悉掌握PL/SQL编程中游标的定义和使用。熟悉掌握PL/SQL程序的异常处理。实验内容1、练习使用游标(带参游标)。用显式游标查询SCOTT模式下emp表中某部门某工种的员工编号(empno)和姓名(ename),要求:显式游标的参数为该员工的部门号(deptno)和工种(job),利用带参数的显式游标根据部门号和工种这两个参数,显示该部门、该工种的员工编号和姓名信息。例如,若给定的参数是部门号(10),工种(CLERK),则显示部

2021-09-24 23:04:13 433

原创 实验七:PL/SQL编程基础(2)

实验七:PL/SQL编程基础(2)实验目的熟悉掌握PL/SQL编程中游标的定义和使用。熟悉掌握PL/SQL程序的异常处理。实验内容1、练习使用游标,包括隐式游标、显式游标和游标FOR循环。(1)在SCOTT模式下显示工资排名前5的员工的编号、姓名和工资,并将所有执行正确的PL/SQL语句记录下来。①使用隐式游标。②使用显式游标。③使用游标for循环2.预定义异常的应用:在SCOTT模式下,由员工编号(员工编号由用户任意输入)查找EMP表中的某一员工的姓名。若查找成

2021-09-24 23:03:19 784

原创 实验六附加:PL/SQL编程基础(1)

实验六附加:PL/SQL编程基础(1)实验目的熟悉掌握PL/SQL编程中的变量定义语句熟悉掌握PL/SQL编程中的条件语句和循环语句等流程控制语句。能熟练使用上述基本语句编写PL/SQL代码完成指定的数据处理功能。实验内容1、创建一个表stu,该表只有一个字段sno 类型是number(2),编写一个块,向stu表中添加数字1到10,但不包括4和7。(1)创建表格。(2)使用PL/SQL块向stu表中添加数据。2、为Scott用户下的emp表增加一个列stars,

2021-09-24 11:24:07 552

原创 JavaScript面向对象(三)

JavaScript面向对象(三)JavaScript原型链Object的原型顶层原型创建Object对象的内存图Object是所有类的父类原型链实现继承借用构造函数实现继承面向对象的三大特性:封装、继承、多态本文主要内容:利用JavaScript原型链实现继承。JavaScript原型链每一个对象都有原型,指向另一个对象,另一个对象也有自己的原型,就这样由原型的原型构成的链条就叫原型链。原型链的尽头如果一个原型链是,没用尽头的,那么在查找一原型链上不存在的属性时,就会一直查找下去,存在死

2021-09-24 11:15:59 435 1

原创 JavaScript的面向对象(二)

JavaScript的面向对象(二)创建多个对象的方案创建对象方案:工厂模式构造函数模式什么是构造函数构造函数创建对象的过程构造函数+原型 模式原型原型对象上的 constructor构造函数+原型实现上述例子内存图构造函数赋值新的原型对象创建多个对象的方案在上一篇文章JavaScript的面向对象(一),知道了创建对象的方式,那么可以参考一下,用来批量创建对象。如:创建学生1,学生2,学生3,具有学号,姓名,学习属性。这种方法是可以,但是存在大量的重复代码,存在一系列问题,要批量创建一些类相似的

2021-09-23 17:07:12 168

空空如也

空空如也

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

TA关注的人

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