虚拟化和容器化
虚拟化虚拟化就是在一台物理机上,运行多台虚拟机,这些虚拟机都相互独立,但又可以共用物理机的CPU、GPU、RAM等硬件设备。
虚拟化技术的实现主要依托于 Hypervisor,Hypervisor 有两种,第一种是直接运行在物理机上(type1),另一种是运行在 OS 上(type2)。
每个虚拟机在 Hypevcisor 上相互之间都是独立的,运行不同 OS,操作不同资源。
Hypervisor 不是一个软件,而是一类软件的统称,例如 VM Ware、Virtual Box、KVM。
容器化使用虚拟化隔离环境的时候,需要安装独立的 OS 和需要用到的资源,每个虚拟机中可能会用到相同的资源(Python、Java、Node.js),但是这些相同的资源不能被其他虚拟机共用,会造成资源浪费。
有时只是想运行一个简单的程序,创建一个虚拟机,配置运行环境这个过程很麻烦,而且也很浪费资源;在迁移服务的时候需要迁移整个虚拟机,这个过程也是很麻烦的。
有了容器就能解决这些问题。
容器化和虚拟化的目的是一样的,都是用来实现一个被单独隔离的环境,容器化和虚拟化的不同之处就在于每个容器之间 ...
JS 原型链
js 有原型链的概念,每个对象都有一个原型链,原型链是一个对象链,它是由一系列的对象组成的,每个对象都有一个指向它的原型对象的引用。当我们访问一个对象的属性时,如果该对象本身没有这个属性,那么它会沿着原型链向上查找,直到找到这个属性或到达原型链的尽头。
在 JS 中,每个对象都有 __proto__ 属性,但是只有函数对象才有 prototype 属性。
Object、Function 都是 JS 内置的函数,类似的还有 Array、RegExp、Date、Boolean、Number、String。
属性 __proto__ 是一个对象,在他里边有 constructor 属性,指向他的构造函数,和一个 __proto__ 属性,指向他的原型对象。
属性 prototype 也是一个对象,他是构造函数的原型对象,有一个默认的 constructor 属性,用来记录实例是由那个构造函数构建的,他的 __proto__ 属性指向 Object.prototype,所以 Object.prototype 的 __proto__ 属性指向 null。
原型对象的 constructor ...
Vue问题
Argument type DefineProps<LooseRequired< Props >, BooleanKey< Props >> is not assignable to parameter type
WebStorm 中出现,使用 withDefaults 为 props 声明默认值时报错
原因:IDE bug
解决方案:更新 WebStorm 版本至 2023.2 以上,并启用 volar 支持
在Vue表单中使用Yup验证
安装和配置安装这里使用 yarn 安装
1$ yarn add yup
配置
按需引入
1import { object, string } from "yup";
全部引入
1import * as yup from "yup";
How to 使用(以登陆验证为例)创建验证架构定义对象架构,并使用架构调用附加到该方法的方法
1const loginSchema = yup.object().shape({})
或者在方法中传递架构
1const loginSchema = yup.object({})
由于需要对字符串验证,所以需要使用方法 string() 定义字符串架构
对于邮件和密码的 check:
1234const loginSchema = yup.object().shape({ email: yup.string().required().email(), password: yup.string().required() ...
Hexo部署到服务器
Hexo 部署到服务器安装一些工具1$yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
安装 Git
先看看有没有装
1$git --verison
没有安装
安装过了
没有安装的执行
1$yum install -y git
创建上传&管理代码的用户
创建一个用户用来上传代码(用户名什么都行,这里以 macadmin 为例)
12$useradd macadmin$passwd macadmin
给网站管理用户添加权限
修改权限
1$chmod 740 /etc/sudoers
修改文件
1$vim /etc/sudoers
大约100行后添加
修改保存后修改权限
1$chmod 600 /etc/sudoers
创建存放 Hexo 工程的文件夹并赋予权限
创建存放 Hexo 工程的文件夹(根据自己需要创建)
1$mkdir /home/hexo
赋予权限
1$chown macadmin:macadmin -R ...
远程SSH出现的问题
远程主机标识已更改
SSH 远程连接时出现 “ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! ”
解决办法
清除连接的 IP
1$ ssh-keygen -R XX.XX.XX.XX
Mac SSH连接
SSH 连接服务器(Mac)创建连接服务器的用户12$useradd macadmin$passwd macadmin
修改用户权限
修改权限
1$chmod 740 /etc/sudoers
修改文件
1$vim /etc/sudoers
大约100行后添加
修改保存后修改权限
1$chmod 600 /etc/sudoers
Mac 获取连接密钥12$cd ~/.ssh/$ssh-keygen
将密钥上传到服务器123$su macadmin$mkdir ~/.ssh$vim ~/.ssh/authorized_keys
连接1$ssh -v macadmin@[服务器IP]
Maven
Maven(Idea)配置 Maven 环境(Mac)
下载 Maven(zip)
将解压后的文件夹放到能找到的地方
例如
1/Users/yuxinheng/Documents/Tools/apache-maven-3.8.7
编辑配置文件
编辑配置文件
1vim ~/.bash_profile
配置文件中添加
12export M2_HOME=/Users/yuxinheng/Documents/tools/apache-maven-3.8.7export PATH=$PATH:$M2_HOME/bin
退出后重载配置文件
1source ~/.bash_profile
配置本地仓库
在刚刚解压的文件夹中新建一个 maven-repo 的文件夹
修改配置文件
apache-maven-3.8.7/conf/setting.xml 中添加
1<localRepository>/Users/user/.m2</localRepository>
配置阿里云加速(在上一步文件中添加)
123456<mirro ...
Java 基础
编码规范命名规范
命名方法
匈牙利命名
一般值命名变量
原则:变量名=类型前缀+描述
例如:bFoo(布尔型变量)、pFoo(指针类型变量)
驼峰命名(最常用)
混合使用大小写字母命名
小驼峰法:第一个单词小写,其他单词首字母大写,例如:myRoomCount
大驼峰法:单词首字母都大写,例如:ClassRoom
包名:全小写,中间可以用点(.)分隔开,
作为命名空间,报名应具有唯一性,可以采用公司或组织域名倒置
java 核心库报名不采用域名倒置,例如:java.awt.event
类和接口名:采用大驼峰法
文件名:大驼峰法
变量:小驼峰法
常量名:全大写,由多个单词组成的用下划线(_)分隔开,例如:YEAR、WEEK_OF_MONTH
方法名:小驼峰法
注释规范
单行注释(//)
多行注释(/* … */)
文档注释(/** … */)
文件注释
在每一个文件开头添加注释
通常包含版权信息、文件名、所在模块、作者信息、历史版本信息、文件内容、作用
12345678/**版权所有 ...