自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

昆吾kw的博客

枕上诗书闲处好,门前风景雨来佳

  • 博客(85)
  • 资源 (3)
  • 收藏
  • 关注

原创 Koa + Prisma 快速入门

作为 ORM 工具,肯定少不了模型了。构成了应用领域的实体映射到数据库的表(关系型数据库,例如 PostgreSQL)或集合(MongoDB)构成中查询的基础在使用 TypeScript 时,Prisma Client 为模型及其变体提供类型定义,保证数据库访问的类型安全定义模型时会用到形如@id()@default()这些 Prisma 内置的工具函数。比如@id()用来声明主键,@default()用来设置默认值,命名都非常语义化,基本就是 SQL 中的一些关键字,非常容易理解。

2023-08-30 09:00:00 912

原创 【MongoDB系列】3. MongoDB 安全策略:验证和授权

前面文章中通过客户端工具(MongoDB Shell、Robo 3T)连接 MongoDB 服务时,只要有 IP 地址和端口号,就能连接到数据库,之后就能操作数据库。这是因为默认安装的 MongoDB 没有启用身份验证,也没有设置初始用户名和密码。然而这会导致很多数据安全问题。MongoDB 提供了多种方式来提高数据库的安全性,例如身份验证访问控制加密等。本文主要介绍 MongoDB 提供的内置角色和权限,然后通过开启身份验证,为用户指定不同的访问权限,来提供数据库的安全性。

2023-08-29 09:15:00 1735

原创 【MongoDB系列】2. Docker 安装 MongoDB 6.x 详解

本文详细介绍了在 Linux 系统中通过 Docker 下载 mongo 镜像,创建 mongo 容器的过程,同时介绍了宿主机访问容器内数据库服务的方式,也介绍了在本地远程访问服务器内数据库服务的方式。对于 Robo 3T 这个工具,非常好用,推荐使用。数据库是运行在宿主机,还是容器内,其实都一样的对外提供了服务,我们只需要关注操作数据库即可。目前我们安装的 MongoDB 都还没有设置用户名和密码,这十分不安全。所以在真正开始操作数据库之前,下篇文章我们先介绍 MongoDB 的安全策略。

2023-08-28 09:15:00 936

原创 【MongoDB系列】1.MongoDB 6.x 在 Windows 和 Linux 下的安装教程(详细)

本文详细介绍了如何在 Windows、Linux 下安装最新版的 MongoDB 数据库。相比于 5.x,新版本的 MongoDB 在安装时的变化是将从前的mongo命令废弃,需要用户单独安装 MongoDB Shell 来操作数据库。如果不需要使用 shell ,则可以省去这一步。

2023-08-27 14:37:01 645

原创 Nest(3):扫盲篇:TypeScript 类和装饰器

使用 @nestjs/cli 创建和管理 Nest 应用Hello, World 示例代码分析Nest 基本概念:模块,控制器,服务常用的装饰器:@Module、@Controller、@Get、@InjectableNest 目录结构分析@nest/cli 脚手架的命令本文先不继续讲解 Nest 中的内容,而是打算介绍 TypeScript 中的两个语法:类和装饰器,帮助新手理解 Nest 中代码的写法。如果你对 TypeScript 已经很熟悉,根据自己实际情况有选择的阅读即可。

2023-08-22 11:45:00 277

原创 Nest(2):Nest 应用目录结构和脚手架命令介绍

在正式使用 NestJS 进行开发之前,先来了解下 Nest 应用的目录结构,和一些常用的脚本命令。打开文件,@nest/cli创建的项目提供了 12 个scripts},build:打包适合生产环境的代码。start:开发阶段启动 Nest 应用。使用该命令时,修改代码后需要手动重启服务。start:dev:带有 watch 选项,也就是修改代码后会自动重启服务,所以在开发阶段一般使用此 script。start:prod:它实际上是用 node 命令启动了一个构建产物的入口文件。

2023-08-21 14:47:03 930

原创 NestJS(1)初识 NestJS 和 Hello, World

本文介绍了使用 @nest/cli 脚手架快速创建和启动一个 Nest 应用,随后又对“Hello, World”示例代码做了分析,简单介绍了一些 TypeSscript 语法,比如装饰器,和一些 Nest 的概念。相信看到这里,大家基本上了解了 Nest 应用接收到用户请求后,走了哪些流程,完成了响应。

2023-04-23 21:18:49 584 1

原创 记一次误用顶层await导致的路由渲染错误

起初按照直觉,以为是路由表配置出了问题,导致路由渲染不出来,反复调试路由配置,始终不奏效。这就导致了一个问题,想使用 await,必须要将其定义在一个 async 函数中,再调用此函数。,它 支持在 async 函数以外使用 await,但是只能在一个模块的顶层中使用。之所以被渲染成注释节点,看似是路由组件没有正确渲染,也有可能是组件本身出了问题。这自然不是在模块顶层中使用了,也就导致了在解析上出现问题,导致组件不能正确渲染,最终导致对应的路由视图没有渲染出来。起初由于空页面,空节点,误解是路由的问题。

2023-04-22 15:45:06 3845 1

原创 报错处理:Error: listen EACCES: permission denied

试着使用管理员打开命令行窗口,再启动,不行。看名字,像是没有权限访问 5173 端口。试着查 5173 端口是否被占用,没有。一般遇到这种莫名其妙的问题,重启就好了。莫名其妙的一个错误。

2023-03-09 19:15:00 4864

原创 Node.js http 模块详解:request 对象

前文介绍了http模块的基本用法,主要就是调用和listen方法来创建和启动服务。要处理具体的 HTTP 请求,就要在方法中写点什么。本文来介绍处理请求的两个核心对象之一的request。本文介绍了通过requestrequest.method:获取请求方法request.url:获取请求 URL,还需要再借助url等工具进一步解析request.headers:获取请求头信息request.body:获取请求体数据,需要根据解析为不同的格式下篇文章会介绍reponse。

2023-02-10 09:00:00 3648

原创 Node.js http 模块详解(1)

我们介绍了http模块的基本用法,主要使用来创建服务,再调用listen方法来启动服务,监听连接。接收回调函数用来具体处理某一个请求,编写 web 服务主要就是利用回调函数的两个参数request和response,后面会详细介绍。

2023-02-09 00:15:00 484

原创 Node.js 入门:events 模块和发布订阅模式

本文会介绍 events 模块的主要作用和使用方式,以及自己实现一个简单的发布订阅模式,帮助加深理解。本文介绍了 Node.js 中events模块的使用,它主要导出一个类来做发布订阅。Node.js 的很多核心模块都继承自 EventEmitter 类。它是一个底层的模块,但通常很少直接使用它。等后面讲到 Stream,再后面讲到 http 模块的时候,就能体会到它的存在了。额外提一嘴,手写实现,并不是要重复造轮子,主要是为了加深对原生方法的理解。

2023-02-08 08:45:00 1395

原创 Node.js入门:fs 模块学习

fs模块是 Node.js 的内置模块,提供操作文件系统的能力,比如文件及目录的创建、写入及删除等操作。它是一个十分基础和有用的模块。Node.js 常用作 web 服务或者工具的开发,最依赖的就是 http 和 fs 模块。在fs模块中,所有的方法都分为同步和异步两种实现。在很久以前,node 还不支持 Promise 的时代,异步只能通过回调的方式去使用。

2023-02-07 09:00:00 445

原创 Node.js入门:Buffer对象学习

计算机底层存储的数据都是二进制的。在前端开发中一般都是实现页面效果,很少会直接操作二进制的数据。而在 Node.js 擅长的领域,比如在服务端程序开发中,经常会读取文件,处理文件,和二进制数据打交道比较多。Buffer对象是 Node.js 提供的一个全局对象,专门用来处理二进制数据。二进制数据在开发中,操作和表示都非常不方便,所以 Buffer 对象采用十六进制来表示二进制数据。比如二进制数据00001111,转为十六进制就是f。

2023-02-06 09:00:00 1897

原创 Node.js入门:path 模块学习

上文讲解了 Node.js 的 CommonJS 规范,它主要用来解决模块化的问题。从本文开始将会介绍 Node.js 常用的模块,包括内置模块以及好用,好玩的第三方模块。本篇简单介绍下path模块的用法。

2023-02-05 09:00:00 619

原创 Node.js:CommonJS模块化规范

参数是一个文件路径,以./../或者开头。// 此时会当作内置模块查找,自然是找不到的,会报错// 必须以 ./、 ../、 / 开头// 找到同级目录下的 a.js 并导入会依次去找有没有a.jsa.jsona.node,找到则导入模块;没有的话,会将a当作一个目录名,去找a目录下的index.jsindex.jsonindex.node,找到则导入模块。如果还没有找到,则报错找不到模块。

2023-02-04 08:30:00 692 1

原创 Node.js 全局对象介绍

在学习 Javascript 之初,会接触一个概念:JS 由三部分组成,。其中前两者是宿主环境,也就是浏览器所提供的能力。后者才是 JS 语言本身的标准。在上篇文章中,提到了,所以学习 Node.js 时,除了我们已经掌握的 JS 基础功底,还要了解 Node.js 宿主环境提供的一些能力。

2023-02-03 00:49:30 653

转载 CSS Grid 网格布局教程

网格布局(Grid)是最强大的 CSS 布局方案。它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局。以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器内置了。上图这样的布局,就是 Grid 布局的拿手好戏。Grid 布局与Flex 布局有一定的相似性,都可以指定容器内部多个项目的位置。但是,它们也存在重大区别。Flex 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局。

2022-12-13 21:34:20 316

原创 手摸手教你使用 Docker 快速搭建 Gitlab 服务

Glitlab 比较占用内存,官方建议最低配置为 2核4G。我的服务器刚刚好是2核4G,但是还装了 Docker 跑一些其他服务,所以以防万一,还是选择在本地的虚拟机中进行安装。如果你有一台配置较高的服务器那就更好了,一步到位。如果不想装虚拟机,服务器又太贵,也可以选择按量付费的方式购买一台2核8G的服务器,最便宜的价格是每小时四毛钱左右,稍微好一些的配置七八毛,用不了几块钱,就能学会 Gitlab 的搭建和使用。

2022-11-16 09:30:00 1276

原创 Typescript 函数类型详解

本文介绍了TS 中有关函数的知识,包括函数的声明方式,如何声明函数类型,函数参数和返回值的类型,函数重载以及 this 的类型。大部分内容和 JS 中差不太多,主要是 this 类型和函数重载这两点,需要额外关注下。

2022-11-15 17:51:03 2829

原创 Rust(16):结构体方法

Rust 中的方法,具体来讲是结构体类型中的方法,以及结构体的关联函数。

2022-11-09 23:44:49 749

原创 还不会用 TS 封装 Axios?我教你啊

Axios 的二次封装是一项基础工作,主要目的就是将一些常用的功能进行封装,简化后续网络请求的发送。JS 版本的封装大家都已经非常熟悉了,可以信手拈来。但是使用 TypeScript 对 Axios 进行封装,稍微就复杂了些。主要是由于 TS 引入了类型系统,带来了一些类型的束缚。对于 TS 不太熟悉的小伙伴就容易绕晕。熟悉 axios 封装,但在 TypeScript 中不知该如何下手。明确我们的封装目标:能用上TypeScript 带来的好处,类型检查(安全性)和语法提示(便捷性)。

2022-10-24 13:28:15 1448

原创 一个登录案例学会 Pinia

Pinia 号称下一代的 Vuex。经过初步体验,发现相比于 Vuex,Pinia 确实有了很大进步,最明显的就是删减了复杂的概念,简化了数据流转的过程,现在只剩下了 store、state、getters、actions 这四个核心概念。接下来使用一个用户登录的案例,来学习 Pinia 的使用。需要用到:我们会先 mock 一个简单的登录接口,然后介绍使用 Pinia 的基本流程,最后在组件中使用 Pinia,完成整个流程。创建 Vue 项目可以使用 create-vite 和 create-vue 这两

2022-10-16 13:46:19 1877

原创 原来我误会了 changeOrigin 这么多年

本文简单探讨了这个常见的配置项。用了这么多年,才发现一直“误会”了它。看来正应了那句老话:纸上得来终觉浅,绝知此事要躬行。

2022-10-08 10:48:06 6834 4

原创 Vite打包性能优化之开启Gzip压缩

在使用 vite 进行项目打包时,默认已经帮我们做了一些优化工作,比如代码的压缩,分包等等。除此之外,我们还有一些可选的优化策略,比如使用 CDN ,开启 Gzip 压缩等。本文会介绍在 vite 中使用插件来开启 Gzip 压缩。

2022-10-07 12:13:13 18469 1

原创 Rust学习之函数

今天学习的内容是 Rust 中的函数。从程序执行的角度看,它也属于流程控制的一种。但更多时候我们只把函数看作是对一个功能的封装。Rust 具备函数式编程的特性,函数是 Rust 中的重中之重。

2022-10-06 20:47:32 507

原创 Typescript 学习之对象类型

今天学习的内容是 Typescript 的对象类型。在 JS 中创建一个对象,通常使用对象字面量的形式,比如定义一个person之后就可以使用该对象,可以访问对象身上存在的属性,比如,甚至可以访问不存在的属性,比如person.xxx,都不会报错。

2022-10-05 23:04:44 1711

原创 【技巧】解决谷歌浏览器自带的谷歌翻译无法自动翻译问题

在 Chrome 浏览器中使用谷歌翻译的正确姿势。

2022-10-05 02:32:49 5530 1

原创 Typescript 的数据类型

Typescript,就是给JavaScript加上了类型系统。Typescript是JavaScript的超集。只要掌握了JS,学起TS来并不会太难。本文整理了Typescript中的数据类型,作为学习 TS 的一道入门菜。

2022-10-04 11:09:35 885

原创 Rust(14):切片类型

切片类型是对一个数组、字符串的引用片段。切片有利于安全有效地访问数据的一部分,而不需要拷贝原始数据的内容。

2022-10-02 15:22:23 765

原创 Rust(13):字符串类型

Rust 中表示字符串类型的方式有多种,和其他语言有很大的区别。本文讲述最常用的两种,分别是 &str`和 String 类型。

2022-10-02 15:04:29 297

转载 DNS 查询原理详解

通过 DNS 查询,得到域名的 IP 地址,才能访问网站。那么,DNS 查询到底是怎么完成的?本文通过实例,详细介绍背后的步骤。

2022-10-01 08:00:00 815

原创 Rust(12):引用和借用

今天学习的内容是 Rust 中所有权的另一个知识点,引用和借用。

2022-09-30 08:15:00 670

原创 【玩转 Cloud Studio】以 Rust 为例定制自己的开发环境

Cloud Studio 是腾讯云出品的一款云端开发工具,目前提供了对 Java,Node,Go,Python,.Net 的环境支持,基本上满足了绝大多数的开发者的需求。如果开发者工作的语言和环境不在上述之列,没关系,Cloud Studio 照样能满足你。本文以 Rust 为例分享如何搭建出专属的开发环境。Cloud Studio 的工作空间是 Ubuntu 系统,标准型提供了 2 核, 4 G 内存,8 GB 存储的配置,还可以根据需求升级配置,对于大部分场景完全够用了。

2022-09-29 00:49:04 455

原创 Rust(11):所有权的唯一性和转移

本文介绍了 Rust 中的所有权唯一性的和所有权的转移。

2022-09-28 08:00:00 320

原创 Rust(10):所有权

所有权是 Rust 的核心特性之一。Rust 和其他语言相比最出色的就是安全性,这个安全性就是建议在所有权之上。

2022-09-27 08:00:00 243

原创 Rust(9):枚举类型

今天学习的内容是 Rust 中的枚举类型。

2022-09-26 08:30:00 539

原创 Rust(8):数组类型

今天学习的内容是 Rust 中的数组类型。

2022-09-26 08:15:00 719

原创 Rust(7):结构体类型

结构体是一种用户自定义的数据类型,它是多种不同数据类型的组合。

2022-09-25 22:08:25 609

原创 Rust(6):高阶函数和发散函数

今天学习的内容是 Rust 中的高阶函数和发散函数。

2022-09-25 08:00:00 411

空空如也

空空如也

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

TA关注的人

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