![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
屠变恶龙之人
这个作者很懒,什么都没留下…
展开
-
高并发处理/服务器宕机处理
一、 web加速相关技术1. 镜像站点2. DNS负载均衡3. CDN内容分发二、 内网加速技术1. 负载均衡(软件负载均衡、硬件负载均衡)2. Web缓存服务器3. Web/应用服务器分布式文件系统4. 分布式数据库(数据库主从分布、数据库分割、数据库缓存)1、HTML静态化 其实大家都知道,效率最高、消耗最小的就是纯静态化的html页面,所以转载 2017-04-05 15:54:21 · 15942 阅读 · 0 评论 -
读者-写者问题
问题描述有读者和写者两组并发进程,共享一个文件,当两个或以上的读进程同时访问共享数据时不会产生副作用,但若某个写进程和其他进程(读进程或写进程)同时访问共享数据时则可能导致数据不一致的错误。因此要求:①允许多个读者可以同时对文件执行读操作;②只允许一个写者往文件中写信息;③任一写者在完成写操作之前不允许其他读者或写者工作;④写者执行写操作前,应让已有的读者和写者全部退出。问题分析1转载 2017-04-05 17:04:27 · 449 阅读 · 0 评论 -
管道、消息队列、共享内存之间的区别与联系
管道和消息队列的区别管道(PIPE) 管道通信方式的中间介质是文件,通常称这种文件为管道文件。两个进程利用管道文件进行通信时,一个进程为写进程,另一个进程为读进程。写进程通过写端(发送端)往管道文件中写入信息;读进程通过读端(接收端)从管道文件中读取信息。两个进程协调不断地进行写、读,便会构成双方通过管道传递信息的流水线。管道分为匿名管道转载 2017-01-03 12:20:59 · 7133 阅读 · 0 评论 -
动态链接静态链接
分别编译与链接(Linking)大多数高级语言都支持分别编译,程序员可以显式地把程序划分为独立的模块或文件,然后每个独立部分分别编译。在编译之后,由链接器把这些独立的片段(称为编译单元)“粘接到一起”。(想想这样做有什么好处?)在C/C++中,这些独立的编译单元包括obj文件(一般的源程序编译而成)、lib文件(静态链接的函数库)、dll文件(动态链接的函数库)等。静态链接转载 2017-04-05 18:14:59 · 206 阅读 · 0 评论 -
linux开机自启动程序
可以编辑/etc/rc.d/rc.local,加入需要自启软件的命令。比如开机运行firefox 1,打开终端,输入vi /etc/rc.d/rc.local。 2,在末行添加一句:firefox 就行了。 3,保存退出,注销重新登录查看效果。如果要查看哪些程序被添加为自启动,可以使用命令 : cat转载 2017-04-19 08:50:36 · 516 阅读 · 0 评论 -
top命令参数详解
简介top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该转载 2017-04-05 15:30:21 · 7832 阅读 · 0 评论 -
linux系统644、755、777权限详解
常用的linux文件权限:444 r--r--r--600 rw-------644 rw-r--r--666 rw-rw-rw-700 rwx------744 rwxr--r--755 rwxr-xr-x777 rwxrwxrwx从左至右,1-3位数字代表文件所有者的权限, 4-6位数字代表同组用户的权限, 7-9数字转载 2017-04-06 16:23:59 · 819 阅读 · 0 评论 -
gdb
SIMT中文译为单指令多线程,英文全称为Single Instruction Multiple ThreadsGPU中的SIMT体系结构相对于CPU的SIMD中的概念。为了有效地管理和执行多个单线程,多处理器采用了SIMT架构。此架构在第一个unified computing GPU中由NVIDIA公司生产的GPU引入。不同于CPU中通过SIMD(单指令多数据)来处理矢量数转载 2017-01-03 16:30:56 · 354 阅读 · 0 评论 -
线程安全/锁的机制及适用场景
互斥锁:mutex,用于保证在任何时刻,都只能有一个线程访问该对象。当获取锁操作失败时,线程会进入睡眠,等待锁释放时被唤醒 自旋锁:spinlock,在任何时刻同样只能有一个线程访问对象。但是当获取锁操作失败时,不会进入睡眠,而是会在原地自旋,直到锁被释放。这样节省了线程从睡眠状态到被唤醒期间的消耗,在加锁时间短暂的环境下会极大的提高效率。但如果加锁时间过长,则会非常浪费CPU资源转载 2017-03-02 10:59:44 · 835 阅读 · 0 评论 -
死锁
死锁:指多个进程因竞争共享资源而造成的一种僵局,若无外力作用,这些进程都将永远不能再 向前推进。安全状态与不安全状态:安全状态指系统能按某种进程顺序来为每个进程分配其所需资源,直至最大需求,使每个进程都可顺利完成。若系统不存在这样一个序列,则称系统处于不安全状态。产生死锁的原因:(1)竞争系统资源 (2)进程的推进顺序不当产生死锁的必要条件:互斥条件:进程要转载 2017-03-21 08:52:06 · 221 阅读 · 0 评论 -
字节对齐
定义现代计算机中,内存空间按照字节划分,理论上可以从任何起始地址访问任意类型的变量。但实际中在访问特定类型变量时经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序一个接一个地存放,这就是对齐。原因和作用根本原因在于CPU访问数据的效率问题。某些平台对特定类型的数据只能从特定地址开始存取,而不允许其在内存中任意存放。例如Motorola原创 2017-03-21 09:51:32 · 356 阅读 · 0 评论 -
likely()与unlikely()
分别是内核中定义的两个宏:#define likely(x) __builtin_expect(!!(x), 1)#define unlikely(x) __builtin_expect(!!(x), 0)likely表示一般为1,unlikely表示一般为0,这是用来优化效率的,不影响程序运行结果原创 2017-09-15 13:31:12 · 726 阅读 · 0 评论 -
内存代码
Linux内核源码--内存管理部分:我们看下boot传入的命令为:"noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0 rootfstype=cramfs mem=64M" 进入setup_arch函数后,首先遇到的和内存管理有关的,是parse_cmdline函数。在arch\arm\kernel\se原创 2017-09-09 22:32:50 · 1287 阅读 · 0 评论 -
Linux常用操作命令(持续更新)
缓存区溢出—Buffer Overflow简述 缓冲区溢出攻击是利用缓冲区溢出漏洞所进行的攻击行动。缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统关机、重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。缓冲区溢出攻击有多种英文名称:buffer overfl原创 2015-12-22 18:00:40 · 496 阅读 · 0 评论 -
Ubuntu下通过SSH远程登录服务器并运行程序的方法
1. 首先在服务器上安装ssh的服务器端。$ sudo aptitude install openssh-server2. 启动ssh-server。$ /etc/init.d/ssh restart3. 确认ssh-server已经正常工作。$ netstat -tlptcp6 0 0 *:ssh *:* LISTEN -看到上面这一行输出说明ssh-serv原创 2016-11-14 15:19:01 · 2284 阅读 · 1 评论 -
TLB
TLB:Translation Lookaside Buffer.根据功能可以译为快表,直译可以翻译为旁路转换缓冲,也可以把它理解成页表缓冲。里面存放的是一些页表文件(虚拟地址到物理地址的转换表)。当处理 器要在主内存寻址时,不是直接在内存的物理地址里查找的,而是通过一组虚拟地址转换到主内存的物理地址,TLB就是负责将虚拟内存地址翻译成实际的物理内 存地址,而CPU寻址时会优先在TLB中进转载 2017-11-13 10:15:26 · 572 阅读 · 0 评论 -
SSH原理
目录: 一.Telnet和SSH 二.SSH验证原理详解 三.SSH配置选项详解 四.常见SSH问题实践 五.SSH密钥认证实现 六.SSH双机互信脚本实现 七.SSH相关扩展阅读一.Telnet和SSH 1.Telnet Telnet是一个远程连接服转载 2017-03-22 21:09:42 · 310 阅读 · 0 评论 -
select、poll、epoll之间的区别总结
select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用转载 2017-03-02 10:54:02 · 681 阅读 · 0 评论 -
关于同步,异步,阻塞,非阻塞,IOCP/epoll,select/poll,AIO ,NIO ,BIO的总结
相关资料IO基本概念Linux环境Linux的内核将所有外部设备都可以看做一个文件来操作。那么我们对与外部设备的操作都可以看做对文件进行操作。我们对一个文件的读写,都通过调用内核提供的系统调用;内核给我们返回一个file descriptor(fd,文件描述符)。对一个socket的读写也会有相应的描述符,称为socketfd(socket描述符)。描述符就是一个数字(可以理解转载 2017-03-02 10:50:15 · 445 阅读 · 0 评论 -
HDFS详解
摘要 HDFS体系结构中有两类节点,一类是NameNode,又叫"元数据节点";另一类是DataNode,又叫"数据节点"。这两类节点分别承担Master和Worker具体任务的执行节点。HDFS Hadoop namenode目录[-]2.3 元数据节点目录结构2.4 数据节点的目录结构2.5 文件系统命名空间映像文件及修改日志3、HDFS体系结构转载 2016-04-09 12:57:00 · 482 阅读 · 0 评论 -
bzero 和memset的区别
bzero 原型:extern void bzero(void *s, int n); 用法:#include 功能:置字节字符串s的前n个字节为零且包括‘\0’。 说明:bzero无返回值,并且使用strings.h头文件,strings.h曾经是posix标准的一部分,但是在POSIX.1-2001标准里面,这些函数被标记为了遗留函数而不推荐使用。转载 2016-04-08 17:43:16 · 1132 阅读 · 0 评论 -
clflush指令
CLFLUSH - 缓存线清除操作码指令说明0F AE /7CLFLUSH m8清除包含 m8 的缓存线。说明在处理器缓存层次结构(数据与指令)的所有级别中,使包含源操作数指定的线性地址的缓存线失效。失效会在整个缓存一致性域中传播。如果缓存层次结构中任何级别的缓存翻译 2016-04-14 13:00:00 · 11325 阅读 · 2 评论 -
虚拟内存与物理内存
前一段时间在面试总监的时候,总监问了我这样的一个问题:你个我说说物理内存和虚拟内存到底是怎么一回事?其实之前我看过这个问题,据我理解的,当时是这么回答的“进程在运行的时候,操作系统都为其分配一个4GB的地址空间,即所谓的虚拟地址空间,一般情况下,当我们的程序很大的时候,实际的物理内存根本不能满足我们的需求的时候,这个时候操作系统就会借助磁盘空间来做虚拟的内存空间,把当前进程不需要的数据放在磁盘转载 2016-04-15 15:34:49 · 232 阅读 · 0 评论 -
共享内存和消息传递
线程通信机制:共享内存 VS 消息传递在并发编程中,我们必须考虑的问题时如何在两个线程间进行通讯。这里的通讯指的是不同的线程之间如何交换信息。目前有两种方式:1、共享内存2、消息传递(actor 模型) 共享内存共享内存这种方式比较常见,我们经常会设置一个共享变量。然后多个线程去操作同一个共享变量。从而达到线程通讯的目的。例如,我们使用多个线程去执行页面抓取任务,我转载 2017-01-03 12:04:07 · 12175 阅读 · 0 评论 -
双通道技术
双通道内存技术的原理双通道内存技术其实就是双通道内存控制技术,能有效地提高内存总带宽,从而适应新的微处理器的数据传输、处理的需要。它的技术核心在于芯片组(北桥)可以在两个不同的数据通道上分别寻址、读取数据R内存可以达到128位的带宽。内存双通道的优点1、能够带来2倍的内存带宽,从而可以那些与必须内存数据进行频繁交换的软件得到极大的好处,譬如SPEC Viewperf、3DM转载 2017-01-04 17:56:40 · 1766 阅读 · 0 评论 -
Linux环境下段错误的产生原因及调试方法
最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决。1. 段错误是什么一句话来说,段错误是指访问的内存超出了系统给这个程序所设定转载 2017-03-02 10:57:57 · 272 阅读 · 0 评论 -
进程
进程 一、进程的引入一是刻画系统的动态性,发挥系统的并发性。而是解决共享性,正确描述程序的执行状态。多道程序系统中,程序具有:并行、制约以及动态的特征。程序概念难以反映系统中的情况: 1. 程序是一个静态的概念程序是完成某个功能的指令集和。系统实际上是出于不断变化的状态中,程序不能反映这种动态性。 2. 程序概念不能反映系统中的并行特性例如:两个C语言源程序由一个编译程序完原创 2017-01-03 14:32:23 · 273 阅读 · 0 评论 -
makefile的编写
1.hello.c #include <stdio.h>int main(){ printf(“Hello World!\ n”); 返回0; }2.Makefilehello:hello.o cc -o hello hello.ohello.o:hello.c cc -c hello.c干净: rm hello.o说明:cc -o hello ...转载 2018-05-23 12:52:19 · 294 阅读 · 0 评论