linux
幸运小猴子
这个作者很懒,什么都没留下…
展开
-
shell入门
Shell中的$0、$1、$2的含义简单来说 $0 就是你写的shell脚本本身的名字,$1 是你给你写的shell脚本传的第一个参数,$2 是你给你写的shell脚本传的第二个参数比如你新建了一个shell脚本 Test.sh, 内容如下#!/bin/shecho "shell脚本本身的名字: $0"echo "传给shell的第一个参数: $1"echo "传给shell的第二个参数: $2"保存退出后,你在Test.sh所在的目录下输入 bash Test.sh 1 2,结果为:sh原创 2021-01-26 11:41:44 · 91 阅读 · 0 评论 -
线程池
为什么需要使用线程池?如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视了,就需要使用线程池。线程池的作用?1.提高效率,创建好一定数量的线程放在池中,等需要使用的时候就从池中拿一个,这要比需要的时候创建一个线程对象要快的多。2.方便管理,可以编写线程池管理代码对池中的线程同一进行管理,比如说启动时有该程序创建100个线程,每当有请求的时候,就分配一个线程去工作,如果刚好并发有101个请求,那多出的这一个请求可以排队等候,避免因无休止的创建线程导原创 2020-08-19 10:31:41 · 95 阅读 · 0 评论 -
创建多少个线程合适?
创建多少个线程合适?要区分 是 CPU 密集型程序 还是 I/O 密集型程序。CPU密集型程序:一个完整请求,I/O操作可以在很短时间内完成, CPU还有很多运算要处理,也就是说 CPU 计算的比例占很大一部分理论上 线程数量 = CPU 核数(逻辑) 就可以了,但是实际上,数量一般会设置为 CPU 核数(逻辑)+ 1,计算密(CPU)集型的线程恰好在某时因为发生一个页错误或者因其他原因而暂停,刚好有一个“额外”的线程,可以确保在这种情况下CPU周期不会中断工作。I/O密集型程序:一个完整请求,CP原创 2020-08-18 20:09:10 · 430 阅读 · 0 评论 -
请问当用户反馈网站访问慢,你会如何处理?
请问当用户反馈网站访问慢,你会如何处理?有哪些方面的因素会导致网站网站访问慢?1、服务器出口带宽不够用本身服务器购买的出口带宽比较小。一旦并发量大的话,就会造成分给每个用户的出口带宽就小,访问速度自然就会慢。跨运营商网络导致带宽缩减。例如,公司网站放在电信的网络上,那么客户这边对接是长城宽带或联通,这也可能导致带宽的缩减。2、服务器负载过大,导致响应不过来可以从两个方面入手分析:分析系统负载,使用 w 命令或者 uptime 命令查看系统负载。如果负载很高,则使用 top 命令查看 CPU ,原创 2020-08-09 18:06:36 · 486 阅读 · 0 评论 -
同步、异步、阻塞、非阻塞IO总结
对于一个网络IO,会涉及到两个系统对象,一个时调用这个IO的进程,一个时系统内核。当一个read操作发生时,会经历两个阶段:(1)等待数据;(2)将数据从内核拷贝到进程中。阻塞I/O:当进程调用了recvfrom后,就会一直等到有数据到达并且被拷贝到进程中才会返回。非阻塞IO:当进程发出read操作时,如果数据还没准备好,不会阻塞用户进程,而是立即返回一个error。进程收到error后再次发起read操作。当内核中的数据准备好了,就会将数据拷贝到用户内存,然后返回。用户需要不断主动询问内核数据准备原创 2020-07-22 20:30:36 · 99 阅读 · 0 评论 -
grep sed awk
https://www.cnblogs.com/along21/p/10366886.htmlgrep,awk,sed都是处理文本。grep适合单纯的查找或匹配文本,sed适合编辑匹配到的文本,awk适合格式化文本。常用参数已加粗-A<显示行数>:除了显示符合范本样式的那一列之外,并显示该行之后的内容。-B<显示行数>:除了显示符合样式的那一行之外,并显示该行之前的内容。-C<显示行数>:除了显示符合样式的那一行之外,并显示该行之前后的内容。-c:统计匹配的原创 2020-07-06 23:50:47 · 98 阅读 · 0 评论 -
进程线程高频题
1.进程与线程的区别?进程就是运行的程序(1)进程是资源分配的最小单位,线程是cpu调度的最小单元(2)不同进程的有自己独立的地址空间。(地址空间大小为4G,分为内核空间和用户空间,内核空间为所有进程共享,用户空间是独立的)。同一进程的所有线程共享该进程的资源(代码段,进程打开的文件描述符等),仅有一些寄存器堆栈资源是独立的。所以进程切换开销大,线程切换开销小。(3)进程间有专门的通信方式:管道、消息队列、共享内存、信号量等。但是同一进程下的线程共享全局变量、静态变量等数据,通信更方便。无名管道(原创 2020-07-04 19:23:42 · 315 阅读 · 0 评论 -
IPC-信号量实现同步和互斥
信号量1.创建或获取一个信号量集标识符int semget(key_t key, int nsems, int semflg)key:同上nsems:信号量集中信号量个数semflg:0664|IPC_CREAT返回值:成功:返回信号量集的标识符;失败返回-1,错误原因存于error中2.初始化信号量集int semctl(int semid, int semnum, int cmd, union semun arg)semid:信号量集标识符semnum:信号量集数组上的下标,表示某一原创 2020-06-05 09:59:27 · 731 阅读 · 0 评论 -
IPC
管道无名管道(PIPE):半双工的通信方式,而且只能在亲缘关系的进程间使用。一个进程在由pipe创建管道后,再fork出子进程,通过管道实现父子进程间的通信。Int pipe(int fd[2]);fd[0] 读;fd[1] 写;写端:close(fd[0]);write(fd[1], buf, buf_sz);读端:close(fd[1]);read(fd[0], buf, sizeof(buf));有名管道(FIFO):半双工的通信方式,可以在无亲缘关系的进程间通信。严格先进原创 2020-06-03 15:42:40 · 232 阅读 · 0 评论 -
多进程利用有名管道实现双向通信
/************************************************************************* > File Name: fifo_server.c > Author: > Mail: > Created Time: 2020年06月02日 星期二 22时40分17秒 ***************************************************************原创 2020-06-02 23:45:13 · 481 阅读 · 0 评论 -
python使用多线程实现UDP聊天器
import socketimport threadingdef send_msg(udp_socket, dest_ip, dest_port): """发送数据""" while True: send_data = input("请输入要发送的数据:") udp_socket.sendto(send_data.encode("utf-8"), (dest_ip, dest_port))def recv_msg(udp_socket):原创 2020-06-02 00:15:18 · 310 阅读 · 0 评论 -
进程管理
PID:(1) Pid = 0的进程成为调度进程(2)PID=1init进程,读取各种各样的系统文件,初始化OS的启动,让OS进入多用户状态,支持多用户登录。原始的父进程托管孤儿进程(3)PID=2页精灵进程,专门负责虚拟内存的请页操作。函数:getpid --获取进程IDgetppid --获取父进程IDgetuid --获取用户IDgetgid --获取用户组的ID程序的运行过程,即程序是如何运行起来的:(1)在内存中划出一片内存空间(2)将硬盘上可执行文件中的代原创 2020-05-29 23:54:21 · 137 阅读 · 0 评论 -
启动代码
gcc -v 显示编译的详细信息,里面有很多实现被编译好的.o文件,这些.o文件就是用来生成启动代码的。启动代码基本使用汇编语言编写的。启动代码大致做了两件事:(1)对C程序的内存空间进行布局,得到C程序运行所需要的内存空间结构。(2)留下相应库接口。...原创 2020-05-29 17:31:55 · 576 阅读 · 0 评论 -
文件操作IO
dup(oldfd)和dup2(oldfd, newfd)这两个函数我们可以用来复制文件描述符。(1) 其中oldfd和newfd分别是复制前文件描述符和复制后的文件描述符。(2) 这两个函数的调用都将复制文件描述符oldfd,且他们的返回值都为新的文件描述符。(3) 不同点是dup()的返回值是最小的未用文件描述符;dup2()的返回值是预先制定的文件描述符newfd。(4) 对于dup2(),如果文件描述符newfd正在被使用,则先关闭newfd;如果ne原创 2020-05-29 16:00:29 · 117 阅读 · 0 评论 -
Vim
1.语法高亮:syntax on2. set number: 显示行号3. 行号+gg跳到某一行4. 跳到当前行的20行后:20j5. /tcp 高亮所有tcp的单词,n跳到下一个;shift+n跳到上一个6. 剪切cc, 撤销 u(undo) c2c(剪切两行) p 粘贴7. shift+v visual试图,上下左右选择8. 复制:yy9. 代码自动补全:ctrl+n10.第三方插件:vim plug...原创 2020-05-25 23:13:39 · 105 阅读 · 0 评论 -
linux常用命令
linux常用命令date:查看系统日期cal : 打出日历cal 2020:查看2020年的所有日历cal 1 2020 (查看2020年1月份的日历)pwd: 查看当前所在目录cd / —跳到根目录ls —查看当前目录下的文件ls -lcd … 退回上一层mkdir :新建文件夹rmdir : 删除文件夹cp src.txt dest.txt 复制文件cat file1.txt 查看文件内容diff file1.txt file2.txt :查看两个原创 2020-05-25 21:03:56 · 190 阅读 · 0 评论 -
linux
linux:1.严格区分大小写2.所有内容都是以文件形式保存的,包括硬件硬件文件是/dev/sd[a-p]光盘文件是/dev/sr0等3.linux不靠扩展名区分文件类型,扩展名是为了方便管理员管理文件4.linux所有的存储设备都必须挂载之后用户才能使用,包括硬盘,U盘和光盘5.windows下的程序不能直接在linux中安装和运行...原创 2019-05-09 23:36:47 · 78 阅读 · 0 评论