- 博客(44)
- 收藏
- 关注
原创 shell编程
int1 -ge int2 ]:如果int1大于等于int2,返回真。[ int1 -le int2 ]:如果int1小于等于int2,返回真。[ -z string ]:如果string长度为0返回真,否则返回假。[ int1 -ne int2 ]:如果int1不等于int2,返回真。[ int1 -eq int2 ]:如果int1等于int2,返回真。[ int1 -gt int2 ]:如果int1大于int2,返回真。[ int1 -lt int2 ]:如果int1小于int2,返回真。
2024-02-28 14:28:14
923
原创 强类型语言和弱类型语言
python是弱类型语言,变量的类型不固定,可以在运行时根据变量的值来自动判断,比如一个变量可以作为字符串和数字使用,而不需要显示地声明它所对应的类型,使用弱类型语言可以降低编码难度,提升代码的灵活性和可读性,到那时需要小心地处理变量类型问题,以避免类型错误而导致的问题。强类型语言的定义严格,要求必须声明变量的类型,并且该类型对变量的使用有所限制。弱类型语言定义相对宽松,变量不必声明其类型,程序会依据变量的值来判断变量的类型,程序员可以像操作字符串一样操作变量,而且不必顾虑变量的类型问题。
2024-02-28 10:44:43
408
原创 linux创建计划任务-crontab
crontab是linux中用于执行周期性任务的命令,计划任务背后执行的服务和进程叫crond,crond服务会每间隔一分钟去检查linux系统中所有用户的计划任务,crontab命令只有管理员用户和有sudo权限的用户可以使用,其他用户没有访问权限。操作系统自身需要的计划任务:/etc/{cron.daily,cron.hourly,cron.wekkly,cron.monthly}存放每一个用户的计划任务文件:/var/spool/cron/用户名。日志文件:./var/log/cron。
2024-02-27 17:30:23
508
原创 linux命令:压缩与解压缩
xz是Linux种的一种常用的压缩程序,压缩速度相较于gzip就会慢很多,但是压缩效果很好。tar命令和zip命令都是linux常用的压缩命令,tar命令适用于归档文件或者目录的压缩。gzip是linux中的一种常用的压缩程序,压缩速度很快,但是效果一般。linux中常见的压缩与解压缩命令有:zip,tar,gzip和xz。
2024-02-27 11:22:18
511
原创 计算机网络层(2)
A:以ASCII格式打印出所有分组,并将链路层的头最小化-c:在收到指定数量的分组后就会停止-C:在将一个原始分组写入文件之前,检查文件当前的大小是否超过参数file_size中指定的大小,如果超过了就关闭当前文件,再打开一个新的参数的文件-d:将匹配信息的包的代码以人们能够理解的汇编格式给出-dd:将匹配信息的包的代码以c语言的程序段的格式给出-ddd:将匹配信息的包的代码以十进制的形式给出-i:指定监听的网络接口-I:使标准输出变为缓冲形式输出-n:不把网络地址转换成名字。
2023-09-18 08:57:26
364
原创 计算机网络层(1)
1.A主机pingB主机的时候封装源mac地址是本机的mac地址,目的mac地址是路由器的mac地址,而不是目的主机的mac地址,因为源主机和目的主机不在同一个网段,A主机的数据包无法直接到达B主机,需要先将包发送扫到路由器,由路由器进行转发,路由器拿到A主机的数据包的时候会解析header的目的ip地址,查看路由表,是否有要到达的主机的网段,如果有就将目的mac改为对方主机的路由器地址,由对方路由器将A主机的数据包转发给B主机。(ip地址是全局唯一的,mac地址是在局域网里面使用的)
2023-08-04 10:02:00
230
原创 IP tables防火墙
iptables提供了iptables-save工具来保存和还原防火墙规则,在/etc/sysconfig/iptables中保存了默认的iptables规则,使用iptables-save将规则保存到该文件中,重启就不会丢失防火墙规则。1.在数据包到路由器之前进行选择的时候,从raw到filter查看有没有关于prerouting的过滤规则,如果有就叫查看是什么规则,做出对应的动作。规则的作用在于对数据包进行过滤或者处理,根据处理时机不同,各种规则被组织在不同的链之中,规则链是防火墙规则的集合。
2023-08-02 13:48:19
196
原创 计算机网络数据链路层
透明传输:用于帧的开始和结束的标记使用专门指明的控制字符,所传输的数据中的任何组合不可应和用作帧定界的控制字符的比特编码一样,否则就会出现帧定界错误。学习数据帧里的源mac地址,写到mac地址表里,根据数据帧里的目的mac地址进行转发,如果mac地址在mac地址表已经存在,就单播转发,如果交换机的mac地址表里面没有存放要到达的地址信息就广播(知道就的单播,不知道就广播)交换机的mac地址表:记录那台电脑连接的是交换机的哪个接口,地址表存放在交换机的内存里面,交换机刚启动的时候,mac地址表是空的。
2023-07-14 21:21:27
94
原创 计算机网络物理层
物理层的作用是尽可能的屏蔽掉传输媒体和通信手段的差异,使数据链路层感觉不到这些差异,使数据链路层只需要考虑如何完成本层的协议和义务,而不必考虑网络具体的传输媒体和通信手段。非屏蔽双绞线(UTP, Unshielded Twisted Pair):用于电磁干扰相对较弱的环境,家用的双绞线就是非屏蔽双绞线。单向通信(单工通信):只能有一个方向的通信,没有反方向的交互。T568B(推荐):白橙、橙、白绿、蓝、白蓝、绿、白棕、棕。T568A:白绿、绿、白橙、蓝、白蓝、橙、白棕、棕。信号类型:数字信号、模拟信号。
2023-07-13 19:25:27
51
原创 python多进程(基础用法)
3.动态创建的子进程是当前进程的完整映像,当前进程必须谨慎的管理文件描述符资源,否则可能会因为子进程的复制,导致系统的可用资源急剧下降,进而影响服务器性能。应用在运行的过程中,需要时可以从这些进程锁组成的进程池内申请分配一个空闲的进程来执行任务,任务完成后将那个进程返回给进程池,由进程池自行管理。某些时间段应用不需要执行很多的任务,导致了进程池中的线程大多数处于空闲的状态,为了更好的利用系统资源,进程池就会要动态的销毁一部分的空闲进程。父进程已经结束任务了,但是子进程还没有运行结束的状态称为孤儿进程。
2023-07-10 08:37:04
143
原创 操作系统基础知识
分时系统的及时性是以人所能接受的当代时间来确定的,而实时系统的及时性是以其控制对象多要求的开始截至时间或完成截至时间来确定的。这样的操作系统只允许一个用户使用计算机,用户独占计算机的各种资源,整个系统为用户的程序运行提供服务,这种顺序执行的计算模型很容易实现,到那时不能是昂贵的计算机硬件设备得到充分的利用没计算机性能、资源、利用率没有得到充分发挥。为用户提供一种简便的、统一的存取和管理文件的方法,并解决文件的共享、数据的存取和控制和保密问题。在多道程序环境下,cpu的分配和运行都是以进程为单位进行的。
2023-06-30 16:51:29
343
原创 python线程(基础知识和用法)
只花了0.003秒,这就是多线程的好处,如果不使用多线程,我们的程序只能顺序执行,所以整个程序执行结束至少需要2.5s,使用多线程就大大降低了我们的时间消耗。主线程只需要告诉子线程去访问百度,至于子线程怎么去访问百度主线程是不关心的,主线程只是一个发号施令者。由于同一个进程内的线程是资源共享的,但是资源紧缺的时候,线程间就会产生资源抢夺问题,进而产生意想不到的脏数据(错误数据)。RLock 重入锁:在获取锁之前判断是否已经获取到锁,如果没有获取到锁就处于等待状态,如果已经获取到锁就往下执行。
2023-06-30 16:50:50
441
1
原创 计算机网络基础知识
(比如我们学校的校园网,每一层楼的有线网络由一根线接入到每一个寝室,每一层的线由由每一栋的线接入每一层,所有栋的线又接入到核心交换机的三层结构。数据在传输层被叫做数据段,在网络层被叫做数据包,在数据链路层被叫做数据帧,在物理层被叫做比特流。从上到下依次是:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。从上到下依次是:应用层、传输层、网络层、数据链路层、物理层。数据链路层:建立逻辑链接、进行硬件地址寻址、差错校验等功能。物理层:建立、维护、断开物理连接。表示层:数据的表示、安全、压缩。
2023-06-28 11:32:34
113
原创 Linux文本操作命令(awk、grep、sed、sort、uniq、wc)常用用法
linux文本三剑客:grep(文本过滤)、文本截取(awk)、sed(文本替换)
2023-06-20 21:44:41
1869
原创 操作数据库(Linux)
(在linux机器上,几乎所有用yum下载的服务都可以用systemctl进行管理,systemctl是linux的自动管理工具)(mysql数据库被orcal收购以后,mysql创始人处于对管理权的担忧就分叉出了新的数据库命名为mariadb)可以看到这个表里面有很多user的name为空,我们可以把这些用户名为空的用户删掉。查看数据库版本信息,当前时间信息。删除数据库(直接删除不提醒)向数据库表中插入信息并查询。(接\G,修改展示格式)
2023-06-14 12:01:05
278
原创 python序列化库
shelve是一个简单的数据存储方案,类似key-value数据库,内部是通过pickle协议来实现数据的序列化,支持pickle支持的所有类型的数据的序列化。json对值的存储时通过键值对映射 {“key”:“value”}的方式存放他的key和value值,json只能对字典进行转换。pickle模块实现了对python对象的序列化和反序列化的二进制协议,pickle使用的数据格式时特定于python的。是将对象的的状态信息转换为可以存储或传输的形式的过程。将序列化对象转换成一个文件对数据进行存储。
2023-05-14 09:21:56
157
原创 python创建flask项目02
举个例子:如果我们的项目有100个路由需要管理,如果全靠核心对象来对路由进行管理就非常复杂,而且出现错误很难排查,核心对象要做的事情太多了,如果用蓝图的方法,一个蓝图管理十个路由,核心对象就只需要管理十个蓝图,这样工作过难度一下就降低了很多。一个项目只能有一个核心对象,需要将所有的配置文件、程序都绑定到核心对象上去,如果只用一个文件来写项目,项目管理难度就会很大,采用拆分文件分开管理,需要的时候就i调用的方法就大大降低了管理难度同时也提高了安全性。1.5 运行server.py开启项目,查看是否能访问。
2023-05-09 16:20:18
215
原创 python创建flask项目01
通过两张表来绑定路由:在收到请求之后,先解析http头部字段,拿到请求url的路径,在url-map表中查找是否有这个路径,如果有这个路径就找到对应的endpoint,找到endpoint后就去view_function表中找到对应的function,(endpoint作为中间变量,解耦了url和function,修改url'或者修改function都不会影响到对方,endpoint是全局唯一的,默认以函数名作为endpoint)3.args 记录请求中的查询参数 --常用在get方法中。
2023-05-02 14:03:15
1764
原创 python random库使用方法
1.随机种子 : 是指在伪随机数生成器中用于生成伪随机数的初始数值(百度百科),简单来说就是一个数,当这个数相同时就会产生一样的随机数,但是这个数不相同就会达到随机的效果,一般用时间做随机种子。这两个方法导入的内容是一样的,一个是导入random模块,另一个是导入模块中的函数,前者调用的时候要加上包名,后者调用的时候直接用方法名调用,最好不要直接调用包内的函数,可能会引起冲突。5. randrange(a,b,step) 产生a-b之间步长为step的一个随机整数,左闭右开。
2023-04-26 18:06:53
301
原创 python面向对象
(百度百科)面向对象程序设计方法是尽可能模拟人类的思维方式,以对象为核心,该方法认为程序由一系列对象组成。(简单来说就是,什么人做什么事)2.1多态 :指为不同数据类型的实体提供统一的接口2.2 继承 :子类可以继承父类的属性和方法,也可以i当以更多的属性和方法2.3 封装 :将属性和方法封装成类,用户不需要关心如何实现的功能,只需要关心如何去使用这个类定义类的时候我们呢一般以大驼峰的形式,每一个单词首字母大写定义方法的时候我们多以下划线的方式来隔开每一个单词(定义类的时候最好不要加括号)现在我
2023-04-24 14:41:12
47
原创 python文件操作
(但是如果把字典转为json格式的时候,是不能直接转的,只能将字典的数据传到json文件里面,这样操作相对较麻烦)fp.readlines() :每一行作为一个元素放在一个列表中保存,一次性读完文件的所有内容。操作完文件后一定要释放掉文件所占用的资源,如果不手动释放就会一直保存在内存中。(如果是二进制文件: wb 二进制写的方式 wr 二进制读的方式)时间获取:time() ctime() gmtime()w :以写的方式写入文件(覆盖写)r :以只读的方式打开文件。(默认以只读的方式打开)
2023-04-24 13:08:09
96
原创 GO语言基本语法(学习笔记)
闭包:一般情况下变调调用完以后就会在内存空间释放它所占用的资源,但是如果形成了闭包就不会释放它所占用的内存,变量会一直保存下去,并且占用系统资源。17.1.支持可变长参数(...三个练习的点表示)(每次可以不传递参数,可以传递一个参数或者更多参数)17.7一般情况下,不支持函数的嵌套(但是可以嵌套匿名函数),不支持重载,不支持默认参数。在函数体内,不能直接嵌套函数,但是可以嵌套匿名函数(没有名字的函数)(算数运算符、逻辑运算符、比较运算符、赋值运算符不能连用)17.函数:(自定义函数,匿名函数)
2023-04-22 14:10:50
201
原创 shell编程(笔记)
] 和 [[ ]] 的区别:[ ] 会进行解析字符串,会把含有空格的字符串解析成两个字符串,可能会导致变量个数有误的报错,[[ ]] 不会进行变量解析。cut 文件时,将每一个空格都会识别成一个字符,所以截取时非常麻烦,现在我们用ts命令将文本中的空格都压缩成一个空格,我们就能很方便的截取字段。先拿到/etc/passwd文件,通过awk,指定用:号截取成一个个的字段,然后匹配第一个字段中,有包含sc这个字符的,然后将整行输出出来。第二种: $[[ ]] 适用于字符串之间的运算。
2023-04-19 21:30:55
187
原创 JS项目配置路由
index.js 文件: src/router/index.js, 创建路由模块,用于导入,将一下代码段写入index.js。8.1在src/components创建tabbar目录,在tabbar目录下创建TabBar.vue文件,文件: src/router/routes.js,真正的路由配置,放在这个文件中,该文件需要。src/router/routes.js , 在 routes.js 文件中配置路由,在src目录下创建router目录(将所有与路由相关的文件都会放在这个目录下)
2023-04-14 20:00:56
941
原创 JS新建项目流程
10.项目加载过程:vue文件将由vite进行编译打包成浏览器识别的html+css+js+静态文件,main.js是程序的入口文件,我们可以看到生成了一个名为createapp的vue实例,将他挂载到index.html的id为app的对象上。12.App.vue是我们项目的根组件,我们可以看到App.vue内的内容和样式就是我们的项目初始化界面。在main.js中导入新的style.css文件。将项目自带的src/style.css文件删除。删除main.js中老的css,引入新的css。
2023-04-13 21:16:05
738
原创 运维自动化工具(ansible、puppet、salt)
生成计划任务:ansible all -m cron -a "minute=*/3 job='date >>/tmp/time.txt' name=date_test state=present"/etc/ansible/asible.cfg : 此文件定义了主机清单路径,连接清单中主机的方式等等,可以重新定义hosts的地址,默认是/etc/ansible/hosts。/etc/ansible/hosts :此文件存放了主机清单,如果主机的ssh服务端口号不是默认的22就要指明端口号。
2023-04-13 21:14:58
505
原创 xshell远程登陆centos(公钥认证)(使用xagent在ubuntu登录centos)
和centos流程万全相同,并且可以共用一个公钥密钥,因为这个公钥密钥来自于xshell。3.2 然后就能在centos内登录Ubuntu,也能在ubuntu内登录centos。2.1.4设置你的密钥名称和密码,用户名可以不修改,密码可以为空。3.1在centos和ubuntu的属性中,找到ssh勾选xshell代理。1.6可以设置记住密码,下次登录就不需要输入用户名和密码。输入 : ssh 要登录的用户名@要登陆的主机ip。然后就成功的实现centos的公钥认证啦。1.3 输入要登陆的主机用户名。
2023-04-10 13:53:38
1132
2
原创 python容器类型(List列表)
定义空列表lst[]# 列表可以存放任何数据类型# 删除下表为3的元素lst.pop(3)print(lst)# 删除最后一项lst.pop()print(lst)
2023-04-09 16:07:43
53
原创 python猜金豆游戏
随机数种子(random seed)在伪随机数生成器中用于生成伪随机数的初始数值。对于一个伪随机数生成器,从相同的随机数种子出发,可以得到相同的随机数序列。随机数种子通常由当前计算机状态确定,如当前的时间。
2023-04-09 10:30:10
52
原创 python运算符和流程控制
题目:扔骰子游戏,结果是3~10小,11~18大,用户猜测骰子是大还是小,直到输入exit退出游戏。or 前面的值为假,表达式的值的关键就子在于后面的值。2.2.1 for循环(for i in xxx:)and 前面为真,表达式的值关键在于后面的值。// : 向下取最接近除数的整数。continue:跳出当前循环。break:跳出这一层的循环。2.2.2 while循环。
2023-04-08 16:44:40
61
原创 python小练习(谁是小偷)
题目:abcd 四名犯罪嫌疑人,其中有一人是小偷, a 说:”我不是小偷“。b说:” c是小偷 “。c说:” 小偷是d“。d说:” c胡说 “。只有一个人说了假话,小偷是谁?
2023-04-08 15:55:18
1162
原创 python基本数据类型
2.7 字符串的填充 xx.center(xx, "xx") xx.left(xx, "xx") xx.right(xx, "xx")2.1 将字符串转换为大写 xx..Upper() 小写 xx.Lower() (2.6 字符串的替换 xx.replace("xx", "xx")1.2 统计字符串中字符出现的次数 xx.count()2.5去除字符串的首尾字符 xx.strip()2.3 字符串的切割 xx.split()2.4 字符串的拼接 xx.join()
2023-04-07 19:40:22
49
原创 python异常处理
在python程序运行过程中,遇到错误就会中断程序,但是在实际操作中,我们往往不希望因为这些小小的错误,导致程序无法运作,所以python中引入了异常捕获机制,使程序遇到错误时会提醒我们但是不会中断程序。
2023-04-07 08:41:59
189
原创 JS用vite+vue创建一个项目的必备环境(小白版)
4.Node.js 诞生以后,前端大爆发,类似 React/Vuejs 这样的前端框架的开发环境变得非常强大和负责,传统上 Web 开发者,前端用 JS 写,但是写服务器端代码的时候还必须用另外一种语言,类似 Ruby/Java/PHP 等。3.npm(node package manager的缩写)是Node.js内置的依赖包的管理工具,npm上有超级多的依赖包,大部分你想要的依赖包都能在npm上下载然后直接使用,如果能看到版本就证明安装成功 ,至此我们所需要的环境就配置好了。输入:cmd,点击确定。
2023-04-05 10:49:49
66
原创 vim脚本编辑器的使用
bash 自上而下查找文件中的bash,并且bash会高亮,N表示跳到上一个bash、n表示跳到下一个bash。#dd :#代表一个1-999的数字,3dd代表删除从光标出开始的#行内容。在末行模式查找内容时使用,查找完内容后,进入替换模式,将要替换的内容替换掉。ctrl + v :可视块模式:选择一块内容,任意大小,块大小由光标定。d^ :删除当前光标之前到行首的所有字符。d$ :删除当前光标处到行尾的所有字符。p :将缓冲区的内容粘贴到光标位置之后。#yy :复制从光标处开始的#行内容。
2023-04-05 09:23:42
815
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人