NestJS 简介Nestjs 是一个用于构建高效的可扩展的基于Nodejs服务端 应用程序开发框架 完全支持typescript 并结合的AOP面向切面编程的方式 Spring MVC 风格 其中有依赖注入和IOC控制反转 前置知识IOCInversion of Control 字面意思是控制反转,具体的定义是高层模块不应该依赖底层模块,二者都应该依赖其抽象,抽象不应该依赖细节 DI依赖注入(Dependency Injection)其实和IoC是同根生,这两个原本就是一个东西,只不过由于控制反转概念比较含糊(可能只是理解为容器控制对象这一个层面,很难让人想到谁来维护对象关系)。 类A依赖类B的常规表现是在A中使用B的instance。 未使用控制反转和依赖注入之前的代码 123456789101112131415161718192021class A { name: string constructor(name: string) { this.name = '月晕' }}//强耦合class B { ...
浏览器事件循环浏览器的进程模型何为进程程序运行需要它自己的专属的内存空间 可以简单的把这块内存空间理解为进程每个应用至少有一个进程,进程之间相互独立,即使通信 需要同意 何为线程有了进程之后,就可以运行程序代码了运行代码的 容器 称之为 线程一个进程至少有一个线程 所以在进程开启后会自动创建一个线程来运行代码 该线程称之为主线程如果程序需要同时执行多块代码,主线程就会开启更多的线程来执行代码,所以一个进程总可以包含多个线程 浏览器有哪些进程和线程浏览器内部工作复杂,为了避免相互影响,当启动浏览器后会自动开启多个进程(如:浏览器进程、网络进程、渲染进程) 其中主要的线程有: 浏览器进程主要负责界面显示、用户交互、子进程管理、浏览器进程内部会启动多个线程处理不同的任务 网络进程负责加载网络资源。网络进程内部会启动多个线程来处理不同的网络任务 渲染进程渲染进程启动后,会开启一个渲染主线程,主线程负责执行 HTML、css、JS代码,默认情况下,浏览器会为每个标签页开启一个新的渲染进程,以保证不同标签页之间的不相互影响 渲染主线程是如何工作的渲染主线程是浏览器中最繁忙的线程,需要处理的 ...
链表线性表 有限的序列 序列中的每个元素都有唯一的前驱和后继 除了开头和结尾两个节点 顺序表:分配一块连续的内存去存放这些元素 例如数组 链表:内存是不连续的 元素各自分配一块内存 内存和内存之间用指针进行相连 具体实现 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677package main// 定义类型type ListNode { data int next *ListNode}// 初始化func initList () *ListNode { list := &ListNode{ data: 0, next: nil, } return list}// 头插法func headInsert (list *Lis ...
网络基础知识总结理解了TCP/IP的必备基础知识,包括OSI参考模型、网络概念本质、网络构建等 协议在计算机网络与信息通信领域,人们经常会提起协议,互联网中常有的具有代表性的协议有**IP,TCP,HTTP** 等,而LAN(局域网)中常见的协议有IPX/SPX等 常见的协议计算机网络体系结构将这些网络协议进行了系统的归纳 TCP/IP 就是IP、TCP、HTTP等协议的集合。 网络体系结构 协议 主要用途 TCP/IP IP、ICMP、TCP、UDP、HTTP、SNMP等 互联网、局域网 IPX/SPX IPX、SPX、NPC… 个人电脑局域网 … … … 协议的重要性简单来说 协议就是计算机与计算机之间通过网络实现通信时事先达到的一种约定 这种约定使得不同的厂商的设备 不同的cpu 不同的操作系统组成的计算机只要遵守相同的协议就能进行通信 如果使用的协议不同就无法通信 这就好比不同国家的不同语言说话怎样也无法理解。协议可以分成很多种,每一种协议都明确规定了行为规范,两台计算机必须能够支持相同的协议并遵守相同的协议进行处 ...
构建工具 浏览器不能使用模块化规范(兼容性) 和 使用模块化规范也会面临模块过多时的加载问题 希望有工具可以对代码进行打包,将多个模块打包成一个文件 构建工具起这样的工作,通过构建工具可以将使用的 ESM 规范编写的代码转换成旧的 JS 语法,这样可以使得所有的浏览器都可以支持代码 Webpack使用步骤: 1.初始化项目 yarn init -y 2.安装依赖webpack webpack-cli 1yarn add -D webpack webpack-cli 3.在项目中创建src 目录,然后编写代码(index.js) 4.执行 yarn webpack 来对代码进行打包 (打包后观察 dist 目录)配置文件(webpack.config.js) 1234567891011121314151617181920212223242526272829303132333435const path = require('path')module.exports = { mode: 'production', // 设置打包 ...
VUE3 框架的三大模块 compiler 编译系统 runtime 渲染系统 reactive 响应系统 Reactive 的实现在 Vue2 中实现响应式是使用Object.defineProperty来实现数据劫持如下 123456789101112131415161718let number = 18let person = { name: '月晕',}Object.defineProperty(person,'age',{ value:18 // 设置属性的值 writable: true // 如果为 true,属性的值可以被修改;如果为 false,属性的值是只读的。 enumerable:true //如果为 true,属性可以通过对象的迭代方法(例如 for...in 循环)枚举;如果为 false,属性不可枚举。 configurable:true // 如果为 true,属性的特性可以被修改或者删除;如果为 false,属性的特性不可更改。 get(){ conso ...
Git 指令git 使用基本指令 git init:初始化项目文件夹,为改项目的根目录下面添加.git 文件 git add . : 将改项目的所有文件添加到暂存区里面(可以方便 merge 和 commit) git commit -m '<commitMessage>' : commitMessage 是你提交要说明的消息,提交的备注 git remote add <remoteName> <远程地址> : remoteName:为远程仓库取的名称 通常是 origin 本地的 git 文件关联到远程的 Github 仓库 git pull : 拉取远程分支的信息,并可以与本地合并信息 git push -f : 提交到远程仓库,-f 是强制推送 git clone:克隆项目到本地 注意:当我们使用 git clone若是克隆了很大的库,我们的互联网很慢,很常见的问题就是连接关闭整个克隆取消如同下面的报错 Cloning into ‘large-repository’…remote: Counting objec ...
Nginx作用Nginx 是一个高性能HTTP和反向代理的Web服务器,可以将服务器上的静态文件(如HTML、图片)等通过HTTP协议展现给客户端,占用内存少、并发能力强 安装Nginx进入nginx官网 (https://nginx.org/en/) window系统选择下载 .exe linux系统下载pgp linux解压缩 123tar zxvf nginx-1.22.1 tar.gzmakemake install 如果是使用linux上面 推荐使用apt-get 或者 yum 等 去下载,下载之前请先系统上是否存在nginx下面演示是在 linux发行版 ubuntu-22.04 使用 apt-get下载的nginx 如果失败请加上sudo 启动Nginx进入安装好的目录 /usr/sbin 1234567cd /usr/sbin # 进入可执行文件目录./nginx #启动./nginx -s stop #快速停止./nginx -s quit #优雅关闭,在关闭前已经接受连接请求./nginx -s reload #重新加载配置./nginx -t #检查ngin ...
python爬虫简单基础使用Request库优点:简单、发送网络请求快 缺点:容易被反爬策略针对 request库的使用携带Headers去发送网络请求 模拟浏览器环境、欺骗服务器、获取和浏览器一致的内容 比较重要的就是ua 123headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}request.get(url,headers=headers) 发送携带参数的请求12kw = {'name':'yueyun','age':18}request.get(url,params=kw) 在 url 地址中,很多参数是没有用的,比如百度搜索的 url 地址,其中参数只有一个字段有用,其他的都可以删除 发送post请求 ...