当前位置: 首页 > 编程日记 > 正文

网络瓶颈、线程死锁、内存泄露溢出、栈堆、ajax

网络瓶颈:网络传输性能及稳定性的一些相关元素

线程死锁:多个线程因竞争资源造成的一种僵局

下面我们通过一些实例来说明死锁现象。

先看生活中的一个实例,2个人一起吃饭但是只有一双筷子,2人轮流吃(同时拥有2只筷子才能吃)。某一个时候,一个拿了左筷子,一人拿了右筷子,2个人都同时占用一个资源,等待另一个资源,这个时候甲在等待乙吃完并释放它占有的筷子,同理,乙也在等待甲吃完并释放它占有的筷子,这样就陷入了一个死循环,谁也无法继续吃饭。。。
在计算机系统中也存在类似的情况。例如,某计算机系统中只有一台打印机和一台输入 设备,进程P1正占用输入设备,同时又提出使用打印机的请求,但此时打印机正被进程P2 所占用,而P2在未释放打印机之前,又提出请求使用正被P1占用着的输入设备。这样两个进程相互无休止地等待下去,均无法继续执行,此时两个进程陷入死锁状态。

二、死锁产生的原因

1) 系统资源的竞争

2) 进程推进顺序非法

3) 死锁产生的必要条件

产生死锁必须同时满足以下四个条件,只要其中任一条件不成立,死锁就不会发生。
互斥条件:进程要求对所分配的资源(如打印机)进行排他性控制,即在一段时间内某 资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待。
不剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能 由获得该资源的进程自己来释放(只能是主动释放)。
请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源 已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。
循环等待条件:存在一种进程资源的循环等待链,链中每一个进程已获得的资源同时被 链中下一个进程所请求。即存在一个处于等待状态的进程集合{Pl, P2, ..., pn},其中Pi等 待的资源被P(i+1)占有(i=0, 1, ..., n-1),Pn等待的资源被P0占有,如图2-15所示。

三、如何避免死锁

在有些情况下死锁是可以避免的。三种用于避免死锁的技术:

  1. 加锁顺序(线程按照一定的顺序加锁)
  2. 加锁时限(线程尝试获取锁的时候加上一定的时限,超过时限则放弃对该锁的请求,并释放自己占有的锁)
  3. 死锁检测

    那么当检测出死锁时,这些线程该做些什么呢?

    一个可行的做法是释放所有锁,回退,并且等待一段随机的时间后重试。这个和简单的加锁超时类似,不一样的是只有死锁已经发生了才回退,而不会是因为加锁的请求超时了。虽然有回退和等待,但是如果有大量的线程竞争同一批锁,它们还是会重复地死锁(编者注:原因同超时类似,不能从根本上减轻竞争)。

    一个更好的方案是给这些线程设置优先级,让一个(或几个)线程回退,剩下的线程就像没发生死锁一样继续保持着它们需要的锁。如果赋予这些线程的优先级是固定不变的,同一批线程总是会拥有更高的优先级。为避免这个问题,可以在死锁发生的时候设置随机的优先级。


    ---------------------
    作者:jayxu无捷之径
    来源:CSDN
    原文:https://blog.csdn.net/ls5718/article/details/51896159
    版权声明:本文为博主原创文章,转载请附上博文链接!

    内存泄露:内存申请后,用完没有释放,造成可用内存越来越少。C语言

    内存溢出:用户实际的数据长度超过了申请的内存空间大小,导致覆盖了其他正常数据,容易造成程序异常,严重的,攻击者可用以此获取程序的控制权
    栈(stack):系统自动分配空间,char a,运行后自己释放,像桶或盒子,后进先出
    堆(heap):程序员根据需要自己申请空间,malloc(10),10个字节空间,程序员忘记释放后会造成内存泄露
    AJAX:不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网友内容

转载于:https://www.cnblogs.com/gdf456/p/9879031.html

相关文章:

g-gdb调试core文件

文章目录core文件判读是否为core文件打开系统 core dump修改core文件的保存路径gdb调试core文件最近初步了解了一下core 文件,已经如何将gdb工具与core文件结合调试出现段错误的程序core文件 core是指操作系的程序统核心。当我们的程序在操作系统上运行异常崩溃时&…

信息整合的讨论案例

我所在的公司是广州的一个大型国有企业,目前所用的信息管理系统包括企业管理的方方面面,大约有7到8个互相独立的信息系统,这些系统都是在7、8年前就已经投入使用了,完全自主开发和维护,所用的工具是delphi+…

html中sprite标签,Three.js模型标签

Three.js模型标签在很多的实际的项目中,你可能需要给一个Three.js的模型添加标签,标签可以通过一个包含文字图形信息的HTML元素或者一个three.js的精灵模型来表示。层级模型复杂的项目,一个three.js场景往往包含包含多个模型对象,…

D3D11中的硬件反锯齿 SSAA/MSAA/EQAA/CSAA(3)

五 、EQAA/CSAA EQAA(enhanced quality AA)和CSAA(coverage sample AA)其实是同样的采样技术,EQAA是AMD的实现,CSAA是NV的实现,下面我以EQAA为例看看这两种AA的原理: 在MSAA中,每个采样都有一个sample color缓冲相对应…

[ python ] 类的组合

首先,使用面向对象是一个人狗大战的实例: class Person:def __init__(self, name, hp, aggr, sex):self.name nameself.hp hpself.aggr aggrself.sex sexdef hit(self, dog):dog.hp - self.aggrprint(\033[31;1m%s被打,掉了%s的血.\033[0…

ceph nautilus相对于minic的主要改动

改动信息 详情可以查看ceph官网nautilus Dashboard功能 增加的新功能 支持多用户使用SSO的用户验证模式支持审计模式新的登录页,可以展示更多的集群健康指标使用swagger api的rest api文档 增加的新的管理特性 对于OSD的管理(将osd标记为down,out,修…

word2003计算机应用考试,2017职称计算机考试Word2003操作练习题

2017职称计算机考试Word2003操作练习题实验操作能力是计算机考试考查的一项基本能力,下面是小编给大家提供的职称计算机考试Word2003操作练习题,大家可以参考练习,更多习题练习请关注应届毕业生考试网。1. 将所选文本的字体设置为“华文彩云”…

虚拟化及云厂商聚焦

虚拟化及云厂商聚焦转载于:https://blog.51cto.com/itcn001/1069736

题解:无线通讯网

qwq 跑最小生成树 一共n个电话&#xff0c;所以相当于最小生成树里删去最大的n-1的边 所以答案即为最小生成树的第n大边 prim或者kruskal都行 这是prim 1 #include<iostream>2 #include<cstdio>3 #include<algorithm>4 #include<cmath>5 using namespa…

linux常用操作指令—— 查看磁盘、内存使用情况(df、du、free、top)

显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示。free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。当文件系统也确定删除了该文件后,这时候du与df就一致了。实例4:显示目前磁盘空间和使用情况 (最常用)top:“实时查看” ,按。退出 (实时动态显示)

广东电网计算机考试,考点爆料!2019广东电网计算机专业居然考这些!

原标题&#xff1a;考点爆料&#xff01;2019广东电网计算机专业居然考这些&#xff01;本文由广东中公国企为您整理&#xff1a;2019广东电网校园招聘预计于2018年10~11月份开启&#xff0c;计算机类也是其中一个招聘大类&#xff0c;那么2019广东电网校园招聘计算机类专业考什…

修改ceph crush map,并指定到资源池

版本:ceph L 版本 12.2.1 环境:单节点 15 osd -1 0 root default -3 94.53119 host node1 0 hdd 5.37108 osd.0 up 1.00000 1.00000 1 hdd 5.37108 osd.1 …

常见的七种加密算法及实现

**数字签名**、**信息加密** 是前后端开发都经常需要使用到的技术,应用场景包括了用户登入、交易、信息通讯、`oauth` 等等,不同的应用场景也会需要使用到不同的签名加密算法,或者需要搭配不一样的 **签名加密算法** 来达到业务目标。这里简单的给大家介绍几种常见的签名加密算法和一些典型场景下的应用。## 正文### 1. 数字签名**数字签名**,简单来说就是通过提供 **可鉴别** 的 **数字信息** 验证 **自身身份** 的一种方式。一套 **数字签名** 通常定义两种 **互补

MySQL慢查询日志slowlog

慢速查询日志记录的是执行时间超过秒和检查的行数超过的SQL语句,这些语句通常是需要进行优化的。官方参考文档:https://dev.mysql.com/doc/refman/8.0/en/slow-query-log.html。

Ubantu下hadoop运行第一个例子wordcount过程

Ubantu12.04下hadoop-1.2.1运行第一个例子wordcount过程&#xff0c;分享一下 将WordCount.java文件放在Hadoop安装目录下&#xff0c;并在安装目录下创建输入目录input&#xff0c;目录下有输入文件file1&#xff0c;file2&#xff0c;其中&#xff1a; file1内容&#xff1a;…

jsp - EL

E L&#xff08;Expression Language&#xff09; 作用&#xff1a;能够用于在 JSP 文件中嵌入 Java 代码的表达式语言&#xff0c;替代小脚本 1、语法结构 ${expression} 2、 EL 提供“.“和“[ ]“两种运算符来存取数据。 当要存取的属性名称中包含一些特殊字符&#xff0c;如…

node 常用指令 node 扩展链接

node -v node 版本 npm -v npm版本号&#xff0c;npm是在安装nodejs时一同安装的nodejs包管理器 &#xff08;注册、安装模块&#xff0c;和小乌龟有点像&#xff09; npm list 当前目录已安装插件 npm list -g 查看所有全局安装的模块&#xff1a; npm…

增加内核的ceph模块的日志打印

本文主要是在梳理cephfs内核方式挂载的内核代码逻辑所做的准备 环境:Centos 7.5 内核源码版本&#xff1a;3.10.0-862.el7.x86_64 打开ceph模块的debug信息 单独编译ceph模块的.ko文件 ceph在内核的通用模块主要有三个&#xff1a; ceph.ko 模块路径&#xff1a;/usr/src/k…

计算机系统安装和维护实验,2计算机系统安装维护实验报告.doc

2计算机系统安装维护实验报告计算机系统安装维护实验报告院系: 班级&#xff1a; 姓名&#xff1a; 学号&#xff1a;【实验目的】学习了解u盘硬盘启动维护系统【实验内容】通过GHOST11软件进行系统的相关操作用户可以通过GHOST11软件进行硬盘对拷&#xff0c;分区对拷&#xf…

Javascript年月日联动

代码 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">2 <html>3 <head>4 <title> New Document </title>5 <meta name"Generator" content&…

emmmmmm(官宣?)

实验室永远不会是学习的唯一地点&#xff0c;不是吗&#xff1f; 总后悔当初退竞赛&#xff0c;现在却还是选择退出&#xff0c;大概是自己真的不适合吧。。。转载于:https://www.cnblogs.com/LOW-ctfer/p/9896781.html

ceph unfound object问题的解决

查看丢失对象的pg id ceph health detail 查找该pg下丢失的object ceph pg 8.32 list_missing 尝试修复该pg: ceph pg repair 8.32 ceph pg scrub 8.32 修复不成功的话&#xff0c;可以直接告诉ceph使用已有的版本或者直接删除 尝试切换到旧版本的object:ceph pg 8.32 mark_…

Apache ‘mod_pagespeed’模块跨站脚本漏洞

漏洞名称&#xff1a;Apache ‘mod_pagespeed’模块跨站脚本漏洞CNNVD编号&#xff1a;CNNVD-201310-677发布时间&#xff1a;2013-11-05更新时间&#xff1a;2013-11-05危害等级&#xff1a; 漏洞类型&#xff1a;跨站脚本威胁类型&#xff1a;远程CVE编号&#xff1a;CVE-20…

设备漏电对计算机影响,电脑机箱漏电对电脑有影响吗

电脑机箱漏电一般原因是长期使用在潮湿或高温环境下&#xff0c;电源线或主板的裸露部件因绝缘下降或积灰受潮等原因&#xff0c;接地电转载自电脑百事网容轻微损坏&#xff1b;这时&#xff0c;机箱的带电感觉较明显&#xff0c;有时用试电笔也能点亮。这种情况就要引起注意了…

eoiioe IE 和 firefox js 兼容问题

1、判断浏览器类型 1var ver"IE6";2if (window.XMLHttpRequest)3 ver (!window.ActiveXObject) ? "Mozilla or Safari" : "IE7"; 4return ver;2、获取位置&#xff0c;在firefox中&#xff0c;无法使用object.style.pixelLeft&#xff0c;只…

团队博客(第四周)-“名字好难想”

一&#xff0c;已完成工作 1.美术资源设计完毕 2.界面设计完毕 3.客户端登录程序实现 二&#xff0c;待完成工作 1.服务器的实现 2.等待界面和战斗场景的脚本实现 三&#xff0c;遇到的困难 1.程序事情有点多&#xff0c;没有配合好美术完成功能 四&#xff0c;燃尽图 五&#…

ceph rados命令使用

文章目录Pool相关Object相关导出资源池数据最近了解了rados命令的使用&#xff0c;感觉在对象操作这块还是非常实用。因为rados是属于底层存储核心&#xff0c;所以关于rados的命令针对对象的操作较多。环境中执行 rados -h可以看到命令集分为几个大的模块&#xff1a;资源池、…

前置体验,才是打动用户的神器

在上一篇文章《记住&#xff0c;用户只愿为“体验”付钱》中&#xff0c;我谈到了体验经济和根据体验定价的逻辑&#xff0c;以及一些商业案例&#xff0c;它们共同展现了一种趋势&#xff0c;即用户愿意为体验付钱。同理&#xff0c;在这样的大背景下&#xff0c;互联网产品该…

服务器ip 计算机名,服务器计算机名称或者ip地址

弹性云服务器 ECS弹性云服务器(Elastic Cloud Server)是一种可随时自助获取、可弹性伸缩的云服务器&#xff0c;帮助用户打造可靠、安全、灵活、高效的应用环境&#xff0c;确保服务持久稳定运行&#xff0c;提升运维效率三年低至5折&#xff0c;多种配置可选了解详情区域和可用…

mysql的常用函数

一、数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制&#xff08;OCT返回八进制&#xff0c;HEX返回十六进制&#xff09; CEILING(x) 返回大于x的最小整数值 EXP(x) 返回值e&#xff08;自然…