- 博客(72)
- 资源 (1)
- 收藏
- 关注
原创 【前端面试】JavaScript-异步原理:单线程模型、消息队列、setTimeout、事件循环、Promise及实现、await/async、面试题
参考文章:[1]JavaScript 单线程模型 - W3Cschool[2]并发模型与事件循环 - MDN[3]JavaScript中的事件循环与消息队列[4]一篇搞定(Js异步、事件循环与消息队列、微任务与宏任务)- 知乎[5]终于明白的JS——消息队列与事件循环 - CSDN[6]Promise - MDN[7]then - MDN[8]catch - MDN[9]Promise实现原理(附源码)- 掘金[10]xieranmaya/Promise3 - Github[11]as
2022-05-19 17:06:29
620
原创 【毕业设计】基于Node.js实现统计项目中指定格式文件代码行数
因为最近毕业设计要写答辩ppt,里面需要统计工作量,因此写了一个用来统计代码行数的小demo。
2022-05-06 23:21:27
489
原创 【基础学习】操作系统学习笔记 - 内存管理:内存使用与分段、内存分区与分页、多级页表、快表、段页式内存管理的实现、内存的换入换出
在中国大学MOOC上学习操作系统希望看视频可以直接点击 哈工大-操作系统课程MOOC内存使用与分段(Memory and Segmentation)如何让内存用起来?依然需要从计算机如何工作开始,我们只需要将程序放入内从中,让PC指向开始的地址即可。直观想法假设编译后main的地址相对入口(entry)偏移40,那么就可以直接call 40即可调用main了。计算机是如何跑main的?因为代码都在磁盘中,所以先磁盘读,然后将内容写到内存:entry放在内存0号地址,并写入call 4
2022-04-18 17:32:55
1515
1
原创 【基础学习】操作系统学习笔记 - 进程与线程:进程同步与信号量、信号量临界区保护、信号量的代码实现、死锁处理
在中国大学MOOC上学习操作系统希望看视频可以直接点击 哈工大-操作系统课程MOOC进程同步与信号量(Processes Synchronization and Semaphore)除了切换和调度,在多进程图像中,进程间的合作也应当是合理有序的。进程合作:多进程共同完成一个任务司机与售票员:借助信号1. 司机启动车辆前向售票员确认已经关好车门2. 售票员开门前要向司机确认已经停好了生产者-消费者实例实例解释:BUFFER_SIZE标记Buffer的最大值counter作为指示当前
2022-04-16 16:11:38
1268
1
原创 【基础学习】操作系统学习笔记 - 进程与线程:实现内核级线程切换、CPU调度策略、调度算法实例
在中国大学MOOC上学习操作系统希望看视频可以直接点击 哈工大-操作系统课程MOOC操作系统的那棵“树”(The Tree of OS)ideasCPU运转,需要将一段程序然后设好PC交给CPU去执行。将CPU用于执行程序但是CPU并没有好好运转,因为它遇到I/O的阻塞。解决这个问题,有了多进程,我们让PC跳转,就可以并发地让CPU执行程序。多进程出现了我们使用栈结构来完成跳转的操作结果遇到了一个栈 + Yield 造成混乱的问题,怎么让PC回到204代码段?使用两个栈+两个用
2022-04-13 17:25:41
590
原创 【基础学习】操作系统学习笔记 - 进程与线程:多道程序、并发、多进程、用户级线程、内核级线程
在中国大学MOOC上学习操作系统希望看视频可以直接点击 哈工大-操作系统课程MOOCCPU管理的直观想法CPU通电后发生了什么?以下面的指令为例CPU发送一个地址50,即PC=50,也就是将50放在地址总线上内存从50中取出指令,传回CPU的指令寄存器中(IR)CPU执行指令:将100地址中的值赋给ax寄存器PC++CPU执行指令:将101地址中的值赋给bx寄存器PC++CPU执行指令:ax + bx(一般直接将ax+bx放到ax中再取走)问题如果只是按照上面的使用方法,只是
2022-04-12 19:41:11
1506
原创 【基础学习】操作系统学习笔记 - 操作系统基础:简介、计算机架构、系统调用、操作系统历史
在中国大学MOOC上学习操作系统希望看视频可以直接点击 哈工大-操作系统课程MOOC什么是操作系统是计算机硬件和应用之间的一层软件帮我我们高效地使用硬件,比如开多个终端可以管理CPU、内存、终端、磁盘、文件、网络、电源、多核心/分布式硬件要学什么操作系统提供的接口printf;使用CPU:fork;使用文件:open、read能理解真实操作系统的运转一段文字是如何写到磁盘上的printf(“hello”)到底怎么回事设计并实现操作系统这个就有点难了…,能修改或者
2022-04-11 22:16:29
2994
1
原创 【运维学习】Linux学习笔记-权限管理、任务调度、磁盘、网络配置、进程管理、RPM与YUM
跟着尚硅谷的Linux教程学习看视频可以直接点击 b站视频地址权限管理Linux组在 linux 中的每个用户必须属于一个组,不能独立于组外。在 linux 中每个文件有所有者、所在组、其它组的概念。所有者所在组其它组改变用户所在的组文件/目录所有者一般为文件创建者,谁创建了该文件,就自然地成为该文件的所有者。查看文件的所有者ls -ahl(a:all,h:human,l:long list formatting)左边是所有者,右边是所在组,默认情况下所在组就是所有者的所在
2022-04-06 14:57:21
1255
原创 【运维学习】Linux学习笔记 - Shell入门
跟着尚硅谷的Linux教程学习看视频可以直接点击 b站视频地址实例代码在最下面。为什么要学习Shell 编程Linux 运维工程师在进行服务器集群管理时,需要编写 Shell 程序来进行服务器管理。对于 JavaEE 和 Python 程序员来说,工作的需要,你的老大会要求你编写一些 Shell 脚本进行程序或者是服务器的维护,比如编写一个定时备份数据库的脚本。对于大数据程序员来说,需要编写 Shell 程序来管理集群。Shell是什么Shell 是一个命令行解释器,它为用户提供了一个
2022-04-05 15:49:51
1288
原创 【运维学习】Linux学习笔记-开关重启指令、用户管理、实用指令、权限管理、任务调度、磁盘、网络配置
跟着尚硅谷的Linux教程学习看视频可以直接点击 b站视频地址关机、重启和用户登录注销关机&重启指令shutdown(要有root权限)shutdown -h now 立即关机shutdown -h 1 1分钟后关机shutdown -r now 立刻重启计算机halt直接使用,等价于关机reboot重启系统poweroffpoweroff -f 强制关机关机同时关闭电源,会发送一个ACPI信号通知系统关机,在多用户方式下(run level3)下不
2022-04-04 22:24:23
1563
原创 【运维学习】Linux学习笔记-准备工作-简介、安装CentOS、安装VMwareTools、Linux文件系统目录、安装XShell和XFTP、Vim的使用
跟着尚硅谷的Linux教程学习看视频可以直接点击 b站视频地址课程内容这一部分都学这一部分只学shellLinux的方向应用领域个人桌面(弱)服务器领域(强)嵌入式领域linux内核可以定制,比如安卓的内核就是linux学习路径linux 环境下的基本操作命令,包括 文件操作命令(rm mkdir chmod, chown) 编辑工具使用(vi vim)linux 用户管理(useradd userdel usermod)等linux 的各种配置(环境变量配置,网络配置
2022-03-31 09:59:36
1466
原创 【前端学习】React学习笔记-ReactRouter6
跟着尚硅谷的天禹老师学习React看视频可以直接点击 b站视频地址概述在2021年11月,React官方将ReactRouter6调整为ReactRouter的默认版本1.React Router以3个不同的包发布到npm上,它们分别为:react-router:路由的核心库,提供了很多的组件和钩子。react-router-dom:包含了react-router所有内容,并添加了一些专门用于DOM的组件,例如<BrowserRoute/r>react-router-native
2022-03-30 14:57:22
1564
原创 【前端学习】React学习笔记-react扩展:hook、组件通信、setState、lazyLoad、Context、Fragment、组件优化、render props、错误边界
react扩展:hooks、组件通信、ssetState、lazyLoad、Context、Fragment、组件优化、render props、错误边界
2022-03-28 23:37:57
566
原创 【前端学习】React学习笔记-redux、纯函数、打包
跟着尚硅谷的天禹老师学习React看视频可以直接点击 b站视频地址简介redux是什么redux是一个专门用于状态管理的JS库(不是react插件库)它可以用在react,angular,vue等项目中,但基本与react配合使用。作用:集中式管理react应用中多个组件共享的状态redux在什么情况下使用某个组件的状态,需要让其他组件可以随时拿到(共享)一个组件需要改变另一个组建的状态(通信)总体原则:能不用就不用,除非比较难以实现的时候再用。redux的三个核心概念a
2022-03-28 13:02:19
1360
原创 【前端学习】React学习笔记-使用antd
antd参考antd官网:在 create-react-app 中使用使用输入指令 npm install antd 安装antd注意antd需要自己手动引入样式。import 'antd/dist/antd.css'文档如果需要看详细的教程,需要看3.x版本的文档。基本使用App.jsimport React, { Component } from "react";import { Button,DatePicker } from "antd";import 'antd/dist
2022-03-27 15:46:54
1709
原创 【前端学习】React学习笔记-路由
跟着尚硅谷的天禹老师学习React看视频可以直接点击 b站视频地址SPA的理解单页Web应用(Single Page Application)整个应用只有一个完整的页面简单来讲就是只有一个html文件,比如React脚手架搭建后只有一个放在public文件夹的index.html点击页面中的链接只会做部分界面的更新。数据都需要通过ajax请求获取,并在前端异步更新路由的理解可以理解在页面组织过程中,以路径作为键,以组件作为值得映射过程。什么是路由一个路由就是一个映射关系key
2022-03-26 22:59:10
1201
原创 【毕业设计】基于express搭建后端:统一网关层、自动导入路由、身份验证体系、CORS解决跨域问题、文件上传下载功能
统一网关层的实现给毕业设计搭架子的时候,因为设计的缘故,需要有一个前端后端统一的网关层,来实现自动拦截错误等功能,比如:{ code:0, message:'ok', data:{}}前端如果读到code == 0 的情况,可以自动放行,其他数值就会报错并打印错误信息。这样的话,后端就需要对每种可能性都要写出多余的code和message,不利于代码后期的维护,最后就选择了修改express的错误处理中间件来做一个响应的统一收口处理。下面是express的默认处理方式:app.use(
2022-02-20 17:01:03
770
原创 【算法设计】javascript 比较两个不同的对象
比对两个数据结构相同的对象并返回两个对象中值不同的键BFS版var time = new Date()var obj1 = { a: 1, // b: { c: 1, // d: 2 // }, e: [1, 2, 3], // 每个都是 f: '123', // g: { h: 3, // i: 5, // j: { k: 1, //
2021-10-27 16:18:07
1153
原创 【文档翻译】Cypress - Best Practices - 最佳实践
官方文档目录:一、组织测试、登录、控制状态二、 选择元素三、Assigning Return Values四、访问外部站点五、Having tests rely on the state of previous tests六、Creating “tiny” tests with a single assertion七、Using after or afterEach hooks八、非必要的等待九、Web Servers十、设置一个全局的baseUrlReal World Pract
2021-10-14 14:49:43
679
原创 【面试题】前端性能优化
参考文章:前端性能优化 24 条建议前端必会!四步带你吃透浏览器渲染基本原理优化原理一、输入url到页面呈现的过程1、域名解析及请求用户输入浏览器后,浏览器核心会将url进行拆分解析。会把domain(域名,比如www.alibaba.com)发送给DNS服务器,DNS服务器会根据domain查询到对应的ip,然后将ip返回给浏览器。浏览器拿到ip后,将ip放到协议中,携带请求相关参数发送到网络中,经过局域网、交换机、路由器、主干网络,最终发送到服务端。服务端拿到数据后会返回响应。2、浏览器解
2021-09-12 16:07:59
2268
原创 【测试学习】UI测试工具vue-test-utils APIs
参考文章:官方文档APImount()shallowMount()render()renderToString()选择器createLocalVue()createWrapper(node [, options])配置enableAutoDestroy(hook)mount()参数:{Component} component{Object} options返回值: {Wrapper}这个的选项比较多。用法:创建一个包含被挂载和渲染的 Vue 组件的 Wrapper。i
2021-08-31 17:41:50
3186
原创 【测试学习】UI测试工具vue-test-utils入门教程
参考文章官方文档起步1、安装(略)2、挂载组件Vue Test Utils 通过将它们隔离挂载,然后模拟必要的输入 (prop、注入和用户事件) 和对输出 (渲染结果、触发的自定义事件) 的断言来测试 Vue 组件。被挂载的组件会返回到一个包裹器(wrapper)内,而包裹器会暴露很多封装、遍历和查询其内部的 Vue 组件实例的便捷的方法。你可以通过 mount 方法来创建包裹器。// 从测试实用工具集中导入 `mount()` 方法// 同时导入你要测试的组件import { moun
2021-08-31 11:37:39
4549
3
原创 【前端学习】Vue3新增特性
Vue3相对Vue2新增的特性合成型API(Composition)1、dataVue2采用了选项类型API(Options API),而Vue3采用的是合成型API。旧的选项型API在代码里分割了不同的属性(properties):data,computed属性,methods,等等。新的合成型API能让我们用方法(function)来分割,相比于旧的API使用属性来分组,这样代码会更加简便和整洁。import { reactive } from 'vue'export default {
2021-08-31 10:04:35
681
原创 【前端学习】正则表达式
菜鸟教程-正则表达式在js中使用正则表达式var reg = /[a-z]/var regObj = new RegExp('[0-9]')console.log('123'.search(reg)) // -1console.log('123'.search(regObj)) // 0动态使用正则表达式:正则表达式构造函数var index = 'id:'for(let i=0;i<10;i++){ var reg = new RegExp(index + i) c
2021-08-27 16:10:05
224
原创 【大数据学习】关联规则挖掘-Apriori算法
llhthinker-Apriori算法介绍(Python实现)一、Apriori算法简介Apriori算法是经典的挖掘频繁项集和关联规则的数据挖掘算法。A priori在拉丁语中指"来自以前"。当定义问题时,通常会使用先验知识或者假设,这被称作"一个先验"(a priori)。Apriori算法的名字正是基于这样的事实:算法使用频繁项集性质的先验性质,即频繁项集的所有非空子集也一定是频繁的(这也是Apriori依据的公理)。Apriori算法使用一种称为逐层搜索的迭代方法,其中k项集用于探索(k+1)
2021-08-26 10:56:21
2023
原创 【前端学习】ES6(五)Symbol、Set 和 Map、Reflect
Symbol一、简介ES5 的对象属性名都是字符串,这容易造成属性名的冲突。想为一个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入Symbol的原因。ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,前六种是:undefined、null、布尔值(Boolean)、字符串(String)、数值(Nu
2021-08-25 23:00:12
432
原创 【前端学习】ES6(四) Promise、async/await、Generator
一、Promise的含义1、Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。2、三种状态:pending、fulfilled(千万不要记成resolved,不过也可以混用)、rejected3、优点:避免回调地狱4、缺点:无法取消、如果不设置回调函数有问题也不会被发现、pending状态时无法知道进展二、P
2021-08-20 11:33:14
453
原创 【前端学习】ES6(三)proxy
十四、ProxyProxy 实例的方法get()set()apply()has()construct()deleteProperty()defineProperty()getOwnPropertyDescriptor()getPrototypeOf()isExtensible()ownKeys()preventExtensions()setPrototypeOf()注意:handler可以写在函数里面,如果需要复用或者需要创建proxy时简便一些可以单独声明。第一个参数也是如
2021-08-18 15:18:27
804
原创 【前端学习】ES6(二)
九、数组的扩展扩展运算符(…)1、常规用法…后跟空数组则没有任何作用[...[],1]// [1] 注意不是[undefined,1]仅当在函数参数列表中,扩展运算符才可以放在小括号内。(...[1,2])// Uncaught SyntaxError: Unexpected numberconsole.log((...[1,2]))// Uncaught SyntaxError: Unexpected numberconsole.log(...[1,2])// 1 22、ap
2021-08-10 17:20:51
189
原创 【前端学习】ES6(一)简介、let/const、解构、字符串、正则、数值、函数
一、简介1、es和js的关系ES全称ECMA(European Computer Manufacturers Association)Script,是一种标准。js除了标准的还有JScript 和 ActionScript。总的来说前者是后者的规格,后者是前者的一种实现。2、ES6和ES2015的关系ES6泛指5.1版本后的js的标准,也有ES2016、ES2017等,ES2015是ES6的第一个版本,有时候ES6也特指ES2015。3、ES历史ES3就是js的基础,1、2都没有得到广泛的支持
2021-08-08 23:05:54
515
原创 【node学习】node.js核心模块
一、文件系统模块无需安装。 作为 Node.js 核心的组成部分,可以通过简单地引用来使用它:const fs = require('fs')一旦这样做,就可以访问其所有的方法,包括:fs.access(): 检查文件是否存在,以及 Node.js 是否有权限访问。fs.appendFile(): 追加数据到文件。如果文件不存在,则创建文件。fs.chmod(): 更改文件(通过传入的文件名指定)的权限。相关方法:fs.lchmod()、fs.fchmod()。fs.chown(): 更改文
2021-08-03 14:58:52
915
1
原创 babel
Node { type: 'File', start: 0, end: 1181, loc: SourceLocation { start: Position { line: 1, column: 0 }, end: Position { line: 55, column: 22 }, filename: undefined, identifierName: undefined }, range: undefined, leadingComment
2021-07-29 17:42:46
114
原创 【前端学习】为webpack编写plugin和loader
编写一个loaderloader 是导出为一个函数的 node 模块。该函数在 loader 转换资源的时候调用。给定的函数将调用 loader API,并通过 this 上下文访问。注意loader的调用顺序是从后往前,最后需要输出一个转换后的模块和source map(可选)1、编写原则简单:loaders 应该只做单一任务。这不仅使每个 loader 易维护,也可以在更多场景链式调用。链式:利用 loader 可以链式调用的优势。写五个简单的 loader 实现五项任务,而不是一个 load
2021-07-29 15:01:12
128
原创 【前端学习】webpack
一、概念本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。有四个概念:entry、output、loader、plugins(都需要在webpack.config.js中配置)1、入口(entry)构建依赖时的起始文件,并且可以配置多个入口。入口起
2021-07-28 18:01:28
257
原创 【前端学习】ajax
基础AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页面。一、发送请求如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:xmlhttp.open("GET","test1.txt",true);xmlhttp.send();(感觉可以封装一个同步ajax库)1、open与send方法GET 还是
2021-07-26 18:29:59
128
原创 【项目难点】禁止滚动、文本溢出省略号、css实现三角形、动态样式(使用vue)
这三个是最近做移动端项目遇到的一些比较小的需求。1、禁止滚动背景:手动实现了一个压屏窗(可以理解成带遮罩的弹窗),发现在弹窗出现后,依然可以通过鼠标滚轮上下滑动来使下面的列表进行滑动,要解决这个问题。实现一:利用betterscroll插件,将列表彻底做成只能被touch或者tap类事件触发滚动的组件。实现二:如果弹窗没有滚动需求的话,可以在弹窗弹出时,禁用touchmove事件实现三:如果弹窗没有滚动需求的话,可以把body的overflow设置为hidden,直接就没有滚动这一说了2、文本溢
2021-07-25 01:12:05
341
原创 【项目难点】小程序使用canvas实现电子签名功能(简易版)
因为这是个简易版,所以代码行数不多,直接贴上代码再看。<template> <view class="main-container"> <view class="main-left" @touchmove='touchMove' @touchstart='touchStart' @touchend='touchEnd'> <canvas class="left-canvas-area" canvas-id="s
2021-07-25 00:46:06
385
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人