云与雾Blog - 小北的学习笔记
type: channel
link: https://www.yunyuwu.cn/tag/%E5%B0%8F%E5%8C%97%E7%9A%84%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/
items: Java基础
items: C语言笔记（8）函数篇
items: Docker入门
items: 模拟电路
items: 如何访问外面的世界
items: 如何对自己的服务器进行压力测试
items: 记录一次dns服务异常
items: css基础第二弹
items: html学习笔记第二弹
items: vscode配置c语言环境

Java基础
type: item
date: 2024-03-01T16:51:00+08:00
description: 一、初识Java计算机语言发展历史计算机编程语言的发展，是随着计算机本身硬件发展而发展的。硬件速度越快、体积越小、成本越低，应用到人类社会的场景就会越多，那么所需要的算法就会越复杂，也就要求计算机编程语言越高级。最初重达几十吨但一秒只能运算5000次的ENIAC(世界上第一台计算机)，只能做非常小的应用，比如：某些情况的弹道计算。现在任何一个人的手机运算能力都可以秒杀那个年代地球上所有计算机运算能力的总和。计算机编程语言的发展历经了从低级到高级发展。发展的核心思想就是“让人更容易编程”。越容易使用的语言，就有越多人使用；越多人使用，就有越多协作；越多协作，就可以创造越复杂的物体；计算机语言经历了三代：第一代是机器语言，第二代是汇编语言，第三代是高级语言。所需程序https://www.123pan.com/s/EGKKVv-GLfxh.html 提取码:bKAy常用DOS命令DOS系统Microsoft公司推出的操作系统。（在windows之前的操作系统） DOS是英文"Disk Operating System"的缩写,其中文含意是"磁盘操作系统". DOS是单用户、单任务的操作系统.（只能执行一个任务）DOS命令在windows中，我们通过鼠标菜单等来操作系统，而在dos操作系统中，要通过dos命令来操作系统。 是DOS操作系统的命令，是一种面向磁盘的操作命令，不区分大小写。切换盘符 c: d: e:显示目录下详细信息 dir改变当前目录 cd清屏 cls创建目录 md删除目录 rd复制文件 copy删除文件 delJava入门程序开发开发Java程序，需要三个步骤：编写代码，编译代码，运行代码[x] 编写代码：任何一个文本编辑器都可以些代码，如Windows系统自带的记事本[x] 编译代码：将人能看懂的源代码（.java文件）转换为Java虚拟机能够执行的字节码文件（.class文件）[x] 运行代码：将字节码文件交给Java虚拟机执行第一个java程序public class helloworld(){ public static void main(String[] args){ System.out.println("hello world"); } }注意：文件名称必须与代码中的类名称一致JDK组成JDK由JVM、核心类库、开发工具组成，如下图所示：什么是JVM?答：JDK最核心的组成部分是JVM（Java Virtual Machine），它是Java虚拟机，真正运行Java程序的地方。什么是核心类库？答：它是Java本身写好的一些程序，给程序员调用的。 Java程序员并不是凭空开始写代码，是要基于核心类库提供的一些基础代码，进行编程。什么是JRE?答：JRE（Java Runtime Enviroment），意思是Java的运行环境；它是由JVM和核心类库组成的；如果你不是开发人员，只需要在电脑上安装JRE就可以运行Java程序。什么是开发工具呢？答：Java程序员写好源代码之后，需要编译成字节码，这里会提供一个编译工具叫做javac.exe，编写好源代码之后，想要把class文件加载到内存中运行，这里需要用到运行工具java.exe。 除了编译工具和运行工具，还有一些其他的反编译工具、文档工具等待...JDK、JRE的关系用一句话总结就是：用JDK开发程序，交给JRE运行Java跨平台原理Java跨平台原理：C语言跨平台原理：总结：JVM(Java Virtual Machine)就是一个虚拟的用于执行bytecode字节码的”虚拟计算机”。他也定义了指令集、寄存器集、结构栈、垃圾收集堆、内存区域。JVM负责将Java字节码解释运行，边解释边运行，这样，速度就会受到一定的影响。不同的操作系统有不同的虚拟机。Java 虚拟机机制屏蔽了底层运行平台的差别，实现了“一次编译，随处运行”。 Java虚拟机是实现跨平台的核心机制。如图所示：我们说的语言跨平台是编译后的文件跨平台，而不是源程序跨平台。接下来我们再比较下两种方式的差异：第一，C语言是编译执行的，编译器与平台相关，编译生成的可执行文件与平台相关；第二，Java是解释执行的，编译为中间码的编译器与平台无关，编译生成的中间码也与平台无关（一次编译，到处运行），中间码再由解释器解释执行，解释器是与平台相关的，也就是不同的平台需要不同的解释器.Java开发工具IDEA想要在IDEA正确的写一个Java程序，必须先认识一下IDEA的管理Java程序的工程结构。第一步：首先得在IDEA中创建一个Project（工程、也叫项目），后面统称为工程。第二步：需要在Project中创建Module（模块），一个工程中可以包含多个模块第三步：需要在Module中新建Packag…

C语言笔记（8）函数篇
type: item
date: 2023-10-08T13:26:00+08:00
description: 一、函数C语言里可以对语句进行分组，每个语句分组叫做一个函数一旦函数被调用，会执行该函数所表示的语句分组1.1 函数的定义//此段代码为一个函数用于计算a+b的值 int main (int a,int b) { return a + b; }函数调用 - 使用已经定义好的函数被使用的函数称为被调用函数 - printf函数使用被调用函数的函数被称为调用函数 - main函数函数定义的写法：返回值类型 函数名 (输入参数值)//本行为函数头 { //花括号里边的为函数体 做点什么事情吧 return 返回值; }形参与实参：形参与实参相互独立#include<stdio.h> int add (int a,int b)//此处a,b为形式参数、简称：形参 { return a + b; } int main() { int result; result = add(2,3);//此处为实际参数，简称：实参 printf("%d",result); return 0; }1.2 函数调用的本质三步骤：跳转执行返回（从哪儿跳转，到哪儿返回）1.3 为什么要使用函数明确任何C语言程序都是由两部分组成：一堆的变量（包括数组）和一堆的函数前者负责分配内存，后者负责操作访问内存函数的概念：就是一堆语句的组合，一次写好，到处使用！本质目的：减少开发的工作量，提高代码的可维护性1.4 函数的返回值只能从被调用函数向调用函数传递一个数据，这个数据叫做被调用函数的返回值返回值必须记录在被调用函数的储存区里，编写函数的时候要把这个储存区的类型名称卸载函数名称前面被调用函数里使用return关键字指定作为返回值的数值调用函数里要把整个函数调用该语句当作数字使用，这个数字就是被调用函数的返回值1.5 函数的参数可以从调用函数向被调用函数传递多个数据，这些数据的类型可以不同被调用函数需要为每个传递过来的数据提供一个储存区编写函数的时候需要在函数名称后面的小括号里声明一组变量，这些变量就用来表示前面提到的储存区，这些变量叫做形式参数，小括号里的所有内容叫做形式参数列表调用带有参数的函数时需要在函数调用语句的小括号里为每个形式参数提供一个对应的数字，计算机 会把这些数字记录到对应的形式参数里。被调用函数可以通过形式参数得到这些数字。这些数字叫做实际参数只要能当作数字使用的内容，都可以作为实际参数使用。函数调用过程中通常伴随着两个函数之间的数据传递数据传递存在两个完全相反的方向可以从被调用函数向北调用函数传递数据-参数可以从被调用函数向调用函数传递数据-返回值1.6 函数的声明任何函数都可以分为大括号前面的部分和大括号里面的部分函数大括号前面的部分可以单独写成一条语句，这种语句叫做函数声明语句函数声明语句里可以省略形式参数名称把函数声明语句卸载文件开头叫做函数的显式声明除了主函数以外的所有函数都应该进行显式声明格式：extern 返回值类型 函数名(形参列表)函数的定义在函数的调用前面，可以省略函数声明二、递归函数2.1 什么是递归函数C语言里函数可以调用自己，自己调用自己的函数叫递归函数2.2 递归函数编写步骤单独编写语句解决分解后的每个小问题（假设递归函数已经可以使用了）在递归调用语句前编写分支处理不可分解的情况（这种分支必须要能结束函数）三、作用域和生命周期能使用某个变量的所有语句叫做变量的变量的作用域生命周期是一段时间，在生命周期开始的时候计算机给程序分配储存区，在生命周期结束的时候，计算机把分配给程序的储存区收回3.1 局部变量局部变量是定义在函数内的变量作用域：定义的位置开始到函数结束生命周期：函数某一次执行的时间范围3.2 全局变量全局变量是定义在函数外的变量作用域：从定义的位置开始向下的所有语句生命周期：整个程序的执行时间3.3 作用域和生命周期局部变量（静态局部变量）区别：静态局部变量的生命周期是整个程序的执行时间全局变量（静态全局变量）区别：静态全局变量无法被其他文件调用生命周期：定义变量的时候编译器为其分配存储区，函数结束的时候回收其存储区静态变量的生命周期和作用域与普通变量的不一样，静态变量的生命周期是整个程序执行时间声明静态变量的时候需要使用static关键字没有初始化的静态变量会自动被初始化成0函数结束后，静态局部变量的储存区也还是可以使用静态局部变量的作用域仍然只包含函数里面的所有语句静态变量的初始化只在程序开始的时候执行一次，不论初始化语句写在什么地方静态全局变量的生命周期还是整个程序的执行时间，但是它的作用域只包含声明它的文件里的所有语句（不可以跨文件使用静态全局变量）

Docker入门
type: item
date: 2023-09-26T16:44:00+08:00
description: 一、Docker基本概念当我们利用Docker安装应用时，Docker会自动搜索并下载应用镜像（image）。镜像不仅包含应用本身，还包含应用运行所需要的环境、配置、系统函数库。Docker会在运行镜像时创建一个隔离环境，称为容器（container）。镜像仓库，就是专门保存镜像、管理镜像的地方。Docker官方维护了一个公共仓库：Docker Hub，任何注册了的用户都可以上传镜像到Docker Hub，也可以从上面下载镜像。另外，国内也有很多类似的镜像仓库：比如 网易云镜像仓库、阿里云镜像仓库等。1. Docker是做什么的？Docker可以帮助我们下载应用镜像，创建并运行镜像的容器，从而快速部署应用什么是镜像？将应用所需的函数库、依赖、配置等与应用一起打包得到的就是镜像什么是容器?为每个镜像的应用进程创建的隔离运行环境就是容器什么是镜像仓库?存储和管理镜像的服务就是镜像仓库，2. Docker命令docker run -d \ --name mysql \ -p 3306:3306 \ -e TZ=Asia/Shanghai \ -e MYSQL_ROOT_PASSWORD=123 \ mysqldocker run是创建并运行一个容器，-d参数是让容器在后台运行，在关掉终端后也可以运行--name参数是给容器起一个唯一的名字-p参数是设置端口映射，这个选项将容器的3306端口映射到宿主机的3306端口，这样你就可以从宿主机访问到MySQL服务了。-e TZ=Asia/Shanghai \参数是设置环境变量，影响mysql容器的时区设置-e MYSQL_ROOT_PASSWORD=123 \这个选项设置环境变量MYSQL_ROOT_PASSWORD为"123"，这会影响到MySQL的root用户的密码。mysql是要运行的镜像的名字3. Docker镜像命名规范Docker镜像的命名规范主要包括以下几点：使用小写字母和数字：因为Docker镜像名称是大小写敏感的，所以建议使用小写字母和数字来避免混淆。使用短划线(-)或下划线(_)分隔：可以使用短划线或下划线来分隔不同的单词，例如my-image或my_image。以library/project形式命名：镜像名称通常表示其包含的库或项目，因此建议使用library/project的形式来命名镜像，例如ubuntu:18.04或nginx:latest。遵循命名空间规则：如果一个镜像同时包含多个库或项目，可以使用冒号(:)将它们分开，例如redis:6.0.9或node:14.17.0。不要使用特殊字符：尽量避免在镜像名称中使用特殊字符，如空格、斜杠、问号等。这些字符可能会导致镜像名称无法正确解析。使用描述性名称：尽量给镜像起一个描述性的名称，以便于理解它包含的内容。例如，webapp:latest表示一个包含最新版本web应用程序的镜像。二、Docker基础1. 数据卷概念及挂载因为容器与宿主机是隔离的，如果容器删除，容器内的数据会丢失。为了解决这个问题，有了数据卷。在后期宿主机目录发生变更，只要改变数据卷的指向即可。数据卷（volume）是一个虚拟目录，是容器内目录与宿主机目录之间映射的桥梁。它将宿主机目录映射到容器内目录，方便我们操作容器内文件。数据卷创建的默认目录是/var/lib/docker/volumes命令说明docker volume creqate创建数据卷docker volume ls查看所有数据卷docker volume rm删除指定数据卷docker volume inspect查看某个数据卷的详情docker volume prune清除数据卷在执行docker run命令时，使用-v 数据卷:容器内目录 可以完成数据卷挂载在创建容器时，如果挂在了数据卷且数据卷不存在，会自动创建数据卷。2. 本地目录的挂载使用docker run -v命令挂载，具体命令为：docker run -v 本地目录:容器内目录l本地目录必须以“/”或 "./" 开头，如果直接以名称开头，会被识别为数据卷而非本地目录-v mysql : /var/lib/mysql会被识别为一个数据卷叫mysql，运行时会自动创建这个数据卷-v ./mysql : /var/lib/mysql会被识别为当前目录下的mysql目录，如果不存在会自动创建镜像中包含了应用程序所需要的运行环境、函数库、配置、以及应用本身，逐层构建而成。3. 自定义镜像（Dockerfile）镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是把上述文件按照顺序逐层打包。Dockerfile就是一个文本文件，其中包含一个个的指令(Instruction)，用指令来说…

模拟电路
type: item
date: 2023-07-20T10:59:00+08:00
description: 一、什么是电流1.1 原子一切都是原子构成，一个简单的原子模型可以简化成带正电荷的原子核在中央，周围环绕有若干个带负电的电子。同性相斥，异性相吸。1.2 原子与电荷原子核带正电，吸引带负电的电子，电子带负电之间又互相排斥。绝大多数固体材料，他们的原子核和电子靠的近是稳定的。但是在金属固体里面，比如铜，电子离原子核远，是可以自由移动的。原子核原地不动，保持着材料的结构稳定，但是电子可能会在原子之间跳动。1.3 电流的产生如果一个电子不老实进行移动，那么附近的电子就会像多米诺骨牌一样不断移动。他们之间不断推着挤，就产生了电流。1.4 电流的单位 安培1000ma=1A1.5 电路与电池电路就是电流导通的道路，电池是一种特殊的通过化学反应产生能量的装置，电池正极吸收电子，电池负极发送电子。1.6 电流方向传统电学：电流从正极流向负极真实世界：电流从负极流向正极1.7 交流电(AC)与直流电(DC)AC(交流电)交流电的电流方向随时间变化电荷会在正、负两个方向上流动，周期性的交替反向交流电通常是通过电网供应的电力用于各种大型较大功耗的电气设备和机械设备如电视、电冰箱、微波炉DC(直流电)直流电是指电流方向不变的电流电荷始终在同一个方向上流动直流电源通常由电池或者其他直流电源供应直流电常用于需要稳定电压和恒定方向的小型设备中如手机、电动车直流交流电的对比1.8 开路与闭路开路与闭路的区别在于电路中开关的状态是否闭合，这直接影响了电路中的电流是否能够流通，从而影响电路中的电气设备是否能够正常工作。开路当电路中的开关处于断开状态，电路就处于开路状态。在这种状态下，电流无法流通，电路中的电气设备也无法工作。闭路当电路中的开u按处于闭合状态，电路就处于闭路状态。在这种状态下，电流可以在电路中流通，电器设备也可以正常工作。二、什么是电压2.1 电压电压就是电势能什么是势能？势能是物理学描述的能量类型，说明物体具备的能量。电压，电势能是指在电子在电路中的动能。单位通常为伏特(V)。电压是电力系统中的一种重要概念，它决定着电流流动的强度。电压越高，电子移动的越快，电流就会越大；而电压越低，电流就会越小。三、电阻和欧姆定律电压产生电势差，推动电流的流动3.1 电阻电压产生电势差，推动电流的流动电阻是电子学中的基本概念，它是指电流经过导体时阻碍电流流动的程度、电阻的单位是欧姆。电压、电阻和电流之间的关系3.2 欧姆定律欧姆定律是电学中的基本定律之一他描述了电流和电压之间的关系。欧姆定律的公式为I=U/R，其中I是电流，U是电压。R是电阻。这个公式表面，在电阻不变的情况下，电压和电流成正比欧姆定律的重要参数I 电流单位 安 AU 电压单位 伏 VR 电阻单位 欧姆 R3.3 欧姆定律的计算串联电路并联电路串并联电路的计算四、常见元器件4.1 电阻器作用就是阻碍电流的流动电阻器的分类电阻器的作用电阻器是一种电子元器件，它可以提供一定的电阻，限制电流的流动。电阻器是由导体材料制成的，通过将导体材料绕制成螺旋状或折叠装，并将两端引出，形成一个固定电阻值的器件。4.1.1 电阻的分类基于功能和制作工艺划分。普通电阻：普通电阻是一种最基本的电阻器，通常由一根或多根绕在绝缘体上的金属丝或碳膜组成，可以提供固定的电阻值，适用于各种电路中。薄膜电阻：薄膜电阻是一种由金属或合金薄膜制成的电阻器，可以提供高精度和稳定性的电阻值，常用于精密仪器、测量仪器等高要求的场合。光敏电阻：光敏电阻是一种电阻值受光照强度影响的电阻器，常用于光敏电路和光控系统中。金属薄膜电阻：金属薄膜电阻器是一种由金属薄膜制成的电阻器，具有较高的精度和稳定性，适用于高精度电路中。电位器：电位器是一种可调电阻器，通常由一个旋转或滑动的电阻器件和一个旋钮或滑动器组成，可以提供可调的电阻值，常用于电路的调节和控制。旋钮可调电阻：旋钮可调电阻是一种可调电阻器，与电位器类似，但是旋钮可调电阻通常是用旋钮来改变电阻值，通常用于电子设备的调节和控制。热敏电阻：热敏电阻是一种电阻值随温度变化而变化的电阻器，通常用于温度测量和控制系统中。压敏电阻：压敏电阻是一种电阻值随压力变化而变化的电阻器，通常用于压力传感器和压力测量等应用场合。高精度电阻：高精度电阻是一种精度较高的电阻器，通常具有稳定的电阻值和温度系数，适用于高精度仪器和精密测量仪器等场合。4.1.2 电阻的数据手册电阻我们主要关心：封装、标称、额定功率封装：看电阻是什么样的，直插还是贴片的，大小是多大标称：看电阻表的电阻阻值是多少，精确度是多少，精度越高越贵额定功率：额定功率计算公式为：P=I*I*R=I*U，额定功率其实决定了耐压值。电阻能通过的最大电流是固定的，额定功率越高，耐压值就越高，超过了电阻的耐压值会导致电阻烧毁。4.2 电容器电容就是装电的容器，主要防止…

如何访问外面的世界
type: item
date: 2022-03-24T16:25:00+08:00
description: 开篇今天怀着把游戏彻底戒掉的心，给windows甩一边去了，重装了deepin系统。作为入门级Linux，上手简单，适合小白，一来是deepin在Linux中我个人感觉还是比较美观的，二来想熟悉Linux的话，拿deepin练手比较好吧，毕竟有着软件商店的加持，中文社区也活跃，社区资源丰富。感觉对新手入门嘎嘎舒适。三来，就当支持国产崛起了，毕竟deepin也是国产的。起因在将系统装完，安装完该有的软件之后，闲下来的我想去外边的世界看看突然想起来好像我还没有一个合适的梯子。我记得我在香港还是有一个小水管服务器的，于是决定拿来搭梯子。在某论坛找了一个一键脚本，我放到下边。服务端搭建选择海外的服务器，将下方代码复制，粘贴输入到ssh终端后回车。便会出现安装菜单，根据自己的情况输入对应数字，选择合适的安装即可。bash <(curl -sL https://storage.googleapis.com/tiziblog/setup.sh)VMESS，即最普通的V2ray服务器，没有伪装，也不是VLESSVMESS+KCP，传输协议使用mKCP，VPS线路不好时可能有奇效VMESS+TCP+TLS，带伪装的V2ray，不能过CDN中转VMESS+WS+TLS，即最通用的V2ray伪装方式，能过CDN中转，推荐使用VLESS+KCP，传输协议使用mKCPVLESS+TCP+TLS，通用的VLESS版本，不能过CDN中转，但比VMESS+TCP+TLS方式性能更好VLESS+WS+TLS，基于websocket的V2ray伪装VLESS版本，能过CDN中转，有过CDN情况下推荐使用VLESS+TCP+XTLS，目前最强悍的VLESS+XTLS组合，强力推荐使用（但是支持的客户端少一些）trojan，轻量级的伪装协议trojan+XTLS，trojan加强版，使用XTLS技术来提升性能注意：目前一些客户端不支持VLESS协议，或者不支持XTLS，请按照自己的情况选择组合有几个选项会要求输入伪装域名，如果你的服务器上已经部署了网页，有可能会使网页出错对于VLESS协议、VMESS+WS+TLS的组合，网页上输入伪装域名，能正常打开伪装站，说明服务端已经正确配置好。客户端选择Linux端1.安装 V2Ray 内核：# download script curl -Ls https://mirrors.v2raya.org/go.sh | sudo bash # 关闭systemd服务 sudo systemctl disable v2ray --now # install v2ray-core from jsdelivr sudo bash go.sh2.安装 v2rayA方法一：通过软件源安装添加公钥wget -qO - https://apt.v2raya.org/key/public-key.asc | sudo tee /etc/apt/trusted.gpg.d/v2raya.asc添加 V2RayA 软件源echo "deb https://apt.v2raya.org/ v2raya main" | sudo tee /etc/apt/sources.list.d/v2raya.list sudo apt update安装 V2RayAsudo apt install v2raya方法二：手动安装 deb 包下载合适的deb包https://github.com/v2rayA/v2rayA/releaseshttps://yunyuwu.lanzouv.com/iH2lo01z81cd如果从蓝奏云下载，记得先解压。然后可以使用Gdebi、QApt等图形化工具来安装，也可以使用命令行：sudo apt install /path/download/installer_debian_xxx_vxxx.deb ### 自行替换 deb 包所在的实际路径3.启动1.启动v2rayA及设置v2rayA自动启动从 1.5 版开始将不再默认为用户启动v2rayA及设置开机自动。启动v2rayAsudo systemctl start v2raya.service设置开机自动启动sudo systemctl enable v2raya.service2.开始设置通过2017端口 如http://localhost:2017 访问UI界面。如果不能正常访问，请查阅官方相关文档排除。3.创建账号在第一次进入页面时，你需要创建一个管理员账号，请妥善 保管 牢记 你的用户名密码，如果遗忘，使用sudo v2raya --reset-password命令重置。4.导入节点我们从服务器那里查看配置或者导入节点。以创建或导入的方式导入节点，导入支持节点链接、订阅链…

如何对自己的服务器进行压力测试
type: item
date: 2022-03-23T11:06:00+08:00
description: 项目的开展我们对项目进行部署之后，假设这个项目每天会有百万次的访问。我们的项目能不能做到稳定提供服务呢？所以我们需要进行一些测试。如何进行测试一、首先是付费的世界上没有钱解决不了的问题，如果有 那一定是钱的金额不够。1.阿里云提供的阿里云性能测试 PTS阿里云的性能测试PTS无需安装软件；脚本场景监控简单化，省时、省力；分布式并发压测，施压能力无上限；快速大规模集群扩容、支持几十万用户及百万级TPS性能压测；可模拟海量用户的真实业务场景，全方位验证业务站点的性能、容量和稳定性。性能测试PTS（Performance Testing Service）是一款性能测试工具。支持按需发起压测任务，可提供百万并发、千万TPS流量发起能力，100%兼容JMeter。提供的场景编排、API调试、流量定制、流量录制等功能，可快速创建业务压测脚本，精准模拟不同量级用户访问业务系统，帮助业务快速提升系统性能和稳定性。PTS 广泛应用于各种压力测试和性能测试场景，包括但不限于以下场景：详情请观看使用文档如何在一分钟内发起压测？2.腾讯云提供的测压大师LMWeTest 压测大师（Load Master，LM）是简单易用的自动化性能测试平台，为用户提供测试框架及压测环境、创建虚拟机器人模拟产品多用户并发场景，支持 HTTP 或 HTTPS 协议，包括 Web/H5 网站、移动应用、API 、游戏等主流压测场景，适用于产品发布前及运营中的服务器压力测试及性能优化。使用详情请观看使用文档如何在一分钟内发起压力测试二、不花钱的说完了付费的，再说说不花钱的。1.http_loadhttp_load是一款基于Linux平台的web服务器性能测试工具，用于测试web服务器的吞吐量与负载，web页面的性能。它又轻巧又简便，整个安装包就100K左右。它可以快速用来对网站或者Web API进行压力测试。而且功能还挺强大的，特别是在架构验证过程中，测试某个平台的并发和响应时间相当的管用。下载地址：https://yunyuwu.lanzouv.com/ih4Kc01wfvkfhttps://pan.baidu.com/s/105917KnmkhKJuuBNQ1paRA?pwd=ngid安装：上传服务器后#tar xfz http_load-09Mar2016.tar.gz #cd http_load-09Mar2016 #make && sudo make install因为包很小，所以会瞬间安装完成，直接打http_load命令验证下是否安装成功，你应该可以看到下面的信息：usage: http_load [-checksum] [-throttle] [-proxy host:port] [-verbose] [-timeout secs] [-sip sip_file] -parallel N | -rate N [-jitter] -fetches N | -seconds N url_file One start specifier, either -parallel or -rate, is required. One end specifier, either -fetches or -seconds, is required.基本用法：使用http_load的主要方式就是用命令http_load <参数> <url列表文件>。其中url列表文件就是一个文本文件，每行放一条你要测试的URL地址（默认只支持HTTP），http_load在运行时会从中随机抽取地址访问。当然你也可以只放一条，那就是针对特定地址做压测。http_load的参数主要有：-parallel 简写 -p: 同一时间发起的并发连接数-rate 简写 -r: 每秒开启的并发连接数-parallel或-rate必须且只能有一个-fetches 简写 -f ：总计的访问次数-seconds 简写 -s ：总计的访问时间-fetches或-seconds必须且只能有一个-proxy host:port: 指定需经过的代理地址和端口timeout secs: 连接闲置后多久超时，默认60秒-verbose: 控制台输出详细信息注意网上有些文章说-p是并发进程数，千万别被带坑里了。http_load就一个进程，它只是模拟并发连接，不是真起了一大堆客户端进程。每个连接的调用都是非阻塞式的，因此确保了并发量。首先我们编辑一个urls.txt文件格式是每行一个URL。文件中可以有这种格式http://www.baidu.com/亦或是192.168.0.1这一类的都可以测。文件格式如下：https://yunyuwu.cn/adiod https://yunyuwu.cn/3ryn89 https://yu…

记录一次dns服务异常
type: item
date: 2022-03-19T09:28:00+08:00
description: 起因今天一觉睡醒，犹如执行任务一样打开了我的电脑，打算继续学习C语言。结果在打开浏览器之后，发现居然提示我找不到dns服务器地址。但是可以通过ip打开服务器的宝塔面板，这就让我一脸懵。经过[card title="第一次尝试" color="success"]然后我试图使用之前安装的火绒安全里的网络修复小组件进行修复，以往都是可以修复的。但是今天居然不能修复，在重试了几次后，依然不行。于是我试图通过重装网卡进行修复。[/card][card title="第二次尝试" color="warning"]这次我决定使用重装网卡的方式修复，但是依然没有用。[/card][card title="第三次尝试" color="danger"]在自己无计可施了的情况下，我决定求助广大网友。于是，我使用手机打开了《百度》。经过查找，发现是当前dns服务器地址有问题，或者不可用。[/card]问题的解决[card title="解决方法" color="info"]找到了问题，那么怎么解决呢。要用到dns解析服务器地址，我四处查找找到了几个免费公共的DNS解析服务器。[/card]服务商dns1dns2阿里223.5.5.5223.6.6.6百度180.76.76.762400:da00::6666(ipv6)OpenDNS208.67.222.222208.67.220.220Google208.67.222.222208.67.220.220114 DNS114.114.114.114114.114.115.115Cloudflare1.1.1.11.0.0.1DNSPod119.29.29.29182.254.116.116PS:如果配置了不合理的DNS服务器，可能会导致网速的缓慢、打不开网站等情况。一些恶意的DNS还会让你的电脑弹出恶意广告等安全问题。在网卡设置页，右击点属性，然后双击internet协议版本4(TCP/IPv4)，然后点击使用下面的DNS服务器地址，在下边的两个输入框中输入dns地址`，最后点击确定。这个时候就可以打开浏览器访问网页正常上网了。

css基础第二弹
type: item
date: 2022-02-06T10:19:00+08:00
description: css基础第二弹一、emmet语法1、简介Emmet语法的前身是Zen coding,它使用缩写,来提高html/css的编写速度, Vscode内部已经集成该语法。快速生成HTML结构语法快速生成CSS样式语法2、快速生成HTML结构语法生成标签 直接输入标签名 按tab键即可 比如div然后tab键，就可以生成 如果想要生成多个相同标签 加上*就可以了 比如div*3就可以快速生成3个div如果有父子级关系的标签，可以用>比如ul>li就可以了如果有兄弟关系的标签，用+就可以了 比如div+p如果生成带有类名或者id名字的，直接写.demo或者#two tab键就可以了如果生成的div 类名是有顺序的，可以用自增符号$如果想要在生成的标签内部写内容可以用{ }表示3、快速生成CSS样式语法CSS 基本采取简写形式即可比如w200按tab可以生成width: 200px;比如lh26px按tab可以生成line-height: 26px;4、快速格式化代码Vscode快速格式化代码:shift+alt+f也可以设置 当我们 保存页面的时候自动格式化代码:1）文件 ------.>【首选项】---------->【设置】；2）搜索emmet.include;3）在settings.json下的【工作区设置】中添加以下语句："editor.formatOnType": true, "editor.formatOnSave": true二、css的复合选择器1、什么是复合选择器？在 CSS 中，可以根据选择器的类型把选择器分为基础选择器和复合选择器，复合选择器是建立在基础选择器之上，对基本选择器进行组合形成的。复合选择器是由两个或多个基础选择器，通过不同的方式组合而成的，可以更准确、更高效的选择目标元素（标签）常用的复合选择器包括：后代选择器、子选择器、并集选择器、伪类选择器等等2、后代选择器 (重要）定义：后代选择器又称为包含选择器，可以选择父元素里面子元素。其写法就是把外层标签写在前面，内层标签写在后面，中间用空格分隔。当标签发生嵌套时，内层标签就成为外层标签的后代。语法：语法说明：元素1 和 元素2 中间用空格隔开元素1 是父级，元素2 是子级，最终选择的是元素2元素2 可以是儿子，也可以是孙子等，只要是元素1 的后代即可元素1 和 元素2 可以是任意基础选择器例子： 百度 百度 上述语法表示选择ul中li中里面的所有a标签(后代元素)。3、子选择器 (重要）定义：子元素选择器（子选择器）只能选择作为某元素的最近一级子元素。（简单理解就是选亲儿子元素）语法：上述语法表示选择元素1 里面的所有直接后代(子元素) 元素2。语法说明：元素1 和 元素2 中间用 大于号 隔开元素1 是父级，元素2 是子级，最终选择的是元素2元素2 必须是亲儿子，其孙子、重孙之类都不归他管. 你也可以叫他 亲儿子选择器例子： 大肘子 猪头 猪尾巴 4、并集选择器 (重要）定义：并集选择器可以选择多组标签, 同时为他们定义相同的样式，通常用于集体声明。并集选择器是各选择器通过英文逗号（,）连接而成，任何形式的选择器都可以作为并集选择器的一部分。语法：上述语法表示选择元素1 和 元素2。语法说明：元素1 和 元素2 中间用逗号隔开逗号可以理解为和的意思并集选择器通常用于集体声明并集选择器中的最后一个选择器不需要加逗号例子：5、伪类选择器定义：伪类选择器用于向某些选择器添加特殊的效果，比如给链接添加特殊效果，或选择第1个，第n个元素。语法：伪类选择器书写最大的特点是用冒号（:）表示，比如 :hover、:first-child。6、链接伪类选择器定义：伪类选择器用于向某些选择器添加特殊的效果，比如给链接添加特殊效果，或选择第1个，第n个元素。语法：伪类选择器书写最大的特点是用冒号（:）表示，比如 :hover 、 :first-child 。伪类选择器属性a:link没有点击过的(访问过的)链接a:visited点击过的(访问过的)链接a:hover鼠标经过的那个链接a:active鼠标正在按下还没有弹起鼠标的那个链接链接伪类选择器注意事项为了确保生效，请按照 LVHA 的循顺序声明 :link－:visited－:hover－:active记忆法：love hate 或者 lv 包包 hao因为a链接在浏览器中具有默认样式，所以我们实际工作中都需要给链接单独指定样式。链接伪类选择器实际工作开发中的写法：7、:focus伪类选择器定义：:focus伪类选择器用于选取获得焦点的表单元素。焦点就是光标，一般情况 类表单元素才能获取例子：复合选择器总结三、css的显示模式1、什么是元素的显示模式定义：元素显示模式就是元素（标签）以什么方式进行显示，比如自己占一行…

html学习笔记第二弹
type: item
date: 2022-01-16T10:34:00+08:00
description: 上一篇文章为HTML标签上半部分，此篇为下半部分。表格标签标签table、tr与td标签表格标签的作用：主要用于显示、展示数据，因为它可以让数据显示的非常的规整，可读性非常好。特别是后台展示数据的时候，能够熟练运用表格就显得很重要。一个清爽简约的表格能够把繁杂的数据表现得很有条理。表格标签不是用来布局，是用来整理数据。 第一行单元格内的文字 第一行单元格内的文字 第一行单元格内的文字 第二行单元格内的文字 第二行单元格内的文字 第二行单元格内的文字 ... 上边的示例中 是用于定义表格的标签。说明这个地方是一个表格 标签用于定义表格中的行，必须嵌套在 标签中。 用于定义表格中的单元格，必须嵌套在标签中。字母td指表格数据（table data），即数据单元格里面的的内容。表格标题 我是表格标题 使用及注意事项：caption元素定义表格标题，通常这个标题会被居中且显示与表格之中。caption标签必须紧随table标签之后。这个标签只存在表格里面才有意义。th（表头单元格）标签一般表头单元格位于表格的第一行或第一列，表头单元格里面的文本内容加粗居中显示. 标签表示HTML表格的表头部分(table head的缩写)。th也是一个单元格，只是和td不一样，会让文字加粗居中。属性名属性值描述alignleft,center,right规定表格相对周围元素的对其方式border1或""规定表格单元是否拥有边框，默认为"",表示没有边框cellpadding像素值规定单元边沿与其内容之间的空白，默认1像素cellspacing像素值规定单元格之间的空白，默认2像素width像素值或百分比规定表格的宽度表格结构标签作用:因为表格可能会很长,为了更好的表示表格的语义，可以将表格分割成表格头部和表格主体两大部分在表格标签中，分别用： 标签表示表格的头部区域、 标签表示表格的主体区域，这样可以更好的分清表格结构。 标记用于提供页脚内容组。此标记在带有标题和正文的HTML表中使用，称为“thead”和“tbody”。 标记是表的子标记，是 和 的父标记。注意事项： 用于定义表格的头部。 内部必须拥有 标签，一般是位于第一行。 用于定义表格的主体，主要用于放数据本体。tfoot标签用于提供页脚内容组，以上标签都是放在 标签中。如果使用thead、tfoot以及tbody元素，就必须使用全部的元素。它们的出现次序是：thead、tfoot、tbody，这样浏览器就可以在收到所有数据前呈现页脚了。合并单元格有些表格不需要那么多的单元格，我们可以给他们合并，这个时候需要用到合并单元格。合并单元格的时候有两种合并，一个是跨行合并，顾名思义就是跨行与行之间合并、还有一个跨列合并，列与列之间合并。跨行合并：rowspan="合并单元格的个数"跨列合并：colspan="合并单元格的个数"使用方法：确定是跨行或跨列在要合并的单元格写上合并方式与合并单元格数量例如： 即跨列合并两个单元格删除被合并的单元格。属性属性名属性值描述border1或""规定表格单元是否拥有边框，默认为"",表示没有边框width像素值或百分比规定表格的宽度height像素值或百分比规定表格的高度cellspacing像素值规定单元格之间的空白，默认2像素单元格与单元格之间的距离cellpadding像素值规定单元边沿与其内容之间的空白，默认1像素alignleft,center,right规定表格相对周围元素的对其方式colspan合并的单元格个数列合并rowspan合并的单元格个数行合并列表表格是用来显示数据的，那么列表就是用来布局的。HTML支持无序列表、有序列表、自定义列表。列表最大的特点就是整齐、整洁、有序，它作为布局会更加自由和方便。无序列表无序列表是一个项目的列表，此列项目使用粗体圆点●进行标记。无序列表使用 标签，列表项使用 标签定义。语法格式： 列表项1 列表项2 列表项3 ... 注意事项：无序列表的各个列表项之间没有顺序级别之分，是并列的。 中只能嵌套 ，不能直接在 标签中输入其他标签或者文字。 之间相当于一个容器，可以容纳所有元素。无序列表会带有自己的样式属性，但在实际使用时，我们会使用 CSS 来设置。有序列表有序列表就是有顺序排列的列表，其各个列表项会按照一定的顺序排列定义。在HTML标签中， 标签用于定义有序列表，列表排序以数字来显示，并且使用 标签来定义列表项。语法格式： 列表项1 列表项2 列表项3 ... 注意事项： 中只能嵌套 ，不能直接在 标签中输入其他标签或者文字。 之间相当于一个容器，可以容纳所有元素。无序列表会带有自己的样式属性，但在实际使用时，我们会使用 CSS 来设置。自定义列表自定义列表不仅仅是一列项目，而是项目及其注释的组合。定义列表…

vscode配置c语言环境
type: item
date: 2021-12-18T08:45:00+08:00
description: 开篇昨晚上一不小心给电脑整坏了，无奈之下就重装了系统。装完系统之后最麻烦的当然就是所有学习资料的安装恢复了。这样的工作对我这种记忆力不大好的“老年人”极度不友好！可是这又有什么办法呢，找到了我在云盘的学习资料后，当然是安装对应的工具了。我首先选择恢复的是vscode这款神器，我感觉这款轻量编辑器还是对我挺友好的，各个系统平台都可以使用，支持多种语言不说，还有丰富多样的各类插件免费使用。配置过程要拥有vscode这就不用说了吧，没有的话可以去官网下载地址下载，或者使用我提供的蓝奏云链接，密码：5mp1（64位与32位）https://code.visualstudio.com/#home-termshttps://yunyuwu.lanzouv.com/b00p6w4pi第一步：汉化vscode并安装c插件同时摁住（ctrl+shift+x）在搜索框中输入chinese，然后我们点击第一个简体中文下的install，等待下载完成后重启vscode就可以看到汉化后的页面了。然后我们继续安装以下两款插件C/C++以及Code Runner第二步：安装编译器（MinGW-W64 GCC）由于官网下载地址需要科学上网，为了方便我也上传了蓝奏云一份。官网下载的时候，要下载x86_64-posix-seh这个版本的o！https://sourceforge.net/projects/mingw-w64/files/https://yunyuwu.lanzouv.com/i8aD8xq4muf第三步：配置环境变量下载完成后解压到自己想要的目录（路径中不能有中文），然后我们点击到bin文件夹中，复制bin的路径然后我们点击：此电脑——属性——高级系统设置——环境变量，点击系统环境变量中的Path。接着按下方图片操作后，摁住win+R键输入cmd，在cmd控制台输入下方代码并回车，当输出结果如图所示就是成功了gcc -v -E -x c++ -第四步：配置vscode最后我们配置vscode的相关配置：先新建一个文件夹作为C语言项目文件夹，然后点击菜单中的：文件——打开文件夹——选择我们刚创建的文件夹然后在其中创建一个c语言文件，名字可以随意，结尾必须是.c然后创建一个.vscode文件夹（前面有个.）在里面创建三个json文件，分别是：c_cpp_propertise.json与launch.json和tasks.json分别编辑这三个文件c_cpp_propertise.json：然后我们需要将图片中红色方框内的路径修改为自己刚安装的编译器的地址，将你刚刚安装的路径复制一下，然后修改此代码中的D:/Programs/mingw64部分{ "configurations": [ { "name": "Win32", "includePath": [ "${workspaceRoot}", "D:/Programs/mingw64/include/**", "D:/Programs/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++", "D:/Programs/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32", "D:/Programs/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/backward", "D:/Programs/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include", "D:/Programs/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include-fixed", "D:/Programs/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/include" ], "defines": [ "_DEBUG", "UNICODE", "__GNUC__=6", "__cdecl=__attribute__((__cdecl__))" ], "intelliSenseMode": "msvc-x64", "browse": { "limitSymbolsToIncludedHeaders": true, "databaseFilename": "", "path": [ "${workspaceRoot}", "D:/Programs/mingw64/include/…