从前端的角度快速入门 Rust【写作中】
前言Rust 是一门系统编程语言,与 JavaScript 不一样的是,它是一门编译型语言,类比 C++。
目前有很多前端工具是基于 Rust 写的,暴露的 API 则通过 napi-rs 转换成 nodejs 模块,例如 SWC 。
一些新的工程化工具,例如字节的 Rspack;媲美 Electron 的跨平台桌面开发框架 Tauri。
可以说很多对性能或内存安全的应用,都可以用 Rust 重写。对于前端开发者来说,如果想熟悉一门编译型语言,Rust 是一个很好的选择。
关于怎么安装 Rust ,请直接浏览官网安装文档
Hello World安装好之后,在终端内输入以下命令可以查看对应版本
1234# 查看 rust 版本rustc --version# 查看 cargo 版本cargo --version
cargo 是 Rust 官方的包管理工具,类似 nodejs 里面的 npm,yarn 这些
随便选一个目录创建一个 hello.rs 文件,打开文件写入如下代码:
123fn main() { println!("Hello, world!& ...
JavaScript防抖与节流
JavaScript防抖与节流函数防抖与节流是为了处理开发中的性能问题而提出来的概念,通常在滚动事件、浏览器窗口大小变化、频繁点击按钮等场景使用。
上面已经说到防抖与节流的使用场景,那具体什么场景下使用防抖什么场景使用节流,还是有区别的。
总结如下:
概念
使用场景
防抖
频繁操作,一定时间间隔内只执行最后一次操作
节流
频繁操作,间隔一定时间去做一件事
用通俗的话来讲,防抖的原理就是:你尽管触发事件,但是我一定在事件触发 n 秒后才执行,如果你在一个事件触发的 n 秒内又触发了这个事件,那我就以新的事件的时间为准,n 秒后才执行,总之,就是要等你触发完事件 n 秒内不再触发事件,我才执行,真是任性呐!
防抖123456789101112/*** fn 执行函数* wait 等待的时间ms*/function debounce(fn, wait) { var timeout = null; return function() { if(timeout !== null) clearTim ...
Git在工作中的使用
git在工作中的使用一、参与开发任务的一般流程1、若第一次参与项目从远程库克隆项目到本地
1git clone https://XXXXX/XXX/XXX.git
2、否则1、更新本地的master分支
先看你的工作区当前分支是否在master分支,如果不在的话,先切换回master分支:
1git checkout master
如果在master分支下,直接:
1git pull
2、基于master分支,切出你的本地任务分支并切换到你的任务分支,假设你的任务是实现登录,你的任务分支自定义命名是feature/Login
注意,此时你是在master分支下,进行如下操作。在执行下面的操作之后,你会发现你的工作区的当前分支已经切换到feature/Login分支下,在该分支下愉快的去写你的登录任务代码吧
1git checkout -b feature/Login
3、当你的登录任务在分支feature/Login下完成之后,并且联调测试均没有问题,也就是可以合并到master里面去了,进行如下操作:
123456# 切换回master分支git checkou ...
JavaScript排序算法总结
JavaScript排序算法总结排序算法应该是我们在实际的开发场景中用的最多的一种算法,常见的排序算法有冒泡排序、简单选择排序、直接插入排序、归并排序、堆排序和快速排序。
前言以下的排序代码中会出现swap函数,该函数实现如下:
123function swap(array, index1, index2) { [array[index1], array[index2]] = [array[index2], array[index1]];}
排序算法说明1、定义对一序列对象根据某个关键字进行排序
2、部分概念
时间复杂度:一个算法执行所耗费的时间。
空间复杂度:运行完一个程序所需内存的大小。
3、算法总结
排序算法
平均时间复杂度
最好情况
最坏情况
空间复杂度
冒泡排序
O(n^2)
O(n)
O(n^2)
O(1)
4、算法分类
交换排序:冒泡排序、快速排序;
插入排序:直接插入排序、希尔排序;
选择排序:简单选择排序、堆排序;
冒泡排序
冒泡排序是最容易理解的一种排序算法,如上图。
简单的冒泡12345678910function bub ...
JavaScript语言核心基础
JavaScript语言核心基础一、数据结构在JS语言核心中,我们必须了解三种数据结构:栈(stack)、堆(heap)、队列(queue)。
栈栈是一种先进后出,后进先出(LIFO)的数据结构,类似于只有一个出入口的羽毛球盒,在JS中,栈可以用来规定代码的执行顺序,例如函数调用栈(call stack)
JS的数组是提供了两个栈操作的方法,
push向数组的末尾添加元素(进栈)
pop取出数组最末尾的一个元素(出栈)
堆堆是一种树形的结构,JS中的对象表示可以看成是一种堆的结构,如:
12345678var root = { a: 10, b: 20, c: { d: 30, e: 40 }}
可以画出堆的图示如:
那么对应的,JS的对象一般是保存在堆内存中。
队列队列是一种先进先出(FIFO)的数据结构,类似于排队过安检一样,理解队列对理解JS的事件循环很有帮助
二、数据类型和内存空间基础数据类型最新的ECMAScript标准号定义了7种数据类型,其中包括6种基本数据类型和一种引用类型
...
JavaScript事件循环与异步原理
JavaScript事件循环及异步原理理解JavaScript的事件循环和异步原理,是我们理解所编写的JS执行过程的关键。本文引用了网上一些好文,然后借助自己的理解用通俗的表达进行了阐述。
前言先提出一个问题JavaScript 既然是单线程,那为什么浏览器或 Node.js 可以执行异步操作呢?
下面简短解释一下:
1、JavaScript 是单线程的,只有一个主线程;
2、函数内的代码是从上到下依次执行,遇到被调用的函数先进入被调用的函数执行,待完成后继续执行;(这个机制主要是通过函数调用栈实现的)
3、遇到异步事件,JavaScript 的宿主环境会另开一个线程,主线程继续执行,待结果返回后,执行回调函数。
上述的宿主环境,则是指浏览器或 Node.js 环境,在浏览器中一般会提供额外的线程,而在 Node.js 中,则是借助 libuv 来实现不同操作系统上的多线程。并且在宿主环境中,这个异步线程又分为 微任务 和 宏任务 。
以上内容不明白没关系,接着往下看。
JavaScript 单线程历史我们知道,JavaScript 刚出来的时候是作为浏览器内的一种脚本语法,负责操 ...
CSS选择器优先级
CSS选择器优先级在开发中,有时候需要自定义某些元素的样式,使其覆盖已有的框架样式,但是发现无论自己怎么编写或者是用了!important之后,样式还是没有改变。其实,这跟CSS选择器的优先级有关。
如果让我们说出简单的优先级次序,我们肯定知道:
内联 > IDx选择器 > 类选择器 > 标签选择器
但是,我们实际的使用过程中会发现,貌似没有这么简单。只有理解浏览器在构造CSS样式的优先级算法原理,我们才能真正的吃透这些。
CSS选择器优先级计算原理在《CSS REFACTORING》中提到了算法的过程:
CSS选择器的优先级是由 A 、B、C、D 的值来决定的,其中它们的值计算规则如下:
如果存在内联样式,那么 A = 1, 否则 A = 0;
B 的值等于 ID选择器 出现的次数;
C 的值等于 类选择器 和 属性选择器 和 伪类 出现的总次数;
D 的值等于 标签选择器 和 伪元素 出现的总次数 。
可能不是很明了,我们通过例子来解释:
#nav-top > ul > li[data-type=0] > a.link
对 ...
简述HTTP协议
简述HTTP协议与发展HTTP协议在TCP/IP协议簇中,计算机网络分为四层,分别是:网络接口层,网际层,运输层,应用层。
其中:
IP协议——网际层
TCP协议——运输层
HTTP协议——应用层
HTTP全称Hyper Text Transfer Protocol(超文本传输协议),工作于“客户端-服务端”架构上,基于TCP连接来传递数据。
主要特点
无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。
灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type(Content-Type是HTTP包中用来表示内容类型的标识)加以标记。
HTTPS协议
如上图,左边是HTTP协议架构,右边是HTTPS协议,从图中知道HTTPS = HTTP + SSL/TLS。
引入HTTPS主要是为了保证通信安全,通信安全的四个基本特征是密性、完整性、身份认证和不可否认。SSL/TLS 是信息安全领域中的权威标准,采用多种先进的加密技术保证通信安全:
机密性由对称加密AES保证,完整性由SHA384摘要算法保证,身份认证和不可否认由 ...
前端面试
前端面试网络1、DNS
域名服务协议,用于域名与IP地址相互转换,以及因特网电子邮件发送
占用TCP和UDP 53端口
区域传送用TCP:辅域名服务器与主域名服务器同步数据时,因为TCP可靠
域名解析用UDP:查询域名时内容不超过512字节,不用三次握手,响应更快
2、TCP(1)TCP三次握手
第一次:客户端SYN=1,seq=x —> 服务端,客户端发送能力正常;
第二次:服务端SYN=1,ACK=1,ack=x+1,seq=y —> 客户端,服务端接收能力和发送能力正常;
第三次:客户端ACK=1,ack=y+1,seq=x+1 —> 服务端,客户端接收能力正常。
(2)TCP四次挥手
为什么需要四次挥手
当被动方收到主动方的FIN报文通知后,仅仅代表主动方后续不会再发送数据给被动方,但是未必被动方所有的数据都完整的发送给了主动方,所以被动方不会马上关闭Socket,因此也就需要四次了。
3、HTTP(1)状态码
状态码
说明
200
请求被正确处理
...
三小时入门PHP5
三小时入门PHP5基本语法PHP是什么?PHP是一门后端动态解释型计算机高级语言,一般用来编写或者生成动态网页,主要负责数据的处理与渲染。(这里是指用PHP嵌入网页里面的形式,现在可以直接用一些JS的框架去渲染网页数据了,PHP主要用来做数据处理)
在学习PHP之前,你需要了解HTML,最好有C语言或者C++,Python等其他高级语言基础
PHP一般需要与web服务器软件一起使用,如Apache,Nginx,IIS这些服务器软件,当然这些软件首先需要配置好PHP环境。推荐使用phpstudy这个软件在你的电脑上创建自己的PHP学习环境,点击下载phpstudy,如果链接失效请到http://www.phpstudy.net/自行搜索下载
怎么使用phpstudy
推荐一个更加方便的集成环境工具,laragon.exe可以很方便的部署php开发环境并且能够自动完成虚拟主机的配置下载链接
1.下载完成后解压到D:\phpstudy\目录下
2.打开phpstudy这个软件,会自动开启Apache的web服务和MySQL数据库服务,如果都为绿色的点表示服务开启成功
3.在浏览器地址栏 ...