编程设计思想

news2024/12/28 18:06:12

健康检查脚本

nmap:扫描端口

while true

do 

    healthy=`curl B:httpPORT/healthy -i  | grep HTTP/1.1 | tail -n 1 | awk '{print $2}'`

done

批量操作类型脚本(记录每一步日志)

 将100个nginx:vn推送到harbor仓库192.168.0.100

根据镜像对比sha值,来判断是否为你想要的镜像

批量部署脚本

功能:在一台机器上可以对所有机器进行操作

原理:给机子进行免密登录

批量分发脚本

网络测试类型脚本

用一些手段去获取域内所有主机的信息

举例:假如有dhcp分配IP,想查看哪些IP被占用。

用数组记录IP地址池,再for循环这个数组,ping这个IP地址,如果不通就没有占用,同时需要并行执行,这样可以同时用多个进程去执行命令,大大提高效率。

批量文本处理类型脚本

Grep -r aaa 是显示文件名和里面的东西

并发:QPS 每秒访问次数,不管有多少请求在1s内访问

并行:同一时间内并行发生。

文档对比认证

变量

变量赋值:= 、for i in、read

变量在内存中的存储,会在内存中空出一块内存,用来存变量名称和值。

!a的用法

 

#a  获取字符串长度

fileformat=unix 文件输出格式

·长短匹配

#左匹配  %右(单)匹配  %%长匹配

/是做匹配转换的,将双杠中间的数转换为后面的数。

字符串的切片操作,从第几个开始切,切到第几位。

数组

${array[@]} 比较常见,代表取所有,*也指取所有。

·批量注释:#号或

<<comment

Comment

变量的作用域

局部变量local (只能在函数块中使用)、全局变量(在一个进程中可以使用)、环境变量(继承给子进程使用)

$# 传递的参数的个数

$* 参数列举出来

$$ 显示进程号   $?查看上一条消息的返回码

-a的优先级高于-o的优先级,多重判断需注意使用。

运算符

 

 

Shell中默认所有的字符都是字符串

IFS表示默认分隔符(尽量不用)

计数器:

用sum清零来延缓网络波动性。

case 常在部署软件时使用

文件测试描述符

-b file 检测文件是否是块设备文件,如果是,则返回 true。[-b $file]返回 false。

-c file 检测文件是否是字符设备文件,如果是,则返回 true。[-c $file]返回 false。

-d file 检测文件是否是目录,如果是,则返回 true。[-d $file]返回 false。

-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。[-f $file]返回 true。

-g file 检测文件是否设置了 SGID 位,如果是,则返回 true。[-g $file]返回 false。

-k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。「-k $file]返回 false。

-p file 检测文件是否是有名管道,如果是,则返回 true。[-p $file]返回 false。

-u file 检测文件是否设置了 SUID 位,如果是,则返回 true。[-u $file]返回 false。

-r file 检测文件是否可读,如果是,则返回 true。[-r $file]返回 true。

-w file 检测文件是否可写,如果是,则返回 true。[-w $file]返回 true。

-x file 检测文件是否可执行,如果是,则返回 true。[-x $file]返回 true。

-s file 检测文件是否为空(文件大小是否大于0),不为空返回 true。[-s $file]返回 true。

文件描述符的范围0-255 文件流输入输出要有文件名fd来标识。

0是标准输出、1是标准正确输出、2是错误输出

只要有文件传输就会有文件流,有文件流输出输出必有描述符。

资源分配的最小单位是进程,

当CPU上下文切换,也是进程切换。

进程和线程的区别:

有没有分配共享出来的资源

执行环境与资源:进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位1。每个进程都有自己独立的地址空间、文件描述符等资源23。而线程是进程内的一个执行单元,共享进程的地址空间和资源,如内存空间、文件等。

通信与切换开销:进程之间的通信需要通过显式的机制,如管道、消息队列和共享内存等来实现,因此通信开销相对较大。而线程之间可以直接读写进程共享的数据,通信更加方便和快捷3。同样,由于线程共享进程的资源,创建、销毁和切换线程的开销相对较小,而进程由于具有独立的资源,其创建、销毁和切换的开销相对较大。

并发性与独立性:进程是独立的执行单元,具有自己的调度算法,在并发条件下更加稳定可靠。而线程共享进程的资源,线程之间的调度和同步比较复杂,对并发条件的处理需要更多的注意。

管理与安全:进程的管理相对复杂,需要操作系统的支持。而线程的创建和销毁相对简单,可以更灵活地进行管理3。另外,进程间的地址空间隔离使得不同进程的数据互不影响,因此更加安全可靠。线程间则需要考虑共享数据的安全性和避免竞争条件。

总结来说,进程和线程在执行环境、资源、通信、切换开销、并发性、独立性、管理以及安全性等方面都存在显著的区别。了解这些区别对于编写高效、安全和可靠的程序至关重要。

内核态(发生在ring0级别的内核调用),凡是和硬件直接相关的都是内核态、用户态(发生在ring3级别的内核调用),在硬件上被软件一层层赋予的大概是用户态

Ring0是系统的开关机、严格的资源访问;ring3是用户开的一些进程。

从用户态到内存态在内存上是消耗资源的。像网卡、网络等这种和硬件直接相关的都是内核态;在硬件上做一层层的软件处理的大概率是用户态。

生产者、消费者问题

一个生产者、一个消费者,中间有缓存空间。生产者和消费者不用直接联系,只需连接中间的缓存空间即可。

异步:请求管道、完成管道,记录着客户端是谁,客户的请求资源是谁,返回的资源是谁

一般情况下,在做生产者和消费者时,当其中一个消费者去访问的时候,会涉及到一个加锁问题lock,会直接将你的读写权限锁掉,将其他进程对你中间管道读写权限锁掉,其他过来读是无权限的

在整个生产者、消费者流程中若有某个节点数据填满,而导致整个服务流程无法进行,那么就叫死锁。

互斥锁:解决多个进程对同一个进程改变的问题。互斥锁用来保护共享资源,确保在任意时刻只有一个线程能够访问共享资源,从而避免数据竞争和不一致性问题。

扩展

高可用:遇事不决,冗余部署

对象:是抽象出来的一种属性,类如果被赋值,就被称为对象

总结

脚本练习

1.随机n个元素的数组(n>10),输出相邻4位元素大于20的元素数组集合 

#!/bin/bash

n=20

random_array=()

for ((i=0; i<$n; i++)); do

    random_num=$((RANDOM % 101)) # 生成0-100的随机数

    random_array+=($random_num)

done

echo "原始数组:"

for element in "${random_array[@]}"; do

    echo $element

done

for ((i=0; i<${#random_array[@]}-3; i++)); do

    # 计算当前四个元素之和

    sum=$((random_array[i] + random_array[i+1] + random_array[i+2] + random_array[i+3]))

    if ((sum > 20)); then

        echo "元素集合: ${random_array[i]} ${random_array[i+1]} ${random_array[i+2]} ${random_array[i+3]}"

    fi

done

 

 

2.健康检查脚本

 

3. 镜像批量拉改推脚本,sha值比对

给脚本执行权chmod +x 3.sh

./3.sh

4.批量命令,分发脚本

创建一个包含服务器列表的文件(例如servers.txt),每行一个服务器的IP地址或主机名

5.网络探测脚本,主机ip,端口

6.文本校对替换脚本

7. nginx日志根据时间统计人数,访问量,单人访问次数,并发数

8.跨主机实现的一个生产者消费者模型

使用流程控制语句结合组织8个功能

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1865500.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高效修复机床导轨磨损,保障加工精度!

机床导轨是支承和引导运动构件沿着一定轨迹运动的传动装置&#xff0c;在机器设备中是个十分重要的部件&#xff0c;在机床中是常见的部件。机床的加工精度与导轨精度有直接的联系&#xff0c;且导轨一旦损坏&#xff0c;维修较复杂且困难。我们简单总结了以下几点对于机床导轨…

rocketMQ消息中间件,onMessage报错,MessageExt of onessage method is not supported

本地启动不会报错&#xff0c;生产者和消费者都运行的好好的&#xff0c;但是打包之后就不断的报错误&#xff0c; 起初以为是maven出现了问题&#xff0c;但是刷新和重写都不管用&#xff0c;并且打的jar包解压后发现类里 有这个类和方法。最后认为是打包出现问题 解决方式&am…

SEO之竞争对手研究

初创企业搭建网站的朋友看1号文章&#xff1b;想学习云计算&#xff0c;怎么入门看2号文章谢谢支持&#xff1a; 1、我给不会敲代码又想搭建网站的人建议 2、新手上云 竞争对手研究是市场竞争研究的重要部分&#xff0c;对判断特定关键词竞争程度及了解行业整体情况非常有价值。…

AutoStudio: 开源 AI 漫画创作神器

AutoStudio是一个用于生成系列连续且一致的图片系统&#xff0c;可用于漫画创作&#xff0c;其核心由四个 Agent 组成&#xff1a; 主题管理器&#xff1a;理解用户对话&#xff0c;跟踪角色信息。 布局生成器&#xff1a;确定图像中角色的位置。 监督者&#xff1a;给出改进…

昇思25天学习打卡营第3天|张量Tensor

张量Tensor 概念创建张量&#xff08;4种方式&#xff09;张量的属性张量索引张量运算Tensor与NumPy转换 概念 张量&#xff08;Tensor&#xff09;是一种特殊的数据结构&#xff0c;与数组和矩阵非常相似。张量是MindSpore网络运算中的基本数据结构。 创建张量&#xff08;4…

离线安装docker-v26.1.4,compose-v2.27.0

目录 ​编辑 1.我给大家准备好了提取即可 2.安装docker和compose 3.解压 4.切换目录 5.执行脚本 6.卸载docker和compose 7.执行命令 “如果您在解决类似问题时也遇到了困难&#xff0c;希望我的经验分享对您有所帮助。如果您有任何疑问或者想分享您的经历&#xff0c;…

【Academy】测试WebSockets安全漏洞Testing for WebSockets security vulnerabilities

测试WebSockets安全漏洞Testing for WebSockets security vulnerabilities 概述WebSockets是什么?HTTP和WebSockets有什么区别&#xff1f;如何建立WebSocket连接&#xff1f;WebSocket消息看起来像什么&#xff1f; 操纵WebSocket流量拦截和修改WebSocket消息重放和生成新的W…

揭示优化Prompt的秘诀:如何让API表现媲美网页版

为什么用GPT API&#xff08;GPT-3.5-turbo&#xff09;进行程序分析时&#xff0c;效果好像比网页版的GPT-3.5差一点&#xff1f;这可能有几个原因&#xff0c;咱们细说一下。 1. Prompt不同 这是最常见的问题之一。API调用时的指令&#xff08;prompt&#xff09;往往比较简…

【C#】找不到属性集方法。get只读属性用了反射设置setValue肯定报错

欢迎来到《小5讲堂》 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 背景 找不到属性集方法。get只读属性用了反射设置setValue肯定报错 报错…

Spring Boot 接口一个 JSON 字符串用两个对象去接收,这能行吗?

文章目录 需求场景解决方案Step 1: 创建 Person 和 Address 类Step 2: 创建 PersonWithAddress 类Step 3: 自定义转换器Step 4: 配置转换器Step 5: 使用 RequestBody 接收 JSON 数据 结论 &#x1f389;欢迎来到SpringBoot框架学习专栏~ ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#…

若依项目实战------企业人力资源管理平台

一、数据库名称规范化及建表相关 1.术语名称 1.系统名称&#xff1a;企业人力资源管理平台英文翻译&#xff1a;Enterprise Human Resource Management Platform缩写&#xff1a;EHR 2.员工信息管理&#xff08;Employee Information Management 缩写&#xff1a;EIM&#…

Vue3抽屉(Drawer)

效果如下图&#xff1a;在线预览 APIs 参数说明类型默认值必传width宽度&#xff0c;在 placement 为 right 或 left 时使用string | number378falseheight高度&#xff0c;在 placement 为 top 或 bottom 时使用string | number378falsetitle标题string | slotundefinedfalse…

Docker(八)-Docker运行mysql8容器实例

1.运行mysql8容器实例并挂载数据卷 -e:配置环境变量 --lower_case_table_names1 设置忽略表名大小写一定要放在镜像之后运行mysql8容器实例之前&#xff0c;先查看是否存在mysql8镜像以及是否存在已运行的mysql实例docker run -d -p 3306:3306 --privilegedtrue -v 【宿主机日…

Jenkins流水线发布,一篇就解决你的所有疑惑

这次搭建的项目比较常规,前端是react写的,后端是springboot,并且由于是全栈开发,所以是在同一个项目中。接下来我演示下怎么用jenkins进行自动化发布。 1.jenkins必装插件 这里用到的是jenkinsFile主要是基于Groovy这个沙盒,有些前置插件。这里使用maven进行打包,所以需…

公益培训|半导体与集成电路项目制培训项目

关于我们 硬蛋产业学院&#xff0c;基于硬蛋创新(http://00400.HK)在芯片产业的资源和技术优势&#xff0c;引进全球领先的芯片应用技术&#xff0c;为国内培养芯片应用技术人才&#xff0c;助力芯片应用产业发展。 硬蛋产业学院在国家各主管部门、广东省、深圳市及社会各界的大…

一码多址与同义词解决方案

随着地址库中的数据不断的丰富&#xff0c;地址库中一码多址和同义词的数据也会越来越多&#xff0c;一码多址和同义词在统一地址管理平台中的概念并不相同。 一码多址指的是多个地址编码相同&#xff0c;例如通过民政地址找到编码&#xff0c;再通过编码找到房产地址描述。 本…

使用Python和jieba库生成中文词云

使用Python和jieba库生成中文词云 在文本分析和数据可视化的领域中&#xff0c;词云是一种展示文本数据中关键词频率的直观方式。Python作为一种强大的编程语言&#xff0c;提供了多种库来帮助我们生成词云&#xff0c;如wordcloud和jieba。在本文中&#xff0c;我们将通过一个…

谷歌SEO是什么意思?

谷歌SEO&#xff08;Search Engine Optimization&#xff09;是通过优化网站内容和结构&#xff0c;使其在谷歌搜索引擎中排名更高的策略和技术。这不仅仅是提高网站排名&#xff0c;更是吸引目标受众、增加流量并最终提升业务转化的关键方法之一。谷歌搜索引擎优化&#xff08…

在win7系统电脑安装node16的版本(已成功安装运行)

很多银行的项目行方都要求内网开发&#xff0c;但是我遇到的几个银行基本都是win7系统的电脑&#xff0c;而前端的项目又是需要高版本的node才能跑起来&#xff0c;所有就记录此解决方案文章&#xff01; 这是下载node安装包的地址&#xff1a;Index of /dist/ 在这里先下载自…

C# unknow column “p0.TaskTypeId‘ in ‘field list‘

这个问题就是数据库出现问题&#xff0c;去 日志中去看 &#xff0c;找个具体表去 看实体类&#xff0c;与数据库中的表&#xff0c;是否存在字段。