Skip to content
  • [转载]Docker是什么?一篇Docker入门的好文章

    容器技术的起源

    假设你们公司正在秘密研发下一个“今日头条”APP,我们姑且称为明日头条,程序员自己从头到尾搭建了一套环境开始写代码,写完代码后程序员要把代码交给测试同学测试,这时测试同学开始从头到尾搭建这套环境,测试过程中出现问题程序员也不用担心,大可以一脸无辜的撒娇,“明明在人家的环境上可以运行的”。

    测试同学测完后终于可以上线了,这时运维同学又要重新从头到尾搭建这套环境,费了九牛二虎之力搭建好环境开始上线,糟糕,上线系统就崩溃了,这时心理素质好的程序员又可以施展演技了,“明明在人家的环境上可以运行的”。

    从整个

  • [ChatGPT]NestJS入门介绍

    NestJS 是基于 Node.js 平台构建的一个开源的 Web 框架。它使用 TypeScript 作为开发语言,并采用了一些现代化的设计思想和技术,例如:面向切面编程(AOP)、依赖注入(DI)、异步编程等。

    NestJS 的设计思想受到了 Angular 和 Spring Framework 的影响,它的主要目的是为了让开发人员能够更快地构建可扩展且高效的 Web 应用程序。下面是 NestJS 的一些核心原理:

    1. 模块化设计:NestJS 将应用程序划分为不同的模块,每个模块都有自己的职责和依赖关系。模块是一种组织代码的方式,它可以包
  • 解决Could not resolve all files for configuration ':app:debugRuntimeClasspath'等问题

    我今天打开以前的一个安卓项目,想做些修改,运行的时候遇到了如下的错误提示:

    Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
    Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ':app:debugRuntimeClasspath'.

    网上大多数解决方案都是更换Maven库代理,或者更换顺序,其实很有可能你现在的Gradle是处

  • [转载]RBAC权限系统设计

    前言

    权限管理是所有后台系统的都会涉及的一个重要组成部分,主要目的是对不同的人访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,隐私数据泄露等问题。
    目前在公司负责权限这块,所以对权限这块的设计比较熟悉,公司采用微服务架构,权限系统自然就独立出来了,其他业务系统包括商品中心,订单中心,用户中心,仓库系统,小程序,多个APP等十几个系统和终端

    1.权限模型

    迄今为止最为普及的权限设计模型是RBAC模型,基于角色的访问控制(Role-Based Access Control)

  • JavaScript基础知识:什么是闭包?底层原理分析

    最近我在巩固复习前端知识,看了看对闭包的解释,网上的说法有很多种,这篇文章主要分享自己对闭包的理解,如果有什么说错的地方,欢迎指正留言评论。

    什么是闭包?

    在谷歌和百度搜索了下什么是闭包,你能得到至少3种以上的说法,比如说:

    • 闭包是一个函数,这个函数能访问外部函数的变量
    • 闭包是由函数嵌套而成的作用域链
    • 闭包是指可以访问其所在作用域的函数
    • 闭包是指有权访问另一个函数作用域中的变量的函数
    • 闭包就是能够读取其他函数内部变量的函数
    • ......

    而网上大部分能看到的解释是闭包是一个函数,其实我认为,闭包是一个函数这种说法并

  • JavaScript基础知识:搞定Promise,手写Promise代码实现

    最近我都在巩固复习基础知识,把自己对前端基础知识的理解记录下来,这些都是自己的看法,并不一定对,我只是觉得这样理解对自己来说合情合理,符合逻辑,所以要是觉得我有哪里说错的地方,可以评论留言指出,欢迎批判指正。

    Promise是什么?

    首先学习Promise之前,我们要搞清楚Promise是什么的问题,引用MDN上面的一句话:

    本质上 Promise 是一个函数返回的对象,我们可以在它上面绑定回调函数,这样我们就不需要在一开始把回调函数作为参数传入这个函数了。

    https://developer.mozilla.org/zh-C

  • TypeScript基础知识:Type 和 Interface的区别

    在学习TypeScript的时候,我觉得最迷惑的地方就是Type和Interface到底有什么区别?看着好像没什么区别?那为什么要有这两个不同的关键字呢,找到一篇文章说的还不错,翻译过来分享给各位。

    声明合并

    通常我们使用type都是作为变量或者参数的限定类型,interface更倾向于OOP的编程思维,相当于定义一个接口,和他的名字差不多,通常他们可以混用,但是也有一些区别,首先是interface能够进行声明合并,也就是说定义了两个相同名称的接口,TS会讲interface进行合并,但是type会报错,如下:

    inter
    inter
  • 设计模式:观察者模式和发布订阅模式的区别?

    不知道各位在学习设计模式的时候有没有遇到这个问题:观察者(observer)模式发布订阅(publish-subscribe)模式有什么区别?

    经常在网上看到有人把他们混为一谈,其实他们是不一样的,被误导可能是因为《Head Fisrt Design Patterns》这本书里面有提到:Publishers + subscribers = observer pattern。这段话的意思是观察者+订阅者=观察者模式,但是并不是说观察者模式=发布订阅模式,下面我来具体说说他们的区别。

    观察者模式(Observer Pattern

  • openssl载入私钥unable to load Private Key错误

    今天在使用openssl生成公钥的时候遇到了一个坑,遇到了无法载入私钥的报错信息如下:

    openssl rsa -inform pem -in rsa.key -pubout > public-key.pem
    unable to load Private Key
    4341825004:error:09FFF064:PEM routines:CRYPTO_internal:bad base64 decode:/System/Volumes/Data/SWE/macOS/BuildRoots/38cf1d983f/Library/Caches/c
    openssl rsa -inform pem -in rsa.key -pubout > public-key.pem
    unable to load Private Key
    4341825004:error:09FFF064:PEM routines:CRYPTO_internal:bad base64 decode:/System/Volumes/Data/SWE/macOS/BuildRoots/38cf1d983f/Library/Caches/c
  • 前端开发命名规范文档

    这篇文章是我在推进前端团队命名规范总结整理的,这里分享给各位,有需要的朋友可以看看,有什么问题可以留言评论。

    命名方法论介绍

    现在市面上流行的几中命名方法有如下5种:

    驼峰命名法(camelCase)

    驼峰命名是最常用的一种命名方法,通常被用在,函数,变量,如:

    getUser()
    let userInfo = {}
    let isLogin = false
    getUser()
    let userInfo = {}
    let isLogin = false

    帕斯卡命名法(PascalCase)

    帕斯卡命名方法一般常见于Class类、接口、组件等,如:

    class Person {}
    inte
    class Person {}
    inte