常用正则
收集开发中的一些常用正则,使用时建议根据实际需求进行修改
由于格式化会在前面添加分号,故采用变量形式
正则表达式应当符合实际需求即可,无需过于追求完美。有时候过于追求准确性可能反而破坏实际需求。例如,手机号、邮箱、URL 的正则,很多人试图编写完美的表达式,结果过于严格,反而引发了问题,从而影响了用户的正常使用
JS 正则表达式完整教程
验证相关是否是金额(精确到分)1const MONEY_PATTERN = /^(0|([1-9]\d*))(\.\d{1,2})?$/
更严格
12const MONEY_PATTERN = /(?:^[1-9]([0-9]+)?(?:\.[0-9]{1,2})?$)|(?:^(?:0){1}$)|(?:^[0-9]\.[0-9](?:[0-9])?$)/
是否是手机号1const MOBILE_PATTERN = /^1\d{10}$/
1const MOBILE_PATTERN = /^1[3-9]\d{9}$/
是否是邮 ...
HTTP 全称为 HyperText Transfer Protocol,即超文本传输协议,是一个用于传输超媒体文档(例如 HTML)的应用层协议
HTTP 协议的主要特点
是一个应用层协议
遵循经典的“客户端-服务端”模型(客户端发送请求,服务器返回响应)
灵活可扩展
语义上的自由,只规定了报文的基本格式,报文里的各个组成部分可以由开发者任意定制
传输格式的多样性
无连接: 每完成一个请求就断开连接(HTTP/1.1 后默认开启长连接)
无状态: HTTP 协议对于事务处理没有记忆能力(每个请求之间、浏览器和服务器之间都是相互独立毫无关联的)
可靠传输: HTTP 协议是一个可靠的传输协议(基于 TCP/IP 协议)
明文传输: 协议里的报文直接使用文本形式传输(HTTP/2.0 后改为二进制传输)
HTTP 协议的演变HTTP 协议演进与各版本特性
HTTP/0.9
1990 年问世
功能简陋,只有一个 GET 方法,且只支持纯文本内容
HTTP/1.0
1996 年 5 月正式发布
任何格式的内容都可以发送
请求和响应 ...
TCP(Transmission Control Protocol 传输控制协议)是一个面向连接的、可靠的、基于字节流的传输层通信协议
TCP 连接
TCP 连接是用于保证可靠性和流量控制维护的某些状态信息的组合,这些信息包括 Socket、序列号和窗口大小
Socket:由 IP 地址和端口号组成
序列号:用来解决乱序问题等
窗口大小:用来做流量控制
TCP 四元组
源地址
源端口
目的地址
目的端口
TCP 四元组可以唯一的确定一个连接
三次握手
TCP 连接建立
三次握手是指在建立一个 TCP 连接时客户端和服务器总共要发送 3 个数据包以确认连接的建立
三次握手的过程如下图所示:
最开始时客户端和服务器都处于 CLOSED 状态。然后服务器主动监听某个端口(此时处于 LISTEN 状态)
第一次握手
由客户端发起
客户端会随机初始化一个序列号(client_isn)然后发送一个带有 SYN seq = client_isn 信息的数据包。发送完成后客户端进入 SYN_SEND 状态(连接发送状态)
SYN 是一个标志位,为 1 时表示希望建立连接
seq = c ...
基础知识线程和进程
进程(process)和线程(thread)是操作系统的基本概念
进程是 CPU 资源分配的最小单位(是能拥有资源和独立运行的最小单位)线程是 CPU 调度的最小单位(是建立在进程基础上的一次程序运行单位)
一个进程就是一个程序的运行实例:启动一个程序时,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,我们把这样的一个运行环境叫进程
线程是进程内的一个执行单元:线程是不能单独存在的,是依附于进程并由进程来启动和管理的
进程和线程的关系特点
进程是拥有资源的基本单位;线程是调度和分配的基本单位(是进程内的一个执行单元,也是进程内的可调度实体)
进程之间相互隔离,互不干扰
一个进程中可以并发执行多个线程
一个线程只能隶属于一个进程,而一个进程是可以拥有多个线程的(但至少有一个主线程)
同一进程的所有线程共享该进程的所有数据
进程中的任意一线程执行出错,都会导致整个进程的崩溃
当一个进程关闭之后,操作系统会回收进程所占用的内存
Chrome 打开一个页面会有几个进程?
最新的 Chrome 多进程架构图
浏览器主进程:负责界面 ...
相关资料
官网
Git 学习教程
Git 入门指南
Git 的奇技淫巧
Git Extras git 命令行扩展工具
配置 Git 处理行结束符
Git 配置多个 SSH-Key
下载相关
Windows 版下载镜像
使用 jsdelivr 加速 Github 仓库资源
常用 Git 命令
[xxx] 均为可选参数
git clone123# 拷贝一个 Git 仓库到本地git clone 仓库地址git clone 仓库地址 --depth 1 # 只克隆最近一次的 commit
git 配置123456# 查看当前的 Git 配置git config --list# 设置使用 Git 时的用户名称git config [--global] user.name "名称"# 设置使用 Git 时的邮箱地址git config [--global] user.email "邮箱"
git 文件操作12# 添加所有文件到暂存区git add .
123# 提交暂存区到仓库区git commit -m "提交信息"g ...
简单使用
安装全局工具 json-server (全局工具仅需要安装一次)【官网】
npm install -g json-server 或 cnpm install -g json-server
代码根目录新建一个 db 目录
将资料 index.json 移入 db 目录
进入 db 目录,执行命令,启动后端接口服务
json-server index.json
推荐: json-server –watch index.json (可以实时监听 json 文件的修改)
具体过程:
在项目的初始阶段,后端提供的接口或数据可能是不完整的,作为一名前端开发工程师,不可避免的要使用mock的数据。如果此时的你不想使用简单的静态数据,而是想自己在本地启动一个server来模拟请求相关的操作,那么json-server是一个不错的选择。json-serve可以帮助我们快速搭建一个mock-server本地服务,可以根据不同的后缀获取到不同的数据。
一、准备工作1、安装Node由于json-server需要通过Node对其进行启动,所以首先要安装Node。Node可 ...
前端开发
未读搜索 - 历史记录管理1.搜索历史基本渲染2.点击搜索(添加历史) 点击 搜索按钮或底下历史记录,都能进行搜索 ① 若之前 没有 相同搜索关键字,则直接追加到最前面
② 若之前 已有 相同搜索关键字,将该原有关键字移除,再追加
3.清空历史:添加清空图标,可以清空历史记录
搜索 - 历史记录 - 基本管理
data 中提供数据,和搜索框双向绑定 (实时获取用户内容)
1234567891011data () { return { search: '' }}<van-search v-model="search" show-action placeholder="请输入搜索关键词" clearable> <template #action> <div>搜索</div> </template></van-search>
准备假数据,进行基本的历史纪录渲染
12345678910 ...
Node 操作 mysql配置 mysql 模块
安装 mysql 模块
1npm install mysql
建立连接
12345678const mysql = require('mysql')const db = mysql.createPool({ host: '127.0.0.1', user: 'root', password: 'root', database: 'test',})
测试是否正常工作
1234db.query('select 1', (err, results) => { if (err) return console.log(err.message) console.log(results)})
操作 mysql 数据库
查询数据
123db.query('select * from users', (err, results) => ...
前端开发
未读
API 接口文档
1. 项目初始化1.1 创建项目
新建 api_server 文件夹作为项目根目录,并在项目根目录中运行如下的命令,初始化包管理配置文件:
1npm init -y
运行如下的命令,安装特定版本的 express:
1npm i express@4.17.1
在项目根目录中新建 app.js 作为整个项目的入口文件,并初始化如下的代码:
12345678910const express = require('express')// 创建 express 的服务器实例const app = express()// write your code here...// 调用 app.listen 方法,指定端口号并启动web服务器app.listen(3007, function () { console.log('api server running at http://127.0.0.1:3007')})
1.2 配置 cors 跨域
运行如下的命令,安装 cors 中间件:
1npm ...
Express 基于 Node.js 平台,快速、开放、极简的 Web 开发框架
用于快速创建服务器的第三方模块。
Express 初体验基本使用安装 Express:
1npm install express
创建服务器,监听客户端请求,并返回内容:
12345678910111213141516171819202122232425262728const express = require('express')// 创建 web 服务器const app = express()// 监听客户端的 GET 和 POST 请求,并向客户端响应具体的内容app.get('/user', (req, res) => { res.send({ name: 'zs', age: 20, gender: '男' })})app.post('/user', (req, res) => { res.send('请求成功 ...